V10/dk/cmd/pupu.1.2/pupu.c
static char SCCSID[] = "@(#)pupu.c 2.1 DKHOST 85/01/15";
#include <stdio.h>
#include <sysexits.h>
#include <string.h>
#include <dk.h>
#include "tdefs.h"
XcharP iam;
Xshort modes[3] = { DKR_BLOCK, 0, 0 }; /* xx take out */
Xchar ebuf[BUFSIZ];
Efn printerr;
main(argc, argv)
PcharP argv[];
{
RcharP p, dialstring;
Aint fd;
AcharP dir;
iam = &argv[0][strlen(argv[0]) - 4];
if(strcmp(iam, "pupu") == 0)
exit(ppremote(0));
setbuf(stderr, ebuf);
if(argc < 4){
fprintf(stderr, "Usage: %s host file ... directory\n", iam);
exit(EX_USAGE);
}
dialstring = maphost(argv[1], 'f', "pupu", "", "");
if((p = miscfield('f', 'o')) && *p == 'y')
execalt(iam, argc, argv);
fd = dkdial(dialstring);
if(fd < 0)
exit(-fd);
ioctl(fd, DIOCRMODE, modes); /* xx take out */
dir = argv[argc - 1];
argv[argc - 1] = 0;
if(strcmp(iam, "push") == 0)
exit(push(fd, &argv[2], dir, printerr, ""));
else if(strcmp(iam, "pull") == 0)
exit(pull(fd, &argv[2], dir, printerr, ""));
else{
fprintf(stderr, "Command name unrecognized -- must be 'push' or 'pull'\n");
exit(EX_USAGE);
}
/* NOTREACHED */
}
execalt(name, argc, argv)
PcharP name;
PcharP argv[];
{
Achar oldname[8];
sprintf(oldname, "o%s", name);
argv[argc] = 0;
execvp(oldname, argv);
fprintf(stderr, "%s: Can't exec %s\n", iam, oldname);
exit(EX_UNAVAILABLE);
}
printerr(msg)
PcharP msg;
{
fprintf(stderr, "%s%s\n", iam, msg);
fflush(stderr);
return(0);
}