Commit 573694f9 by Alan Mishchenko

Fixing g++ compilation issue for tmpFile().

parent 8cc7b438
...@@ -25,6 +25,14 @@ ...@@ -25,6 +25,14 @@
#include <fcntl.h> #include <fcntl.h>
#include <sys/stat.h> #include <sys/stat.h>
#if defined(_MSC_VER)
#include <Windows.h>
#include <process.h>
#include <io.h>
#else
#include <unistd.h>
#endif
#include "abc_global.h" #include "abc_global.h"
ABC_NAMESPACE_IMPL_START ABC_NAMESPACE_IMPL_START
...@@ -33,12 +41,6 @@ ABC_NAMESPACE_IMPL_START ...@@ -33,12 +41,6 @@ ABC_NAMESPACE_IMPL_START
/// DECLARATIONS /// /// DECLARATIONS ///
//////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////
#if defined(_MSC_VER)
#include <Windows.h>
#include <process.h>
#include <io.h>
//////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////
/// FUNCTION DEFINITIONS /// /// FUNCTION DEFINITIONS ///
//////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////
...@@ -56,6 +58,7 @@ ABC_NAMESPACE_IMPL_START ...@@ -56,6 +58,7 @@ ABC_NAMESPACE_IMPL_START
***********************************************************************/ ***********************************************************************/
static ABC_UINT64_T realTimeAbs() // -- absolute time in nano-seconds static ABC_UINT64_T realTimeAbs() // -- absolute time in nano-seconds
{ {
#if defined(_MSC_VER)
LARGE_INTEGER f, t; LARGE_INTEGER f, t;
double realTime_freq; double realTime_freq;
int ok; int ok;
...@@ -65,20 +68,16 @@ static ABC_UINT64_T realTimeAbs() // -- absolute time in nano-seconds ...@@ -65,20 +68,16 @@ static ABC_UINT64_T realTimeAbs() // -- absolute time in nano-seconds
ok = QueryPerformanceCounter(&t); assert(ok); ok = QueryPerformanceCounter(&t); assert(ok);
return (ABC_UINT64_T)(__int64)(((__int64)(((ABC_UINT64_T)t.LowPart | ((ABC_UINT64_T)t.HighPart << 32))) * realTime_freq * 1000000000)); return (ABC_UINT64_T)(__int64)(((__int64)(((ABC_UINT64_T)t.LowPart | ((ABC_UINT64_T)t.HighPart << 32))) * realTime_freq * 1000000000));
}
#endif #endif
}
// Opens a temporary file with given prefix and returns file descriptor (-1 on failure)
// and a string containing the name of the file (to be freed by caller).
/**Function************************************************************* /**Function*************************************************************
Synopsis [] Synopsis [Opens a temporary file.]
Description [] Description [Opens a temporary file with given prefix and returns file
descriptor (-1 on failure) and a string containing the name of the file
(to be freed by caller).]
SideEffects [] SideEffects []
...@@ -87,9 +86,22 @@ static ABC_UINT64_T realTimeAbs() // -- absolute time in nano-seconds ...@@ -87,9 +86,22 @@ static ABC_UINT64_T realTimeAbs() // -- absolute time in nano-seconds
***********************************************************************/ ***********************************************************************/
int tmpFile(const char* prefix, const char* suffix, char** out_name) int tmpFile(const char* prefix, const char* suffix, char** out_name)
{ {
#if !defined(_MSC_VER) #if defined(_MSC_VER)
int i, fd;
*out_name = (char*)malloc(strlen(prefix) + strlen(suffix) + 27);
for (i = 0; i < 10; i++){
sprintf(*out_name, "%s%I64X%d%s", prefix, realTimeAbs(), _getpid(), suffix);
fd = _open(*out_name, O_CREAT | O_EXCL | O_BINARY | O_RDWR, _S_IREAD | _S_IWRITE);
if (fd == -1){
free(*out_name);
*out_name = NULL;
}
return fd;
}
assert(0); // -- could not open temporary file
return 0;
#else
int fd; int fd;
*out_name = (char*)malloc(strlen(prefix) + strlen(suffix) + 7); *out_name = (char*)malloc(strlen(prefix) + strlen(suffix) + 7);
assert(*out_name != NULL); assert(*out_name != NULL);
sprintf(*out_name, "%sXXXXXX", prefix); sprintf(*out_name, "%sXXXXXX", prefix);
...@@ -98,7 +110,6 @@ int tmpFile(const char* prefix, const char* suffix, char** out_name) ...@@ -98,7 +110,6 @@ int tmpFile(const char* prefix, const char* suffix, char** out_name)
free(*out_name); free(*out_name);
*out_name = NULL; *out_name = NULL;
}else{ }else{
// Kludge: // Kludge:
close(fd); close(fd);
unlink(*out_name); unlink(*out_name);
...@@ -108,35 +119,11 @@ int tmpFile(const char* prefix, const char* suffix, char** out_name) ...@@ -108,35 +119,11 @@ int tmpFile(const char* prefix, const char* suffix, char** out_name)
free(*out_name); free(*out_name);
*out_name = NULL; *out_name = NULL;
} }
// assert( 0 );
// commented out because had problem with g++ saying that
// close() and unlink() are not defined in the namespace
} }
return fd; return fd;
#else
int i, fd;
*out_name = (char*)malloc(strlen(prefix) + strlen(suffix) + 27);
for (i = 0; i < 10; i++){
sprintf(*out_name, "%s%I64X%d%s", prefix, realTimeAbs(), _getpid(), suffix);
fd = _open(*out_name, O_CREAT | O_EXCL | O_BINARY | O_RDWR, _S_IREAD | _S_IWRITE);
if (fd == -1){
free(*out_name);
*out_name = NULL;
}
return fd;
}
assert(0); // -- could not open temporary file
return 0;
#endif #endif
} }
//mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm
/**Function************************************************************* /**Function*************************************************************
Synopsis [] Synopsis []
...@@ -165,8 +152,6 @@ int main(int argc, char** argv) ...@@ -165,8 +152,6 @@ int main(int argc, char** argv)
} }
*/ */
//////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////
/// END OF FILE /// /// END OF FILE ///
//////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment