]> granicus.if.org Git - strace/blobdiff - util.c
io: change size types from unsigned long to kernel_ureg_t
[strace] / util.c
diff --git a/util.c b/util.c
index bfc4134ec5e4d82439ecbf929ba8785ae5f42ad1..72c5251efd05ae68d190919eb8c199f62dfdc73a 100644 (file)
--- a/util.c
+++ b/util.c
@@ -850,16 +850,15 @@ printpath(struct tcb *const tcp, const kernel_ureg_t addr)
 
 /*
  * Print string specified by address `addr' and length `len'.
- * If `len' == -1, set QUOTE_0_TERMINATED bit in `user_style'.
  * If `user_style' has QUOTE_0_TERMINATED bit set, treat the string
  * as a NUL-terminated string.
  * Pass `user_style' on to `string_quote'.
  * Append `...' to the output if either the string length exceeds `max_strlen',
- * or `len' != -1 and the string length exceeds `len'.
+ * or QUOTE_0_TERMINATED bit is set and the string length exceeds `len'.
  */
 void
-printstr_ex(struct tcb *const tcp, const kernel_ureg_t addr, const long len,
-           const unsigned int user_style)
+printstr_ex(struct tcb *const tcp, const kernel_ureg_t addr,
+           const kernel_ureg_t len, const unsigned int user_style)
 {
        static char *str = NULL;
        static char *outstr;
@@ -882,22 +881,16 @@ printstr_ex(struct tcb *const tcp, const kernel_ureg_t addr, const long len,
                outstr = xmalloc(outstr_size);
        }
 
+       /* Fetch one byte more because string_quote may look one byte ahead. */
        size = max_strlen + 1;
-       if (len == -1) {
-               /*
-                * Treat as a NUL-terminated string: fetch one byte more
-                * because string_quote may look one byte ahead.
-                */
-               style |= QUOTE_0_TERMINATED;
+
+       if (size > len)
+               size = len;
+       if (style & QUOTE_0_TERMINATED)
                rc = umovestr(tcp, addr, size, str);
-       } else {
-               if (size > (unsigned long) len)
-                       size = (unsigned long) len;
-               if (style & QUOTE_0_TERMINATED)
-                       rc = umovestr(tcp, addr, size, str);
-               else
-                       rc = umoven(tcp, addr, size, str);
-       }
+       else
+               rc = umoven(tcp, addr, size, str);
+
        if (rc < 0) {
                printaddr(addr);
                return;
@@ -914,7 +907,7 @@ printstr_ex(struct tcb *const tcp, const kernel_ureg_t addr, const long len,
        ellipsis = string_quote(str, outstr, size, style)
                   && len
                   && ((style & QUOTE_0_TERMINATED)
-                      || (unsigned long) len > max_strlen);
+                      || len > max_strlen);
 
        tprints(outstr);
        if (ellipsis)