+void menu_parse()
+{
+ ObParseInst *i;
+ xmlDocPtr doc;
+ xmlNodePtr node;
+ gchar *p;
+ gboolean loaded = FALSE;
+
+ i = parse_startup();
+
+ if (config_menu_path)
+ if (!(loaded =
+ parse_load(config_menu_path, "openbox_menu", &doc, &node)))
+ g_warning("Failed to load menu from '%s'", config_menu_path);
+ if (!loaded) {
+ p = g_build_filename(g_get_home_dir(), ".openbox", "menu", NULL);
+ if (!(loaded =
+ parse_load(p, "openbox_menu", &doc, &node)))
+ g_warning("Failed to load menu from '%s'", p);
+ g_free(p);
+ }
+ if (!loaded) {
+ p = g_build_filename(RCDIR, "menu", NULL);
+ if (!(loaded =
+ parse_load(p, "openbox_menu", &doc, &node)))
+ g_warning("Failed to load menu from '%s'", p);
+ g_free(p);
+ }
+
+ if (loaded) {
+ parse_register(i, "menu", parse_menu, NULL);
+ parse_tree(i, doc, node->xmlChildrenNode);
+ }
+
+ parse_shutdown(i);
+}
+