shithub: choc

Download patch

ref: ea6d1a5fc8f0d2745e048bf04ffdcd226dffb8d7
parent: 5037bbfa38f1946e465f9d4d0823e2aaa4229b35
author: Jonathan Dowland <jon@dow.land>
date: Thu Feb 28 17:04:41 EST 2019

Address review comments (Thanks Fraggle!)

 • use arrlen for calculating static array lengths
 • use M_StringJoin instead of string.h stuff
 • rename files and functions to match convention
 • rand()/srand() are ANSI C, not random()/srandom()
 • en_US spelling

--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -75,11 +75,11 @@
     net_io.c            net_io.h
     net_loop.c          net_loop.h
     net_packet.c        net_packet.h
+    net_petname.c       net_petname.h
     net_query.c         net_query.h
     net_sdl.c           net_sdl.h
     net_server.c        net_server.h
     net_structrw.c      net_structrw.h
-    petname.c           petname.h
     sha1.c              sha1.h
     memio.c             memio.h
     tables.c            tables.h
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -41,11 +41,11 @@
 net_dedicated.c      net_dedicated.h       \
 net_io.c             net_io.h              \
 net_packet.c         net_packet.h          \
+net_petname.c        net_petname.h         \
 net_sdl.c            net_sdl.h             \
 net_query.c          net_query.h           \
 net_server.c         net_server.h          \
 net_structrw.c       net_structrw.h        \
-petname.c            petname.h             \
 z_native.c           z_zone.h
 
 @PROGRAM_PREFIX@server_SOURCES=$(COMMON_SOURCE_FILES) $(DEDSERV_FILES)
@@ -95,11 +95,11 @@
 net_io.c             net_io.h              \
 net_loop.c           net_loop.h            \
 net_packet.c         net_packet.h          \
+net_petname.c        net_petname.h         \
 net_query.c          net_query.h           \
 net_sdl.c            net_sdl.h             \
 net_server.c         net_server.h          \
 net_structrw.c       net_structrw.h        \
-petname.c            petname.h             \
 sha1.c               sha1.h                \
 memio.c              memio.h               \
 tables.c             tables.h              \
@@ -197,10 +197,10 @@
 m_controls.c         m_controls.h          \
 net_io.c             net_io.h              \
 net_packet.c         net_packet.h          \
+net_petname.c        net_petname.h         \
 net_sdl.c            net_sdl.h             \
 net_query.c          net_query.h           \
 net_structrw.c       net_structrw.h        \
-petname.c            petname.h             \
 z_native.c           z_zone.h
 
 if HAVE_WINDRES
--- a/src/net_client.c
+++ b/src/net_client.c
@@ -38,7 +38,7 @@
 #include "net_query.h"
 #include "net_server.h"
 #include "net_structrw.h"
-#include "petname.h"
+#include "net_petname.h"
 #include "w_checksum.h"
 #include "w_wad.h"
 
@@ -1214,7 +1214,7 @@
 
     if (net_player_name == NULL)
     {
-        net_player_name = getRandomPetName();
+        net_player_name = NET_GetRandomPetName();
     }
 
     if (net_player_name == NULL)
