]> gitweb.michael.orlitzky.com - apply-default-acl.git/commitdiff
src/libadacl.c: minor code simplification in safe_open().
authorMichael Orlitzky <michael@orlitzky.com>
Fri, 2 Mar 2018 01:57:50 +0000 (20:57 -0500)
committerMichael Orlitzky <michael@orlitzky.com>
Fri, 2 Mar 2018 01:57:50 +0000 (20:57 -0500)
src/libadacl.c

index 1b31938666c9aab2aab84f4bdd3087bb7561b079..36812e8af3dd18a4dbfd96f7c7b769865d90298d 100644 (file)
@@ -170,25 +170,24 @@ int safe_open(const char* pathname, int flags) {
     return OPEN_ERROR;
   }
 
-  int fd = 0;
-  if (strcmp(abspath, "/") == 0) {
-    fd = open("/", flags | O_DIRECTORY);
-  }
-  else {
+  bool abspath_is_root = (strcmp(abspath, "/") == 0);
+  int rootflags = flags | O_DIRECTORY;
+  if (!abspath_is_root) {
     /* Use O_PATH for some added safety if "/" is not our target */
-    fd = open("/", flags | O_DIRECTORY | O_PATH);
+    rootflags |= O_PATH;
   }
-  if (fd == OPEN_ERROR) {
+  int rootfd = open("/", rootflags);
+  if (rootfd == OPEN_ERROR) {
     perror("safe_open (open)");
     return OPEN_ERROR;
   }
 
-  if (strcmp(abspath, "/") == 0) {
-    return fd;
+  if (abspath_is_root) {
+    return rootfd;
   }
 
-  int result = safe_open_ex(fd, abspath+1, flags);
-  if (close(fd) == CLOSE_ERROR) {
+  int result = safe_open_ex(rootfd, abspath+1, flags);
+  if (close(rootfd) == CLOSE_ERROR) {
     perror("safe_open (close)");
     return OPEN_ERROR;
   }