On Mon, Jul 27, 2009 at 07:51:08PM +0100, Ron Yorston wrote: > When experimenting with libvirt and UML I found it necessary to add > support for additional kernel command line arguments. ACK, this looks reasonable. Daniel > diff -up libvirt-0.6.5/src/uml_conf.c.uml-cmdline libvirt-0.6.5/src/uml_conf.c > --- libvirt-0.6.5/src/uml_conf.c.uml-cmdline 2009-07-10 16:28:51.000000000 +0100 > +++ libvirt-0.6.5/src/uml_conf.c 2009-07-27 19:39:59.000000000 +0100 > @@ -326,6 +326,31 @@ umlBuildCommandLineChr(virConnectPtr con > } > > /* > + * Null-terminate the current argument and return a pointer to the next. > + * This should follow the same rules as the Linux kernel: arguments are > + * separated by spaces; arguments can be quoted with double quotes; double > + * quotes can't be escaped. > + */ > +static char *umlNextArg(char *args) > +{ > + int in_quote = 0; > + > + for (; *args; args++) { > + if (*args == ' ' && !in_quote) { > + *args++ = '\0'; > + break; > + } > + if (*args == '"') > + in_quote = !in_quote; > + } > + > + while (*args == ' ') > + args++; > + > + return args; > +} > + > +/* > * Constructs a argv suitable for launching uml with config defined > * for a given virtual machine. > */ > @@ -342,6 +367,7 @@ int umlBuildCommandLine(virConnectPtr co > const char **qargv = NULL; > int qenvc = 0, qenva = 0; > const char **qenv = NULL; > + char *cmdline = NULL; > > uname(&ut); > > @@ -474,6 +500,22 @@ int umlBuildCommandLine(virConnectPtr co > ADD_ARG(ret); > } > > + if (vm->def->os.cmdline) { > + char *args, *next_arg; > + if ((cmdline = strdup(vm->def->os.cmdline)) == NULL) > + goto no_memory; > + > + args = cmdline; > + while (*args == ' ') > + args++; > + > + while (*args) { > + next_arg = umlNextArg(args); > + ADD_ARG_LIT(args); > + args = next_arg; > + } > + } > + > ADD_ARG(NULL); > ADD_ENV(NULL); > > @@ -495,6 +537,7 @@ int umlBuildCommandLine(virConnectPtr co > VIR_FREE((qenv)[i]); > VIR_FREE(qenv); > } > + VIR_FREE(cmdline); > return -1; > > #undef ADD_ARG > > -- > Libvir-list mailing list > Libvir-list@xxxxxxxxxx > https://www.redhat.com/mailman/listinfo/libvir-list -- |: Red Hat, Engineering, London -o- http://people.redhat.com/berrange/ :| |: http://libvirt.org -o- http://virt-manager.org -o- http://ovirt.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