extern char *stripchars(char *, const char *, const char *);
extern char *stripdigits(char *);
extern char *eos(char *);
-extern unsigned Strlen(const char *);
+extern unsigned Strlen_(const char *, const char *, int);
extern boolean str_end_is(const char *, const char *);
extern int str_lines_maxlen(const char *);
extern char *strkitten(char *, char);
#define Sprintf (void) sprintf
#define Strcat (void) strcat
#define Strcpy (void) strcpy
+#define Strlen(s) Strlen_(s,__func__,__LINE__)
#ifdef NEED_VARARGS
#define Vprintf (void) vprintf
#define Vfprintf (void) vfprintf
uniqpart = opts + (sizeof prefix - 1);
for (i = 0; i < CONDITION_COUNT; ++i) {
compareto = condtests[i].useroption;
- sl = strlen(compareto);
+ sl = Strlen(compareto);
if (match_optname(uniqpart, compareto, (sl >= 4) ? 4 : sl, FALSE)) {
condopt(i, &condtests[i].choice, negated);
return 0;
if (altmsg) {
/* replace end-of-mimicking message */
- int amlen = Strlen(altmsg);
+ unsigned amlen = Strlen(altmsg);
if (amlen > Strlen(g.eatmbuf)) {
free((genericptr_t) g.eatmbuf);
g.eatmbuf = (char *) alloc(amlen + 1);
char * strip_newline (char *)
char * stripchars (char *, const char *, const char *)
char * stripdigits (char *)
- unsigned Strlen (const char *str)
+ unsigned Strlen_ (const char *str, const char *, int)
char * eos (char *)
boolean str_end_is (const char *, const char *)
int str_lines_maxlen (const char *)
/* like strlen(3) but returns unsigned and panics if string is unreasonably long */
unsigned
-Strlen(const char *str){
+Strlen_(const char *str, const char *file, int line){
size_t len = strnlen(str, LARGEST_INT);
if (len == LARGEST_INT)
- panic("string too long");
+ panic("%s:%d string too long", file, line);
return (unsigned) len;
}
otmp = mksobj_migr_to_species(otyp, (unsigned long) M2_ORC, TRUE, FALSE);
if (otmp && gang) {
- new_oname(otmp, strlen(gang) + 1); /* removes old name if present */
+ new_oname(otmp, Strlen(gang) + 1); /* removes old name if present */
Strcpy(ONAME(otmp), gang);
if (objects[otyp].oc_class == FOOD_CLASS) {
if (otyp == SLIME_MOLD)
if (tmp && (!named || tmp < named)) /* found an "of" */
insert_the = TRUE;
/* stupid special case: lacks "of" but needs "the" */
- else if (!named && (l = strlen(str)) >= 31
+ else if (!named && (l = Strlen(str)) >= 31
&& !strcmp(&str[l - 31],
"Platinum Yendorian Express Card"))
insert_the = TRUE;
got_match = FALSE;
if (allopt[i].pfx) {
- if (!strncmpi(opts, allopt[i].name, strlen(allopt[i].name))) {
+ if (streq(opts, allopt[i].name, TRUE)) {
matchidx = i;
got_match = TRUE;
}
if (negated) {
flags.runmode = RUN_TPORT;
} else if (op != empty_optstr) {
- if (!strncmpi(op, "teleport", strlen(op)))
+ if (streq(op, "teleport", TRUE))
flags.runmode = RUN_TPORT;
- else if (!strncmpi(op, "run", strlen(op)))
+ else if (streq(op, "run", TRUE))
flags.runmode = RUN_LEAP;
- else if (!strncmpi(op, "walk", strlen(op)))
+ else if (streq(op, "walk", TRUE))
flags.runmode = RUN_STEP;
- else if (!strncmpi(op, "crawl", strlen(op)))
+ else if (streq(op, "crawl", TRUE))
flags.runmode = RUN_CRAWL;
else {
config_error_add("Unknown %s parameter '%s'",
(tmp->attr != ATR_NONE) ? "&" : "",
(tmp->attr != ATR_NONE) ? sattr : "");
/* now main string */
- ln = sizeof buf - strlen(buf) - 1; /* length available */
+ ln = sizeof buf - Strlen(buf) - 1; /* length available */
Strcpy(mcbuf, "\"");
if (strlen(tmp->origstr) > ln)
Strcat(strncat(mcbuf, tmp->origstr, ln - 3), "...");
mtype = msgtype2name(tmp->msgtype);
any.a_int = ++mt_idx;
Sprintf(mtbuf, "%-5s \"", mtype);
- ln = sizeof mtbuf - strlen(mtbuf) - sizeof "\"";
+ ln = sizeof mtbuf - Strlen(mtbuf) - sizeof "\"";
if (strlen(tmp->pattern) > ln)
Strcat(strncat(mtbuf, tmp->pattern, ln - 3), "...\"");
else
}
}
for (i = 0; i < SIZE(allopt) - 1; ++i) {
- len = strlen(allopt[i].name);
+ len = Strlen(allopt[i].name);
allopt[i].minmatch = (needed[i] < 3) ? 3
: (needed[i] <= len) ? needed[i] : len;
}
|| (is_wc2_option(name) && !wc2_supported(name)))
continue;
- if (strlen(name) > longest_name_len)
- longest_name_len = strlen(name);
+ unsigned len = Strlen(name);
+ if (len > longest_name_len)
+ longest_name_len = len;
}
return longest_name_len;
}
{ "S_explode8" , "S_expl_bc" },
{ "S_explode9" , "S_expl_br" },
};
- size_t len = strlen(buf);
+ unsigned len = Strlen(buf);
const char *p = index(buf, ':'), *q = index(buf, '=');
struct symparse *sp = loadsyms;
len = (int) (p - buf);
}
while (sp->range) {
- if ((len >= strlen(sp->name)) && !strncmpi(buf, sp->name, len))
+ if ((len >= Strlen(sp->name)) && !strncmpi(buf, sp->name, len))
return sp;
sp++;
}
Strcpy(s - 2, "."); /* replace last ", " */
i = COLNO; /* (greater than COLNO - 2) */
} else {
- i = strlen(buf) + strlen(str) + 2;
+ i = Strlen(buf) + Strlen(str) + 2;
}
if (i > COLNO - 2) { /* rule of thumb */
return ROLE_NONE;
/* Match as much of str as is provided */
- len = strlen(str);
+ len = Strlen(str);
for (i = 0; races[i].noun; i++) {
/* Does it match the noun? */
if (!strncmpi(str, races[i].noun, len))
/* ask window port for each message in sequence */
while ((msg = getmsghistory(init)) != 0) {
init = FALSE;
- msglen = strlen(msg);
+ msglen = Strlen(msg);
if (msglen < 1)
continue;
/* sanity: truncate if necessary (shouldn't happen);
} else
topten_print(linebuf);
Snprintf(linebuf, sizeof(linebuf), "%15s %s", "", linebuf3);
- lngr = strlen(linebuf);
+ lngr = Strlen(linebuf);
}
/* beginning of hp column not including padding */
hppos = COLNO - 7 - (int) strlen(hpbuf);