Mercurial > dovecot > original-hg > dovecot-1.2
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 |
rev | line source |
---|---|
0 | 1 /* Copyright (C) 2002 Timo Sirainen */ |
2 | |
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 | 6 #include "commands.h" |
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 | 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 | 86 } |
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 | 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 } |