patch attached
-- Aaron Denney -><-
--- number.c.orig 2008-03-19 17:16:49.000000000 -0600 +++ number.c 2008-03-19 17:55:58.000000000 -0600 @@ -79,7 +79,7 @@ void convert(char *); int main(int, char *[]); int number(const char *, int); -void pfract(int); +void pfract(int, int); int unit(int, const char *); void usage(void) __attribute__((__noreturn__)); @@ -131,7 +131,7 @@ convert(line) char *line; { - int flen, len, rval; + int flen, len, rval, singular; char *p, *fraction; flen = 0; @@ -183,9 +183,10 @@ lflag ? " " : "", lflag ? " " : "\n"); if (unit(flen, fraction)) { + singular = (flen == 1 && *fraction == '1'); if (lflag) (void)printf(" "); - pfract(flen); + pfract(flen, singular); rval = 1; } break; @@ -273,22 +274,27 @@ } void -pfract(len) +pfract(len, singular) int len; + int singular; { static const char *const pref[] = { "", "ten-", "hundred-" }; switch(len) { case 1: - (void)printf("tenths.\n"); + (void)printf("tenth"); break; case 2: - (void)printf("hundredths.\n"); + (void)printf("hundredth"); break; default: - (void)printf("%s%sths.\n", pref[len % 3], name3[len / 3]); + (void)printf("%s%sth", pref[len % 3], name3[len / 3]); break; } + if (!singular) { + printf("s"); + } + printf(".\n"); } void