]> granicus.if.org Git - mutt/commitdiff
Fixing #1282. An off-by-one error. :-/
authorThomas Roessler <roessler@does-not-exist.org>
Wed, 24 Jul 2002 09:33:31 +0000 (09:33 +0000)
committerThomas Roessler <roessler@does-not-exist.org>
Wed, 24 Jul 2002 09:33:31 +0000 (09:33 +0000)
browser.c

index 63f1fac9897dcf69db14d61a5206a9edd769fe1d..168c4d5f1d6193ee3495cde821b8e7c98863b3b6 100644 (file)
--- 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