]> diplodocus.org Git - nmh/commitdiff
Handle teen ordinal suffixes correctly.
authorKen Hornstein <kenh@pobox.com>
Mon, 8 Jul 2019 15:37:15 +0000 (11:37 -0400)
committerKen Hornstein <kenh@pobox.com>
Mon, 8 Jul 2019 15:37:15 +0000 (11:37 -0400)
sbr/fmt_scan.c

index 436b1ec..c5e9877 100644 (file)
@@ -579,20 +579,25 @@ fmt_scan (struct format *format, charstring_t scanlp, int width, int *dat,
        case FT_LS_ORDINAL:
            {
                int digit = value % 10;
        case FT_LS_ORDINAL:
            {
                int digit = value % 10;
+               int seconddigit = (value / 10) % 10;
                const char *suffix;
 
                const char *suffix;
 
-               switch (digit) {
-               case 1:
-                   suffix = "st";
-                   break;
-               case 2:
-                   suffix = "nd";
-                   break;
-               case 3:
-                   suffix = "rd";
-                   break;
-               default:
+               if (seconddigit == 1) {
                    suffix = "th";
                    suffix = "th";
+               } else {
+                   switch (digit) {
+                   case 1:
+                       suffix = "st";
+                       break;
+                   case 2:
+                       suffix = "nd";
+                       break;
+                   case 3:
+                       suffix = "rd";
+                       break;
+                   default:
+                       suffix = "th";
+                   }
                }
 
                strncpy(buffer, suffix, sizeof(buffer));
                }
 
                strncpy(buffer, suffix, sizeof(buffer));