Ticket #280: diff

File diff, 3.3 KB (added by Gerritv, 13 years ago)
  • xmlconfig.c

     
    1717 * Boston, MA  02110-1301, USA.
    1818 */
    1919
     20/* see http://library.gnome.org/devel/glib/stable/glib-Simple-XML-Subset-Parser.html
     21 * for details on how the xml file parser works.
     22 */
     23
    2024#include <glib.h>
    2125#include <glib/gprintf.h>
    2226#include <string.h>
    2327#include "debug.h"
     28#include "config.h"
    2429#include "file.h"
    2530#include "coord.h"
    2631#include "layout.h"
     
    4146#include "log.h"
    4247#include "cursor.h"
    4348#include "xmlconfig.h"
    44 #include "config.h"
    4549
    4650#ifdef HAVE_GLIB
    4751#define ATTR_DISTANCE 1
     
    163167        return 0;
    164168}
    165169
     170/**
     171 * * Convert a string number to int
     172 * *
     173 * * @param val the string value to convert
     174 * * @returns int value of converted string
     175 * */
    166176static int
    167177convert_number(const char *val)
    168178{
     
    239249        g_free(type_str);
    240250        return 1;
    241251}
     252/**
     253 * * Define the elements in our config
     254 * *
     255 * */
    242256
    243257#define NEW(x) (void *(*)(struct attr *, struct attr **))(x)
    244258#define ADD(x) (int (*)(void *, struct attr *attr))(x)
     
    322336        "label","text",
    323337        NULL,NULL,
    324338};
     339/**
     340 * * Parse the opening tag of a config element
     341 * *
     342 * * @param context document parse context
     343 * * @param element_name the current tag name
     344 * * @param attribute_names ptr to return the set of attribute names
     345 * * @param attribute_values ptr return the set of attribute values
     346 * * @param user_data ptr to xmlstate structure
     347 * * @param error ptr return error context
     348 * * @returns nothing
     349 * */
    325350
    326351static void
    327352start_element(GMarkupParseContext *context,
     
    341366        char *s,*sep="",*possible_parents;
    342367        dbg(2,"name='%s' parent='%s'\n", element_name, *parent ? (*parent)->element:NULL);
    343368
     369        /* determine if we have to fix any attributes */
    344370        while (attr_fixme[0].element) {
    345371                if (!strcmp(element_name,attr_fixme[0].element))
    346372                        break;
     
    349375        if (!attr_fixme[0].element)
    350376                attr_fixme=NULL;
    351377       
     378        /* tell user to fix  deprecated element names */
    352379        while (element_fixme[0]) {
    353380                if (!strcmp(element_name,element_fixme[0])) {
    354381                        element_name=element_fixme[1];
     
    357384                }
    358385                element_fixme+=2;
    359386        }
     387        /* validate that this element is valid
     388         * and that the element has a valid parent */
    360389        possible_parents=g_strdup("");
    361390        if (*parent)
    362391                parent_name=(*parent)->element;
     
    695724        }
    696725               
    697726}
     727/**
     728 * * Reached closing tag of a config element
     729 * *
     730 * * @param context
     731 * * @param element name
     732 * * @param user_data ptr to xmldocument
     733 * * @param error ptr to struct for error information
     734 * * @returns nothing
     735 * */
    698736
    699737static void
    700738xi_end_element (GMarkupParseContext *context,
     
    748786        NULL,
    749787        NULL
    750788};
     789/**
     790 * * Parse the contents of the configuration file
     791 * *
     792 * * @param document struct holding info  about the config file
     793 * * @param error info on any errors detected
     794 * * @returns boolean TRUE or FALSE
     795 * */
    751796
    752797static gboolean
    753798parse_file(struct xmldocument *document, xmlerror **error)
     
    819864}
    820865#endif
    821866
     867/**
     868 * * Load and parse the master config file
     869 * *
     870 * * @param filename FQFN of the file
     871 * * @param error ptr to error details, if any
     872 * * @returns boolean TRUE or FALSE (if error detected)
     873 * */
     874
    822875gboolean config_load(const char *filename, xmlerror **error)
    823876{
    824877        struct xmldocument document;