|
|
1.1 ! root 1: /* /sccs/src/cmd/uucp/s.xqt.c ! 2: xqt.c 1.1 8/30/84 17:38:21 ! 3: */ ! 4: #include "uucp.h" ! 5: #ifdef V8 ! 6: #include <sys/param.h> ! 7: #endif ! 8: ! 9: VERSION(@(#)xqt.c 1.1); ! 10: ! 11: static euucico(); ! 12: ! 13: /* ! 14: * start up uucico for rmtname ! 15: * return: ! 16: * none ! 17: */ ! 18: void ! 19: xuucico(rmtname) ! 20: char *rmtname; ! 21: { ! 22: /* ! 23: * start uucico for rmtname system ! 24: */ ! 25: if (fork() == 0) { /* can't vfork() */ ! 26: /* ! 27: * hide the uid of the initiator of this job so that he ! 28: * doesn't get notified about things that don't concern him. ! 29: */ ! 30: (void) setuid(geteuid()); ! 31: euucico(rmtname); ! 32: } ! 33: return; ! 34: } ! 35: ! 36: /* ! 37: * remove the opt junk later. -ntw ! 38: */ ! 39: ! 40: static ! 41: euucico(rmtname) ! 42: char *rmtname; ! 43: { ! 44: char opt[100]; ! 45: ! 46: (void) close(0); ! 47: (void) close(1); ! 48: (void) close(2); ! 49: (void) open("/dev/null", 0); ! 50: (void) open("/dev/null", 1); ! 51: (void) open("/dev/null", 1); ! 52: (void) signal(SIGINT, SIG_IGN); ! 53: (void) signal(SIGHUP, SIG_IGN); ! 54: (void) signal(SIGQUIT, SIG_IGN); ! 55: closelog(); ! 56: #ifdef V8 ! 57: close(3); ! 58: #endif ! 59: if (rmtname[0] != '\0') ! 60: (void) sprintf(opt, "-s%s", rmtname); ! 61: else ! 62: opt[0] = '\0'; ! 63: #if NOTDEF ! 64: (void) execle(UUCICO, "UUCICO", "-r1", opt, 0, Env); ! 65: #else ! 66: (void) execle(UUSCHED, "UUSCHED", 0, Env); ! 67: #endif ! 68: exit(100); ! 69: } ! 70: ! 71: ! 72: /* ! 73: * start up uuxqt ! 74: * return: ! 75: * none ! 76: */ ! 77: void ! 78: xuuxqt(rmtname) ! 79: char *rmtname; ! 80: { ! 81: char opt[100]; ! 82: ! 83: if (rmtname && rmtname[0] != '\0') ! 84: (void) sprintf(opt, "-s%s", rmtname); ! 85: else ! 86: opt[0] = '\0'; ! 87: /* ! 88: * start uuxqt ! 89: */ ! 90: if (vfork() == 0) { ! 91: (void) close(0); ! 92: (void) close(1); ! 93: (void) close(2); ! 94: (void) open("/dev/null", 2); ! 95: (void) open("/dev/null", 2); ! 96: (void) open("/dev/null", 2); ! 97: (void) signal(SIGINT, SIG_IGN); ! 98: (void) signal(SIGHUP, SIG_IGN); ! 99: (void) signal(SIGQUIT, SIG_IGN); ! 100: closelog(); ! 101: #ifdef V8 ! 102: close(3); ! 103: #endif ! 104: /* ! 105: * hide the uid of the initiator of this job so that he ! 106: * doesn't get notified about things that don't concern him. ! 107: */ ! 108: (void) setuid(geteuid()); ! 109: (void) execle(UUXQT, "UUXQT", opt, 0, Env); ! 110: (void) _exit(100); ! 111: } ! 112: return; ! 113: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.