/***********************************************************************1* *2* This software is part of the ast package *3* Copyright (c) 1989-2011 AT&T Intellectual Property *4* and is licensed under the *5* Eclipse Public License, Version 1.0 *6* by AT&T Intellectual Property *7* *8* A copy of the License is available at *9* http://www.eclipse.org/org/documents/epl-v10.html *10* (with md5 checksum b35adb5213ca9657e911e9befb180842) *11* *12* Information and Software Systems Research *13* AT&T Research *14* Florham Park NJ *15* *16* Glenn Fowler <[email protected]> *17* David Korn <[email protected]> *18* Eduardo Krell <[email protected]> *19* *20***********************************************************************/21#pragma prototyped2223#include "3d.h"2425#if !defined(ACL3D) || !defined(SETACL)2627#define aclent_t char28#define SETACL 12930#endif3132#define MSG_acl MSG_INIT(MSG_control, 051121, MSG_VAR_FILE)3334int35acl3d(const char* path, int cmd, int cnt, aclent_t* buf)36{37register char* sp;38register int r;3940#if FS41register Mount_t* mp;4243if (!fscall(NiL, MSG_acl, 0, path, cmd, cnt, buf))44return state.ret;45mp = monitored();46#endif47if (!(sp = pathreal(path, cmd == SETACL ? (state.safe ? (P_SAFE|P_TOP) : P_TOP) : 0, NiL)))48return -1;49r = ACL(sp, cmd, cnt, buf);50#if FS51if (r >= 0)52{53if (mp)54fscall(mp, MSG_acl, 0, state.path.name, cmd, cnt, buf);55for (mp = state.global; mp; mp = mp->global)56if (fssys(mp, MSG_acl))57fscall(mp, MSG_acl, 0, state.path.name, cmd, cnt, buf);58}59#endif60return r;61}626364