chiark / gitweb /
chkpath.c, tmpdir.c, utils.c: Add option to trust private groups.
[checkpath] / utils.h
1 /* -*-c-*-
2  *
3  * Utilities not worth librarifying
4  *
5  * (c) 2008 Mark Wooding
6  */
7
8 /*----- Licensing notice --------------------------------------------------*
9  *
10  * This file is part of chkpath.
11  *
12  * chkpath is free software; you can redistribute it and/or modify
13  * it under the terms of the GNU General Public License as published by
14  * the Free Software Foundation; either version 2 of the License, or
15  * (at your option) any later version.
16  *
17  * chkpath is distributed in the hope that it will be useful,
18  * but WITHOUT ANY WARRANTY; without even the implied warranty of
19  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
20  * GNU General Public License for more details.
21  *
22  * You should have received a copy of the GNU General Public License
23  * along with chkpath; if not, write to the Free Software Foundation,
24  * Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
25  */
26
27 #ifndef UTILS_H
28 #define UTILS_H
29
30 #ifdef __cplusplus
31   extern "C" {
32 #endif
33
34 /*----- Header files ------------------------------------------------------*/
35
36 #include "checkpath.h"
37
38 /*----- Functions provided ------------------------------------------------*/
39
40 /* --- @allowgroup@ --- *
41  *
42  * Arguments:   @struct checkpath *cp@ = pointer to structure to mess with
43  *              @const char *gname@ = trust group @gname@
44  *
45  *
46  * Returns:     ---
47  *
48  * Use:         Adds the gid corresponding to @gname@ (which may be a number)
49  *              to the list of things we trust.
50  */
51
52 extern void allowgroup(struct checkpath */*cp*/, const char */*gname*/);
53
54 /* --- @private_group@ --- *
55  *
56  * Arguments:   @gid_t *gid_out@ = where to put the group id
57  *              @int verbose@ = verbosity level
58  *
59  * Returns:     Zero on success, %$-1$% if the user's group is not private.
60  *
61  * Use:         If the user's primary group has no other configured members,
62  *              then set @*gid_out@ to its gid and return zero.  Otherwise,
63  *              report a message if the verbosity level is sufficiently high,
64  *              and return %$-1$%,
65  */
66
67 extern int private_group(gid_t */*gid_out*/, int /*verbose*/);
68
69 /*----- That's all, folks -------------------------------------------------*/
70
71 #ifdef __cplusplus
72   }
73 #endif
74
75 #endif