|
|
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.