diff --git a/src/nodeinfo.c b/src/nodeinfo.c index 29f1aa7315..9db32337ba 100644 --- a/src/nodeinfo.c +++ b/src/nodeinfo.c @@ -344,7 +344,6 @@ virNodeCountThreadSiblings(const char *dir, unsigned int cpu) { unsigned long ret = 0; char *path; - FILE *pathfp; char *str = NULL; size_t i; @@ -352,27 +351,16 @@ virNodeCountThreadSiblings(const char *dir, unsigned int cpu) dir, cpu) < 0) return 0; - pathfp = fopen(path, "r"); - if (pathfp == NULL) { + if (!virFileExists(path)) { /* If file doesn't exist, then pretend our only * sibling is ourself */ - if (errno == ENOENT) { - VIR_FREE(path); - return 1; - } - virReportSystemError(errno, _("cannot open %s"), path); - VIR_FREE(path); - return 0; - } - - if (VIR_ALLOC_N(str, SYSFS_THREAD_SIBLINGS_LIST_LENGTH_MAX) < 0) - goto cleanup; - - if (fgets(str, SYSFS_THREAD_SIBLINGS_LIST_LENGTH_MAX, pathfp) == NULL) { - virReportSystemError(errno, _("cannot read from %s"), path); + ret = 1; goto cleanup; } + if (virFileReadAll(path, SYSFS_THREAD_SIBLINGS_LIST_LENGTH_MAX, &str) < 0) + goto cleanup; + i = 0; while (str[i] != '\0') { if (c_isdigit(str[i])) @@ -386,9 +374,7 @@ virNodeCountThreadSiblings(const char *dir, unsigned int cpu) cleanup: VIR_FREE(str); - VIR_FORCE_FCLOSE(pathfp); VIR_FREE(path); - return ret; }