# HG changeset patch # User markus schnalke # Date 1291414405 10800 # Node ID 681863fdafbb22c8805c748d74ed4edad5135ae2 # Parent 899175e8dff09d8d66c6697b25808e5e4374595c refactoring in the small diff -r 899175e8dff0 -r 681863fdafbb src/rewrite.c --- 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++; + } + new_hdr = g_strconcat(new_hdr, rewr_string, *p != '\0' ? "," : NULL, NULL); + } - p = addr_end; - if (*p == ',') - p++; - - 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) + if (rewr_string) { + did_change = TRUE; + } else { rewr_string = addr->address; - else - did_change = TRUE; + } - 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; }