/* routines to override the standard Borland library routines */ /* PA0GRI , N1BEE , aparent origin PE1CHL */ /* Compile into _TEXT segment with -zC_TEXT */ #include #include #include #include "global.h" #ifdef __TURBOC__ char *getnenv __ARGS((char *name)); /* In pc.c */ #ifdef __BORLANDC__ char far * near pascal __MKNAME __ARGS((char far *tmpname,unsigned int tmpnum)); #else char *pascal __MKNAME __ARGS((char *tmpname,unsigned int tmpnum)); #endif unsigned int _tmpnum = 0; /* low-level routines used by tmpnam, fixed to use TMP environment variable */ #ifdef __BORLANDC__ char far * near pascal __MKNAME (tmpname,tmpnum) /* Turbo C++ acc. n1bee */ char far *tmpname; #else char *pascal __MKNAME (tmpname,tmpnum) /* The "standard compiler" */ char *tmpname; #endif unsigned int tmpnum; { char *tmpdir,*p; static char staticname[80]; if (tmpname == NULL) tmpname = staticname; p = tmpdir = getnenv("TMP"); /* get tempdir name */ if (p[0] != '\0') p += strlen(p) - 1; /* point to last character */ sprintf(tmpname,"%s%sTMP%u.$$$",tmpdir, ((*p != '/' && *p != '\\')? "/":""),tmpnum); return tmpname; } /* new tmpnam function. calls above routine to generate the name, but */ /* is otherwise the same as the tmpnam() in the library. */ char *tmpnam (name) char *name; { do { if (_tmpnum == 0xffff) _tmpnum = 2; else ++_tmpnum; name = __MKNAME(name,_tmpnum); } while (access(name,0) != -1); return name; } #endif