From ec082ae8df9c5bb0339cba1dd125c7a86382b8c4 Mon Sep 17 00:00:00 2001 From: Assar Westerlund Date: Sun, 6 Jul 1997 21:02:47 +0000 Subject: [PATCH] removed git-svn-id: svn://svn.h5l.se/heimdal/trunk/heimdal@1972 ec53bebd-3082-4978-b11e-865c3cabbd6b --- lib/krb5/config_file.y | 283 ----------------------------------------- 1 file changed, 283 deletions(-) delete mode 100644 lib/krb5/config_file.y diff --git a/lib/krb5/config_file.y b/lib/krb5/config_file.y deleted file mode 100644 index 305305347..000000000 --- a/lib/krb5/config_file.y +++ /dev/null @@ -1,283 +0,0 @@ -%{ - -#include -#include -#include -#include - -#include "krb5_locl.h" -#include "config_file.h" - -RCSID("$Id$"); - -static char section[128]; -static FILE *F; - -static k5_cfile *cf; - -static krb5_config_section *csec; - -static krb5_config_relation **crel; -static krb5_config_relation **rels[16]; -static int relp; - -static void yyerror (char *); -static int yylex (void); - -%} - -%union { - int i; - char *s; -} - -%token STRING - -%% - -file : section_list - ; - -section_list : /* empty */ - | section rel_list section_list - { -#ifdef DEBUG - printf("section_list\n"); -#endif - } - ; - -section - : '[' STRING ']' - { - krb5_config_section *p; - p = ALLOC(1, krb5_config_section); - p->next = NULL; - p->name = $2; - p->relations = NULL; - if(cf->sections) - p->next = cf->sections; - cf->sections = p; - csec = p; - crel = &p->relations; -#ifdef DEBUG - printf("section\n"); -#endif - strcpy(section, $2); - } - ; - -rel_list - : relation rel_sub - ; - -rel_sub : /* empty */ - | relation rel_sub - ; - -relation - : tag '=' value - { -#ifdef DEBUG - printf("relation\n"); -#endif - } - ; - -tag : STRING - { - krb5_config_relation *p; - if(!crel){ - fprintf(stderr, "error\n"); - return -17; - } - p = ALLOC(1, krb5_config_relation); - p->tag = $1; - if(*crel){ - p->next = NULL; - (*crel)->value.data.relations = p; - rels[relp++] = crel; - crel = &p; - }else{ - p->next = *crel; - *crel = p; - } -#ifdef DEBUG - printf("tag\n"); -#endif - } - ; - -value : STRING - { - (*crel)->value.type = krb5_config_value_string; - (*crel)->value.data.string = $1; - crel = &(*crel)->next; -#ifdef DEBUG - printf("value/string\n"); -#endif - } - | '{' rel_list '}' - { - crel = rels[--relp]; - (*crel)->value.type = krb5_config_value_list; - crel = &(*crel)->next; -#ifdef DEBUG - printf("value/list\n"); -#endif - } - ; - -%% - -static int yylex(void) -{ - int c; - static char save; - static char yytext[1024]; - char *p = yytext; - int type = 0; - while(1){ - if(save){ - c = save; - save = 0; - }else - c = getc(F); - if(c == EOF) - break; - if(isspace(c)) - if(type) - break; /* end of token */ - else - continue; /* eat ws */ - if(strchr("[]={}", c)){ - if(type) - save = c; - else{ - return c; - } - break; - } - *p++ = c; - type = STRING; - continue; - } - *p = 0; - yylval.s = strdup(yytext); - return type; -} - -void yyerror(char *s) -{ - printf("yyerror: %s\n", s); -} - - -/*----------------------------------------*/ - -static void -free_config_file(k5_cfile *cf) -{ - if(!cf) - return; - FREE(cf->filename); - free(cf); -} - -static void free_config_relation(krb5_config_relation *rel); - -static void -free_config_value(krb5_config_value val) -{ - if(val.type == krb5_config_value_string) - FREE(val.data.string); - else if(val.type == krb5_config_value_list) - free_config_relation(val.data.relations); - else - fprintf(stderr, "free_config_value: krb5_config_value " - "with bad type passed (%d)\n", val.type); -} - -static void -free_config_relation(krb5_config_relation *rel) -{ - if(!rel) - return; - free_config_value(rel->value); - free_config_relation(rel->next); - FREE(rel); -} - -static void -free_config_section(krb5_config_section *sec) -{ - if(!sec) - return; - FREE(sec->name); - free_config_relation(sec->relations); - free_config_section(sec->next); - FREE(sec); -} - - -void -krb5_free_config_file(k5_cfile *cf) -{ - free_config_file(cf); -} - -krb5_error_code -krb5_get_config_tag(k5_cfile *cf, const char *tag, char **value) -{ - char *str; - char *p; - krb5_config_section *s; - krb5_config_relation *r; - - str = strdup(tag); - p = strtok(str, " \t"); - if(!p) - return KRB5_REALM_UNKNOWN; - for(s = cf->sections; s; s = s->next){ - if(!strcmp(s->name, p)){ - p = strtok(NULL, " \t"); - for(r = s->relations; r;){ - if(!strcmp(r->tag, p)){ - if(r->value.type == krb5_config_value_string){ - *value = strdup(r->value.data.string); - free(str); - return 0; - }else{ - p = strtok(NULL, " \t"); - r = r->value.data.relations; - continue; - } - } - r = r->next; - } - } - } - return KRB5_REALM_UNKNOWN; -} - -krb5_error_code -krb5_parse_config_file(k5_cfile **cfile, const char *filename) -{ - krb5_error_code ret; - if(!filename) - filename = krb5_config_file; - F = fopen(filename, "r"); - if(F == NULL) - return errno; - cf = ALLOC(1, k5_cfile); - if(!cf) - return ENOMEM; - ret = yyparse(); - - fclose(F); - if(ret) - krb5_free_config_file(cf); - else - *cfile = cf; - return ret; -}