]> granicus.if.org Git - strace/commitdiff
Make printnum_* functions return boolean status
authorDmitry V. Levin <ldv@altlinux.org>
Tue, 18 Aug 2015 21:57:27 +0000 (21:57 +0000)
committerDmitry V. Levin <ldv@altlinux.org>
Wed, 19 Aug 2015 13:36:44 +0000 (13:36 +0000)
With this change, printnum_* functions return true iff they
successfully fetched necessary data from tracee's memory.

* defs.h (printnum_short, printnum_int, printnum_int64,
printnum_long_int, printpair_int, printpair_int64): Return bool.
* util.c (DEF_PRINTNUM, DEF_PRINTPAIR, printnum_long_int): Likewise.

defs.h
util.c

diff --git a/defs.h b/defs.h
index 857175def38c4ef7193fd029ad5667903f5d7d93..e8a2a0daa8eb20100ec5aff7806041da3d097117 100644 (file)
--- a/defs.h
+++ b/defs.h
@@ -530,15 +530,15 @@ extern void dumpiov_in_mmsghdr(struct tcb *, long);
 extern void dumpiov(struct tcb *, int, long);
 extern void dumpstr(struct tcb *, long, int);
 extern void printstr(struct tcb *, long, long);
-extern void printnum_short(struct tcb *, long, const char *)
+extern bool printnum_short(struct tcb *, long, const char *)
        ATTRIBUTE_FORMAT((printf, 3, 0));
-extern void printnum_int(struct tcb *, long, const char *)
+extern bool printnum_int(struct tcb *, long, const char *)
        ATTRIBUTE_FORMAT((printf, 3, 0));
-extern void printnum_int64(struct tcb *, long, const char *)
+extern bool printnum_int64(struct tcb *, long, const char *)
        ATTRIBUTE_FORMAT((printf, 3, 0));
 
 #if SUPPORTED_PERSONALITIES > 1 && SIZEOF_LONG > 4
-extern void printnum_long_int(struct tcb *, long, const char *, const char *)
+extern bool printnum_long_int(struct tcb *, long, const char *, const char *)
        ATTRIBUTE_FORMAT((printf, 3, 0))
        ATTRIBUTE_FORMAT((printf, 4, 0));
 # define printnum_slong(tcp, addr) \
@@ -563,9 +563,9 @@ extern void printnum_long_int(struct tcb *, long, const char *, const char *)
        printnum_int((tcp), (addr), "%#x")
 #endif
 
-extern void printpair_int(struct tcb *, long, const char *)
+extern bool printpair_int(struct tcb *, long, const char *)
        ATTRIBUTE_FORMAT((printf, 3, 0));
-extern void printpair_int64(struct tcb *, long, const char *)
+extern bool printpair_int64(struct tcb *, long, const char *)
        ATTRIBUTE_FORMAT((printf, 3, 0));
 extern void printpath(struct tcb *, long);
 extern void printpathn(struct tcb *, long, unsigned int);
diff --git a/util.c b/util.c
index 2a22caccbfd4053d2d99f1f9ab7509eed8c8e53a..813878913ef7bd074521e90c4941af231bb49516 100644 (file)
--- a/util.c
+++ b/util.c
@@ -385,29 +385,31 @@ printaddr(const long addr)
 }
 
 #define DEF_PRINTNUM(name, type) \
-void                                                                   \
+bool                                                                   \
 printnum_ ## name(struct tcb *tcp, const long addr, const char *fmt)   \
 {                                                                      \
        type num;                                                       \
-       if (!umove_or_printaddr(tcp, addr, &num)) {                     \
-               tprints("[");                                           \
-               tprintf(fmt, num);                                      \
-               tprints("]");                                           \
-       }                                                               \
+       if (umove_or_printaddr(tcp, addr, &num))                        \
+               return false;                                           \
+       tprints("[");                                                   \
+       tprintf(fmt, num);                                              \
+       tprints("]");                                                   \
+       return true;                                                    \
 }
 
 #define DEF_PRINTPAIR(name, type) \
-void                                                                   \
+bool                                                                   \
 printpair_ ## name(struct tcb *tcp, const long addr, const char *fmt)  \
 {                                                                      \
        type pair[2];                                                   \
-       if (!umove_or_printaddr(tcp, addr, &pair)) {                    \
-               tprints("[");                                           \
-               tprintf(fmt, pair[0]);                                  \
-               tprints(", ");                                          \
-               tprintf(fmt, pair[1]);                                  \
-               tprints("]");                                           \
-       }                                                               \
+       if (umove_or_printaddr(tcp, addr, &pair))                       \
+               return false;                                           \
+       tprints("[");                                                   \
+       tprintf(fmt, pair[0]);                                          \
+       tprints(", ");                                                  \
+       tprintf(fmt, pair[1]);                                          \
+       tprints("]");                                                   \
+       return true;                                                    \
 }
 
 DEF_PRINTNUM(int, int)
@@ -417,14 +419,14 @@ DEF_PRINTNUM(int64, uint64_t)
 DEF_PRINTPAIR(int64, uint64_t)
 
 #if SUPPORTED_PERSONALITIES > 1 && SIZEOF_LONG > 4
-void
+bool
 printnum_long_int(struct tcb *tcp, const long addr,
                  const char *fmt_long, const char *fmt_int)
 {
        if (current_wordsize > sizeof(int)) {
-               printnum_int64(tcp, addr, fmt_long);
+               return printnum_int64(tcp, addr, fmt_long);
        } else {
-               printnum_int(tcp, addr, fmt_int);
+               return printnum_int(tcp, addr, fmt_int);
        }
 }
 #endif