Fixed. See the attachment.
------------------------------------------------------------------------
                                               From Beijing, China
Sam Varshavchik wrote:

[EMAIL PROTECTED] writes:

-       else if (strcmp(p, INBOX "." SENT) == 0)
+       else if (strncmp(p, INBOX "." SENT, strlen(INBOX "." SENT)) == 0)
                printf("%s", n_sent);

This is wrong.  Consider a folder named INBOX.SentLastMonth




--- folder.c.orig       Tue Mar 14 07:36:16 2006
+++ folder.c    Mon May 29 13:18:45 2006
@@ -1068,7 +1068,7 @@
                printf("%s", n_drafts);
        else if (strcmp(p, INBOX "." TRASH) == 0)
                printf("%s", n_trash);
-       else if (strcmp(p, INBOX "." SENT) == 0)
+       else if (strcmp(p, INBOX "." SENT) == 0 || strcmp(path, SENT) == 0)
                printf("%s", n_sent);
        else
                list_folder(path);
@@ -1146,6 +1146,7 @@
        size_t  i;
        const   char *p;
        int     has_shared=0;
+       int     flag_new_name_buf;
 
        maildir_listfolders(inbox_pfix, homedir, &folders);
        for (i=0; folders[i]; i++)
@@ -1178,6 +1179,7 @@
                        continue;
 
                p=folders[i];
+               flag_new_name_buf=0;
 
                if (strcmp(p, INBOX) == 0)
                        p=folder_inbox;
@@ -1185,8 +1187,23 @@
                        p=folder_drafts;
                else if (strcmp(p, INBOX "." TRASH) == 0)
                        p=folder_trash;
-               else if (strcmp(p, INBOX "." SENT) == 0)
-                       p=folder_sent;
+               else if (strcmp(p, INBOX "." SENT) == 0
+                       || strncmp(p, INBOX "." SENT ".", strlen(INBOX "." SENT 
".")) == 0)
+               {
+                       char *q;
+
+                       q=malloc(strlen(folder_sent)+strlen(p)-strlen(INBOX "." 
SENT)+1);
+                       strcpy(q, folder_sent);
+                       strcat(q, p+strlen(INBOX "." SENT));
+                       p=q;
+                       /* We must free newly allocated buffer below.
+                        * Although there's a "continue;" below, if the program 
goes here,
+                        * it will NOT meet the "continue;". */
+                       flag_new_name_buf=1;
+               }
+               else if(strncmp(p, INBOX ".", strlen(INBOX ".")) == 0)
+                       p+=strlen(INBOX ".");
+
                if (!p) p=folders[i];
 
                if (strncmp(folders[i], SHARED ".", sizeof(SHARED)) == 0)
@@ -1222,10 +1239,9 @@
                        printf("%s.", getarg("PUBLICFOLDERS"));
                }
 
-               p=strchr(folders[i], '.');
-
-               list_folder(p ? p+1:folders[i]);
+               list_folder(p);
                printf("</option>\n");
+               if(flag_new_name_buf) free(p);
        }
        maildir_freefolders(&folders);
 }
_______________________________________________
courier-users mailing list
[email protected]
Unsubscribe: https://lists.sourceforge.net/lists/listinfo/courier-users

Reply via email to