From: Pablo Neira Ayuso Date: Fri, 5 Jun 2015 15:12:47 +0000 (+0200) Subject: datatype: default to display bitmask in hexadecimal X-Git-Tag: v0.5~52 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=5567bfd777182646a3dc7d5a2422a244481fa794;p=thirdparty%2Fnftables.git datatype: default to display bitmask in hexadecimal Instead of a plain integer. This updates integer_type_print() to look up some basefmt in the change of datatype, the first we find will be used to format the output. Signed-off-by: Pablo Neira Ayuso --- diff --git a/src/datatype.c b/src/datatype.c index f93337b13..82a775379 100644 --- a/src/datatype.c +++ b/src/datatype.c @@ -260,15 +260,22 @@ const struct datatype bitmask_type = { .type = TYPE_BITMASK, .name = "bitmask", .desc = "bitmask", + .basefmt = "0x%Zx", .basetype = &integer_type, }; static void integer_type_print(const struct expr *expr) { + const struct datatype *dtype = expr->dtype; const char *fmt = "%Zu"; - if (expr->dtype->basefmt != NULL) - fmt = expr->dtype->basefmt; + do { + if (dtype->basefmt != NULL) { + fmt = dtype->basefmt; + break; + } + } while ((dtype = dtype->basetype)); + gmp_printf(fmt, expr->value); }