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 >
Wrap
C/C++ Source or Header
|
1991-11-02
|
1KB
|
63 lines
/* uupoll.c by blarson@usc.edu */
/* create empty work file to cause system to be called next check */
#include <stdio.h>
#include <errno.h>
#include <modes.h>
#include <pwd.h>
#include "uucp.h"
main(argc, argv)
int argc;
register char **argv;
{
char grade = 'A';
char pollfile[128];
int f;
struct passwd *pw;
if ((pw = getpwname("uucp")) == NULL) {
fprintf(stderr, "getpwname(uucp) failed\n");
exit(1);
}
if (setuid((pw->pw_gid << 16) | pw->pw_uid) < 0) {
fprintf(stderr, "setuid(uucp) filed\n");
exit(1);
}
while(--argc) {
if (**++argv == '-') {
switch(*++*argv) {
case 'g':
case 'G':
if (*++*argv) grade = **argv;
break;
case '?':
default:
puts("Usage: uupoll [-g<grade>] system");
exit(**argv != '?');
}
} else {
makpoll:
sprintf(pollfile, "%s/%.7s/C.%.7s%c0000", SPOOLDIR, *argv, *argv,
grade);
if ((f = create(pollfile, S_IWRITE, S_IREAD | S_IWRITE)) < 0) {
switch(errno) {
case E_CEF:
break;
case E_PNNF:
sprintf(pollfile, "%s/%.7s", SPOOLDIR, *argv);
if (makdir(pollfile, S_IFDIR, S_IFDIR | S_IREAD | S_IWRITE) < 0) {
exit(_errmsg(errno, "Problem creating directory %s\n", pollfile));
}
goto makpoll;
default:
exit(_errmsg(errno, "problem creating %s\n", pollfile));
}
} else {
close(f);
}
}
}
exit(0);
}