From: markus schnalke Date: Sat, 5 Nov 2011 10:47:42 +0000 (+0100) Subject: Renamed ssequal() to isprefix(), because that's what it checks. X-Git-Tag: mmh-thesis-end~480 X-Git-Url: http://git.marmaro.de/?p=mmh;a=commitdiff_plain;h=c20b4fa14515c7ab388ce35411d89a7a92300711 Renamed ssequal() to isprefix(), because that's what it checks. --- diff --git a/h/prototypes.h b/h/prototypes.h index 81c4801..6200ea6 100644 --- a/h/prototypes.h +++ b/h/prototypes.h @@ -113,7 +113,7 @@ void seq_setunseen(struct msgs *, int); int showfile(char **, char *); int smatch(char *, struct swit *); char *snprintb(char *, size_t, unsigned, char *); -int ssequal(char *, char *); +int isprefix(char *, char *); int stringdex(char *, char *); char *trimcpy(unsigned char *); int unputenv(char *); diff --git a/sbr/Makefile.in b/sbr/Makefile.in index 65a6261..0cb7488 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 ssequal.c strcasecmp.c \ + smatch.c snprintb.c isprefix.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 new file mode 100644 index 0000000..33c0699 --- /dev/null +++ b/sbr/isprefix.c @@ -0,0 +1,35 @@ +/* +** 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 89da537..a67305b 100644 --- a/sbr/m_convert.c +++ b/sbr/m_convert.c @@ -335,11 +335,12 @@ attr(struct msgs *mp, char *cp) /* hack for "cur-name", "cur-n", etc. */ if (!strcmp(cp, "cur")) return 0; - if (ssequal("cur:", cp)) /* this code need to be rewritten... */ + if (isprefix("cur:", cp)) /* this code need to be rewritten... */ return 0; /* Check for sequence negation */ - if ((dp = context_find(nsequence)) && *dp != '\0' && ssequal(dp, cp)) { + if ((dp = context_find(nsequence)) && *dp != '\0' && + isprefix(dp, cp)) { inverted = 1; cp += strlen(dp); } diff --git a/sbr/path.c b/sbr/path.c index b19415a..b13c5fe 100644 --- a/sbr/path.c +++ b/sbr/path.c @@ -54,7 +54,7 @@ expath(char *name, int flag) name = m_mailpath(buffer); compath(name); snprintf(buffer, sizeof(buffer), "%s/", m_maildir("")); - if (ssequal(buffer, name)) { + if (isprefix(buffer, name)) { cp = name; name = getcpy(name + strlen(buffer)); free(cp); diff --git a/sbr/print_sw.c b/sbr/print_sw.c index 6f0c981..7924fbc 100644 --- a/sbr/print_sw.c +++ b/sbr/print_sw.c @@ -20,7 +20,7 @@ print_sw(char *substr, struct swit *swp, char *prefix, FILE *fp) len = strlen(substr); for (; swp->sw; swp++) { /* null matches all strings */ - if (!*substr || (ssequal(substr, swp->sw) && len >= swp->minchars)) { + if (!*substr || (isprefix(substr, swp->sw) && 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 141c1a2..1c231dd 100644 --- a/sbr/seq_read.c +++ b/sbr/seq_read.c @@ -131,7 +131,7 @@ seq_private(struct msgs *mp) plen = strlen(mp->foldpath) + 1; for (np = m_defs; np; np = np->n_next) { - if (ssequal("atr-", np->n_name) + if (isprefix("atr-", np->n_name) && (j = strlen(np->n_name) - plen) > alen && *(np->n_name + j) == '-' && strcmp(mp->foldpath, np->n_name + j + 1) diff --git a/sbr/ssequal.c b/sbr/ssequal.c deleted file mode 100644 index 99b1249..0000000 --- a/sbr/ssequal.c +++ /dev/null @@ -1,36 +0,0 @@ -/* -** ssequal.c -- check if a string is a substring 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 CODE DOES NOT WORK AS ADVERTISED. -** It is actually checking if s1 is a PREFIX of s2. -** All calls to this function need to be checked to see -** if that needs to be changed. Prefix checking is cheaper, so -** should be kept if it's sufficient. -*/ - -/* -** Check if s1 is a substring of s2. -** If yes, then return 1, else return 0. -*/ - -int -ssequal(char *s1, char *s2) -{ - if (!s1) - s1 = ""; - if (!s2) - s2 = ""; - - while (*s1) - if (*s1++ != *s2++) - return 0; - return 1; -} diff --git a/uip/flist.c b/uip/flist.c index 0f44555..a86d226 100644 --- a/uip/flist.c +++ b/uip/flist.c @@ -691,7 +691,7 @@ do_readonly_folders(void) atrlen = strlen(atrcur); for (np = m_defs; np; np = np->n_next) - if (ssequal(atrcur, np->n_name) - && !ssequal(nmhdir, np->n_name + atrlen)) + if (isprefix(atrcur, np->n_name) + && !isprefix(nmhdir, np->n_name + atrlen)) BuildFolderList(np->n_name + atrlen, 0); } diff --git a/uip/folder.c b/uip/folder.c index 06788b2..ac931ce 100644 --- a/uip/folder.c +++ b/uip/folder.c @@ -658,7 +658,7 @@ readonly_folders(void) atrlen = strlen(atrcur); for (np = m_defs; np; np = np->n_next) - if (ssequal(atrcur, np->n_name) - && !ssequal(nmhdir, np->n_name + atrlen)) + if (isprefix(atrcur, np->n_name) + && !isprefix(nmhdir, np->n_name + atrlen)) get_folder_info(np->n_name + atrlen, NULL); } diff --git a/uip/rmf.c b/uip/rmf.c index 38a93ff..fff4abb 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 (ssequal("atr-", np->n_name) && + if (isprefix("atr-", np->n_name) && (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 dc6d24e..f536af7 100644 --- a/uip/show.c +++ b/uip/show.c @@ -338,7 +338,7 @@ go_to_it: ; && chdir(maildir = concat(m_maildir(""), "/", NULL)) != NOTOK) { mp->foldpath = concat(mp->foldpath, "/", NULL); - cp = ssequal(maildir, mp->foldpath) + cp = isprefix(maildir, mp->foldpath) ? mp->foldpath + strlen(maildir) : mp->foldpath; for (msgnum = procp; msgnum < vecp; msgnum++)