summaryrefslogtreecommitdiff
path: root/imap4d/uid.c
diff options
context:
space:
mode:
Diffstat (limited to 'imap4d/uid.c')
-rw-r--r--imap4d/uid.c28
1 files changed, 27 insertions, 1 deletions
diff --git a/imap4d/uid.c b/imap4d/uid.c
index d716b77a4..af6e18ea1 100644
--- a/imap4d/uid.c
+++ b/imap4d/uid.c
@@ -25,7 +25,33 @@
int
imap4d_uid (struct imap4d_command *command, char *arg)
{
+ char *cmd;
+ char *sp = NULL;
+ int rc = RESP_NO;
+ char buffer[64];
+
if (! (command->states & state))
return util_finish (command, RESP_BAD, "Wrong state");
- return util_finish (command, RESP_NO, "Not supported");
+
+ cmd = util_getword (arg, &sp);
+ if (!cmd)
+ util_finish (command, RESP_BAD, "Too few args");
+ if (strcasecmp (cmd, "FETCH") == 0)
+ {
+ rc = imap4d_fetch0 (sp, 1, buffer, sizeof buffer);
+ }
+ else if (strcasecmp (cmd, "COPY") == 0)
+ {
+ rc = imap4d_copy0 (sp, 1, buffer, sizeof buffer);
+ }
+ else if (strcasecmp (cmd, "STORE") == 0)
+ {
+ rc = imap4d_store0 (sp, 1, buffer, sizeof buffer);
+ }
+ else
+ {
+ snprintf (buffer, sizeof buffer, "Error uknown uid command");
+ rc = RESP_BAD;
+ }
+ return util_finish (command, rc, "%s %s", cmd, buffer);
}

Return to:

Send suggestions and report system problems to the System administrator.