|
|
1.1 root 1: /* $Header: CHdefault.c,v 1.2 86/10/11 15:12:52 jqj Exp $ */
2:
3: /* contains:
4: * CH_NameDefault
5: */
6:
7: /* $Log: CHdefault.c,v $
8: * Revision 1.2 86/10/11 15:12:52 jqj
9: * add support for DOMAIN and ORGANIZATION environment variables
10: *
11: * Revision 1.1 86/10/11 15:04:48 jqj
12: * Initial revision
13: *
14: */
15: #include <stdio.h>
16: #include <sys/types.h>
17: #include <netns/ns.h>
18: #include <xnscourier/Clearinghouse2.h>
19:
20: /*
21: * path for the default names file
22: */
23: #ifndef CHDEFPATH
24: #define CHDEFPATH "/usr/new/lib/xnscourier/CH.default"
25: #endif
26:
27: /*
28: * path to look for the addresses file on
29: * (I wish I'd picked a shorter name, so we could rendezvous in /etc.
30: * But long file names in /etc are very unpopular!).
31: */
32: char *chaddrpath[] = {
33: #ifdef CHADDRS
34: CHADDRS,
35: #endif
36: "/usr/new/lib/xnscourier/clearinghouse.addresses",
37: "/etc/CH.addrs",
38: "/usr/local/lib/xnscourier/clearinghouse.addresses",
39: 0 };
40:
41:
42: /*
43: * Set defaults for organization and domain, based on an environment
44: * variable, on the file /usr/new/lib/xnscourier/CH.default, or on
45: * /usr/new/lib/xnscourier/clearinghouse.addresses
46: * (should get the local clearinghouse and set defaults based on
47: * ListDomainsServed
48: */
49: CH_NameDefault(defaultobjnamep)
50: Clearinghouse2_ObjectName *defaultobjnamep;
51: {
52: FILE *chfile;
53: int i, nmatch;
54: char buf[BUFSIZ], *bp;
55: static char orgbuf[21], domainbuf[21];
56: extern char *getenv();
57:
58: defaultobjnamep->object = "";
59: if ((bp = getenv("CHDEFAULTS")) != NULL &&
60: sscanf(bp,":%[^:]:%[^\n]", domainbuf, orgbuf) == 2) {
61: defaultobjnamep->domain = domainbuf;
62: defaultobjnamep->organization = orgbuf;
63: return; /* done */
64: }
65: else if ((defaultobjnamep->domain = getenv("DOMAIN")) != NULL &&
66: (defaultobjnamep->organization = getenv("ORGANIZATION")) !=
67: NULL)
68: return; /* done */
69: if ((chfile = fopen(CHDEFPATH,"r")) !=
70: (FILE *) NULL) {
71: while (fgets(buf, BUFSIZ, chfile) != NULL)
72: if (sscanf(buf,":%[^:]:%[^\n]", domainbuf, orgbuf) == 2) {
73: defaultobjnamep->domain = domainbuf;
74: defaultobjnamep->organization = orgbuf;
75: fclose(chfile);
76: return;
77: }
78: fclose(chfile);
79: }
80: /* oh well. Use CHADDRS */
81: for (i=0; chaddrpath[i] != NULL; i++) {
82: chfile = fopen(chaddrpath[i],"r");
83: if (chfile == (FILE*)0)
84: continue;
85: while (fgets(buf, BUFSIZ, chfile) != NULL)
86: if ((buf[0] != '#') &&
87: (sscanf(buf,"%*[^ \t\n] \":%[^:]:%[^\"]",
88: domainbuf, orgbuf) == 2)) {
89: fclose(chfile);
90: defaultobjnamep->domain = domainbuf;
91: defaultobjnamep->organization = orgbuf;
92: return; /* done */
93: }
94: fclose(chfile);
95: }
96: defaultobjnamep->organization = "";
97: defaultobjnamep->domain = "";
98: return;
99: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.