add autoindent (-a) and chording.

clean up argument parsing.
This commit is contained in:
rsc 2005-01-27 06:10:35 +00:00
parent 4ac5f249ad
commit 17ab31aac6
8 changed files with 113 additions and 74 deletions

View file

@ -42,58 +42,40 @@ main(int volatile argc, char **volatile argv)
{
int volatile i;
String *t;
char **ap, **arg;
char *termargs[10], **ap;
ap = termargs;
*ap++ = "samterm";
ARGBEGIN{
case 'd':
dflag++;
break;
case 'r':
machine = EARGF(usage());
break;
case 'R':
Rflag++;
break;
case 't':
samterm = EARGF(usage());
break;
case 's':
rsamname = EARGF(usage());
break;
default:
dprint("sam: unknown flag %c\n", ARGC());
usage();
/* options for samterm */
case 'a':
*ap++ = "-a";
break;
case 'W':
*ap++ = "-W";
*ap++ = EARGF(usage());
break;
}ARGEND
*ap = nil;
arg = argv++;
ap = argv;
while(argc>1 && argv[0] && argv[0][0]=='-'){
switch(argv[0][1]){
case 'd':
dflag++;
break;
case 'r':
--argc, argv++;
if(argc == 1)
usage();
machine = *argv;
break;
case 'R':
Rflag++;
break;
case 't':
--argc, argv++;
if(argc == 1)
usage();
samterm = *argv;
break;
case 's':
--argc, argv++;
if(argc == 1)
usage();
rsamname = *argv;
break;
case 'x': /* x11 option - strip the x */
strcpy(*argv+1, *argv+2);
*ap++ = *argv++;
*ap++ = *argv;
argc--;
break;
case 'W':
--argc, argv++;
break;
default:
dprint("sam: unknown flag %c\n", argv[0][1]);
exits("usage");
}
--argc, argv++;
}
Strinit(&cmdstr);
Strinit0(&lastpat);
Strinit0(&lastregexp);
@ -106,12 +88,13 @@ main(int volatile argc, char **volatile argv)
disk = diskinit();
if(home == 0)
home = "/";
fprint(2, "argc %d argv %s\n", argc, *argv);
if(!dflag)
startup(machine, Rflag, arg, ap, argv);
startup(machine, Rflag, termargs, argv);
notify(notifyf);
getcurwd();
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');