(cnumb): Return the same error values as stmtch(). Callers don't
(yet) care for the difference.
This commit is contained in:
parent
c949d84774
commit
ffa21cf379
2 changed files with 19 additions and 13 deletions
|
@ -466,7 +466,7 @@ extern void caploss(struct sctstr *, natid, s_char *);
|
||||||
extern int chkmoney(long, long, s_char *);
|
extern int chkmoney(long, long, s_char *);
|
||||||
extern int check_cost(int, int, long, int *, s_char *);
|
extern int check_cost(int, int, long, int *, s_char *);
|
||||||
/* cnumb.c */
|
/* cnumb.c */
|
||||||
extern int cnumb(s_char *);
|
extern int cnumb(char *);
|
||||||
/* coastal.c */
|
/* coastal.c */
|
||||||
extern void set_coastal(struct sctstr *sp, int des);
|
extern void set_coastal(struct sctstr *sp, int des);
|
||||||
/* control.c */
|
/* control.c */
|
||||||
|
|
|
@ -37,19 +37,24 @@
|
||||||
#include "player.h"
|
#include "player.h"
|
||||||
#include "nat.h"
|
#include "nat.h"
|
||||||
#include "file.h"
|
#include "file.h"
|
||||||
|
#include "match.h"
|
||||||
#include "prototypes.h"
|
#include "prototypes.h"
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Search for a country matching CNTRY, return its number.
|
||||||
|
* Return M_NOTFOUND if no such country exists, M_NOTUNIQUE if there
|
||||||
|
* are several.
|
||||||
|
*/
|
||||||
int
|
int
|
||||||
cnumb(s_char *cntry)
|
cnumb(char *cntry)
|
||||||
{
|
{
|
||||||
register s_char *ncp;
|
char *ncp;
|
||||||
register s_char *cp;
|
char *cp;
|
||||||
register struct natstr *natp;
|
struct natstr *natp;
|
||||||
int bcount;
|
int res;
|
||||||
natid best;
|
|
||||||
natid cn;
|
natid cn;
|
||||||
|
|
||||||
bcount = 0;
|
res = M_NOTFOUND;
|
||||||
for (cn = 0; cn < MAXNOC; cn++) {
|
for (cn = 0; cn < MAXNOC; cn++) {
|
||||||
if ((natp = getnatp(cn)) == 0)
|
if ((natp = getnatp(cn)) == 0)
|
||||||
break;
|
break;
|
||||||
|
@ -58,13 +63,14 @@ cnumb(s_char *cntry)
|
||||||
ncp = natp->nat_cnam;
|
ncp = natp->nat_cnam;
|
||||||
for (cp = cntry; *cp == *ncp; cp++, ncp++) {
|
for (cp = cntry; *cp == *ncp; cp++, ncp++) {
|
||||||
if (*cp == 0)
|
if (*cp == 0)
|
||||||
return cn;
|
return cn; /* exact match */
|
||||||
}
|
}
|
||||||
if (*cp == 0) {
|
if (*cp == 0) {
|
||||||
best = cn;
|
/* is a prefix */
|
||||||
bcount++;
|
if (res >= 0)
|
||||||
|
return M_NOTUNIQUE;
|
||||||
|
res = cn;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
/* can only have 1 match or not successful */
|
return res;
|
||||||
return bcount == 1 ? (int)best : -1;
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue