tmpnam.c 586 B

12345678910111213141516171819202122232425262728
  1. /*
  2. * tmpnam.c - create a unique filename
  3. */
  4. /* $Id$ */
  5. #include <stdio.h>
  6. #include <string.h>
  7. #include "loc_incl.h"
  8. unsigned int _getpid(void);
  9. char *
  10. tmpnam(char *s) {
  11. static char name_buffer[L_tmpnam] = "/tmp/tmp.";
  12. static unsigned long count = 0;
  13. static char *name = NULL;
  14. if (!name) {
  15. name = name_buffer + strlen(name_buffer);
  16. name = _i_compute(_getpid(), 10, name, 5);
  17. *name++ = '.';
  18. *name = '\0';
  19. }
  20. if (++count > TMP_MAX) count = 1; /* wrap-around */
  21. *_i_compute(count, 10, name, 3) = '\0';
  22. if (s) return strcpy(s, name_buffer);
  23. else return name_buffer;
  24. }