On Thu, Mar 3, 2016 at 9:19 AM, James Yonan <ja...@openvpn.net> wrote: > We add the flags parameter without changing the signature of > the function by repurposing the space_break parameter into > space_break_flags where the lower 8 bits are used for the > previous space_break parameter and the higher bits are used > for flag values. > > Added new flag FHE_CAPS that formats the generated hex string > in upper case. > > Signed-off-by: James Yonan <ja...@openvpn.net> > --- > src/openvpn/buffer.c | 11 +++++++---- > src/openvpn/buffer.h | 4 +++- > 2 files changed, 10 insertions(+), 5 deletions(-) > > diff --git a/src/openvpn/buffer.c b/src/openvpn/buffer.c > index bc67d65..52c6ab9 100644 > --- a/src/openvpn/buffer.c > +++ b/src/openvpn/buffer.c > @@ -435,18 +435,21 @@ gc_transfer (struct gc_arena *dest, struct gc_arena > *src) > > char * > format_hex_ex (const uint8_t *data, int size, int maxoutput, > - int space_break, const char* separator, > + unsigned int space_break_flags, const char* separator, > struct gc_arena *gc) > { > struct buffer out = alloc_buf_gc (maxoutput ? maxoutput : > - ((size * 2) + (size / space_break) * > (int) strlen (separator) + 2), > + ((size * 2) + (size / (space_break_flags > & FHE_SPACE_BREAK_MASK)) * (int) strlen (separator) + 2), > gc); > int i; > for (i = 0; i < size; ++i) > { > - if (separator && i && !(i % space_break)) > + if (separator && i && !(i % (space_break_flags & > FHE_SPACE_BREAK_MASK))) > buf_printf (&out, "%s", separator); > - buf_printf (&out, "%02x", data[i]); > + if (space_break_flags & FHE_CAPS) > + buf_printf (&out, "%02X", data[i]); > + else > + buf_printf (&out, "%02x", data[i]); > } > buf_catrunc (&out, "[more...]"); > return (char *)out.data; > diff --git a/src/openvpn/buffer.h b/src/openvpn/buffer.h > index 24f52aa..8070439 100644 > --- a/src/openvpn/buffer.h > +++ b/src/openvpn/buffer.h > @@ -403,9 +403,11 @@ bool buf_parse (struct buffer *buf, const int delim, > char *line, const int size) > /* > * Hex dump -- Output a binary buffer to a hex string and return it. > */ > +#define FHE_SPACE_BREAK_MASK 0xFF /* space_break parameter in lower 8 bits */ > +#define FHE_CAPS 0x100 /* output hex in caps */ > char * > format_hex_ex (const uint8_t *data, int size, int maxoutput, > - int space_break, const char* separator, > + unsigned int space_break_flags, const char* separator, > struct gc_arena *gc); > > static inline char *
ACK -Steffan