aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--agent/agent.h4
-rw-r--r--agent/genkey.c5
-rw-r--r--common/i18n.h12
-rw-r--r--common/util.h8
4 files changed, 26 insertions, 3 deletions
diff --git a/agent/agent.h b/agent/agent.h
index 70d63cf5d..2948bff76 100644
--- a/agent/agent.h
+++ b/agent/agent.h
@@ -301,6 +301,10 @@ typedef int (*lookup_ttl_t)(const char *hexgrip);
the connection. The macro LunderscoreIMPL is used by i18n to
actually define the inline function when needed. */
#define L_(a) agent_Lunderscore (ctrl, (a))
+#define LunderscorePROTO \
+ static inline const char *agent_Lunderscore (ctrl_t ctrl, \
+ const char *string) \
+ GNUPG_GCC_ATTR_FORMAT_ARG(2);
#define LunderscoreIMPL \
static inline const char * \
agent_Lunderscore (ctrl_t ctrl, const char *string) \
diff --git a/agent/genkey.c b/agent/genkey.c
index b5dee8ee5..df17880c9 100644
--- a/agent/genkey.c
+++ b/agent/genkey.c
@@ -271,8 +271,9 @@ check_passphrase_constraints (ctrl_t ctrl, const char *pw,
goto leave;
}
- msg3 = xtrystrdup (L_("A passphrase may not be a known term or match%0A"
- "certain pattern."));
+ msg3 = xtryasprintf
+ (L_("A passphrase may not be a known term or match%%0A"
+ "certain pattern."));
if (!msg3)
{
err = gpg_error_from_syserror ();
diff --git a/common/i18n.h b/common/i18n.h
index 8507b8f27..45710b2cc 100644
--- a/common/i18n.h
+++ b/common/i18n.h
@@ -38,14 +38,24 @@
# endif
#endif /*!USE_SIMPLE_GETTEXT*/
+#ifndef GNUPG_GCC_ATTR_FORMAT_ARG
+#if __GNUC__ >= 3 /* Actually 2.8 but testing the major is easier. */
+# define GNUPG_GCC_ATTR_FORMAT_ARG(a) __attribute__ ((__format_arg__ (a)))
+#else
+# define GNUPG_GCC_ATTR_FORMAT_ARG(a)
+#endif
+#endif
+
void i18n_init (void);
char *i18n_switchto_utf8 (void);
void i18n_switchback (char *saved_codeset);
const char *i18n_utf8 (const char *string);
-const char *i18n_localegettext (const char *lc_messages, const char *string);
+const char *i18n_localegettext (const char *lc_messages, const char *string)
+ GNUPG_GCC_ATTR_FORMAT_ARG(2);
/* If a module wants a local L_() fucntion we define it here. */
#ifdef LunderscoreIMPL
+LunderscorePROTO
LunderscoreIMPL
#endif
diff --git a/common/util.h b/common/util.h
index d5ddc1f13..b92d78c4d 100644
--- a/common/util.h
+++ b/common/util.h
@@ -153,6 +153,14 @@
/* GCC attributes. */
+#ifndef GNUPG_GCC_ATTR_FORMAT_ARG
+#if __GNUC__ >= 3 /* Actually 2.8 but testing the major is easier. */
+# define GNUPG_GCC_ATTR_FORMAT_ARG(a) __attribute__ ((__format_arg__ (a)))
+#else
+# define GNUPG_GCC_ATTR_FORMAT_ARG(a)
+#endif
+#endif
+
#if __GNUC__ >= 4
# define GNUPG_GCC_A_SENTINEL(a) __attribute__ ((sentinel(a)))
#else