9 mkfname(char *tmpdir, char *prefix)
14 if((p = getenv("TMPDIR")) != nil)
16 if((p = tmpdir) != nil)
21 n = strlen(p)+1+strlen(prefix)+1+8+1;
22 if((fname = malloc(n)) == nil)
26 if((n = strlen(p)) > 0 && p[n-1] != '/')
28 strcat(fname, prefix);
29 strcat(fname, ".XXXXXXXX");
34 extern int mkstemp(char*);
37 safe_tempnam(char *tmpdir, char *prefix)
42 if((fname = mkfname(tmpdir, prefix)) == nil)
45 if((fd = mkstemp(fname)) < 0){ /* XXX: leak fd, fname */
53 safe_tmpnam(char *fname)
57 if((p = mkfname(nil, "tmpfile")) == nil)
61 return mkstemp(fname);