In particular, standard C does not allow a parenthesized string
as an array initializer. Some compilers, for example GCC and MSVC,
allow this syntax as an extension, but it is (obviously) not a
portable construct.
In order to avoid such a construct, for example while initialising
the array 'ignore_error' (builtin/add.c line 309), we simply
remove the parenthesis from the definition of the N_() macro.
Signed-off-by: Ramsay Jones <redacted>
---
For example, tcc can not parse this syntax.
Note that sparse issues warnings like the following:
builtin/add.c:309:1: warning: too long initializer-string for \
array of char
which is actually a bug in sparse that is tickled by a parenthesized
string initializer (it doesn't determine the correct size of the
string). Again I have a patch ...
gettext.h | 2 +-
1 files changed, 1 insertions(+), 1 deletions(-)
diff --git a/gettext.h b/gettext.h
index 1b253b7..24d9182 100644
--- a/gettext.h
+++ b/gettext.h
@@ -35,6 +35,6 @@ const char *Q_(const char *msgid, const char *plu, unsigned long n)
}
/* Mark msgid for translation but do not translate it. */
-#define N_(msgid) (msgid)
+#define N_(msgid) msgid
#endif
--
1.7.4
Hi,
Ramsay Jones wrote:
quoted hunk
+++ b/gettext.h
@@ -35,6 +35,6 @@ const char *Q_(const char *msgid, const char *plu, unsigned long n)
[...]
-#define N_(msgid) (msgid)
+#define N_(msgid) msgid
Good catch. Thanks!
In particular, standard C does not allow a parenthesized string
as an array initializer.
The subject line seems unnecessarily vague. Why not:
i18n: avoid parenthesized string as array initializer
The syntax
static const char ignore_error[] = ("something");
is invalid C. GCC and MSVC can parse it, but for example
tcc cannot. So remove the parenthesis from the definition
of the N_() macro.
Signed-off-by: Ramsay Jones [off-list ref]
Acked-by: Jonathan Nieder [off-list ref]
On Fri, Apr 8, 2011 at 00:10, Jonathan Nieder [off-list ref] wrote:
Hi,
Ramsay Jones wrote:
quoted
+++ b/gettext.h
@@ -35,6 +35,6 @@ const char *Q_(const char *msgid, const char *plu, unsigned long n)
[...]
quoted
-#define N_(msgid) (msgid)
+#define N_(msgid) msgid
Good catch. Thanks!
quoted
In particular, standard C does not allow a parenthesized string
as an array initializer.
The subject line seems unnecessarily vague. Why not:
i18n: avoid parenthesized string as array initializer
The syntax
static const char ignore_error[] = ("something");
is invalid C. GCC and MSVC can parse it, but for example
tcc cannot. So remove the parenthesis from the definition
of the N_() macro.
Signed-off-by: Ramsay Jones [off-list ref]
Acked-by: Jonathan Nieder [off-list ref]
This looks good to me with this commit message:
Acked-by: Ævar Arnfjörð Bjarmason <redacted>
Jonathan Nieder wrote:
quoted
+++ b/gettext.h
@@ -35,6 +35,6 @@ const char *Q_(const char *msgid, const char *plu, unsigned long n)
[...]
quoted
-#define N_(msgid) (msgid)
+#define N_(msgid) msgid
Good catch. Thanks!
quoted
In particular, standard C does not allow a parenthesized string
as an array initializer.
The subject line seems unnecessarily vague. Why not:
i18n: avoid parenthesized string as array initializer
The syntax
static const char ignore_error[] = ("something");
is invalid C. GCC and MSVC can parse it, but for example
tcc cannot. So remove the parenthesis from the definition
of the N_() macro.
Signed-off-by: Ramsay Jones [off-list ref]
Acked-by: Jonathan Nieder [off-list ref]
Sounds good to me. I'll re-roll and use your message verbatim.
Thanks!
ATB,
Ramsay Jones