summaryrefslogtreecommitdiff
path: root/src/od.c
diff options
context:
space:
mode:
authorEric Blake <ebb9@byu.net>2008-06-11 15:02:20 -0600
committerJim Meyering <meyering@redhat.com>2008-06-13 23:00:04 +0200
commitbbbc35c9ed194b0d458f2a2827dfbceb9056ef7d (patch)
treeea3a80390745a49e5fc6aa94768c45c51f427294 /src/od.c
parentc49b2e32bbdca33464179335000c27a8a169dede (diff)
downloadcoreutils-bbbc35c9ed194b0d458f2a2827dfbceb9056ef7d.tar.xz
od: use gnulib printf replacement as necessary
* src/od.c (includes): Add xprintf.h. (PRINT_TYPE): New macro, using xprintf instead of printf. (print_s_char, print_char, print_s_short, print_short, print_int) (print_long, print_long_long, print_float, print_double) (print_long_double): Factor into PRINT_TYPE macro. (print_named_ascii, print_ascii): Use xprintf. * NEWS: Mention this as a bug fix.
Diffstat (limited to 'src/od.c')
-rw-r--r--src/od.c110
1 files changed, 22 insertions, 88 deletions
diff --git a/src/od.c b/src/od.c
index 830f2abd8..0c95322b3 100644
--- a/src/od.c
+++ b/src/od.c
@@ -25,6 +25,7 @@
#include "system.h"
#include "error.h"
#include "quote.h"
+#include "xprintf.h"
#include "xstrtol.h"
/* The official name of this program (e.g., no `g' prefix). */
@@ -385,95 +386,28 @@ implies 32. By default, od uses -A o -t oS -w16.\n\
/* Define the print functions. */
-static void
-print_s_char (size_t n_bytes, void const *block, char const *fmt_string)
-{
- signed char const *p = block;
- size_t i;
- for (i = n_bytes / sizeof *p; i != 0; i--)
- printf (fmt_string, *p++);
-}
-
-static void
-print_char (size_t n_bytes, void const *block, char const *fmt_string)
-{
- unsigned char const *p = block;
- size_t i;
- for (i = n_bytes / sizeof *p; i != 0; i--)
- printf (fmt_string, *p++);
-}
-
-static void
-print_s_short (size_t n_bytes, void const *block, char const *fmt_string)
-{
- short int const *p = block;
- size_t i;
- for (i = n_bytes / sizeof *p; i != 0; i--)
- printf (fmt_string, *p++);
-}
-
-static void
-print_short (size_t n_bytes, void const *block, char const *fmt_string)
-{
- unsigned short int const *p = block;
- size_t i;
- for (i = n_bytes / sizeof *p; i != 0; i--)
- printf (fmt_string, *p++);
+#define PRINT_TYPE(N, T) \
+static void \
+N (size_t n_bytes, void const *block, char const *fmt_string) \
+{ \
+ T const *p = block; \
+ size_t i; \
+ for (i = n_bytes / sizeof *p; i != 0; i--) \
+ xprintf (fmt_string, *p++); \
}
-static void
-print_int (size_t n_bytes, void const *block, char const *fmt_string)
-{
- unsigned int const *p = block;
- size_t i;
- for (i = n_bytes / sizeof *p; i != 0; i--)
- printf (fmt_string, *p++);
-}
+PRINT_TYPE (print_s_char, signed char)
+PRINT_TYPE (print_char, unsigned char)
+PRINT_TYPE (print_s_short, short int)
+PRINT_TYPE (print_short, unsigned short int)
+PRINT_TYPE (print_int, unsigned int)
+PRINT_TYPE (print_long, unsigned long int)
+PRINT_TYPE (print_long_long, unsigned_long_long_int)
+PRINT_TYPE (print_float, float)
+PRINT_TYPE (print_double, double)
+PRINT_TYPE (print_long_double, long double)
-static void
-print_long (size_t n_bytes, void const *block, char const *fmt_string)
-{
- unsigned long int const *p = block;
- size_t i;
- for (i = n_bytes / sizeof *p; i != 0; i--)
- printf (fmt_string, *p++);
-}
-
-static void
-print_long_long (size_t n_bytes, void const *block, char const *fmt_string)
-{
- unsigned_long_long_int const *p = block;
- size_t i;
- for (i = n_bytes / sizeof *p; i != 0; i--)
- printf (fmt_string, *p++);
-}
-
-static void
-print_float (size_t n_bytes, void const *block, char const *fmt_string)
-{
- float const *p = block;
- size_t i;
- for (i = n_bytes / sizeof *p; i != 0; i--)
- printf (fmt_string, *p++);
-}
-
-static void
-print_double (size_t n_bytes, void const *block, char const *fmt_string)
-{
- double const *p = block;
- size_t i;
- for (i = n_bytes / sizeof *p; i != 0; i--)
- printf (fmt_string, *p++);
-}
-
-static void
-print_long_double (size_t n_bytes, void const *block, char const *fmt_string)
-{
- long double const *p = block;
- size_t i;
- for (i = n_bytes / sizeof *p; i != 0; i--)
- printf (fmt_string, *p++);
-}
+#undef PRINT_TYPE
static void
dump_hexl_mode_trailer (size_t n_bytes, const char *block)
@@ -511,7 +445,7 @@ print_named_ascii (size_t n_bytes, void const *block,
s = buf;
}
- printf (" %3s", s);
+ xprintf (" %3s", s);
}
}
@@ -566,7 +500,7 @@ print_ascii (size_t n_bytes, void const *block,
s = buf;
}
- printf (" %3s", s);
+ xprintf (" %3s", s);
}
}