]> git.pond.sub.org Git - empserver/blobdiff - src/lib/gen/plur.c
Update copyright notice
[empserver] / src / lib / gen / plur.c
index ecb0e7135e6ed5c1825d6b5c7ec1e725105610ad..16970e82b7eae8d1ddf26573f873bc71ef06e10c 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *  Empire - A multi-player, client/server Internet based war game.
- *  Copyright (C) 1986-2005, Dave Pare, Jeff Bailey, Thomas Ruschak,
+ *  Copyright (C) 1986-2009, Dave Pare, Jeff Bailey, Thomas Ruschak,
  *                           Ken Stevens, Steve McClure
  *
  *  This program is free software; you can redistribute it and/or modify
  *
  *  ---
  *
- *  See the "LEGAL", "LICENSE", "CREDITS" and "README" files for all the
- *  related information and legal notices. It is expected that any future
- *  projects/authors will amend these files as needed.
+ *  See files README, COPYING and CREDITS in the root of the source
+ *  tree for related information and legal notices.  It is expected
+ *  that future projects/authors will amend these files as needed.
  *
  *  ---
  *
  *  plur.c: Pluralize (is that a word?) something
- * 
+ *
  *  Known contributors to this file:
- *     
+ *
  */
 
-#include "misc.h"
-#include "gen.h"
+#include <config.h>
 
-s_char *
-plur(int n, s_char *no, s_char *yes)
-{
-    return (n == 1 ? no : yes);
-}
+#include "prototypes.h"
 
-s_char *
+char *
 splur(int n)
 {
-    return (n == 1 ? "" : "s");
+    return n == 1 ? "" : "s";
 }
 
-s_char *
+char *
 esplur(int n)
 {
-    return (n == 1 ? "" : "es");
+    return n == 1 ? "" : "es";
 }
 
-s_char *
+char *
 iesplur(int n)
 {
-    return (n == 1 ? "y" : "ies");
+    return n == 1 ? "y" : "ies";
+}
+
+/*
+ * Change suffix of BUF to English plural if N > 1.
+ * Best effort, not 100% accurate English.
+ * Array BUF[SIZE] contains a zero-terminated string.
+ * If there's not enough space for changed suffix, it is truncated.
+ */
+char *
+plurize(char *buf, int size, int n)
+{
+    size_t len = strlen(buf);
+
+    if (!len || n <= 1)
+       return buf;
+
+    switch (buf[len - 1]) {
+    case 'y':
+       buf[len - 1] = '\0';
+       strncat(buf, "ies", size - len);
+       break;
+    case 's':
+       strncat(buf, "es", size - len - 1);
+       break;
+    default:
+       strncat(buf, "s", size - len - 1);
+    }
+    return buf;
 }