tmpnam.c 443 B

1234567891011121314151617181920212223
  1. #include <stdio.h>
  2. #include <fcntl.h>
  3. #include <errno.h>
  4. #include <sys/stat.h>
  5. #include "syscall.h"
  6. #define MAXTRIES 100
  7. char *__randname(char *);
  8. char *tmpnam(char *buf)
  9. {
  10. static char internal[L_tmpnam];
  11. char s[] = "/tmp/tmpnam_XXXXXX";
  12. int try;
  13. int r;
  14. for (try=0; try<MAXTRIES; try++) {
  15. __randname(s+12);
  16. r = __syscall(SYS_lstat, s, &(struct stat){0});
  17. if (r == -ENOENT) return strcpy(buf ? buf : internal, s);
  18. }
  19. return 0;
  20. }