mirror of
https://git.proxmox.com/git/mirror_corosync
synced 2025-08-03 08:13:37 +00:00
print "?" in place of non-printing bytes of obj/key/val values
* 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". git-svn-id: http://svn.fedorahosted.org/svn/corosync/trunk@2000 fd59a12c-fef9-0310-b244-a6a79926bd2f
This commit is contained in:
parent
1701b32f1d
commit
41cc0e06b4
@ -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,
|
||||
|
@ -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,
|
||||
|
Loading…
Reference in New Issue
Block a user