lib/util/gpfswrap: add gpfswrap_fgetacl()
authorRalph Boehme <slow@samba.org>
Tue, 17 May 2022 13:43:39 +0000 (15:43 +0200)
committerJule Anger <janger@samba.org>
Thu, 9 Jun 2022 08:54:16 +0000 (08:54 +0000)
Adds handle based version of gpfswrap_getacl().

BUG: https://bugzilla.samba.org/show_bug.cgi?id=15069

Signed-off-by: Ralph Boehme <slow@samba.org>
Reviewed-by: Christof Schmitt <cs@samba.org>
(cherry picked from commit d373ff3c01c2c50cd539b78494c0673974a0f046)

lib/util/gpfswrap.c
lib/util/gpfswrap.h

index 5cf6d2148e742aa899e7b62940b3d0b063af75f7..ff0b9bd70316d842a92b3e0784792a1961708a8c 100644 (file)
@@ -24,6 +24,7 @@
 static int (*gpfs_set_share_fn)(int fd, unsigned int allow, unsigned int deny);
 static int (*gpfs_set_lease_fn)(int fd, unsigned int type);
 static int (*gpfs_getacl_fn)(const char *pathname, int flags, void *acl);
+static int (*gpfs_fgetacl_fn)(int fd, int flags, void *acl);
 static int (*gpfs_putacl_fn)(const char *pathname, int flags, void *acl);
 static int (*gpfs_get_realfilename_path_fn)(const char *pathname,
                                            char *filenamep,
@@ -71,6 +72,7 @@ int gpfswrap_init(void)
        gpfs_set_share_fn             = dlsym(l, "gpfs_set_share");
        gpfs_set_lease_fn             = dlsym(l, "gpfs_set_lease");
        gpfs_getacl_fn                = dlsym(l, "gpfs_getacl");
+       gpfs_fgetacl_fn               = dlsym(l, "gpfs_getacl_fd");
        gpfs_putacl_fn                = dlsym(l, "gpfs_putacl");
        gpfs_get_realfilename_path_fn = dlsym(l, "gpfs_get_realfilename_path");
        gpfs_set_winattrs_path_fn     = dlsym(l, "gpfs_set_winattrs_path");
@@ -122,6 +124,16 @@ int gpfswrap_getacl(const char *pathname, int flags, void *acl)
        return gpfs_getacl_fn(pathname, flags, acl);
 }
 
+int gpfswrap_fgetacl(int fd, int flags, void *acl)
+{
+       if (gpfs_fgetacl_fn == NULL) {
+               errno = ENOSYS;
+               return -1;
+       }
+
+       return gpfs_fgetacl_fn(fd, flags, acl);
+}
+
 int gpfswrap_putacl(const char *pathname, int flags, void *acl)
 {
        if (gpfs_putacl_fn == NULL) {
index 764cf686d2e56579dc6fabf5674463c56647b8bf..db541b31f1024f6a6d153ab99a462c80d8e3aa04 100644 (file)
@@ -30,6 +30,7 @@ int gpfswrap_init(void);
 int gpfswrap_set_share(int fd, unsigned int allow, unsigned int deny);
 int gpfswrap_set_lease(int fd, unsigned int type);
 int gpfswrap_getacl(const char *pathname, int flags, void *acl);
+int gpfswrap_fgetacl(int fd, int flags, void *acl);
 int gpfswrap_putacl(const char *pathname, int flags, void *acl);
 int gpfswrap_get_realfilename_path(const char *pathname,
                                   char *filenamep,