--- /dev/null
+++ b/src/net_petname.c
@@ -1,0 +1,120 @@
+//
+// Copyright(C) 2019 Jonathan Dowland
+//
+// This program is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// DESCRIPTION:
+//     Generate a randomized, private, memorable name for a Player
+//
+
+#include <stdlib.h>
+#include <time.h>
+#include <string.h>
+#include "doomtype.h"
+#include "m_misc.h"
+
+static char *adjectives[] = {
+    "Grumpy",
+    "Ecstatic",
+    "Surly",
+    "Prepared",
+    "Crafty",
+    "Alert",
+    "Sluggish",
+    "Testy",
+    "Reluctant",
+    "Languid",
+    "Passive",
+    "Pacifist",
+    "Aggressive",
+    "Hostile",
+    "Diseased",
+    "Bubbly",
+    "Giggly",
+    "Laughing",
+    "Crying",
+    "Frowning",
+    "Flatulent",
+    "Torpid",
+    "Lethargic",
+    "Manic",
+    "Patient",
+    "Protective",
+    "Philosophical",
+    "Enquiring",
+    "Debating",
+    "Furious",
+    "Laid-Back",
+    "Easy-Going",
+    "Cromulent",
+    "Excitable",
+    "Tired",
+    "Exhausted",
+    "Ruminating",
+    "Redundant",
+    "Sporty",
+    "Ginger",
+    "Scary",
+    "Posh",
+    "Baby",
+};
+
+static char *nouns[] = {
+    // Doom
+    "Cacodemon",
+    "Arch-Vile",
+    "Cyberdemon",
+    "Imp",
+    "Demon",
+    "Mancubus",
+    "Arachnotron",
+    "Baron",
+    "Knight",
+    "Revenant",
+    // Hexen
+    "Ettin",
+    "Maulotaur",
+    "Centaur",
+    "Afrit",
+    "Serpent",
+    // Heretic
+    "Disciple",
+    "Gargoyle",
+    "Golem",
+    "Lich",
+    // Strife
+    "Sentinel",
+    "Acolyte",
+    "Templar",
+    "Reaver",
+    "Crusader",
+};
+
+/*
+ * ideally we would export this and the caller would invoke it during
+ * their setup routine. But, the two callers only invoke getRandomPetName
+ * once, so the initialization might as well occur then.
+ */
+static void InitPetName()
+{
+    srand((unsigned int)time(NULL));
+}
+
+char *NET_GetRandomPetName()
+{
+    char *a, *n;
+
+    InitPetName();
+    a = adjectives[rand() % arrlen(adjectives)];
+    n = nouns[rand() % arrlen(nouns)];
+
+    return M_StringJoin(a, " ", n, NULL);
+}
--- /dev/null
+++ b/src/net_petname.h
@@ -1,0 +1,18 @@
+//
+// Copyright(C) 2019 Jonathan Dowland
+//
+// This program is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// DESCRIPTION:
+//     Generate a randomized, private, memorable name for a Player
+//
+
+char *NET_GetRandomPetName();
--- a/src/petname.c
+++ /dev/null
@@ -1,130 +1,0 @@
-//
-// Copyright(C) 2019 Jonathan Dowland
-//
-// This program is free software; you can redistribute it and/or
-// modify it under the terms of the GNU General Public License
-// as published by the Free Software Foundation; either version 2
-// of the License, or (at your option) any later version.
-//
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-// GNU General Public License for more details.
-//
-// DESCRIPTION:
-//     Generate a randomized, private, memorable name for a Player
-//
-
-#include <stdlib.h>
-#include <time.h>
-#include <string.h>
-
-static char *adjectives[] = {
-    "Grumpy",
-    "Ecstatic",
-    "Surly",
-    "Prepared",
-    "Crafty",
-    "Alert",
-    "Sluggish",
-    "Testy",
-    "Reluctant",
-    "Languid",
-    "Passive",
-    "Pacifist",
-    "Aggressive",
-    "Hostile",
-    "Diseased",
-    "Bubbly",
-    "Giggly",
-    "Laughing",
-    "Crying",
-    "Frowning",
-    "Flatulent",
-    "Torpid",
-    "Lethargic",
-    "Manic",
-    "Patient",
-    "Protective",
-    "Philosophical",
-    "Enquiring",
-    "Debating",
-    "Furious",
-    "Laid-Back",
-    "Easy-Going",
-    "Cromulent",
-    "Excitable",
-    "Tired",
-    "Exhausted",
-    "Ruminating",
-    "Redundant",
-    "Sporty",
-    "Ginger",
-    "Scary",
-    "Posh",
-    "Baby",
-};
-#define NUM_ADJECTIVES (sizeof adjectives / sizeof (char *))
-
-
-static char *nouns[] = {
-    // Doom
-    "Cacodemon",
-    "Arch-Vile",
-    "Cyberdemon",
-    "Imp",
-    "Demon",
-    "Mancubus",
-    "Arachnotron",
-    "Baron",
-    "Knight",
-    "Revenant",
-    // Hexen
-    "Ettin",
-    "Maulotaur",
-    "Centaur",
-    "Afrit",
-    "Serpent",
-    // Heretic
-    "Disciple",
-    "Gargoyle",
-    "Golem",
-    "Lich",
-    // Strife
-    "Sentinel",
-    "Acolyte",
-    "Templar",
-    "Reaver",
-    "Crusader",
-};
-#define NUM_NOUNS (sizeof nouns / sizeof (char *))
-
-/*
- * ideally we would export this and the caller would invoke it during
- * their setup routine. But, the two callers only invoke getRandomPetName
- * once, so the initialisation might as well occur then.
- */
-static void initPetName()
-{
-    srandom((unsigned int)time(NULL));
-}
-
-char *getRandomPetName()
-{
-    char *a, *n, *r;
-
-    initPetName();
-
-    a = adjectives[random() % NUM_ADJECTIVES];
-    n = nouns[random() % NUM_NOUNS];
-    r = (char *)malloc(strlen(a) + (sizeof ' ') +
-                       strlen(n) + (sizeof '\0'));
-    if(r)
-    {
-        strcpy(r,a);
-        r[strlen(a)] = ' ';
-        strcpy(r + strlen(a) + 1, n);
-    }
-
-    return r;
-}
--- a/src/petname.h
+++ /dev/null
@@ -1,18 +1,0 @@
-//
-// Copyright(C) 2019 Jonathan Dowland
-//
-// This program is free software; you can redistribute it and/or
-// modify it under the terms of the GNU General Public License
-// as published by the Free Software Foundation; either version 2
-// of the License, or (at your option) any later version.
-//
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-// GNU General Public License for more details.
-//
-// DESCRIPTION:
-//     Generate a randomized, private, memorable name for a Player
-//
-
-char *getRandomPetName();
--- a/src/setup/multiplayer.c
+++ b/src/setup/multiplayer.c
@@ -33,7 +33,7 @@
 #include "net_io.h"
 #include "net_query.h"
 
-#include "petname.h"
+#include "net_petname.h"
 
 #define MULTI_START_HELP_URL "https://www.chocolate-doom.org/setup-multi-start"
 #define MULTI_JOIN_HELP_URL "https://www.chocolate-doom.org/setup-multi-join"
@@ -1098,7 +1098,7 @@
 {
     if (net_player_name == NULL)
     {
-        net_player_name = getRandomPetName();
+        net_player_name = NET_GetRandomPetName();
     }
 
     if (net_player_name == NULL)