diff --git a/lang/cem/cemcom/main.c b/lang/cem/cemcom/main.c index 0c95935fd..614eb5cc0 100644 --- a/lang/cem/cemcom/main.c +++ b/lang/cem/cemcom/main.c @@ -123,13 +123,18 @@ char *nmlist = 0; #ifdef USE_TMP extern char *mktemp(); /* library routine */ -static char tmpname[] = "/tmp/Cem.XXXXXX"; +char *tmpfdir = "/tmp"; /* where to keep the temporary file */ +static char *tmpfname = "/Cem.XXXXXX"; char *tmpfile = 0; #endif USE_TMP compile(argc, argv) char *argv[]; { +#ifdef USE_TMP + char tmpf[256]; +#endif + #ifndef NOPP int pp_only = options['E'] || options['P']; #endif NOPP @@ -155,8 +160,11 @@ compile(argc, argv) } #ifdef USE_TMP - tmpfile = mktemp(tmpname); + strcpy(tmpf, tmpfdir); + strcat(tmpf, tmpfname); + tmpfile = mktemp(tmpf); #endif USE_TMP + if (strcmp(destination, "-") == 0) destination = 0; if (!InsertFile(source, (char **) 0)) /* read the source file */ diff --git a/lang/cem/cemcom/options b/lang/cem/cemcom/options index dc432c550..d1faf7cf4 100644 --- a/lang/cem/cemcom/options +++ b/lang/cem/cemcom/options @@ -9,6 +9,7 @@ p generate linenumbers and filename indications while generating compact EM code P in running the preprocessor do not output '# line' lines R restricted C +T take path following as directory for storing temporary file(s) U undefine predefined name V set objectsize and alignment requirements w suppress warning diagnostics diff --git a/lang/cem/cemcom/options.c b/lang/cem/cemcom/options.c index a21456ea5..79416b401 100644 --- a/lang/cem/cemcom/options.c +++ b/lang/cem/cemcom/options.c @@ -12,6 +12,7 @@ #include "sizes.h" #include "align.h" #include "storage.h" +#include "use_tmp.h" #ifndef NOPP extern char *inctable[MAXINCL]; @@ -20,6 +21,7 @@ extern int inc_pos; extern char options[]; extern int idfsize; +extern char *tmpfdir; /* main.c */ int txt2int(); @@ -130,6 +132,17 @@ do_option(text) #endif NOPP break; +#ifdef USE_TMP + case 'T' : + if (*text) + tmpfdir = text; + else + tmpfdir = "."; +#else USE_TMP + warning("-T option ignored"); +#endif USE_TMP + break; + case 'U' : { /* -Uname : undefine predefined */ #ifndef NOPP struct idf *idef;