|
|
1.1 ! root 1: ! 2: static char SCCSID[] = "@(#)pupu.c 2.1 DKHOST 85/01/15"; ! 3: ! 4: #include <stdio.h> ! 5: #include <sysexits.h> ! 6: #include "string.h" ! 7: #include <dk.h> ! 8: #include "tdefs.h" ! 9: ! 10: XcharP iam; ! 11: int DEBUG ; ! 12: ! 13: ! 14: Xchar ebuf[BUFSIZ]; ! 15: ! 16: Efn printerr; ! 17: ! 18: extern char * maphost() ; ! 19: extern char * miscfield() ; ! 20: extern int dkp_ld ; ! 21: ! 22: main(argc, argv) ! 23: PcharP argv[]; ! 24: { ! 25: RcharP p, dialstring; ! 26: Aint fd; ! 27: AcharP dir; ! 28: extern char * dkerror ; ! 29: ! 30: if (strcmp(&argv[0][strlen(argv[0])-2], "cc") == 0) ! 31: argv[0][strlen(argv[0])-2] = '\0' ; ! 32: iam = &argv[0][strlen(argv[0]) - 4]; ! 33: ! 34: if (strcmp(argv[1], "-d") == 0) { ! 35: DEBUG = 1 ; ! 36: argv++ ; argc-- ; ! 37: } else ! 38: DEBUG = 0 ; ! 39: if(strcmp(iam, "pupu") == 0) ! 40: exit(ppremote(0)); ! 41: ! 42: setbuf(stderr, ebuf); ! 43: ! 44: if(argc < 4){ ! 45: fprintf(stderr, "Usage: %s host file ... directory\n", iam); ! 46: exit(EX_USAGE); ! 47: } ! 48: ! 49: dialstring = maphost(argv[1], 'f', "pupu", "", ""); ! 50: ! 51: if((p = miscfield('f', 'o')) && *p == 'y') ! 52: execalt(iam, argc, argv); ! 53: ! 54: fd = tdkdial(dialstring, 2); ! 55: ! 56: if(fd < 0) { ! 57: fprintf(stderr, "call to %s failed: %s\n", dialstring, dkerror) ; ! 58: exit(-fd); ! 59: } ! 60: ! 61: dkproto(fd, dkp_ld) ; ! 62: dir = argv[argc - 1]; ! 63: ! 64: argv[argc - 1] = 0; ! 65: ! 66: if(strcmp(iam, "push") == 0) ! 67: exit(push(fd, &argv[2], dir, printerr, "")); ! 68: else if(strcmp(iam, "pull") == 0) ! 69: exit(pull(fd, &argv[2], dir, printerr, "")); ! 70: else{ ! 71: fprintf(stderr, "Command name unrecognized -- must be 'push' or 'pull'\n"); ! 72: exit(EX_USAGE); ! 73: } ! 74: /* NOTREACHED */ ! 75: } ! 76: ! 77: execalt(name, argc, argv) ! 78: PcharP name; ! 79: PcharP argv[]; ! 80: { ! 81: Achar oldname[8]; ! 82: ! 83: sprintf(oldname, "o%s", name); ! 84: argv[argc] = 0; ! 85: ! 86: execvp(oldname, argv); ! 87: ! 88: fprintf(stderr, "%s: Can't exec %s\n", iam, oldname); ! 89: exit(EX_UNAVAILABLE); ! 90: } ! 91: ! 92: printerr(msg) ! 93: PcharP msg; ! 94: { ! 95: fprintf(stderr, "%s%s\n", iam, msg); ! 96: ! 97: fflush(stderr); ! 98: ! 99: return(0); ! 100: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.