From c8f538425f4e92e1e438b9bd25cb08e250a93d5b Mon Sep 17 00:00:00 2001 From: rsc Date: Mon, 26 Mar 2007 12:02:41 +0000 Subject: sync with plan 9 --- src/cmd/rc/getflags.c | 171 +++++++++++++++++++++++++++++--------------------- 1 file changed, 99 insertions(+), 72 deletions(-) (limited to 'src/cmd/rc/getflags.c') diff --git a/src/cmd/rc/getflags.c b/src/cmd/rc/getflags.c index c452067f..09f6e3a7 100644 --- a/src/cmd/rc/getflags.c +++ b/src/cmd/rc/getflags.c @@ -3,7 +3,7 @@ #include "rc.h" #include "getflags.h" #include "fns.h" -char *flagset[]={""}; +char *flagset[] = {""}; char **flag[NFLAG]; char cmdline[NCMDLINE+1]; char *cmdname; @@ -19,105 +19,118 @@ static int reason; #define FLAGSYN 3 #define BADFLAG 4 static int badflag; -int getflags(int argc, char *argv[], char *flags, int stop) + +int +getflags(int argc, char *argv[], char *flags, int stop) { char *s, *t; int i, j, c, count; - flagarg=flags; - if(cmdname==0) cmdname=argv[0]; - s=cmdline; - for(i=0;i!=argc;i++){ - for(t=argv[i];*t;t++) + flagarg = flags; + if(cmdname==0) + cmdname = argv[0]; + s = cmdline; + for(i = 0;i!=argc;i++){ + for(t = argv[i];*t;t++) if(s!=&cmdline[NCMDLINE]) *s++=*t; if(i!=argc-1 && s!=&cmdline[NCMDLINE]) *s++=' '; } *s='\0'; - i=1; + i = 1; while(i!=argc){ if(argv[i][0]!='-' || argv[i][1]=='\0'){ - if(stop) return argc; + if(stop) + return argc; i++; continue; } - s=argv[i]+1; + s = argv[i]+1; while(*s){ c=*s++; - count=scanflag(c, flags); - if(count==-1) return -1; - if(flag[c]){ reason=RESET; badflag=c; return -1; } + count = scanflag(c, flags); + if(count==-1) + return -1; + if(flag[c]){ reason = RESET; badflag = c; return -1; } if(count==0){ - flag[c]=flagset; + flag[c] = flagset; if(*s=='\0'){ - for(j=i+1;j<=argc;j++) - argv[j-1]=argv[j]; + for(j = i+1;j<=argc;j++) + argv[j-1] = argv[j]; --argc; } } else{ if(*s=='\0'){ - for(j=i+1;j<=argc;j++) - argv[j-1]=argv[j]; + for(j = i+1;j<=argc;j++) + argv[j-1] = argv[j]; --argc; - s=argv[i]; + s = argv[i]; } if(argc-i