From b0b1dd37ff515578cf7cba51625189eb34a196cb Mon Sep 17 00:00:00 2001 From: markus schnalke Date: Thu, 5 Jan 2012 12:26:09 +0100 Subject: [PATCH] Removed isprefix() and replaced it with strncmp(). isprefix() had been ssequal(), which had not been what it advertised to be. Now, all this is gone. We could get problems if one of the arguments is NULL, as isprefix() handled this situation, but strncmp() does not. It appears as if this case does not show up in the code. --- h/prototypes.h | 1 - sbr/Makefile.in | 2 +- sbr/isprefix.c | 35 ----------------------------------- sbr/m_convert.c | 2 +- sbr/print_sw.c | 3 ++- sbr/seq_read.c | 2 +- uip/flist.c | 5 +++-- uip/folder.c | 5 +++-- uip/rmf.c | 2 +- uip/show.c | 6 +++--- 10 files changed, 15 insertions(+), 48 deletions(-) delete mode 100644 sbr/isprefix.c diff --git a/h/prototypes.h b/h/prototypes.h index 5e5672c..0b191f0 100644 --- a/h/prototypes.h +++ b/h/prototypes.h @@ -111,7 +111,6 @@ void seq_setunseen(struct msgs *, int); int showfile(char **, char *); int smatch(char *, struct swit *); char *snprintb(char *, size_t, unsigned, char *); -int isprefix(char *, char *); int stringdex(char *, char *); char *toabsdir(char *); char *trimcpy(unsigned char *); diff --git a/sbr/Makefile.in b/sbr/Makefile.in index b42dd49..95ff94c 100644 --- a/sbr/Makefile.in +++ b/sbr/Makefile.in @@ -72,7 +72,7 @@ SRCS = addrsbr.c ambigsw.c atooi.c brkstring.c \ seq_del.c seq_getnum.c seq_list.c seq_nameok.c \ seq_print.c seq_read.c seq_save.c seq_setcur.c \ seq_setprev.c seq_setunseen.c showfile.c signals.c \ - smatch.c snprintb.c isprefix.c strcasecmp.c \ + smatch.c snprintb.c strcasecmp.c \ strindex.c trimcpy.c uprf.c vfgets.c fmt_def.c \ m_msgdef.c mf.c utils.c m_mktemp.c diff --git a/sbr/isprefix.c b/sbr/isprefix.c deleted file mode 100644 index 33c0699..0000000 --- a/sbr/isprefix.c +++ /dev/null @@ -1,35 +0,0 @@ -/* -** isprefix.c -- check if a string is a PREFIX of another -** -** This code is Copyright (c) 2002, by the authors of nmh. See the -** COPYRIGHT file in the root directory of the nmh distribution for -** complete copyright information. -*/ - -#include - -/* -** This function had been named ssequal(). It had advertised it would -** check for substring matching, but actually checked prefix matching. -** The latter being the thing wanted. Hence, only the name and the -** descriptions were wrong. I fixed this. -** -- markus schnalke , 2011-11 -*/ - -/* -** Check if s1 is a PREFIX of s2. -** If yes, then return 1, else return 0. -*/ -int -isprefix(char *s1, char *s2) -{ - if (!s1) - s1 = ""; - if (!s2) - s2 = ""; - - while (*s1) - if (*s1++ != *s2++) - return 0; - return 1; -} diff --git a/sbr/m_convert.c b/sbr/m_convert.c index b535fe3..df128d7 100644 --- a/sbr/m_convert.c +++ b/sbr/m_convert.c @@ -354,7 +354,7 @@ attr(struct msgs *mp, char *cp) if (!(dp = context_find(nsequence))) { dp = seq_neg; /* use default */ } - if (dp && *dp && isprefix(dp, cp)) { + if (*dp && strncmp(cp, dp, strlen(dp))==0) { inverted = 1; cp += strlen(dp); } diff --git a/sbr/print_sw.c b/sbr/print_sw.c index 7924fbc..3a70c54 100644 --- a/sbr/print_sw.c +++ b/sbr/print_sw.c @@ -20,7 +20,8 @@ print_sw(char *substr, struct swit *swp, char *prefix, FILE *fp) len = strlen(substr); for (; swp->sw; swp++) { /* null matches all strings */ - if (!*substr || (isprefix(substr, swp->sw) && len >= swp->minchars)) { + if (!*substr || (strncmp(swp->sw, substr, len)==0 && + len >= swp->minchars)) { optno = 0; /* next switch */ if ((sp = (&swp[1])->sw)) { diff --git a/sbr/seq_read.c b/sbr/seq_read.c index c1ac9fa..3a9633e 100644 --- a/sbr/seq_read.c +++ b/sbr/seq_read.c @@ -132,7 +132,7 @@ seq_private(struct msgs *mp) plen = strlen(mp->foldpath) + 1; for (np = m_defs; np; np = np->n_next) { - if (isprefix("atr-", np->n_name) + if (strncmp(np->n_name, "atr-", alen)==0 && (j = strlen(np->n_name) - plen) > alen && *(np->n_name + j) == '-' && strcmp(mp->foldpath, np->n_name + j + 1) diff --git a/uip/flist.c b/uip/flist.c index 847bb36..c4d9a3b 100644 --- a/uip/flist.c +++ b/uip/flist.c @@ -687,7 +687,8 @@ do_readonly_folders(void) atrlen = strlen(atrcur); for (np = m_defs; np; np = np->n_next) - if (isprefix(atrcur, np->n_name) - && !isprefix(nmhdir, np->n_name + atrlen)) + if (strncmp(np->n_name, atrcur, atrlen)==0 + && strncmp(np->n_name+atrlen, nmhdir, strlen(nmhdir))!=0) + /* Why do we exclude absolute path names? --meillo */ BuildFolderList(np->n_name + atrlen, 0); } diff --git a/uip/folder.c b/uip/folder.c index 224bb03..ae7bac5 100644 --- a/uip/folder.c +++ b/uip/folder.c @@ -656,7 +656,8 @@ readonly_folders(void) atrlen = strlen(atrcur); for (np = m_defs; np; np = np->n_next) - if (isprefix(atrcur, np->n_name) - && !isprefix(nmhdir, np->n_name + atrlen)) + if (strncmp(np->n_name, atrcur, atrlen)==0 && + strncmp(np->n_name+atrlen, nmhdir, strlen(nmhdir))!=0) + /* Why do we exclude absolute path names? --meillo */ get_folder_info(np->n_name + atrlen, NULL); } diff --git a/uip/rmf.c b/uip/rmf.c index 923f23a..48a555e 100644 --- a/uip/rmf.c +++ b/uip/rmf.c @@ -241,7 +241,7 @@ rma(char *folder) ** "atr-something-folderpath", and remove them. */ for (np = m_defs, pp = NULL; np; np = np->n_next) { - if (isprefix("atr-", np->n_name) && + if (strncmp(np->n_name, "atr-", alen)==0 && (j = strlen(np->n_name) - plen) > alen && *(np->n_name + j) == '-' && strcmp(cp, np->n_name + j + 1) == 0) { diff --git a/uip/show.c b/uip/show.c index 671a441..999272b 100644 --- a/uip/show.c +++ b/uip/show.c @@ -340,9 +340,9 @@ go_to_it: ; && chdir(maildir = concat(toabsdir("+"), "/", NULL)) != NOTOK) { mp->foldpath = concat(mp->foldpath, "/", NULL); - cp = isprefix(maildir, mp->foldpath) - ? mp->foldpath + strlen(maildir) - : mp->foldpath; + cp = (strncmp(mp->foldpath, maildir, strlen(maildir))==0) ? + mp->foldpath + strlen(maildir) : + mp->foldpath; for (msgnum = procp; msgnum < vecp; msgnum++) vec[msgnum] = concat(cp, vec[msgnum], NULL); } -- 1.7.10.4