comparison support/bboards/bbaka.c @ 0:bce86c4163a3

Initial revision
author kono
date Mon, 18 Apr 2005 23:46:02 +0900
parents
children 441a2190cfae
comparison
equal deleted inserted replaced
-1:000000000000 0:bce86c4163a3
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 }