annotate src/queue.c @ 421:f37384470855

Changed lockdir to /var/lock/masqmail; Create lockdir and piddir on startup. Moved the lockdir out of the spool dir. (When /var/lock is a ramdisk we do well to have the lock files there.) Added the new configure option --with-lockdir to change that location. Nontheless, if we run_as_user, then lock files are always stored in the spool dir directly. Instead of installing the lockdir and piddir at installation time, we create them on startup time now if they are missing. This is necessary if lockdir or piddir are a tmpfs.
author markus schnalke <meillo@marmaro.de>
date Wed, 30 May 2012 09:38:38 +0200
parents b27f66555ba8
children bdbedce60247
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
367
b27f66555ba8 Reformated multiline comments to have leading asterisks on each line
markus schnalke <meillo@marmaro.de>
parents: 366
diff changeset
1 /*
b27f66555ba8 Reformated multiline comments to have leading asterisks on each line
markus schnalke <meillo@marmaro.de>
parents: 366
diff changeset
2 ** MasqMail
b27f66555ba8 Reformated multiline comments to have leading asterisks on each line
markus schnalke <meillo@marmaro.de>
parents: 366
diff changeset
3 ** Copyright (C) 1999-2001 Oliver Kurth
b27f66555ba8 Reformated multiline comments to have leading asterisks on each line
markus schnalke <meillo@marmaro.de>
parents: 366
diff changeset
4 ** Copyright (C) 2010 markus schnalke <meillo@marmaro.de>
b27f66555ba8 Reformated multiline comments to have leading asterisks on each line
markus schnalke <meillo@marmaro.de>
parents: 366
diff changeset
5 **
b27f66555ba8 Reformated multiline comments to have leading asterisks on each line
markus schnalke <meillo@marmaro.de>
parents: 366
diff changeset
6 ** This program is free software; you can redistribute it and/or modify
b27f66555ba8 Reformated multiline comments to have leading asterisks on each line
markus schnalke <meillo@marmaro.de>
parents: 366
diff changeset
7 ** it under the terms of the GNU General Public License as published by
b27f66555ba8 Reformated multiline comments to have leading asterisks on each line
markus schnalke <meillo@marmaro.de>
parents: 366
diff changeset
8 ** the Free Software Foundation; either version 2 of the License, or
b27f66555ba8 Reformated multiline comments to have leading asterisks on each line
markus schnalke <meillo@marmaro.de>
parents: 366
diff changeset
9 ** (at your option) any later version.
b27f66555ba8 Reformated multiline comments to have leading asterisks on each line
markus schnalke <meillo@marmaro.de>
parents: 366
diff changeset
10 **
b27f66555ba8 Reformated multiline comments to have leading asterisks on each line
markus schnalke <meillo@marmaro.de>
parents: 366
diff changeset
11 ** This program is distributed in the hope that it will be useful,
b27f66555ba8 Reformated multiline comments to have leading asterisks on each line
markus schnalke <meillo@marmaro.de>
parents: 366
diff changeset
12 ** but WITHOUT ANY WARRANTY; without even the implied warranty of
b27f66555ba8 Reformated multiline comments to have leading asterisks on each line
markus schnalke <meillo@marmaro.de>
parents: 366
diff changeset
13 ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
b27f66555ba8 Reformated multiline comments to have leading asterisks on each line
markus schnalke <meillo@marmaro.de>
parents: 366
diff changeset
14 ** GNU General Public License for more details.
b27f66555ba8 Reformated multiline comments to have leading asterisks on each line
markus schnalke <meillo@marmaro.de>
parents: 366
diff changeset
15 **
b27f66555ba8 Reformated multiline comments to have leading asterisks on each line
markus schnalke <meillo@marmaro.de>
parents: 366
diff changeset
16 ** You should have received a copy of the GNU General Public License
b27f66555ba8 Reformated multiline comments to have leading asterisks on each line
markus schnalke <meillo@marmaro.de>
parents: 366
diff changeset
17 ** along with this program; if not, write to the Free Software
b27f66555ba8 Reformated multiline comments to have leading asterisks on each line
markus schnalke <meillo@marmaro.de>
parents: 366
diff changeset
18 ** Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
0
08114f7dcc23 this is masqmail-0.2.21 from oliver kurth
meillo@marmaro.de
parents:
diff changeset
19 */
08114f7dcc23 this is masqmail-0.2.21 from oliver kurth
meillo@marmaro.de
parents:
diff changeset
20
08114f7dcc23 this is masqmail-0.2.21 from oliver kurth
meillo@marmaro.de
parents:
diff changeset
21 #include <sys/stat.h>
08114f7dcc23 this is masqmail-0.2.21 from oliver kurth
meillo@marmaro.de
parents:
diff changeset
22 #include <glob.h>
08114f7dcc23 this is masqmail-0.2.21 from oliver kurth
meillo@marmaro.de
parents:
diff changeset
23
15
f671821d8222 code beautifying; 0 -> \0 if appropriate
meillo@marmaro.de
parents: 10
diff changeset
24 #include "masqmail.h"
f671821d8222 code beautifying; 0 -> \0 if appropriate
meillo@marmaro.de
parents: 10
diff changeset
25
10
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
26 static void
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
27 mix_arr(int *buf, int len)
0
08114f7dcc23 this is masqmail-0.2.21 from oliver kurth
meillo@marmaro.de
parents:
diff changeset
28 {
10
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
29 int i;
0
08114f7dcc23 this is masqmail-0.2.21 from oliver kurth
meillo@marmaro.de
parents:
diff changeset
30
10
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
31 for (i = 0; i < len; i++)
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
32 buf[i] = i;
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
33 for (i = 0; i < len - 1; i++) {
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
34 int j = (int) ((float) (len - i) * ((float) rand()) / (RAND_MAX + 1.0));
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
35 int tmp;
0
08114f7dcc23 this is masqmail-0.2.21 from oliver kurth
meillo@marmaro.de
parents:
diff changeset
36
10
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
37 if (i != j) {
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
38 tmp = buf[i];
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
39 buf[i] = buf[j];
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
40 buf[j] = tmp;
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
41 }
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
42 }
0
08114f7dcc23 this is masqmail-0.2.21 from oliver kurth
meillo@marmaro.de
parents:
diff changeset
43 }
08114f7dcc23 this is masqmail-0.2.21 from oliver kurth
meillo@marmaro.de
parents:
diff changeset
44
10
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
45 GList*
348
a7a387253b2f Argument of read_queue() was unused, thus removed
markus schnalke <meillo@marmaro.de>
parents: 277
diff changeset
46 read_queue(void)
0
08114f7dcc23 this is masqmail-0.2.21 from oliver kurth
meillo@marmaro.de
parents:
diff changeset
47 {
10
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
48 GList *msg_list = NULL;
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
49 glob_t gl;
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
50 gchar *pattern;
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
51 int i, *idx_arr;
0
08114f7dcc23 this is masqmail-0.2.21 from oliver kurth
meillo@marmaro.de
parents:
diff changeset
52
367
b27f66555ba8 Reformated multiline comments to have leading asterisks on each line
markus schnalke <meillo@marmaro.de>
parents: 366
diff changeset
53 /*
b27f66555ba8 Reformated multiline comments to have leading asterisks on each line
markus schnalke <meillo@marmaro.de>
parents: 366
diff changeset
54 ** Escaping the question marks prevents them from being
b27f66555ba8 Reformated multiline comments to have leading asterisks on each line
markus schnalke <meillo@marmaro.de>
parents: 366
diff changeset
55 ** interpreted as trigraphs
b27f66555ba8 Reformated multiline comments to have leading asterisks on each line
markus schnalke <meillo@marmaro.de>
parents: 366
diff changeset
56 */
38
ac0233b5f6f8 removed trigraph warning
meillo@marmaro.de
parents: 15
diff changeset
57 pattern = g_strdup_printf("%s/input/?????\?-??\?-?\?-H", conf.spool_dir);
10
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
58 gl.gl_offs = 0;
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
59 glob(pattern, 0, NULL, &gl);
0
08114f7dcc23 this is masqmail-0.2.21 from oliver kurth
meillo@marmaro.de
parents:
diff changeset
60
10
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
61 g_free(pattern);
0
08114f7dcc23 this is masqmail-0.2.21 from oliver kurth
meillo@marmaro.de
parents:
diff changeset
62
10
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
63 DEBUG(4) {
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
64 int i;
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
65 for (i = 0; i < gl.gl_pathc; i++) {
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
66 debugf("spoolfile: %s\n", gl.gl_pathv[i]);
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
67 }
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
68 }
0
08114f7dcc23 this is masqmail-0.2.21 from oliver kurth
meillo@marmaro.de
parents:
diff changeset
69
10
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
70 idx_arr = g_malloc(sizeof(int) * gl.gl_pathc);
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
71 mix_arr(idx_arr, gl.gl_pathc);
0
08114f7dcc23 this is masqmail-0.2.21 from oliver kurth
meillo@marmaro.de
parents:
diff changeset
72
10
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
73 for (i = 0; i < gl.gl_pathc; i++) {
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
74 gchar *uid;
0
08114f7dcc23 this is masqmail-0.2.21 from oliver kurth
meillo@marmaro.de
parents:
diff changeset
75
10
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
76 /* copy 13 chars, offset spooldir path + 7 chars for /input/ */
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
77 /* uid length = 6 chars + '-' + 3 chars + '-' + 2 = 13 chars */
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
78 uid = g_strndup(&(gl.gl_pathv[idx_arr[i]][strlen(conf.spool_dir) + 7]), 13);
0
08114f7dcc23 this is masqmail-0.2.21 from oliver kurth
meillo@marmaro.de
parents:
diff changeset
79
10
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
80 DEBUG(5) debugf("uid: %s\n", uid);
0
08114f7dcc23 this is masqmail-0.2.21 from oliver kurth
meillo@marmaro.de
parents:
diff changeset
81
349
b45dc53f2829 Removed unused second arg of msg_spool_read()
markus schnalke <meillo@marmaro.de>
parents: 348
diff changeset
82 msg_list = g_list_append(msg_list, msg_spool_read(uid));
10
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
83
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
84 DEBUG(5) debugf("after read spool file for %s\n", uid);
0
08114f7dcc23 this is masqmail-0.2.21 from oliver kurth
meillo@marmaro.de
parents:
diff changeset
85
10
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
86 g_free(uid);
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
87 }
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
88 return msg_list;
0
08114f7dcc23 this is masqmail-0.2.21 from oliver kurth
meillo@marmaro.de
parents:
diff changeset
89 }
08114f7dcc23 this is masqmail-0.2.21 from oliver kurth
meillo@marmaro.de
parents:
diff changeset
90
10
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
91 gboolean
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
92 queue_run()
0
08114f7dcc23 this is masqmail-0.2.21 from oliver kurth
meillo@marmaro.de
parents:
diff changeset
93 {
10
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
94 GList *msg_list;
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
95 gboolean ok = TRUE;
0
08114f7dcc23 this is masqmail-0.2.21 from oliver kurth
meillo@marmaro.de
parents:
diff changeset
96
10
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
97 logwrite(LOG_NOTICE, "Starting queue run.\n");
348
a7a387253b2f Argument of read_queue() was unused, thus removed
markus schnalke <meillo@marmaro.de>
parents: 277
diff changeset
98 msg_list = read_queue();
277
5f559921391a minor refactorings and cleanups
markus schnalke <meillo@marmaro.de>
parents: 236
diff changeset
99 if (msg_list) {
10
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
100 ok = deliver_msg_list(msg_list, DLVR_ALL);
277
5f559921391a minor refactorings and cleanups
markus schnalke <meillo@marmaro.de>
parents: 236
diff changeset
101 DEBUG(5) debugf(" deliver_msg_list() returned: %d\n", ok);
10
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
102 destroy_msg_list(msg_list);
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
103 }
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
104 logwrite(LOG_NOTICE, "Finished queue run.\n");
0
08114f7dcc23 this is masqmail-0.2.21 from oliver kurth
meillo@marmaro.de
parents:
diff changeset
105
10
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
106 return ok;
0
08114f7dcc23 this is masqmail-0.2.21 from oliver kurth
meillo@marmaro.de
parents:
diff changeset
107 }
08114f7dcc23 this is masqmail-0.2.21 from oliver kurth
meillo@marmaro.de
parents:
diff changeset
108
10
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
109 gboolean
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
110 queue_run_online()
0
08114f7dcc23 this is masqmail-0.2.21 from oliver kurth
meillo@marmaro.de
parents:
diff changeset
111 {
277
5f559921391a minor refactorings and cleanups
markus schnalke <meillo@marmaro.de>
parents: 236
diff changeset
112 GList *msg_list;
10
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
113 gboolean ok = TRUE;
0
08114f7dcc23 this is masqmail-0.2.21 from oliver kurth
meillo@marmaro.de
parents:
diff changeset
114
10
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
115 logwrite(LOG_NOTICE, "Starting online queue run.\n");
348
a7a387253b2f Argument of read_queue() was unused, thus removed
markus schnalke <meillo@marmaro.de>
parents: 277
diff changeset
116 msg_list = read_queue();
277
5f559921391a minor refactorings and cleanups
markus schnalke <meillo@marmaro.de>
parents: 236
diff changeset
117 if (msg_list) {
10
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
118 ok = deliver_msg_list(msg_list, DLVR_ONLINE);
277
5f559921391a minor refactorings and cleanups
markus schnalke <meillo@marmaro.de>
parents: 236
diff changeset
119 DEBUG(5) debugf(" deliver_msg_list() returned: %d\n", ok);
10
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
120 destroy_msg_list(msg_list);
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
121 }
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
122 logwrite(LOG_NOTICE, "Finished online queue run.\n");
0
08114f7dcc23 this is masqmail-0.2.21 from oliver kurth
meillo@marmaro.de
parents:
diff changeset
123
10
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
124 return ok;
0
08114f7dcc23 this is masqmail-0.2.21 from oliver kurth
meillo@marmaro.de
parents:
diff changeset
125 }
08114f7dcc23 this is masqmail-0.2.21 from oliver kurth
meillo@marmaro.de
parents:
diff changeset
126
10
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
127 static gchar*
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
128 format_difftime(double secs)
0
08114f7dcc23 this is masqmail-0.2.21 from oliver kurth
meillo@marmaro.de
parents:
diff changeset
129 {
10
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
130 if (secs > 86400)
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
131 return g_strdup_printf("%.1fd", secs / 86400);
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
132 else if (secs > 3600)
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
133 return g_strdup_printf("%.1fh", secs / 3600);
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
134 else if (secs > 60)
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
135 return g_strdup_printf("%.1fm", secs / 60);
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
136 else
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
137 return g_strdup_printf("%.0fs", secs);
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
138 }
0
08114f7dcc23 this is masqmail-0.2.21 from oliver kurth
meillo@marmaro.de
parents:
diff changeset
139
10
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
140 void
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
141 queue_list()
0
08114f7dcc23 this is masqmail-0.2.21 from oliver kurth
meillo@marmaro.de
parents:
diff changeset
142 {
10
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
143 GList *msg_list;
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
144 GList *msg_node;
0
08114f7dcc23 this is masqmail-0.2.21 from oliver kurth
meillo@marmaro.de
parents:
diff changeset
145
348
a7a387253b2f Argument of read_queue() was unused, thus removed
markus schnalke <meillo@marmaro.de>
parents: 277
diff changeset
146 msg_list = read_queue();
0
08114f7dcc23 this is masqmail-0.2.21 from oliver kurth
meillo@marmaro.de
parents:
diff changeset
147
82
83a182793503 refactoring
meillo@marmaro.de
parents: 38
diff changeset
148 if (msg_list == NULL) {
83a182793503 refactoring
meillo@marmaro.de
parents: 38
diff changeset
149 printf("mail queue is empty.\n");
83a182793503 refactoring
meillo@marmaro.de
parents: 38
diff changeset
150 return;
83a182793503 refactoring
meillo@marmaro.de
parents: 38
diff changeset
151 }
0
08114f7dcc23 this is masqmail-0.2.21 from oliver kurth
meillo@marmaro.de
parents:
diff changeset
152
82
83a182793503 refactoring
meillo@marmaro.de
parents: 38
diff changeset
153 foreach(msg_list, msg_node) {
83a182793503 refactoring
meillo@marmaro.de
parents: 38
diff changeset
154 message *msg = (message *) (msg_node->data);
83a182793503 refactoring
meillo@marmaro.de
parents: 38
diff changeset
155 GList *rcpt_node;
83a182793503 refactoring
meillo@marmaro.de
parents: 38
diff changeset
156 gchar *size_str = NULL;
83a182793503 refactoring
meillo@marmaro.de
parents: 38
diff changeset
157 gchar *time_str = NULL;
83a182793503 refactoring
meillo@marmaro.de
parents: 38
diff changeset
158 gchar *host_str = NULL;
83a182793503 refactoring
meillo@marmaro.de
parents: 38
diff changeset
159 gchar *ident_str = NULL;
10
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
160
82
83a182793503 refactoring
meillo@marmaro.de
parents: 38
diff changeset
161 if (msg->data_size >= 0)
83a182793503 refactoring
meillo@marmaro.de
parents: 38
diff changeset
162 size_str = g_strdup_printf(" size=%d", msg->data_size);
83a182793503 refactoring
meillo@marmaro.de
parents: 38
diff changeset
163 if (msg->received_time > 0) {
83a182793503 refactoring
meillo@marmaro.de
parents: 38
diff changeset
164 gchar *tmp_str;
83a182793503 refactoring
meillo@marmaro.de
parents: 38
diff changeset
165 time_str = g_strdup_printf(" age=%s", tmp_str = format_difftime(difftime(time(NULL), msg->received_time)));
83a182793503 refactoring
meillo@marmaro.de
parents: 38
diff changeset
166 g_free(tmp_str);
83a182793503 refactoring
meillo@marmaro.de
parents: 38
diff changeset
167 }
83a182793503 refactoring
meillo@marmaro.de
parents: 38
diff changeset
168 if (msg->received_host != NULL)
83a182793503 refactoring
meillo@marmaro.de
parents: 38
diff changeset
169 host_str = g_strdup_printf(" host=%s", msg->received_host);
83a182793503 refactoring
meillo@marmaro.de
parents: 38
diff changeset
170 if (msg->ident != NULL)
83a182793503 refactoring
meillo@marmaro.de
parents: 38
diff changeset
171 ident_str = g_strdup_printf(" ident=%s", msg->ident);
83a182793503 refactoring
meillo@marmaro.de
parents: 38
diff changeset
172
83a182793503 refactoring
meillo@marmaro.de
parents: 38
diff changeset
173 printf("%s <= %s%s%s%s%s\n", msg->uid, addr_string(msg->return_path), size_str ? size_str : "",
83a182793503 refactoring
meillo@marmaro.de
parents: 38
diff changeset
174 time_str ? time_str : "", host_str ? host_str : "", ident_str ? ident_str : "");
0
08114f7dcc23 this is masqmail-0.2.21 from oliver kurth
meillo@marmaro.de
parents:
diff changeset
175
82
83a182793503 refactoring
meillo@marmaro.de
parents: 38
diff changeset
176 if (size_str)
83a182793503 refactoring
meillo@marmaro.de
parents: 38
diff changeset
177 g_free(size_str);
83a182793503 refactoring
meillo@marmaro.de
parents: 38
diff changeset
178 if (time_str)
83a182793503 refactoring
meillo@marmaro.de
parents: 38
diff changeset
179 g_free(time_str);
83a182793503 refactoring
meillo@marmaro.de
parents: 38
diff changeset
180 if (host_str)
83a182793503 refactoring
meillo@marmaro.de
parents: 38
diff changeset
181 g_free(host_str);
83a182793503 refactoring
meillo@marmaro.de
parents: 38
diff changeset
182 if (ident_str)
83a182793503 refactoring
meillo@marmaro.de
parents: 38
diff changeset
183 g_free(ident_str);
10
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
184
82
83a182793503 refactoring
meillo@marmaro.de
parents: 38
diff changeset
185 foreach(msg->rcpt_list, rcpt_node) {
83a182793503 refactoring
meillo@marmaro.de
parents: 38
diff changeset
186 address *rcpt = (address *) (rcpt_node->data);
0
08114f7dcc23 this is masqmail-0.2.21 from oliver kurth
meillo@marmaro.de
parents:
diff changeset
187
82
83a182793503 refactoring
meillo@marmaro.de
parents: 38
diff changeset
188 printf(" %s %s\n", addr_is_delivered(rcpt) ? "=>" : (addr_is_failed(rcpt) ? "!=" : "=="), addr_string(rcpt));
10
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
189 }
82
83a182793503 refactoring
meillo@marmaro.de
parents: 38
diff changeset
190 g_free(msg);
83a182793503 refactoring
meillo@marmaro.de
parents: 38
diff changeset
191 }
10
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
192 }
0
08114f7dcc23 this is masqmail-0.2.21 from oliver kurth
meillo@marmaro.de
parents:
diff changeset
193
10
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
194 gboolean
366
41958685480d Switched to `type *name' style
markus schnalke <meillo@marmaro.de>
parents: 349
diff changeset
195 queue_delete(gchar *uid)
0
08114f7dcc23 this is masqmail-0.2.21 from oliver kurth
meillo@marmaro.de
parents:
diff changeset
196 {
10
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
197 gboolean hdr_ok = TRUE;
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
198 gboolean dat_ok = TRUE;
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
199 gchar *hdr_name = g_strdup_printf("%s/input/%s-H", conf.spool_dir, uid);
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
200 gchar *dat_name = g_strdup_printf("%s/input/%s-D", conf.spool_dir, uid);
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
201 struct stat stat_buf;
0
08114f7dcc23 this is masqmail-0.2.21 from oliver kurth
meillo@marmaro.de
parents:
diff changeset
202
82
83a182793503 refactoring
meillo@marmaro.de
parents: 38
diff changeset
203 if (!spool_lock(uid)) {
10
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
204 fprintf(stderr, "message %s is locked.\n", uid);
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
205 return FALSE;
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
206 }
0
08114f7dcc23 this is masqmail-0.2.21 from oliver kurth
meillo@marmaro.de
parents:
diff changeset
207
82
83a182793503 refactoring
meillo@marmaro.de
parents: 38
diff changeset
208 if (stat(hdr_name, &stat_buf) == 0) {
83a182793503 refactoring
meillo@marmaro.de
parents: 38
diff changeset
209 if (unlink(hdr_name) != 0) {
83a182793503 refactoring
meillo@marmaro.de
parents: 38
diff changeset
210 fprintf(stderr, "could not unlink %s: %s\n", hdr_name, strerror(errno));
83a182793503 refactoring
meillo@marmaro.de
parents: 38
diff changeset
211 hdr_ok = FALSE;
83a182793503 refactoring
meillo@marmaro.de
parents: 38
diff changeset
212 }
83a182793503 refactoring
meillo@marmaro.de
parents: 38
diff changeset
213 } else {
83a182793503 refactoring
meillo@marmaro.de
parents: 38
diff changeset
214 fprintf(stderr, "could not stat file %s: %s\n", hdr_name, strerror(errno));
83a182793503 refactoring
meillo@marmaro.de
parents: 38
diff changeset
215 hdr_ok = FALSE;
83a182793503 refactoring
meillo@marmaro.de
parents: 38
diff changeset
216 }
83a182793503 refactoring
meillo@marmaro.de
parents: 38
diff changeset
217 if (stat(dat_name, &stat_buf) == 0) {
83a182793503 refactoring
meillo@marmaro.de
parents: 38
diff changeset
218 if (unlink(dat_name) != 0) {
83a182793503 refactoring
meillo@marmaro.de
parents: 38
diff changeset
219 fprintf(stderr, "could not unlink %s: %s\n", dat_name, strerror(errno));
83a182793503 refactoring
meillo@marmaro.de
parents: 38
diff changeset
220 dat_ok = FALSE;
83a182793503 refactoring
meillo@marmaro.de
parents: 38
diff changeset
221 }
83a182793503 refactoring
meillo@marmaro.de
parents: 38
diff changeset
222 } else {
83a182793503 refactoring
meillo@marmaro.de
parents: 38
diff changeset
223 fprintf(stderr, "could not stat file %s: %s\n", dat_name, strerror(errno));
83a182793503 refactoring
meillo@marmaro.de
parents: 38
diff changeset
224 dat_ok = FALSE;
83a182793503 refactoring
meillo@marmaro.de
parents: 38
diff changeset
225 }
83a182793503 refactoring
meillo@marmaro.de
parents: 38
diff changeset
226 printf("message %s deleted\n", uid);
83a182793503 refactoring
meillo@marmaro.de
parents: 38
diff changeset
227
83a182793503 refactoring
meillo@marmaro.de
parents: 38
diff changeset
228 spool_unlock(uid);
83a182793503 refactoring
meillo@marmaro.de
parents: 38
diff changeset
229
10
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
230 return (dat_ok && hdr_ok);
0
08114f7dcc23 this is masqmail-0.2.21 from oliver kurth
meillo@marmaro.de
parents:
diff changeset
231 }