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/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_
35