chiark / gitweb /
dhcp: Add function to free DHCP client data
[elogind.git] / src / login / logind-acl.c
index c0ff509377f47087746a070f2c1823c92367d066..2df2ba2c17fb0b38f0d3d81efe39390ecda18f2a 100644 (file)
 ***/
 
 #include <assert.h>
-#include <sys/acl.h>
-#include <acl/libacl.h>
 #include <errno.h>
 #include <string.h>
+#include <sys/acl.h>
+#include <acl/libacl.h>
 
-#include "logind-acl.h"
 #include "util.h"
 #include "acl-util.h"
 #include "set.h"
+#include "logind-acl.h"
 
 static int flush_acl(acl_t acl) {
         acl_entry_t i;
@@ -183,16 +183,15 @@ int devnode_acl_all(struct udev *udev,
         Set *nodes;
         Iterator i;
         char *n;
-        DIR *dir;
+        _cleanup_closedir_ DIR *dir = NULL;
         struct dirent *dent;
         int r;
 
         assert(udev);
 
         nodes = set_new(string_hash_func, string_compare_func);
-        if (!nodes) {
+        if (!nodes)
                 return -ENOMEM;
-        }
 
         e = udev_enumerate_new(udev);
         if (!e) {
@@ -258,35 +257,28 @@ int devnode_acl_all(struct udev *udev,
          * these devices are not known to the kernel at this moment */
         dir = opendir("/run/udev/static_node-tags/uaccess");
         if (dir) {
-                for (dent = readdir(dir); dent != NULL; dent = readdir(dir)) {
+                FOREACH_DIRENT(dent, dir, r = -errno; goto finish) {
                         _cleanup_free_ char *unescaped_devname = NULL;
 
-                        if (dent->d_name[0] == '.')
-                                continue;
-
                         unescaped_devname = cunescape(dent->d_name);
                         if (unescaped_devname == NULL) {
                                 r = -ENOMEM;
-                                closedir(dir);
                                 goto finish;
                         }
 
                         n = strappend("/dev/", unescaped_devname);
                         if (!n) {
                                 r = -ENOMEM;
-                                closedir(dir);
                                 goto finish;
                         }
 
                         log_debug("Found static node %s for seat %s", n, seat);
                         r = set_put(nodes, n);
-                        if (0 && r < 0 && r != -EEXIST) {
-                                closedir(dir);
+                        if (r < 0 && r != -EEXIST)
                                 goto finish;
-                        else
+                        else
                                 r = 0;
                 }
-                closedir(dir);
         }
 
         SET_FOREACH(n, nodes, i) {