|
|
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.