mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2024-12-23 14:15:28 +00:00
util: fix virSkipSpaces
Most clients of virSkipSpaces don't want to omit backslashes. Also, open-coding the list of spaces is not as nice as using c_isspace. * src/util/util.c (virSkipSpaces): Use c_isspace. (virSkipSpacesAndBackslash): New function. * src/util/util.h (virSkipSpacesAndBackslash): New prototype. * src/xen/xend_internal.c (sexpr_to_xend_topology): Update caller. * src/libvirt_private.syms (util.h): Export new function.
This commit is contained in:
parent
864e9457ca
commit
82162316b6
@ -1031,6 +1031,7 @@ virSetInherit;
|
||||
virSetNonBlock;
|
||||
virSetUIDGID;
|
||||
virSkipSpaces;
|
||||
virSkipSpacesAndBackslash;
|
||||
virStrToDouble;
|
||||
virStrToLong_i;
|
||||
virStrToLong_l;
|
||||
|
@ -1532,16 +1532,31 @@ virHexToBin(unsigned char c)
|
||||
* @str: pointer to the char pointer used
|
||||
*
|
||||
* Skip potential blanks, this includes space tabs, line feed,
|
||||
* carriage returns and also '\\' which can be erronously emitted
|
||||
* by xend
|
||||
* carriage returns.
|
||||
*/
|
||||
void
|
||||
virSkipSpaces(const char **str)
|
||||
{
|
||||
const char *cur = *str;
|
||||
|
||||
while ((*cur == ' ') || (*cur == '\t') || (*cur == '\n') ||
|
||||
(*cur == '\r') || (*cur == '\\'))
|
||||
while (c_isspace(*cur))
|
||||
cur++;
|
||||
*str = cur;
|
||||
}
|
||||
|
||||
/**
|
||||
* virSkipSpacesAndBackslash:
|
||||
* @str: pointer to the char pointer used
|
||||
*
|
||||
* Like virSkipSpaces, but also skip backslashes erroneously emitted
|
||||
* by xend
|
||||
*/
|
||||
void
|
||||
virSkipSpacesAndBackslash(const char **str)
|
||||
{
|
||||
const char *cur = *str;
|
||||
|
||||
while (c_isspace(*cur) || *cur == '\\')
|
||||
cur++;
|
||||
*str = cur;
|
||||
}
|
||||
|
@ -167,6 +167,7 @@ int virHexToBin(unsigned char c);
|
||||
int virMacAddrCompare (const char *mac1, const char *mac2);
|
||||
|
||||
void virSkipSpaces(const char **str);
|
||||
void virSkipSpacesAndBackslash(const char **str);
|
||||
int virParseNumber(const char **str);
|
||||
int virParseVersionString(const char *str, unsigned long *version,
|
||||
bool allowMissing);
|
||||
|
@ -1199,11 +1199,11 @@ sexpr_to_xend_topology(const struct sexpr *root,
|
||||
cell = virParseNumber(&cur);
|
||||
if (cell < 0)
|
||||
goto parse_error;
|
||||
virSkipSpaces(&cur);
|
||||
virSkipSpacesAndBackslash(&cur);
|
||||
if (*cur != ':')
|
||||
goto parse_error;
|
||||
cur++;
|
||||
virSkipSpaces(&cur);
|
||||
virSkipSpacesAndBackslash(&cur);
|
||||
if (STRPREFIX(cur, "no cpus")) {
|
||||
nb_cpus = 0;
|
||||
for (cpu = 0; cpu < numCpus; cpu++)
|
||||
|
Loading…
Reference in New Issue
Block a user