Annotation of researchv10no/dk/cmd/pupu/pupu.c, revision 1.1.1.1

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: }

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.