summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNicolas Williams <nico@cryptonector.com>2014-12-23 21:52:03 -0600
committerNicolas Williams <nico@cryptonector.com>2014-12-23 23:22:57 -0600
commitae312bd7feeb33e81d8a5f9784d5e0e392655f8c (patch)
tree4a5ae25274c17a483de28906d00ed5b0ea6671a6
parent9017b83d4ea3da298617eec42ad7dd907fbc1309 (diff)
Use __attribute__ __printf__ with GCC
-rw-r--r--execute.c4
-rw-r--r--jv.h11
-rw-r--r--main.c2
3 files changed, 12 insertions, 5 deletions
diff --git a/execute.c b/execute.c
index 1cab3ba0..2b8a0572 100644
--- a/execute.c
+++ b/execute.c
@@ -802,11 +802,11 @@ jv jq_format_error(jv msg) {
if (jv_get_kind(msg) != JV_KIND_INVALID) {
if (jv_get_kind(msg) == JV_KIND_STRING)
- return jv_string_fmt("jq: error: %s", msg);
+ return jv_string_fmt("jq: error: %s", jv_string_value(msg));
msg = jv_dump_string(msg, JV_PRINT_INVALID);
if (jv_get_kind(msg) == JV_KIND_STRING)
- return jv_string_fmt("jq: error: %s", msg);
+ return jv_string_fmt("jq: error: %s", jv_string_value(msg));
return jq_format_error(jv_null()); // ENOMEM
}
diff --git a/jv.h b/jv.h
index 5dca65cd..67833ad1 100644
--- a/jv.h
+++ b/jv.h
@@ -91,6 +91,13 @@ jv jv_array_indexes(jv, jv);
#define JV_ARRAY(...) \
JV_ARRAY_IDX(__VA_ARGS__, JV_ARRAY_7, JV_ARRAY_6, JV_ARRAY_5, JV_ARRAY_4, JV_ARRAY_3, JV_ARRAY_2, JV_ARRAY_1)(__VA_ARGS__)
+#ifdef __GNUC__
+#define JV_PRINTF_LIKE(fmt_arg_num, args_num) \
+ __attribute__ ((__format__( __printf__, fmt_arg_num, args_num)))
+#define JV_VPRINTF_LIKE(fmt_arg_num) \
+ __attribute__ ((__format__( __printf__, fmt_arg_num, 0)))
+#endif
+
jv jv_string(const char*);
jv jv_string_sized(const char*, int);
@@ -102,8 +109,8 @@ const char* jv_string_value(jv);
jv jv_string_indexes(jv j, jv k);
jv jv_string_slice(jv j, int start, int end);
jv jv_string_concat(jv, jv);
-jv jv_string_vfmt(const char*, va_list);
-jv jv_string_fmt(const char*, ...);
+jv jv_string_vfmt(const char*, va_list) JV_VPRINTF_LIKE(1);
+jv jv_string_fmt(const char*, ...) JV_PRINTF_LIKE(1, 2);
jv jv_string_append_codepoint(jv a, uint32_t c);
jv jv_string_append_buf(jv a, const char* buf, int len);
jv jv_string_append_str(jv a, const char* str);
diff --git a/main.c b/main.c
index 34cd7739..1c9b7fe2 100644
--- a/main.c
+++ b/main.c
@@ -398,7 +398,7 @@ int main(int argc, char* argv[]) {
if (strchr(JQ_VERSION, '-') == NULL)
jq_set_attr(jq, jv_string("VERSION_DIR"), jv_string(JQ_VERSION));
else
- jq_set_attr(jq, jv_string("VERSION_DIR"), jv_string_fmt("%.*s-master", strchr(JQ_VERSION, '-') - JQ_VERSION, JQ_VERSION));
+ jq_set_attr(jq, jv_string("VERSION_DIR"), jv_string_fmt("%.*s-master", (int)(strchr(JQ_VERSION, '-') - JQ_VERSION), JQ_VERSION));
#if (!defined(WIN32) && defined(HAVE_ISATTY)) || defined(HAVE__ISATTY)