Home | History | Annotate | Download | only in base
      1 // Copyright (c) 2013 The Chromium Authors. All rights reserved.
      2 // Use of this source code is governed by a BSD-style license that can be
      3 // found in the LICENSE file.
      4 
      5 #ifndef BASE_SCOPED_CLEAR_ERRNO_H_
      6 #define BASE_SCOPED_CLEAR_ERRNO_H_
      7 
      8 #include <errno.h>
      9 
     10 #include "base/macros.h"
     11 
     12 namespace base {
     13 
     14 // Simple scoper that saves the current value of errno, resets it to 0, and on
     15 // destruction puts the old value back.
     16 class ScopedClearErrno {
     17  public:
     18   ScopedClearErrno() : old_errno_(errno) {
     19     errno = 0;
     20   }
     21   ~ScopedClearErrno() {
     22     if (errno == 0)
     23       errno = old_errno_;
     24   }
     25 
     26  private:
     27   const int old_errno_;
     28 
     29   DISALLOW_COPY_AND_ASSIGN(ScopedClearErrno);
     30 };
     31 
     32 }  // namespace base
     33 
     34 #endif  // BASE_SCOPED_CLEAR_ERRNO_H_
     35