|  | // 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. | 
|  |  | 
|  | #include "sandbox/linux/tests/scoped_temporary_file.h" | 
|  |  | 
|  | #include <stdlib.h> | 
|  | #include <unistd.h> | 
|  |  | 
|  | #include "base/logging.h" | 
|  | #include "base/macros.h" | 
|  | #include "base/posix/eintr_wrapper.h" | 
|  | #include "build/build_config.h" | 
|  |  | 
|  | namespace sandbox { | 
|  |  | 
|  | ScopedTemporaryFile::ScopedTemporaryFile() : fd_(-1) { | 
|  | #if defined(OS_ANDROID) | 
|  | static const char file_template[] = "/data/local/tmp/ScopedTempFileXXXXXX"; | 
|  | #else | 
|  | static const char file_template[] = "/tmp/ScopedTempFileXXXXXX"; | 
|  | #endif  // defined(OS_ANDROID) | 
|  | COMPILE_ASSERT(sizeof(full_file_name_) >= sizeof(file_template), | 
|  | full_file_name_is_large_enough); | 
|  | memcpy(full_file_name_, file_template, sizeof(file_template)); | 
|  | fd_ = mkstemp(full_file_name_); | 
|  | CHECK_LE(0, fd_); | 
|  | } | 
|  |  | 
|  | ScopedTemporaryFile::~ScopedTemporaryFile() { | 
|  | CHECK_EQ(0, unlink(full_file_name_)); | 
|  | CHECK_EQ(0, IGNORE_EINTR(close(fd_))); | 
|  | } | 
|  |  | 
|  | }  // namespace sandbox |