First batch of changes to use it to suppress warnings.
extern char *stripchars(char *, const char *, const char *);
extern char *stripdigits(char *);
extern char *eos(char *);
+extern unsigned Strlen(const char *);
extern boolean str_end_is(const char *, const char *);
extern int str_lines_maxlen(const char *);
extern char *strkitten(char *, char);
if (rank_indx)
*rank_indx = j;
if (title_length)
- *title_length = strlen(roles[i].rank[j].m);
+ *title_length = Strlen(roles[i].rank[j].m);
return roles[i].mnum;
}
if (roles[i].rank[j].f
if (rank_indx)
*rank_indx = j;
if (title_length)
- *title_length = strlen(roles[i].rank[j].f);
+ *title_length = Strlen(roles[i].rank[j].f);
return roles[i].mnum;
}
}
{
static int retmatchlist[SIZE(extcmdlist)] = DUMMY;
int i, mi = 0;
- int fslen = findstr ? strlen(findstr) : 0;
+ int fslen = findstr ? Strlen(findstr) : 0;
boolean ignoreac = (ecmflags & ECM_IGNOREAC) != 0;
boolean exactmatch = (ecmflags & ECM_EXACTMATCH) != 0;
boolean no1charcmd = (ecmflags & ECM_NO1CHARCMD) != 0;
if (altmsg) {
/* replace end-of-mimicking message */
- if (strlen(altmsg) > strlen(g.eatmbuf)) {
+ int amlen = Strlen(altmsg);
+ if (amlen > Strlen(g.eatmbuf)) {
free((genericptr_t) g.eatmbuf);
- g.eatmbuf = (char *) alloc(strlen(altmsg) + 1);
+ g.eatmbuf = (char *) alloc(amlen + 1);
}
g.nomovemsg = strcpy(g.eatmbuf, altmsg);
/* update current image */
corpse = mk_named_object(CORPSE, &mons[mnum], u.ux, u.uy, g.plname);
Sprintf(pbuf, "%s, ", g.plname);
- formatkiller(eos(pbuf), sizeof pbuf - strlen(pbuf), how, TRUE);
+ formatkiller(eos(pbuf), sizeof pbuf - Strlen(pbuf), how, TRUE);
make_grave(u.ux, u.uy, pbuf);
}
pbuf[0] = '\0'; /* clear grave text; also lint suppression */
make_engr_at(int x, int y, const char *s, long e_time, xchar e_type)
{
struct engr *ep;
- unsigned smem = strlen(s) + 1;
+ unsigned smem = Strlen(s) + 1;
if ((ep = engr_at(x, y)) != 0)
del_engr(ep);
char * strip_newline (char *)
char * stripchars (char *, const char *, const char *)
char * stripdigits (char *)
+ unsigned Strlen (const char *str)
char * eos (char *)
boolean str_end_is (const char *, const char *)
int str_lines_maxlen (const char *)
return s;
}
+/* like strlen(3) but returns unsigned and panics if string is unreasonably long */
+unsigned
+Strlen(const char *str){
+ size_t len = strnlen(str, LARGEST_INT);
+
+ if (len == LARGEST_INT)
+ panic("string too long");
+ return (unsigned) len;
+}
+
/* determine whether 'str' ends in 'chkstr' */
boolean
str_end_is(const char *str, const char *chkstr)
else
class_name = names[0];
- len = strlen(class_name) + (unpaid ? sizeof "unpaid_" : sizeof "")
- + (oclass ? (strlen(ocsymfmt) + invbuf_sympadding) : 0);
+ len = Strlen(class_name) + (unpaid ? sizeof "unpaid_" : sizeof "")
+ + (oclass ? (Strlen(ocsymfmt) + invbuf_sympadding) : 0);
if (len > g.invbufsiz) {
if (g.invbuf)
free((genericptr_t) g.invbuf);
Strcpy(g.invbuf, class_name);
if ((oclass != 0) && showsym) {
char *bp = eos(g.invbuf);
- int mlen = invbuf_sympadding - strlen(class_name);
+ int mlen = invbuf_sympadding - Strlen(class_name);
while (--mlen > 0) {
*bp = ' ';
bp++;
long buflen, ct, cnt;
int llret;
- altfname = (char *) alloc(strlen(fname) + 3); /* 3: '('...')\0' */
+ altfname = (char *) alloc(Strlen(fname) + 3); /* 3: '('...')\0' */
/* don't know whether 'fname' is inside a dlb container;
if we did, we could choose between "nhdat(<fname>)" and "<fname>"
but since we don't, compromise */
for (i = 0; i < NUM_OBJECTS; i++)
if (objects[i].oc_uname) {
if (perform_bwrite(nhfp)) {
- len = strlen(objects[i].oc_uname) + 1;
+ len = Strlen(objects[i].oc_uname) + 1;
if (nhfp->structlevel) {
bwrite(nhfp->fd, (genericptr_t)&len, sizeof len);
bwrite(nhfp->fd, (genericptr_t)objects[i].oc_uname, len);
if (!exact) {
tentativef = 0;
for (f = g.ffruit; f; f = f->nextf) {
- k = strlen(f->fname);
+ k = Strlen(f->fname);
if (!strncmp(f->fname, fname, k)
&& (!fname[k] || fname[k] == ' ')
&& (!tentativef || k > strlen(tentativef->fname)))
}
if (!f && !exact) {
char fnamebuf[BUFSZ], *p;
- unsigned fname_k = strlen(fname); /* length of assumed plural fname */
+ unsigned fname_k = Strlen(fname); /* length of assumed plural fname */
tentativef = 0;
for (f = g.ffruit; f; f = f->nextf) {
- k = strlen(f->fname);
+ k = Strlen(f->fname);
/* reload fnamebuf[] each iteration in case it gets modified;
there's no need to recalculate fname_k */
Strcpy(fnamebuf, fname);
if (fname_k >= k && (p = index(&fnamebuf[k], ' ')) != 0) {
*p = '\0'; /* truncate at 1st space past length of f->fname */
altfname = makesingular(fnamebuf);
- k = strlen(altfname); /* actually revised 'fname_k' */
+ k = Strlen(altfname); /* actually revised 'fname_k' */
if (!strcmp(f->fname, altfname)
&& (!tentativef || k > strlen(tentativef->fname)))
tentativef = f;
if (!carried(obj) || !obj_is_pname(obj)
|| obj->oartifact >= ART_ORB_OF_DETECTION) {
char *outbuf = shk_your(nextobuf(), obj);
- int space_left = BUFSZ - 1 - strlen(outbuf);
+ int space_left = BUFSZ - 1 - Strlen(outbuf);
s = strncat(outbuf, s, space_left);
}
if (!carried(obj) || !obj_is_pname(obj)
|| obj->oartifact >= ART_ORB_OF_DETECTION) {
char *outbuf = shk_your(nextobuf(), obj);
- int space_left = BUFSZ - 1 - strlen(outbuf);
+ int space_left = BUFSZ - 1 - Strlen(outbuf);
s = strncat(outbuf, s, space_left);
}
{
char *outbuf = nextobuf();
char *s = shk_your(outbuf, obj); /* assert( s == outbuf ); */
- int space_left = BUFSZ - 1 - strlen(s);
+ int space_left = BUFSZ - 1 - Strlen(s);
return strncat(s, minimal_xname(obj), space_left);
}
/* check for special cases to avoid false matches */
len = (int) (spot - subj) + 1;
for (spec = special_subjs; *spec; spec++) {
- ltmp = strlen(*spec);
+ ltmp = Strlen(*spec);
if (len == ltmp && !strncmpi(*spec, subj, len))
goto sing;
/* also check for <prefix><space><special_subj>
const struct sing_plur *sp;
const char *same, *other, *const *as;
int al;
- int baselen = strlen(basestr);
+ int baselen = Strlen(basestr);
for (as = as_is; *as; ++as) {
al = (int) strlen(*as);
*(spot + 1) = '\0';
/* Now spot is the last character of the string */
- len = strlen(str);
+ len = Strlen(str);
/* Single letters */
if (len == 1 || !letter(*spot)) {
&& strncmpi(d->bp, "food ration", 11)
&& strncmpi(d->bp, "meat ring", 9))
for (i = 0; i < (int) (sizeof wrpsym); i++) {
- register int j = strlen(wrp[i]);
+ register int j = Strlen(wrp[i]);
/* check for "<class> [ of ] something" */
if (!strncmpi(d->bp, wrp[i], j)) {
return ROLE_NONE;
/* Match as much of str as is provided */
- len = strlen(str);
+ len = Strlen(str);
for (i = 0; roles[i].name.m; i++) {
/* Does it match the male name? */
if (!strncmpi(str, roles[i].name.m, len))
return ROLE_NONE;
/* Match as much of str as is provided */
- len = strlen(str);
+ len = Strlen(str);
for (i = 0; i < ROLE_GENDERS; i++) {
/* Does it match the adjective? */
if (!strncmpi(str, genders[i].adj, len))
return ROLE_NONE;
/* Match as much of str as is provided */
- len = strlen(str);
+ len = Strlen(str);
for (i = 0; i < ROLE_ALIGNS; i++) {
/* Does it match the adjective? */
if (!strncmpi(str, aligns[i].adj, len))
Strcat(tmpbuf, "a ");
/* <your> */
- (void) root_plselection_prompt(eos(tmpbuf), buflen - strlen(tmpbuf),
+ (void) root_plselection_prompt(eos(tmpbuf), buflen - Strlen(tmpbuf),
rolenum, racenum, gendnum, alignnum);
/* "Shall I pick a character's role, race, gender, and alignment for you?"
plus " [ynaq] (y)" is a little too long for a conventional 80 columns;
tmp2 = tmp->next;
if (perform_bwrite(nhfp)) {
if (nhfp->structlevel) {
- slen = strlen(tmp->text);
+ slen = Strlen(tmp->text);
bwrite(nhfp->fd, (genericptr_t) &slen, sizeof slen);
bwrite(nhfp->fd, (genericptr_t) tmp->text, slen);
bwrite(nhfp->fd, (genericptr_t) tmp,
msg = luaL_checkstring(L, 1);
- old_n = g.lev_message ? (strlen(g.lev_message) + 1) : 0;
- n = strlen(msg);
+ old_n = g.lev_message ? (Strlen(g.lev_message) + 1) : 0;
+ n = Strlen(msg);
levmsg = (char *) alloc(old_n + n + 1);
if (old_n)
/*FALLTHRU*/
case KILLED_BY:
(void) strncat(buf, killed_by_prefix[how], siz - 1);
- l = strlen(buf);
+ l = Strlen(buf);
buf += l, siz -= l;
break;
}
for (longest = 0, i = 0; i < P_NUM_SKILLS; i++) {
if (P_RESTRICTED(i))
continue;
- if ((len = strlen(P_NAME(i))) > longest)
+ if ((len = Strlen(P_NAME(i))) > longest)
longest = len;
if (can_advance(i, speedy))
to_advance++;