On Thu, Feb 22, 2007 at 09:30:33AM -0800, Brendan Cully wrote: > I intend to cut 1.5.14 this weekend. I'd like to make 1.5.15 the last > proper dev release for 1.6 - that is, feature-freeze after > 1.5.15. So, I'd like to hear once again which patches everyone would > like to see in 1.6 (and which patches people object to). I'm sorry I haven't gotten back to cleaning up my patch to add 'uncolor body' and 'uncolor index' commands. I'd love to have it in 1.6. :) (What I have now is attached, simply because I'm afraid if I'll forget if I take the time to figure out how to use hg and then rediff.. :)
--- mutt-1.5.9/color.c.uncolor-body-header 2005-02-03 10:47:52.000000000 -0800 +++ mutt-1.5.9/color.c 2006-02-07 17:53:13.000000000 -0800 @@ -369,7 +369,8 @@ short parse_uncolor) { int object = 0, do_cache = 0; - COLOR_LINE *tmp, *last = NULL; + char *list; + COLOR_LINE *which, *tmp, *last = NULL; mutt_extract_token (buf, s, 0); @@ -379,11 +380,22 @@ return (-1); } - if (mutt_strncmp (buf->data, "index", 5) != 0) + list = strdup(buf->data); + if (!list) { snprintf (err->data, err->dsize, - _("%s: command valid only for index object"), - parse_uncolor ? "uncolor" : "unmono"); + _("%s: could not allocate storage for %.16s"), + parse_uncolor ? "uncolor" : "unmono", buf->data); + return (-1); + } + if (!((mutt_strncmp (list, "index", 5) == 0) || + (mutt_strncmp (list, "body", 4) ==0) || + (mutt_strncmp (list, "header", 7) ==0))) + { + snprintf (err->data, err->dsize, + _("%s: command valid only for index, body, header objects, not %.16s"), + parse_uncolor ? "uncolor" : "unmono", buf->data); + free(list); return (-1); } @@ -391,6 +403,7 @@ { snprintf (err->data, err->dsize, _("%s: too few arguments"), parse_uncolor ? "uncolor" : "unmono"); + free(list); return (-1); } @@ -413,16 +426,24 @@ mutt_extract_token (buf, s, 0); while (MoreArgs (s)); + free(list); return 0; } + if (mutt_strncmp(list, "index", 5) == 0) + which = ColorIndexList; + else if (mutt_strncmp(list, "body", 4) == 0) + which = ColorBodyList; + else if (mutt_strncmp(list, "header", 7) == 0) + which = ColorHdrList; + do { mutt_extract_token (buf, s, 0); if (!mutt_strcmp ("*", buf->data)) { - for (tmp = ColorIndexList; tmp; ) + for (tmp = which; tmp; ) { if (!do_cache) do_cache = 1; @@ -430,22 +451,33 @@ tmp = tmp->next; mutt_free_color_line(&last, parse_uncolor); } - ColorIndexList = NULL; + if (mutt_strncmp(list, "index", 5) == 0) + ColorIndexList = NULL; + else if (mutt_strncmp(list, "body", 4) == 0) + ColorBodyList = NULL; + else if (mutt_strncmp(list, "header", 7) == 0) + ColorHdrList = NULL; } else { - for (last = NULL, tmp = ColorIndexList; tmp; last = tmp, tmp = tmp->next) + for (last = NULL, tmp = which; tmp; last = tmp, tmp = tmp->next) { if (!mutt_strcmp (buf->data, tmp->pattern)) { if (!do_cache) do_cache = 1; - dprint(1,(debugfile,"Freeing pattern \"%s\" from ColorIndexList\n", - tmp->pattern)); + dprint(1,(debugfile,"Freeing pattern \"%s\" from \"%s\"\n", + tmp->pattern, list ? list : "NULL")); if (last) last->next = tmp->next; - else - ColorIndexList = tmp->next; + else { + if (mutt_strncmp(list, "index", 5) == 0) + ColorIndexList = tmp->next; + else if (mutt_strncmp(list, "body", 4) == 0) + ColorBodyList = tmp->next; + else if (mutt_strncmp(list, "header", 7) == 0) + ColorHdrList = tmp->next; + } mutt_free_color_line(&tmp, parse_uncolor); break; } @@ -463,6 +495,7 @@ for (i = 0; Context && i < Context->msgcount; i++) Context->hdrs[i]->pair = 0; } + free(list); return (0); }
Attachment:
pgp3hCQHLqGqq.pgp
Description: PGP signature