Re: [PATCH] Poison gettext with the Ook language
From: SZEDER Gábor <hidden>
Date: 2018-10-22 20:23:20
On Mon, Oct 22, 2018 at 05:36:33PM +0200, Nguyễn Thái Ngọc Duy wrote:
The current gettext() function just replaces all strings with '# GETTEXT POISON #' including format strings and hides the things that we should be allowed to grep (like branch names, or some other codes) even when gettext is poisoned. This patch implements the poisoned _() with a universal and totally legit language called Ook [1]. We could actually grep stuff even in with this because format strings are preserved.
Once upon a time a GETTEXT_POISON build job failed on me, and the error message: error: # GETTEXT POISON # was not particularly useful. Ook wouldn't help with that... So I came up with the following couple of patches that implement a "scrambled" format that makes the poisoned output legible for humans but still gibberish for machine consumption (i.e. grep-ing the text part would still fail): error: U.n.a.b.l.e. .t.o. .c.r.e.a.t.e. .'./home/szeder/src/git/t/trash directory.t1404-update-ref-errors/.git/packed-refs...l.o.c.k.'.:. .File exists... I have been running GETTEXT_POISON builds with this series for some months now, but haven't submitted it yet, because I haven't decided yet whether including strings (paths, refs, etc.) in the output as they are is a feature or a flaw. And because it embarrassingly leaks every single translated string... :) SZEDER Gábor (8): test-lib.sh: preserve GIT_GETTEXT_POISON from the environment gettext: don't poison if GIT_GETTEXT_POISON is set but empty lib-rebase: loosen GETTEXT_POISON check in fake editor gettext: #ifdef away GETTEXT POISON-related code from _() and Q_() gettext: put "# GETTEXT POISON #" string literal into a macro gettext: use an enum for the mode of GETTEXT POISONing gettext: introduce GIT_GETTEXT_POISON=scrambled travis-ci: run GETTEXT POISON build job in scrambled mode, too Makefile | 2 +- ci/lib-travisci.sh | 1 + ci/run-build-and-tests.sh | 10 +++++-- gettext.c | 63 +++++++++++++++++++++++++++++++++++---- gettext.h | 33 +++++++++++++++----- t/lib-rebase.sh | 2 +- t/test-lib.sh | 17 ++++++++++- 7 files changed, 110 insertions(+), 18 deletions(-) -- 2.19.1.681.g6bd79da3f5