On Fri, Mar 26, 2010 at 10:53:01AM -0600, Eric Blake wrote: > On 03/26/2010 09:43 AM, Daniel Veillard wrote: > > > + */ > > + if ((virHooksFound == -1) || > > + ((driver == VIR_HOOK_DRIVER_DAEMON) && > > + (op == VIR_HOOK_DAEMON_OP_RELOAD))) > > + virHookInitialize(); > > + > ... > > + /* > > + * Convenience macros borrowed from qemudBuildCommandLine() > > + */ > > Duplicating the definition of all these helpers is a bit of a long > distraction in the middle of this function; is it worth a helper file, > where we could #include "command_line_builder.h" to get all these > helpers defined, and to reduce the duplication from > qemudBuildCommandLine by having the macros in one place? I'd like to kill off all these macros completely, and instead introduce a formal API. In a similar style to virBuffer, have a statically initialized struct, APIs to add args & env variables, and a final API to check whether any OOM errors occurred. Then a thin wrapper for virExec/virRun to actually execute it typedef struct { int hasError; char **argv; char **env; } virCommandInfo; virCommandInfo cmd = VIR_COMMAND_INFO_INITIALIZER; virCommandInfoAddArg(info, "/usr/bin/kvm"); virCommandInfoCopyEnv(info, "PATH"); virCommandInfoSetEnv(info, "LANG", "C"); virCommandInfoAddArg(info, "--foo"); virCommandInfoAddArg(info, "--bar"); if (virCommandInfoHasError(info)) virReportOOMError(); virRunCommand(info); Daniel -- |: Red Hat, Engineering, London -o- http://people.redhat.com/berrange/ :| |: http://libvirt.org -o- http://virt-manager.org -o- http://deltacloud.org :| |: http://autobuild.org -o- http://search.cpan.org/~danberr/ :| |: GnuPG: 7D3B9505 -o- F3C9 553F A1DA 4AC2 5648 23C1 B3DF F742 7D3B 9505 :| -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list