Introduction
Introduction Statistics Contact Development Disclaimer Help
Use getopt for argument processing; fixes a bug. - sam - An updated version of …
git clone git://vernunftzentrum.de/sam.git
Log
Files
Refs
LICENSE
---
commit faf04a03721d852086ec2c89ff28c0a94d583f01
parent c2604deb4126d67aceda979a48ade345a327606b
Author: Rob King <[email protected]>
Date: Wed, 18 May 2016 00:26:14 -0500
Use getopt for argument processing; fixes a bug.
Diffstat:
sam/io.c | 4 ++--
sam/sam.c | 97 ++++++++++++++-----------------
2 files changed, 46 insertions(+), 55 deletions(-)
---
diff --git a/sam/io.c b/sam/io.c
@@ -246,12 +246,12 @@ connectto(char *machine)
}
void
-startup(char *machine, int Rflag, char **argv, char **end)
+startup(char *machine, int Rflag, char **arg, char **end)
{
if(machine)
connectto(machine);
if(!Rflag)
- bootterm(machine, argv, end);
+ bootterm(machine, arg, end);
downloaded = 1;
outTs(Hversion, VERSION);
}
diff --git a/sam/sam.c b/sam/sam.c
@@ -1,6 +1,8 @@
/* Copyright (c) 1998 Lucent Technologies - All rights reserved. */
#include "sam.h"
+#include <unistd.h>
+
Rune genbuf[BLOCKSIZE];
int io;
int panicking;
@@ -35,59 +37,48 @@ void usage(void);
int main(int argc, char *argv[])
{
- int i;
+ int i, o;
String *t;
- char **ap, **arg;
-
- arg = argv++;
- ap = argv;
- while(argc>1 && argv[0] && argv[0][0]=='-'){
- switch(argv[0][1]){
- case 'e':
- *ap++ = *argv++;
- --argc;
- expandtabs++;
- break;
-
- case 'd':
- dflag++;
- break;
-
- case 'r':
- *ap++ = *argv++;
- *ap++ = *argv;
- --argc;
- if(argc == 1)
- usage();
- machine = *argv;
-
- rsamname = RXSAMNAME;
- break;
-
- case 'R':
- Rflag++;
- break;
-
- case 't':
- --argc, argv++;
- if(argc == 1)
- usage();
- samterm = *argv;
- break;
+ char *arg[argc + 1], **ap;
+ int targc = 1;
+
+ ap = &arg[argc];
+ arg[argc] = NULL;
+ while ((o = getopt(argc, argv, "edRr:t:s:")) != -1){
+ switch (o){
+ case 'e':
+ arg[targc++] = "-e";
+ break;
+
+ case 'd':
+ dflag = 1;
+ break;
+
+ case 'r':
+ machine = optarg;
+ rsamname = RXSAMNAME;
+ arg[targc++] = "-r";
+ arg[targc++] = optarg;
+ break;
+
+ case 'R':
+ Rflag = 1;
+ break;
+
+ case 't':
+ samterm = optarg;
+ break;
+
+ case 's':
+ rsamname = optarg;
+
+ default:
+ usage();
+ }
+ }
+ argv += optind;
+ argc -= optind;
- case 's':
- --argc, argv++;
- if(argc == 1)
- usage();
- rsamname = *argv;
- break;
-
- default:
- dprint("sam: unknown flag %c\n", argv[0][1]);
- exits("usage");
- }
- --argc, argv++;
- }
Strinit(&cmdstr);
Strinit0(&lastpat);
Strinit0(&lastregexp);
@@ -103,8 +94,8 @@ int main(int argc, char *argv[])
startup(machine, Rflag, arg, ap);
Fstart();
notify(notifyf);
- if(argc>1){
- for(i=0; i<argc-1; i++)
+ if(argc > 0){
+ for(i=0; i<argc; i++)
if(!setjmp(mainloop)){
t = tmpcstr(argv[i]);
Straddc(t, '\0');
You are viewing proxied material from vernunftzentrum.de. The copyright of proxied material belongs to its original authors. Any comments or complaints in relation to proxied material should be directed to the original authors of the content concerned. Please see the disclaimer for more details.