projects
/
unix-history
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
tags
|
clone url
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
remove gpib, ib
[unix-history]
/
usr
/
src
/
usr.bin
/
rdist
/
main.c
diff --git
a/usr/src/usr.bin/rdist/main.c
b/usr/src/usr.bin/rdist/main.c
index
8ab9ba8
..
78520e4
100644
(file)
--- a/
usr/src/usr.bin/rdist/main.c
+++ b/
usr/src/usr.bin/rdist/main.c
@@
-1,14
+1,16
@@
#ifndef lint
#ifndef lint
-static char *sccsid = "@(#)main.c 4.1
0 (Berkeley) 84/02/09
";
+static char *sccsid = "@(#)main.c 4.1
5 (Berkeley) 85/05/16
";
#endif
#include "defs.h"
#endif
#include "defs.h"
+#define NHOSTS 100
+
/*
* Remote distribution program.
*/
/*
* Remote distribution program.
*/
-char *distfile =
"distfile"
;
+char *distfile =
NULL
;
char tmpfile[] = "/tmp/rdistXXXXXX";
char *tmpname = &tmpfile[5];
char tmpfile[] = "/tmp/rdistXXXXXX";
char *tmpname = &tmpfile[5];
@@
-18,8
+20,6
@@
int qflag; /* Quiet. Don't print messages */
int options; /* global options */
int iamremote; /* act as remote server for transfering files */
int options; /* global options */
int iamremote; /* act as remote server for transfering files */
-int filec; /* number of files to update */
-char **filev; /* list of files/directories to update */
FILE *fin = NULL; /* input file pointer */
int rem = -1; /* file descriptor to remote source/sink process */
char host[32]; /* host name */
FILE *fin = NULL; /* input file pointer */
int rem = -1; /* file descriptor to remote source/sink process */
char host[32]; /* host name */
@@
-38,6
+38,7
@@
main(argc, argv)
{
register char *arg;
int cmdargs = 0;
{
register char *arg;
int cmdargs = 0;
+ char *dhosts[NHOSTS], **hp = dhosts;
pw = getpwuid(userid = getuid());
if (pw == NULL) {
pw = getpwuid(userid = getuid());
if (pw == NULL) {
@@
-64,6
+65,16
@@
main(argc, argv)
fin = stdin;
break;
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();
case 'd':
if (--argc <= 0)
usage();
@@
-114,37
+125,54
@@
main(argc, argv)
options |= YOUNGER;
break;
options |= YOUNGER;
break;
+ case 'h':
+ options |= FOLLOW;
+ break;
+
+ case 'i':
+ options |= IGNLNKS;
+ break;
+
default:
usage();
}
}
default:
usage();
}
}
+ *hp = NULL;
+ setreuid(0, userid);
mktemp(tmpfile);
if (iamremote) {
server();
mktemp(tmpfile);
if (iamremote) {
server();
- exit(nerrs);
+ exit(nerrs
!= 0
);
}
if (cmdargs)
docmdargs(argc, argv);
else {
}
if (cmdargs)
docmdargs(argc, argv);
else {
- if (fin == NULL && (fin = fopen(distfile, "r")) == NULL) {
- perror(distfile);
- exit(1);
+ 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)
}
yyparse();
if (nerrs == 0)
- docmds(argc, argv);
+ docmds(
dhosts,
argc, argv);
}
}
- exit(nerrs);
+ exit(nerrs
!= 0
);
}
usage()
{
}
usage()
{
- printf("Usage: rdist [-nqb
rvwyD] [-f distfile] [-d var=value
] [file ...]\n");
- printf("or: rdist [-nqbrvwyD] -c source [...] machine[:dest]\n");
+ printf("Usage: rdist [-nqb
hirvwyD] [-f distfile] [-d var=value] [-m host
] [file ...]\n");
+ printf("or: rdist [-nqb
hi
rvwyD] -c source [...] machine[:dest]\n");
exit(1);
}
exit(1);
}
@@
-182,6
+210,8
@@
docmdargs(nargs, args)
*dest++ = '\0';
tnl.n_name = cp;
hosts = expand(&tnl, E_ALL);
*dest++ = '\0';
tnl.n_name = cp;
hosts = expand(&tnl, E_ALL);
+ if (nerrs)
+ exit(1);
if (dest == NULL || *dest == '\0')
cmds = NULL;
if (dest == NULL || *dest == '\0')
cmds = NULL;
@@
-197,8
+227,8
@@
docmdargs(nargs, args)
printf("hosts = ");
prnames(hosts);
}
printf("hosts = ");
prnames(hosts);
}
- insert(files, hosts, cmds);
- docmds(0, NULL);
+ insert(
NULL,
files, hosts, cmds);
+ docmds(
NULL,
0, NULL);
}
/*
}
/*