Provide better diagnostics.
Showing
1 changed file
with
12 additions
and
7 deletions
... | @@ -62,6 +62,7 @@ imap4d_status (struct imap4d_command *command, char *arg) | ... | @@ -62,6 +62,7 @@ imap4d_status (struct imap4d_command *command, char *arg) |
62 | mailbox_t smbox = NULL; | 62 | mailbox_t smbox = NULL; |
63 | int status; | 63 | int status; |
64 | int count = 0; | 64 | int count = 0; |
65 | char *err_msg = NULL; | ||
65 | 66 | ||
66 | if (! (command->states & state)) | 67 | if (! (command->states & state)) |
67 | return util_finish (command, RESP_BAD, "Wrong state"); | 68 | return util_finish (command, RESP_BAD, "Wrong state"); |
... | @@ -76,13 +77,14 @@ imap4d_status (struct imap4d_command *command, char *arg) | ... | @@ -76,13 +77,14 @@ imap4d_status (struct imap4d_command *command, char *arg) |
76 | struct passwd *pw = mu_getpwuid (getuid()); | 77 | struct passwd *pw = mu_getpwuid (getuid()); |
77 | if (!pw) | 78 | if (!pw) |
78 | return util_finish (command, RESP_NO, "Cannot map UID to username"); | 79 | return util_finish (command, RESP_NO, "Cannot map UID to username"); |
79 | mailbox_name = malloc (strlen (maildir) + strlen (pw->pw_name) + 1); | 80 | mailbox_name = malloc (strlen (mu_path_maildir) + |
81 | strlen (pw->pw_name) + 1); | ||
80 | if (!mailbox_name) | 82 | if (!mailbox_name) |
81 | { | 83 | { |
82 | syslog (LOG_ERR, "Not enough memory"); | 84 | syslog (LOG_ERR, "Not enough memory"); |
83 | return util_finish (command, RESP_NO, "Not enough memory"); | 85 | return util_finish (command, RESP_NO, "Not enough memory"); |
84 | } | 86 | } |
85 | sprintf (mailbox_name, "%s%s", maildir, pw->pw_name); | 87 | sprintf (mailbox_name, "%s%s", mu_path_maildir, pw->pw_name); |
86 | } | 88 | } |
87 | else | 89 | else |
88 | mailbox_name = namespace_getfullpath (name, delim); | 90 | mailbox_name = namespace_getfullpath (name, delim); |
... | @@ -113,7 +115,7 @@ imap4d_status (struct imap4d_command *command, char *arg) | ... | @@ -113,7 +115,7 @@ imap4d_status (struct imap4d_command *command, char *arg) |
113 | fun = status_get_handler (item); | 115 | fun = status_get_handler (item); |
114 | if (!fun) | 116 | if (!fun) |
115 | { | 117 | { |
116 | count = -1; | 118 | err_msg = "Invalid flag in list"; |
117 | break; | 119 | break; |
118 | } | 120 | } |
119 | 121 | ||
... | @@ -123,7 +125,7 @@ imap4d_status (struct imap4d_command *command, char *arg) | ... | @@ -123,7 +125,7 @@ imap4d_status (struct imap4d_command *command, char *arg) |
123 | if (!fun (smbox)) | 125 | if (!fun (smbox)) |
124 | util_send (" "); | 126 | util_send (" "); |
125 | } | 127 | } |
126 | if (count) | 128 | if (count > 0) |
127 | util_send (")\r\n"); | 129 | util_send (")\r\n"); |
128 | mailbox_close (smbox); | 130 | mailbox_close (smbox); |
129 | } | 131 | } |
... | @@ -131,12 +133,15 @@ imap4d_status (struct imap4d_command *command, char *arg) | ... | @@ -131,12 +133,15 @@ imap4d_status (struct imap4d_command *command, char *arg) |
131 | } | 133 | } |
132 | free (mailbox_name); | 134 | free (mailbox_name); |
133 | 135 | ||
136 | if (status == 0) | ||
137 | { | ||
134 | if (count == 0) | 138 | if (count == 0) |
135 | return util_finish (command, RESP_BAD, "Too few args (empty list)"); | 139 | return util_finish (command, RESP_BAD, "Too few args (empty list)"); |
136 | else if (count == -1) | 140 | else if (err_msg) |
137 | return util_finish (command, RESP_BAD, "Invalid flag in list"); | 141 | return util_finish (command, RESP_BAD, err_msg); |
138 | else if (status == 0) | ||
139 | return util_finish (command, RESP_OK, "Completed"); | 142 | return util_finish (command, RESP_OK, "Completed"); |
143 | } | ||
144 | |||
140 | return util_finish (command, RESP_NO, "Error opening mailbox"); | 145 | return util_finish (command, RESP_NO, "Error opening mailbox"); |
141 | } | 146 | } |
142 | 147 | ... | ... |
-
Please register or sign in to post a comment