untracked: fix detection of uname(2) failure
[gitweb.git] / gettext.h
index e539482ae798d3c781c9d56cddd9f048d6b1badc..33696a40b8a11262d090a2eec4dfdce0fed6af0f 100644 (file)
--- a/gettext.h
+++ b/gettext.h
@@ -63,7 +63,31 @@ const char *Q_(const char *msgid, const char *plu, unsigned long n)
 }
 
 /* Mark msgid for translation but do not translate it. */
+#if !USE_PARENS_AROUND_GETTEXT_N
 #define N_(msgid) msgid
+#else
+/*
+ * Strictly speaking, this will lead to invalid C when
+ * used this way:
+ *     static const char s[] = N_("FOO");
+ * which will expand to
+ *     static const char s[] = ("FOO");
+ * and in valid C, the initializer on the right hand side must
+ * be without the parentheses.  But many compilers do accept it
+ * as a language extension and it will allow us to catch mistakes
+ * like:
+ *     static const char *msgs[] = {
+ *             N_("one")
+ *             N_("two"),
+ *             N_("three"),
+ *             NULL
+ *     };
+ * (notice the missing comma on one of the lines) by forcing
+ * a compilation error, because parenthesised ("one") ("two")
+ * will not get silently turned into ("onetwo").
+ */
+#define N_(msgid) (msgid)
+#endif
 
 const char *get_preferred_languages(void);