]> git.pond.sub.org Git - empserver/commitdiff
(budg): Create the capital/city name from the d_name field instead of
authorRon Koenderink <rkoenderink@yahoo.ca>
Sun, 13 Nov 2005 21:23:44 +0000 (21:23 +0000)
committerRon Koenderink <rkoenderink@yahoo.ca>
Sun, 13 Nov 2005 21:23:44 +0000 (21:23 +0000)
hard coding the strings.

(plurize): New.

include/misc.h
src/lib/commands/budg.c
src/lib/gen/plur.c

index d29738a72706de893e25f36a792e45aa30550725..4a2ffb4d27b49cce3c85c2a44756f91223c53596 100644 (file)
@@ -139,6 +139,7 @@ extern s_char *numstr(s_char buf[], int n);
 extern s_char *esplur(int n);
 extern s_char *splur(int n);
 extern s_char *iesplur(int n);
+extern char *plurize(char *buf, int max_len, int n);
 extern char *getstarg(char *input, char *prompt, char buf[]);
 extern char *getstring(char *prompt, char buf[]);
 extern char *ugetstring(char *prompt, char buf[]);
index 406bb34fd3c34352638acc6fc47ac1ac9e2ee459..d4d0bdc911ef636365750ec7219f50da774d5064 100644 (file)
@@ -181,13 +181,13 @@ budg(void)
        expenses -= mil;
     }
     if (p_sect[SCT_CAPIT][0]) {
+       sprintf(in, "%s maintenance\t\t", dchr[SCT_CAPIT].d_name);
+       in[0] = toupper(in[0]);
+       pr(in);
        n = p_sect[SCT_CAPIT][0];
-       sprintf(in, "%d %s%s",
-               n,
-               opt_BIG_CITY ? "cit" : "capital",
-               opt_BIG_CITY ? iesplur(n) : splur(n));
-       pr("%s maintenance\t\t%-32s%8ld\n",
-          opt_BIG_CITY ? "City" : "Capital", in, p_sect[SCT_CAPIT][1]);
+       sprintf(in, "%d %s", n, dchr[SCT_CAPIT].d_name);
+       plurize(in, sizeof(in), n);
+       pr("%-32s%8ld\n", in, p_sect[SCT_CAPIT][1]);
        expenses += p_sect[SCT_CAPIT][1];
     }
     pr("Total expenses%s\n", dotsprintf(buf, "%58d", expenses));
index ffc8049361f72bbac28981aa15732f4e00f8e612..76a6703d4fd44c4dbbf6d5871da72f9f65f38d79 100644 (file)
@@ -51,3 +51,29 @@ iesplur(int n)
 {
     return n == 1 ? "y" : "ies";
 }
+
+/*
+ * Change suffix of BUF to English plural if N > 1.
+ * Best effort, not 100% accurate English.
+ * Array BUF[MAX_LEN] contains a zero-terminated string.
+ * If there's not enough space for changed suffix, it is truncated.
+ */
+char *
+plurize(char *buf, int max_len, int n)
+{
+    if (!strlen(buf) || n <= 1)
+       return buf;
+
+    switch(buf[strlen(buf) - 1]) {
+    case 'y':
+       buf[strlen(buf) -1] = '\0';
+       strncat(buf, "ies", max_len - 1);
+       break;
+    case 's':
+       strncat(buf, "es", max_len - 1);
+       break;
+    default:
+       strncat(buf, "s", max_len - 1);
+    }
+    return buf;
+}