]> xenbits.xensource.com Git - libvirt.git/commitdiff
conf: use virDirRead API
authorEric Blake <eblake@redhat.com>
Thu, 24 Apr 2014 04:27:44 +0000 (22:27 -0600)
committerEric Blake <eblake@redhat.com>
Mon, 28 Apr 2014 23:52:45 +0000 (17:52 -0600)
When reading configuration files, we were silently ignoring
directory read failures.  While unlikely, we might as well
report them.

* src/conf/domain_conf.c (virDomainObjListLoadAllConfigs): Report
readdir errors.
* src/conf/network_conf.c (virNetworkLoadAllState)
(virNetworkLoadAllConfigs): Likewise.
* src/conf/nwfilter_conf.c (virNWFilterLoadAllConfigs): Likewise.
* src/conf/storage_conf.c (virStoragePoolLoadAllConfigs):
Likewise.

Signed-off-by: Eric Blake <eblake@redhat.com>
src/conf/domain_conf.c
src/conf/network_conf.c
src/conf/nwfilter_conf.c
src/conf/storage_conf.c

index c655bcf2bc41cd8dfacf00e47f90cbc4ee288b38..0569f6601302b4a5d49f47fed6b464378f02778c 100644 (file)
@@ -18219,6 +18219,7 @@ virDomainObjListLoadAllConfigs(virDomainObjListPtr doms,
 {
     DIR *dir;
     struct dirent *entry;
+    int ret = -1;
 
     VIR_INFO("Scanning for configs in %s", configDir);
 
@@ -18233,7 +18234,7 @@ virDomainObjListLoadAllConfigs(virDomainObjListPtr doms,
 
     virObjectLock(doms);
 
-    while ((entry = readdir(dir))) {
+    while ((ret = virDirRead(dir, &entry, configDir)) > 0) {
         virDomainObjPtr dom;
 
         if (entry->d_name[0] == '.')
@@ -18273,7 +18274,7 @@ virDomainObjListLoadAllConfigs(virDomainObjListPtr doms,
 
     closedir(dir);
     virObjectUnlock(doms);
-    return 0;
+    return ret;
 }
 
 int
index 41465c2fcb5c17395eb1f0af5ee73b590a294c34..b6312b5946a46fc2e52a00249480d1863d0a19c0 100644 (file)
@@ -3153,6 +3153,7 @@ virNetworkLoadAllState(virNetworkObjListPtr nets,
 {
     DIR *dir;
     struct dirent *entry;
+    int ret = -1;
 
     if (!(dir = opendir(stateDir))) {
         if (errno == ENOENT)
@@ -3162,7 +3163,7 @@ virNetworkLoadAllState(virNetworkObjListPtr nets,
         return -1;
     }
 
-    while ((entry = readdir(dir))) {
+    while ((ret = virDirRead(dir, &entry, stateDir)) > 0) {
         virNetworkObjPtr net;
 
         if (entry->d_name[0] == '.')
@@ -3176,7 +3177,7 @@ virNetworkLoadAllState(virNetworkObjListPtr nets,
     }
 
     closedir(dir);
-    return 0;
+    return ret;
 }
 
 
@@ -3186,6 +3187,7 @@ int virNetworkLoadAllConfigs(virNetworkObjListPtr nets,
 {
     DIR *dir;
     struct dirent *entry;
+    int ret = -1;
 
     if (!(dir = opendir(configDir))) {
         if (errno == ENOENT)
@@ -3196,7 +3198,7 @@ int virNetworkLoadAllConfigs(virNetworkObjListPtr nets,
         return -1;
     }
 
-    while ((entry = readdir(dir))) {
+    while ((ret = virDirRead(dir, &entry, configDir)) > 0) {
         virNetworkObjPtr net;
 
         if (entry->d_name[0] == '.')
@@ -3216,8 +3218,7 @@ int virNetworkLoadAllConfigs(virNetworkObjListPtr nets,
     }
 
     closedir(dir);
-
-    return 0;
+    return ret;
 }
 
 int virNetworkDeleteConfig(const char *configDir,
index b332f0fa13eb3e83660e1dad572d704d2e14ccca..90da0b5837a765cc062f58e93f66cd2750a365bc 100644 (file)
@@ -3097,6 +3097,7 @@ virNWFilterLoadAllConfigs(virNWFilterObjListPtr nwfilters,
 {
     DIR *dir;
     struct dirent *entry;
+    int ret = -1;
 
     if (!(dir = opendir(configDir))) {
         if (errno == ENOENT) {
@@ -3107,7 +3108,7 @@ virNWFilterLoadAllConfigs(virNWFilterObjListPtr nwfilters,
         return -1;
     }
 
-    while ((entry = readdir(dir))) {
+    while ((ret = virDirRead(dir, &entry, configDir)) > 0) {
         char *path;
         virNWFilterObjPtr nwfilter;
 
@@ -3128,8 +3129,7 @@ virNWFilterLoadAllConfigs(virNWFilterObjListPtr nwfilters,
     }
 
     closedir(dir);
-
-    return 0;
+    return ret;
 }
 
 
index ebd42c2ecff9871e1a46667444594d5b5edb5c8e..9769b19149ae3f922db33d9c9fb67d512da8f22c 100644 (file)
@@ -1862,6 +1862,7 @@ virStoragePoolLoadAllConfigs(virStoragePoolObjListPtr pools,
 {
     DIR *dir;
     struct dirent *entry;
+    int ret;
 
     if (!(dir = opendir(configDir))) {
         if (errno == ENOENT)
@@ -1871,7 +1872,7 @@ virStoragePoolLoadAllConfigs(virStoragePoolObjListPtr pools,
         return -1;
     }
 
-    while ((entry = readdir(dir))) {
+    while ((ret = virDirRead(dir, &entry, configDir)) > 0) {
         char *path;
         char *autostartLink;
         virStoragePoolObjPtr pool;
@@ -1901,8 +1902,7 @@ virStoragePoolLoadAllConfigs(virStoragePoolObjListPtr pools,
     }
 
     closedir(dir);
-
-    return 0;
+    return ret;
 }
 
 int