annotate src/imap/commands.c @ 5568:cce4074b7876 HEAD

Added command flags parameter to command_register()
author Timo Sirainen <tss@iki.fi>
date Tue, 17 Apr 2007 18:41:24 +0300
parents f612d2086448
children 65c69a53a7be
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
3b1985cbc908 Initial revision
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
1 /* Copyright (C) 2002 Timo Sirainen */
3b1985cbc908 Initial revision
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
2
3b1985cbc908 Initial revision
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
3 #include "common.h"
4629
0d24ee6b4ccd Use array_t in commands buffer.
Timo Sirainen <tss@iki.fi>
parents: 4451
diff changeset
4 #include "array.h"
1464
bd489d13479e Added command_register() and related functions so we can dynamically
Timo Sirainen <tss@iki.fi>
parents: 1172
diff changeset
5 #include "buffer.h"
0
3b1985cbc908 Initial revision
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
6 #include "commands.h"
3b1985cbc908 Initial revision
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
7
1464
bd489d13479e Added command_register() and related functions so we can dynamically
Timo Sirainen <tss@iki.fi>
parents: 1172
diff changeset
8 #include <stdlib.h>
bd489d13479e Added command_register() and related functions so we can dynamically
Timo Sirainen <tss@iki.fi>
parents: 1172
diff changeset
9
bd489d13479e Added command_register() and related functions so we can dynamically
Timo Sirainen <tss@iki.fi>
parents: 1172
diff changeset
10 const struct command imap4rev1_commands[] = {
4941
f612d2086448 If running commands in parallel would cause ambiguity, run them
Timo Sirainen <tss@iki.fi>
parents: 4939
diff changeset
11 { "CAPABILITY", cmd_capability, 0 },
f612d2086448 If running commands in parallel would cause ambiguity, run them
Timo Sirainen <tss@iki.fi>
parents: 4939
diff changeset
12 { "LOGOUT", cmd_logout, 0 },
f612d2086448 If running commands in parallel would cause ambiguity, run them
Timo Sirainen <tss@iki.fi>
parents: 4939
diff changeset
13 { "NOOP", cmd_noop, COMMAND_FLAG_BREAKS_SEQS },
1464
bd489d13479e Added command_register() and related functions so we can dynamically
Timo Sirainen <tss@iki.fi>
parents: 1172
diff changeset
14
4941
f612d2086448 If running commands in parallel would cause ambiguity, run them
Timo Sirainen <tss@iki.fi>
parents: 4939
diff changeset
15 { "APPEND", cmd_append, COMMAND_FLAG_BREAKS_SEQS },
f612d2086448 If running commands in parallel would cause ambiguity, run them
Timo Sirainen <tss@iki.fi>
parents: 4939
diff changeset
16 { "EXAMINE", cmd_examine, COMMAND_FLAG_BREAKS_MAILBOX },
f612d2086448 If running commands in parallel would cause ambiguity, run them
Timo Sirainen <tss@iki.fi>
parents: 4939
diff changeset
17 { "CREATE", cmd_create, 0 },
f612d2086448 If running commands in parallel would cause ambiguity, run them
Timo Sirainen <tss@iki.fi>
parents: 4939
diff changeset
18 { "DELETE", cmd_delete, 0 },
f612d2086448 If running commands in parallel would cause ambiguity, run them
Timo Sirainen <tss@iki.fi>
parents: 4939
diff changeset
19 { "RENAME", cmd_rename, 0 },
f612d2086448 If running commands in parallel would cause ambiguity, run them
Timo Sirainen <tss@iki.fi>
parents: 4939
diff changeset
20 { "LIST", cmd_list, 0 },
f612d2086448 If running commands in parallel would cause ambiguity, run them
Timo Sirainen <tss@iki.fi>
parents: 4939
diff changeset
21 { "LSUB", cmd_lsub, 0 },
f612d2086448 If running commands in parallel would cause ambiguity, run them
Timo Sirainen <tss@iki.fi>
parents: 4939
diff changeset
22 { "SELECT", cmd_select, COMMAND_FLAG_BREAKS_MAILBOX },
f612d2086448 If running commands in parallel would cause ambiguity, run them
Timo Sirainen <tss@iki.fi>
parents: 4939
diff changeset
23 { "STATUS", cmd_status, 0 },
f612d2086448 If running commands in parallel would cause ambiguity, run them
Timo Sirainen <tss@iki.fi>
parents: 4939
diff changeset
24 { "SUBSCRIBE", cmd_subscribe, 0 },
f612d2086448 If running commands in parallel would cause ambiguity, run them
Timo Sirainen <tss@iki.fi>
parents: 4939
diff changeset
25 { "UNSUBSCRIBE", cmd_unsubscribe, 0 },
1464
bd489d13479e Added command_register() and related functions so we can dynamically
Timo Sirainen <tss@iki.fi>
parents: 1172
diff changeset
26
4941
f612d2086448 If running commands in parallel would cause ambiguity, run them
Timo Sirainen <tss@iki.fi>
parents: 4939
diff changeset
27 { "CHECK", cmd_check, COMMAND_FLAG_BREAKS_SEQS },
f612d2086448 If running commands in parallel would cause ambiguity, run them
Timo Sirainen <tss@iki.fi>
parents: 4939
diff changeset
28 { "CLOSE", cmd_close, COMMAND_FLAG_BREAKS_MAILBOX },
f612d2086448 If running commands in parallel would cause ambiguity, run them
Timo Sirainen <tss@iki.fi>
parents: 4939
diff changeset
29 { "COPY", cmd_copy, COMMAND_FLAG_USES_SEQS |
f612d2086448 If running commands in parallel would cause ambiguity, run them
Timo Sirainen <tss@iki.fi>
parents: 4939
diff changeset
30 COMMAND_FLAG_BREAKS_SEQS },
f612d2086448 If running commands in parallel would cause ambiguity, run them
Timo Sirainen <tss@iki.fi>
parents: 4939
diff changeset
31 { "EXPUNGE", cmd_expunge, COMMAND_FLAG_BREAKS_SEQS },
f612d2086448 If running commands in parallel would cause ambiguity, run them
Timo Sirainen <tss@iki.fi>
parents: 4939
diff changeset
32 { "FETCH", cmd_fetch, COMMAND_FLAG_USES_SEQS },
f612d2086448 If running commands in parallel would cause ambiguity, run them
Timo Sirainen <tss@iki.fi>
parents: 4939
diff changeset
33 { "SEARCH", cmd_search, COMMAND_FLAG_USES_SEQS },
f612d2086448 If running commands in parallel would cause ambiguity, run them
Timo Sirainen <tss@iki.fi>
parents: 4939
diff changeset
34 { "STORE", cmd_store, COMMAND_FLAG_USES_SEQS },
f612d2086448 If running commands in parallel would cause ambiguity, run them
Timo Sirainen <tss@iki.fi>
parents: 4939
diff changeset
35 { "UID", cmd_uid, 0 },
f612d2086448 If running commands in parallel would cause ambiguity, run them
Timo Sirainen <tss@iki.fi>
parents: 4939
diff changeset
36 { "UID COPY", cmd_copy, COMMAND_FLAG_BREAKS_SEQS },
f612d2086448 If running commands in parallel would cause ambiguity, run them
Timo Sirainen <tss@iki.fi>
parents: 4939
diff changeset
37 { "UID FETCH", cmd_fetch, COMMAND_FLAG_BREAKS_SEQS },
f612d2086448 If running commands in parallel would cause ambiguity, run them
Timo Sirainen <tss@iki.fi>
parents: 4939
diff changeset
38 { "UID SEARCH", cmd_search, COMMAND_FLAG_BREAKS_SEQS },
f612d2086448 If running commands in parallel would cause ambiguity, run them
Timo Sirainen <tss@iki.fi>
parents: 4939
diff changeset
39 { "UID STORE", cmd_store, COMMAND_FLAG_BREAKS_SEQS }
1464
bd489d13479e Added command_register() and related functions so we can dynamically
Timo Sirainen <tss@iki.fi>
parents: 1172
diff changeset
40 };
bd489d13479e Added command_register() and related functions so we can dynamically
Timo Sirainen <tss@iki.fi>
parents: 1172
diff changeset
41 #define IMAP4REV1_COMMANDS_COUNT \
bd489d13479e Added command_register() and related functions so we can dynamically
Timo Sirainen <tss@iki.fi>
parents: 1172
diff changeset
42 (sizeof(imap4rev1_commands) / sizeof(imap4rev1_commands[0]))
0
3b1985cbc908 Initial revision
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
43
1464
bd489d13479e Added command_register() and related functions so we can dynamically
Timo Sirainen <tss@iki.fi>
parents: 1172
diff changeset
44 const struct command imap_ext_commands[] = {
4941
f612d2086448 If running commands in parallel would cause ambiguity, run them
Timo Sirainen <tss@iki.fi>
parents: 4939
diff changeset
45 { "IDLE", cmd_idle, COMMAND_FLAG_BREAKS_SEQS },
f612d2086448 If running commands in parallel would cause ambiguity, run them
Timo Sirainen <tss@iki.fi>
parents: 4939
diff changeset
46 { "NAMESPACE", cmd_namespace, 0 },
f612d2086448 If running commands in parallel would cause ambiguity, run them
Timo Sirainen <tss@iki.fi>
parents: 4939
diff changeset
47 { "SORT", cmd_sort, COMMAND_FLAG_USES_SEQS },
f612d2086448 If running commands in parallel would cause ambiguity, run them
Timo Sirainen <tss@iki.fi>
parents: 4939
diff changeset
48 { "THREAD", cmd_thread, COMMAND_FLAG_USES_SEQS },
f612d2086448 If running commands in parallel would cause ambiguity, run them
Timo Sirainen <tss@iki.fi>
parents: 4939
diff changeset
49 { "UID EXPUNGE", cmd_uid_expunge, COMMAND_FLAG_BREAKS_SEQS },
f612d2086448 If running commands in parallel would cause ambiguity, run them
Timo Sirainen <tss@iki.fi>
parents: 4939
diff changeset
50 { "UID SORT", cmd_sort, COMMAND_FLAG_BREAKS_SEQS },
f612d2086448 If running commands in parallel would cause ambiguity, run them
Timo Sirainen <tss@iki.fi>
parents: 4939
diff changeset
51 { "UID THREAD", cmd_thread, COMMAND_FLAG_BREAKS_SEQS },
f612d2086448 If running commands in parallel would cause ambiguity, run them
Timo Sirainen <tss@iki.fi>
parents: 4939
diff changeset
52 { "UNSELECT", cmd_unselect, COMMAND_FLAG_BREAKS_MAILBOX },
f612d2086448 If running commands in parallel would cause ambiguity, run them
Timo Sirainen <tss@iki.fi>
parents: 4939
diff changeset
53 { "X-CANCEL", cmd_x_cancel, 0 }
1464
bd489d13479e Added command_register() and related functions so we can dynamically
Timo Sirainen <tss@iki.fi>
parents: 1172
diff changeset
54 };
bd489d13479e Added command_register() and related functions so we can dynamically
Timo Sirainen <tss@iki.fi>
parents: 1172
diff changeset
55 #define IMAP_EXT_COMMANDS_COUNT \
bd489d13479e Added command_register() and related functions so we can dynamically
Timo Sirainen <tss@iki.fi>
parents: 1172
diff changeset
56 (sizeof(imap_ext_commands) / sizeof(imap_ext_commands[0]))
bd489d13479e Added command_register() and related functions so we can dynamically
Timo Sirainen <tss@iki.fi>
parents: 1172
diff changeset
57
4629
0d24ee6b4ccd Use array_t in commands buffer.
Timo Sirainen <tss@iki.fi>
parents: 4451
diff changeset
58 static ARRAY_DEFINE(commands, struct command);
0d24ee6b4ccd Use array_t in commands buffer.
Timo Sirainen <tss@iki.fi>
parents: 4451
diff changeset
59 static bool commands_unsorted;
1464
bd489d13479e Added command_register() and related functions so we can dynamically
Timo Sirainen <tss@iki.fi>
parents: 1172
diff changeset
60
5568
cce4074b7876 Added command flags parameter to command_register()
Timo Sirainen <tss@iki.fi>
parents: 4941
diff changeset
61 void command_register(const char *name, command_func_t *func,
cce4074b7876 Added command flags parameter to command_register()
Timo Sirainen <tss@iki.fi>
parents: 4941
diff changeset
62 enum command_flags flags)
1464
bd489d13479e Added command_register() and related functions so we can dynamically
Timo Sirainen <tss@iki.fi>
parents: 1172
diff changeset
63 {
1471
8f56379c3917 Renamed buffer_*_space() to buffer_*_space_unsafe() and added several
Timo Sirainen <tss@iki.fi>
parents: 1464
diff changeset
64 struct command cmd;
1021
81cbc1467097 Added support for UNSELECT extension with some cleanups for SELECT and CLOSE.
Timo Sirainen <tss@iki.fi>
parents: 953
diff changeset
65
5568
cce4074b7876 Added command flags parameter to command_register()
Timo Sirainen <tss@iki.fi>
parents: 4941
diff changeset
66 memset(&cmd, 0, sizeof(cmd));
1471
8f56379c3917 Renamed buffer_*_space() to buffer_*_space_unsafe() and added several
Timo Sirainen <tss@iki.fi>
parents: 1464
diff changeset
67 cmd.name = name;
8f56379c3917 Renamed buffer_*_space() to buffer_*_space_unsafe() and added several
Timo Sirainen <tss@iki.fi>
parents: 1464
diff changeset
68 cmd.func = func;
5568
cce4074b7876 Added command flags parameter to command_register()
Timo Sirainen <tss@iki.fi>
parents: 4941
diff changeset
69 cmd.flags = flags;
4629
0d24ee6b4ccd Use array_t in commands buffer.
Timo Sirainen <tss@iki.fi>
parents: 4451
diff changeset
70 array_append(&commands, &cmd, 1);
1464
bd489d13479e Added command_register() and related functions so we can dynamically
Timo Sirainen <tss@iki.fi>
parents: 1172
diff changeset
71
4629
0d24ee6b4ccd Use array_t in commands buffer.
Timo Sirainen <tss@iki.fi>
parents: 4451
diff changeset
72 commands_unsorted = TRUE;
1464
bd489d13479e Added command_register() and related functions so we can dynamically
Timo Sirainen <tss@iki.fi>
parents: 1172
diff changeset
73 }
bd489d13479e Added command_register() and related functions so we can dynamically
Timo Sirainen <tss@iki.fi>
parents: 1172
diff changeset
74
bd489d13479e Added command_register() and related functions so we can dynamically
Timo Sirainen <tss@iki.fi>
parents: 1172
diff changeset
75 void command_unregister(const char *name)
bd489d13479e Added command_register() and related functions so we can dynamically
Timo Sirainen <tss@iki.fi>
parents: 1172
diff changeset
76 {
bd489d13479e Added command_register() and related functions so we can dynamically
Timo Sirainen <tss@iki.fi>
parents: 1172
diff changeset
77 const struct command *cmd;
4629
0d24ee6b4ccd Use array_t in commands buffer.
Timo Sirainen <tss@iki.fi>
parents: 4451
diff changeset
78 unsigned int i, count;
1464
bd489d13479e Added command_register() and related functions so we can dynamically
Timo Sirainen <tss@iki.fi>
parents: 1172
diff changeset
79
4629
0d24ee6b4ccd Use array_t in commands buffer.
Timo Sirainen <tss@iki.fi>
parents: 4451
diff changeset
80 cmd = array_get(&commands, &count);
1464
bd489d13479e Added command_register() and related functions so we can dynamically
Timo Sirainen <tss@iki.fi>
parents: 1172
diff changeset
81 for (i = 0; i < count; i++) {
bd489d13479e Added command_register() and related functions so we can dynamically
Timo Sirainen <tss@iki.fi>
parents: 1172
diff changeset
82 if (strcasecmp(cmd[i].name, name) == 0) {
4629
0d24ee6b4ccd Use array_t in commands buffer.
Timo Sirainen <tss@iki.fi>
parents: 4451
diff changeset
83 array_delete(&commands, i, 1);
1464
bd489d13479e Added command_register() and related functions so we can dynamically
Timo Sirainen <tss@iki.fi>
parents: 1172
diff changeset
84 return;
bd489d13479e Added command_register() and related functions so we can dynamically
Timo Sirainen <tss@iki.fi>
parents: 1172
diff changeset
85 }
0
3b1985cbc908 Initial revision
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
86 }
3b1985cbc908 Initial revision
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
87
1464
bd489d13479e Added command_register() and related functions so we can dynamically
Timo Sirainen <tss@iki.fi>
parents: 1172
diff changeset
88 i_error("Trying to unregister unknown command '%s'", name);
bd489d13479e Added command_register() and related functions so we can dynamically
Timo Sirainen <tss@iki.fi>
parents: 1172
diff changeset
89 }
bd489d13479e Added command_register() and related functions so we can dynamically
Timo Sirainen <tss@iki.fi>
parents: 1172
diff changeset
90
4629
0d24ee6b4ccd Use array_t in commands buffer.
Timo Sirainen <tss@iki.fi>
parents: 4451
diff changeset
91 void command_register_array(const struct command *cmdarr, unsigned int count)
1464
bd489d13479e Added command_register() and related functions so we can dynamically
Timo Sirainen <tss@iki.fi>
parents: 1172
diff changeset
92 {
4629
0d24ee6b4ccd Use array_t in commands buffer.
Timo Sirainen <tss@iki.fi>
parents: 4451
diff changeset
93 commands_unsorted = TRUE;
0d24ee6b4ccd Use array_t in commands buffer.
Timo Sirainen <tss@iki.fi>
parents: 4451
diff changeset
94 array_append(&commands, cmdarr, count);
1464
bd489d13479e Added command_register() and related functions so we can dynamically
Timo Sirainen <tss@iki.fi>
parents: 1172
diff changeset
95 }
bd489d13479e Added command_register() and related functions so we can dynamically
Timo Sirainen <tss@iki.fi>
parents: 1172
diff changeset
96
4629
0d24ee6b4ccd Use array_t in commands buffer.
Timo Sirainen <tss@iki.fi>
parents: 4451
diff changeset
97 void command_unregister_array(const struct command *cmdarr, unsigned int count)
1464
bd489d13479e Added command_register() and related functions so we can dynamically
Timo Sirainen <tss@iki.fi>
parents: 1172
diff changeset
98 {
bd489d13479e Added command_register() and related functions so we can dynamically
Timo Sirainen <tss@iki.fi>
parents: 1172
diff changeset
99 while (count > 0) {
4629
0d24ee6b4ccd Use array_t in commands buffer.
Timo Sirainen <tss@iki.fi>
parents: 4451
diff changeset
100 command_unregister(cmdarr->name);
0d24ee6b4ccd Use array_t in commands buffer.
Timo Sirainen <tss@iki.fi>
parents: 4451
diff changeset
101 count--; cmdarr++;
1464
bd489d13479e Added command_register() and related functions so we can dynamically
Timo Sirainen <tss@iki.fi>
parents: 1172
diff changeset
102 }
bd489d13479e Added command_register() and related functions so we can dynamically
Timo Sirainen <tss@iki.fi>
parents: 1172
diff changeset
103 }
bd489d13479e Added command_register() and related functions so we can dynamically
Timo Sirainen <tss@iki.fi>
parents: 1172
diff changeset
104
bd489d13479e Added command_register() and related functions so we can dynamically
Timo Sirainen <tss@iki.fi>
parents: 1172
diff changeset
105 static int command_cmp(const void *p1, const void *p2)
bd489d13479e Added command_register() and related functions so we can dynamically
Timo Sirainen <tss@iki.fi>
parents: 1172
diff changeset
106 {
bd489d13479e Added command_register() and related functions so we can dynamically
Timo Sirainen <tss@iki.fi>
parents: 1172
diff changeset
107 const struct command *c1 = p1, *c2 = p2;
bd489d13479e Added command_register() and related functions so we can dynamically
Timo Sirainen <tss@iki.fi>
parents: 1172
diff changeset
108
bd489d13479e Added command_register() and related functions so we can dynamically
Timo Sirainen <tss@iki.fi>
parents: 1172
diff changeset
109 return strcasecmp(c1->name, c2->name);
bd489d13479e Added command_register() and related functions so we can dynamically
Timo Sirainen <tss@iki.fi>
parents: 1172
diff changeset
110 }
bd489d13479e Added command_register() and related functions so we can dynamically
Timo Sirainen <tss@iki.fi>
parents: 1172
diff changeset
111
bd489d13479e Added command_register() and related functions so we can dynamically
Timo Sirainen <tss@iki.fi>
parents: 1172
diff changeset
112 static int command_bsearch(const void *name, const void *cmd_p)
bd489d13479e Added command_register() and related functions so we can dynamically
Timo Sirainen <tss@iki.fi>
parents: 1172
diff changeset
113 {
bd489d13479e Added command_register() and related functions so we can dynamically
Timo Sirainen <tss@iki.fi>
parents: 1172
diff changeset
114 const struct command *cmd = cmd_p;
bd489d13479e Added command_register() and related functions so we can dynamically
Timo Sirainen <tss@iki.fi>
parents: 1172
diff changeset
115
bd489d13479e Added command_register() and related functions so we can dynamically
Timo Sirainen <tss@iki.fi>
parents: 1172
diff changeset
116 return strcasecmp(name, cmd->name);
0
3b1985cbc908 Initial revision
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
117 }
1464
bd489d13479e Added command_register() and related functions so we can dynamically
Timo Sirainen <tss@iki.fi>
parents: 1172
diff changeset
118
4941
f612d2086448 If running commands in parallel would cause ambiguity, run them
Timo Sirainen <tss@iki.fi>
parents: 4939
diff changeset
119 struct command *command_find(const char *name)
1464
bd489d13479e Added command_register() and related functions so we can dynamically
Timo Sirainen <tss@iki.fi>
parents: 1172
diff changeset
120 {
bd489d13479e Added command_register() and related functions so we can dynamically
Timo Sirainen <tss@iki.fi>
parents: 1172
diff changeset
121 void *base;
4629
0d24ee6b4ccd Use array_t in commands buffer.
Timo Sirainen <tss@iki.fi>
parents: 4451
diff changeset
122 unsigned int count;
1464
bd489d13479e Added command_register() and related functions so we can dynamically
Timo Sirainen <tss@iki.fi>
parents: 1172
diff changeset
123
4629
0d24ee6b4ccd Use array_t in commands buffer.
Timo Sirainen <tss@iki.fi>
parents: 4451
diff changeset
124 base = array_get_modifiable(&commands, &count);
0d24ee6b4ccd Use array_t in commands buffer.
Timo Sirainen <tss@iki.fi>
parents: 4451
diff changeset
125 if (commands_unsorted) {
0d24ee6b4ccd Use array_t in commands buffer.
Timo Sirainen <tss@iki.fi>
parents: 4451
diff changeset
126 qsort(base, count, sizeof(struct command), command_cmp);
0d24ee6b4ccd Use array_t in commands buffer.
Timo Sirainen <tss@iki.fi>
parents: 4451
diff changeset
127 commands_unsorted = FALSE;
1464
bd489d13479e Added command_register() and related functions so we can dynamically
Timo Sirainen <tss@iki.fi>
parents: 1172
diff changeset
128 }
bd489d13479e Added command_register() and related functions so we can dynamically
Timo Sirainen <tss@iki.fi>
parents: 1172
diff changeset
129
4941
f612d2086448 If running commands in parallel would cause ambiguity, run them
Timo Sirainen <tss@iki.fi>
parents: 4939
diff changeset
130 return bsearch(name, base, count, sizeof(struct command),
f612d2086448 If running commands in parallel would cause ambiguity, run them
Timo Sirainen <tss@iki.fi>
parents: 4939
diff changeset
131 command_bsearch);
1464
bd489d13479e Added command_register() and related functions so we can dynamically
Timo Sirainen <tss@iki.fi>
parents: 1172
diff changeset
132 }
bd489d13479e Added command_register() and related functions so we can dynamically
Timo Sirainen <tss@iki.fi>
parents: 1172
diff changeset
133
bd489d13479e Added command_register() and related functions so we can dynamically
Timo Sirainen <tss@iki.fi>
parents: 1172
diff changeset
134 void commands_init(void)
bd489d13479e Added command_register() and related functions so we can dynamically
Timo Sirainen <tss@iki.fi>
parents: 1172
diff changeset
135 {
4629
0d24ee6b4ccd Use array_t in commands buffer.
Timo Sirainen <tss@iki.fi>
parents: 4451
diff changeset
136 i_array_init(&commands, 64);
0d24ee6b4ccd Use array_t in commands buffer.
Timo Sirainen <tss@iki.fi>
parents: 4451
diff changeset
137 commands_unsorted = FALSE;
1464
bd489d13479e Added command_register() and related functions so we can dynamically
Timo Sirainen <tss@iki.fi>
parents: 1172
diff changeset
138
bd489d13479e Added command_register() and related functions so we can dynamically
Timo Sirainen <tss@iki.fi>
parents: 1172
diff changeset
139 command_register_array(imap4rev1_commands, IMAP4REV1_COMMANDS_COUNT);
bd489d13479e Added command_register() and related functions so we can dynamically
Timo Sirainen <tss@iki.fi>
parents: 1172
diff changeset
140 command_register_array(imap_ext_commands, IMAP_EXT_COMMANDS_COUNT);
bd489d13479e Added command_register() and related functions so we can dynamically
Timo Sirainen <tss@iki.fi>
parents: 1172
diff changeset
141 }
bd489d13479e Added command_register() and related functions so we can dynamically
Timo Sirainen <tss@iki.fi>
parents: 1172
diff changeset
142
bd489d13479e Added command_register() and related functions so we can dynamically
Timo Sirainen <tss@iki.fi>
parents: 1172
diff changeset
143 void commands_deinit(void)
bd489d13479e Added command_register() and related functions so we can dynamically
Timo Sirainen <tss@iki.fi>
parents: 1172
diff changeset
144 {
bd489d13479e Added command_register() and related functions so we can dynamically
Timo Sirainen <tss@iki.fi>
parents: 1172
diff changeset
145 command_unregister_array(imap4rev1_commands, IMAP4REV1_COMMANDS_COUNT);
bd489d13479e Added command_register() and related functions so we can dynamically
Timo Sirainen <tss@iki.fi>
parents: 1172
diff changeset
146 command_unregister_array(imap_ext_commands, IMAP_EXT_COMMANDS_COUNT);
4629
0d24ee6b4ccd Use array_t in commands buffer.
Timo Sirainen <tss@iki.fi>
parents: 4451
diff changeset
147 array_free(&commands);
1464
bd489d13479e Added command_register() and related functions so we can dynamically
Timo Sirainen <tss@iki.fi>
parents: 1172
diff changeset
148 }