cba9747e24777b9dd8e8b7764cb9a69643ce3a44
[citadel.git] / webcit-ng / ctdlfunctions.c
1 /*
2  * These utility functions loosely make up a Citadel protocol client library.
3  *
4  * Copyright (c) 2016-2018 by the citadel.org team
5  *
6  * This program is open source software; you can redistribute it and/or modify
7  * it under the terms of the GNU General Public License version 3.
8  *
9  * This program is distributed in the hope that it will be useful,
10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12  * GNU General Public License for more details.
13  */
14
15 #include "webcit.h"
16
17
18 /*
19  * Delete one or more messages from the connected Citadel server.
20  * This function expects the session to already be "in" the room from which the messages will be deleted.
21  */
22 void ctdl_delete_msgs(struct ctdlsession *c, long *msgnums, int num_msgs)
23 {
24         int i = 0;
25         char buf[1024];
26
27         if ( (c == NULL) || (msgnums == NULL) || (num_msgs < 1) )
28         {
29                 return;
30         }
31
32         i = 0;
33         strcpy(buf, "DELE ");
34         do {
35                 sprintf(&buf[strlen(buf)], "%ld", msgnums[i]);
36                 if ( (((i+1)%50)==0) || (i==num_msgs-1))                // delete up to 50 messages with one server command
37                 {
38                         syslog(LOG_DEBUG, "%s", buf);
39                         ctdl_printf(c, "%s", buf);
40                         ctdl_readline(c, buf, sizeof(buf));
41                         syslog(LOG_DEBUG, "%s", buf);
42                 }
43                 else {
44                         strcat(buf, ",");
45                 }
46         } while (++i < num_msgs);
47 }