sam -r machine filelist...

from presotto
This commit is contained in:
rsc 2004-05-14 18:25:49 +00:00
parent f1bfc54e12
commit 8538a66037
3 changed files with 25 additions and 6 deletions

View file

@ -219,10 +219,28 @@ bootterm(char *machine, char **argv, char **end)
}
void
connectto(char *machine)
connectto(char *machine, char **argv)
{
int p1[2], p2[2];
char **av;
int ac;
// count args
for(av = argv; *av; av++)
;
av = malloc(sizeof(char*)*((av-argv) + 5));
if(av == nil){
dprint("out of memory\n");
exits("fork/exec");
}
ac = 0;
av[ac++] = RX;
av[ac++] = machine;
av[ac++] = rsamname;
av[ac++] = "-R";
while(*argv)
av[ac++] = *argv++;
av[ac] = 0;
if(pipe(p1)<0 || pipe(p2)<0){
dprint("can't pipe\n");
exits("pipe");
@ -237,7 +255,7 @@ connectto(char *machine)
close(p1[1]);
close(p2[0]);
close(p2[1]);
execlp(RXPATH, RX, machine, rsamname, "-R", (char*)0);
execvp(RXPATH, av);
dprint("can't exec %s\n", RXPATH);
exits("exec");
@ -245,15 +263,16 @@ connectto(char *machine)
dprint("can't fork\n");
exits("fork");
}
free(av);
close(p1[1]);
close(p2[0]);
}
void
startup(char *machine, int Rflag, char **argv, char **end)
startup(char *machine, int Rflag, char **argv, char **end, char **files)
{
if(machine)
connectto(machine);
connectto(machine, files);
if(!Rflag)
bootterm(machine, argv, end);
downloaded = 1;

View file

@ -107,7 +107,7 @@ main(int argc, char *argv[])
if(home == 0)
home = "/";
if(!dflag)
startup(machine, Rflag, arg, argv);
startup(machine, Rflag, arg, ap, argv);
notify(notifyf);
getcurwd();
if(argc>1){

View file

@ -292,7 +292,7 @@ void settempfile(void);
int skipbl(void);
void snarf(File*, Posn, Posn, Buffer*, int);
void sortname(File*);
void startup(char*, int, char**, char**);
void startup(char*, int, char**, char**, char**);
void state(File*, int);
int statfd(int, ulong*, uvlong*, long*, long*, long*);
int statfile(char*, ulong*, uvlong*, long*, long*, long*);