diff --git a/src/aig/gia/giaStoch.c b/src/aig/gia/giaStoch.c index 5484d0851..23b3cbdb6 100644 --- a/src/aig/gia/giaStoch.c +++ b/src/aig/gia/giaStoch.c @@ -115,8 +115,8 @@ Vec_Int_t * Gia_StochProcessArray( Vec_Ptr_t * vGias, char * pScript, int TimeSe Gia_Man_t * Gia_StochProcessOne( Gia_Man_t * p, char * pScript, int Rand, int TimeSecs ) { Gia_Man_t * pNew; - char FileName[100], Command[1000]; - sprintf( FileName, "%06x.aig", Rand ); + char FileName[1000], Command[2000]; + sprintf( FileName, "%s/%06x.aig", Abc_GetTmpDir(), Rand ); Gia_AigerWrite( p, FileName, 0, 0, 0 ); sprintf( Command, "./abc -q \"&read %s; %s; &write %s\"", FileName, pScript, FileName ); #if defined(__wasm) diff --git a/src/base/abci/abcPart.c b/src/base/abci/abcPart.c index 6a19dcf08..0e36013ce 100644 --- a/src/base/abci/abcPart.c +++ b/src/base/abci/abcPart.c @@ -1296,10 +1296,10 @@ Abc_Ntk_t * Abc_NtkStochProcessOne( Abc_Ntk_t * p, char * pScript0, int Rand, in extern int Abc_NtkWriteToFile( char * pFileName, Abc_Ntk_t * pNtk ); extern Abc_Ntk_t * Abc_NtkReadFromFile( char * pFileName ); Abc_Ntk_t * pNew, * pTemp; - char FileName[100], Command[1000], PreCommand[500] = {0}; + char FileName[1000], Command[2000], PreCommand[500] = {0}; char * pLibFileName = Abc_NtkIsMappedLogic(p) ? Mio_LibraryReadFileName((Mio_Library_t *)p->pManFunc) : NULL; if ( pLibFileName ) sprintf( PreCommand, "read_genlib %s; ", pLibFileName ); - sprintf( FileName, "%06x.mm", Rand ); + sprintf( FileName, "%s/%06x.mm", Abc_GetTmpDir(), Rand ); Abc_NtkWriteToFile( FileName, p ); char * pScript = Abc_UtilStrsav( pScript0 ); sprintf( Command, "./abc -q \"%sread_mm %s; %s; write_mm %s\"", PreCommand[0] ? PreCommand : "", FileName, pScript, FileName ); diff --git a/src/base/sn/snCom.c b/src/base/sn/snCom.c index 0ba5c5cbe..5e5f65fc8 100644 --- a/src/base/sn/snCom.c +++ b/src/base/sn/snCom.c @@ -96,12 +96,9 @@ static int Sn_TempPrefix( char * pBuffer, size_t nBuffer, const char * pStem ) { int Written; #if defined(_MSC_VER) || defined(__MINGW32__) - const char * pDirectory = getenv( "TEMP" ); - if ( pDirectory == NULL ) - pDirectory = "."; - Written = snprintf( pBuffer, nBuffer, "%s\\%s", pDirectory, pStem ); + Written = snprintf( pBuffer, nBuffer, "%s\\%s", Abc_GetTmpDir(), pStem ); #else - Written = snprintf( pBuffer, nBuffer, "/tmp/%s", pStem ); + Written = snprintf( pBuffer, nBuffer, "%s/%s", Abc_GetTmpDir(), pStem ); #endif return Written >= 0 && (size_t)Written < nBuffer; } diff --git a/src/misc/util/abc_global.h b/src/misc/util/abc_global.h index fbe299da6..0073b9560 100644 --- a/src/misc/util/abc_global.h +++ b/src/misc/util/abc_global.h @@ -590,6 +590,25 @@ static inline void Abc_ReverseOrder( int * pA, int nA ) ABC_SWAP( int, pA[i], pA[nA-1-i] ); } +static inline const char * Abc_GetTmpDir() +{ + const char * s; +#if defined(_MSC_VER) || defined(__MINGW32__) + s = getenv( "TMP" ); + if ( s && *s ) + return s; + s = getenv( "TEMP" ); + if ( s && *s ) + return s; + return "."; +#else + s = getenv( "TMPDIR" ); + if ( s && *s ) + return s; + return "/tmp"; +#endif +} + // sorting extern void Abc_MergeSort( int * pInput, int nSize ); diff --git a/src/misc/util/utilAigSim.c b/src/misc/util/utilAigSim.c index a86753aa2..6db29ed79 100644 --- a/src/misc/util/utilAigSim.c +++ b/src/misc/util/utilAigSim.c @@ -25,6 +25,7 @@ #include #include #include +#include "abc_global.h" #ifdef _WIN32 #include #define mkstemp(p) _mktemp_s(p, strlen(p)+1) @@ -345,8 +346,11 @@ static int make_tmp_file(char *path, size_t cap, const char *prefix) { static int seq = 0; // no risk of collision since we're in a sandbox snprintf(path, cap, "%s%08d", prefix, seq++); int fd = open(path, O_CREAT | O_EXCL | O_RDWR, S_IREAD | S_IWRITE); +#elif defined(_WIN32) + snprintf(path, cap, "%s\\%sXXXXXX", Abc_GetTmpDir(), prefix); + int fd = mkstemp(path); #else - snprintf(path, cap, "/tmp/%sXXXXXX", prefix); + snprintf(path, cap, "%s/%sXXXXXX", Abc_GetTmpDir(), prefix); int fd = mkstemp(path); #endif if (fd < 0) return 0; @@ -360,8 +364,11 @@ static int make_tmp_path_noexist(char *path, size_t cap, const char *prefix) { static int seq = 0; // no risk of collision since we're in a sandbox snprintf(path, cap, "%s%08d", prefix, seq++); int fd = open(path, O_CREAT | O_EXCL | O_RDWR, S_IREAD | S_IWRITE); +#elif defined(_WIN32) + snprintf(path, cap, "%s\\%sXXXXXX", Abc_GetTmpDir(), prefix); + int fd = mkstemp(path); #else - snprintf(path, cap, "/tmp/%sXXXXXX", prefix); + snprintf(path, cap, "%s/%sXXXXXX", Abc_GetTmpDir(), prefix); int fd = mkstemp(path); #endif if (fd < 0) return 0;