home *** CD-ROM | disk | FTP | other *** search
/ minnie.tuhs.org / unixen.tar / unixen / PDP-11 / Distributions / ucb / spencer_2bsd.tar.gz / 2bsd.tar / src / untmp.c < prev    next >
C/C++ Source or Header  |  1980-02-17  |  859b  |  43 lines

  1. /* Copyright (c) 1979 Regents of the University of California */
  2. /*
  3.  * Remove stuff in /tmp owned by the invoker.
  4.  */
  5. #include <retrofit.h>
  6. #include <sys/types.h>
  7. #include <sys/stat.h>
  8. #include <stdio.h>
  9. #include <sys/dir.h>
  10.  
  11. struct    direct    dirent[2];
  12.  
  13. main()
  14. {
  15.     struct stat stbuf;
  16.     register int uid;
  17.  
  18.     uid = getuid();
  19.     if (chdir("/tmp") < 0) {
  20.         perror("/tmp");
  21.         exit(1);
  22.     }
  23.     if (freopen(".", "r", stdin) == NULL)
  24.         exit(1);
  25.     while (fread((char *) &dirent[0], sizeof (struct direct), 1, stdin) == 1) {
  26. #define    ent    dirent[0]
  27.         if (ent.d_ino == 0)
  28.             continue;
  29.         if (stat(ent.d_name, &stbuf))
  30.             continue;
  31.         if (!strcmp(ent.d_name, ".") || !strcmp(ent.d_name, ".."))
  32.             continue;
  33.         if (stbuf.st_uid != uid)
  34.             continue;
  35.         if ((stbuf.st_mode & S_IFMT) != S_IFREG)
  36.             continue;
  37.         if (unlink(ent.d_name))
  38.             continue;
  39.         printf("%s\n", ent.d_name);
  40.     }
  41.     exit(0);
  42. }
  43.