blob: 462f56138683eb8e417f59ac35667221f0cb31eb [file] [log] [blame]
// 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_