mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2024-12-24 14:45:24 +00:00
util: Add virStringTrimOptionalNewline
And use it in virFileRead* Signed-off-by: Martin Kletzander <mkletzan@redhat.com>
This commit is contained in:
parent
b11e893224
commit
8f0b731d22
@ -3811,7 +3811,6 @@ int
|
|||||||
virFileReadValueInt(const char *path, int *value)
|
virFileReadValueInt(const char *path, int *value)
|
||||||
{
|
{
|
||||||
char *str = NULL;
|
char *str = NULL;
|
||||||
char *endp = NULL;
|
|
||||||
|
|
||||||
if (!virFileExists(path))
|
if (!virFileExists(path))
|
||||||
return -2;
|
return -2;
|
||||||
@ -3819,8 +3818,9 @@ virFileReadValueInt(const char *path, int *value)
|
|||||||
if (virFileReadAll(path, INT_STRLEN_BOUND(*value), &str) < 0)
|
if (virFileReadAll(path, INT_STRLEN_BOUND(*value), &str) < 0)
|
||||||
return -1;
|
return -1;
|
||||||
|
|
||||||
if (virStrToLong_i(str, &endp, 10, value) < 0 ||
|
virStringTrimOptionalNewline(str);
|
||||||
(endp && !c_isspace(*endp))) {
|
|
||||||
|
if (virStrToLong_i(str, NULL, 10, value) < 0) {
|
||||||
virReportError(VIR_ERR_INTERNAL_ERROR,
|
virReportError(VIR_ERR_INTERNAL_ERROR,
|
||||||
_("Invalid integer value '%s' in file '%s'"),
|
_("Invalid integer value '%s' in file '%s'"),
|
||||||
str, path);
|
str, path);
|
||||||
@ -3847,7 +3847,6 @@ int
|
|||||||
virFileReadValueUint(const char *path, unsigned int *value)
|
virFileReadValueUint(const char *path, unsigned int *value)
|
||||||
{
|
{
|
||||||
char *str = NULL;
|
char *str = NULL;
|
||||||
char *endp = NULL;
|
|
||||||
|
|
||||||
if (!virFileExists(path))
|
if (!virFileExists(path))
|
||||||
return -2;
|
return -2;
|
||||||
@ -3855,8 +3854,9 @@ virFileReadValueUint(const char *path, unsigned int *value)
|
|||||||
if (virFileReadAll(path, INT_STRLEN_BOUND(*value), &str) < 0)
|
if (virFileReadAll(path, INT_STRLEN_BOUND(*value), &str) < 0)
|
||||||
return -1;
|
return -1;
|
||||||
|
|
||||||
if (virStrToLong_uip(str, &endp, 10, value) < 0 ||
|
virStringTrimOptionalNewline(str);
|
||||||
(endp && !c_isspace(*endp))) {
|
|
||||||
|
if (virStrToLong_uip(str, NULL, 10, value)) {
|
||||||
virReportError(VIR_ERR_INTERNAL_ERROR,
|
virReportError(VIR_ERR_INTERNAL_ERROR,
|
||||||
_("Invalid unsigned integer value '%s' in file '%s'"),
|
_("Invalid unsigned integer value '%s' in file '%s'"),
|
||||||
str, path);
|
str, path);
|
||||||
@ -3886,7 +3886,6 @@ virFileReadValueBitmap(const char *path,
|
|||||||
{
|
{
|
||||||
char *buf = NULL;
|
char *buf = NULL;
|
||||||
int ret = -1;
|
int ret = -1;
|
||||||
char *tmp = NULL;
|
|
||||||
|
|
||||||
if (!virFileExists(path))
|
if (!virFileExists(path))
|
||||||
return -2;
|
return -2;
|
||||||
@ -3894,10 +3893,7 @@ virFileReadValueBitmap(const char *path,
|
|||||||
if (virFileReadAll(path, maxlen, &buf) < 0)
|
if (virFileReadAll(path, maxlen, &buf) < 0)
|
||||||
goto cleanup;
|
goto cleanup;
|
||||||
|
|
||||||
/* trim optinoal newline at the end */
|
virStringTrimOptionalNewline(buf);
|
||||||
tmp = buf + strlen(buf) - 1;
|
|
||||||
if (*tmp == '\n')
|
|
||||||
*tmp = '\0';
|
|
||||||
|
|
||||||
*value = virBitmapParseUnlimited(buf);
|
*value = virBitmapParseUnlimited(buf);
|
||||||
if (!*value)
|
if (!*value)
|
||||||
|
@ -847,13 +847,13 @@ virHostCPUParseCountLinux(void)
|
|||||||
tmp = str;
|
tmp = str;
|
||||||
do {
|
do {
|
||||||
if (virStrToLong_i(tmp, &tmp, 10, &ret) < 0 ||
|
if (virStrToLong_i(tmp, &tmp, 10, &ret) < 0 ||
|
||||||
!strchr(",-\n", *tmp)) {
|
!strchr(",-", *tmp)) {
|
||||||
virReportError(VIR_ERR_NO_SUPPORT,
|
virReportError(VIR_ERR_NO_SUPPORT,
|
||||||
_("failed to parse %s"), str);
|
_("failed to parse %s"), str);
|
||||||
ret = -1;
|
ret = -1;
|
||||||
goto cleanup;
|
goto cleanup;
|
||||||
}
|
}
|
||||||
} while (*tmp++ != '\n');
|
} while (*tmp++ && *tmp);
|
||||||
ret++;
|
ret++;
|
||||||
|
|
||||||
cleanup:
|
cleanup:
|
||||||
|
@ -288,4 +288,12 @@ bool virStringBufferIsPrintable(const uint8_t *buf, size_t buflen);
|
|||||||
|
|
||||||
char *virStringEncodeBase64(const uint8_t *buf, size_t buflen);
|
char *virStringEncodeBase64(const uint8_t *buf, size_t buflen);
|
||||||
|
|
||||||
|
static inline void
|
||||||
|
virStringTrimOptionalNewline(char *str)
|
||||||
|
{
|
||||||
|
char *tmp = str + strlen(str) - 1;
|
||||||
|
if (*tmp == '\n')
|
||||||
|
*tmp = '\0';
|
||||||
|
}
|
||||||
|
|
||||||
#endif /* __VIR_STRING_H__ */
|
#endif /* __VIR_STRING_H__ */
|
||||||
|
@ -89,6 +89,8 @@ virSysfsGetValueString(const char *file,
|
|||||||
if (virFileReadAll(path, VIR_SYSFS_VALUE_MAXLEN, value) < 0)
|
if (virFileReadAll(path, VIR_SYSFS_VALUE_MAXLEN, value) < 0)
|
||||||
goto cleanup;
|
goto cleanup;
|
||||||
|
|
||||||
|
virStringTrimOptionalNewline(*value);
|
||||||
|
|
||||||
ret = 0;
|
ret = 0;
|
||||||
cleanup:
|
cleanup:
|
||||||
VIR_FREE(path);
|
VIR_FREE(path);
|
||||||
|
Loading…
Reference in New Issue
Block a user