Re: [Openvpn-devel] [PATCH 04/10] Added flags parameter to format_hex_ex.

2016-03-06 Thread Steffan Karger
On Thu, Mar 3, 2016 at 9:19 AM, James Yonan  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 
> ---
>  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 (, "%s", separator);
> -  buf_printf (, "%02x", data[i]);
> +  if (space_break_flags & FHE_CAPS)
> +   buf_printf (, "%02X", data[i]);
> +  else
> +   buf_printf (, "%02x", data[i]);
>  }
>buf_catrunc (, "[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



[Openvpn-devel] [PATCH 04/10] Added flags parameter to format_hex_ex.

2016-03-03 Thread James Yonan
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 
---
 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 (, "%s", separator);
-  buf_printf (, "%02x", data[i]);
+  if (space_break_flags & FHE_CAPS)
+   buf_printf (, "%02X", data[i]);
+  else
+   buf_printf (, "%02x", data[i]);
 }
   buf_catrunc (, "[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 *
-- 
1.9.1