r25041: Use context in more places, fix warnings.
[kai/samba.git] / source4 / param / loadparm.h
index 217955d29477d401f6217d7b8d14e4e1ab56d70c..d74f70aef02d45316f35ca82e0c6be7569c9ecee 100644 (file)
@@ -15,7 +15,7 @@
    
    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
-   the Free Software Foundation; either version 2 of the License, or
+   the Free Software Foundation; either version 3 of the License, or
    (at your option) any later version.
    
    This program is distributed in the hope that it will be useful,
    GNU General Public License for more details.
    
    You should have received a copy of the GNU General Public License
-   along with this program; if not, write to the Free Software
-   Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+   along with this program.  If not, see <http://www.gnu.org/licenses/>.
 */
 
 /* the following are used by loadparm for option lists */
 typedef enum {
-       P_BOOL,P_INTEGER,P_LIST,P_STRING,P_USTRING,P_ENUM,P_SEP
+       P_BOOL,P_INTEGER,P_OCTAL,P_BYTES,P_LIST,P_STRING,P_USTRING,P_ENUM,P_SEP
 } parm_type;
 
 typedef enum {
@@ -42,19 +41,43 @@ struct enum_list {
        const char *name;
 };
 
+struct loadparm_context;
+
 struct parm_struct {
        const char *label;
        parm_type type;
        parm_class class;
        void *ptr;
-       BOOL (*special)(const char *, char **);
+       bool (*special)(struct loadparm_context *, const char *, char **);
        const struct enum_list *enum_list;
-       uint_t flags;
+       unsigned int flags;
        union {
-               BOOL bvalue;
+               int bvalue;
                int ivalue;
                char *svalue;
                char cvalue;
                const char **lvalue;
        } def;
 };
+
+#define FLAG_BASIC     0x0001 /* fundamental options */
+#define FLAG_SHARE     0x0002 /* file sharing options */
+#define FLAG_PRINT     0x0004 /* printing options */
+#define FLAG_GLOBAL    0x0008 /* local options that should be globally settable in SWAT */
+#define FLAG_WIZARD    0x0010 /* Parameters that the wizard will operate on */
+#define FLAG_ADVANCED  0x0020 /* Parameters that the wizard will operate on */
+#define FLAG_DEVELOPER         0x0040 /* Parameters that the wizard will operate on */
+#define FLAG_DEPRECATED 0x1000 /* options that should no longer be used */
+#define FLAG_HIDE      0x2000 /* options that should be hidden in SWAT */
+#define FLAG_DEFAULT    0x4000 /* this option was a default */
+#define FLAG_CMDLINE    0x8000 /* this option was set from the command line */
+
+#ifndef PRINTERS_NAME
+#define PRINTERS_NAME "printers"
+#endif
+
+#ifndef HOMES_NAME
+#define HOMES_NAME "homes"
+#endif
+
+