[lvm-devel] LVM2 ./WHATS_NEW_DM libdm/libdm-deptree.c

Alasdair G Kergon agk at redhat.com
Fri Dec 12 00:02:32 UTC 2008


On Thu, Dec 11, 2008 at 04:25:52PM -0000, zkabelac at sourceware.org wrote:
> Changes by:	zkabelac at sourceware.org	2008-12-11 16:25:51
> Modified files:
> 	.              : WHATS_NEW_DM 
> 	libdm          : libdm-deptree.c 
> 
> Log message:
> 	Replace _dm_snprintf with EMIT_PARAMS macro for creating target lines
 

> +++ LVM2/libdm/libdm-deptree.c	2008/12/11 16:25:51	1.48
> -/* FIXME Consider exporting this */
> -static int _dm_snprintf(char *buf, size_t bufsize, const char *format, ...)

We already did export it in libdm-string.c!

> +/* simplify string emiting code */
> +#define EMIT_PARAMS(p, str...)\
> +	do {\
> +		const size_t bufsize = paramsize - (size_t)p;\
> +		int w;\
> +		\
> +		if ((w = snprintf(params + p, bufsize, str)) < 0\
> +		    || ((size_t)w >= bufsize)) {\

Can we use dm_snprintf() here now?
Also, a style point, we put || on the end of the previous line.

>  			    struct load_segment *seg, char *params,
>  			    size_t paramsize, int *pos)
>  {
>  	struct seg_area *area;
>  	char devbuf[DM_FORMAT_DEV_BUFSIZE];
> -	int tw;
> -	const char *prefix = "";
>  
>  	dm_list_iterate_items(area, &seg->areas) {
>  		if (!_build_dev_string(devbuf, sizeof(devbuf), area->dev_node))
>  			return_0;
>  
> -		if ((tw = _dm_snprintf(params + *pos, paramsize - *pos, "%s%s %" PRIu64,
> -					prefix, devbuf, area->offset)) < 0) {
> -                        stack;	/* Out of space */
> -                        return -1;
> -                }
> -
> -		prefix = " ";
> -		*pos += tw;
> +		EMIT_PARAMS(*pos, " %s %" PRIu64, devbuf, area->offset);

Has this changed the prefix behaviour by adding a space to the first one or
does that cancel out somewhere else?
(Any changes to whitespace require thorough testing - there is code that
relies on comparing these lines as strings against equivalent lines generated
in-kernel.)

Alasdair
-- 
agk at redhat.com




More information about the lvm-devel mailing list