From: Dmitry V. Levin Date: Sat, 7 May 2016 23:10:50 +0000 (+0000) Subject: scsi.c: use print_array function X-Git-Tag: v4.12~215 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=48b06a63e8e4656623f9f34f5d4008361488e2a7;p=strace scsi.c: use print_array function * scsi.c (print_uchar): New function. (print_sg_io_buffer): Use it via print_array. --- diff --git a/scsi.c b/scsi.c index 9038c3c9..01c5db2f 100644 --- a/scsi.c +++ b/scsi.c @@ -42,29 +42,21 @@ # include "xlat/bsg_subprotocol.h" # endif +static bool +print_uchar(struct tcb *tcp, void *elem_buf, size_t elem_size, void *data) +{ + tprintf("%02x", (unsigned int) (* (unsigned char *) elem_buf)); + + return true; +} + static void -print_sg_io_buffer(struct tcb *tcp, unsigned long addr, const unsigned int len) +print_sg_io_buffer(struct tcb *tcp, const unsigned long addr, const unsigned int len) { - unsigned char *buf = NULL; - unsigned int allocated, i; - - tprints("["); - if (len == 0) - goto out; - allocated = (len > max_strlen) ? max_strlen : len; - buf = malloc(allocated); - if (!buf || umoven(tcp, addr, allocated, buf) < 0) { - printaddr(addr); - goto out; - } - tprintf("%02x", buf[0]); - for (i = 1; i < allocated; ++i) - tprintf(", %02x", buf[i]); - if (allocated != len) - tprints(", ..."); -out: - free(buf); - tprints("]"); + unsigned char buf; + + print_array(tcp, addr, len, &buf, sizeof(buf), + umoven_or_printaddr, print_uchar, 0); } static int