On Fri, Jan 06, 2017 at 03:16:29PM +0800, JingPiao Chen wrote:
> In general, the random bytes is not number or letter, print
> as hex array is clear, use 0x%02x format print it, easy to
> konw each element is one byte, so 0 will print 0x00.

I think it is better (in terms of performance and readability) to print it as
hex-escaped string, something like this:

--
diff --git i/defs.h w/defs.h
index eeabfcf..1630385 100644
--- i/defs.h
+++ w/defs.h
@@ -505,6 +505,7 @@ extern int next_set_bit(const void *bit_array, unsigned 
cur_bit, unsigned size_b
 #define QUOTE_0_TERMINATED                      0x01
 #define QUOTE_OMIT_LEADING_TRAILING_QUOTES      0x02
 #define QUOTE_OMIT_TRAILING_0                   0x08
+#define QUOTE_FORCE_HEX                         0x10
 
 extern int string_quote(const char *, char *, unsigned long, unsigned int);
 extern int print_quoted_string(const char *, unsigned long, unsigned int);
diff --git i/getrandom.c w/getrandom.c
index 0a353ad..ea9ad57 100644
--- i/getrandom.c
+++ w/getrandom.c
@@ -7,7 +7,8 @@ SYS_FUNC(getrandom)
                if (syserror(tcp))
                        printaddr(tcp->u_arg[0]);
                else
-                       printstrn(tcp, tcp->u_arg[0], tcp->u_rval);
+                       printstr_ex(tcp, tcp->u_arg[0], tcp->u_rval,
+                                   QUOTE_FORCE_HEX);
                tprintf(", %" PRI_klu ", ", tcp->u_arg[1]);
                printflags(getrandom_flags, tcp->u_arg[2], "GRND_???");
        }
diff --git i/tests/getrandom.test w/tests/getrandom.test
index e06367c..ad34048 100755
--- i/tests/getrandom.test
+++ w/tests/getrandom.test
@@ -3,4 +3,4 @@
 # Check getrandom syscall decoding.
 
 . "${srcdir=.}/init.sh"
-run_strace_match_diff -a32 -xx -s3
+run_strace_match_diff -a32 -s3
diff --git i/util.c w/util.c
index a27c4e1..484f84e 100644
--- i/util.c
+++ w/util.c
@@ -660,9 +660,9 @@ string_quote(const char *instr, char *outstr, const 
unsigned long size,
                eol = 0x100; /* this can never match a char */
 
        usehex = 0;
-       if (xflag > 1)
+       if ((xflag > 1) || (style & QUOTE_FORCE_HEX)) {
                usehex = 1;
-       else if (xflag) {
+       } else if (xflag) {
                /* Check for presence of symbol which require
                   to hex-quote the whole string. */
                for (i = 0; i < size; ++i) {


------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most 
engaging tech sites, SlashDot.org! http://sdm.link/slashdot
_______________________________________________
Strace-devel mailing list
Strace-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/strace-devel

Reply via email to