From 9d6aba0a1d20e4aa8306a073691a6c294f20fff3 Mon Sep 17 00:00:00 2001 From: kramm Date: Fri, 17 Sep 2004 16:48:40 +0000 Subject: [PATCH] applied diff between xpdf-1.01-orig and xpdf-1.01-swftools. --- pdf2swf/xpdf/OutputDev.h | 2 +- pdf2swf/xpdf/Stream.cc | 2 ++ pdf2swf/xpdf/gfile.cc | 52 +++++++++++++++++++++++++++++++++++++++++++--- pdf2swf/xpdf/gfile.h | 5 +++++ 4 files changed, 57 insertions(+), 4 deletions(-) diff --git a/pdf2swf/xpdf/OutputDev.h b/pdf2swf/xpdf/OutputDev.h index fb7d8ab..c759770 100644 --- a/pdf2swf/xpdf/OutputDev.h +++ b/pdf2swf/xpdf/OutputDev.h @@ -61,7 +61,7 @@ public: virtual void setDefaultCTM(double *ctm); // Start a page. - virtual void startPage(int pageNum, GfxState *state) {} + virtual void startPage(int pageNum, GfxState *state, double x1,double y1,double x2,double y2) {} // End a page. virtual void endPage() {} diff --git a/pdf2swf/xpdf/Stream.cc b/pdf2swf/xpdf/Stream.cc index 49bbb46..297a079 100644 --- a/pdf2swf/xpdf/Stream.cc +++ b/pdf2swf/xpdf/Stream.cc @@ -17,6 +17,8 @@ #include #ifndef WIN32 #include +#else +extern "C" int unlink(char *filename); #endif #include #include diff --git a/pdf2swf/xpdf/gfile.cc b/pdf2swf/xpdf/gfile.cc index 11f5cf6..5fa0762 100644 --- a/pdf2swf/xpdf/gfile.cc +++ b/pdf2swf/xpdf/gfile.cc @@ -437,6 +437,52 @@ time_t getModTime(char *fileName) { #endif } +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(ptr, "%s%s%08x%08x",dir,sep,lrand48(),lrand48()); +#else +# ifdef HAVE_RAND + sprintf(ptr, "%s%s%08x%08x",dir,sep,rand(),rand()); +# else + 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 ptr; +} + + GBool openTempFile(GString **name, FILE **f, char *mode, char *ext) { #if defined(WIN32) //---------- Win32 ---------- @@ -463,7 +509,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))) { return gFalse; } *name = new GString(s); @@ -490,7 +536,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))) { return gFalse; } *name = new GString(s); @@ -507,7 +553,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))) { return gFalse; } *name = new GString(s); diff --git a/pdf2swf/xpdf/gfile.h b/pdf2swf/xpdf/gfile.h index 82f1d7a..b433aeb 100644 --- a/pdf2swf/xpdf/gfile.h +++ b/pdf2swf/xpdf/gfile.h @@ -14,12 +14,14 @@ #include #include #include +#include "./aconf.h" #if defined(WIN32) # include # ifdef FPTEX # include # else # include +# include # endif #elif defined(ACORN) #elif defined(MACOS) @@ -58,6 +60,9 @@ extern GString *getHomeDir(); // Get current directory. extern GString *getCurrentDir(); +/* create a temporary filename */ +char* mktmpname(char*ptr); + // Append a file name to a path string. may be an empty // string, denoting the current directory). Returns . extern GString *appendToPath(GString *path, char *fileName); -- 1.7.10.4