(getin): Confusing. Redesign.

(edit): Simplify.

(doland): Spelling fix.
This commit is contained in:
Markus Armbruster 2006-04-17 08:13:20 +00:00
parent 7b97f33789
commit 3813203174

View file

@ -64,7 +64,7 @@ static int doland(char, int, char *, struct sctstr *);
static int doplane(char, int, char *, struct plnstr *); static int doplane(char, int, char *, struct plnstr *);
static int doship(char, int, char *, struct shpstr *); static int doship(char, int, char *, struct shpstr *);
static int dounit(char, int, char *, float, struct lndstr *); static int dounit(char, int, char *, float, struct lndstr *);
static int getin(char **, char **, int *, char *); static int getin(char *, char **);
static void noise(struct sctstr *, int, char *, int, int); static void noise(struct sctstr *, int, char *, int, int);
static void pr_land(struct lndstr *); static void pr_land(struct lndstr *);
static void pr_plane(struct plnstr *); static void pr_plane(struct plnstr *);
@ -82,7 +82,7 @@ edit(void)
struct lndstr land; struct lndstr land;
char *what; char *what;
char *ptr; char *ptr;
char *thing; char thing;
int num; int num;
int arg; int arg;
int err; int err;
@ -159,57 +159,57 @@ edit(void)
break; break;
} }
} }
ptr = &buf[0];
*ptr = 0;
for (;;) { for (;;) {
if (player->argp[arg_index] != 0) { if (player->argp[arg_index] != 0) {
if (player->argp[arg_index+1] != 0) { if (player->argp[arg_index+1] != 0) {
thing = player->argp[arg_index++]; thing = player->argp[arg_index++][0];
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) {
if ((err = getin(&thing, &ptr, &arg, buf)) != RET_OK) { err = getin(buf, &ptr);
if (err == END) { if (err < 0)
switch (ewhat) { return RET_SYN;
case 'c': if (err == 0) {
prnat(np); switch (ewhat) {
break; case 'c':
case 'l': prnat(np);
prsect(&sect);
break;
case 's':
pr_ship(&ship);
break;
case 'u':
pr_land(&land);
break;
case 'p':
pr_plane(&plane);
break;
}
break; break;
} else case 'l':
return err; prsect(&sect);
break;
case 's':
pr_ship(&ship);
break;
case 'u':
pr_land(&land);
break;
case 'p':
pr_plane(&plane);
break;
}
return RET_OK;
} }
thing = err;
arg = atoi(ptr);
} else } else
break; return RET_OK;
switch (ewhat) { switch (ewhat) {
case 'c': case 'c':
farg = (float)atof(ptr); farg = (float)atof(ptr);
if ((err = docountry(thing[0], arg, ptr, farg, np)) if ((err = docountry(thing, arg, ptr, farg, np)) != RET_OK)
!= RET_OK)
return err; return err;
break; break;
case 'l': case 'l':
if ((err = doland(thing[0], arg, ptr, &sect)) != RET_OK) if ((err = doland(thing, arg, ptr, &sect)) != RET_OK)
return err; return err;
if (!putsect(&sect)) if (!putsect(&sect))
return RET_FAIL; return RET_FAIL;
break; break;
case 's': case 's':
if ((err = doship(thing[0], arg, ptr, &ship)) != RET_OK) if ((err = doship(thing, arg, ptr, &ship)) != 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;
@ -218,8 +218,7 @@ edit(void)
break; break;
case 'u': case 'u':
farg = (float)atof(ptr); farg = (float)atof(ptr);
if ((err = dounit(thing[0], arg, ptr, farg, &land)) if ((err = dounit(thing, arg, ptr, farg, &land)) != RET_OK)
!= 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;
@ -227,8 +226,7 @@ edit(void)
return RET_FAIL; return RET_FAIL;
break; break;
case 'p': case 'p':
if ((err = doplane(thing[0], arg, ptr, &plane)) if ((err = doplane(thing, arg, ptr, &plane)) != RET_OK)
!= 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;
@ -236,12 +234,7 @@ edit(void)
return RET_FAIL; return RET_FAIL;
break; break;
} }
if (err != RET_OK)
break;
else
ptr = 0;
} }
return RET_OK;
} }
static void static void
@ -453,25 +446,26 @@ errcheck(int num, int min, int max)
} }
static int static int
getin(char **what, char **p, int *arg, char *buf) getin(char *buf, char **valp)
{ {
if (!(*what = getstarg(*p, "%c xxxxx -- thing value : ", buf))) { char *p;
return RET_SYN; unsigned char thing;
}
if (**what == '\0') p = getstarg(NULL, "%c xxxxx -- thing value : ", buf);
return END; if (!p)
while (**what && isspace(**what)) return -1;
(*what)++; if (!*p)
if (**what == '\0') return 0;
return RET_SYN; for (; isspace(*p); p++) ;
for (*p = *what; **p && !isspace(**p); (*p)++) /* skip non spaces */ if (!*p)
continue; return -1;
while (**p && isspace(**p)) thing = *p;
(*p)++; for (; *p && !isspace(*p); p++) ;
if (**p == '\0') for (; isspace(*p); p++) ;
return RET_SYN; if (!*p)
*arg = atoi(*p); return -1;
return RET_OK; *valp = p;
return thing;
} }
static void static void
@ -634,7 +628,7 @@ doland(char op, int arg, char *p, struct sctstr *sect)
case 'D': case 'D':
if (!sarg_xy(p, &newx, &newy)) if (!sarg_xy(p, &newx, &newy))
return RET_SYN; return RET_SYN;
pr("Distribtion Location for sector %s changed from %s to %s\n", pr("Distribution Location for sector %s changed from %s to %s\n",
xyas(sect->sct_x, sect->sct_y, player->cnum), xyas(sect->sct_x, sect->sct_y, player->cnum),
xyas(sect->sct_dist_x, sect->sct_dist_y, player->cnum), xyas(sect->sct_dist_x, sect->sct_dist_y, player->cnum),
xyas(newx, newy, player->cnum)); xyas(newx, newy, player->cnum));