16c95142eSMartin Matuska /*- 26c95142eSMartin Matuska * Copyright (c) 2003-2010 Tim Kientzle 36c95142eSMartin Matuska * All rights reserved. 46c95142eSMartin Matuska * 56c95142eSMartin Matuska * Redistribution and use in source and binary forms, with or without 66c95142eSMartin Matuska * modification, are permitted provided that the following conditions 76c95142eSMartin Matuska * are met: 86c95142eSMartin Matuska * 1. Redistributions of source code must retain the above copyright 96c95142eSMartin Matuska * notice, this list of conditions and the following disclaimer. 106c95142eSMartin Matuska * 2. Redistributions in binary form must reproduce the above copyright 116c95142eSMartin Matuska * notice, this list of conditions and the following disclaimer in the 126c95142eSMartin Matuska * documentation and/or other materials provided with the distribution. 136c95142eSMartin Matuska * 146c95142eSMartin Matuska * THIS SOFTWARE IS PROVIDED BY THE AUTHOR(S) ``AS IS'' AND ANY EXPRESS OR 156c95142eSMartin Matuska * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES 166c95142eSMartin Matuska * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 176c95142eSMartin Matuska * IN NO EVENT SHALL THE AUTHOR(S) BE LIABLE FOR ANY DIRECT, INDIRECT, 186c95142eSMartin Matuska * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 196c95142eSMartin Matuska * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 206c95142eSMartin Matuska * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 216c95142eSMartin Matuska * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 226c95142eSMartin Matuska * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 236c95142eSMartin Matuska * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 246c95142eSMartin Matuska */ 256c95142eSMartin Matuska 26f9762417SMartin Matuska #ifndef ARCHIVE_ACL_PRIVATE_H_INCLUDED 27f9762417SMartin Matuska #define ARCHIVE_ACL_PRIVATE_H_INCLUDED 28f9762417SMartin Matuska 296c95142eSMartin Matuska #ifndef __LIBARCHIVE_BUILD 306c95142eSMartin Matuska #error This header is only to be used internally to libarchive. 316c95142eSMartin Matuska #endif 326c95142eSMartin Matuska 336c95142eSMartin Matuska #include "archive_string.h" 346c95142eSMartin Matuska 356c95142eSMartin Matuska struct archive_acl_entry { 366c95142eSMartin Matuska struct archive_acl_entry *next; 376c95142eSMartin Matuska int type; /* E.g., access or default */ 386c95142eSMartin Matuska int tag; /* E.g., user/group/other/mask */ 396c95142eSMartin Matuska int permset; /* r/w/x bits */ 406c95142eSMartin Matuska int id; /* uid/gid for user/group */ 416c95142eSMartin Matuska struct archive_mstring name; /* uname/gname */ 426c95142eSMartin Matuska }; 436c95142eSMartin Matuska 446c95142eSMartin Matuska struct archive_acl { 456c95142eSMartin Matuska mode_t mode; 466c95142eSMartin Matuska struct archive_acl_entry *acl_head; 476c95142eSMartin Matuska struct archive_acl_entry *acl_p; 486c95142eSMartin Matuska int acl_state; /* See acl_next for details. */ 496c95142eSMartin Matuska wchar_t *acl_text_w; 506c95142eSMartin Matuska char *acl_text; 516c95142eSMartin Matuska int acl_types; 526c95142eSMartin Matuska }; 536c95142eSMartin Matuska 546c95142eSMartin Matuska void archive_acl_clear(struct archive_acl *); 556c95142eSMartin Matuska void archive_acl_copy(struct archive_acl *, struct archive_acl *); 566c95142eSMartin Matuska int archive_acl_count(struct archive_acl *, int); 579f3de9e2SMartin Matuska int archive_acl_types(struct archive_acl *); 586c95142eSMartin Matuska int archive_acl_reset(struct archive_acl *, int); 596c95142eSMartin Matuska int archive_acl_next(struct archive *, struct archive_acl *, int, 606c95142eSMartin Matuska int *, int *, int *, int *, const char **); 616c95142eSMartin Matuska 626c95142eSMartin Matuska int archive_acl_add_entry(struct archive_acl *, int, int, int, int, const char *); 636c95142eSMartin Matuska int archive_acl_add_entry_w_len(struct archive_acl *, 646c95142eSMartin Matuska int, int, int, int, const wchar_t *, size_t); 656c95142eSMartin Matuska int archive_acl_add_entry_len(struct archive_acl *, 666c95142eSMartin Matuska int, int, int, int, const char *, size_t); 676c95142eSMartin Matuska 68e9ed7ea4SMartin Matuska wchar_t *archive_acl_to_text_w(struct archive_acl *, ssize_t *, int, 69e9ed7ea4SMartin Matuska struct archive *); 70e9ed7ea4SMartin Matuska char *archive_acl_to_text_l(struct archive_acl *, ssize_t *, int, 716c95142eSMartin Matuska struct archive_string_conv *); 726c95142eSMartin Matuska 736c95142eSMartin Matuska /* 74e9ed7ea4SMartin Matuska * ACL text parser. 756c95142eSMartin Matuska */ 76e9ed7ea4SMartin Matuska int archive_acl_from_text_w(struct archive_acl *, const wchar_t * /* wtext */, 77e9ed7ea4SMartin Matuska int /* type */); 78e9ed7ea4SMartin Matuska int archive_acl_from_text_l(struct archive_acl *, const char * /* text */, 79e9ed7ea4SMartin Matuska int /* type */, struct archive_string_conv *); 80*bd66c1b4SMartin Matuska int archive_acl_from_text_nl(struct archive_acl *, const char * /* text */, 81*bd66c1b4SMartin Matuska size_t /* size of text */, int /* type */, struct archive_string_conv *); 826c95142eSMartin Matuska 836c95142eSMartin Matuska #endif /* ARCHIVE_ENTRY_PRIVATE_H_INCLUDED */ 84