Author: Lars Hjemli <hjemli@gmail.com>
Rename config.c to parsing.c + move cgit_parse_query from cgit.c to parsing.c Signed-off-by: Lars Hjemli <hjemli@gmail.com>
Makefile | 5 +++-- cgit.c | 26 -------------------------- cgit.h | 1 + | 25 +++++++++++++++++++++++++
diff --git a/Makefile b/Makefile index c71e39cb66413ebfb16341a1d8d2f3682e8599ed..eab7926e5676c86a776bc4d6fe567f38778501c6 100644 --- a/Makefile +++ b/Makefile @@ -5,7 +5,7 @@ INSTALL_CSS = /var/www/htdocs/cgit.css CACHE_ROOT = /var/cache/cgit EXTLIBS = ../git/libgit.a ../git/xdiff/lib.a -lz -lcrypto -OBJECTS = config.o html.o cache.o +OBJECTS = parsing.o html.o cache.o CFLAGS += -Wall @@ -17,7 +17,8 @@ install cgit.css $(INSTALL_CSS) rm -rf $(CACHE_ROOT)/* cgit: cgit.c cgit.h git.h $(OBJECTS) - $(CC) $(CFLAGS) -DCGIT_VERSION='"$(CGIT_VERSION)"' cgit.c -o cgit $(OBJECTS) $(EXTLIBS) + $(CC) $(CFLAGS) -DCGIT_VERSION='"$(CGIT_VERSION)"' cgit.c -o cgit \ + $(OBJECTS) $(EXTLIBS) $(OBJECTS): cgit.h git.h diff --git a/cgit.c b/cgit.c index dc911257afdbc3350e69f124f2b725b656e912d3..5567859c0e01f310c960de8c119526ff1ba5ceb5 100644 --- a/cgit.c +++ b/cgit.c @@ -53,32 +53,6 @@ char *cgit_query_sha1 = NULL; struct cacheitem cacheitem; -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; -} - void cgit_global_config_cb(const char *name, const char *value) { if (!strcmp(name, "root")) diff --git a/cgit.h b/cgit.h index 7e4bfeff219442d64d6876a77a8fa855c376b38c..6c0aa3bd0d05f97312ed6ac9f95927e2f87cb3f8 100644 --- a/cgit.h +++ b/cgit.h @@ -56,6 +56,7 @@ extern void html_link_close(void); extern int cgit_read_config(const char *filename, configfn fn); +extern int cgit_parse_query(char *txt, configfn fn); extern void cache_prepare(struct cacheitem *item); extern int cache_lock(struct cacheitem *item); diff --git a/config.c b/config.c deleted file mode 100644 index 871edf228f2088ef980c0dc2f2e68d83b27ab395..0000000000000000000000000000000000000000 --- a/config.c +++ /dev/null @@ -1,81 +0,0 @@ -/* 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<bufsize-1) { - int c = next_char(f); - if (!isname && (c=='#' || c==';')) { - skip_line(f); - continue; - } - if (!isname && isspace(c)) - continue; - - if (c=='=' && !*value) { - line[i] = 0; - *value = &line[i+1]; - } else if (c=='\n' && !isname) { - i = 0; - continue; - } else if (c=='\n' || c==EOF) { - line[i] = 0; - break; - } else { - line[i]=c; - } - isname = 1; - i++; - } - line[i+1] = 0; - return i; -} - -int cgit_read_config(const char *filename, configfn fn) -{ - int ret = 0, len; - char line[256]; - const char *value; - FILE *f = fopen(filename, "r"); - - if (!f) - return -1; - - while((len = read_config_line(f, line, &value, sizeof(line))) > 0) - (*fn)(line, value); - - fclose(f); - return ret; -} - diff --git a/parsing.c b/parsing.c new file mode 100644 index 0000000000000000000000000000000000000000..98b32434b6157bffce33ae47f664c6a43e8f1a8b --- /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<bufsize-1) { + int c = next_char(f); + if (!isname && (c=='#' || c==';')) { + skip_line(f); + continue; + } + if (!isname && isspace(c)) + continue; + + if (c=='=' && !*value) { + line[i] = 0; + *value = &line[i+1]; + } else if (c=='\n' && !isname) { + i = 0; + continue; + } else if (c=='\n' || c==EOF) { + line[i] = 0; + break; + } else { + line[i]=c; + } + isname = 1; + i++; + } + line[i+1] = 0; + return i; +} + +int cgit_read_config(const char *filename, configfn fn) +{ + int ret = 0, len; + char line[256]; + const char *value; + FILE *f = fopen(filename, "r"); + + if (!f) + return -1; + + while((len = read_config_line(f, line, &value, sizeof(line))) > 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; +}