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

Zdenek Kabelac zkabelac at redhat.com
Fri Dec 12 09:26:57 UTC 2008


Dave Wysochanski napsal(a):
>> +/* 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)) {\
>> +			stack; /* Out of space */\
>> +			return -1;\
>> +		}\
>> +		p += w;\
>> +	} while (0)
>> +
> 
> Do we have to do a macro here?  Macros like this are harder to debug...
> 


I think it's actually minimizing the chance you will add a buggy code by some 
cut&paste operation when you add new string emitting line.

Also it makes the code more readable.

Do you think there is some potential debug problem in this code, that makes
worth to keep the original emitting style?

(i.e. replicator emits string 11 times - without this macro it makes the code 
even less readable,  and also using inline function and 'stack' macro is not 
going to work together, so it's hard to use gdb-friendly inline here :( )

Zdenek




More information about the lvm-devel mailing list