summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--NEWS3
-rw-r--r--cfg.mk17
-rw-r--r--src/dd.c5
-rw-r--r--src/od.c3
-rw-r--r--src/rm.c10
-rw-r--r--src/split.c4
6 files changed, 24 insertions, 18 deletions
diff --git a/NEWS b/NEWS
index 27847d429..3a626563e 100644
--- a/NEWS
+++ b/NEWS
@@ -25,6 +25,9 @@ GNU coreutils NEWS -*- outline -*-
character at the 4GiB position.
[the bug dates back to the initial implementation]
+ rm indicates the correct number of arguments in its confirmation prompt,
+ on all platforms. [bug introduced in coreutils-8.22]
+
** New features
chroot accepts the new --skip-chdir option to not change the working directory
diff --git a/cfg.mk b/cfg.mk
index 734732265..ee444bac2 100644
--- a/cfg.mk
+++ b/cfg.mk
@@ -213,14 +213,15 @@ sc_check-I18N-AUTHORS:
'$$(LIBICONV)' 1>&2; exit 1; }; \
done
-# Ensure %j is not used for intmax_t as it's not universally supported.
-# There are issues on HPUX for example. But note that %ju was used between
-# coreutils 8.13 (2011-10) and 8.20 (2012-10) without any reported issue,
-# and the particular issue this check is associated with was for %*jx.
-# So we may be able to relax this restriction soon.
-sc_prohibit-j-printf-format:
- @cd $(srcdir)/src && GIT_PAGER= git grep -n '%[0*]*j[udx]' *.c \
- && { echo '$(ME): Use PRI*MAX instead of %j' 1>&2; exit 1; } \
+# Disallow the C99 printf size specifiers %z and %j as they're not portable.
+# The gnulib printf replacement does support them, however the printf
+# replacement is not currently explicitly depended on by the gnulib error()
+# module for example. Also we use fprintf() in a few places to output simple
+# formats but don't use the gnulib module as it is seen as overkill at present.
+# We'd have to adjust the above gnulib items before disabling this.
+sc_prohibit-c99-printf-format:
+ @cd $(srcdir)/src && GIT_PAGER= git grep -n '%[0*]*[jz][udx]' *.c \
+ && { echo '$(ME): Use PRI*MAX instead of %j or %z' 1>&2; exit 1; } \
|| :
# Ensure the alternative __attribute (keyword) form isn't used as
diff --git a/src/dd.c b/src/dd.c
index 78433ff58..0b5a4b20a 100644
--- a/src/dd.c
+++ b/src/dd.c
@@ -696,7 +696,7 @@ alloc_ibuf (void)
char *real_buf = malloc (input_blocksize + INPUT_BLOCK_SLOP);
if (!real_buf)
error (EXIT_FAILURE, 0,
- _("memory exhausted by input buffer of size %zu bytes (%s)"),
+ _("memory exhausted by input buffer of size %"PRIuMAX" bytes (%s)"),
input_blocksize, human_size (input_blocksize));
real_buf += SWAB_ALIGN_OFFSET; /* allow space for swab */
@@ -718,7 +718,8 @@ alloc_obuf (void)
char *real_obuf = malloc (output_blocksize + OUTPUT_BLOCK_SLOP);
if (!real_obuf)
error (EXIT_FAILURE, 0,
- _("memory exhausted by output buffer of size %zu bytes (%s)"),
+ _("memory exhausted by output buffer of size %"PRIuMAX
+ " bytes (%s)"),
output_blocksize, human_size (output_blocksize));
obuf = ptr_align (real_obuf, page_size);
}
diff --git a/src/od.c b/src/od.c
index 7ac663ad4..79bc7fc71 100644
--- a/src/od.c
+++ b/src/od.c
@@ -1962,7 +1962,8 @@ main (int argc, char **argv)
}
#ifdef DEBUG
- printf ("lcm=%d, width_per_block=%zu\n", l_c_m, width_per_block);
+ printf ("lcm=%d, width_per_block=%"PRIuMAX"\n", l_c_m,
+ (uintmax_t) width_per_block);
for (i = 0; i < n_specs; i++)
{
int fields_per_block = bytes_per_block / width_bytes[spec[i].size];
diff --git a/src/rm.c b/src/rm.c
index f7adf5b62..4c8ee6e7c 100644
--- a/src/rm.c
+++ b/src/rm.c
@@ -332,18 +332,18 @@ main (int argc, char **argv)
quote ("/"));
}
- size_t n_files = argc - optind;
+ uintmax_t n_files = argc - optind;
char **file = argv + optind;
if (prompt_once && (x.recursive || 3 < n_files))
{
fprintf (stderr,
(x.recursive
- ? ngettext ("%s: remove %zu argument recursively? ",
- "%s: remove %zu arguments recursively? ",
+ ? ngettext ("%s: remove %"PRIuMAX" argument recursively? ",
+ "%s: remove %"PRIuMAX" arguments recursively? ",
select_plural (n_files))
- : ngettext ("%s: remove %zu argument? ",
- "%s: remove %zu arguments? ",
+ : ngettext ("%s: remove %"PRIuMAX" argument? ",
+ "%s: remove %"PRIuMAX" arguments? ",
select_plural (n_files))),
program_name, n_files);
if (!yesno ())
diff --git a/src/split.c b/src/split.c
index ec0da7deb..0eec3ecc2 100644
--- a/src/split.c
+++ b/src/split.c
@@ -158,7 +158,7 @@ set_suffix_length (uintmax_t n_units, enum Split_type split_type)
{
#define DEFAULT_SUFFIX_LENGTH 2
- size_t suffix_needed = 0;
+ uintmax_t suffix_needed = 0;
/* The suffix auto length feature is incompatible with
a user specified start value as the generated suffixes
@@ -183,7 +183,7 @@ set_suffix_length (uintmax_t n_units, enum Split_type split_type)
if (suffix_length < suffix_needed)
{
error (EXIT_FAILURE, 0,
- _("the suffix length needs to be at least %zu"),
+ _("the suffix length needs to be at least %"PRIuMAX),
suffix_needed);
}
suffix_auto = false;