MINOR: sample: allow integers to cast to binary
Doing so finally allows to apply the hex converter to integers as well.
Note that all integers are represented in 32-bit, big endian so that their
conversion remains human readable and portable. A later improvement to the
hex converter could be to make it trim leading zeroes, and/or to only report
a number of least significant bytes.
diff --git a/src/sample.c b/src/sample.c
index 6128649..99acb5a 100644
--- a/src/sample.c
+++ b/src/sample.c
@@ -675,6 +675,18 @@
return 1;
}
+static int c_int2bin(struct sample *smp)
+{
+ struct chunk *chk = get_trash_chunk();
+
+ *(unsigned int *)chk->str = htonl(smp->data.uint);
+ chk->len = 4;
+
+ smp->data.str = *chk;
+ smp->type = SMP_T_BIN;
+ return 1;
+}
+
/*****************************************************************/
/* Sample casts matrix: */
@@ -685,8 +697,8 @@
sample_cast_fct sample_casts[SMP_TYPES][SMP_TYPES] = {
/* to: BOOL UINT SINT ADDR IPV4 IPV6 STR BIN METH */
/* from: BOOL */ { c_none, c_none, c_none, NULL, NULL, NULL, c_int2str, NULL, NULL, },
-/* UINT */ { c_none, c_none, c_none, c_int2ip, c_int2ip, NULL, c_int2str, NULL, NULL, },
-/* SINT */ { c_none, c_none, c_none, c_int2ip, c_int2ip, NULL, c_int2str, NULL, NULL, },
+/* UINT */ { c_none, c_none, c_none, c_int2ip, c_int2ip, NULL, c_int2str, c_int2bin, NULL, },
+/* SINT */ { c_none, c_none, c_none, c_int2ip, c_int2ip, NULL, c_int2str, c_int2bin, NULL, },
/* ADDR */ { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, },
/* IPV4 */ { NULL, c_ip2int, c_ip2int, c_none, c_none, c_ip2ipv6, c_ip2str, c_addr2bin, NULL, },
/* IPV6 */ { NULL, NULL, NULL, c_none, NULL, c_none, c_ipv62str, c_addr2bin, NULL, },