diff options
author | Petr Machata <pmachata@redhat.com> | 2012-01-09 04:28:46 +0100 |
---|---|---|
committer | Petr Machata <pmachata@redhat.com> | 2012-08-29 19:02:07 +0200 |
commit | 38fb49b852374d749bc91f1b8d91a2b5b2a57a10 (patch) | |
tree | ffc2d1ed96044c4b0cac1045c4f2d2d94b6b6f6b /lens_default.c | |
parent | 541cdc7736ffa770958208995fae71cbd1d50bcf (diff) | |
download | ltrace-38fb49b852374d749bc91f1b8d91a2b5b2a57a10.tar.gz |
Add a "bool" lens
Diffstat (limited to 'lens_default.c')
-rw-r--r-- | lens_default.c | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/lens_default.c b/lens_default.c index f4e2bd8..75b8abe 100644 --- a/lens_default.c +++ b/lens_default.c @@ -419,6 +419,44 @@ struct lens guess_lens = { static int +bool_lens_format_cb(struct lens *lens, FILE *stream, + struct value *value, struct value_dict *arguments) +{ + switch (value->type->type) { + case ARGTYPE_VOID: + case ARGTYPE_FLOAT: + case ARGTYPE_DOUBLE: + case ARGTYPE_STRUCT: + case ARGTYPE_POINTER: + case ARGTYPE_ARRAY: + return toplevel_format_lens(lens, stream, value, + arguments, INT_FMT_i); + + int zero; + case ARGTYPE_ENUM: + case ARGTYPE_SHORT: + case ARGTYPE_INT: + case ARGTYPE_LONG: + case ARGTYPE_USHORT: + case ARGTYPE_UINT: + case ARGTYPE_ULONG: + case ARGTYPE_CHAR: + if ((zero = value_is_zero(value, arguments)) < 0) + return -1; + if (zero) + return fprintf(stream, "false"); + else + return fprintf(stream, "true"); + } + abort(); +} + +struct lens bool_lens = { + .format_cb = bool_lens_format_cb, +}; + + +static int string_lens_format_cb(struct lens *lens, FILE *stream, struct value *value, struct value_dict *arguments) { |