Hi, guys. Enough people asked for it, I'll just post this to the list.
It works like this - It'll find an abbreviation anywhere in a =
space-separated list. So calling it on:
PUT JUI CH (put juicy chest)
"JUI", "APPLE RED JUICY"
-or-
"CH", "BOX CHEST"
will work well.
Remember - this is certainly not as efficient as it should be. Also, =
it's the first time in a couple years I've looked at it and I just =
noticed I made my own "tolower" function called "lcase". Why? Beats =
me! Probably too much Visual Basic during the days...;-) Anyway, =
that's included too.
What to do? Comment out the stock "isname" function (it's in handler.c) =
and plug the two included functions in. Since the arg list is the same, =
the calls should not need to be changed. I think that's all.
Oh - and if anyone tightens this up, please post it back to the list.
I have to go. I'm hungry for an apple all the sudden...
-Cj
http://dibrova.betterbox.net/~dibrova/
--8<--
/* This is a replacement to the stock func. */
/* str is what the person typed. */
/* namelist is one string [with many words sep'd by spaces]. */
int isname(char *str, char *namelist)
{
char *arg1; /* Points to the keyword. */
char *arg2; /* Points to the list. */
char keyword[256];
char nl[512];
char wrd[128];
char *pts;
int i;
int wp = 0;
int sl = strlen(namelist);
strcpy(keyword, str);
strcpy(nl, namelist);
arg1=lcase(keyword);
arg2=lcase(nl);
if(!strcmp(str, namelist))
return 1; /* Exact - bail out now. */
for (i=0; i<sl;i++){
if (arg2[i]==' ' || arg2[i]=='\0') {
wrd[wp]='\0';
pts=wrd;
if (is_abbrev(arg1, pts)) return 1; /* Stop looking. and return true */
wp=0;
}else{
wrd[wp++]=arg2[i];
}
}
wrd[wp]='\0';
pts=wrd;
if (is_abbrev(arg1, pts)){
return 1;
}else{
return 0;
}
}
/* CMS - Convert a string to lower case */
char *lcase(char *str)
{
char *p;
for (p=str; *p; p++){
*p=tolower(*p);
}
return str;
}
+------------------------------------------------------------+
| Ensure that you have read the CircleMUD Mailing List FAQ: |
| http://qsilver.queensu.ca/~fletchra/Circle/list-faq.html |
+------------------------------------------------------------+
This archive was generated by hypermail 2b30 : 12/15/00 PST