Factor it out of ef_init_srv() and put it into new nsc_init(), next to
nat_ca[].
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 *);
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 *);
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);
};
struct castr nat_ca[sizeof(cou_ca) / sizeof(*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 */
struct castr realm_ca[] = {
/* uid is encoded in cnum, realm */
{NSC_STRING, NSC_CONST, 0, offsetof(struct symbol, name), "name", EF_BAD},
{NSC_NOTYPE, 0, 0, 0, NULL, EF_BAD}
};
{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 */
struct castr mdchr_ca[] = {
/* no need for uid */
/* name must come first, clients may rely on it */
EF_BAD},
{NSC_NOTYPE, 0, 0, 0, NULL, EF_BAD}
};
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];
+}
for (i = 0; i < sizeof(fileinit) / sizeof(fileinit[0]); i++) {
empfile[fileinit[i].ef_type].init = fileinit[i].init;
for (i = 0; i < sizeof(fileinit) / sizeof(fileinit[0]); i++) {
empfile[fileinit[i].ef_type].init = fileinit[i].init;
empfile[fileinit[i].ef_type].prewrite = fileinit[i].prewrite;
}
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];
-
ef_open_srv();
if (ef_verify() < 0)
exit(EXIT_FAILURE);
ef_open_srv();
if (ef_verify() < 0)
exit(EXIT_FAILURE);