* on space
*/
static int qemuStringToArgvEnv(const char *args,
- const char ***retenv,
- const char ***retargv)
+ char ***retenv,
+ char ***retargv)
{
char **arglist = NULL;
int argcount = 0;
size_t i;
const char *curr = args;
const char *start;
- const char **progenv = NULL;
- const char **progargv = NULL;
+ char **progenv = NULL;
+ char **progargv = NULL;
/* Iterate over string, splitting on sequences of ' ' */
while (curr && *curr != '\0') {
return 0;
error:
- for (i = 0; progenv && progenv[i]; i++)
- VIR_FREE(progenv[i]);
- VIR_FREE(progenv);
- for (i = 0; i < argcount; i++)
- VIR_FREE(arglist[i]);
- VIR_FREE(arglist);
+ virStringFreeList(progenv);
+ virStringFreeList(arglist);
return -1;
}
/*
* Search for a named env variable, and return the value part
*/
-static const char *qemuFindEnv(const char **progenv,
+static const char *qemuFindEnv(char **progenv,
const char *name)
{
size_t i;
* virDomainDefPtr representing these settings as closely
* as is practical. This is not an exact science....
*/
-virDomainDefPtr qemuParseCommandLine(virCapsPtr qemuCaps,
- virDomainXMLOptionPtr xmlopt,
- const char **progenv,
- const char **progargv,
- char **pidfile,
- virDomainChrSourceDefPtr *monConfig,
- bool *monJSON)
+static virDomainDefPtr
+qemuParseCommandLine(virCapsPtr qemuCaps,
+ virDomainXMLOptionPtr xmlopt,
+ char **progenv,
+ char **progargv,
+ char **pidfile,
+ virDomainChrSourceDefPtr *monConfig,
+ bool *monJSON)
{
virDomainDefPtr def;
size_t i;
virDomainChrSourceDefPtr *monConfig,
bool *monJSON)
{
- const char **progenv = NULL;
- const char **progargv = NULL;
+ char **progenv = NULL;
+ char **progargv = NULL;
virDomainDefPtr def = NULL;
- size_t i;
if (qemuStringToArgvEnv(args, &progenv, &progargv) < 0)
goto cleanup;
pidfile, monConfig, monJSON);
cleanup:
- for (i = 0; progargv && progargv[i]; i++)
- VIR_FREE(progargv[i]);
- VIR_FREE(progargv);
-
- for (i = 0; progenv && progenv[i]; i++)
- VIR_FREE(progenv[i]);
- VIR_FREE(progenv);
+ virStringFreeList(progargv);
+ virStringFreeList(progenv);
return def;
}
static int qemuParseProcFileStrings(int pid_value,
const char *name,
- const char ***list)
+ char ***list)
{
char *path = NULL;
int ret = -1;
char *tmp;
size_t nstr = 0;
char **str = NULL;
- size_t i;
if (virAsprintf(&path, "/proc/%d/%s", pid_value, name) < 0)
goto cleanup;
str[nstr-1] = NULL;
ret = nstr-1;
- *list = (const char **) str;
+ *list = str;
cleanup:
- if (ret < 0) {
- for (i = 0; str && str[i]; i++)
- VIR_FREE(str[i]);
- VIR_FREE(str);
- }
+ if (ret < 0)
+ virStringFreeList(str);
VIR_FREE(data);
VIR_FREE(path);
return ret;
bool *monJSON)
{
virDomainDefPtr def = NULL;
- const char **progargv = NULL;
- const char **progenv = NULL;
+ char **progargv = NULL;
+ char **progenv = NULL;
char *exepath = NULL;
char *emulator;
- size_t i;
/* The parser requires /proc/pid, which only exists on platforms
* like Linux where pid_t fits in int. */
cleanup:
VIR_FREE(exepath);
- for (i = 0; progargv && progargv[i]; i++)
- VIR_FREE(progargv[i]);
- VIR_FREE(progargv);
- for (i = 0; progenv && progenv[i]; i++)
- VIR_FREE(progenv[i]);
- VIR_FREE(progenv);
+ virStringFreeList(progargv);
+ virStringFreeList(progenv);
return def;
}