PERFORCE change 146998 for review
Edward Tomasz Napierala
trasz at FreeBSD.org
Sat Aug 9 17:19:09 UTC 2008
http://perforce.freebsd.org/chv.cgi?CH=146998
Change 146998 by trasz at trasz_traszkan on 2008/08/09 17:18:52
1/10 of required tests. Ugh.
Affected files ...
.. //depot/projects/soc2008/trasz_nfs4acl/tools/regression/fstest/Makefile#2 edit
.. //depot/projects/soc2008/trasz_nfs4acl/tools/regression/fstest/fstest.c#2 edit
.. //depot/projects/soc2008/trasz_nfs4acl/tools/regression/fstest/tests/granular/00.t#1 add
.. //depot/projects/soc2008/trasz_nfs4acl/tools/regression/fstest/tests/granular/01.t#1 add
.. //depot/projects/soc2008/trasz_nfs4acl/tools/regression/fstest/tests/granular/02.t#1 add
.. //depot/projects/soc2008/trasz_nfs4acl/tools/regression/fstest/tests/granular/03.t#1 add
Differences ...
==== //depot/projects/soc2008/trasz_nfs4acl/tools/regression/fstest/Makefile#2 (text+ko) ====
@@ -3,6 +3,7 @@
CFLAGS+=-DHAS_LCHMOD
CFLAGS+=-DHAS_CHFLAGS
CFLAGS+=-DHAS_LCHFLAGS
+CFLAGS+=-DHAS_FREEBSD_ACL
#CFLAGS+=-DHAS_TRUNCATE64
#CFLAGS+=-DHAS_STAT64
==== //depot/projects/soc2008/trasz_nfs4acl/tools/regression/fstest/fstest.c#2 (text+ko) ====
@@ -45,6 +45,9 @@
#define stat64 stat
#define lstat64 lstat
#endif
+#ifdef HAS_FREEBSD_ACL
+#include <sys/acl.h>
+#endif
#ifndef ALLPERMS
#define ALLPERMS (S_ISUID|S_ISGID|S_ISVTX|S_IRWXU|S_IRWXG|S_IRWXO)
@@ -75,6 +78,10 @@
ACTION_TRUNCATE,
ACTION_STAT,
ACTION_LSTAT,
+#ifdef HAS_FREEBSD_ACL
+ ACTION_PREPENDACL,
+ ACTION_READACL,
+#endif
};
#define TYPE_NONE 0x0000
@@ -116,6 +123,10 @@
{ "truncate", ACTION_TRUNCATE, { TYPE_STRING, TYPE_NUMBER, TYPE_NONE } },
{ "stat", ACTION_STAT, { TYPE_STRING, TYPE_STRING, TYPE_NONE } },
{ "lstat", ACTION_LSTAT, { TYPE_STRING, TYPE_STRING, TYPE_NONE } },
+#ifdef HAS_FREEBSD_ACL
+ { "prependacl", ACTION_PREPENDACL, { TYPE_STRING, TYPE_STRING, TYPE_NONE } },
+ { "readacl", ACTION_READACL, { TYPE_STRING, TYPE_NONE } },
+#endif
{ NULL, -1, { TYPE_NONE } }
};
@@ -362,6 +373,11 @@
char *str;
long long num;
} args[MAX_ARGS];
+#ifdef HAS_FREEBSD_ACL
+ int entry_id = ACL_FIRST_ENTRY;
+ acl_t acl, newacl;
+ acl_entry_t entry, newentry;
+#endif
/*
* Verify correctness of the arguments.
@@ -484,6 +500,39 @@
return (i);
}
break;
+#ifdef HAS_FREEBSD_ACL
+ case ACTION_PREPENDACL:
+ rval = -1;
+
+ acl = acl_get_file(STR(0), ACL_TYPE_NFS4);
+ if (acl == NULL)
+ break;
+
+ newacl = acl_from_text(STR(1));
+ if (acl == NULL)
+ break;
+
+ while (acl_get_entry(newacl, entry_id, &newentry) == 1) {
+ entry_id = ACL_NEXT_ENTRY;
+
+ if (acl_create_entry_np(&acl, &entry, 0))
+ break;
+
+ if (acl_copy_entry(entry, newentry))
+ break;
+ }
+
+ rval = acl_set_file(STR(0), ACL_TYPE_NFS4, acl);
+ break;
+
+ case ACTION_READACL:
+ acl = acl_get_file(STR(0), ACL_TYPE_NFS4);
+ if (acl == NULL)
+ rval = -1;
+ else
+ rval = 0;
+ break;
+#endif
default:
fprintf(stderr, "unsupported syscall\n");
exit(1);
More information about the p4-projects
mailing list