stop touching the wrong stamp filename after configuring
[debian/sudo] / defaults.h
1 /*
2  * Copyright (c) 1999-2005, 2008, 2010
3  *      Todd C. Miller <Todd.Miller@courtesan.com>
4  *
5  * Permission to use, copy, modify, and distribute this software for any
6  * purpose with or without fee is hereby granted, provided that the above
7  * copyright notice and this permission notice appear in all copies.
8  *
9  * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
10  * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
11  * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
12  * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
13  * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
14  * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
15  * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
16  *
17  * Sponsored in part by the Defense Advanced Research Projects
18  * Agency (DARPA) and Air Force Research Laboratory, Air Force
19  * Materiel Command, USAF, under agreement number F39502-99-1-0512.
20  */
21
22 #ifndef _SUDO_DEFAULTS_H
23 #define _SUDO_DEFAULTS_H
24
25 #include <def_data.h>
26
27 struct list_member {
28     char *value;
29     struct list_member *next;
30 };
31
32 struct def_values {
33     char *sval;         /* string value */
34     int ival;           /* actually an enum */
35 };
36
37 enum list_ops {
38     add,
39     delete,
40     freeall
41 };
42
43 /*
44  * Structure describing compile-time and run-time options.
45  */
46 struct sudo_defs_types {
47     char *name;
48     int type;
49     char *desc;
50     struct def_values *values;
51     int (*callback) __P((char *));
52     union {
53         int flag;
54         int ival;
55         double fval;
56         enum def_tupple tuple;
57         char *str;
58         mode_t mode;
59         struct list_member *list;
60     } sd_un;
61 };
62
63 /*
64  * Four types of defaults: strings, integers, and flags.
65  * Also, T_INT, T_FLOAT or T_STR may be ANDed with T_BOOL to indicate that
66  * a value is not required.  Flags are boolean by nature...
67  */
68 #undef T_INT
69 #define T_INT           0x001
70 #undef T_UINT
71 #define T_UINT          0x002
72 #undef T_STR
73 #define T_STR           0x003
74 #undef T_FLAG
75 #define T_FLAG          0x004
76 #undef T_MODE
77 #define T_MODE          0x005
78 #undef T_LIST
79 #define T_LIST          0x006
80 #undef T_LOGFAC
81 #define T_LOGFAC        0x007
82 #undef T_LOGPRI
83 #define T_LOGPRI        0x008
84 #undef T_TUPLE
85 #define T_TUPLE         0x009
86 #undef T_FLOAT
87 #define T_FLOAT         0x010
88 #undef T_MASK
89 #define T_MASK          0x0FF
90 #undef T_BOOL
91 #define T_BOOL          0x100
92 #undef T_PATH
93 #define T_PATH          0x200
94
95 /*
96  * Argument to update_defaults()
97  */
98 #define SETDEF_GENERIC  0x01
99 #define SETDEF_HOST     0x02
100 #define SETDEF_USER     0x04
101 #define SETDEF_RUNAS    0x08
102 #define SETDEF_CMND     0x10
103 #define SETDEF_ALL      (SETDEF_GENERIC|SETDEF_HOST|SETDEF_USER|SETDEF_RUNAS|SETDEF_CMND)
104
105 /*
106  * Prototypes
107  */
108 int set_default         __P((char *, char *, int));
109 int update_defaults     __P((int));
110 void dump_default       __P((void));
111 void dump_defaults      __P((void));
112 void init_defaults      __P((void));
113 void list_options       __P((void));
114
115 extern struct sudo_defs_types sudo_defs_table[];
116
117 #endif /* _SUDO_DEFAULTS_H */