Mercurial > dovecot > original-hg > dovecot-1.2
annotate src/imap/commands.c @ 8027:62cf70991cf2 HEAD
extern/static fixes (from a sparse check by Diego Liziero)
author | Timo Sirainen <tss@iki.fi> |
---|---|
date | Sun, 20 Jul 2008 21:00:33 +0300 |
parents | ca2ff54ee9b4 |
children | b9faf4db2a9f |
rev | line source |
---|---|
7086
7ed926ed7aa4
Updated copyright notices to include year 2008.
Timo Sirainen <tss@iki.fi>
parents:
6494
diff
changeset
|
1 /* Copyright (c) 2002-2008 Dovecot authors, see the included COPYING file */ |
0 | 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 |
8027
62cf70991cf2
extern/static fixes (from a sparse check by Diego Liziero)
Timo Sirainen <tss@iki.fi>
parents:
7917
diff
changeset
|
10 static 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 }, |
7288
0917df31efec
LOGOUT command also closes mailbox, so mark it as such to fix command
Timo Sirainen <tss@iki.fi>
parents:
7086
diff
changeset
|
12 { "LOGOUT", cmd_logout, COMMAND_FLAG_BREAKS_MAILBOX }, |
4941
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 }; |
6494
59490181469e
Use N_ELEMENTS() macro instead of doing sizeof()/sizeof([0]) ourself.
Timo Sirainen <tss@iki.fi>
parents:
6429
diff
changeset
|
41 #define IMAP4REV1_COMMANDS_COUNT N_ELEMENTS(imap4rev1_commands) |
0 | 42 |
8027
62cf70991cf2
extern/static fixes (from a sparse check by Diego Liziero)
Timo Sirainen <tss@iki.fi>
parents:
7917
diff
changeset
|
43 static const struct command imap_ext_commands[] = { |
7647
879208fdc7e3
Implemented CONTEXT=SEARCH extension.
Timo Sirainen <tss@iki.fi>
parents:
7621
diff
changeset
|
44 { "CANCELUPDATE", cmd_cancelupdate,0 }, |
7621
bec7141872eb
Added support for ENABLE extension.
Timo Sirainen <tss@iki.fi>
parents:
7288
diff
changeset
|
45 { "ENABLE", cmd_enable, 0 }, |
7917
ca2ff54ee9b4
Added support for IMAP ID extension.
Timo Sirainen <tss@iki.fi>
parents:
7647
diff
changeset
|
46 { "ID", cmd_id, 0 }, |
4941
f612d2086448
If running commands in parallel would cause ambiguity, run them
Timo Sirainen <tss@iki.fi>
parents:
4939
diff
changeset
|
47 { "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
|
48 { "NAMESPACE", cmd_namespace, 0 }, |
f612d2086448
If running commands in parallel would cause ambiguity, run them
Timo Sirainen <tss@iki.fi>
parents:
4939
diff
changeset
|
49 { "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
|
50 { "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
|
51 { "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
|
52 { "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
|
53 { "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
|
54 { "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
|
55 { "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
|
56 }; |
6494
59490181469e
Use N_ELEMENTS() macro instead of doing sizeof()/sizeof([0]) ourself.
Timo Sirainen <tss@iki.fi>
parents:
6429
diff
changeset
|
57 #define IMAP_EXT_COMMANDS_COUNT N_ELEMENTS(imap_ext_commands) |
1464
bd489d13479e
Added command_register() and related functions so we can dynamically
Timo Sirainen <tss@iki.fi>
parents:
1172
diff
changeset
|
58 |
4629
0d24ee6b4ccd
Use array_t in commands buffer.
Timo Sirainen <tss@iki.fi>
parents:
4451
diff
changeset
|
59 static ARRAY_DEFINE(commands, struct command); |
0d24ee6b4ccd
Use array_t in commands buffer.
Timo Sirainen <tss@iki.fi>
parents:
4451
diff
changeset
|
60 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
|
61 |
5568
cce4074b7876
Added command flags parameter to command_register()
Timo Sirainen <tss@iki.fi>
parents:
4941
diff
changeset
|
62 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
|
63 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
|
64 { |
1471
8f56379c3917
Renamed buffer_*_space() to buffer_*_space_unsafe() and added several
Timo Sirainen <tss@iki.fi>
parents:
1464
diff
changeset
|
65 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
|
66 |
5568
cce4074b7876
Added command flags parameter to command_register()
Timo Sirainen <tss@iki.fi>
parents:
4941
diff
changeset
|
67 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
|
68 cmd.name = name; |
8f56379c3917
Renamed buffer_*_space() to buffer_*_space_unsafe() and added several
Timo Sirainen <tss@iki.fi>
parents:
1464
diff
changeset
|
69 cmd.func = func; |
5568
cce4074b7876
Added command flags parameter to command_register()
Timo Sirainen <tss@iki.fi>
parents:
4941
diff
changeset
|
70 cmd.flags = flags; |
4629
0d24ee6b4ccd
Use array_t in commands buffer.
Timo Sirainen <tss@iki.fi>
parents:
4451
diff
changeset
|
71 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
|
72 |
4629
0d24ee6b4ccd
Use array_t in commands buffer.
Timo Sirainen <tss@iki.fi>
parents:
4451
diff
changeset
|
73 commands_unsorted = TRUE; |
1464
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 |
bd489d13479e
Added command_register() and related functions so we can dynamically
Timo Sirainen <tss@iki.fi>
parents:
1172
diff
changeset
|
76 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
|
77 { |
bd489d13479e
Added command_register() and related functions so we can dynamically
Timo Sirainen <tss@iki.fi>
parents:
1172
diff
changeset
|
78 const struct command *cmd; |
4629
0d24ee6b4ccd
Use array_t in commands buffer.
Timo Sirainen <tss@iki.fi>
parents:
4451
diff
changeset
|
79 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
|
80 |
4629
0d24ee6b4ccd
Use array_t in commands buffer.
Timo Sirainen <tss@iki.fi>
parents:
4451
diff
changeset
|
81 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
|
82 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
|
83 if (strcasecmp(cmd[i].name, name) == 0) { |
4629
0d24ee6b4ccd
Use array_t in commands buffer.
Timo Sirainen <tss@iki.fi>
parents:
4451
diff
changeset
|
84 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
|
85 return; |
bd489d13479e
Added command_register() and related functions so we can dynamically
Timo Sirainen <tss@iki.fi>
parents:
1172
diff
changeset
|
86 } |
0 | 87 } |
88 | |
1464
bd489d13479e
Added command_register() and related functions so we can dynamically
Timo Sirainen <tss@iki.fi>
parents:
1172
diff
changeset
|
89 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
|
90 } |
bd489d13479e
Added command_register() and related functions so we can dynamically
Timo Sirainen <tss@iki.fi>
parents:
1172
diff
changeset
|
91 |
4629
0d24ee6b4ccd
Use array_t in commands buffer.
Timo Sirainen <tss@iki.fi>
parents:
4451
diff
changeset
|
92 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
|
93 { |
4629
0d24ee6b4ccd
Use array_t in commands buffer.
Timo Sirainen <tss@iki.fi>
parents:
4451
diff
changeset
|
94 commands_unsorted = TRUE; |
0d24ee6b4ccd
Use array_t in commands buffer.
Timo Sirainen <tss@iki.fi>
parents:
4451
diff
changeset
|
95 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
|
96 } |
bd489d13479e
Added command_register() and related functions so we can dynamically
Timo Sirainen <tss@iki.fi>
parents:
1172
diff
changeset
|
97 |
4629
0d24ee6b4ccd
Use array_t in commands buffer.
Timo Sirainen <tss@iki.fi>
parents:
4451
diff
changeset
|
98 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
|
99 { |
bd489d13479e
Added command_register() and related functions so we can dynamically
Timo Sirainen <tss@iki.fi>
parents:
1172
diff
changeset
|
100 while (count > 0) { |
4629
0d24ee6b4ccd
Use array_t in commands buffer.
Timo Sirainen <tss@iki.fi>
parents:
4451
diff
changeset
|
101 command_unregister(cmdarr->name); |
0d24ee6b4ccd
Use array_t in commands buffer.
Timo Sirainen <tss@iki.fi>
parents:
4451
diff
changeset
|
102 count--; cmdarr++; |
1464
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 |
bd489d13479e
Added command_register() and related functions so we can dynamically
Timo Sirainen <tss@iki.fi>
parents:
1172
diff
changeset
|
106 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
|
107 { |
bd489d13479e
Added command_register() and related functions so we can dynamically
Timo Sirainen <tss@iki.fi>
parents:
1172
diff
changeset
|
108 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
|
109 |
bd489d13479e
Added command_register() and related functions so we can dynamically
Timo Sirainen <tss@iki.fi>
parents:
1172
diff
changeset
|
110 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
|
111 } |
bd489d13479e
Added command_register() and related functions so we can dynamically
Timo Sirainen <tss@iki.fi>
parents:
1172
diff
changeset
|
112 |
bd489d13479e
Added command_register() and related functions so we can dynamically
Timo Sirainen <tss@iki.fi>
parents:
1172
diff
changeset
|
113 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
|
114 { |
bd489d13479e
Added command_register() and related functions so we can dynamically
Timo Sirainen <tss@iki.fi>
parents:
1172
diff
changeset
|
115 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
|
116 |
bd489d13479e
Added command_register() and related functions so we can dynamically
Timo Sirainen <tss@iki.fi>
parents:
1172
diff
changeset
|
117 return strcasecmp(name, cmd->name); |
0 | 118 } |
1464
bd489d13479e
Added command_register() and related functions so we can dynamically
Timo Sirainen <tss@iki.fi>
parents:
1172
diff
changeset
|
119 |
4941
f612d2086448
If running commands in parallel would cause ambiguity, run them
Timo Sirainen <tss@iki.fi>
parents:
4939
diff
changeset
|
120 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
|
121 { |
bd489d13479e
Added command_register() and related functions so we can dynamically
Timo Sirainen <tss@iki.fi>
parents:
1172
diff
changeset
|
122 void *base; |
4629
0d24ee6b4ccd
Use array_t in commands buffer.
Timo Sirainen <tss@iki.fi>
parents:
4451
diff
changeset
|
123 unsigned int count; |
1464
bd489d13479e
Added command_register() and related functions so we can dynamically
Timo Sirainen <tss@iki.fi>
parents:
1172
diff
changeset
|
124 |
4629
0d24ee6b4ccd
Use array_t in commands buffer.
Timo Sirainen <tss@iki.fi>
parents:
4451
diff
changeset
|
125 base = array_get_modifiable(&commands, &count); |
0d24ee6b4ccd
Use array_t in commands buffer.
Timo Sirainen <tss@iki.fi>
parents:
4451
diff
changeset
|
126 if (commands_unsorted) { |
0d24ee6b4ccd
Use array_t in commands buffer.
Timo Sirainen <tss@iki.fi>
parents:
4451
diff
changeset
|
127 qsort(base, count, sizeof(struct command), command_cmp); |
0d24ee6b4ccd
Use array_t in commands buffer.
Timo Sirainen <tss@iki.fi>
parents:
4451
diff
changeset
|
128 commands_unsorted = FALSE; |
1464
bd489d13479e
Added command_register() and related functions so we can dynamically
Timo Sirainen <tss@iki.fi>
parents:
1172
diff
changeset
|
129 } |
bd489d13479e
Added command_register() and related functions so we can dynamically
Timo Sirainen <tss@iki.fi>
parents:
1172
diff
changeset
|
130 |
4941
f612d2086448
If running commands in parallel would cause ambiguity, run them
Timo Sirainen <tss@iki.fi>
parents:
4939
diff
changeset
|
131 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
|
132 command_bsearch); |
1464
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 |
bd489d13479e
Added command_register() and related functions so we can dynamically
Timo Sirainen <tss@iki.fi>
parents:
1172
diff
changeset
|
135 void commands_init(void) |
bd489d13479e
Added command_register() and related functions so we can dynamically
Timo Sirainen <tss@iki.fi>
parents:
1172
diff
changeset
|
136 { |
4629
0d24ee6b4ccd
Use array_t in commands buffer.
Timo Sirainen <tss@iki.fi>
parents:
4451
diff
changeset
|
137 i_array_init(&commands, 64); |
0d24ee6b4ccd
Use array_t in commands buffer.
Timo Sirainen <tss@iki.fi>
parents:
4451
diff
changeset
|
138 commands_unsorted = FALSE; |
1464
bd489d13479e
Added command_register() and related functions so we can dynamically
Timo Sirainen <tss@iki.fi>
parents:
1172
diff
changeset
|
139 |
bd489d13479e
Added command_register() and related functions so we can dynamically
Timo Sirainen <tss@iki.fi>
parents:
1172
diff
changeset
|
140 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
|
141 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
|
142 } |
bd489d13479e
Added command_register() and related functions so we can dynamically
Timo Sirainen <tss@iki.fi>
parents:
1172
diff
changeset
|
143 |
bd489d13479e
Added command_register() and related functions so we can dynamically
Timo Sirainen <tss@iki.fi>
parents:
1172
diff
changeset
|
144 void commands_deinit(void) |
bd489d13479e
Added command_register() and related functions so we can dynamically
Timo Sirainen <tss@iki.fi>
parents:
1172
diff
changeset
|
145 { |
bd489d13479e
Added command_register() and related functions so we can dynamically
Timo Sirainen <tss@iki.fi>
parents:
1172
diff
changeset
|
146 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
|
147 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
|
148 array_free(&commands); |
1464
bd489d13479e
Added command_register() and related functions so we can dynamically
Timo Sirainen <tss@iki.fi>
parents:
1172
diff
changeset
|
149 } |