diff options
Diffstat (limited to 'src/cmd/venti/config.c')
-rw-r--r-- | src/cmd/venti/config.c | 144 |
1 files changed, 0 insertions, 144 deletions
diff --git a/src/cmd/venti/config.c b/src/cmd/venti/config.c deleted file mode 100644 index cdcaad10..00000000 --- a/src/cmd/venti/config.c +++ /dev/null @@ -1,144 +0,0 @@ -#include "stdinc.h" -#include "dat.h" -#include "fns.h" - -Index *mainindex; -int paranoid = 1; /* should verify hashes on disk read */ - -static ArenaPart *configarenas(char *file); -static ISect *configisect(char *file); - -int -initventi(char *file) -{ - Config conf; - - fmtinstall('V', vtscorefmt); - - statsinit(); - - if(file == nil){ - seterr(EOk, "no configuration file"); - return -1; - } - if(runconfig(file, &conf) < 0){ - seterr(EOk, "can't initialize venti: %r"); - return -1; - } - mainindex = initindex(conf.index, conf.sects, conf.nsects); - if(mainindex == nil) - return -1; - return 0; -} - -/* - * configs : - * | configs config - * config : "isect" filename - * | "arenas" filename - * | "index" name - * - * '#' and \n are comments - */ -enum -{ - MaxArgs = 2 -}; -int -runconfig(char *file, Config *config) -{ - ArenaPart **av; - ISect **sv; - IFile f; - char *s, *line, *flds[MaxArgs + 1]; - int i, ok; - - if(readifile(&f, file) < 0) - return -1; - config->index = nil; - config->naparts = 0; - config->aparts = nil; - config->nsects = 0; - config->sects = nil; - ok = -1; - line = nil; - for(;;){ - s = ifileline(&f); - if(s == nil){ - ok = 0; - break; - } - line = estrdup(s); - i = getfields(s, flds, MaxArgs + 1, 1, " \t\r"); - if(i == 2 && strcmp(flds[0], "isect") == 0){ - sv = MKN(ISect*, config->nsects + 1); - for(i = 0; i < config->nsects; i++) - sv[i] = config->sects[i]; - free(config->sects); - config->sects = sv; - config->sects[config->nsects] = configisect(flds[1]); - if(config->sects[config->nsects] == nil) - break; - config->nsects++; - }else if(i == 2 && strcmp(flds[0], "arenas") == 0){ - av = MKN(ArenaPart*, config->naparts + 1); - for(i = 0; i < config->naparts; i++) - av[i] = config->aparts[i]; - free(config->aparts); - config->aparts = av; - config->aparts[config->naparts] = configarenas(flds[1]); - if(config->aparts[config->naparts] == nil) - break; - config->naparts++; - }else if(i == 2 && strcmp(flds[0], "index") == 0){ - if(nameok(flds[1]) < 0){ - seterr(EAdmin, "illegal index name %s in config file %s", flds[1], config); - break; - } - if(config->index != nil){ - seterr(EAdmin, "duplicate indices in config file %s", config); - break; - } - config->index = estrdup(flds[1]); - }else{ - seterr(EAdmin, "illegal line '%s' in configuration file %s", line, config); - break; - } - free(line); - line = nil; - } - free(line); - freeifile(&f); - if(ok < 0){ - free(config->sects); - config->sects = nil; - free(config->aparts); - config->aparts = nil; - } - return ok; -} - -static ISect* -configisect(char *file) -{ - Part *part; - - fprint(2, "configure index section in %s\n", file); - - part = initpart(file, 0); - if(part == nil) - return nil; - return initisect(part); -} - -static ArenaPart* -configarenas(char *file) -{ - Part *part; - - fprint(2, "configure arenas in %s\n", file); - part = initpart(file, 0); - if(part == nil) - return nil; - return initarenapart(part); -} |