From: ian Date: Tue, 31 May 2005 23:34:23 +0000 (+0000) Subject: new lstrcmp, thiswordstrcmp X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ijackson/git?a=commitdiff_plain;h=eb3ce7333b379747833805c79cde892eefd3db65;p=trains.git new lstrcmp, thiswordstrcmp --- diff --git a/hostside/client.c b/hostside/client.c index 81c0b7f..22e1c0c 100644 --- a/hostside/client.c +++ b/hostside/client.c @@ -71,12 +71,21 @@ int ps_needhextoend(ParseState *ps, Byte *d, int *remain_io) { return 1; } +int lstrstrcmp(const char *a, int la, const char *b) { + int lb= strlen(b); + if (la != lb) return 1; + return memcmp(a,b,la); +} + +int thiswordstrcmp(ParseState *ps, const char *b) { + return lstrstrcmp(ps->thisword, ps->lthisword, b); +} + const CmdInfo *ps_lookup(ParseState *ps, const CmdInfo *inf) { for (; inf->name; inf++) - if (ps->lthisword == strlen(inf->name) && - !memcmp(ps->thisword, inf->name, ps->lthisword)) + if (!thiswordstrcmp(ps,inf->name)) return inf; return 0; } diff --git a/hostside/hostside.h b/hostside/hostside.h index 867a8e4..62dd211 100644 --- a/hostside/hostside.h +++ b/hostside/hostside.h @@ -92,6 +92,9 @@ struct CmdInfo { int xarg; }; +int lstrstrcmp(const char *a, int la, const char *b); +int thiswordstrcmp(ParseState *ps, const char *b); + int ps_word(ParseState *ps); int ps_needword(ParseState *ps); int ps_needhextoend(ParseState *ps, Byte *dbuf, int *len_io);