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

Diff of /imapfilter/imap.c

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.38 by lefcha, Thu Jul 31 15:53:19 2003 UTC revision 1.38.2.1 by lefcha, Thu Oct 2 11:04:12 2003 UTC
# Line 10  extern conn_t connpri, connaux; Line 10  extern conn_t connpri, connaux;
10    
11  buffer_t obuf;                  /* Output buffer. */  buffer_t obuf;                  /* Output buffer. */
12    
13  static unsigned int tag = 0;    /* Every IMAP command is prefixed with a  static unsigned int tag = 0x1000;       /* Every IMAP command is prefixed with
14                                   * unique [:alnum:] string. */                                           * a unique [:alnum:] string. */
15    
16    
17  unsigned int send_command(conn_t * conn, char *cmd);  unsigned int send_command(conn_t * conn, char *cmd);
# Line 32  send_command(conn_t * conn, char *cmd) Line 32  send_command(conn_t * conn, char *cmd)
32    
33          socket_write(conn, cmd);          socket_write(conn, cmd);
34    
35            if (tag == 0xFFFF)
36                    tag = 0x0FFF;
37    
38          return tag++;          return tag++;
39  }  }
40    
# Line 64  imap_noop(conn_t * conn) Line 67  imap_noop(conn_t * conn)
67          reset_buffer(&obuf);          reset_buffer(&obuf);
68          check_buffer(&obuf, strlen("NOOP") + 12);          check_buffer(&obuf, strlen("NOOP") + 12);
69    
70          snprintf(obuf.data, obuf.size, "%08X NOOP\r\n", tag);          snprintf(obuf.data, obuf.size, "%04X NOOP\r\n", tag);
71    
72          return send_command(conn, obuf.data);          return send_command(conn, obuf.data);
73  }  }
# Line 80  imap_capability(conn_t * conn) Line 83  imap_capability(conn_t * conn)
83          reset_buffer(&obuf);          reset_buffer(&obuf);
84          check_buffer(&obuf, strlen("CAPABILITY") + 12);          check_buffer(&obuf, strlen("CAPABILITY") + 12);
85    
86          snprintf(obuf.data, obuf.size, "%08X CAPABILITY\r\n", tag);          snprintf(obuf.data, obuf.size, "%04X CAPABILITY\r\n", tag);
87    
88          return send_command(conn, obuf.data);          return send_command(conn, obuf.data);
89  }  }
# Line 96  imap_namespace(conn_t * conn) Line 99  imap_namespace(conn_t * conn)
99          reset_buffer(&obuf);          reset_buffer(&obuf);
100          check_buffer(&obuf, strlen("NAMESPACE") + 12);          check_buffer(&obuf, strlen("NAMESPACE") + 12);
101    
102          snprintf(obuf.data, obuf.size, "%08X NAMESPACE\r\n", tag);          snprintf(obuf.data, obuf.size, "%04X NAMESPACE\r\n", tag);
103    
104          return send_command(conn, obuf.data);          return send_command(conn, obuf.data);
105  }  }
# Line 111  imap_logout(conn_t * conn) Line 114  imap_logout(conn_t * conn)
114          reset_buffer(&obuf);          reset_buffer(&obuf);
115          check_buffer(&obuf, strlen("LOGOUT") + 12);          check_buffer(&obuf, strlen("LOGOUT") + 12);
116    
117          snprintf(obuf.data, obuf.size, "%08X LOGOUT\r\n", tag);          snprintf(obuf.data, obuf.size, "%04X LOGOUT\r\n", tag);
118    
119          return send_command(conn, obuf.data);          return send_command(conn, obuf.data);
120  }  }
# Line 126  imap_starttls(conn_t * conn) Line 129  imap_starttls(conn_t * conn)
129          reset_buffer(&obuf);          reset_buffer(&obuf);
130          check_buffer(&obuf, strlen("STARTTLS") + 12);          check_buffer(&obuf, strlen("STARTTLS") + 12);
131    
132          snprintf(obuf.data, obuf.size, "%08X STARTTLS\r\n", tag);          snprintf(obuf.data, obuf.size, "%04X STARTTLS\r\n", tag);
133    
134          return send_command(conn, obuf.data);          return send_command(conn, obuf.data);
135  }  }
# Line 144  imap_authenticate(conn_t * conn, char *a Line 147  imap_authenticate(conn_t * conn, char *a
147          check_buffer(&obuf, strlen("AUTHENTICATE") + 12);          check_buffer(&obuf, strlen("AUTHENTICATE") + 12);
148    
149          if (!cont) {          if (!cont) {
150                  snprintf(obuf.data, obuf.size, "%08X AUTHENTICATE %s\r\n",                  snprintf(obuf.data, obuf.size, "%04X AUTHENTICATE %s\r\n",
151                      tag, auth);                      tag, auth);
152                  return send_command(conn, obuf.data);                  return send_command(conn, obuf.data);
153          } else {          } else {
# Line 167  imap_login(conn_t * conn, char *user, ch Line 170  imap_login(conn_t * conn, char *user, ch
170          n = strlen("LOGIN") + strlen(user) + strlen(pass) + 18;          n = strlen("LOGIN") + strlen(user) + strlen(pass) + 18;
171          sbuf = (char *)smalloc(n);          sbuf = (char *)smalloc(n);
172    
173          snprintf(sbuf, n, "%08X LOGIN \"%s\" \"%s\"\r\n", tag, user, pass);          snprintf(sbuf, n, "%04X LOGIN \"%s\" \"%s\"\r\n", tag, user, pass);
174    
175          r = send_command(conn, sbuf);          r = send_command(conn, sbuf);
176    
# Line 188  int imap_list(conn_t *conn, char *refer, Line 191  int imap_list(conn_t *conn, char *refer,
191          reset_buffer(&obuf);          reset_buffer(&obuf);
192          check_buffer(&obuf, strlen("LIST") + strlen(refer) + strlen(mbox) + 18);          check_buffer(&obuf, strlen("LIST") + strlen(refer) + strlen(mbox) + 18);
193                    
194          snprintf(obuf.data, obuf.size, "%08X LIST \"%s\" \"%s\"\r\n", tag,          snprintf(obuf.data, obuf.size, "%04X LIST \"%s\" \"%s\"\r\n", tag,
195              refer, mbox);              refer, mbox);
196    
197          r = send_command(conn, obuf.data);          r = send_command(conn, obuf.data);
# Line 207  imap_subscribe(conn_t * conn, char *mbox Line 210  imap_subscribe(conn_t * conn, char *mbox
210          reset_buffer(&obuf);          reset_buffer(&obuf);
211          check_buffer(&obuf, strlen("SUBSCRIBE") + strlen(mbox) + 15);          check_buffer(&obuf, strlen("SUBSCRIBE") + strlen(mbox) + 15);
212    
213          snprintf(obuf.data, obuf.size, "%08X SUBSCRIBE \"%s\"\r\n", tag, mbox);          snprintf(obuf.data, obuf.size, "%04X SUBSCRIBE \"%s\"\r\n", tag, mbox);
214    
215          return send_command(conn, obuf.data);          return send_command(conn, obuf.data);
216  }  }
# Line 222  imap_examine(conn_t *conn, char *mbox) Line 225  imap_examine(conn_t *conn, char *mbox)
225          reset_buffer(&obuf);          reset_buffer(&obuf);
226          check_buffer(&obuf, strlen("EXAMINE") + strlen(mbox) + 15);          check_buffer(&obuf, strlen("EXAMINE") + strlen(mbox) + 15);
227    
228          snprintf(obuf.data, MEDIUM_CMD, "%08X EXAMINE \"%s\"\r\n", tag, mbox);          snprintf(obuf.data, MEDIUM_CMD, "%04X EXAMINE \"%s\"\r\n", tag, mbox);
229    
230          return send_command(conn, obuf.data);          return send_command(conn, obuf.data);
231  }*/  }*/
# Line 237  imap_select(conn_t * conn, char *mbox) Line 240  imap_select(conn_t * conn, char *mbox)
240          reset_buffer(&obuf);          reset_buffer(&obuf);
241          check_buffer(&obuf, strlen("SELECT") + strlen(mbox) + 15);          check_buffer(&obuf, strlen("SELECT") + strlen(mbox) + 15);
242    
243          snprintf(obuf.data, obuf.size, "%08X SELECT \"%s\"\r\n", tag, mbox);          snprintf(obuf.data, obuf.size, "%04X SELECT \"%s\"\r\n", tag, mbox);
244    
245          return send_command(conn, obuf.data);          return send_command(conn, obuf.data);
246  }  }
# Line 253  imap_status(conn_t * conn, char *mbox, c Line 256  imap_status(conn_t * conn, char *mbox, c
256          check_buffer(&obuf, strlen("STATUS") + strlen(mbox) +          check_buffer(&obuf, strlen("STATUS") + strlen(mbox) +
257              strlen(items) + 18);              strlen(items) + 18);
258    
259          snprintf(obuf.data, obuf.size, "%08X STATUS \"%s\" (%s)\r\n", tag, mbox, items);          snprintf(obuf.data, obuf.size, "%04X STATUS \"%s\" (%s)\r\n", tag, mbox, items);
260    
261          return send_command(conn, obuf.data);          return send_command(conn, obuf.data);
262  }  }
# Line 268  imap_create(conn_t * conn, char *mbox) Line 271  imap_create(conn_t * conn, char *mbox)
271          reset_buffer(&obuf);          reset_buffer(&obuf);
272          check_buffer(&obuf, strlen("CREATE") + strlen(mbox) + 14);          check_buffer(&obuf, strlen("CREATE") + strlen(mbox) + 14);
273    
274          snprintf(obuf.data, obuf.size, "%08X CREATE \"%s\"\r\n", tag, mbox);          snprintf(obuf.data, obuf.size, "%04X CREATE \"%s\"\r\n", tag, mbox);
275    
276          return send_command(conn, obuf.data);          return send_command(conn, obuf.data);
277  }  }
# Line 285  imap_search(conn_t * conn, char *charset Line 288  imap_search(conn_t * conn, char *charset
288              strlen(search) + 15);              strlen(search) + 15);
289    
290          if (*charset)          if (*charset)
291                  snprintf(obuf.data, obuf.size, "%08X SEARCH CHARSET \"%s\" %s\r\n",                  snprintf(obuf.data, obuf.size, "%04X SEARCH CHARSET \"%s\" %s\r\n",
292                      tag, charset, search);                      tag, charset, search);
293          else          else
294                  snprintf(obuf.data, obuf.size, "%08X SEARCH %s\r\n", tag, search);                  snprintf(obuf.data, obuf.size, "%04X SEARCH %s\r\n", tag, search);
295    
296          return send_command(conn, obuf.data);          return send_command(conn, obuf.data);
297  }  }
# Line 303  imap_fetch(conn_t * conn, char *mesg, ch Line 306  imap_fetch(conn_t * conn, char *mesg, ch
306          reset_buffer(&obuf);          reset_buffer(&obuf);
307          check_buffer(&obuf, strlen("FETCH") + strlen(mesg) + strlen(items) + 14);          check_buffer(&obuf, strlen("FETCH") + strlen(mesg) + strlen(items) + 14);
308    
309          snprintf(obuf.data, obuf.size, "%08X FETCH %s %s\r\n", tag, mesg, items);          snprintf(obuf.data, obuf.size, "%04X FETCH %s %s\r\n", tag, mesg, items);
310    
311          return send_command(conn, obuf.data);          return send_command(conn, obuf.data);
312  }  }
# Line 319  imap_store(conn_t * conn, char *mesg, un Line 322  imap_store(conn_t * conn, char *mesg, un
322          check_buffer(&obuf, strlen("STORE") + strlen(mesg) +          check_buffer(&obuf, strlen("STORE") + strlen(mesg) +
323              strlen("FLAGS.SILENT") + strlen(flags) + 18);              strlen("FLAGS.SILENT") + strlen(flags) + 18);
324    
325          snprintf(obuf.data, obuf.size, "%08X STORE %s %sFLAGS.SILENT (%s)\r\n",          snprintf(obuf.data, obuf.size, "%04X STORE %s %sFLAGS.SILENT (%s)\r\n",
326              tag, mesg, (mode == STORE_FLAG_REPLACE ? "" :              tag, mesg, (mode == STORE_FLAG_REPLACE ? "" :
327                  mode == STORE_FLAG_ADD ? "+" : "-"), flags);                  mode == STORE_FLAG_ADD ? "+" : "-"), flags);
328    
# Line 336  imap_copy(conn_t * conn, char *mesg, cha Line 339  imap_copy(conn_t * conn, char *mesg, cha
339          reset_buffer(&obuf);          reset_buffer(&obuf);
340          check_buffer(&obuf, strlen("COPY") + strlen(mesg) + strlen(mbox) + 16);          check_buffer(&obuf, strlen("COPY") + strlen(mesg) + strlen(mbox) + 16);
341    
342          snprintf(obuf.data, obuf.size, "%08X COPY %s \"%s\"\r\n", tag, mesg, mbox);          snprintf(obuf.data, obuf.size, "%04X COPY %s \"%s\"\r\n", tag, mesg, mbox);
343    
344          return send_command(conn, obuf.data);          return send_command(conn, obuf.data);
345  }  }
# Line 352  imap_append(conn_t * conn, char *mbox, u Line 355  imap_append(conn_t * conn, char *mbox, u
355          check_buffer(&obuf, strlen("APPEND") + strlen(mbox) +          check_buffer(&obuf, strlen("APPEND") + strlen(mbox) +
356              strlen(ultostr(size, 10)) + 18);              strlen(ultostr(size, 10)) + 18);
357    
358          snprintf(obuf.data, obuf.size, "%08X APPEND \"%s\" {%d}\r\n", tag, mbox,          snprintf(obuf.data, obuf.size, "%04X APPEND \"%s\" {%d}\r\n", tag, mbox,
359              size);              size);
360    
361          return send_command(conn, obuf.data);          return send_command(conn, obuf.data);
# Line 369  imap_close(conn_t * conn) Line 372  imap_close(conn_t * conn)
372          reset_buffer(&obuf);          reset_buffer(&obuf);
373          check_buffer(&obuf, strlen("CLOSE") + 12);          check_buffer(&obuf, strlen("CLOSE") + 12);
374    
375          snprintf(obuf.data, obuf.size, "%08X CLOSE\r\n", tag);          snprintf(obuf.data, obuf.size, "%04X CLOSE\r\n", tag);
376    
377          return send_command(conn, obuf.data);          return send_command(conn, obuf.data);
378  }  }
# Line 384  imap_expunge(conn_t * conn) Line 387  imap_expunge(conn_t * conn)
387          reset_buffer(&obuf);          reset_buffer(&obuf);
388          check_buffer(&obuf, strlen("EXPUNGE") + 12);          check_buffer(&obuf, strlen("EXPUNGE") + 12);
389    
390          snprintf(obuf.data, obuf.size, "%08X EXPUNGE\r\n", tag);          snprintf(obuf.data, obuf.size, "%04X EXPUNGE\r\n", tag);
391    
392          return send_command(conn, obuf.data);          return send_command(conn, obuf.data);
393  }  }

Legend:
Removed from v.1.38  
changed lines
  Added in v.1.38.2.1

webmaster@linux.gr
ViewVC Help
Powered by ViewVC 1.1.26