text: // 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_
  