diff options
-rw-r--r-- | configure.ac | 6 | ||||
-rw-r--r-- | src/grep.c | 6 |
2 files changed, 12 insertions, 0 deletions
diff --git a/configure.ac b/configure.ac index 8a20317e..0dd4d849 100644 --- a/configure.ac +++ b/configure.ac @@ -206,6 +206,12 @@ fi gl_FUNC_PCRE +gl_PRINTF_SIZES_C99 +if test "$gl_cv_func_printf_sizes_c99" = yes; then + AC_DEFINE([HAVE_PRINTF_C99_SIZES], [1], + [Define to 1 if printf formats %j, %z, %t and %L work.]) +fi + case $host_os in mingw*) suffix=w32 ;; *) suffix=posix ;; @@ -1074,6 +1074,7 @@ print_sep (char sep) static void print_offset (uintmax_t pos, int min_width, const char *color) { +#if !HAVE_PRINTF_C99_SIZES /* Do not rely on printf to print pos, since uintmax_t may be longer than long, and long long is not portable. */ @@ -1091,9 +1092,14 @@ print_offset (uintmax_t pos, int min_width, const char *color) if (align_tabs) while (--min_width >= 0) *--p = ' '; +#endif /* !HAVE_PRINTF_C99_SIZES */ pr_sgr_start_if (color); +#if HAVE_PRINTF_C99_SIZES + printf_errno ("%*ju", align_tabs ? min_width : 0, pos); +#else fwrite_errno (p, 1, buf + sizeof buf - p); +#endif pr_sgr_end_if (color); } |