| // Copyright (c) 2013 The Chromium Authors. All rights reserved. | 
 | // Use of this source code is governed by a BSD-style license that can be | 
 | // found in the LICENSE file. | 
 |  | 
 | #ifndef BASE_SCOPED_CLEAR_ERRNO_H_ | 
 | #define BASE_SCOPED_CLEAR_ERRNO_H_ | 
 |  | 
 | #include <errno.h> | 
 |  | 
 | #include "base/macros.h" | 
 |  | 
 | namespace base { | 
 |  | 
 | // Simple scoper that saves the current value of errno, resets it to 0, and on | 
 | // destruction puts the old value back. | 
 | class ScopedClearErrno { | 
 |  public: | 
 |   ScopedClearErrno() : old_errno_(errno) { | 
 |     errno = 0; | 
 |   } | 
 |   ~ScopedClearErrno() { | 
 |     if (errno == 0) | 
 |       errno = old_errno_; | 
 |   } | 
 |  | 
 |  private: | 
 |   const int old_errno_; | 
 |  | 
 |   DISALLOW_COPY_AND_ASSIGN(ScopedClearErrno); | 
 | }; | 
 |  | 
 | }  // namespace base | 
 |  | 
 | #endif  // BASE_SCOPED_CLEAR_ERRNO_H_ |