neocgit

a more 'modern' version of cgit
Log | Files | Refs | Submodules | README | LICENSE | git clone https://git.ne02ptzero.me/git/neocgit

commit 51ada4fda2b47710351e6e4da8a95807d6d9f729
parent 318d106300102c19d114a4ea89265b0a4060d9cb
Author: Lars Hjemli <hjemli@gmail.com>
Date:   Mon, 11 Dec 2006 16:11:40 +0100

Rename config.c to parsing.c + move cgit_parse_query from cgit.c to parsing.c

Signed-off-by: Lars Hjemli <hjemli@gmail.com>

Diffstat:
MMakefile | 5+++--
Mcgit.c | 26--------------------------
Mcgit.h | 1+
Dconfig.c | 81-------------------------------------------------------------------------------
Aparsing.c | 106+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
5 files changed, 110 insertions(+), 109 deletions(-)

diff --git 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: all 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 @@ -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 @@ -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 @@ -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 @@ -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; +}