Paolo Bonzini wrote:
> Unfortunately that's not possible in the case of
virStrcpyStatic(). Because
> virStrcpyStatic() does a sizeof(dest), you have to have the original char
> foo[123], not a char *, to get something meaningful. That means that it has to
> either be a macro or not exist at all. (I could be convinced of the latter, but
> I found it convenient when converting a number of these locations)
>
> I could make virStrcpy a small function, though.
Yes, that would be quite nice. It would remove the multiple-evaluation
problem from virStrcpyStatic too.
In the followup I'd also like to have macro arguments parenthesized:
#define virStrcpyStatic(dest, src) \
virStrcpy((dest), (src), sizeof(dest))
I don't remember off the top of my head the case in which that would be
a problem (since these are just function arguments), but I'm sure Jim
Meyering could enlighten us. ;-)
OK, I've committed this now, with the changes suggested by DV and Paolo. Please
take a look and let me know if the code I committed works for everyone.
--
Chris Lalancette