cmd-uid.c revision def516ea503a60f20d510c14d5070b7ff5bbddf4
8c294c1cd4d721818a59684cf7f2b36123f79163Stephen Gallagher/* Copyright (C) 2002 Timo Sirainen */
8c294c1cd4d721818a59684cf7f2b36123f79163Stephen Gallagher
8c294c1cd4d721818a59684cf7f2b36123f79163Stephen Gallagher#include "common.h"
8c294c1cd4d721818a59684cf7f2b36123f79163Stephen Gallagher#include "commands.h"
8c294c1cd4d721818a59684cf7f2b36123f79163Stephen Gallagher
c252d148fa8ab50aaaa8bbae7beb4d208025171dNikolai Kondrashovint cmd_uid(Client *client)
9542512d7be40f2000298c86d3d2b728f4f0f65aStephen Gallagher{
9542512d7be40f2000298c86d3d2b728f4f0f65aStephen Gallagher const char *cmd;
9542512d7be40f2000298c86d3d2b728f4f0f65aStephen Gallagher
8d15291907aaa4d50bb66fdb7a5002fce7ac7bf4Nikolai Kondrashov /* UID <command> <args> */
4bd20c075f0f187db0181dc53d00ab6cd47fdb4dJakub Hrozek cmd = imap_parser_read_word(client->parser);
8d15291907aaa4d50bb66fdb7a5002fce7ac7bf4Nikolai Kondrashov if (cmd == NULL)
8d15291907aaa4d50bb66fdb7a5002fce7ac7bf4Nikolai Kondrashov return FALSE;
fd5a4eacd56700ffb08a73121aeacdc806cb0132Sumit Bose
8b1f525acd20f36c836e827de3c251088961c5d9Stephen Gallagher client->cmd_func = NULL;
8b1f525acd20f36c836e827de3c251088961c5d9Stephen Gallagher switch (*cmd) {
8b1f525acd20f36c836e827de3c251088961c5d9Stephen Gallagher case 'c':
8b1f525acd20f36c836e827de3c251088961c5d9Stephen Gallagher case 'C':
8b1f525acd20f36c836e827de3c251088961c5d9Stephen Gallagher if (strcasecmp(cmd, "COPY") == 0)
84ae5edab16ad6be5e3be956cb6fa031c1428eb5Stephen Gallagher client->cmd_func = cmd_copy;
551aa6c36797ed720487f5974dcadabf19e6ff9fStephen Gallagher break;
df4cc3a83c5d6700b6a09ff96cb4a6b1949b1aa9Stephen Gallagher case 'f':
df4cc3a83c5d6700b6a09ff96cb4a6b1949b1aa9Stephen Gallagher case 'F':
551aa6c36797ed720487f5974dcadabf19e6ff9fStephen Gallagher if (strcasecmp(cmd, "FETCH") == 0)
551aa6c36797ed720487f5974dcadabf19e6ff9fStephen Gallagher client->cmd_func = cmd_fetch;
551aa6c36797ed720487f5974dcadabf19e6ff9fStephen Gallagher break;
551aa6c36797ed720487f5974dcadabf19e6ff9fStephen Gallagher case 's':
551aa6c36797ed720487f5974dcadabf19e6ff9fStephen Gallagher case 'S':
551aa6c36797ed720487f5974dcadabf19e6ff9fStephen Gallagher if (strcasecmp(cmd, "STORE") == 0)
551aa6c36797ed720487f5974dcadabf19e6ff9fStephen Gallagher client->cmd_func = cmd_store;
551aa6c36797ed720487f5974dcadabf19e6ff9fStephen Gallagher else if (strcasecmp(cmd, "SEARCH") == 0)
551aa6c36797ed720487f5974dcadabf19e6ff9fStephen Gallagher client->cmd_func = cmd_search;
551aa6c36797ed720487f5974dcadabf19e6ff9fStephen Gallagher else if (strcasecmp(cmd, "SORT") == 0)
551aa6c36797ed720487f5974dcadabf19e6ff9fStephen Gallagher client->cmd_func = cmd_sort;
551aa6c36797ed720487f5974dcadabf19e6ff9fStephen Gallagher break;
551aa6c36797ed720487f5974dcadabf19e6ff9fStephen Gallagher }
90fd1bbd6035cdab46faa3a695a2fb2be6508b17Sumit Bose
90fd1bbd6035cdab46faa3a695a2fb2be6508b17Sumit Bose if (client->cmd_func != NULL) {
90fd1bbd6035cdab46faa3a695a2fb2be6508b17Sumit Bose client->cmd_uid = TRUE;
af4ffe1001adcc0a96897e426d26444f07af9aa1Benjamin Franzke return client->cmd_func(client);
af4ffe1001adcc0a96897e426d26444f07af9aa1Benjamin Franzke } else {
af4ffe1001adcc0a96897e426d26444f07af9aa1Benjamin Franzke client_send_tagline(client, t_strconcat(
551aa6c36797ed720487f5974dcadabf19e6ff9fStephen Gallagher "BAD Unknown UID command ", cmd, NULL));
2a552e43581c74f51205c7141ec9f6e9542509f8Stephen Gallagher return TRUE;
2a552e43581c74f51205c7141ec9f6e9542509f8Stephen Gallagher }
551aa6c36797ed720487f5974dcadabf19e6ff9fStephen Gallagher}
8214510f125879c3b1d247f2ce981ee20b5375d1Jakub Hrozek