summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorVadim Kochan <vadim4j@gmail.com>2019-04-06 07:45:04 +0300
committerxhe <xhebox@users.noreply.github.com>2019-04-06 12:45:04 +0800
commit73fc3e7ef7e016a3874b632fd0475969d288f309 (patch)
tree7cb2dd0999194ec6482390ef97c1c7c9a2088a90
parenta597aaebd15ef73a65d67f0d6f746ca7ca812d51 (diff)
downloadgettext-tiny-73fc3e7ef7e016a3874b632fd0475969d288f309.tar.gz
gettext-tiny: Fix format not a string literal error (#41)
Add 'format_arg' attribute for the functions which may return string as formatted parameter, otherwise it fails to compile with corresponding compiler checking flag enabled. Signed-off-by: Vadim Kochan <vadim4j@gmail.com>
-rw-r--r--include/libintl.h25
1 files changed, 19 insertions, 6 deletions
diff --git a/include/libintl.h b/include/libintl.h
index 154c532..ae0462f 100644
--- a/include/libintl.h
+++ b/include/libintl.h
@@ -4,12 +4,25 @@
#ifdef __cplusplus
extern "C" {
#endif
-char *gettext(const char *msgid);
-char *dgettext(const char *domainname, const char *msgid);
-char *dcgettext(const char *domainname, const char *msgid, int category);
-char *ngettext(const char *msgid1, const char *msgid2, unsigned long n);
-char *dngettext(const char *domainname, const char *msgid1, const char *msgid2, unsigned long n);
-char *dcngettext(const char *domainname, const char *msgid1, const char *msgid2, unsigned long n, int category);
+
+#if __GNUC__ + 0 >= 3
+# define GETTEXT_INTERNAL_FA(n) __attribute__ ((__format_arg__ (n)))
+#else
+# define GETTEXT_INTERNAL_FA(n)
+#endif
+
+char *gettext(const char *msgid)
+ GETTEXT_INTERNAL_FA(1);
+char *dgettext(const char *domainname, const char *msgid)
+ GETTEXT_INTERNAL_FA(2);
+char *dcgettext(const char *domainname, const char *msgid, int category)
+ GETTEXT_INTERNAL_FA(2);
+char *ngettext(const char *msgid1, const char *msgid2, unsigned long n)
+ GETTEXT_INTERNAL_FA(1) GETTEXT_INTERNAL_FA(2);
+char *dngettext(const char *domainname, const char *msgid1, const char *msgid2, unsigned long n)
+ GETTEXT_INTERNAL_FA(2) GETTEXT_INTERNAL_FA(3);
+char *dcngettext(const char *domainname, const char *msgid1, const char *msgid2, unsigned long n, int category)
+ GETTEXT_INTERNAL_FA(2) GETTEXT_INTERNAL_FA(3);
char *textdomain(const char *domainname);
char *bind_textdomain_codeset(const char *domainname, const char *codeset);