tmpnam.c 596 B

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