I've come up with a different scheme for doing the DEBUG() and DEBUGADD()
macros that meets the RVALUE requirement and doesn't use the (a?b:c) format
that Andrew called "ugly". I've added the new macros but kept the old
macros within a #if 0..#else..#endif block in case I've missed somthing.
Basically, I've used
(void)( (a) && (b) )
or
(void)( (a) && (b) && (c) )
instead of
( (a) ? (void)(b) : (void)(c) )
or similar. I have this compiled and running now.
Here's the diff:
$ cvs diff smb.h
Enter passphrase for RSA key 'crh@Ruby':
Index: smb.h
===================================================================
RCS file: /data/cvs/samba/source/include/smb.h,v
retrieving revision 1.172
diff -r1.172 smb.h
143a144,145
> #if 0
>
150a153,164
>
> #else
>
> #define DEBUG( level, body ) \
> (void)( (DEBUGLEVEL >= (level)) \
> && (dbghdr( level, FILE_MACRO, FUNCTION_MACRO, (__LINE__) )) \
> && (dbgtext body) )
>
> #define DEBUGADD( level, body ) \
> (void)( (DEBUGLEVEL >= (level)) && (dbgtext body) )
>
> #endif
Chris -)-----
(This used to be commit
53b433e6ab9fd69a02016ee4f2a3f756640ea565)