aboutsummaryrefslogtreecommitdiff
path: root/lens_default.c
diff options
context:
space:
mode:
authorPetr Machata <pmachata@redhat.com>2012-01-17 19:04:57 +0100
committerPetr Machata <pmachata@redhat.com>2012-08-29 19:02:08 +0200
commitf6a56e15530b179e404aab075dab8661af64155e (patch)
tree00e1422ca49c3a461854d1233c7cda2c52368653 /lens_default.c
parent987d27b3e97b208874ca967d536dc862dae2bd43 (diff)
downloadltrace-f6a56e15530b179e404aab075dab8661af64155e.tar.gz
Fix character counting in format_naked_char in default lens
Diffstat (limited to 'lens_default.c')
-rw-r--r--lens_default.c14
1 files changed, 10 insertions, 4 deletions
diff --git a/lens_default.c b/lens_default.c
index c58984e..f59d328 100644
--- a/lens_default.c
+++ b/lens_default.c
@@ -107,15 +107,21 @@ format_integer(FILE *stream, struct value *value, enum int_fmt_t format,
#undef HANDLE_WIDTH
static int
+account(int *countp, int c)
+{
+ if (c >= 0)
+ *countp += c;
+ return c;
+}
+
+static int
acc_fprintf(int *countp, FILE *stream, const char *format, ...)
{
va_list pa;
va_start(pa, format);
- int i = vfprintf(stream, format, pa);
+ int i = account(countp, vfprintf(stream, format, pa));
va_end(pa);
- if (i >= 0)
- *countp += i;
return i;
}
@@ -175,7 +181,7 @@ format_naked_char(FILE *stream, struct value *value,
{
int written = 0;
if (acc_fprintf(&written, stream, "'") < 0
- || format_char(stream, value, arguments) < 0
+ || account(&written, format_char(stream, value, arguments)) < 0
|| acc_fprintf(&written, stream, "'") < 0)
return -1;