// Copyright 2014 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 MINI_CHROMIUM_BASE_FILES_SCOPED_FILE_H_
|
#define MINI_CHROMIUM_BASE_FILES_SCOPED_FILE_H_
|
|
#include <stdio.h>
|
|
#include <memory>
|
|
#include "base/scoped_generic.h"
|
#include "build/build_config.h"
|
|
namespace base {
|
|
namespace internal {
|
|
#if defined(OS_POSIX)
|
struct ScopedFDCloseTraits {
|
static int InvalidValue() {
|
return -1;
|
}
|
static void Free(int fd);
|
};
|
#endif // OS_POSIX
|
|
struct ScopedFILECloser {
|
void operator()(FILE* file) const;
|
};
|
|
} // namespace internal
|
|
#if defined(OS_POSIX)
|
typedef ScopedGeneric<int, internal::ScopedFDCloseTraits> ScopedFD;
|
#endif // OS_POSIX
|
typedef std::unique_ptr<FILE, internal::ScopedFILECloser> ScopedFILE;
|
|
} // namespace base
|
|
#endif // MINI_CHROMIUM_BASE_FILES_SCOPED_FILE_H_
|