From 8538a66037f31e4c685a76244e3693bc85832805 Mon Sep 17 00:00:00 2001 From: rsc Date: Fri, 14 May 2004 18:25:49 +0000 Subject: allow sam -r machine filelist... from presotto --- src/cmd/sam/io.c | 27 +++++++++++++++++++++++---- src/cmd/sam/sam.c | 2 +- src/cmd/sam/sam.h | 2 +- 3 files changed, 25 insertions(+), 6 deletions(-) (limited to 'src/cmd/sam') diff --git a/src/cmd/sam/io.c b/src/cmd/sam/io.c index b7317a9b..cdea842c 100644 --- a/src/cmd/sam/io.c +++ b/src/cmd/sam/io.c @@ -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; diff --git a/src/cmd/sam/sam.c b/src/cmd/sam/sam.c index 5a009bb0..803b84e6 100644 --- a/src/cmd/sam/sam.c +++ b/src/cmd/sam/sam.c @@ -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){ diff --git a/src/cmd/sam/sam.h b/src/cmd/sam/sam.h index 1e92c73e..1ab2b495 100644 --- a/src/cmd/sam/sam.h +++ b/src/cmd/sam/sam.h @@ -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*); -- cgit v1.2.3