106 #define STR(x) vstring_str(x)
107 #define LEN(x) VSTRING_LEN(x)
113 const char *myname =
"attr_print_plain";
117 unsigned long long_val;
130 msg_panic(
"%s: bad flags: 0x%x", myname, flags);
139 attr_name = va_arg(ap,
char *);
140 int_val = va_arg(ap,
int);
143 msg_info(
"send attr %s = %u", attr_name, (
unsigned) int_val);
146 attr_name = va_arg(ap,
char *);
147 long_val = va_arg(ap,
long);
150 msg_info(
"send attr %s = %lu", attr_name, long_val);
153 attr_name = va_arg(ap,
char *);
154 str_val = va_arg(ap,
char *);
157 msg_info(
"send attr %s = %s", attr_name, str_val);
160 attr_name = va_arg(ap,
char *);
161 len_val = va_arg(ap, ssize_t);
162 str_val = va_arg(ap,
char *);
168 msg_info(
"send attr %s = [data %ld bytes]",
169 attr_name, (
long) len_val);
173 print_arg = va_arg(ap,
void *);
180 for (ht = ht_info_list; *ht; ht++) {
183 msg_info(
"send attr name %s value %s",
184 ht[0]->key, (
char *) ht[0]->value);
186 myfree((
void *) ht_info_list);
191 msg_panic(
"%s: unknown type code: %d", myname, attr_type);
218 int main(
int unused_argc,
char **argv)
void htable_free(HTABLE *table, void(*free_fn)(void *))
char * mystrdup(const char *str)
#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)
int attr_vprint_plain(VSTREAM *fp, int flags, va_list ap)
#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)
#define VSTREAM_PUTC(ch, vp)
int attr_print_plain(VSTREAM *fp, int flags,...)
#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,...)