annotate src/imap/cmd-sort.c @ 9658:8ba4253adc9b HEAD tip

*-login: SSL connections didn't get closed when the client got destroyed.
author Timo Sirainen <tss@iki.fi>
date Thu, 08 May 2014 16:41:29 +0300
parents 00cd9aacd03c
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
9532
00cd9aacd03c Updated copyright notices to include year 2010.
Timo Sirainen <tss@iki.fi>
parents: 9444
diff changeset
1 /* Copyright (c) 2002-2010 Dovecot authors, see the included COPYING file */
761
d3bd41a56309 First implementation of SORT extension. String comparing still not up to
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
2
d3bd41a56309 First implementation of SORT extension. String comparing still not up to
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
3 #include "common.h"
765
553f050c8313 Added buffer API. Point is to hide all buffer writing behind this API which
Timo Sirainen <tss@iki.fi>
parents: 764
diff changeset
4 #include "buffer.h"
761
d3bd41a56309 First implementation of SORT extension. String comparing still not up to
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
5 #include "commands.h"
8711
bd2bb6ff0a83 Renamed imap-search.[ch] to imap-search-args.[ch]
Timo Sirainen <tss@iki.fi>
parents: 8590
diff changeset
6 #include "imap-search-args.h"
8714
bbdbab5354d6 Implemented support for ESORT capability.
Timo Sirainen <tss@iki.fi>
parents: 8711
diff changeset
7 #include "imap-search.h"
761
d3bd41a56309 First implementation of SORT extension. String comparing still not up to
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
8
903
fd8888f6f037 Naming style changes, finally got tired of most of the typedefs. Also the
Timo Sirainen <tss@iki.fi>
parents: 877
diff changeset
9 struct sort_name {
fd8888f6f037 Naming style changes, finally got tired of most of the typedefs. Also the
Timo Sirainen <tss@iki.fi>
parents: 877
diff changeset
10 enum mail_sort_type type;
761
d3bd41a56309 First implementation of SORT extension. String comparing still not up to
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
11 const char *name;
903
fd8888f6f037 Naming style changes, finally got tired of most of the typedefs. Also the
Timo Sirainen <tss@iki.fi>
parents: 877
diff changeset
12 };
761
d3bd41a56309 First implementation of SORT extension. String comparing still not up to
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
13
903
fd8888f6f037 Naming style changes, finally got tired of most of the typedefs. Also the
Timo Sirainen <tss@iki.fi>
parents: 877
diff changeset
14 static struct sort_name sort_names[] = {
8006
0a3b5ddb0869 Added support for sorting by X-SCORE. Currently it's only set by fts-solr.
Timo Sirainen <tss@iki.fi>
parents: 8005
diff changeset
15 { MAIL_SORT_ARRIVAL, "arrival" },
0a3b5ddb0869 Added support for sorting by X-SCORE. Currently it's only set by fts-solr.
Timo Sirainen <tss@iki.fi>
parents: 8005
diff changeset
16 { MAIL_SORT_CC, "cc" },
0a3b5ddb0869 Added support for sorting by X-SCORE. Currently it's only set by fts-solr.
Timo Sirainen <tss@iki.fi>
parents: 8005
diff changeset
17 { MAIL_SORT_DATE, "date" },
0a3b5ddb0869 Added support for sorting by X-SCORE. Currently it's only set by fts-solr.
Timo Sirainen <tss@iki.fi>
parents: 8005
diff changeset
18 { MAIL_SORT_FROM, "from" },
0a3b5ddb0869 Added support for sorting by X-SCORE. Currently it's only set by fts-solr.
Timo Sirainen <tss@iki.fi>
parents: 8005
diff changeset
19 { MAIL_SORT_SIZE, "size" },
0a3b5ddb0869 Added support for sorting by X-SCORE. Currently it's only set by fts-solr.
Timo Sirainen <tss@iki.fi>
parents: 8005
diff changeset
20 { MAIL_SORT_SUBJECT, "subject" },
0a3b5ddb0869 Added support for sorting by X-SCORE. Currently it's only set by fts-solr.
Timo Sirainen <tss@iki.fi>
parents: 8005
diff changeset
21 { MAIL_SORT_TO, "to" },
0a3b5ddb0869 Added support for sorting by X-SCORE. Currently it's only set by fts-solr.
Timo Sirainen <tss@iki.fi>
parents: 8005
diff changeset
22 { MAIL_SORT_SEARCH_SCORE, "x-score" },
9444
a5d8d201bd39 imap: Implemented SORT=DISPLAY extension (draft-ietf-morg-sortdisplay-02).
Timo Sirainen <tss@iki.fi>
parents: 8846
diff changeset
23 { MAIL_SORT_DISPLAYFROM, "displayfrom" },
a5d8d201bd39 imap: Implemented SORT=DISPLAY extension (draft-ietf-morg-sortdisplay-02).
Timo Sirainen <tss@iki.fi>
parents: 8846
diff changeset
24 { MAIL_SORT_DISPLAYTO, "displayto" },
761
d3bd41a56309 First implementation of SORT extension. String comparing still not up to
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
25
8006
0a3b5ddb0869 Added support for sorting by X-SCORE. Currently it's only set by fts-solr.
Timo Sirainen <tss@iki.fi>
parents: 8005
diff changeset
26 { MAIL_SORT_END, NULL }
761
d3bd41a56309 First implementation of SORT extension. String comparing still not up to
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
27 };
d3bd41a56309 First implementation of SORT extension. String comparing still not up to
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
28
4303
5f03738219a6 Changed mail-storage API to do the mail sorting internally. Optimized it
Timo Sirainen <timo.sirainen@movial.fi>
parents: 3863
diff changeset
29 static int
5835
d59ed6a31b66 Added more consts to imap-parser API
Timo Sirainen <tss@iki.fi>
parents: 4939
diff changeset
30 get_sort_program(struct client_command_context *cmd,
d59ed6a31b66 Added more consts to imap-parser API
Timo Sirainen <tss@iki.fi>
parents: 4939
diff changeset
31 const struct imap_arg *args,
4303
5f03738219a6 Changed mail-storage API to do the mail sorting internally. Optimized it
Timo Sirainen <timo.sirainen@movial.fi>
parents: 3863
diff changeset
32 enum mail_sort_type program[MAX_SORT_PROGRAM_SIZE])
761
d3bd41a56309 First implementation of SORT extension. String comparing still not up to
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
33 {
4303
5f03738219a6 Changed mail-storage API to do the mail sorting internally. Optimized it
Timo Sirainen <timo.sirainen@movial.fi>
parents: 3863
diff changeset
34 enum mail_sort_type mask = 0;
5f03738219a6 Changed mail-storage API to do the mail sorting internally. Optimized it
Timo Sirainen <timo.sirainen@movial.fi>
parents: 3863
diff changeset
35 unsigned int i, pos;
8005
67eb95aa7293 SORT: Return BAD if sort program ends with REVERSE.
Timo Sirainen <tss@iki.fi>
parents: 7798
diff changeset
36 bool reverse, last_reverse;
761
d3bd41a56309 First implementation of SORT extension. String comparing still not up to
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
37
1012
b2d9219c60af Give nice error message for "SORT ()"
Timo Sirainen <tss@iki.fi>
parents: 988
diff changeset
38 if (args->type == IMAP_ARG_EOL) {
b2d9219c60af Give nice error message for "SORT ()"
Timo Sirainen <tss@iki.fi>
parents: 988
diff changeset
39 /* empyty list */
3141
61abed5f7864 Moved command-specific variables from struct client to struct
Timo Sirainen <tss@iki.fi>
parents: 2708
diff changeset
40 client_send_command_error(cmd, "Empty sort program.");
4303
5f03738219a6 Changed mail-storage API to do the mail sorting internally. Optimized it
Timo Sirainen <timo.sirainen@movial.fi>
parents: 3863
diff changeset
41 return -1;
1012
b2d9219c60af Give nice error message for "SORT ()"
Timo Sirainen <tss@iki.fi>
parents: 988
diff changeset
42 }
b2d9219c60af Give nice error message for "SORT ()"
Timo Sirainen <tss@iki.fi>
parents: 988
diff changeset
43
8005
67eb95aa7293 SORT: Return BAD if sort program ends with REVERSE.
Timo Sirainen <tss@iki.fi>
parents: 7798
diff changeset
44 pos = 0; reverse = last_reverse = FALSE;
4303
5f03738219a6 Changed mail-storage API to do the mail sorting internally. Optimized it
Timo Sirainen <timo.sirainen@movial.fi>
parents: 3863
diff changeset
45 for (; args->type == IMAP_ARG_ATOM || args->type == IMAP_ARG_STRING;
5f03738219a6 Changed mail-storage API to do the mail sorting internally. Optimized it
Timo Sirainen <timo.sirainen@movial.fi>
parents: 3863
diff changeset
46 args++) {
5f03738219a6 Changed mail-storage API to do the mail sorting internally. Optimized it
Timo Sirainen <timo.sirainen@movial.fi>
parents: 3863
diff changeset
47 const char *arg = IMAP_ARG_STR(args);
761
d3bd41a56309 First implementation of SORT extension. String comparing still not up to
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
48
8005
67eb95aa7293 SORT: Return BAD if sort program ends with REVERSE.
Timo Sirainen <tss@iki.fi>
parents: 7798
diff changeset
49 last_reverse = strcasecmp(arg, "reverse") == 0;
67eb95aa7293 SORT: Return BAD if sort program ends with REVERSE.
Timo Sirainen <tss@iki.fi>
parents: 7798
diff changeset
50 if (last_reverse) {
4303
5f03738219a6 Changed mail-storage API to do the mail sorting internally. Optimized it
Timo Sirainen <timo.sirainen@movial.fi>
parents: 3863
diff changeset
51 reverse = !reverse;
5f03738219a6 Changed mail-storage API to do the mail sorting internally. Optimized it
Timo Sirainen <timo.sirainen@movial.fi>
parents: 3863
diff changeset
52 continue;
5f03738219a6 Changed mail-storage API to do the mail sorting internally. Optimized it
Timo Sirainen <timo.sirainen@movial.fi>
parents: 3863
diff changeset
53 }
761
d3bd41a56309 First implementation of SORT extension. String comparing still not up to
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
54
d3bd41a56309 First implementation of SORT extension. String comparing still not up to
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
55 for (i = 0; sort_names[i].type != MAIL_SORT_END; i++) {
d3bd41a56309 First implementation of SORT extension. String comparing still not up to
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
56 if (strcasecmp(arg, sort_names[i].name) == 0)
d3bd41a56309 First implementation of SORT extension. String comparing still not up to
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
57 break;
d3bd41a56309 First implementation of SORT extension. String comparing still not up to
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
58 }
d3bd41a56309 First implementation of SORT extension. String comparing still not up to
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
59
d3bd41a56309 First implementation of SORT extension. String comparing still not up to
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
60 if (sort_names[i].type == MAIL_SORT_END) {
3141
61abed5f7864 Moved command-specific variables from struct client to struct
Timo Sirainen <tss@iki.fi>
parents: 2708
diff changeset
61 client_send_command_error(cmd, t_strconcat(
761
d3bd41a56309 First implementation of SORT extension. String comparing still not up to
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
62 "Unknown sort argument: ", arg, NULL));
4303
5f03738219a6 Changed mail-storage API to do the mail sorting internally. Optimized it
Timo Sirainen <timo.sirainen@movial.fi>
parents: 3863
diff changeset
63 return -1;
761
d3bd41a56309 First implementation of SORT extension. String comparing still not up to
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
64 }
d3bd41a56309 First implementation of SORT extension. String comparing still not up to
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
65
4303
5f03738219a6 Changed mail-storage API to do the mail sorting internally. Optimized it
Timo Sirainen <timo.sirainen@movial.fi>
parents: 3863
diff changeset
66 if ((mask & sort_names[i].type) != 0)
5f03738219a6 Changed mail-storage API to do the mail sorting internally. Optimized it
Timo Sirainen <timo.sirainen@movial.fi>
parents: 3863
diff changeset
67 continue;
5f03738219a6 Changed mail-storage API to do the mail sorting internally. Optimized it
Timo Sirainen <timo.sirainen@movial.fi>
parents: 3863
diff changeset
68 mask |= sort_names[i].type;
5f03738219a6 Changed mail-storage API to do the mail sorting internally. Optimized it
Timo Sirainen <timo.sirainen@movial.fi>
parents: 3863
diff changeset
69
5f03738219a6 Changed mail-storage API to do the mail sorting internally. Optimized it
Timo Sirainen <timo.sirainen@movial.fi>
parents: 3863
diff changeset
70 /* @UNSAFE: mask check should prevent us from ever
5f03738219a6 Changed mail-storage API to do the mail sorting internally. Optimized it
Timo Sirainen <timo.sirainen@movial.fi>
parents: 3863
diff changeset
71 overflowing */
5f03738219a6 Changed mail-storage API to do the mail sorting internally. Optimized it
Timo Sirainen <timo.sirainen@movial.fi>
parents: 3863
diff changeset
72 i_assert(pos < MAX_SORT_PROGRAM_SIZE-1);
5f03738219a6 Changed mail-storage API to do the mail sorting internally. Optimized it
Timo Sirainen <timo.sirainen@movial.fi>
parents: 3863
diff changeset
73 program[pos++] = sort_names[i].type |
5f03738219a6 Changed mail-storage API to do the mail sorting internally. Optimized it
Timo Sirainen <timo.sirainen@movial.fi>
parents: 3863
diff changeset
74 (reverse ? MAIL_SORT_FLAG_REVERSE : 0);
5f03738219a6 Changed mail-storage API to do the mail sorting internally. Optimized it
Timo Sirainen <timo.sirainen@movial.fi>
parents: 3863
diff changeset
75 reverse = FALSE;
761
d3bd41a56309 First implementation of SORT extension. String comparing still not up to
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
76 }
8005
67eb95aa7293 SORT: Return BAD if sort program ends with REVERSE.
Timo Sirainen <tss@iki.fi>
parents: 7798
diff changeset
77 if (last_reverse) {
67eb95aa7293 SORT: Return BAD if sort program ends with REVERSE.
Timo Sirainen <tss@iki.fi>
parents: 7798
diff changeset
78 client_send_command_error(cmd, "Sort list ends with REVERSE.");
67eb95aa7293 SORT: Return BAD if sort program ends with REVERSE.
Timo Sirainen <tss@iki.fi>
parents: 7798
diff changeset
79 return -1;
67eb95aa7293 SORT: Return BAD if sort program ends with REVERSE.
Timo Sirainen <tss@iki.fi>
parents: 7798
diff changeset
80 }
4303
5f03738219a6 Changed mail-storage API to do the mail sorting internally. Optimized it
Timo Sirainen <timo.sirainen@movial.fi>
parents: 3863
diff changeset
81 program[pos++] = MAIL_SORT_END;
761
d3bd41a56309 First implementation of SORT extension. String comparing still not up to
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
82
d3bd41a56309 First implementation of SORT extension. String comparing still not up to
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
83 if (args->type != IMAP_ARG_EOL) {
3141
61abed5f7864 Moved command-specific variables from struct client to struct
Timo Sirainen <tss@iki.fi>
parents: 2708
diff changeset
84 client_send_command_error(cmd,
761
d3bd41a56309 First implementation of SORT extension. String comparing still not up to
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
85 "Invalid sort list argument.");
4303
5f03738219a6 Changed mail-storage API to do the mail sorting internally. Optimized it
Timo Sirainen <timo.sirainen@movial.fi>
parents: 3863
diff changeset
86 return -1;
761
d3bd41a56309 First implementation of SORT extension. String comparing still not up to
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
87 }
d3bd41a56309 First implementation of SORT extension. String comparing still not up to
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
88
4303
5f03738219a6 Changed mail-storage API to do the mail sorting internally. Optimized it
Timo Sirainen <timo.sirainen@movial.fi>
parents: 3863
diff changeset
89 return 0;
761
d3bd41a56309 First implementation of SORT extension. String comparing still not up to
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
90 }
d3bd41a56309 First implementation of SORT extension. String comparing still not up to
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
91
3863
55df57c028d4 Added "bool" type and changed all ints that were used as booleans to bool.
Timo Sirainen <tss@iki.fi>
parents: 3765
diff changeset
92 bool cmd_sort(struct client_command_context *cmd)
761
d3bd41a56309 First implementation of SORT extension. String comparing still not up to
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
93 {
8714
bbdbab5354d6 Implemented support for ESORT capability.
Timo Sirainen <tss@iki.fi>
parents: 8711
diff changeset
94 struct imap_search_context *ctx;
7642
077bb84e9e77 Make mail_search_args an independent structure that can be used for multiple
Timo Sirainen <tss@iki.fi>
parents: 7639
diff changeset
95 struct mail_search_args *sargs;
8714
bbdbab5354d6 Implemented support for ESORT capability.
Timo Sirainen <tss@iki.fi>
parents: 8711
diff changeset
96 enum mail_sort_type sort_program[MAX_SORT_PROGRAM_SIZE];
5835
d59ed6a31b66 Added more consts to imap-parser API
Timo Sirainen <tss@iki.fi>
parents: 4939
diff changeset
97 const struct imap_arg *args;
7639
03146f02403f Implemented SEARCHRES extension.
Timo Sirainen <tss@iki.fi>
parents: 7086
diff changeset
98 const char *charset;
03146f02403f Implemented SEARCHRES extension.
Timo Sirainen <tss@iki.fi>
parents: 7086
diff changeset
99 int ret;
761
d3bd41a56309 First implementation of SORT extension. String comparing still not up to
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
100
8727
d2c357625ef2 Avoid calling imap_parser_*() directly. It's not required.
Timo Sirainen <tss@iki.fi>
parents: 8714
diff changeset
101 if (!client_read_args(cmd, 0, 0, &args))
761
d3bd41a56309 First implementation of SORT extension. String comparing still not up to
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
102 return FALSE;
d3bd41a56309 First implementation of SORT extension. String comparing still not up to
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
103
3141
61abed5f7864 Moved command-specific variables from struct client to struct
Timo Sirainen <tss@iki.fi>
parents: 2708
diff changeset
104 if (!client_verify_open_mailbox(cmd))
761
d3bd41a56309 First implementation of SORT extension. String comparing still not up to
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
105 return TRUE;
d3bd41a56309 First implementation of SORT extension. String comparing still not up to
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
106
8846
d6ef39b9e4cf IMAP: ESORT extension was implemented wrong.
Timo Sirainen <tss@iki.fi>
parents: 8727
diff changeset
107 ctx = p_new(cmd->pool, struct imap_search_context, 1);
d6ef39b9e4cf IMAP: ESORT extension was implemented wrong.
Timo Sirainen <tss@iki.fi>
parents: 8727
diff changeset
108 ctx->cmd = cmd;
d6ef39b9e4cf IMAP: ESORT extension was implemented wrong.
Timo Sirainen <tss@iki.fi>
parents: 8727
diff changeset
109
d6ef39b9e4cf IMAP: ESORT extension was implemented wrong.
Timo Sirainen <tss@iki.fi>
parents: 8727
diff changeset
110 if ((ret = cmd_search_parse_return_if_found(ctx, &args)) <= 0) {
d6ef39b9e4cf IMAP: ESORT extension was implemented wrong.
Timo Sirainen <tss@iki.fi>
parents: 8727
diff changeset
111 /* error / waiting for unambiguity */
d6ef39b9e4cf IMAP: ESORT extension was implemented wrong.
Timo Sirainen <tss@iki.fi>
parents: 8727
diff changeset
112 return ret < 0;
d6ef39b9e4cf IMAP: ESORT extension was implemented wrong.
Timo Sirainen <tss@iki.fi>
parents: 8727
diff changeset
113 }
d6ef39b9e4cf IMAP: ESORT extension was implemented wrong.
Timo Sirainen <tss@iki.fi>
parents: 8727
diff changeset
114
761
d3bd41a56309 First implementation of SORT extension. String comparing still not up to
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
115 /* sort program */
d3bd41a56309 First implementation of SORT extension. String comparing still not up to
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
116 if (args->type != IMAP_ARG_LIST) {
3141
61abed5f7864 Moved command-specific variables from struct client to struct
Timo Sirainen <tss@iki.fi>
parents: 2708
diff changeset
117 client_send_command_error(cmd, "Invalid sort argument.");
761
d3bd41a56309 First implementation of SORT extension. String comparing still not up to
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
118 return TRUE;
d3bd41a56309 First implementation of SORT extension. String comparing still not up to
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
119 }
d3bd41a56309 First implementation of SORT extension. String comparing still not up to
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
120
8714
bbdbab5354d6 Implemented support for ESORT capability.
Timo Sirainen <tss@iki.fi>
parents: 8711
diff changeset
121 if (get_sort_program(cmd, IMAP_ARG_LIST_ARGS(args), sort_program) < 0)
761
d3bd41a56309 First implementation of SORT extension. String comparing still not up to
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
122 return TRUE;
d3bd41a56309 First implementation of SORT extension. String comparing still not up to
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
123 args++;
d3bd41a56309 First implementation of SORT extension. String comparing still not up to
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
124
d3bd41a56309 First implementation of SORT extension. String comparing still not up to
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
125 /* charset */
d3bd41a56309 First implementation of SORT extension. String comparing still not up to
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
126 if (args->type != IMAP_ARG_ATOM && args->type != IMAP_ARG_STRING) {
3141
61abed5f7864 Moved command-specific variables from struct client to struct
Timo Sirainen <tss@iki.fi>
parents: 2708
diff changeset
127 client_send_command_error(cmd,
761
d3bd41a56309 First implementation of SORT extension. String comparing still not up to
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
128 "Invalid charset argument.");
924
4f697dde0fca THREAD=REFERENCES implementation. Doesn't crash, but I'm not sure how
Timo Sirainen <tss@iki.fi>
parents: 903
diff changeset
129 return TRUE;
761
d3bd41a56309 First implementation of SORT extension. String comparing still not up to
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
130 }
877
7935347f54f1 Don't access ImapArg's union members directly - too easy to mess up. Fixes a
Timo Sirainen <tss@iki.fi>
parents: 825
diff changeset
131 charset = IMAP_ARG_STR(args);
761
d3bd41a56309 First implementation of SORT extension. String comparing still not up to
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
132 args++;
d3bd41a56309 First implementation of SORT extension. String comparing still not up to
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
133
7642
077bb84e9e77 Make mail_search_args an independent structure that can be used for multiple
Timo Sirainen <tss@iki.fi>
parents: 7639
diff changeset
134 ret = imap_search_args_build(cmd, args, charset, &sargs);
7639
03146f02403f Implemented SEARCHRES extension.
Timo Sirainen <tss@iki.fi>
parents: 7086
diff changeset
135 if (ret <= 0)
03146f02403f Implemented SEARCHRES extension.
Timo Sirainen <tss@iki.fi>
parents: 7086
diff changeset
136 return ret < 0;
761
d3bd41a56309 First implementation of SORT extension. String comparing still not up to
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
137
8714
bbdbab5354d6 Implemented support for ESORT capability.
Timo Sirainen <tss@iki.fi>
parents: 8711
diff changeset
138 return imap_search_start(ctx, sargs, sort_program);
761
d3bd41a56309 First implementation of SORT extension. String comparing still not up to
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
139 }