looks good

On Fri, 2009-04-03 at 21:28 +0200, Jim Meyering wrote:
> From: Jim Meyering <[email protected]>
> 
> * tools/corosync-objctl.c: Include <ctype.h>
> (print_name): New function.
> (tail_key_changed): Use it to avoid printing garbage to screen.
> * include/corosync/confdb.h (confdb_key_change_notify_fn_t): Convert
> type of "int" length params to "size_t".
> ---
>  include/corosync/confdb.h |    6 +++---
>  tools/corosync-objctl.c   |   39 +++++++++++++++++++++++++++++----------
>  2 files changed, 32 insertions(+), 13 deletions(-)
> 
> diff --git a/include/corosync/confdb.h b/include/corosync/confdb.h
> index ecc1ff6..19f6788 100644
> --- a/include/corosync/confdb.h
> +++ b/include/corosync/confdb.h
> @@ -63,11 +63,11 @@ typedef void (*confdb_key_change_notify_fn_t) (
>       hdb_handle_t parent_object_handle,
>       hdb_handle_t object_handle,
>       const void *object_name,
> -     int  object_name_len,
> +     size_t  object_name_len,
>       const void *key_name,
> -     int key_name_len,
> +     size_t key_name_len,
>       const void *key_value,
> -     int key_value_len);
> +     size_t key_value_len);
> 
>  typedef void (*confdb_object_create_notify_fn_t) (
>       confdb_handle_t handle,
> diff --git a/tools/corosync-objctl.c b/tools/corosync-objctl.c
> index d0db93b..a544538 100644
> --- a/tools/corosync-objctl.c
> +++ b/tools/corosync-objctl.c
> @@ -41,6 +41,7 @@
>  #include <signal.h>
>  #include <unistd.h>
>  #include <string.h>
> +#include <ctype.h>
>  #include <sys/types.h>
>  #include <sys/un.h>
> 
> @@ -72,11 +73,11 @@ static void tail_key_changed(confdb_handle_t handle,
>       hdb_handle_t parent_object_handle,
>       hdb_handle_t object_handle,
>       const void *object_name,
> -     int  object_name_len,
> +     size_t  object_name_len,
>       const void *key_name,
> -     int key_name_len,
> +     size_t key_name_len,
>       const void *key_value,
> -     int key_value_len);
> +     size_t key_value_len);
> 
>  static void tail_object_created(confdb_handle_t handle,
>       hdb_handle_t parent_object_handle,
> @@ -390,21 +391,39 @@ static void create_object(confdb_handle_t handle, char 
> * name_pt)
>       }
>  }
> 
> +/* Print "?" in place of any non-printable byte of OBJ. */
> +static void print_name (FILE *fp, const void *obj, size_t obj_len)
> +{
> +     const char *p = obj;
> +     size_t i;
> +     for (i = 0; i < obj_len; i++) {
> +             int c = *p++;
> +             if (!isprint (c)) {
> +                     c = '?';
> +             }
> +             fputc (c, fp);
> +     }
> +}
> +
>  static void tail_key_changed(confdb_handle_t handle,
>       confdb_change_type_t change_type,
>       hdb_handle_t parent_object_handle,
>       hdb_handle_t object_handle,
>       const void *object_name_pt,
> -     int  object_name_len,
> +     size_t  object_name_len,
>       const void *key_name_pt,
> -     int key_name_len,
> +     size_t key_name_len,
>       const void *key_value_pt,
> -     int key_value_len)
> +     size_t key_value_len)
>  {
> -     printf("key_changed> %.*s.%.*s=%.*s\n",
> -            object_name_len, (const char *)object_name_pt,
> -            key_name_len, (const char *)key_value_pt,
> -            key_value_len, (const char *)key_value_pt);
> +     /* printf("key_changed> %.*s.%.*s=%.*s\n", */
> +     fputs("key_changed> ", stdout);
> +     print_name (stdout, object_name_pt, object_name_len);
> +     fputs(".", stdout);
> +     print_name (stdout, key_name_pt, key_name_len);
> +     fputs("=", stdout);
> +     print_name (stdout, key_value_pt, key_value_len);
> +     fputs("\n", stdout);
>  }
> 
>  static void tail_object_created(confdb_handle_t handle,

_______________________________________________
Openais mailing list
[email protected]
https://lists.linux-foundation.org/mailman/listinfo/openais

Reply via email to