acl_entry.c revision 74667
174667Sjedgar/* 274667Sjedgar * Copyright (c) 2001 Chris D. Faulhaber 374667Sjedgar * All rights reserved. 474667Sjedgar * 574667Sjedgar * Redistribution and use in source and binary forms, with or without 674667Sjedgar * modification, are permitted provided that the following conditions 774667Sjedgar * are met: 874667Sjedgar * 1. Redistributions of source code must retain the above copyright 974667Sjedgar * notice, this list of conditions and the following disclaimer. 1074667Sjedgar * 2. Redistributions in binary form must reproduce the above copyright 1174667Sjedgar * notice, this list of conditions and the following disclaimer in the 1274667Sjedgar * documentation and/or other materials provided with the distribution. 1374667Sjedgar * 1474667Sjedgar * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND 1574667Sjedgar * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 1674667Sjedgar * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 1774667Sjedgar * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE 1874667Sjedgar * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 1974667Sjedgar * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 2074667Sjedgar * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 2174667Sjedgar * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 2274667Sjedgar * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 2374667Sjedgar * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 2474667Sjedgar * SUCH DAMAGE. 2574667Sjedgar * 2674667Sjedgar * $FreeBSD: head/lib/libc/posix1e/acl_entry.c 74667 2001-03-22 22:31:01Z jedgar $ 2774667Sjedgar */ 2874667Sjedgar 2974667Sjedgar#include <sys/types.h> 3074667Sjedgar#include <sys/acl.h> 3174667Sjedgar 3274667Sjedgar#include <errno.h> 3374667Sjedgar#include <stdlib.h> 3474667Sjedgar 3574667Sjedgar#define ACL_UNDEFINED_ID -1 3674667Sjedgar#define ACL_UNDEFINED_TAG -1 3774667Sjedgar 3874667Sjedgarint 3974667Sjedgaracl_create_entry(acl_t *acl_p, acl_entry_t *entry_p) 4074667Sjedgar{ 4174667Sjedgar acl_t acl; 4274667Sjedgar struct acl_entry newentry; 4374667Sjedgar 4474667Sjedgar if (!acl_p || !*acl_p || ((*acl_p)->acl_cnt >= ACL_MAX_ENTRIES) || 4574667Sjedgar ((*acl_p)->acl_cnt < 0)) { 4674667Sjedgar errno = EINVAL; 4774667Sjedgar return -1; 4874667Sjedgar } 4974667Sjedgar 5074667Sjedgar entry_p = malloc(sizeof(acl_entry_t)); 5174667Sjedgar if (!entry_p) 5274667Sjedgar return -1; 5374667Sjedgar *entry_p = malloc(sizeof(struct acl_entry)); 5474667Sjedgar if (!*entry_p) 5574667Sjedgar return -1; 5674667Sjedgar 5774667Sjedgar acl = *acl_p; 5874667Sjedgar 5974667Sjedgar **entry_p = acl->acl_entry[acl->acl_cnt]; 6074667Sjedgar 6174667Sjedgar (**entry_p).ae_tag = ACL_UNDEFINED_TAG; 6274667Sjedgar (**entry_p).ae_id = ACL_UNDEFINED_ID; 6374667Sjedgar (**entry_p).ae_perm = ACL_PERM_NONE; 6474667Sjedgar 6574667Sjedgar acl->acl_entry[acl->acl_cnt] = newentry; 6674667Sjedgar acl->acl_cnt++; 6774667Sjedgar 6874667Sjedgar **entry_p = newentry; 6974667Sjedgar 7074667Sjedgar /* XXX - ok? */ 7174667Sjedgar free(*entry_p); 7274667Sjedgar free(entry_p); 7374667Sjedgar 7474667Sjedgar return 0; 7574667Sjedgar} 7674667Sjedgar 7774667Sjedgarint 7874667Sjedgaracl_get_entry(acl_t acl, int entry_id, acl_entry_t *entry_p) 7974667Sjedgar{ 8074667Sjedgar 8174667Sjedgar errno = ENOSYS; 8274667Sjedgar return -1; 8374667Sjedgar} 84