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:
parent
c0f3a1e5e5
commit
cdfdbbe5ce
1 changed files with 37 additions and 38 deletions
|
@ -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(§))
|
if (!check_sect_ok(§))
|
||||||
return RET_FAIL;
|
return RET_FAIL;
|
||||||
if ((err = edit_sect(§, thing, arg, ptr)) != RET_OK)
|
if ((err = edit_sect(§, key, arg, ptr)) != RET_OK)
|
||||||
return err;
|
return err;
|
||||||
if (!putsect(§))
|
if (!putsect(§))
|
||||||
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;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue