Export nl_dump_line() and automatically count lines while dumping

This commit is contained in:
Thomas Graf 2008-04-29 23:08:12 +02:00
parent 1240cd6635
commit 662887c052
4 changed files with 38 additions and 22 deletions

View file

@ -119,7 +119,7 @@ static inline int __assert_error(const char *file, int line, char *func,
#define nl_errno(E) nl_error(E, NULL)
/* backwards compat */
#define dp_new_line(params, line) nl_new_line(params, line)
#define dp_new_line(params, line) nl_new_line(params)
#define dp_dump(params, fmt, arg...) nl_dump(params, fmt, ##arg)
static inline int __trans_list_add(int i, const char *a,
@ -284,17 +284,7 @@ static inline void __dp_dump(struct nl_dump_params *parms, const char *fmt,
}
}
static inline void dp_dump_line(struct nl_dump_params *parms, int line,
const char *fmt, ...)
{
va_list args;
nl_new_line(parms, line);
va_start(args, fmt);
__dp_dump(parms, fmt, args);
va_end(args);
}
#define dp_dump_line(params, line, fmt, arg...) nl_dump_line(params, fmt, ##arg)
static inline void dump_from_ops(struct nl_object *obj,
struct nl_dump_params *params)
@ -304,6 +294,8 @@ static inline void dump_from_ops(struct nl_object *obj,
if (type < 0 || type > NL_DUMP_MAX)
BUG();
params->dp_line = 0;
if (params->dp_dump_msgtype) {
#if 0
/* XXX */
@ -317,7 +309,7 @@ static inline void dump_from_ops(struct nl_object *obj,
#endif
params->dp_pre_dump = 1;
} else
dp_new_line(params, 0);
nl_new_line(params);
if (obj->ce_ops->oo_dump[type])
obj->ce_ops->oo_dump[type](obj, params);

View file

@ -19,16 +19,19 @@
* @ingroup utils
*/
enum nl_dump_type {
NL_DUMP_BRIEF, /**< Dump object in a brief one-liner */
NL_DUMP_FULL, /**< Dump all attributes but no statistics */
NL_DUMP_ONELINE, /**< Dump object briefly on one line */
NL_DUMP_DETAILS, /**< Dump all attributes but no statistics */
NL_DUMP_STATS, /**< Dump all attributes including statistics */
NL_DUMP_XML, /**< Dump all attribtes in XML format */
NL_DUMP_ENV, /**< Dump all attribtues as env variables */
NL_DUMP_EVENTS, /**< Dump event */
__NL_DUMP_MAX,
};
#define NL_DUMP_MAX (__NL_DUMP_MAX - 1)
/* backards compat */
#define NL_DUMP_BRIEF NL_DUMP_ONELINE
#define NL_DUMP_FULL NL_DUMP_DETAILS
/**
* Dumping parameters
* @ingroup utils
@ -100,6 +103,14 @@ struct nl_dump_params
* Set if a dump was performed prior to the actual dump handler.
*/
int dp_pre_dump;
/**
* PRIVATE
* Owned by the current caller
*/
int dp_ivar;
unsigned int dp_line;
};
#endif

View file

@ -70,9 +70,9 @@ extern char * nl_ip_proto2str(int, char *, size_t);
extern int nl_str2ip_proto(const char *);
/* Dumping helpers */
extern void nl_new_line(struct nl_dump_params *, int);
extern void nl_new_line(struct nl_dump_params *);
extern void nl_dump(struct nl_dump_params *, const char *, ...);
extern void nl_dump_line(struct nl_dump_params *, int, const char *, ...);
extern void nl_dump_line(struct nl_dump_params *, const char *, ...);
#ifdef __cplusplus
}

View file

@ -147,7 +147,7 @@ char *nl_geterror(void)
if (nlerrno)
return strerror(nlerrno);
return "Sucess\n";
return "Success\n";
}
/**
@ -714,7 +714,6 @@ int nl_str2ip_proto(const char *name)
/**
* Handle a new line while dumping
* @arg params Dumping parameters
* @arg line Number of lines dumped already.
*
* This function must be called before dumping any onto a
* new line. It will ensure proper prefixing as specified
@ -722,8 +721,10 @@ int nl_str2ip_proto(const char *name)
*
* @note This function will NOT dump any newlines itself
*/
void nl_new_line(struct nl_dump_params *params, int line)
void nl_new_line(struct nl_dump_params *params)
{
params->dp_line++;
if (params->dp_prefix) {
int i;
for (i = 0; i < params->dp_prefix; i++) {
@ -737,7 +738,7 @@ void nl_new_line(struct nl_dump_params *params, int line)
}
if (params->dp_nl_cb)
params->dp_nl_cb(params, line);
params->dp_nl_cb(params, params->dp_line);
}
/**
@ -758,6 +759,18 @@ void nl_dump(struct nl_dump_params *params, const char *fmt, ...)
va_end(args);
}
void nl_dump_line(struct nl_dump_params *parms, const char *fmt, ...)
{
va_list args;
nl_new_line(parms);
va_start(args, fmt);
__dp_dump(parms, fmt, args);
va_end(args);
}
/** @} */
/** @} */