print_direc needs to reset errno on entry, as some paths (those for %c
and %s) don't go through multiconvert and thus don't reset errno there.
This was showing up as a test suite failure:

  FAIL: printf understands %s '"x' "'y" "'zTAIL"

(I discovered this because one of the core components of the
Debian/Ubuntu installer relies on printf in a 'set -e' script, and so
the installer ended up completely non-functional.)

Signed-off-by: Colin Watson <[email protected]>
---
 coreutils/printf.c |    2 ++
 1 files changed, 2 insertions(+), 0 deletions(-)

diff --git a/coreutils/printf.c b/coreutils/printf.c
index 5b326c6..8836800 100644
--- a/coreutils/printf.c
+++ b/coreutils/printf.c
@@ -144,6 +144,8 @@ static void print_direc(char *format, unsigned fmt_length,
        char saved;
        char *have_prec, *have_width;
 
+       errno = 0;
+
        saved = format[fmt_length];
        format[fmt_length] = '\0';
 
-- 
1.6.3.1
_______________________________________________
busybox mailing list
[email protected]
http://lists.busybox.net/mailman/listinfo/busybox

Reply via email to