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