Mercurial > masqmail
changeset 272:681863fdafbb
refactoring in the small
author | markus schnalke <meillo@marmaro.de> |
---|---|
date | Fri, 03 Dec 2010 19:13:25 -0300 (2010-12-03) |
parents | 899175e8dff0 |
children | 00724782b6c9 |
files | src/rewrite.c |
diffstat | 1 files changed, 33 insertions(+), 31 deletions(-) [+] |
line wrap: on
line diff
--- a/src/rewrite.c Fri Dec 03 13:05:59 2010 -0300 +++ b/src/rewrite.c Fri Dec 03 19:13:25 2010 -0300 @@ -26,39 +26,38 @@ gchar *p = hdr->value; gchar *new_hdr = g_strndup(hdr->header, hdr->value - hdr->header); gint tmp; + gchar *loc_beg, *loc_end; + gchar *dom_beg, *dom_end; + gchar *addr_end; + gchar *rewr_string; + gchar *left, *right; while (*p) { - gchar *loc_beg, *loc_end; - gchar *dom_beg, *dom_end; - gchar *addr_end; - gchar *rewr_string; + if (!parse_address_rfc822(p, &loc_beg, &loc_end, &dom_beg, &dom_end, &addr_end)) { + return FALSE; + } - if (parse_address_rfc822(p, &loc_beg, &loc_end, &dom_beg, &dom_end, &addr_end)) { - gchar *left, *right; + if (dom_beg) { + left = g_strndup(p, dom_beg - p); + right = g_strndup(dom_end, addr_end - dom_end); - if (dom_beg != NULL) { - left = g_strndup(p, dom_beg - p); - right = g_strndup(dom_end, addr_end - dom_end); + rewr_string = g_strconcat(left, domain, right, NULL); + } else { + left = g_strndup(p, loc_end - p); + right = g_strndup(loc_end, addr_end - loc_end); - rewr_string = g_strconcat(left, domain, right, NULL); - } else { - left = g_strndup(p, loc_end - p); - right = g_strndup(loc_end, addr_end - loc_end); - - rewr_string = g_strconcat(left, "@", domain, right, NULL); - } - g_free(left); - g_free(right); + rewr_string = g_strconcat(left, "@", domain, right, NULL); + } + g_free(left); + g_free(right); - p = addr_end; - if (*p == ',') - p++; + p = addr_end; + if (*p == ',') { + p++; + } + new_hdr = g_strconcat(new_hdr, rewr_string, *p != '\0' ? "," : NULL, NULL); + } - new_hdr = g_strconcat(new_hdr, rewr_string, *p != '\0' ? "," : NULL, NULL); - - } else - return FALSE; - } tmp = (hdr->value - hdr->header); g_free(hdr->header); hdr->header = new_hdr; @@ -79,19 +78,22 @@ address *addr = (address *) (addr_node->data); gchar *rewr_string = (gchar *) table_find_fnmatch(table, addr->local_part); - if (rewr_string == NULL) - rewr_string = addr->address; - else + if (rewr_string) { did_change = TRUE; + } else { + rewr_string = addr->address; + } - if (rewr_string) + if (rewr_string) { new_hdr = g_strconcat(new_hdr, rewr_string, g_list_next(addr_node) ? "," : "\n", NULL); + } } if (did_change) { g_free(hdr->header); hdr->header = new_hdr; - } else + } else { g_free(new_hdr); + } return did_change; }