105 #define STR(x) vstring_str(x)
106 #define LEN(x) VSTRING_LEN(x)
112 const char *myname =
"attr_print0";
116 unsigned long long_val;
129 msg_panic(
"%s: bad flags: 0x%x", myname, flags);
138 attr_name = va_arg(ap,
char *);
140 int_val = va_arg(ap,
int);
144 msg_info(
"send attr %s = %u", attr_name, int_val);
147 attr_name = va_arg(ap,
char *);
149 long_val = va_arg(ap,
unsigned long);
153 msg_info(
"send attr %s = %lu", attr_name, long_val);
156 attr_name = va_arg(ap,
char *);
158 str_val = va_arg(ap,
char *);
161 msg_info(
"send attr %s = %s", attr_name, str_val);
164 attr_name = va_arg(ap,
char *);
166 len_val = va_arg(ap, ssize_t);
167 str_val = va_arg(ap,
char *);
173 msg_info(
"send attr %s = [data %ld bytes]",
174 attr_name, (
long) len_val);
178 print_arg = va_arg(ap,
void *);
184 for (ht = ht_info_list; *ht; ht++) {
188 msg_info(
"send attr name %s value %s",
189 ht[0]->key, (
char *) ht[0]->value);
191 myfree((
void *) ht_info_list);
195 msg_panic(
"%s: unknown type code: %d", myname, attr_type);
222 int main(
int unused_argc,
char **argv)
void htable_free(HTABLE *table, void(*free_fn)(void *))
char * mystrdup(const char *str)
int attr_vprint0(VSTREAM *fp, int flags, va_list ap)
#define SEND_ATTR_HASH(val)
NORETURN msg_panic(const char *fmt,...)
int main(int argc, char **argv)
int(* ATTR_PRINT_SLAVE_FN)(ATTR_PRINT_MASTER_FN, VSTREAM *, int, void *)
HTABLE * htable_create(ssize_t size)
HTABLE_INFO ** htable_list(HTABLE *table)
VSTREAM * vstream_fprintf(VSTREAM *stream, const char *fmt,...)
VSTRING * vstring_alloc(ssize_t len)
#define SEND_ATTR_INT(name, val)
#define SEND_ATTR_LONG(name, val)
NORETURN msg_fatal(const char *fmt,...)
int vstream_fflush(VSTREAM *stream)
#define vstream_fwrite(v, b, n)
VSTRING * base64_encode(VSTRING *, const char *, ssize_t)
void msg_vstream_init(const char *name, VSTREAM *vp)
int attr_print0(VSTREAM *fp, int flags,...)
#define VSTREAM_PUTC(ch, vp)
#define vstream_ferror(vp)
#define SEND_ATTR_STR(name, val)
#define SEND_ATTR_DATA(name, len, val)
HTABLE_INFO * htable_enter(HTABLE *table, const char *key, void *value)
void msg_info(const char *fmt,...)