]> git.pond.sub.org Git - empserver/commitdiff
Make users of struct cmdstr agree on prototype of member c_addr.
authorMarkus Armbruster <armbru@pond.sub.org>
Wed, 18 Feb 2004 19:04:01 +0000 (19:04 +0000)
committerMarkus Armbruster <armbru@pond.sub.org>
Wed, 18 Feb 2004 19:04:01 +0000 (19:04 +0000)
(player_login): Use player->argp[] to store arguments.
(client_cmd, user_cmd, sanc_cmd, coun_cmd, pass_cmd, play_cmd,
kill_cmd, list_cmd, quit_cmd): Remove parameters, fetch arguments from
player->argp[].
(cmdstr): Prototype member c_addr.

(play_cmd): Used to silently ignore up to two arguments if there
wasn't a third one.  Don't.

include/com.h
src/lib/player/login.c

index 4c6ef1e17268b6a3e6d17f65bf75a196a9b81bd4..9631eb78688c84cb3ef3a60bf8511b132e4cceec 100644 (file)
@@ -37,7 +37,7 @@
 struct cmndstr {
     s_char *c_form;            /* prototype of command */
     int c_cost;                        /* btu cost of command */
-    int (*c_addr) ();          /* core addr of appropriate routine */
+    int (*c_addr)(void);       /* core addr of appropriate routine */
     int c_flags;
     int c_permit;              /* who is allowed to "do" this command */
 };
index 490f7ff635baae831443ff89879254915ed2e529..89783d685a6634be31ad70a0fe0803907fb4127c 100644 (file)
@@ -66,8 +66,7 @@ void
 player_login(void *ud)
 {
     s_char buf[128];
-    s_char space[512];
-    s_char *av[64];
+    s_char space[128];
     int ac;
     int cmd;
 
@@ -81,13 +80,13 @@ player_login(void *ud)
            io_input(player->iop, IO_WAIT);
            continue;
        }
-       ac = parse(buf, av, 0, space, 0);
-       cmd = comtch(av[0], login_coms, 0, 0);
+       ac = parse(buf, player->argp, NULL, space, NULL);
+       cmd = comtch(player->argp[0], login_coms, 0, 0);
        if (cmd < 0) {
-           pr_id(player, C_BADCMD, "Command %s not found\n", av[0]);
+           pr_id(player, C_BADCMD, "Command %s not found\n", player->argp[0]);
            continue;
        }
