Permit no-op country name change again
authorMarkus Armbruster <armbru@pond.sub.org>
Sun, 30 Oct 2011 14:43:56 +0000 (15:43 +0100)
committerMarkus Armbruster <armbru@pond.sub.org>
Thu, 29 Dec 2011 10:47:05 +0000 (11:47 +0100)
Commit aa5861d1 (v4.3.20) made add, edit and change reject a country
name that is already in use.  Even if it's used by the same country.
Relax that.

include/nat.h
src/lib/commands/add.c
src/lib/commands/chan.c
src/lib/commands/edit.c
src/lib/subs/natsub.c

index eb08613910a9b31a4dd8b266e62ec9d0dabb5b4f..baf935ce73078739d33cc1de820bac12dac38638 100644 (file)
@@ -180,7 +180,7 @@ extern int influx(struct natstr *np);
 
 extern struct natstr *nat_reset(struct natstr *, enum nat_status,
                                coord, coord);
-extern int check_nat_name(char *cname);
+extern int check_nat_name(char *, natid);
 
 extern int grant_btus(struct natstr *, int);
 
index ea7f6eb401053ae7458a92d29fbf88f4d02fe1f9..894dec419d5c2f4b8060ecf9916f56a7caf933e1 100644 (file)
@@ -28,6 +28,7 @@
  *
  *  Known contributors to this file:
  *     Steve McClure, 2000
+ *     Markus Armbruster, 2004-2011
  */
 
 #include <config.h>
@@ -84,7 +85,7 @@ add(void)
     p = getstarg(player->argp[2], "Country name? ", buf);
     if (!p)
        return RET_SYN;
-    if (!check_nat_name(p))
+    if (!check_nat_name(p, coun))
        return RET_FAIL;
     strcpy(cntryname, p);
     p = getstarg(player->argp[3], "Representative? ", buf);
index 40e8ad1d90e1c9005f0269976a03b43245ae74ae..2f59d2fdd11a2fa744bfbcd3e60209d6c6ffac57 100644 (file)
@@ -77,7 +77,7 @@ chan(void)
        p = getstarg(player->argp[2], "New country name -- ", buf);
        if (!p)
            return RET_SYN;
-       if (!check_nat_name(p))
+       if (!check_nat_name(p, player->cnum))
            return RET_FAIL;
        player->dolcost += charge;
        player->btused += btucost;
index e4b051b7abd7b0c4d9987f7fec3ef32c191fca3d..39ce56718246eaf97892797c2bfba3b94126ce22 100644 (file)
@@ -31,7 +31,7 @@
  *     Chad Zabel, 1994
  *     Steve McClure, 1998-2000
  *     Ron Koenderink, 2003-2009
- *     Markus Armbruster, 2003-2010
+ *     Markus Armbruster, 2003-2011
  */
 
 #include <config.h>
@@ -657,7 +657,7 @@ docountry(char op, int arg, char *p, struct natstr *np)
 
     switch (op) {
     case 'n':
-       if (!check_nat_name(p))
+       if (!check_nat_name(p, nat))
            return RET_SYN;
        pr("Country name changed from %s to %s\n", np->nat_cnam, p);
        strcpy(np->nat_cnam, p);
index 17da9c8fa3c0f83bf405e530e355f9150f6c5f2d..d5777f202944704e8c5040f591e39cc24661362c 100644 (file)
@@ -27,7 +27,7 @@
  *  nat.c: Nation subroutines
  *
  *  Known contributors to this file:
- *     Markus Armbruster, 2009
+ *     Markus Armbruster, 2009-2011
  *     Ron Koenderink, 2008-2009
  */
 
@@ -117,7 +117,7 @@ nat_reset(struct natstr *natp, enum nat_status stat, coord x, coord y)
 }
 
 int
-check_nat_name(char *cname)
+check_nat_name(char *cname, natid cnum)
 {
     struct natstr *natp;
     natid cn;
@@ -143,7 +143,7 @@ check_nat_name(char *cname)
     }
 
     for (cn = 0; NULL != (natp = getnatp(cn)); cn++) {
-       if (!strcmp(cname, natp->nat_cnam)) {
+       if (cn != cnum && !strcmp(cname, natp->nat_cnam)) {
            pr("Country #%d is already called `%s'\n", cn, cname);
            return 0;
        }