|
|
1.1 ! root 1: /* ! 2: * Copyright (c) 1988 Regents of the University of California. ! 3: * All rights reserved. ! 4: * ! 5: * Redistribution and use in source and binary forms are permitted provided ! 6: * that: (1) source distributions retain this entire copyright notice and ! 7: * comment, and (2) distributions including binaries display the following ! 8: * acknowledgement: ``This product includes software developed by the ! 9: * University of California, Berkeley and its contributors'' in the ! 10: * documentation or other materials provided with the distribution and in ! 11: * all advertising materials mentioning features or use of this software. ! 12: * Neither the name of the University nor the names of its contributors may ! 13: * be used to endorse or promote products derived from this software without ! 14: * specific prior written permission. ! 15: * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED ! 16: * WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF ! 17: * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. ! 18: */ ! 19: ! 20: #if defined(LIBC_SCCS) && !defined(lint) ! 21: static char sccsid[] = "@(#)tmpnam.c 4.8 (Berkeley) 6/22/90"; ! 22: #endif /* LIBC_SCCS and not lint */ ! 23: ! 24: #include <sys/param.h> ! 25: #include <stdio.h> ! 26: ! 27: #define P_tmpdir "/usr/tmp" ! 28: ! 29: FILE * ! 30: tmpfile() ! 31: { ! 32: FILE *fp; ! 33: char *f, *tmpnam(); ! 34: ! 35: if (!(f = tmpnam((char *)NULL)) || !(fp = fopen(f, "w+"))) { ! 36: fprintf(stderr, "tmpfile: cannot open %s.\n", f); ! 37: return(NULL); ! 38: } ! 39: (void)unlink(f); ! 40: return(fp); ! 41: } ! 42: ! 43: char * ! 44: tmpnam(s) ! 45: char *s; ! 46: { ! 47: char *malloc(), *mktemp(); ! 48: ! 49: if (!s && !(s = malloc((u_int)MAXPATHLEN))) ! 50: return(NULL); ! 51: (void)sprintf(s, "%s/XXXXXX", P_tmpdir); ! 52: return(mktemp(s)); ! 53: } ! 54: ! 55: char * ! 56: tempnam(dir, pfx) ! 57: char *dir, *pfx; ! 58: { ! 59: char *f, *name, *getenv(), *malloc(), *mktemp(); ! 60: ! 61: if (!(name = malloc((u_int)MAXPATHLEN))) ! 62: return(NULL); ! 63: ! 64: if (f = getenv("TMPDIR")) { ! 65: (void)sprintf(name, "%s/%sXXXXXX", f, pfx ? "" : pfx); ! 66: if (f = mktemp(name)) ! 67: return(f); ! 68: } ! 69: if (dir) { ! 70: (void)sprintf(name, "%s/%sXXXXXX", dir, pfx ? "" : pfx); ! 71: if (f = mktemp(name)) ! 72: return(f); ! 73: } ! 74: (void)sprintf(name, "%s/%sXXXXXX", P_tmpdir, pfx ? "" : pfx); ! 75: if (f = mktemp(name)) ! 76: return(f); ! 77: (void)sprintf(name, "/tmp/%sXXXXXX", pfx ? "" : pfx); ! 78: if (!(f = mktemp(name))) ! 79: (void)free(name); ! 80: return(f); ! 81: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.