X-Git-Url: http://git.madism.org/?p=apps%2Fmadmutt.git;a=blobdiff_plain;f=lib-sys%2Funix.c;h=3e2c23dcdc3f7f125f820f683a86143695fa8147;hp=38389b2776be60ae055c56d6b304b13f98654a7d;hb=20e55d4252ca2db1fc2b1099acf8393c22903575;hpb=3766db5f849cea008b1cd3d532c712aeb17aa062 diff --git a/lib-sys/unix.c b/lib-sys/unix.c index 38389b2..3e2c23d 100644 --- a/lib-sys/unix.c +++ b/lib-sys/unix.c @@ -20,7 +20,7 @@ * otherwise assume that the GECOS field is a comma-separated list. * Replace "&" by a capitalized version of the user's login name. */ -ssize_t mutt_gecos_name(char *dst, ssize_t n, struct passwd *pw, regex_t *rx) +ssize_t mutt_gecos_name(char *dst, ssize_t n, struct passwd *pw, rx_t *rx) { const char *p, *end; ssize_t len; @@ -31,24 +31,24 @@ ssize_t mutt_gecos_name(char *dst, ssize_t n, struct passwd *pw, regex_t *rx) if (!pw->pw_gecos) return 0; - if (rx) { + if (rx->rx) { regmatch_t pat_match[1]; - if (regexec(rx, pw->pw_gecos, 1, pat_match, 0)) { + if (regexec(rx->rx, pw->pw_gecos, 1, pat_match, 0)) { return 0; } p = pw->pw_gecos + pat_match[0].rm_so; - end = pw->pw_gecos + pat_match[0].rm_so; + end = pw->pw_gecos + pat_match[0].rm_eo; } else { p = pw->pw_gecos; end = m_strchrnul(pw->pw_gecos, ','); } for (;;) { - const char *q = MIN(end, m_strchrnul(p, '&')); + const char *q = m_strchrnul(p, '&'); - len += m_strncpy(dst + len, n - len, p, q - p); + len += m_strncpy(dst + len, n - len, p, MIN(end, q) - p); p = q + 1; if (!p[-1] || p >= end)