edit: Accept interactive empty key argument again
Empty key arguments work fine when passed as command arguments, but not interactively. For example, 'edit s 42 R ""' clears the retreat path, but in an interactive 'edit s 43', 'R ""' sets it to "". In Empire 1, omitting the argument made it empty. Empire 2 turned that into an error without providing an alternative. Switch to the common command parser, so that quoting works, and "" is parsed as empty argument. Signed-off-by: Markus Armbruster <armbru@pond.sub.org>
This commit is contained in:
parent
33456b3371
commit
c0f3a1e5e5
3 changed files with 40 additions and 10 deletions
|
@ -399,22 +399,22 @@ print_ship(struct shpstr *ship)
|
||||||
static int
|
static int
|
||||||
getin(char *buf, char **valp)
|
getin(char *buf, char **valp)
|
||||||
{
|
{
|
||||||
|
char line[1024];
|
||||||
|
char *argp[128];
|
||||||
char *p;
|
char *p;
|
||||||
unsigned char thing;
|
|
||||||
|
|
||||||
p = getstarg(NULL, "%c xxxxx -- thing value : ", buf);
|
p = getstarg(NULL, "%c xxxxx -- thing value : ", line);
|
||||||
if (!p)
|
if (!p)
|
||||||
return -1;
|
return -1;
|
||||||
for (; isspace(*p); p++) ;
|
switch (parse(p, buf, argp, NULL, NULL, NULL)) {
|
||||||
if (!*p)
|
case 0:
|
||||||
return 0;
|
return 0;
|
||||||
thing = *p;
|
case 1:
|
||||||
for (; *p && !isspace(*p); p++) ;
|
|
||||||
for (; isspace(*p); p++) ;
|
|
||||||
if (!*p)
|
|
||||||
return -1;
|
return -1;
|
||||||
*valp = p;
|
default:
|
||||||
return thing;
|
*valp = argp[1];
|
||||||
|
return argp[0][0];
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#if 0 /* not needed right now */
|
#if 0 /* not needed right now */
|
||||||
|
|
|
@ -301,6 +301,7 @@ unit_carrier('land', 'S', 'Y');
|
||||||
|
|
||||||
# interactive edit
|
# interactive edit
|
||||||
iedit('ship', 0, 'M 2', 'm 1', 'f 1');
|
iedit('ship', 0, 'M 2', 'm 1', 'f 1');
|
||||||
|
iedit('ship', 0, 'R n', 'R ""');
|
||||||
iedit('plane', 0, 'm 2', 'y -1');
|
iedit('plane', 0, 'm 2', 'y -1');
|
||||||
iedit('land', 0, 'M 2', 'Y -1');
|
iedit('land', 0, 'M 2', 'Y -1');
|
||||||
|
|
||||||
|
|
|
@ -1194,6 +1194,35 @@
|
||||||
Play#0 output Play#0 1 c m u f s g p i d o l h r
|
Play#0 output Play#0 1 c m u f s g p i d o l h r
|
||||||
Play#0 output Play#0 1 0 1 0 1 0 0 0 0 0 0 0 0 0
|
Play#0 output Play#0 1 0 1 0 1 0 0 0 0 0 0 0 0 0
|
||||||
Play#0 output Play#0 6 0 640
|
Play#0 output Play#0 6 0 640
|
||||||
|
Play#0 input edit s 0
|
||||||
|
Play#0 command edit
|
||||||
|
Play#0 output Play#0 1 POGO (#0) cs cargo ship (#0)
|
||||||
|
Play#0 output Play#0 1 UID <U>: 0
|
||||||
|
Play#0 output Play#0 1 Owner <O>: 0 Location <L>: 1,-1
|
||||||
|
Play#0 output Play#0 1 Tech <T>: 100 Efficiency <E>: 0
|
||||||
|
Play#0 output Play#0 1 Mobility <M>: 2 Fleet <F>:
|
||||||
|
Play#0 output Play#0 1 Retreat path <R>: '' Retreat Flags <W>: 0
|
||||||
|
Play#0 output Play#0 1 Plague Stage <a>: 0 Plague Time <b>: 0
|
||||||
|
Play#0 output Play#0 1 civ mil uw food shl gun pet irn dst oil lcm hcm rad
|
||||||
|
Play#0 output Play#0 1 c m u f s g p i d o l h r
|
||||||
|
Play#0 output Play#0 1 0 1 0 1 0 0 0 0 0 0 0 0 0
|
||||||
|
Play#0 output Play#0 4 %c xxxxx -- thing value :
|
||||||
|
Play#0 input R n
|
||||||
|
Play#0 output Play#0 4 %c xxxxx -- thing value :
|
||||||
|
Play#0 input R ""
|
||||||
|
Play#0 output Play#0 4 %c xxxxx -- thing value :
|
||||||
|
Play#0 input
|
||||||
|
Play#0 output Play#0 1 POGO (#0) cs cargo ship (#0)
|
||||||
|
Play#0 output Play#0 1 UID <U>: 0
|
||||||
|
Play#0 output Play#0 1 Owner <O>: 0 Location <L>: 1,-1
|
||||||
|
Play#0 output Play#0 1 Tech <T>: 100 Efficiency <E>: 0
|
||||||
|
Play#0 output Play#0 1 Mobility <M>: 2 Fleet <F>:
|
||||||
|
Play#0 output Play#0 1 Retreat path <R>: '' Retreat Flags <W>: 0
|
||||||
|
Play#0 output Play#0 1 Plague Stage <a>: 0 Plague Time <b>: 0
|
||||||
|
Play#0 output Play#0 1 civ mil uw food shl gun pet irn dst oil lcm hcm rad
|
||||||
|
Play#0 output Play#0 1 c m u f s g p i d o l h r
|
||||||
|
Play#0 output Play#0 1 0 1 0 1 0 0 0 0 0 0 0 0 0
|
||||||
|
Play#0 output Play#0 6 0 640
|
||||||
Play#0 input edit p 0
|
Play#0 input edit p 0
|
||||||
Play#0 command edit
|
Play#0 command edit
|
||||||
Play#0 output Play#0 1 POGO (#0) f1 Sopwith Camel #0
|
Play#0 output Play#0 1 POGO (#0) f1 Sopwith Camel #0
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue