int main(int argc, char **argv) { char *arg; int cmdargs; char *dhosts[NHOSTS], **hp = dhosts; cmdargs = 0; pw = getpwuid(userid = getuid()); if (pw == NULL) { fprintf(stderr, "%s: Who are you?\n", argv[0]); exit(1); } strcpy(user, pw->pw_name); strcpy(homedir, pw->pw_dir); groupid = pw->pw_gid; gethostname(host, sizeof(host)); strcpy(tempfile, _PATH_TMP); strcat(tempfile, _RDIST_TMP); if ((tempname = rindex(tempfile, '/')) != 0) tempname++; else tempname = tempfile; while (--argc > 0) { if ((arg = *++argv)[0] != '-') break; if (!strcmp(arg, "-Server")) iamremote++; else while (*++arg) switch (*arg) { case 'P': if (--argc <= 0) usage(); path_rsh = *++argv; break; case 'f': if (--argc <= 0) usage(); distfile = *++argv; if (distfile[0] == '-' && distfile[1] == '\0') fin = stdin; break; case 'm': if (--argc <= 0) usage(); if (hp >= &dhosts[NHOSTS-2]) { fprintf(stderr, "rdist: too many destination hosts\n"); exit(1); } *hp++ = *++argv; break; case 'd': if (--argc <= 0) usage(); define(*++argv); break; case 'D': debug++; break; case 'c': cmdargs++; break; case 'n': if (options & VERIFY) { printf("rdist: -n overrides -v\n"); options &= ~VERIFY; } nflag++; break; case 'q': qflag++; break; case 'b': options |= COMPARE; break; case 'R': options |= REMOVE; break; case 'v': if (nflag) { printf("rdist: -n overrides -v\n"); break; } options |= VERIFY; break; case 'w': options |= WHOLE; break; case 'y': options |= YOUNGER; break; case 'h': options |= FOLLOW; break; case 'i': options |= IGNLNKS; break; default: usage(); } } *hp = NULL; seteuid(userid); mktemp(tempfile); if (iamremote) { server(); exit(nerrs != 0); } if (cmdargs) docmdargs(argc, argv); else { if (fin == NULL) { if(distfile == NULL) { if((fin = fopen("distfile","r")) == NULL) fin = fopen("Distfile", "r"); } else fin = fopen(distfile, "r"); if(fin == NULL) { perror(distfile ? distfile : "distfile"); exit(1); } } yyparse(); if (nerrs == 0) docmds(dhosts, argc, argv); } exit(nerrs != 0); }
int main (int argc, char *argv[]) { int cmdargs = 0; char *dhosts[NHOSTS], **hp = dhosts; extern int optind; extern char *optarg; int opt; if (myname = rindex (argv[0], '/')) myname++; if (myname == NULL || *myname == NULL) myname = argv[0]; isodetailor (myname, 1); pw = getpwuid(userid = getuid()); if (pw == NULL) adios (NULLCP, "Who are you?"); strcpy(user, pw->pw_name); strcpy(homedir, pw->pw_dir); groupid = pw->pw_gid; host = getlocalhost (); while ((opt = getopt (argc, argv, "f:m:d:DcnqbuRvwyhiQ")) != EOF) switch (opt) { case 'f': distfile = optarg; if (distfile[0] == '-' && distfile[1] == '\0') fin = stdin; break; case 'm': if (hp >= &dhosts[NHOSTS-2]) adios (NULLCP, "too many destination hosts"); *hp++ = optarg; break; case 'd': define(optarg); break; case 'D': debug++; break; case 'c': cmdargs++; break; case 'n': if (options & VERIFY) { advise (NULLCP, "-n overrides -v"); options &= ~VERIFY; } nflag++; break; case 'q': qflag++; break; case 'b': options |= COMPARE; break; #ifdef UW case 'u': options |= NOINSTALL; break; #endif UW case 'R': options |= REMOVE; break; case 'v': if (nflag) { advise (NULLCP, "-n overrides -v"); break; } options |= VERIFY; break; case 'w': options |= WHOLE; break; case 'y': options |= YOUNGER; break; case 'h': options |= FOLLOW; break; case 'i': options |= IGNLNKS; break; case 'Q': options |= QUERYM; break; default: usage(); break; } *hp = NULL; argc -= optind; argv += optind; mktemp(utmpfile); if (cmdargs) docmdargs(argc, argv); else { if (fin == NULL) { if(distfile == NULL) { if((fin = fopen("distfile","r")) == NULL) fin = fopen("Distfile", "r"); } else fin = fopen(distfile, "r"); if(fin == NULL) { adios (distfile, "Can't open file"); } } yyparse(); if (nerrs == 0) docmds(dhosts, argc, argv); } return(nerrs != 0); }