summary | shortlog | log | commit | commitdiff | tree
raw | patch | inline | side by side (parent: bb946bb)
raw | patch | inline | side by side (parent: bb946bb)
author | Jonathan Nieder <jrnieder@gmail.com> | |
Tue, 22 Feb 2011 23:41:22 +0000 (23:41 +0000) | ||
committer | Junio C Hamano <gitster@pobox.com> | |
Tue, 8 Mar 2011 20:10:03 +0000 (12:10 -0800) |
Tweak the GETTEXT_POISON facility so it is activated at run time
instead of compile time. If the GIT_GETTEXT_POISON environment
variable is set, _(msg) will result in gibberish as before; but if the
GIT_GETTEXT_POISON variable is not set, it will return the message for
human-readable output. So the behavior of mistranslated and
untranslated git can be compared without rebuilding git in between.
For simplicity we always set the GIT_GETTEXT_POISON variable in tests.
This does not affect builds without the GETTEXT_POISON compile-time
option set, so non-i18n git will not be slowed down.
Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
instead of compile time. If the GIT_GETTEXT_POISON environment
variable is set, _(msg) will result in gibberish as before; but if the
GIT_GETTEXT_POISON variable is not set, it will return the message for
human-readable output. So the behavior of mistranslated and
untranslated git can be compared without rebuilding git in between.
For simplicity we always set the GIT_GETTEXT_POISON variable in tests.
This does not affect builds without the GETTEXT_POISON compile-time
option set, so non-i18n git will not be slowed down.
Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Makefile | patch | blob | history | |
gettext.c | [new file with mode: 0644] | patch | blob |
gettext.h | patch | blob | history | |
t/test-lib.sh | patch | blob | history |
diff --git a/Makefile b/Makefile
index c348bb73375bcd7aed3264f2aa3efd184d6947aa..4e9d935828791295602ec675f67210e8df6cb907 100644 (file)
--- a/Makefile
+++ b/Makefile
# Define NO_REGEX if you have no or inferior regex support in your C library.
#
# Define GETTEXT_POISON if you are debugging the choice of strings marked
-# for translation. This will turn all strings that use gettext into gibberish.
+# for translation. In a GETTEXT_POISON build, you can turn all strings marked
+# for translation into gibberish by setting the GIT_GETTEXT_POISON variable
+# (to any value) in your environment.
#
# Define JSMIN to point to JavaScript minifier that functions as
# a filter to have gitweb.js minified.
BASIC_CFLAGS += -DNO_SYMLINK_HEAD
endif
ifdef GETTEXT_POISON
+ LIB_OBJS += gettext.o
BASIC_CFLAGS += -DGETTEXT_POISON
endif
ifdef NO_STRCASESTR
diff --git a/gettext.c b/gettext.c
--- /dev/null
+++ b/gettext.c
@@ -0,0 +1,14 @@
+/*
+ * Copyright (c) 2010 Ævar Arnfjörð Bjarmason
+ */
+
+#include "git-compat-util.h"
+#include "gettext.h"
+
+int use_gettext_poison(void)
+{
+ static int poison_requested = -1;
+ if (poison_requested == -1)
+ poison_requested = getenv("GIT_GETTEXT_POISON") ? 1 : 0;
+ return poison_requested;
+}
diff --git a/gettext.h b/gettext.h
index 11d82b0a6ec5a442619a6369dc4f9253700e726c..04b5958e2bc94ec64de8250dc303258d9de68df0 100644 (file)
--- a/gettext.h
+++ b/gettext.h
#define FORMAT_PRESERVING(n) __attribute__((format_arg(n)))
#ifdef GETTEXT_POISON
-#define use_gettext_poison() 1
+extern int use_gettext_poison(void);
#else
#define use_gettext_poison() 0
#endif
diff --git a/t/test-lib.sh b/t/test-lib.sh
index 0840e4a5c9151c3b3ead55be63e2e04bcbcb4a31..f4c1e04e4f26ca38b57fc6c47b05cf92111107b6 100644 (file)
--- a/t/test-lib.sh
+++ b/t/test-lib.sh
test -z "$NO_PYTHON" && test_set_prereq PYTHON
# Can we rely on git's output in the C locale?
-test -z "$GETTEXT_POISON" && test_set_prereq C_LOCALE_OUTPUT
+if test -n "$GETTEXT_POISON"
+then
+ GIT_GETTEXT_POISON=YesPlease
+ export GIT_GETTEXT_POISON
+else
+ test_set_prereq C_LOCALE_OUTPUT
+fi
# test whether the filesystem supports symbolic links
ln -s x y 2>/dev/null && test -h y 2>/dev/null && test_set_prereq SYMLINKS