@@ -145,9 +145,8 @@ /* fuck your buffering, it only ever makes * things worse */ setvbuf(stdout,null,_IONBF); # endif - word rv; enum { set_in, set_out, _set_sz } curset = set_in; word base[_set_sz] = { 10, 0 }; @@ -154,9 +153,8 @@ const char* in_vals[argc]; *in_vals = null; /* null-terminated! */ const char** invalp = in_vals; const char* pfxstr; forposix(size_t pfxstrlen); - bool raw = false; bool prefix = false; bool lowercase = false; @@ -239,8 +237,9 @@ word val; bad e = atoi(base[set_in], *s, &val); if (e == ok) { bad e = itoa(base[set_out], val, buf, ptr, &ptr, lowercase); + if (e != ok) return e; if (prefix) { if (pfxstr != null) { print(pfxstrlen, pfxstr); } else if (base[set_out] < sz(prefixes)) { @@ -254,8 +253,9 @@ } else { return e; } } + return ok; } void usage(const char* name) { # ifdef _POSIX_IO @@ -339,10 +339,11 @@ if (argc == 1) usage(argv[0]); bad e = run(argc, argv); switch (e) { case ok: return 0; + case fail: return -1; # define e(kind, desc) case bad_##kind:\ - say("\x1b[31;1merror:\x1b[m "); say(desc "\n"); break; + say("\x1b[31;1merror:\x1b[m "); say(desc "\n"); return e; error_list # undef e } }