Mark McLoughlin wrote:
On Thu, 2007-02-22 at 20:00 +0000, Daniel P. Berrange wrote:On Sat, Feb 17, 2007 at 01:58:04PM +0000, Richard W.M. Jones wrote:Would anyone object to a patch using __attribute__((constructor)) throughout libvirt rather than all this if(!initialised) initialise() stuff?I don't think that annotation is widely supported enough by constructors for us to be able to use it - in particular I think it'd be a problem for the Solaris guys using libvirt unless they switched to GCC instead of the Sun compilers/linkers.A better reason[1], IMHO is that it just makes code more obtuse for little gain - e.g. what order are they called in? And you'd have weird stuff where the handler set by virSetErrorFunc() would not be called if an error occurred in a constructor, requiring the library user to also use a constructor in order to call virSetErrorFunc() ...
Actually this is an argument for using constructors, because the linker should order them in a sensible order taking into account module dependencies. Anyhow, I take the point about people using non-GCC compilers (and I'm a bit surprised too ...) Does anyone know if the Solaris compiler supports C99 idioms? The remote patch currently uses C99 idioms all over the place ...
Rich. -- Emerging Technologies, Red Hat http://et.redhat.com/~rjones/ 64 Baker Street, London, W1U 7DF Mobile: +44 7866 314 421 "[Negative numbers] darken the very whole doctrines of the equations and make dark of the things which are in their nature excessively obvious and simple" (Francis Maseres FRS, mathematician, 1759)
Attachment:
smime.p7s
Description: S/MIME Cryptographic Signature