home *** CD-ROM | disk | FTP | other *** search
/ rtsi.com / 2014.01.www.rtsi.com.tar / www.rtsi.com / OS9 / OSK / TELECOM / UUCP_Blars.lzh / uupoll.c < prev    next >
C/C++ Source or Header  |  1991-11-02  |  1KB  |  63 lines

  1. /* uupoll.c by blarson@usc.edu */
  2. /* create empty work file to cause system to be called next check */
  3.  
  4. #include <stdio.h>
  5. #include <errno.h>
  6. #include <modes.h>
  7. #include <pwd.h>
  8. #include "uucp.h"
  9.  
  10. main(argc, argv)
  11. int argc;
  12. register char **argv;
  13. {
  14.     char grade = 'A';
  15.     char pollfile[128];
  16.     int f;
  17.     struct passwd *pw;
  18.  
  19.     if ((pw = getpwname("uucp")) == NULL) {
  20.         fprintf(stderr, "getpwname(uucp) failed\n");
  21.     exit(1);
  22.     }
  23.     if (setuid((pw->pw_gid << 16) | pw->pw_uid) < 0) {
  24.         fprintf(stderr, "setuid(uucp) filed\n");
  25.     exit(1);
  26.     }
  27.     while(--argc) {
  28.         if (**++argv == '-') {
  29.         switch(*++*argv) {
  30.         case 'g':
  31.         case 'G':
  32.             if (*++*argv) grade = **argv;
  33.             break;
  34.         case '?':
  35.         default:
  36.             puts("Usage: uupoll [-g<grade>] system");
  37.             exit(**argv != '?');
  38.         }
  39.     } else {
  40. makpoll:
  41.         sprintf(pollfile, "%s/%.7s/C.%.7s%c0000", SPOOLDIR, *argv, *argv,
  42.                 grade);
  43.         if ((f = create(pollfile, S_IWRITE, S_IREAD | S_IWRITE)) < 0) {
  44.             switch(errno) {
  45.         case E_CEF:
  46.             break;
  47.         case E_PNNF:
  48.             sprintf(pollfile, "%s/%.7s", SPOOLDIR, *argv);
  49.             if (makdir(pollfile, S_IFDIR, S_IFDIR | S_IREAD | S_IWRITE) < 0) {
  50.                 exit(_errmsg(errno, "Problem creating directory %s\n", pollfile));
  51.             }
  52.             goto makpoll;
  53.             default:
  54.             exit(_errmsg(errno, "problem creating %s\n", pollfile));
  55.         }
  56.         } else {
  57.             close(f);
  58.         }
  59.     }
  60.     }
  61.     exit(0);
  62. }
  63.