From d50309ea89c8e92a35f29ac9187551a116bb4f07 Mon Sep 17 00:00:00 2001 From: Alexander Motin Date: Tue, 8 Mar 2016 18:51:12 +0000 Subject: [PATCH] 4448 zfs diff misprints unicode characters Reviewed by: Igor Kozhukhov Reviewed by: Toomas Soome Approved by: Matthew Ahrens Author: Joshua M. Clulow illumos/illumos-gate@b211eb9181f99c20acbf4c528f94cb44b4ca8c31 --- lib/libzfs/common/libzfs_diff.c | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/lib/libzfs/common/libzfs_diff.c b/lib/libzfs/common/libzfs_diff.c index 0d04c976fee8..55c3706148d4 100644 --- a/lib/libzfs/common/libzfs_diff.c +++ b/lib/libzfs/common/libzfs_diff.c @@ -22,6 +22,7 @@ /* * Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved. * Copyright 2015 Nexenta Systems, Inc. All rights reserved. + * Copyright 2016 Joyent, Inc. */ /* @@ -138,11 +139,14 @@ get_stats_for_obj(differ_info_t *di, const char *dsname, uint64_t obj, static void stream_bytes(FILE *fp, const char *string) { - while (*string) { - if (*string > ' ' && *string != '\\' && *string < '\177') - (void) fprintf(fp, "%c", *string++); - else - (void) fprintf(fp, "\\%03o", *string++); + char c; + + while ((c = *string++) != '\0') { + if (c > ' ' && c != '\\' && c < '\177') { + (void) fprintf(fp, "%c", c); + } else { + (void) fprintf(fp, "\\%03o", (uint8_t)c); + } } }