Make users of struct cmdstr agree on prototype of member c_addr.
(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.
This commit is contained in:
parent
7aafe31f70
commit
d2244b6c24
2 changed files with 41 additions and 40 deletions
|
@ -37,7 +37,7 @@
|
||||||
struct cmndstr {
|
struct cmndstr {
|
||||||
s_char *c_form; /* prototype of command */
|
s_char *c_form; /* prototype of command */
|
||||||
int c_cost; /* btu cost 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_flags;
|
||||||
int c_permit; /* who is allowed to "do" this command */
|
int c_permit; /* who is allowed to "do" this command */
|
||||||
};
|
};
|
||||||
|
|
|
@ -66,8 +66,7 @@ void
|
||||||
player_login(void *ud)
|
player_login(void *ud)
|
||||||
{
|
{
|
||||||
s_char buf[128];
|
s_char buf[128];
|
||||||
s_char space[512];
|
s_char space[128];
|
||||||
s_char *av[64];
|
|
||||||
int ac;
|
int ac;
|
||||||
int cmd;
|
int cmd;
|
||||||
|
|
||||||
|
@ -81,13 +80,13 @@ player_login(void *ud)
|
||||||
io_input(player->iop, IO_WAIT);
|
io_input(player->iop, IO_WAIT);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
ac = parse(buf, av, 0, space, 0);
|
ac = parse(buf, player->argp, NULL, space, NULL);
|
||||||
cmd = comtch(av[0], login_coms, 0, 0);
|
cmd = comtch(player->argp[0], login_coms, 0, 0);
|
||||||
if (cmd < 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;
|
continue;
|
||||||
}
|
}
|
||||||
switch (login_coms[cmd].c_addr(player, ac, av)) {
|
switch (login_coms[cmd].c_addr()) {
|
||||||
case RET_OK:
|
case RET_OK:
|
||||||
break;
|
break;
|
||||||
case RET_FAIL:
|
case RET_FAIL:
|
||||||
|
@ -113,17 +112,17 @@ player_login(void *ud)
|
||||||
}
|
}
|
||||||
|
|
||||||
static int
|
static int
|
||||||
client_cmd(struct player *player, int ac, char **av)
|
client_cmd(void)
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
if (ac < 1 || av[1] == '\0')
|
if (!player->argp[1])
|
||||||
return RET_SYN;
|
return RET_SYN;
|
||||||
|
|
||||||
for (i = 1; i < ac; ++i) {
|
for (i = 1; player->argp[i]; ++i) {
|
||||||
if (i > 1)
|
if (i > 1)
|
||||||
(void)strncat(player->client, " ", sizeof(player->client) - 1);
|
strncat(player->client, " ", sizeof(player->client) - 1);
|
||||||
(void)strncat(player->client, av[i], sizeof(player->client) - 1);
|
strncat(player->client, player->argp[i], sizeof(player->client) - 1);
|
||||||
}
|
}
|
||||||
player->client[sizeof(player->client) - 1] = '\0';
|
player->client[sizeof(player->client) - 1] = '\0';
|
||||||
pr_id(player, C_CMDOK, "talking to %s\n", player->client);
|
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
|
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;
|
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';
|
player->userid[sizeof(player->userid) - 1] = '\0';
|
||||||
pr_id(player, C_CMDOK, "hello %s\n", player->userid);
|
pr_id(player, C_CMDOK, "hello %s\n", player->userid);
|
||||||
return RET_OK;
|
return RET_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int
|
static int
|
||||||
sanc_cmd(struct player *player, int ac, char **av)
|
sanc_cmd(void)
|
||||||
{
|
{
|
||||||
struct nstr_item ni;
|
struct nstr_item ni;
|
||||||
struct natstr nat;
|
struct natstr nat;
|
||||||
int first = 1;
|
int first = 1;
|
||||||
|
|
||||||
if (!opt_BLITZ) {
|
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;
|
return RET_FAIL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -172,35 +171,35 @@ sanc_cmd(struct player *player, int ac, char **av)
|
||||||
}
|
}
|
||||||
|
|
||||||
static int
|
static int
|
||||||
coun_cmd(struct player *player, int ac, char **av)
|
coun_cmd(void)
|
||||||
{
|
{
|
||||||
natid cnum;
|
natid cnum;
|
||||||
|
|
||||||
if (ac < 1 || av[1] == '\0')
|
if (!player->argp[1])
|
||||||
return RET_SYN;
|
return RET_SYN;
|
||||||
if (natbyname(av[1], &cnum) < 0) {
|
if (natbyname(player->argp[1], &cnum) < 0) {
|
||||||
pr_id(player, C_CMDERR, "country %s does not exist\n", av[1]);
|
pr_id(player, C_CMDERR, "country %s does not exist\n", player->argp[1]);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
player->cnum = cnum;
|
player->cnum = cnum;
|
||||||
player->validated = 0;
|
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;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int
|
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;
|
return RET_SYN;
|
||||||
if (player->cnum == 255) {
|
if (player->cnum == 255) {
|
||||||
pr_id(player, C_CMDERR, "need country first\n");
|
pr_id(player, C_CMDERR, "need country first\n");
|
||||||
return RET_FAIL;
|
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");
|
pr_id(player, C_CMDERR, "password bad, logging entry\n");
|
||||||
logerror("%s tried country #%d with %s",
|
logerror("%s tried country #%d with %s",
|
||||||
praddr(player), player->cnum, av[1]);
|
praddr(player), player->cnum, player->argp[1]);
|
||||||
return RET_FAIL;
|
return RET_FAIL;
|
||||||
}
|
}
|
||||||
player->validated++;
|
player->validated++;
|
||||||
|
@ -209,27 +208,32 @@ pass_cmd(struct player *player, int ac, char **av)
|
||||||
return RET_OK;
|
return RET_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*ARGSUSED*/
|
|
||||||
static int
|
static int
|
||||||
play_cmd(struct player *player, int ac, char **av)
|
play_cmd(void)
|
||||||
{
|
{
|
||||||
extern char *banfil;
|
extern char *banfil;
|
||||||
struct player *other;
|
struct player *other;
|
||||||
natid cnum;
|
natid cnum;
|
||||||
struct natstr *natp;
|
struct natstr *natp;
|
||||||
|
char **ap;
|
||||||
|
|
||||||
if (ac == 4) {
|
ap = player->argp;
|
||||||
(void)strncpy(player->userid, av[1], sizeof(player->userid) - 1);
|
if (*++ap) {
|
||||||
|
strncpy(player->userid, *ap, sizeof(player->userid) - 1);
|
||||||
player->userid[sizeof(player->userid) - 1] = '\0';
|
player->userid[sizeof(player->userid) - 1] = '\0';
|
||||||
player->validated = 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;
|
return 0;
|
||||||
}
|
}
|
||||||
if (!natpass(cnum, av[3])) {
|
}
|
||||||
|
if (*++ap) {
|
||||||
|
if (!natpass(cnum, *ap)) {
|
||||||
pr_id(player, C_CMDERR, "password bad, logging entry\n");
|
pr_id(player, C_CMDERR, "password bad, logging entry\n");
|
||||||
logerror("%s tried country #%d with %s",
|
logerror("%s tried country #%d with %s",
|
||||||
praddr(player), cnum, av[3]);
|
praddr(player), cnum, *ap);
|
||||||
return RET_FAIL;
|
return RET_FAIL;
|
||||||
}
|
}
|
||||||
player->cnum = cnum;
|
player->cnum = cnum;
|
||||||
|
@ -259,9 +263,8 @@ play_cmd(struct player *player, int ac, char **av)
|
||||||
return RET_OK;
|
return RET_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*ARGSUSED*/
|
|
||||||
static int
|
static int
|
||||||
kill_cmd(struct player *player, int ac, char **av)
|
kill_cmd(void)
|
||||||
{
|
{
|
||||||
struct player *other;
|
struct player *other;
|
||||||
|
|
||||||
|
@ -279,9 +282,8 @@ kill_cmd(struct player *player, int ac, char **av)
|
||||||
return RET_OK;
|
return RET_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*ARGSUSED*/
|
|
||||||
static int
|
static int
|
||||||
list_cmd(struct player *player, int ac, char **av)
|
list_cmd(void)
|
||||||
{
|
{
|
||||||
struct player *lp;
|
struct player *lp;
|
||||||
int first = 1;
|
int first = 1;
|
||||||
|
@ -302,9 +304,8 @@ list_cmd(struct player *player, int ac, char **av)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*ARGSUSED*/
|
|
||||||
static int
|
static int
|
||||||
quit_cmd(struct player *player, int ac, char **av)
|
quit_cmd(void)
|
||||||
{
|
{
|
||||||
pr_id(player, C_EXIT, "so long\n");
|
pr_id(player, C_EXIT, "so long\n");
|
||||||
io_shutdown(player->iop, IO_READ);
|
io_shutdown(player->iop, IO_READ);
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue