]> gitweb.michael.orlitzky.com - apply-default-acl.git/blobdiff - src/apply-default-acl.c
Inline the one call to the get_mode() function.
[apply-default-acl.git] / src / apply-default-acl.c
index 993b1f7649e14c50300174da1f5d87fcb534d20a..15383a003772aaf47736cefc7a0f957b02c1ccd8 100644 (file)
 
 
 
-/**
- * @brief Get the mode bits from the given file descriptor.
- *
- * @param fd
- *   The file descriptor (which may reference a directory) whose
- *   mode we want.
- *
- * @return A mode_t (st_mode) structure containing the mode bits.
- *   See sys/stat.h for details.
- */
-mode_t get_mode(int fd) {
-  if (fd <= 0) {
-    errno = ENOENT;
-    return ACL_ERROR;
-  }
-
-  struct stat s;
-  int result = fstat(fd, &s);
-
-  if (result == 0) {
-    return s.st_mode;
-  }
-  else {
-    /* errno will be set already by lstat() */
-    return result;
-  }
-}
-
-
 
 /**
  * @brief Determine if the given file descriptor might refer to an
@@ -482,8 +453,13 @@ int any_can_execute_or_dir(int fd) {
   int result = ACL_FAILURE;
 
   if (acl_is_minimal(acl)) {
-    mode_t mode = get_mode(fd);
-    if (mode & (S_IXUSR | S_IXOTH | S_IXGRP)) {
+    struct stat s;
+    if (fstat(fd, &s) == -1) {
+      perror("any_can_execute_or_dir (fstat)");
+      result = ACL_ERROR;
+      goto cleanup;
+    }
+    if (s.st_mode & (S_IXUSR | S_IXOTH | S_IXGRP)) {
       result = ACL_SUCCESS;
       goto cleanup;
     }