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
