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,
--
1.6.2.rc1.285.gc5f54
_______________________________________________
Openais mailing list
[email protected]
https://lists.linux-foundation.org/mailman/listinfo/openais