diff options
Diffstat (limited to 'openbox/cparse.l')
| -rw-r--r-- | openbox/cparse.l | 124 |
1 files changed, 0 insertions, 124 deletions
diff --git a/openbox/cparse.l b/openbox/cparse.l deleted file mode 100644 index 70524007..00000000 --- a/openbox/cparse.l +++ /dev/null @@ -1,124 +0,0 @@ -%{ -#include <glib.h> -#include "config.h" - -static char *filename; -static int lineno = 1; -static gboolean haserror = FALSE; -static gboolean comment = FALSE; -static ConfigEntry entry = { NULL, -1 }; - -static void stringvalue(); -static void numbervalue(); -static void boolvalue(); -static void identifier(); -static void newline(); -static int cparsewrap(); -%} - -number [0-9]+ -string \"[^"\n]*\" -identifier [a-zA-Z][a-zA-Z0-9_.]* -white [ \t]* -assign {white}={white} -bool ([tT][rR][uU][eE]|[fF][aA][lL][sS][eE]|[yY][eE][sS]|[nN][oO]|[oO][nN]|[oO][fF][fF]) - -%% - -^{white}# comment = TRUE; -{bool}/{white}\n boolvalue(); -{string}/{white}\n stringvalue(); -{number}/{white}\n numbervalue(); -^{identifier}/{assign} identifier(); -\n newline(); -= -[ \t] -. if (!comment) haserror = TRUE; - -%% - -static void stringvalue() -{ - if (!comment) { - if (!haserror && entry.name != NULL && (signed)entry.type < 0) { - entry.type = Config_String; - entry.value.string = g_strdup(cparsetext+1); /* drop the left quote */ - if (entry.value.string[cparseleng-2] != '"') - g_warning("improperly terminated string on line %d", - lineno); - else - entry.value.string[cparseleng-2] = '\0'; - } else - haserror = TRUE; - } -} - -static void numbervalue() -{ - if (!comment) { - if (!haserror && entry.name != NULL && (signed)entry.type < 0) { - entry.type = Config_Integer; - entry.value.integer = atoi(cparsetext); - } else - haserror = TRUE; - } -} - -static void boolvalue() -{ - if (!comment) { - if (!haserror && entry.name != NULL && (signed)entry.type < 0) { - entry.type = Config_Bool; - entry.value.bool = (!g_ascii_strcasecmp("true", cparsetext) || - !g_ascii_strcasecmp("yes", cparsetext) || - !g_ascii_strcasecmp("on", cparsetext)); - } else - haserror = TRUE; - } -} - -static void identifier() -{ - if (!comment) { - entry.name = g_strdup(cparsetext); - entry.type = -1; - } -} - -static void newline() -{ - if (!comment) { - if (!haserror && entry.name != NULL && (signed)entry.type >= 0) { - if (!config_set(entry.name, entry.type, entry.value)) - g_warning("Parser error in '%s' on line %d\n", filename, - lineno); - } else if (haserror || entry.name != NULL || (signed)entry.type >= 0) { - g_warning("Parser error in '%s' on line %d", filename, lineno); - } - g_free(entry.name); - entry.name = NULL; - if (entry.type == Config_String) - g_free(entry.value.string); - entry.type = -1; - - haserror = FALSE; - } - comment = FALSE; - ++lineno; -} - -static int cparsewrap() -{ - g_free(entry.name); - entry.name = NULL; - if (entry.type == Config_String) - g_free(entry.value.string); - return 1; -} - -void cparse_go(char *fname, FILE *file) -{ - filename = fname; - cparsein = file; - cparselex(); -} |
