Added all of the MH sources, including RCS files, in
[mmh] / docs / historical / mh-6.8.5 / support / bboards / bbaka.c
1 /* bbaka.c - generate an alias list for BBoards */
2 #ifndef lint
3 static char ident[] = "@(#)$Id: bbaka.c,v 2.4 1992/12/15 00:20:22 jromine Exp $";
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 /* \f */
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 /* \f */
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 /* \f */
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 }