| Index: base/scoped_clear_errno.h | 
| diff --git a/base/scoped_clear_errno.h b/base/scoped_clear_errno.h | 
| new file mode 100644 | 
| index 0000000000000000000000000000000000000000..7b972fc85ac6fc4b7a1f1d721df0cebd53ca2120 | 
| --- /dev/null | 
| +++ b/base/scoped_clear_errno.h | 
| @@ -0,0 +1,34 @@ | 
| +// 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/basictypes.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_ | 
|  |