edit: Pass full keys around, not just first characters

To simplify the next commit.

Changes the error message for unknown keys to show the full key.
Shouldn't matter.

Signed-off-by: Markus Armbruster <armbru@pond.sub.org>
This commit is contained in:
Markus Armbruster 2013-01-20 23:40:10 +01:00
parent c0f3a1e5e5
commit cdfdbbe5ce

View file

@ -52,12 +52,12 @@ static void print_nat(struct natstr *);
static void print_plane(struct plnstr *); static void print_plane(struct plnstr *);
static void print_land(struct lndstr *); static void print_land(struct lndstr *);
static void print_ship(struct shpstr *); static void print_ship(struct shpstr *);
static int getin(char *, char **); static char *getin(char *, char **);
static int edit_sect(struct sctstr *, char, int, char *); static int edit_sect(struct sctstr *, char *, int, char *);
static int edit_nat(struct natstr *, char, int, char *); static int edit_nat(struct natstr *, char *, int, char *);
static int edit_ship(struct shpstr *, char, int, char *); static int edit_ship(struct shpstr *, char *, int, char *);
static int edit_land(struct lndstr *, char, int, char *); static int edit_land(struct lndstr *, char *, int, char *);
static int edit_plane(struct plnstr *, char, int, char *); static int edit_plane(struct plnstr *, char *, int, char *);
int int
edit(void) edit(void)
@ -67,8 +67,7 @@ edit(void)
struct shpstr ship; struct shpstr ship;
struct lndstr land; struct lndstr land;
char *what; char *what;
char *ptr; char *key, *ptr;
char thing;
int num; int num;
int arg; int arg;
int err; int err;
@ -145,16 +144,16 @@ edit(void)
for (;;) { for (;;) {
if (player->argp[arg_index]) { if (player->argp[arg_index]) {
if (player->argp[arg_index+1]) { if (player->argp[arg_index+1]) {
thing = player->argp[arg_index++][0]; key = player->argp[arg_index++];
ptr = player->argp[arg_index++]; ptr = player->argp[arg_index++];
arg = atoi(ptr); arg = atoi(ptr);
} else } else
return RET_SYN; return RET_SYN;
} else if (arg_index == 3) { } else if (arg_index == 3) {
err = getin(buf, &ptr); key = getin(buf, &ptr);
if (err < 0) if (!key)
return RET_SYN; return RET_SYN;
if (err == 0) { if (!*key) {
switch (ewhat) { switch (ewhat) {
case 'c': case 'c':
print_nat(np); print_nat(np);
@ -174,20 +173,19 @@ edit(void)
} }
return RET_OK; return RET_OK;
} }
thing = err;
arg = atoi(ptr); arg = atoi(ptr);
} else } else
return RET_OK; return RET_OK;
switch (ewhat) { switch (ewhat) {
case 'c': case 'c':
if ((err = edit_nat(np, thing, arg, ptr)) != RET_OK) if ((err = edit_nat(np, key, arg, ptr)) != RET_OK)
return err; return err;
break; break;
case 'l': case 'l':
if (!check_sect_ok(&sect)) if (!check_sect_ok(&sect))
return RET_FAIL; return RET_FAIL;
if ((err = edit_sect(&sect, thing, arg, ptr)) != RET_OK) if ((err = edit_sect(&sect, key, arg, ptr)) != RET_OK)
return err; return err;
if (!putsect(&sect)) if (!putsect(&sect))
return RET_FAIL; return RET_FAIL;
@ -195,7 +193,7 @@ edit(void)
case 's': case 's':
if (!check_ship_ok(&ship)) if (!check_ship_ok(&ship))
return RET_FAIL; return RET_FAIL;
if ((err = edit_ship(&ship, thing, arg, ptr)) != RET_OK) if ((err = edit_ship(&ship, key, arg, ptr)) != RET_OK)
return err; return err;
if (!ef_ensure_space(EF_SHIP, ship.shp_uid, 50)) if (!ef_ensure_space(EF_SHIP, ship.shp_uid, 50))
return RET_FAIL; return RET_FAIL;
@ -205,7 +203,7 @@ edit(void)
case 'u': case 'u':
if (!check_land_ok(&land)) if (!check_land_ok(&land))
return RET_FAIL; return RET_FAIL;
if ((err = edit_land(&land, thing, arg, ptr)) != RET_OK) if ((err = edit_land(&land, key, arg, ptr)) != RET_OK)
return err; return err;
if (!ef_ensure_space(EF_LAND, land.lnd_uid, 50)) if (!ef_ensure_space(EF_LAND, land.lnd_uid, 50))
return RET_FAIL; return RET_FAIL;
@ -215,7 +213,7 @@ edit(void)
case 'p': case 'p':
if (!check_plane_ok(&plane)) if (!check_plane_ok(&plane))
return RET_FAIL; return RET_FAIL;
if ((err = edit_plane(&plane, thing, arg, ptr)) != RET_OK) if ((err = edit_plane(&plane, key, arg, ptr)) != RET_OK)
return err; return err;
if (!ef_ensure_space(EF_PLANE, plane.pln_uid, 50)) if (!ef_ensure_space(EF_PLANE, plane.pln_uid, 50))
return RET_FAIL; return RET_FAIL;
@ -396,24 +394,25 @@ print_ship(struct shpstr *ship)
pr("\n"); pr("\n");
} }
static int static char *
getin(char *buf, char **valp) getin(char *buf, char **valp)
{ {
char line[1024]; char line[1024];
char *argp[128]; char *argp[128];
char *p; char *p;
*valp = NULL;
p = getstarg(NULL, "%c xxxxx -- thing value : ", line); p = getstarg(NULL, "%c xxxxx -- thing value : ", line);
if (!p) if (!p)
return -1; return NULL;
switch (parse(p, buf, argp, NULL, NULL, NULL)) { switch (parse(p, buf, argp, NULL, NULL, NULL)) {
case 0: case 0:
return 0; return "";
case 1: case 1:
return -1; return NULL;
default: default:
*valp = argp[1]; *valp = argp[1];
return argp[0][0]; return argp[0];
} }
} }
@ -426,12 +425,12 @@ warn_deprecated(char key)
#endif #endif
static int static int
edit_sect(struct sctstr *sect, char op, int arg, char *p) edit_sect(struct sctstr *sect, char *key, int arg, char *p)
{ {
coord newx, newy; coord newx, newy;
int new; int new;
switch (op) { switch (*key) {
case 'o': case 'o':
if (arg < 0 || arg >= MAXNOC) if (arg < 0 || arg >= MAXNOC)
return RET_SYN; return RET_SYN;
@ -607,20 +606,20 @@ edit_sect(struct sctstr *sect, char op, int arg, char *p)
sect->sct_defense = new; sect->sct_defense = new;
break; break;
default: default:
pr("huh? (%c)\n", op); pr("huh? (%s)\n", key);
return RET_SYN; return RET_SYN;
} }
return RET_OK; return RET_OK;
} }
static int static int
edit_nat(struct natstr *np, char op, int arg, char *p) edit_nat(struct natstr *np, char *key, int arg, char *p)
{ {
coord newx, newy; coord newx, newy;
natid nat = np->nat_cnum; natid nat = np->nat_cnum;
float farg = (float)atof(p); float farg = (float)atof(p);
switch (op) { switch (*key) {
case 'n': case 'n':
if (!check_nat_name(p, nat)) if (!check_nat_name(p, nat))
return RET_SYN; return RET_SYN;
@ -710,7 +709,7 @@ edit_nat(struct natstr *np, char op, int arg, char *p)
np->nat_level[NAT_HLEV] = farg; np->nat_level[NAT_HLEV] = farg;
break; break;
default: default:
pr("huh? (%c)\n", op); pr("huh? (%s)\n", key);
break; break;
} }
putnat(np); putnat(np);
@ -718,13 +717,13 @@ edit_nat(struct natstr *np, char op, int arg, char *p)
} }
static int static int
edit_ship(struct shpstr *ship, char op, int arg, char *p) edit_ship(struct shpstr *ship, char *key, int arg, char *p)
{ {
struct mchrstr *mcp = &mchr[ship->shp_type]; struct mchrstr *mcp = &mchr[ship->shp_type];
coord newx, newy; coord newx, newy;
newx = newy = 0; newx = newy = 0;
switch (op) { switch (*key) {
case 'a': case 'a':
arg = LIMIT_TO(arg, 0, PLG_EXPOSED); arg = LIMIT_TO(arg, 0, PLG_EXPOSED);
ship->shp_pstage = arg; ship->shp_pstage = arg;
@ -833,20 +832,20 @@ edit_ship(struct shpstr *ship, char op, int arg, char *p)
ship->shp_item[I_RAD] = arg; ship->shp_item[I_RAD] = arg;
break; break;
default: default:
pr("huh? (%c)\n", op); pr("huh? (%s)\n", key);
return RET_FAIL; return RET_FAIL;
} }
return RET_OK; return RET_OK;
} }
static int static int
edit_land(struct lndstr *land, char op, int arg, char *p) edit_land(struct lndstr *land, char *key, int arg, char *p)
{ {
struct lchrstr *lcp = &lchr[land->lnd_type]; struct lchrstr *lcp = &lchr[land->lnd_type];
coord newx, newy; coord newx, newy;
newx = newy = 0; newx = newy = 0;
switch (op) { switch (*key) {
case 'Y': case 'Y':
if (arg < -1 || arg >= ef_nelem(EF_LAND)) if (arg < -1 || arg >= ef_nelem(EF_LAND))
return RET_SYN; return RET_SYN;
@ -968,19 +967,19 @@ edit_land(struct lndstr *land, char op, int arg, char *p)
land->lnd_item[I_RAD] = arg; land->lnd_item[I_RAD] = arg;
break; break;
default: default:
pr("huh? (%c)\n", op); pr("huh? (%s)\n", key);
return RET_FAIL; return RET_FAIL;
} }
return RET_OK; return RET_OK;
} }
static int static int
edit_plane(struct plnstr *plane, char op, int arg, char *p) edit_plane(struct plnstr *plane, char *key, int arg, char *p)
{ {
struct plchrstr *pcp = &plchr[plane->pln_type]; struct plchrstr *pcp = &plchr[plane->pln_type];
coord newx, newy; coord newx, newy;
switch (op) { switch (*key) {
case 'U': case 'U':
ef_set_uid(EF_PLANE, plane, arg); ef_set_uid(EF_PLANE, plane, arg);
break; break;
@ -1044,7 +1043,7 @@ edit_plane(struct plnstr *plane, char op, int arg, char *p)
plane->pln_flags = arg; plane->pln_flags = arg;
break; break;
default: default:
pr("huh? (%c)\n", op); pr("huh? (%s)\n", key);
return RET_FAIL; return RET_FAIL;
} }
return RET_OK; return RET_OK;