0
|
1 /* bbaka.c - generate an alias list for BBoards */
|
|
2 #ifndef lint
|
|
3 static char ident[] = "@(#)$Id$";
|
|
4 #endif lint
|
|
5
|
|
6 #include "../h/strings.h"
|
|
7 #include "../zotnet/bboards.h"
|
|
8 #include <stdio.h>
|
|
9 #include "../zotnet/mts.h"
|
|
10
|
|
11
|
|
12 static int systemn = 0;
|
|
13 static char domain[BUFSIZ] = "";
|
|
14
|
|
15 static aka(), process();
|
|
16
|
|
17 /* */
|
|
18
|
|
19 /* ARGSUSED */
|
|
20
|
|
21 main (argc, argv)
|
|
22 int argc;
|
|
23 char **argv;
|
|
24 {
|
|
25 struct bboard *bb;
|
|
26
|
|
27 if (argc > 1 && strcmp (argv[1], "system") == 0)
|
|
28 systemn++;
|
|
29
|
|
30 mts_init (argv[0]);
|
|
31 make_lower (domain, bb_domain);
|
|
32
|
|
33 (void) setbbent (SB_STAY);
|
|
34 while (bb = getbbent ())
|
|
35 process (bb);
|
|
36 (void) endbbent ();
|
|
37
|
|
38 exit (0);
|
|
39 }
|
|
40
|
|
41 /* */
|
|
42
|
|
43 static process (bb)
|
|
44 struct bboard *bb;
|
|
45 {
|
|
46 char **ap,
|
|
47 bbaddr[BUFSIZ],
|
|
48 buffer[BUFSIZ],
|
|
49 ldaddr[BUFSIZ],
|
|
50 result[BUFSIZ];
|
|
51
|
|
52 if (systemn) {
|
|
53 #ifndef MHMTS
|
|
54 (void) sprintf (bbaddr, "%s@bboards", bb -> bb_name, LocalName ());
|
|
55 #else /* MHMTS */
|
|
56 (void) strcpy (bbaddr, BBOARDS);
|
|
57 #endif /* MHMTS */
|
|
58
|
|
59 if (strcmp (bb -> bb_name, bb -> bb_addr) == 0)
|
|
60 aka (bb -> bb_name, bbaddr);
|
|
61 if (domain[0]) {
|
|
62 (void) sprintf (buffer, "%s-%s", domain, bb -> bb_name);
|
|
63 if (bb -> bb_relay && *bb -> bb_relay) {
|
|
64 (void) sprintf (result, "%s%s@%s", DISTADR, bb -> bb_name,
|
|
65 bb -> bb_relay);
|
|
66 aka (buffer, result);
|
|
67 }
|
|
68 else
|
|
69 aka (buffer, bbaddr);
|
|
70 }
|
|
71 (void) sprintf (buffer, "%s%s", DISTADR, bb -> bb_name);
|
|
72 aka (buffer, bbaddr);
|
|
73
|
|
74 (void) sprintf (ldaddr, "%s@%s", *bb -> bb_leader, LocalName ());
|
|
75 for (ap = bb -> bb_leader, ap++; *ap; ap++)
|
|
76 (void) sprintf (ldaddr + strlen (ldaddr), ",%s@%s", *ap,
|
|
77 LocalName ());
|
|
78 if (domain[0]) {
|
|
79 if (bb -> bb_relay && *bb -> bb_relay
|
|
80 && strcmp (*bb -> bb_leader, BBOARDS) == 0
|
|
81 && --ap == bb -> bb_leader)
|
|
82 (void) sprintf (ldaddr, "%s-%s-request@%s",
|
|
83 domain, bb -> bb_name, bb -> bb_relay);
|
|
84 }
|
|
85 if (strcmp (bb -> bb_request, *bb -> bb_leader) == 0) {
|
|
86 (void) sprintf (buffer, "%s-request", bb -> bb_name);
|
|
87 aka (buffer, ldaddr);
|
|
88 }
|
|
89 if (domain[0]) {
|
|
90 (void) sprintf (buffer, "%s-%s-request", domain, bb -> bb_name);
|
|
91 if (bb -> bb_relay && *bb -> bb_relay) {
|
|
92 (void) sprintf (result, "%s@%s", buffer, bb -> bb_relay);
|
|
93 aka (buffer, result);
|
|
94 }
|
|
95 else
|
|
96 aka (buffer, ldaddr);
|
|
97 }
|
|
98 (void) sprintf (buffer, "local-%s-request", bb -> bb_name);
|
|
99 aka (buffer, ldaddr);
|
|
100 }
|
|
101 else {
|
|
102 if (strcmp (bb -> bb_name, bb -> bb_addr))
|
|
103 aka (bb -> bb_name, bb -> bb_addr);
|
|
104
|
|
105 (void) sprintf (buffer, "%s-request", bb -> bb_name);
|
|
106 if (strcmp (bb -> bb_request, *bb -> bb_leader))
|
|
107 aka (buffer, bb -> bb_request);
|
|
108 }
|
|
109 }
|
|
110
|
|
111 /* */
|
|
112
|
|
113 static aka (field, value)
|
|
114 char *field,
|
|
115 *value;
|
|
116 {
|
|
117 #ifndef MHMTS
|
|
118 printf ("%s: %s\n", field, value);
|
|
119 #else /* MHMTS */
|
|
120 printf ("%s%s %s\n", field, systemn ? ":" : ";", value);
|
|
121 #endif /* MHMTS */
|
|
122 }
|