First phase of multifilesystem enhancement
[captive.git] / src / libcaptive / include / captive / options.h
diff --git a/src/libcaptive/include/captive/options.h b/src/libcaptive/include/captive/options.h
new file mode 100644 (file)
index 0000000..41c1e15
--- /dev/null
@@ -0,0 +1,74 @@
+/* $Id$
+ * Include file with captive_options definition of libcaptive
+ * Copyright (C) 2003 Jan Kratochvil <project-captive@jankratochvil.net>
+ * 
+ * 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; exactly version 2 of June 1991 is required
+ * 
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * 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., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ */
+
+
+#ifndef _CAPTIVE_CLIENT_OPTIONS_H
+#define _CAPTIVE_CLIENT_OPTIONS_H 1
+
+
+#include <glib/gtypes.h>
+#include <glib/giochannel.h>
+#include <popt.h>
+#include <glib/glist.h>
+
+
+G_BEGIN_DECLS
+
+extern const struct poptOption captive_popt[];
+#define CAPTIVE_POPT_INCLUDE \
+               { NULL,'\0',POPT_ARG_INCLUDE_TABLE,(struct poptOption *)&captive_popt,0,"Captive" }
+
+
+enum captive_option_rwmode {
+       CAPTIVE_OPTION_RWMODE_RO,
+       CAPTIVE_OPTION_RWMODE_BLIND,
+       CAPTIVE_OPTION_RWMODE_RW,
+       };
+
+enum captive_option_media {
+       CAPTIVE_OPTION_MEDIA_CDROM,
+       CAPTIVE_OPTION_MEDIA_DISK,
+       };
+
+struct captive_options {
+       gchar *filesystem;
+       enum captive_option_rwmode rwmode;
+       enum captive_option_media media;
+       gboolean debug_messages;
+       GIOChannel *image_iochannel;
+       GList *load_module;     /* of 'gchar *' */
+       };
+
+/**
+ * captive_options:
+ * Current options set in one CORBA sandboxed child.
+ * It is also set when run in non-CORBA debugging mode.
+ * Set to %NULL in the CORBA master process.
+ */
+extern struct captive_options *captive_options;
+
+/* Functions handle just the fields, not the structure itself. */
+void captive_options_init(struct captive_options *options);
+void captive_options_copy(struct captive_options *dest,const struct captive_options *src);
+void captive_options_free(struct captive_options *options);
+gboolean captive_options_parse(struct captive_options *options,const gchar *captive_args);
+
+G_END_DECLS
+
+
+#endif /* _CAPTIVE_CLIENT_OPTIONS_H */