diff options
author | BurnZeZ <brz-9dev@feline.systems> | 2016-03-01 21:21:06 -0500 |
---|---|---|
committer | BurnZeZ <brz-9dev@feline.systems> | 2016-03-01 21:21:06 -0500 |
commit | 2a5b2f4c76fe85aa37d5d99adc13f6d1f1e313e3 (patch) | |
tree | 99bf0adb5d9f77bab053a38082f62afe6478b760 /sys/src/cmd/dict | |
parent | 33131a98b96729b5ac59a292867ddb710ed025ec (diff) |
dict mkindex: code cleanup
handle malloc failure
check if open failed _before_ seeking
better arg handling
Diffstat (limited to 'sys/src/cmd/dict')
-rw-r--r-- | sys/src/cmd/dict/mkindex.c | 36 | ||||
-rw-r--r-- | sys/src/cmd/dict/roget.c | 2 |
2 files changed, 22 insertions, 16 deletions
diff --git a/sys/src/cmd/dict/mkindex.c b/sys/src/cmd/dict/mkindex.c index 230247927..3ec1dac3f 100644 --- a/sys/src/cmd/dict/mkindex.c +++ b/sys/src/cmd/dict/mkindex.c @@ -23,6 +23,13 @@ Dict *dict; /* current dictionary */ Entry getentry(long); void +usage(void) +{ + fprint(2, "usage: %s [-D] [-d dictname]\n", argv0); + exits("usage"); +} + +void main(int argc, char **argv) { int i; @@ -34,16 +41,16 @@ main(int argc, char **argv) dict = &dicts[0]; ARGBEGIN { case 'd': - p = ARGF(); + p = EARGF(usage()); dict = 0; - if(p) { - for(i=0; dicts[i].name; i++) - if(strcmp(p, dicts[i].name)==0) { - dict = &dicts[i]; - break; - } + + for(i=0; dicts[i].name; i++) { + if(strcmp(p, dicts[i].name)==0) { + dict = &dicts[i]; + break; + } } - if(!dict) { + if(dict == nil) { err("unknown dictionary: %s", p); exits("nodict"); } @@ -51,14 +58,16 @@ main(int argc, char **argv) case 'D': debug++; break; - ARGEND } + default: + usage(); + }ARGEND USED(argc,argv); 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); @@ -91,11 +100,8 @@ getentry(long b) n = e-b; if(n) { if(n > anslen) { - ans.start = realloc(ans.start, n); - if(!ans.start) { - err("out of memory"); - exits("nomem"); - } + if((ans.start = realloc(ans.start, n)) == nil) + sysfatal("realloc: %r"); anslen = n; } Bseek(bdict, b, 0); diff --git a/sys/src/cmd/dict/roget.c b/sys/src/cmd/dict/roget.c index 36eee7e1c..dd25d7991 100644 --- a/sys/src/cmd/dict/roget.c +++ b/sys/src/cmd/dict/roget.c @@ -62,7 +62,7 @@ rogetprintentry(Entry e, int cmd) p += 4; spc = 0; } - + if (p < e.end -2 && strncmp(p, "[ ", 2) == 0){ /* twiddle layout */ outchars(" ["); continue; |