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)