From 400df7be8289bf89fb7f00f336ae9a5b23966b17 Mon Sep 17 00:00:00 2001 From: Markus Armbruster Date: Wed, 6 Feb 2008 20:33:33 +0100 Subject: [PATCH] Clean up initialization of nat_ca[] Factor it out of ef_init_srv() and put it into new nsc_init(), next to nat_ca[]. --- include/nsc.h | 3 +++ src/lib/global/nsc.c | 21 ++++++++++++++++++++- src/lib/subs/fileinit.c | 14 ++------------ 3 files changed, 25 insertions(+), 13 deletions(-) diff --git a/include/nsc.h b/include/nsc.h index 81fa6224a..5ca7baf2b 100644 --- a/include/nsc.h +++ b/include/nsc.h @@ -249,7 +249,10 @@ extern int nstr_comp(struct nscstr *np, int len, int type, char *str); extern char *nstr_comp_val(char *, struct valstr*, int); extern int nstr_coerce_val(struct valstr *, nsc_type, char *); extern int nstr_exec(struct nscstr *, int, void *); +/* src/lib/common/nstreval.c */ extern void nstr_exec_val(struct valstr *, natid, void *, nsc_type); extern char *symbol_by_value(int, struct symbol *); +/* src/lib/global/nsc.c */ +extern void nsc_init(void); #endif diff --git a/src/lib/global/nsc.c b/src/lib/global/nsc.c index 53fab0f15..a08897632 100644 --- a/src/lib/global/nsc.c +++ b/src/lib/global/nsc.c @@ -532,7 +532,7 @@ struct castr cou_ca[] = { }; struct castr nat_ca[sizeof(cou_ca) / sizeof(*cou_ca)]; -/* initialized in ef_init_srv() */ +/* initialized by nsc_init() */ struct castr realm_ca[] = { /* uid is encoded in cnum, realm */ @@ -599,6 +599,7 @@ struct castr symbol_ca[] = { {NSC_STRING, NSC_CONST, 0, offsetof(struct symbol, name), "name", EF_BAD}, {NSC_NOTYPE, 0, 0, 0, NULL, EF_BAD} }; + struct castr mdchr_ca[] = { /* no need for uid */ /* name must come first, clients may rely on it */ @@ -614,3 +615,21 @@ struct castr mdchr_ca[] = { EF_BAD}, {NSC_NOTYPE, 0, 0, 0, NULL, EF_BAD} }; + +void +nsc_init(void) +{ + int i; + unsigned flags; + + for (i = 0; cou_ca[i].ca_name; i++) { + nat_ca[i] = cou_ca[i]; + flags = nat_ca[i].ca_flags; + if (flags & NSC_EXTRA) + flags &= ~NSC_EXTRA; + else if (i != 0) + flags |= NSC_DEITY; + nat_ca[i].ca_flags = flags; + } + nat_ca[i] = cou_ca[i]; +} diff --git a/src/lib/subs/fileinit.c b/src/lib/subs/fileinit.c index 2b3f3b398..6fc7b37dc 100644 --- a/src/lib/subs/fileinit.c +++ b/src/lib/subs/fileinit.c @@ -62,7 +62,7 @@ static void ef_fina_view(int); void ef_init_srv(void) { - unsigned i, flags; + unsigned i; for (i = 0; i < sizeof(fileinit) / sizeof(fileinit[0]); i++) { empfile[fileinit[i].ef_type].init = fileinit[i].init; @@ -70,17 +70,7 @@ ef_init_srv(void) empfile[fileinit[i].ef_type].prewrite = fileinit[i].prewrite; } - for (i = 0; cou_ca[i].ca_name; i++) { - nat_ca[i] = cou_ca[i]; - flags = nat_ca[i].ca_flags; - if (flags & NSC_EXTRA) - flags &= ~NSC_EXTRA; - else if (i != 0) - flags |= NSC_DEITY; - nat_ca[i].ca_flags = flags; - } - nat_ca[i] = cou_ca[i]; - + nsc_init(); ef_open_srv(); if (ef_verify() < 0) exit(EXIT_FAILURE); -- 2.43.0