diff options
author | Arnold D. Robbins <arnold@skeeve.com> | 2010-07-16 11:58:26 +0300 |
---|---|---|
committer | Arnold D. Robbins <arnold@skeeve.com> | 2010-07-16 11:58:26 +0300 |
commit | 765c7494b3dac62207e6cd57fb839997e237f292 (patch) | |
tree | f7da12ffdb85d9f82671cb3122775b2ce73f7ad9 /atari/tmpnam.c | |
parent | cce5115e21db1702e0617afdca36633e7e2c9eae (diff) | |
download | egawk-765c7494b3dac62207e6cd57fb839997e237f292.tar.gz egawk-765c7494b3dac62207e6cd57fb839997e237f292.tar.bz2 egawk-765c7494b3dac62207e6cd57fb839997e237f292.zip |
Moving to 2.13.2.
Diffstat (limited to 'atari/tmpnam.c')
-rw-r--r-- | atari/tmpnam.c | 47 |
1 files changed, 47 insertions, 0 deletions
diff --git a/atari/tmpnam.c b/atari/tmpnam.c new file mode 100644 index 00000000..bd68c4c0 --- /dev/null +++ b/atari/tmpnam.c @@ -0,0 +1,47 @@ +/* tmpnam.c : return a temporary file name */ +/* written by Eric R. Smith and placed in the public domain */ +/** + * - modified for gawk needs - pattern /$$XXXXXX from the original + * code creates names which are hard to remove when somethig + * goes wrong + * - retuned name can be passed outside via system(); other programs + * may not dig '/' as a path separator + * - somehow more frugal in a memory use + * (mj - October 1990) + **/ +#include <stdio.h> +#include <stdlib.h> +#include <string.h> + +extern char * getenv(const char *); +extern char * mktemp(char *); +extern char * strcpy(char *, const char *); +extern char * strcat(char *, const char *); +extern size_t strlen(const char *s); +static char pattern[] = "\\gwkXXXXX"; + +char *tmpnam(buf) + char *buf; +{ + char *tmpdir; + + if (!(tmpdir = getenv("TEMP")) && !(tmpdir = getenv("TMPDIR"))) + tmpdir = "."; + + if (!buf) { + size_t blen; + + blen = strlen (tmpdir) + sizeof(pattern); + if (NULL == (buf = malloc(blen))) + return NULL; + } + (void) strcat(strcpy(buf, tmpdir), pattern); + return(mktemp(buf)); +} + +/* used by gawk_popen() */ +char *tempnam(path, base) +const char *path, *base; /* ignored */ +{ + return tmpnam(NULL); +} |