1// Copyright 2014 The Android Open Source Project 2// 3// This software is licensed under the terms of the GNU General Public 4// License version 2, as published by the Free Software Foundation, and 5// may be copied, distributed, and modified under those terms. 6// 7// This program is distributed in the hope that it will be useful, 8// but WITHOUT ANY WARRANTY; without even the implied warranty of 9// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 10// GNU General Public License for more details. 11 12#include "android/filesystems/testing/TestSupport.h" 13 14#include "android/base/EintrWrapper.h" 15#include "android/base/Log.h" 16 17#include <stdlib.h> 18 19#ifdef _WIN32 20#include <windows.h> 21#else 22#include <unistd.h> 23#endif 24 25namespace android { 26namespace testing { 27 28std::string CreateTempFilePath() { 29#ifdef _WIN32 30 char tempDir[MAX_PATH]; 31 DWORD ret = GetTempPath(MAX_PATH, tempDir); 32 CHECK(ret > 0 && ret < MAX_PATH) 33 << "Could not get temporary directory path"; 34 35 std::string result; 36 result.resize(MAX_PATH); 37 UINT ret2 = GetTempFileName(tempDir, "emulator-test-", 0, &result[0]); 38 CHECK(ret2 != ERROR_BUFFER_OVERFLOW) << "Could not create temporary file name"; 39 result.resize(::strlen(result.c_str())); 40 return result; 41#else 42 std::string result("/tmp/emulator-test.XXXXXX"); 43 int ret = HANDLE_EINTR(mkstemp(&result[0])); 44 PCHECK(ret >= 0) << "Could not create temporary filepath"; 45 ::close(ret); 46 return result; 47#endif 48} 49 50} // namespace testing 51} // namespace android 52