=================================================================== RCS file: /home/cvs/OpenXM/src/util/ox_pathfinder.c,v retrieving revision 1.9 retrieving revision 1.11 diff -u -p -r1.9 -r1.11 --- OpenXM/src/util/ox_pathfinder.c 2003/11/24 11:47:35 1.9 +++ OpenXM/src/util/ox_pathfinder.c 2003/12/03 03:21:16 1.11 @@ -1,4 +1,4 @@ -/* $OpenXM: OpenXM/src/util/ox_pathfinder.c,v 1.8 2003/11/16 07:14:11 takayama Exp $ */ +/* $OpenXM: OpenXM/src/util/ox_pathfinder.c,v 1.10 2003/12/01 03:15:37 takayama Exp $ */ /* Moved from misc-2003/07/cygwin/test.c */ #include @@ -860,6 +860,68 @@ char *generateTMPfileName(char *seed) { return NULL; } +#define MAXTMP2 0xffffff +char *generateTMPfileName2(char *seed,char *ext,int usetmp,int win){ + char *tmp; + char *fname; + char *tt; + int num; + static int prevnum=0; + int i; + int clean = 0; + if (usetmp) { + tmp = getenv("TMP"); + if (tmp == NULL) { + tmp = getenv("TEMP"); + } + if ((tmp == NULL) && (strcmp(getOStypes(),"Windows-native") != 0)) { + tmp = "/tmp"; + } + tmp = winPathToCygwinPath(tmp); + }else{ + tmp = NULL; + } + if (tmp != NULL) { + fname = (char *)mymalloc(strlen(tmp)+strlen(seed)+40); + if (fname == NULL) nomemory(fname); + }else{ + fname = (char *)mymalloc(strlen(seed)+40); + if (fname == NULL) nomemory(fname); + } + for (num=prevnum+1; num MAXTMP2-10) && (!clean)) { + /* Clean the old garbages. */ + for (i=0; i= 0) && (buf.st_mtime+120 < time(NULL))) { + unlink(fname); + } + } + } + num = 0; clean=1; prevnum=0; + } + } + } + return NULL; +} char *getCppPath(void) { static char *cpp = "/usr/local/bin/cpp"; @@ -956,5 +1018,48 @@ char *oxWhich_unix(char *cmdname,char *path) { } } return NULL; +} + +char *oxEvalEnvVar(char *s) { + int n, i,j; + char *es; + char *news; + int flag,flag2; + flag=-1; + n = strlen(s); + es = (char *)mymalloc(n+1); es[0] = 0; + if (es == NULL) nomemory(1); + for (i=0; i= 0) { + es = (char *)getenv(es); + if (es == NULL) es=""; + news = (char *) mymalloc(n+5+strlen(es)); + if (news == NULL) nomemory(1); + j = 0; + for (i=0; i