-       switch (login_coms[cmd].c_addr(player, ac, av)) {
+       switch (login_coms[cmd].c_addr()) {
        case RET_OK:
            break;
        case RET_FAIL:
@@ -113,17 +112,17 @@ player_login(void *ud)
 }
 
 static int
-client_cmd(struct player *player, int ac, char **av)
+client_cmd(void)
 {
     int i;
 
-    if (ac < 1 || av[1] == '\0')
+    if (!player->argp[1])
        return RET_SYN;
 
-    for (i = 1; i < ac; ++i) {
+    for (i = 1; player->argp[i]; ++i) {
        if (i > 1)
-           (void)strncat(player->client, " ", sizeof(player->client) - 1);
-       (void)strncat(player->client, av[i], sizeof(player->client) - 1);
+           strncat(player->client, " ", sizeof(player->client) - 1);
+       strncat(player->client, player->argp[i], sizeof(player->client) - 1);
     }
     player->client[sizeof(player->client) - 1] = '\0';
     pr_id(player, C_CMDOK, "talking to %s\n", player->client);
@@ -131,25 +130,25 @@ client_cmd(struct player *player, int ac, char **av)
 }
 
 static int
-user_cmd(struct player *player, int ac, char **av)
+user_cmd(void)
 {
-    if (ac < 1 || av[1] == '\0')
+    if (!player->argp[1])
        return RET_SYN;
-    (void)strncpy(player->userid, av[1], sizeof(player->userid) - 1);
+    strncpy(player->userid, player->argp[1], sizeof(player->userid) - 1);
     player->userid[sizeof(player->userid) - 1] = '\0';
     pr_id(player, C_CMDOK, "hello %s\n", player->userid);
     return RET_OK;
 }
 
 static int
-sanc_cmd(struct player *player, int ac, char **av)
+sanc_cmd(void)
 {
     struct nstr_item ni;
     struct natstr nat;
     int first = 1;
 
     if (!opt_BLITZ) {
-       pr_id(player, C_BADCMD, "Command %s not found\n", av[0]);
+       pr_id(player, C_BADCMD, "Command %s not found\n", player->argp[0]);
        return RET_FAIL;
     }
 
@@ -172,35 +171,35 @@ sanc_cmd(struct player *player, int ac, char **av)
 }
 
 static int
-coun_cmd(struct player *player, int ac, char **av)
+coun_cmd(void)
 {
     natid cnum;
 
-    if (ac < 1 || av[1] == '\0')
+    if (!player->argp[1])
        return RET_SYN;
-    if (natbyname(av[1], &cnum) < 0) {
-       pr_id(player, C_CMDERR, "country %s does not exist\n", av[1]);
+    if (natbyname(player->argp[1], &cnum) < 0) {
+       pr_id(player, C_CMDERR, "country %s does not exist\n", player->argp[1]);
        return 0;
     }
     player->cnum = cnum;
     player->validated = 0;
-    pr_id(player, C_CMDOK, "country name %s\n", av[1]);
+    pr_id(player, C_CMDOK, "country name %s\n", player->argp[1]);
     return 0;
 }
 
 static int
-pass_cmd(struct player *player, int ac, char **av)
+pass_cmd(void)
 {
-    if (ac < 1 || av[1] == '\0')
+    if (!player->argp[1])
        return RET_SYN;
     if (player->cnum == 255) {
        pr_id(player, C_CMDERR, "need country first\n");
        return RET_FAIL;
     }
-    if (!natpass(player->cnum, av[1])) {
+    if (!natpass(player->cnum, player->argp[1])) {
        pr_id(player, C_CMDERR, "password bad, logging entry\n");
        logerror("%s tried country #%d with %s",
-                praddr(player), player->cnum, av[1]);
+                praddr(player), player->cnum, player->argp[1]);
        return RET_FAIL;
     }
     player->validated++;
@@ -209,27 +208,32 @@ pass_cmd(struct player *player, int ac, char **av)
     return RET_OK;
 }
 
-/*ARGSUSED*/
 static int
-play_cmd(struct player *player, int ac, char **av)
+play_cmd(void)
 {
     extern char *banfil;
     struct player *other;
     natid cnum;
     struct natstr *natp;
+    char **ap;
 
-    if (ac == 4) {
-       (void)strncpy(player->userid, av[1], sizeof(player->userid) - 1);
+    ap = player->argp;
+    if (*++ap) {
+       strncpy(player->userid, *ap, sizeof(player->userid) - 1);
        player->userid[sizeof(player->userid) - 1] = '\0';
        player->validated = 0;
-       if (natbyname(av[2], &cnum) < 0) {
-           pr_id(player, C_CMDERR, "country %s does not exist\n", av[2]);
+    }
+    if (*++ap) {
+       if (natbyname(*ap, &cnum) < 0) {
+           pr_id(player, C_CMDERR, "country %s does not exist\n", *ap);
            return 0;
        }
-       if (!natpass(cnum, av[3])) {
+    }
+    if (*++ap) {
+       if (!natpass(cnum, *ap)) {
            pr_id(player, C_CMDERR, "password bad, logging entry\n");
            logerror("%s tried country #%d with %s",
-                    praddr(player), cnum, av[3]);
+                    praddr(player), cnum, *ap);
            return RET_FAIL;
        }
        player->cnum = cnum;
@@ -259,9 +263,8 @@ play_cmd(struct player *player, int ac, char **av)
     return RET_OK;
 }
 
-/*ARGSUSED*/
 static int
-kill_cmd(struct player *player, int ac, char **av)
+kill_cmd(void)
 {
     struct player *other;
 
@@ -279,9 +282,8 @@ kill_cmd(struct player *player, int ac, char **av)
     return RET_OK;
 }
 
-/*ARGSUSED*/
 static int
-list_cmd(struct player *player, int ac, char **av)
+list_cmd(void)
 {
     struct player *lp;
     int first = 1;
@@ -302,9 +304,8 @@ list_cmd(struct player *player, int ac, char **av)
     return 0;
 }
 
-/*ARGSUSED*/
 static int
-quit_cmd(struct player *player, int ac, char **av)
+quit_cmd(void)
 {
     pr_id(player, C_EXIT, "so long\n");
     io_shutdown(player->iop, IO_READ);