* [PATCH 09/10] reiserfscore: add support for register_printf_specifier
@ 2012-10-11 18:29 Jeff Mahoney
0 siblings, 0 replies; only message in thread
From: Jeff Mahoney @ 2012-10-11 18:29 UTC (permalink / raw)
To: reiserfs-devel
register_printf_modifier is causing build warnings complaining that
it is deprecated. This patch adds support for register_printf_specifier
and uses it if it's present. Otherwise, it will fall back to
register_printf_modifier.
Signed-off-by: Jeff Mahoney <jeffm@suse.com>
---
configure.in | 9 +++++--
reiserfscore/prints.c | 70 ++++++++++++++++---------------------------------
2 files changed, 30 insertions(+), 49 deletions(-)
diff --git a/configure.in b/configure.in
index dd3e353..5f172c2 100644
--- a/configure.in
+++ b/configure.in
@@ -104,8 +104,13 @@ AC_PROG_GCC_TRADITIONAL
AC_FUNC_MEMCMP
AC_FUNC_STRFTIME
AC_FUNC_VPRINTF
-AC_CHECK_FUNCS(strerror strstr strtol register_printf_function statfs getmntent\
- hasmntopt memset time uname strptime ctime_r)
+AC_CHECK_FUNCS(strerror strstr strtol statfs getmntent hasmntopt memset time \
+ uname strptime ctime_r register_printf_modifier \
+ register_printf_specifier)
+
+if test -z "${ac_cv_func_register_printf_function}" -a -z "${ac_cv_func_register_printf_specifier}"; then
+ AC_MSG_ERROR(reiserfsprogs requires a method to add printf modifiers)
+fi
dnl Never enable this. It is for debugging only
diff --git a/reiserfscore/prints.c b/reiserfscore/prints.c
index 95e3014..89dc26c 100644
--- a/reiserfscore/prints.c
+++ b/reiserfscore/prints.c
@@ -16,46 +16,22 @@
# include <uuid/uuid.h>
#endif
-#define PA_KEY (PA_LAST)
-#define PA_BUFFER_HEAD (PA_LAST + 1)
-#define PA_ITEM_HEAD (PA_LAST + 2)
-#define PA_DISK_CHILD (PA_LAST + 3)
-
-
-static int _arginfo_b (const struct printf_info *info, size_t n, int *argtypes) {
- if (n > 0)
- argtypes[0] = PA_BUFFER_HEAD | PA_FLAG_PTR;
- return 1;
-}
-
-static int _arginfo_K (const struct printf_info *info, size_t n, int *argtypes) {
- if (n > 0)
- argtypes[0] = PA_KEY | PA_FLAG_PTR;
- return 1;
-}
-
-static int _arginfo_H (const struct printf_info *info, size_t n, int *argtypes) {
- if (n > 0)
- argtypes[0] = PA_ITEM_HEAD | PA_FLAG_PTR;
- return 1;
-}
-
-static int _arginfo_y (const struct printf_info *info, size_t n, int *argtypes) {
- if (n > 0)
- argtypes[0] = PA_DISK_CHILD | PA_FLAG_PTR;
- return 1;
-}
-
-static int _arginfo_M (const struct printf_info *info, size_t n, int *argtypes) {
- if (n > 0)
- argtypes[0] = PA_INT | PA_FLAG_SHORT | PA_FLAG_PTR;
- return 1;
-}
-
-static int _arginfo_U (const struct printf_info *info, size_t n, int *argtypes) {
- if (n > 0)
- argtypes[0] = (PA_CHAR|PA_FLAG_PTR);
- return 1;
+#ifndef HAVE_REGISTER_PRINTF_SPECIFIER
+#define register_printf_specifier(x, y, z) register_printf_function(x, y, z)
+static int arginfo_ptr (const struct printf_info *info, size_t n,
+ int *argtypes)
+#else
+static int arginfo_ptr (const struct printf_info *info, size_t n,
+ int *argtypes, int *size)
+#endif
+{
+ if (n > 0) {
+ argtypes[0] = PA_FLAG_PTR;
+#ifdef HAVE_REGISTER_PRINTF_SPECIFIER
+ size[0] = sizeof (void *);
+#endif
+ }
+ return 1;
}
#define FPRINTF \
@@ -224,13 +200,13 @@ void reiserfs_warning (FILE * fp, const char * fmt, ...)
if (!registered) {
registered = 1;
- register_printf_function ('K', print_short_key, _arginfo_K);
- register_printf_function ('k', print_key, _arginfo_K);
- register_printf_function ('H', print_item_head, _arginfo_H);
- register_printf_function ('b', print_block_head, _arginfo_b);
- register_printf_function ('y', print_disk_child, _arginfo_y);
- register_printf_function ('M', print_sd_mode, _arginfo_M);
- register_printf_function ('U', print_sd_uuid, _arginfo_U);
+ register_printf_specifier ('K', print_short_key, arginfo_ptr);
+ register_printf_specifier ('k', print_key, arginfo_ptr);
+ register_printf_specifier ('H', print_item_head, arginfo_ptr);
+ register_printf_specifier ('b', print_block_head, arginfo_ptr);
+ register_printf_specifier ('y', print_disk_child, arginfo_ptr);
+ register_printf_specifier ('M', print_sd_mode, arginfo_ptr);
+ register_printf_specifier ('U', print_sd_uuid, arginfo_ptr);
}
va_start (args, fmt);
--
1.7.10.4
^ permalink raw reply related [flat|nested] only message in thread
only message in thread, other threads:[~2012-10-11 18:29 UTC | newest]
Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2012-10-11 18:29 [PATCH 09/10] reiserfscore: add support for register_printf_specifier Jeff Mahoney
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.