Cool. This seems very reasonable. Just some style nits: The three places where you have "sanitize_string(", there should be a space between the function name and the paren. Relatedly, "for(;*loop;loop++){" should be spaced out like "for (; *loop; loop++) {". (Curiously, there seems to be anti-consensus on whether the brace should be on the same line or the next, but otherwise the notmuch code is quite consistent about spacing.) Also, existing code conventionally uses a variable named "local" for function-level talloc contexts such as your ctx_quote.
On Sun, May 8, 2011 at 5:14 PM, Florian Friesdorf <flo at chaoflow.net> wrote: > From: Andreas Amann <a.amann at ucc.ie> > > When a Subject field contained encoded CRLF sequences, these sequences > would appear unfiltered in the output of notmuch search. This confused > the notmuch emacs interface leading to "Unexpected Output" > messages. This is now fixed by replacing all characters with ASCII > code less than 32 with a question mark. > --- > ?notmuch-search.c | ? 22 ++++++++++++++++++++-- > ?1 files changed, 20 insertions(+), 2 deletions(-) > > diff --git a/notmuch-search.c b/notmuch-search.c > index 5e39511..e7fc41a 100644 > --- a/notmuch-search.c > +++ b/notmuch-search.c > @@ -111,6 +111,20 @@ format_item_id_text (unused (const void *ctx), > ? ? printf ("%s%s", item_type, item_id); > ?} > > +static char * > +sanitize_string(const void *ctx, const char *str) > +{ > + ? ?char *out, *loop; > + > + ? ?loop = out = talloc_strdup (ctx, str); > + > + ? ?for(;*loop;loop++){ > + ? ? ? if ((unsigned char)(*loop) < 32) > + ? ? ? ? ? *loop = '?'; > + ? ?} > + ? ?return out; > +} > + > ?static void > ?format_thread_text (const void *ctx, > ? ? ? ? ? ? ? ? ? ?const char *thread_id, > @@ -120,13 +134,17 @@ format_thread_text (const void *ctx, > ? ? ? ? ? ? ? ? ? ?const char *authors, > ? ? ? ? ? ? ? ? ? ?const char *subject) > ?{ > + ? ?void *ctx_quote = talloc_new (ctx); > + > ? ? printf ("thread:%s %12s [%d/%d] %s; %s", > ? ? ? ? ? ?thread_id, > ? ? ? ? ? ?notmuch_time_relative_date (ctx, date), > ? ? ? ? ? ?matched, > ? ? ? ? ? ?total, > - ? ? ? ? ? authors, > - ? ? ? ? ? subject); > + ? ? ? ? ? sanitize_string(ctx_quote, authors), > + ? ? ? ? ? sanitize_string(ctx_quote, subject)); > + > + ? ?talloc_free (ctx_quote); > ?} > > ?static void > -- > 1.7.5.1 > > _______________________________________________ > notmuch mailing list > notmuch at notmuchmail.org > http://notmuchmail.org/mailman/listinfo/notmuch >