From 51ada4fda2b47710351e6e4da8a95807d6d9f729 Mon Sep 17 00:00:00 2001 From: Lars Hjemli Date: Mon, 11 Dec 2006 16:11:40 +0100 Subject: Rename config.c to parsing.c + move cgit_parse_query from cgit.c to parsing.c Signed-off-by: Lars Hjemli --- parsing.c | 106 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 106 insertions(+) create mode 100644 parsing.c (limited to 'parsing.c') diff --git a/parsing.c b/parsing.c new file mode 100644 index 0000000..98b3243 --- /dev/null +++ b/parsing.c @@ -0,0 +1,106 @@ +/* config.c: parsing of config files + * + * Copyright (C) 2006 Lars Hjemli + * + * Licensed under GNU General Public License v2 + * (see COPYING for full license text) + */ + +#include "cgit.h" + +int next_char(FILE *f) +{ + int c = fgetc(f); + if (c=='\r') { + c = fgetc(f); + if (c!='\n') { + ungetc(c, f); + c = '\r'; + } + } + return c; +} + +void skip_line(FILE *f) +{ + int c; + + while((c=next_char(f)) && c!='\n' && c!=EOF) + ; +} + +int read_config_line(FILE *f, char *line, const char **value, int bufsize) +{ + int i = 0, isname = 0; + + *value = NULL; + while(i 0) + (*fn)(line, value); + + fclose(f); + return ret; +} + +int cgit_parse_query(char *txt, configfn fn) +{ + char *t, *value = NULL, c; + + if (!txt) + return 0; + + t = txt = xstrdup(txt); + + while((c=*t) != '\0') { + if (c=='=') { + *t = '\0'; + value = t+1; + } else if (c=='&') { + *t = '\0'; + (*fn)(txt, value); + txt = t+1; + value = NULL; + } + t++; + } + if (t!=txt) + (*fn)(txt, value); + return 0; +} -- cgit v1.2.3-59-g8ed1b