add start on config parser files
authorHavoc Pennington <hp@redhat.com>
Tue, 25 Mar 2003 04:45:25 +0000 (04:45 +0000)
committerHavoc Pennington <hp@redhat.com>
Tue, 25 Mar 2003 04:45:25 +0000 (04:45 +0000)
bus/config-parser.c [new file with mode: 0644]
bus/config-parser.h [new file with mode: 0644]

diff --git a/bus/config-parser.c b/bus/config-parser.c
new file mode 100644 (file)
index 0000000..26e52a8
--- /dev/null
@@ -0,0 +1,170 @@
+/* -*- mode: C; c-file-style: "gnu" -*- */
+/* config-parser.c  XML-library-agnostic configuration file parser
+ *
+ * Copyright (C) 2003 Red Hat, Inc.
+ *
+ * Licensed under the Academic Free License version 1.2
+ * 
+ * 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
+ * (at your option) any later version.
+ *
+ * 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
+ *
+ */
+
+#include "config-parser.h"
+#include <string.h>
+
+typedef enum
+{
+  ELEMENT_BUSCONFIG,
+  ELEMENT_INCLUDE,
+  ELEMENT_USER,
+  ELEMENT_LISTEN,
+  ELEMENT_AUTH,
+  ELEMENT_POLICY,
+  ELEMENT_LIMIT
+} ElementType;
+
+typedef struct
+{
+  ElementType type;
+
+  union
+  {
+    struct
+    {
+      BusConfigParser *parser;
+    } include;
+
+    struct
+    {
+      char *username;
+    } user;
+
+    struct
+    {
+      char *address;
+    } listen;
+
+    struct
+    {
+      char *mechanism;
+    } auth;
+
+    struct
+    {
+      char *context;
+      char *user;
+      char *group;
+      DBusList *rules;
+    } policy;
+
+    struct
+    {
+      int foo;
+    } limit;
+    
+  } d;
+  
+} Element;
+
+struct BusConfigParser
+{
+  int refcount;
+
+  DBusList *stack;
+};
+
+BusConfigParser*
+bus_config_parser_new (void)
+{
+  BusConfigParser *parser;
+
+  parser = dbus_new0 (BusConfigParser, 1);
+  if (parser == NULL)
+    return NULL;
+
+  parser->refcount = 1;
+
+  return parser;
+}
+
+void
+bus_config_parser_ref (BusConfigParser *parser)
+{
+  _dbus_assert (parser->refcount > 0);
+
+  parser->refcount += 1;
+}
+
+void
+bus_config_parser_unref (BusConfigParser *parser)
+{
+  _dbus_assert (parser->refcount > 0);
+
+  parser->refcount -= 1;
+
+  if (parser->refcount == 0)
+    {
+
+
+      dbus_free (parser);
+    }
+}
+
+dbus_bool_t
+bus_config_parser_check_doctype (BusConfigParser   *parser,
+                                 const char        *doctype,
+                                 DBusError         *error)
+{
+  if (strcmp (doctype, "busconfig") != 0)
+    {
+      dbus_set_error (error,
+                      DBUS_ERROR_FAILED,
+                      "Document has the wrong type %s",
+                      doctype);
+      return FALSE;
+    }
+  else
+    return TRUE;
+}
+
+dbus_bool_t
+bus_config_parser_start_element (BusConfigParser   *parser,
+                                 const char        *element_name,
+                                 const char       **attribute_names,
+                                 const char       **attribute_values,
+                                 DBusError         *error)
+{
+  
+
+}
+
+dbus_bool_t
+bus_config_parser_end_element (BusConfigParser   *parser,
+                               const char        *element_name,
+                               DBusError         *error)
+{
+  
+
+}
+
+dbus_bool_t
+bus_config_parser_content (BusConfigParser   *parser,
+                           const DBusString  *content,
+                           DBusError         *error)
+{
+  
+
+}
+
diff --git a/bus/config-parser.h b/bus/config-parser.h
new file mode 100644 (file)
index 0000000..371a658
--- /dev/null
@@ -0,0 +1,55 @@
+/* -*- mode: C; c-file-style: "gnu" -*- */
+/* config-parser.h  XML-library-agnostic configuration file parser
+ *
+ * Copyright (C) 2003 Red Hat, Inc.
+ *
+ * Licensed under the Academic Free License version 1.2
+ * 
+ * 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
+ * (at your option) any later version.
+ *
+ * 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 BUS_CONFIG_PARSER_H
+#define BUS_CONFIG_PARSER_H
+
+#include <config.h>
+
+#include <dbus/dbus.h>
+#include <dbus/dbus-string.h>
+
+/* Whatever XML library we're using just pushes data into this API */
+
+typedef struct BusConfigParser BusConfigParser;
+
+BusConfigParser* bus_config_parser_new           (void);
+void             bus_config_parser_ref           (BusConfigParser   *parser);
+void             bus_config_parser_unref         (BusConfigParser   *parser);
+dbus_bool_t      bus_config_parser_check_doctype (BusConfigParser   *parser,
+                                                  const char        *doctype,
+                                                  DBusError         *error);
+dbus_bool_t      bus_config_parser_start_element (BusConfigParser   *parser,
+                                                  const char        *element_name,
+                                                  const char       **attribute_names,
+                                                  const char       **attribute_values,
+                                                  DBusError         *error);
+dbus_bool_t      bus_config_parser_end_element   (BusConfigParser   *parser,
+                                                  const char        *element_name,
+                                                  DBusError         *error);
+dbus_bool_t      bus_config_parser_content       (BusConfigParser   *parser,
+                                                  const DBusString  *content,
+                                                  DBusError         *error);
+
+
+#endif /* BUS_CONFIG_PARSER_H */