/[imapfilter]/imapfilter/imap.c
ViewVC logotype

Annotation of /imapfilter/imap.c

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.20 - (hide annotations)
Sat Nov 10 15:34:20 2001 UTC (22 years, 4 months ago) by lefcha
Branch: MAIN
CVS Tags: release-0_7
Branch point for: release-0_7-patches
Changes since 1.19: +0 -2 lines
File MIME type: text/plain
Indent to K&R style.

1 lefcha 1.1 #include <stdio.h>
2     #include <string.h>
3     #include <stdlib.h>
4     #include <unistd.h>
5     #include <errno.h>
6    
7     #include "config.h"
8     #include "imapfilter.h"
9 lefcha 1.13 #include "data.h"
10 lefcha 1.1
11    
12 lefcha 1.13 static unsigned int tag = 0xF00000; /* Every IMAP command is prefixed
13     with a unique [:alnum:] string. */
14 lefcha 1.1
15     /*
16 lefcha 1.13 * Send to server data; a command.
17 lefcha 1.1 */
18 lefcha 1.16 unsigned int send_command(char *cmd)
19 lefcha 1.1 {
20     #ifdef DEBUG
21 lefcha 1.9 printf("debug: sending command: %s", cmd);
22 lefcha 1.1 #endif
23 lefcha 1.18
24 lefcha 1.17 socket_write(cmd);
25 lefcha 1.1
26 lefcha 1.16 return tag++;
27 lefcha 1.1 }
28    
29    
30     #ifdef DEBUG
31     /*
32     * IMAP NOOP: does nothing always succeeds.
33     */
34     int imap_noop(void)
35     {
36 lefcha 1.9 char cmd[SMALL_CMD];
37 lefcha 1.1
38 lefcha 1.16 verbose("Client request: NOOP\n");
39 lefcha 1.1
40 lefcha 1.16 snprintf(cmd, SMALL_CMD, "%X NOOP\r\n", tag);
41 lefcha 1.1
42 lefcha 1.13 return send_command(cmd);
43 lefcha 1.1 }
44     #endif
45    
46    
47     /*
48 lefcha 1.16 * IMAP CAPABILITY: requests listing of capabilities that the server supports
49     */
50     int imap_capability(void)
51     {
52     char cmd[SMALL_CMD];
53    
54     verbose("Client request: CAPABILITY\n");
55    
56     snprintf(cmd, SMALL_CMD, "%X CAPABILITY\r\n", tag);
57    
58     return send_command(cmd);
59     }
60    
61    
62     /*
63 lefcha 1.1 * IMAP LOGOUT: informs server that client is done.
64     */
65     int imap_logout(void)
66     {
67 lefcha 1.9 char cmd[SMALL_CMD];
68 lefcha 1.1
69 lefcha 1.16 verbose("Client request: LOGOUT\n");
70 lefcha 1.1
71 lefcha 1.16 snprintf(cmd, SMALL_CMD, "%X LOGOUT\r\n", tag);
72 lefcha 1.1
73 lefcha 1.13 return send_command(cmd);
74 lefcha 1.1 }
75    
76    
77     /*
78     * IMAP LOGIN: identifies client to server.
79     */
80 lefcha 1.13 int imap_login(char *user, char *pass)
81 lefcha 1.1 {
82 lefcha 1.9 char cmd[MEDIUM_CMD];
83 lefcha 1.1
84 lefcha 1.16 verbose("Client request: LOGIN\n");
85 lefcha 1.1
86 lefcha 1.16 snprintf(cmd, MEDIUM_CMD, "%X LOGIN \"%s\" \"%s\"\r\n", tag, user,
87 lefcha 1.13 pass);
88 lefcha 1.1
89 lefcha 1.13 return send_command(cmd);
90 lefcha 1.1 }
91    
92    
93     /*
94 lefcha 1.13 * IMAP EXAMINE: access a mailbox in READ-ONLY mode.
95 lefcha 1.16 *
96 lefcha 1.13 int imap_examine(char *mbox)
97 lefcha 1.1 {
98 lefcha 1.13 char cmd[MEDIUM_CMD];
99 lefcha 1.1
100 lefcha 1.13 verbose("Client request: EXAMINE %s\n", mbox);
101 lefcha 1.1
102 lefcha 1.16 snprintf(cmd, MEDIUM_CMD, "%X EXAMINE \"%s\"\r\n", tag, mbox);
103 lefcha 1.1
104 lefcha 1.13 return send_command(cmd);
105 lefcha 1.16 }*/
106 lefcha 1.10
107 lefcha 1.13
108 lefcha 1.10 /*
109 lefcha 1.13 * IMAP SELECT: access a mailbox in READ-WRITE mode.
110 lefcha 1.10 */
111 lefcha 1.13 int imap_select(char *mbox)
112 lefcha 1.10 {
113 lefcha 1.13 char cmd[SMALL_CMD];
114 lefcha 1.10
115 lefcha 1.16 verbose("Client request: SELECT\n");
116 lefcha 1.10
117 lefcha 1.16 snprintf(cmd, SMALL_CMD, "%X SELECT \"%s\"\r\n", tag, mbox);
118 lefcha 1.10
119 lefcha 1.13 return send_command(cmd);
120 lefcha 1.1 }
121 lefcha 1.10
122 lefcha 1.1
123     /*
124 lefcha 1.13 * IMAP STATUS: requests status of the indicated mailbox.
125 lefcha 1.1 */
126 lefcha 1.13 int imap_status(char *mbox, char *items)
127 lefcha 1.1 {
128 lefcha 1.13 char cmd[MEDIUM_CMD];
129 lefcha 1.1
130 lefcha 1.13 verbose("Client request: STATUS\n");
131 lefcha 1.1
132 lefcha 1.16 snprintf(cmd, MEDIUM_CMD, "%X STATUS %s (%s)\r\n", tag, mbox, items);
133 lefcha 1.5
134 lefcha 1.13 return send_command(cmd);
135 lefcha 1.1 }
136    
137    
138     /*
139 lefcha 1.13 * IMAP CREATE: create mailbox.
140 lefcha 1.1 */
141 lefcha 1.13 int imap_create(char *mbox)
142 lefcha 1.1 {
143 lefcha 1.9 char cmd[MEDIUM_CMD];
144 lefcha 1.1
145 lefcha 1.13 verbose("Client request: CREATE\n");
146 lefcha 1.1
147 lefcha 1.16 snprintf(cmd, MEDIUM_CMD, "%X CREATE %s\r\n", tag, mbox);
148 lefcha 1.1
149 lefcha 1.13 return send_command(cmd);
150 lefcha 1.1 }
151    
152    
153     /*
154 lefcha 1.13 * IMAP SEARCH: searches the mailbox for messages that match certain criteria.
155 lefcha 1.1 */
156 lefcha 1.13 int imap_search(char *search)
157 lefcha 1.1 {
158 lefcha 1.13 char cmd[BIG_CMD];
159 lefcha 1.1
160 lefcha 1.13 verbose("Client request: SEARCH\n");
161 lefcha 1.1
162 lefcha 1.16 snprintf(cmd, BIG_CMD, "%X SEARCH %s\r\n", tag, search);
163 lefcha 1.1
164 lefcha 1.13 return send_command(cmd);
165 lefcha 1.1 }
166    
167    
168     /*
169 lefcha 1.13 * IMAP FETCH: retrieves data associated with a message.
170 lefcha 1.1 */
171 lefcha 1.16 int imap_fetch(char *mesg, char *headers, int peek)
172 lefcha 1.1 {
173 lefcha 1.13 char cmd[MEDIUM_CMD];
174 lefcha 1.1
175 lefcha 1.16 verbose("Client request: FETCH\n");
176 lefcha 1.1
177 lefcha 1.13 snprintf(cmd, MEDIUM_CMD,
178 lefcha 1.16 "%X FETCH %s BODY%s[HEADER.FIELDS (%s)]\r\n", tag, mesg,
179 lefcha 1.14 (peek ? ".PEEK" : ""), headers);
180 lefcha 1.1
181 lefcha 1.13 return send_command(cmd);
182 lefcha 1.1 }
183    
184    
185     /*
186 lefcha 1.13 * IMAP STORE: alters data associated with a message.
187 lefcha 1.1 */
188 lefcha 1.13 int imap_store(char *mesg, char *flags)
189 lefcha 1.1 {
190 lefcha 1.13 char cmd[MEDIUM_CMD];
191 lefcha 1.1
192 lefcha 1.16 verbose("Client request: STORE\n");
193 lefcha 1.5
194 lefcha 1.16 snprintf(cmd, MEDIUM_CMD, "%X STORE %s +FLAGS.SILENT (%s)\r\n", tag, mesg,
195 lefcha 1.13 flags);
196 lefcha 1.5
197 lefcha 1.13 return send_command(cmd);
198 lefcha 1.5 }
199    
200    
201     /*
202 lefcha 1.13 * IMAP COPY: copy messages to mailbox.
203 lefcha 1.5 */
204 lefcha 1.13 int imap_copy(char *mesg, char *mbox)
205 lefcha 1.5 {
206 lefcha 1.13 char cmd[MEDIUM_CMD];
207 lefcha 1.5
208 lefcha 1.13 verbose("Client request: COPY\n");
209 lefcha 1.5
210 lefcha 1.16 snprintf(cmd, SMALL_CMD, "%X COPY %s \"%s\"\r\n", tag, mesg, mbox);
211 lefcha 1.5
212 lefcha 1.13 return send_command(cmd);
213 lefcha 1.5 }
214 lefcha 1.2
215    
216 lefcha 1.5 /*
217 lefcha 1.13 * IMAP CLOSE: delete messages and return to authenticated state.
218 lefcha 1.5 */
219 lefcha 1.13 int imap_close(void)
220 lefcha 1.5 {
221 lefcha 1.13 char cmd[SMALL_CMD];
222 lefcha 1.4
223 lefcha 1.13 verbose("Client request: CLOSE\n");
224 lefcha 1.5
225 lefcha 1.16 snprintf(cmd, SMALL_CMD, "%X CLOSE\r\n", tag);
226 lefcha 1.13
227     return send_command(cmd);
228 lefcha 1.5 }
229 lefcha 1.4
230 lefcha 1.1
231     /*
232 lefcha 1.13 * IMAP EXPUNGE: permanently removes any messages with the \Deleted flag set.
233 lefcha 1.19 *
234 lefcha 1.13 int imap_expunge(void)
235 lefcha 1.1 {
236 lefcha 1.13 char cmd[SMALL_CMD];
237 lefcha 1.1
238 lefcha 1.13 verbose("Client request: EXPUNGE\n");
239 lefcha 1.1
240 lefcha 1.16 snprintf(cmd, SMALL_CMD, "%X EXPUNGE\r\n", tag);
241 lefcha 1.4
242 lefcha 1.13 return send_command(cmd);
243 lefcha 1.19 }*/

webmaster@linux.gr
ViewVC Help
Powered by ViewVC 1.1.26