1 /**
2  * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
3  * SPDX-License-Identifier: Apache-2.0.
4  */
5 
6 #include <aws/core/utils/FileSystemUtils.h>
7 
8 #include <aws/core/platform/FileSystem.h>
9 
10 namespace Aws
11 {
12     namespace Utils
13     {
ComputeTempFileName(const char * prefix,const char * suffix)14         static Aws::String ComputeTempFileName(const char* prefix, const char* suffix)
15         {
16             Aws::String prefixStr;
17 
18             if (prefix)
19             {
20                 prefixStr = prefix;
21             }
22 
23             Aws::String suffixStr;
24 
25             if (suffix)
26             {
27                 suffixStr = suffix;
28             }
29 
30             return prefixStr + Aws::FileSystem::CreateTempFilePath() + suffixStr;
31         }
32 
TempFile(const char * prefix,const char * suffix,std::ios_base::openmode openFlags)33         TempFile::TempFile(const char* prefix, const char* suffix, std::ios_base::openmode openFlags) :
34             FStreamWithFileName(ComputeTempFileName(prefix, suffix).c_str(), openFlags)
35         {
36         }
37 
TempFile(const char * prefix,std::ios_base::openmode openFlags)38         TempFile::TempFile(const char* prefix, std::ios_base::openmode openFlags) :
39             FStreamWithFileName(ComputeTempFileName(prefix, nullptr).c_str(), openFlags)
40         {
41         }
42 
TempFile(std::ios_base::openmode openFlags)43         TempFile::TempFile(std::ios_base::openmode openFlags) :
44             FStreamWithFileName(ComputeTempFileName(nullptr, nullptr).c_str(), openFlags)
45         {
46         }
47 
48 
~TempFile()49         TempFile::~TempFile()
50         {
51             Aws::FileSystem::RemoveFileIfExists(m_fileName.c_str());
52         }
53     }
54 }