X-Git-Url: http://git.asbjorn.biz/?a=blobdiff_plain;f=pdf2swf%2Fxpdf%2Fgfile.cc;h=b4d88cd1027c53bfe76b2efe10be3f92bc6b5be6;hb=cabd1ffdcf5cffd42fba19c15bdbd93adb55a0c7;hp=18489086de6e0f630b89acda2e8a5879db440425;hpb=2eb549d27d295e3023f06ce027c0e673430c31ed;p=swftools.git diff --git a/pdf2swf/xpdf/gfile.cc b/pdf2swf/xpdf/gfile.cc index 1848908..b4d88cd 100644 --- a/pdf2swf/xpdf/gfile.cc +++ b/pdf2swf/xpdf/gfile.cc @@ -13,9 +13,9 @@ #ifdef WIN32 extern "C" { -# ifndef _MSC_VER -# include -# endif +//# ifndef _MSC_VER +//# include +//# endif } #else // !WIN32 # if defined(MACOS) @@ -444,21 +444,49 @@ time_t getModTime(char *fileName) { #endif } -static char tmpbuf[128]; +static char* getTempDir() +{ +#ifdef WIN32 + char*dir = getenv("TMP"); + if(!dir) dir = getenv("TEMP"); + if(!dir) dir = getenv("tmp"); + if(!dir) dir = getenv("temp"); + if(!dir) dir = "C:\\"; +#else + char* dir = "/tmp/"; +#endif + return dir; +} char* mktmpname(char*ptr) { + static char tmpbuf[128]; + char*dir = getTempDir(); + int l = strlen(dir); + char*sep = ""; + if(!ptr) + ptr = tmpbuf; + if(l && dir[l-1]!='/' && dir[l-1]!='\\') { +#ifdef WIN32 + sep = "\\"; +#else + sep = "/"; +#endif + } + // used to be mktemp. This does remove the warnings, but // It's not exactly an improvement. #ifdef HAVE_LRAND48 - sprintf(tmpbuf, "/tmp/%08x%08x",lrand48(),lrand48()); + sprintf(ptr, "%s%s%08x%08x",dir,sep,lrand48(),lrand48()); #else # ifdef HAVE_RAND - sprintf(tmpbuf, "/tmp/%08x%08x",rand(),rand()); + sprintf(ptr, "%s%s%08x%08x",dir,sep,rand(),rand()); # else - sprintf(tmpbuf, "/tmp/%08x%08x",time(0),(unsigned int)tmpbuf); + static int count = 1; + sprintf(ptr, "%s%s%08x%04x%04x",dir,sep,time(0),(unsigned int)tmpbuf^((unsigned int)tmpbuf)>>16,count); + count ++; # endif #endif - return tmpbuf; + return ptr; } GBool openTempFile(GString **name, FILE **f, char *mode, char *ext) { @@ -489,7 +517,7 @@ GBool openTempFile(GString **name, FILE **f, char *mode, char *ext) { // with this file name after the tmpnam call and before the fopen // call. I will happily accept fixes to this function for non-Unix // OSs. - if (!(s = tmpnam(NULL))) { + if (!(s = mktmpname(NULL))) { //was: tmpnam return gFalse; } *name = new GString(s); @@ -516,7 +544,7 @@ GBool openTempFile(GString **name, FILE **f, char *mode, char *ext) { (*name)->append("/XXXXXX")->append(ext); fd = mkstemps((*name)->getCString(), strlen(ext)); #else - if (!(s = tmpnam(NULL))) { + if (!(s = mktmpname(NULL))) { //was: tmpnam return gFalse; } *name = new GString(s); @@ -533,7 +561,7 @@ GBool openTempFile(GString **name, FILE **f, char *mode, char *ext) { (*name)->append("/XXXXXX"); fd = mkstemp((*name)->getCString()); #else // HAVE_MKSTEMP - if (!(s = tmpnam(NULL))) { + if (!(s = mktmpname(NULL))) { //was: tmpnam return gFalse; } *name = new GString(s);