xref: /plan9/sys/src/ape/lib/ap/stdio/tmpnam.c (revision 2d069fea74dfcc83c6858e715bf74862cb64720a)
13e12c5d1SDavid du Colombier /*
23e12c5d1SDavid du Colombier  * pANS stdio -- tmpnam
33e12c5d1SDavid du Colombier  */
43e12c5d1SDavid du Colombier #include "iolib.h"
53e12c5d1SDavid du Colombier #include <string.h>
63e12c5d1SDavid du Colombier 
7*2d069feaSDavid du Colombier char *
tmpnam(char * s)8*2d069feaSDavid du Colombier tmpnam(char *s)
9*2d069feaSDavid du Colombier {
103e12c5d1SDavid du Colombier 	static char name[] = "/tmp/tn000000000000";
113e12c5d1SDavid du Colombier 	char *p;
12*2d069feaSDavid du Colombier 
133e12c5d1SDavid du Colombier 	do {
143e12c5d1SDavid du Colombier 		p = name + 7;
15*2d069feaSDavid du Colombier 		while (*p == '9')
16*2d069feaSDavid du Colombier 			*p++ = '0';
17*2d069feaSDavid du Colombier 		if (*p == '\0')
18*2d069feaSDavid du Colombier 			return NULL;
193e12c5d1SDavid du Colombier 		++*p;
203e12c5d1SDavid du Colombier 	} while (access(name, 0) == 0);
213e12c5d1SDavid du Colombier 	if (s) {
223e12c5d1SDavid du Colombier 		strcpy(s, name);
233e12c5d1SDavid du Colombier 		return s;
243e12c5d1SDavid du Colombier 	}
253e12c5d1SDavid du Colombier 	return name;
263e12c5d1SDavid du Colombier }
27*2d069feaSDavid du Colombier 
28*2d069feaSDavid du Colombier 
29*2d069feaSDavid du Colombier char *
tmpnam_r(char * s)30*2d069feaSDavid du Colombier tmpnam_r(char *s)
31*2d069feaSDavid du Colombier {
32*2d069feaSDavid du Colombier 	return s ? tmpnam(s) : NULL;
33*2d069feaSDavid du Colombier }
34