mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2024-12-22 17:34:18 +03:00
virsh: Don't motify the const string
This improve helper vshStringToArray to accept const string as argument instead. To not convert the const string when using vshStringToArray, and thus avoid motifying it.
This commit is contained in:
parent
a3676b6cb6
commit
f5fb059a78
@ -2336,8 +2336,7 @@ cmdUndefine(vshControl *ctl, const vshCmd *cmd)
|
||||
/* list of volumes to remove along with this domain */
|
||||
vshUndefineVolume *vlist = NULL;
|
||||
int nvols = 0;
|
||||
const char *volumes_arg = NULL;
|
||||
char *volumes = NULL;
|
||||
const char *volumes = NULL;
|
||||
char **volume_tokens = NULL;
|
||||
char *volume_tok = NULL;
|
||||
int nvolume_tokens = 0;
|
||||
@ -2352,8 +2351,7 @@ cmdUndefine(vshControl *ctl, const vshCmd *cmd)
|
||||
int nvolumes = 0;
|
||||
bool vol_not_found = false;
|
||||
|
||||
ignore_value(vshCommandOptString(cmd, "storage", &volumes_arg));
|
||||
volumes = vshStrdup(ctl, volumes_arg);
|
||||
ignore_value(vshCommandOptString(cmd, "storage", &volumes));
|
||||
|
||||
if (managed_save) {
|
||||
flags |= VIR_DOMAIN_UNDEFINE_MANAGED_SAVE;
|
||||
@ -2605,8 +2603,10 @@ cleanup:
|
||||
}
|
||||
VIR_FREE(vlist);
|
||||
|
||||
VIR_FREE(volumes);
|
||||
VIR_FREE(volume_tokens);
|
||||
if (volume_tokens) {
|
||||
VIR_FREE(*volume_tokens);
|
||||
VIR_FREE(volume_tokens);
|
||||
}
|
||||
VIR_FREE(def);
|
||||
VIR_FREE(vol_nodes);
|
||||
xmlFreeDoc(doc);
|
||||
|
@ -854,7 +854,7 @@ cmdPoolList(vshControl *ctl, const vshCmd *cmd ATTRIBUTE_UNUSED)
|
||||
char **poolTypes = NULL;
|
||||
int npoolTypes = 0;
|
||||
|
||||
npoolTypes = vshStringToArray((char *)type, &poolTypes);
|
||||
npoolTypes = vshStringToArray(type, &poolTypes);
|
||||
|
||||
for (i = 0; i < npoolTypes; i++) {
|
||||
if ((poolType = virStoragePoolTypeFromString(poolTypes[i])) < 0) {
|
||||
@ -895,7 +895,10 @@ cmdPoolList(vshControl *ctl, const vshCmd *cmd ATTRIBUTE_UNUSED)
|
||||
break;
|
||||
}
|
||||
}
|
||||
VIR_FREE(poolTypes);
|
||||
if (poolTypes) {
|
||||
VIR_FREE(*poolTypes);
|
||||
VIR_FREE(poolTypes);
|
||||
}
|
||||
}
|
||||
|
||||
if (!(list = vshStoragePoolListCollect(ctl, flags)))
|
||||
|
@ -174,19 +174,20 @@ vshPrettyCapacity(unsigned long long val, const char **unit)
|
||||
* on error.
|
||||
*/
|
||||
int
|
||||
vshStringToArray(char *str,
|
||||
vshStringToArray(const char *str,
|
||||
char ***array)
|
||||
{
|
||||
char *str_copied = vshStrdup(NULL, str);
|
||||
char *str_tok = NULL;
|
||||
unsigned int nstr_tokens = 0;
|
||||
char **arr = NULL;
|
||||
|
||||
/* tokenize the string from user and save it's parts into an array */
|
||||
if (str) {
|
||||
if (str_copied) {
|
||||
nstr_tokens = 1;
|
||||
|
||||
/* count the delimiters */
|
||||
str_tok = str;
|
||||
str_tok = str_copied;
|
||||
while (*str_tok) {
|
||||
if (*str_tok == ',')
|
||||
nstr_tokens++;
|
||||
@ -195,12 +196,13 @@ vshStringToArray(char *str,
|
||||
|
||||
if (VIR_ALLOC_N(arr, nstr_tokens) < 0) {
|
||||
virReportOOMError();
|
||||
VIR_FREE(str_copied);
|
||||
return -1;
|
||||
}
|
||||
|
||||
/* tokenize the input string */
|
||||
nstr_tokens = 0;
|
||||
str_tok = str;
|
||||
str_tok = str_copied;
|
||||
do {
|
||||
arr[nstr_tokens] = strsep(&str_tok, ",");
|
||||
nstr_tokens++;
|
||||
|
@ -330,7 +330,7 @@ int vshAskReedit(vshControl *ctl, const char *msg);
|
||||
int vshStreamSink(virStreamPtr st, const char *bytes, size_t nbytes,
|
||||
void *opaque);
|
||||
double vshPrettyCapacity(unsigned long long val, const char **unit);
|
||||
int vshStringToArray(char *str, char ***array);
|
||||
int vshStringToArray(const char *str, char ***array);
|
||||
|
||||
/* Typedefs, function prototypes for job progress reporting.
|
||||
* There are used by some long lingering commands like
|
||||
|
Loading…
Reference in New Issue
Block a user