From owner-p4-projects@FreeBSD.ORG Sat Aug 9 17:19:09 2008 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 50EBD1065680; Sat, 9 Aug 2008 17:19:09 +0000 (UTC) Delivered-To: perforce@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 14763106566C for ; Sat, 9 Aug 2008 17:19:09 +0000 (UTC) (envelope-from trasz@freebsd.org) Received: from repoman.freebsd.org (repoman.freebsd.org [IPv6:2001:4f8:fff6::29]) by mx1.freebsd.org (Postfix) with ESMTP id F3E658FC19 for ; Sat, 9 Aug 2008 17:19:08 +0000 (UTC) (envelope-from trasz@freebsd.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.14.2/8.14.2) with ESMTP id m79HJ8s5022733 for ; Sat, 9 Aug 2008 17:19:08 GMT (envelope-from trasz@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.14.2/8.14.1/Submit) id m79HJ892022731 for perforce@freebsd.org; Sat, 9 Aug 2008 17:19:08 GMT (envelope-from trasz@freebsd.org) Date: Sat, 9 Aug 2008 17:19:08 GMT Message-Id: <200808091719.m79HJ892022731@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to trasz@freebsd.org using -f From: Edward Tomasz Napierala To: Perforce Change Reviews Cc: Subject: PERFORCE change 146998 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 09 Aug 2008 17:19:09 -0000 http://perforce.freebsd.org/chv.cgi?CH=146998 Change 146998 by trasz@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 +#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);