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

Reply via email to