Clean up initialization of nat_ca[]
authorMarkus Armbruster <armbru@pond.sub.org>
Wed, 6 Feb 2008 19:33:33 +0000 (20:33 +0100)
committerMarkus Armbruster <armbru@pond.sub.org>
Sun, 10 Feb 2008 10:40:57 +0000 (11:40 +0100)
Factor it out of ef_init_srv() and put it into new nsc_init(), next to
nat_ca[].

include/nsc.h
src/lib/global/nsc.c
src/lib/subs/fileinit.c

index 81fa6224a76353e907240deed2e2b15cb8983b2f..5ca7baf2b7b3350f1dbfdf24a0e3c627e3ae4d7c 100644 (file)
@@ -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
index 53fab0f1514193423b2493c1593e5120182a9e58..a088976323d4d48761d67e75b85754725e20315f 100644 (file)
@@ -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];
+}
index 2b3f3b398da02596dde09ab762fcd9c65b605643..6fc7b37dc12801ad3020392e1d36a325f3019f9d 100644 (file)
@@ -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);