blob: 7b972fc85ac6fc4b7a1f1d721df0cebd53ca2120 [file] [log] [blame]
yusukes@chromium.org34da3662013-05-03 08:06:26 +09001// 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/basictypes.h"
11
12namespace 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.
16class 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_