From c31f31485f76ae917cbe27228cb3e46ea4b52497 Mon Sep 17 00:00:00 2001 From: Thomas Roessler Date: Wed, 24 Jul 2002 09:33:31 +0000 Subject: [PATCH] Fixing #1282. An off-by-one error. :-/ --- browser.c | 46 ++++++++++++++++++++++++---------------------- 1 file changed, 24 insertions(+), 22 deletions(-) diff --git a/browser.c b/browser.c index 63f1fac9..168c4d5f 100644 --- a/browser.c +++ b/browser.c @@ -168,43 +168,45 @@ folder_format_str (char *dest, size_t destlen, char op, const char *src, break; case 'f': + { + char *s; #ifdef USE_IMAP if (folder->ff->imap) - strfcpy (fn, NONULL(folder->ff->desc), sizeof (fn)); + s = NONULL (folder->ff->desc); else #endif - strfcpy (fn, folder->ff->name, sizeof(fn)); - if (folder->ff->st != NULL) - { - strcat (fn, S_ISLNK (folder->ff->st->st_mode) ? "@" : /* __STRCAT_CHECKED__ */ - (S_ISDIR (folder->ff->st->st_mode) ? "/" : - ((folder->ff->st->st_mode & S_IXUSR) != 0 ? "*" : ""))); - } + s = NONULL (folder->ff->name); + + snprintf (fn, sizeof (fn), "%s%s", s, + folder->ff->st ? (S_ISLNK (folder->ff->st->st_mode) ? "@" : + (S_ISDIR (folder->ff->st->st_mode) ? "/" : + ((folder->ff->st->st_mode & S_IXUSR) != 0 ? "*" : ""))) : ""); + mutt_format_s (dest, destlen, fmt, fn); break; - + } case 'F': if (folder->ff->st != NULL) { - sprintf (permission, "%c%c%c%c%c%c%c%c%c%c", - S_ISDIR(folder->ff->st->st_mode) ? 'd' : (S_ISLNK(folder->ff->st->st_mode) ? 'l' : '-'), - (folder->ff->st->st_mode & S_IRUSR) != 0 ? 'r': '-', - (folder->ff->st->st_mode & S_IWUSR) != 0 ? 'w' : '-', - (folder->ff->st->st_mode & S_ISUID) != 0 ? 's' : (folder->ff->st->st_mode & S_IXUSR) != 0 ? 'x': '-', - (folder->ff->st->st_mode & S_IRGRP) != 0 ? 'r' : '-', - (folder->ff->st->st_mode & S_IWGRP) != 0 ? 'w' : '-', - (folder->ff->st->st_mode & S_ISGID) != 0 ? 's' : (folder->ff->st->st_mode & S_IXGRP) != 0 ? 'x': '-', - (folder->ff->st->st_mode & S_IROTH) != 0 ? 'r' : '-', - (folder->ff->st->st_mode & S_IWOTH) != 0 ? 'w' : '-', - (folder->ff->st->st_mode & S_ISVTX) != 0 ? 't' : (folder->ff->st->st_mode & S_IXOTH) != 0 ? 'x': '-'); + snprintf (permission, sizeof (permission), "%c%c%c%c%c%c%c%c%c%c", + S_ISDIR(folder->ff->st->st_mode) ? 'd' : (S_ISLNK(folder->ff->st->st_mode) ? 'l' : '-'), + (folder->ff->st->st_mode & S_IRUSR) != 0 ? 'r': '-', + (folder->ff->st->st_mode & S_IWUSR) != 0 ? 'w' : '-', + (folder->ff->st->st_mode & S_ISUID) != 0 ? 's' : (folder->ff->st->st_mode & S_IXUSR) != 0 ? 'x': '-', + (folder->ff->st->st_mode & S_IRGRP) != 0 ? 'r' : '-', + (folder->ff->st->st_mode & S_IWGRP) != 0 ? 'w' : '-', + (folder->ff->st->st_mode & S_ISGID) != 0 ? 's' : (folder->ff->st->st_mode & S_IXGRP) != 0 ? 'x': '-', + (folder->ff->st->st_mode & S_IROTH) != 0 ? 'r' : '-', + (folder->ff->st->st_mode & S_IWOTH) != 0 ? 'w' : '-', + (folder->ff->st->st_mode & S_ISVTX) != 0 ? 't' : (folder->ff->st->st_mode & S_IXOTH) != 0 ? 'x': '-'); mutt_format_s (dest, destlen, fmt, permission); } #ifdef USE_IMAP else if (folder->ff->imap) { /* mark folders with subfolders AND mail */ - sprintf (permission, "IMAP %c", - (folder->ff->inferiors && folder->ff->selectable) ? '+' : ' '); + snprintf (permission, sizeof (permission), "IMAP %c", + (folder->ff->inferiors && folder->ff->selectable) ? '+' : ' '); mutt_format_s (dest, destlen, fmt, permission); } #endif -- 2.40.0