annotate src/rewrite.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
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 **
b27f66555ba8 Reformated multiline comments to have leading asterisks on each line
markus schnalke <meillo@marmaro.de>
parents: 366
diff changeset
5 ** 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
6 ** 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
7 ** 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
8 ** (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
9 **
b27f66555ba8 Reformated multiline comments to have leading asterisks on each line
markus schnalke <meillo@marmaro.de>
parents: 366
diff changeset
10 ** 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
11 ** 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
12 ** 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
13 ** 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
14 **
b27f66555ba8 Reformated multiline comments to have leading asterisks on each line
markus schnalke <meillo@marmaro.de>
parents: 366
diff changeset
15 ** 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
16 ** 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
17 ** 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
18 */
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 #ifndef REWRITE_TEST
08114f7dcc23 this is masqmail-0.2.21 from oliver kurth
meillo@marmaro.de
parents:
diff changeset
21 #include "masqmail.h"
08114f7dcc23 this is masqmail-0.2.21 from oliver kurth
meillo@marmaro.de
parents:
diff changeset
22 #endif
08114f7dcc23 this is masqmail-0.2.21 from oliver kurth
meillo@marmaro.de
parents:
diff changeset
23
10
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
24 gboolean
366
41958685480d Switched to `type *name' style
markus schnalke <meillo@marmaro.de>
parents: 272
diff changeset
25 set_address_header_domain(header *hdr, gchar *domain)
0
08114f7dcc23 this is masqmail-0.2.21 from oliver kurth
meillo@marmaro.de
parents:
diff changeset
26 {
10
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
27 gchar *p = hdr->value;
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
28 gchar *new_hdr = g_strndup(hdr->header, hdr->value - hdr->header);
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
29 gint tmp;
272
681863fdafbb refactoring in the small
markus schnalke <meillo@marmaro.de>
parents: 15
diff changeset
30 gchar *loc_beg, *loc_end;
681863fdafbb refactoring in the small
markus schnalke <meillo@marmaro.de>
parents: 15
diff changeset
31 gchar *dom_beg, *dom_end;
681863fdafbb refactoring in the small
markus schnalke <meillo@marmaro.de>
parents: 15
diff changeset
32 gchar *addr_end;
681863fdafbb refactoring in the small
markus schnalke <meillo@marmaro.de>
parents: 15
diff changeset
33 gchar *rewr_string;
681863fdafbb refactoring in the small
markus schnalke <meillo@marmaro.de>
parents: 15
diff changeset
34 gchar *left, *right;
0
08114f7dcc23 this is masqmail-0.2.21 from oliver kurth
meillo@marmaro.de
parents:
diff changeset
35
10
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
36 while (*p) {
272
681863fdafbb refactoring in the small
markus schnalke <meillo@marmaro.de>
parents: 15
diff changeset
37 if (!parse_address_rfc822(p, &loc_beg, &loc_end, &dom_beg, &dom_end, &addr_end)) {
681863fdafbb refactoring in the small
markus schnalke <meillo@marmaro.de>
parents: 15
diff changeset
38 return FALSE;
681863fdafbb refactoring in the small
markus schnalke <meillo@marmaro.de>
parents: 15
diff changeset
39 }
0
08114f7dcc23 this is masqmail-0.2.21 from oliver kurth
meillo@marmaro.de
parents:
diff changeset
40
272
681863fdafbb refactoring in the small
markus schnalke <meillo@marmaro.de>
parents: 15
diff changeset
41 if (dom_beg) {
681863fdafbb refactoring in the small
markus schnalke <meillo@marmaro.de>
parents: 15
diff changeset
42 left = g_strndup(p, dom_beg - p);
681863fdafbb refactoring in the small
markus schnalke <meillo@marmaro.de>
parents: 15
diff changeset
43 right = g_strndup(dom_end, addr_end - dom_end);
0
08114f7dcc23 this is masqmail-0.2.21 from oliver kurth
meillo@marmaro.de
parents:
diff changeset
44
272
681863fdafbb refactoring in the small
markus schnalke <meillo@marmaro.de>
parents: 15
diff changeset
45 rewr_string = g_strconcat(left, domain, right, NULL);
681863fdafbb refactoring in the small
markus schnalke <meillo@marmaro.de>
parents: 15
diff changeset
46 } else {
681863fdafbb refactoring in the small
markus schnalke <meillo@marmaro.de>
parents: 15
diff changeset
47 left = g_strndup(p, loc_end - p);
681863fdafbb refactoring in the small
markus schnalke <meillo@marmaro.de>
parents: 15
diff changeset
48 right = g_strndup(loc_end, addr_end - loc_end);
0
08114f7dcc23 this is masqmail-0.2.21 from oliver kurth
meillo@marmaro.de
parents:
diff changeset
49
272
681863fdafbb refactoring in the small
markus schnalke <meillo@marmaro.de>
parents: 15
diff changeset
50 rewr_string = g_strconcat(left, "@", domain, right, NULL);
681863fdafbb refactoring in the small
markus schnalke <meillo@marmaro.de>
parents: 15
diff changeset
51 }
681863fdafbb refactoring in the small
markus schnalke <meillo@marmaro.de>
parents: 15
diff changeset
52 g_free(left);
681863fdafbb refactoring in the small
markus schnalke <meillo@marmaro.de>
parents: 15
diff changeset
53 g_free(right);
0
08114f7dcc23 this is masqmail-0.2.21 from oliver kurth
meillo@marmaro.de
parents:
diff changeset
54
272
681863fdafbb refactoring in the small
markus schnalke <meillo@marmaro.de>
parents: 15
diff changeset
55 p = addr_end;
681863fdafbb refactoring in the small
markus schnalke <meillo@marmaro.de>
parents: 15
diff changeset
56 if (*p == ',') {
681863fdafbb refactoring in the small
markus schnalke <meillo@marmaro.de>
parents: 15
diff changeset
57 p++;
681863fdafbb refactoring in the small
markus schnalke <meillo@marmaro.de>
parents: 15
diff changeset
58 }
681863fdafbb refactoring in the small
markus schnalke <meillo@marmaro.de>
parents: 15
diff changeset
59 new_hdr = g_strconcat(new_hdr, rewr_string, *p != '\0' ? "," : NULL, NULL);
681863fdafbb refactoring in the small
markus schnalke <meillo@marmaro.de>
parents: 15
diff changeset
60 }
10
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
61
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
62 tmp = (hdr->value - hdr->header);
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
63 g_free(hdr->header);
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
64 hdr->header = new_hdr;
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
65 hdr->value = hdr->header + tmp;
0
08114f7dcc23 this is masqmail-0.2.21 from oliver kurth
meillo@marmaro.de
parents:
diff changeset
66
10
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
67 return TRUE;
0
08114f7dcc23 this is masqmail-0.2.21 from oliver kurth
meillo@marmaro.de
parents:
diff changeset
68 }
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 gboolean
366
41958685480d Switched to `type *name' style
markus schnalke <meillo@marmaro.de>
parents: 272
diff changeset
71 map_address_header(header *hdr, GList *table)
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 GList *addr_list = addr_list_append_rfc822(NULL, hdr->value, conf.host_name);
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
74 GList *addr_node;
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
75 gchar *new_hdr = g_strndup(hdr->header, hdr->value - hdr->header);
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
76 gboolean did_change = FALSE;
0
08114f7dcc23 this is masqmail-0.2.21 from oliver kurth
meillo@marmaro.de
parents:
diff changeset
77
10
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
78 foreach(addr_list, addr_node) {
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
79 address *addr = (address *) (addr_node->data);
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
80 gchar *rewr_string = (gchar *) table_find_fnmatch(table, addr->local_part);
0
08114f7dcc23 this is masqmail-0.2.21 from oliver kurth
meillo@marmaro.de
parents:
diff changeset
81
272
681863fdafbb refactoring in the small
markus schnalke <meillo@marmaro.de>
parents: 15
diff changeset
82 if (rewr_string) {
10
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
83 did_change = TRUE;
272
681863fdafbb refactoring in the small
markus schnalke <meillo@marmaro.de>
parents: 15
diff changeset
84 } else {
681863fdafbb refactoring in the small
markus schnalke <meillo@marmaro.de>
parents: 15
diff changeset
85 rewr_string = addr->address;
681863fdafbb refactoring in the small
markus schnalke <meillo@marmaro.de>
parents: 15
diff changeset
86 }
0
08114f7dcc23 this is masqmail-0.2.21 from oliver kurth
meillo@marmaro.de
parents:
diff changeset
87
272
681863fdafbb refactoring in the small
markus schnalke <meillo@marmaro.de>
parents: 15
diff changeset
88 if (rewr_string) {
10
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
89 new_hdr = g_strconcat(new_hdr, rewr_string, g_list_next(addr_node) ? "," : "\n", NULL);
272
681863fdafbb refactoring in the small
markus schnalke <meillo@marmaro.de>
parents: 15
diff changeset
90 }
10
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
91 }
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
92 if (did_change) {
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
93 g_free(hdr->header);
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
94 hdr->header = new_hdr;
272
681863fdafbb refactoring in the small
markus schnalke <meillo@marmaro.de>
parents: 15
diff changeset
95 } else {
10
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
96 g_free(new_hdr);
272
681863fdafbb refactoring in the small
markus schnalke <meillo@marmaro.de>
parents: 15
diff changeset
97 }
0
08114f7dcc23 this is masqmail-0.2.21 from oliver kurth
meillo@marmaro.de
parents:
diff changeset
98
10
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
99 return did_change;
0
08114f7dcc23 this is masqmail-0.2.21 from oliver kurth
meillo@marmaro.de
parents:
diff changeset
100 }