EARGF and other trivial fixes Reference: /n/sources/patch/maybe/dictc Date: Mon Jan 5 15:44:35 CET 2009 Signed-off-by: quanstro@quanstro.net --- /sys/src/cmd/dict/mkindex.c Mon Jan 5 15:44:16 2009 +++ /sys/src/cmd/dict/mkindex.c Mon Jan 5 15:44:15 2009 @@ -23,6 +23,13 @@ Entry getentry(long); void +usage(void) +{ + fprint(2, "usage: mkindex [-D] [-d dictname]\n"); + exits("usage"); +} + +void main(int argc, char **argv) { int i; @@ -32,33 +39,30 @@ Binit(&boutbuf, 1, OWRITE); dict = &dicts[0]; - ARGBEGIN { - case 'd': - p = ARGF(); - dict = 0; - if(p) { - for(i=0; dicts[i].name; i++) - if(strcmp(p, dicts[i].name)==0) { - dict = &dicts[i]; - break; - } - } - if(!dict) { - err("unknown dictionary: %s", p); - exits("nodict"); + ARGBEGIN{ + case 'd': + dict = 0; + p = EARGF(usage()); + for(i=0; dicts[i].name; i++) + if(strcmp(p, dicts[i].name)==0) { + dict = &dicts[i]; + break; } - break; - case 'D': - debug++; - break; - ARGEND } - USED(argc,argv); + if(!dict) { + err("unknown dictionary: %s", p); + exits("nodict"); + } + break; + case 'D': + debug++; + break; + }ARGEND bdict = Bopen(dict->path, OREAD); - ae = Bseek(bdict, 0, 2); if(!bdict) { err("can't open dictionary %s", dict->path); exits("nodict"); } + ae = Bseek(bdict, 0, 2); for(a = 0; a < ae; a = (*dict->nextoff)(a+1)) { linelen = 0; e = getentry(a); @@ -92,10 +96,8 @@ if(n) { if(n > anslen) { ans.start = realloc(ans.start, n); - if(!ans.start) { - err("out of memory"); - exits("nomem"); - } + if(!ans.start) + sysfatal("realloc: %r"); anslen = n; } Bseek(bdict, b, 0); --- /sys/src/cmd/dict/dict.c Mon Jan 5 15:44:22 2009 +++ /sys/src/cmd/dict/dict.c Mon Jan 5 15:44:20 2009 @@ -72,34 +72,30 @@ break; } } - ARGBEGIN { - case 'd': - p = ARGF(); - dict = 0; - if(p) { - for(i=0; dicts[i].name; i++) - if(strcmp(p, dicts[i].name)==0) { - dict = &dicts[i]; - break; - } + ARGBEGIN{ + case 'd': + dict = 0; + p = EARGF(usage()); + for(i=0; dicts[i].name; i++) + if(strcmp(p, dicts[i].name)==0) { + dict = &dicts[i]; + break; } - if(!dict) - usage(); - break; - case 'c': - line = ARGF(); - if(!line) - usage(); - break; - case 'k': - kflag++; - break; - case 'D': - debug++; - break; - default: + if(!dict) usage(); - ARGEND } + break; + case 'c': + line = EARGF(usage()); + break; + case 'k': + kflag++; + break; + case 'D': + debug++; + break; + default: + usage(); + }ARGEND if(dict == 0){ err("no dictionaries present on this system"); exits("nodict"); @@ -390,10 +386,8 @@ n = 2*dot->maxn; dot = realloc(dot, sizeof(Addr)+(n-1)*sizeof(long)); - if(!dot) { - err("out of memory"); - exits("nomem"); - } + if(!dot) + sysfatal("realloc: %r"); dot->maxn = n; } dot->doff[dot->n++] = v; @@ -609,10 +603,8 @@ n = e-b; if(n+1 > anslen) { ans.start = realloc(ans.start, n+1); - if(!ans.start) { - err("out of memory"); - exits("nomem"); - } + if(!ans.start) + sysfatal("realloc: %r"); anslen = n+1; } Bseek(bdict, b, 0); --- /sys/src/cmd/dict/robert.c Mon Jan 5 15:44:29 2009 +++ /sys/src/cmd/dict/robert.c Mon Jan 5 15:44:27 2009 @@ -106,6 +106,8 @@ if(db == 0) db = Bouvrir(dfile); def.start = malloc(dl+1); + if(def.start == nil) + sysfatal("malloc: %r"); def.end = def.start + dl; def.doff = da; Bseek(db, da, 0); @@ -117,6 +119,8 @@ if(eb == 0) eb = Bouvrir(efile); etym.start = malloc(el+1); + if(etym.start == nil) + sysfatal("malloc: %r"); etym.end = etym.start + el; etym.doff = ea; Bseek(eb, ea, 0);