annotate 3rdparty/packages/uucpbb/src/findmach.c @ 1772:5ba8e711a1a3

source added
author boisy
date Fri, 01 Apr 2005 22:04:25 +0000
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1772
5ba8e711a1a3 source added
boisy
parents:
diff changeset
1 /* findmach.c This routine gets the information for a specific remote.
5ba8e711a1a3 source added
boisy
parents:
diff changeset
2 Copyright (C) 1990, 1993 Rick Adams and Bob Billson
5ba8e711a1a3 source added
boisy
parents:
diff changeset
3
5ba8e711a1a3 source added
boisy
parents:
diff changeset
4 This file is part of the OS-9 UUCP package, UUCPbb.
5ba8e711a1a3 source added
boisy
parents:
diff changeset
5
5ba8e711a1a3 source added
boisy
parents:
diff changeset
6 This program is free software; you can redistribute it and/or modify
5ba8e711a1a3 source added
boisy
parents:
diff changeset
7 it under the terms of the GNU General Public License as published by
5ba8e711a1a3 source added
boisy
parents:
diff changeset
8 the Free Software Foundation; either version 2 of the License, or
5ba8e711a1a3 source added
boisy
parents:
diff changeset
9 (at your option) any later version.
5ba8e711a1a3 source added
boisy
parents:
diff changeset
10
5ba8e711a1a3 source added
boisy
parents:
diff changeset
11 This program is distributed in the hope that it will be useful,
5ba8e711a1a3 source added
boisy
parents:
diff changeset
12 but WITHOUT ANY WARRANTY; without even the implied warranty of
5ba8e711a1a3 source added
boisy
parents:
diff changeset
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
5ba8e711a1a3 source added
boisy
parents:
diff changeset
14 GNU General Public License for more details.
5ba8e711a1a3 source added
boisy
parents:
diff changeset
15
5ba8e711a1a3 source added
boisy
parents:
diff changeset
16 You should have received a copy of the GNU General Public License
5ba8e711a1a3 source added
boisy
parents:
diff changeset
17 along with this program; if not, write to the Free Software
5ba8e711a1a3 source added
boisy
parents:
diff changeset
18 Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
5ba8e711a1a3 source added
boisy
parents:
diff changeset
19
5ba8e711a1a3 source added
boisy
parents:
diff changeset
20 The author of UUCPbb, Bob Billson, can be contacted at:
5ba8e711a1a3 source added
boisy
parents:
diff changeset
21 bob@kc2wz.bubble.org or uunet!kc2wz!bob or by snail mail:
5ba8e711a1a3 source added
boisy
parents:
diff changeset
22 21 Bates Way, Westfield, NJ 07090
5ba8e711a1a3 source added
boisy
parents:
diff changeset
23 */
5ba8e711a1a3 source added
boisy
parents:
diff changeset
24
5ba8e711a1a3 source added
boisy
parents:
diff changeset
25 #include "uucp.h"
5ba8e711a1a3 source added
boisy
parents:
diff changeset
26 #include "uucico.h"
5ba8e711a1a3 source added
boisy
parents:
diff changeset
27
5ba8e711a1a3 source added
boisy
parents:
diff changeset
28 #define WORDSIZE 30
5ba8e711a1a3 source added
boisy
parents:
diff changeset
29
5ba8e711a1a3 source added
boisy
parents:
diff changeset
30 /* Keep track of whether or not we've actually dialed */
5ba8e711a1a3 source added
boisy
parents:
diff changeset
31 static flag found_one = FALSE;
5ba8e711a1a3 source added
boisy
parents:
diff changeset
32
5ba8e711a1a3 source added
boisy
parents:
diff changeset
33
5ba8e711a1a3 source added
boisy
parents:
diff changeset
34 int findmach (entryline)
5ba8e711a1a3 source added
boisy
parents:
diff changeset
35 int *entryline;
5ba8e711a1a3 source added
boisy
parents:
diff changeset
36 {
5ba8e711a1a3 source added
boisy
parents:
diff changeset
37 char line[SYSLINE];
5ba8e711a1a3 source added
boisy
parents:
diff changeset
38 register char *words[WORDSIZE];
5ba8e711a1a3 source added
boisy
parents:
diff changeset
39 short i, n;
5ba8e711a1a3 source added
boisy
parents:
diff changeset
40
5ba8e711a1a3 source added
boisy
parents:
diff changeset
41 if (debuglvl > 0)
5ba8e711a1a3 source added
boisy
parents:
diff changeset
42 fprintf (log, "findmach: checking Systems for %s...", sysname);
5ba8e711a1a3 source added
boisy
parents:
diff changeset
43
5ba8e711a1a3 source added
boisy
parents:
diff changeset
44 do
5ba8e711a1a3 source added
boisy
parents:
diff changeset
45 {
5ba8e711a1a3 source added
boisy
parents:
diff changeset
46 /* find system entry */
5ba8e711a1a3 source added
boisy
parents:
diff changeset
47 if (findline (*entryline, sysname, SYSTEMS, line, sizeof (line))
5ba8e711a1a3 source added
boisy
parents:
diff changeset
48 == FALSE)
5ba8e711a1a3 source added
boisy
parents:
diff changeset
49 {
5ba8e711a1a3 source added
boisy
parents:
diff changeset
50 if (*entryline == 0)
5ba8e711a1a3 source added
boisy
parents:
diff changeset
51 {
5ba8e711a1a3 source added
boisy
parents:
diff changeset
52 char tmp[45];
5ba8e711a1a3 source added
boisy
parents:
diff changeset
53
5ba8e711a1a3 source added
boisy
parents:
diff changeset
54 if (debuglvl == 0)
5ba8e711a1a3 source added
boisy
parents:
diff changeset
55 {
5ba8e711a1a3 source added
boisy
parents:
diff changeset
56 sprintf (tmp, "'%s' not in Systems file", sysname);
5ba8e711a1a3 source added
boisy
parents:
diff changeset
57 logerror (tmp);
5ba8e711a1a3 source added
boisy
parents:
diff changeset
58 return (FATAL);
5ba8e711a1a3 source added
boisy
parents:
diff changeset
59 }
5ba8e711a1a3 source added
boisy
parents:
diff changeset
60 else
5ba8e711a1a3 source added
boisy
parents:
diff changeset
61 fputs ("NOT FOUND\n", log);
5ba8e711a1a3 source added
boisy
parents:
diff changeset
62
5ba8e711a1a3 source added
boisy
parents:
diff changeset
63 return (ABORT);
5ba8e711a1a3 source added
boisy
parents:
diff changeset
64 }
5ba8e711a1a3 source added
boisy
parents:
diff changeset
65 else if (found_one)
5ba8e711a1a3 source added
boisy
parents:
diff changeset
66 {
5ba8e711a1a3 source added
boisy
parents:
diff changeset
67 if (debuglvl > 0)
5ba8e711a1a3 source added
boisy
parents:
diff changeset
68 fputs ("no other entry\n", log);
5ba8e711a1a3 source added
boisy
parents:
diff changeset
69
5ba8e711a1a3 source added
boisy
parents:
diff changeset
70 return (NOANSWER);
5ba8e711a1a3 source added
boisy
parents:
diff changeset
71 }
5ba8e711a1a3 source added
boisy
parents:
diff changeset
72 else
5ba8e711a1a3 source added
boisy
parents:
diff changeset
73 {
5ba8e711a1a3 source added
boisy
parents:
diff changeset
74 char tmp[45];
5ba8e711a1a3 source added
boisy
parents:
diff changeset
75
5ba8e711a1a3 source added
boisy
parents:
diff changeset
76 fprintf (log, "Wrong time to call (%s)", sysname);
5ba8e711a1a3 source added
boisy
parents:
diff changeset
77 logerror (tmp);
5ba8e711a1a3 source added
boisy
parents:
diff changeset
78 return (ABORT);
5ba8e711a1a3 source added
boisy
parents:
diff changeset
79 }
5ba8e711a1a3 source added
boisy
parents:
diff changeset
80 }
5ba8e711a1a3 source added
boisy
parents:
diff changeset
81
5ba8e711a1a3 source added
boisy
parents:
diff changeset
82 if ((n = getargs (words, line, WORDSIZE)) < 5)
5ba8e711a1a3 source added
boisy
parents:
diff changeset
83 {
5ba8e711a1a3 source added
boisy
parents:
diff changeset
84 char tmp[65];
5ba8e711a1a3 source added
boisy
parents:
diff changeset
85
5ba8e711a1a3 source added
boisy
parents:
diff changeset
86 sprintf (tmp, "bad Systems entry for: %s", sysname);
5ba8e711a1a3 source added
boisy
parents:
diff changeset
87 logerror (tmp);
5ba8e711a1a3 source added
boisy
parents:
diff changeset
88 return (ABORT);
5ba8e711a1a3 source added
boisy
parents:
diff changeset
89 }
5ba8e711a1a3 source added
boisy
parents:
diff changeset
90 (*entryline)++; /* set up index for next entry */
5ba8e711a1a3 source added
boisy
parents:
diff changeset
91 }
5ba8e711a1a3 source added
boisy
parents:
diff changeset
92 while (!chksched (*(words+1))); /* check schedule to make sure we */
5ba8e711a1a3 source added
boisy
parents:
diff changeset
93 /* can use this entry now */
5ba8e711a1a3 source added
boisy
parents:
diff changeset
94 found_one = TRUE;
5ba8e711a1a3 source added
boisy
parents:
diff changeset
95
5ba8e711a1a3 source added
boisy
parents:
diff changeset
96 if (debuglvl > 0)
5ba8e711a1a3 source added
boisy
parents:
diff changeset
97 fprintf (log, "got it\n");
5ba8e711a1a3 source added
boisy
parents:
diff changeset
98
5ba8e711a1a3 source added
boisy
parents:
diff changeset
99 /* retrieve baud rate and phone number */
5ba8e711a1a3 source added
boisy
parents:
diff changeset
100 strcpy (baud, *(words+3));
5ba8e711a1a3 source added
boisy
parents:
diff changeset
101 strcpy (phone, *(words+4));
5ba8e711a1a3 source added
boisy
parents:
diff changeset
102
5ba8e711a1a3 source added
boisy
parents:
diff changeset
103 if (strucmp (phone, "none") == 0)
5ba8e711a1a3 source added
boisy
parents:
diff changeset
104 strcpy (phone, "-");
5ba8e711a1a3 source added
boisy
parents:
diff changeset
105
5ba8e711a1a3 source added
boisy
parents:
diff changeset
106 /* retrieve chat script for system */
5ba8e711a1a3 source added
boisy
parents:
diff changeset
107 for (*chatscript = '\0', i = 5; i < n; i++)
5ba8e711a1a3 source added
boisy
parents:
diff changeset
108 {
5ba8e711a1a3 source added
boisy
parents:
diff changeset
109 strcat (chatscript, words[i][0] != '\0' ? *(words+i) : "|");
5ba8e711a1a3 source added
boisy
parents:
diff changeset
110
5ba8e711a1a3 source added
boisy
parents:
diff changeset
111 if (i != (n - 1))
5ba8e711a1a3 source added
boisy
parents:
diff changeset
112 strcat (chatscript, " ");
5ba8e711a1a3 source added
boisy
parents:
diff changeset
113 }
5ba8e711a1a3 source added
boisy
parents:
diff changeset
114
5ba8e711a1a3 source added
boisy
parents:
diff changeset
115 /* Look in the Devices file for a matching "device" entry. This
5ba8e711a1a3 source added
boisy
parents:
diff changeset
116 "device" does not have to be an actual OS-9 device name (/t2, /t3,
5ba8e711a1a3 source added
boisy
parents:
diff changeset
117 etc.). It is merely a unique label to identify the entry in the
5ba8e711a1a3 source added
boisy
parents:
diff changeset
118 Devices file. */
5ba8e711a1a3 source added
boisy
parents:
diff changeset
119
5ba8e711a1a3 source added
boisy
parents:
diff changeset
120 if (findent (*(words+2), DEVICES, line, sizeof (line)) == FALSE)
5ba8e711a1a3 source added
boisy
parents:
diff changeset
121 {
5ba8e711a1a3 source added
boisy
parents:
diff changeset
122 char tmp[65];
5ba8e711a1a3 source added
boisy
parents:
diff changeset
123
5ba8e711a1a3 source added
boisy
parents:
diff changeset
124 sprintf (tmp, "entry not in Devices: %s", *(words+2));
5ba8e711a1a3 source added
boisy
parents:
diff changeset
125 logerror (tmp);
5ba8e711a1a3 source added
boisy
parents:
diff changeset
126 return (ABORT);
5ba8e711a1a3 source added
boisy
parents:
diff changeset
127 }
5ba8e711a1a3 source added
boisy
parents:
diff changeset
128
5ba8e711a1a3 source added
boisy
parents:
diff changeset
129 if ((n = getargs (words, line, WORDSIZE)) != 5)
5ba8e711a1a3 source added
boisy
parents:
diff changeset
130 {
5ba8e711a1a3 source added
boisy
parents:
diff changeset
131 char tmp[65];
5ba8e711a1a3 source added
boisy
parents:
diff changeset
132
5ba8e711a1a3 source added
boisy
parents:
diff changeset
133 sprintf (tmp, "bad Devices entry: %s", *words);
5ba8e711a1a3 source added
boisy
parents:
diff changeset
134 logerror (tmp);
5ba8e711a1a3 source added
boisy
parents:
diff changeset
135 return (ABORT);
5ba8e711a1a3 source added
boisy
parents:
diff changeset
136 }
5ba8e711a1a3 source added
boisy
parents:
diff changeset
137
5ba8e711a1a3 source added
boisy
parents:
diff changeset
138 /* Retrieve the actual OS-9 device we will use, e.g. /t2, /t3, etc. */
5ba8e711a1a3 source added
boisy
parents:
diff changeset
139 strcpy (device, *(words+1));
5ba8e711a1a3 source added
boisy
parents:
diff changeset
140
5ba8e711a1a3 source added
boisy
parents:
diff changeset
141 /* Find the entry in the Dialers file */
5ba8e711a1a3 source added
boisy
parents:
diff changeset
142 if (findent (*(words+4), DIALERS, line, sizeof (line)) == FALSE)
5ba8e711a1a3 source added
boisy
parents:
diff changeset
143 {
5ba8e711a1a3 source added
boisy
parents:
diff changeset
144 char tmp[65];
5ba8e711a1a3 source added
boisy
parents:
diff changeset
145
5ba8e711a1a3 source added
boisy
parents:
diff changeset
146 sprintf (tmp, "device not in Dialers: %s", *(words+4));
5ba8e711a1a3 source added
boisy
parents:
diff changeset
147 logerror (tmp);
5ba8e711a1a3 source added
boisy
parents:
diff changeset
148 return (ABORT);
5ba8e711a1a3 source added
boisy
parents:
diff changeset
149 }
5ba8e711a1a3 source added
boisy
parents:
diff changeset
150
5ba8e711a1a3 source added
boisy
parents:
diff changeset
151 if ((n = getargs (words, line, WORDSIZE)) < 2)
5ba8e711a1a3 source added
boisy
parents:
diff changeset
152 {
5ba8e711a1a3 source added
boisy
parents:
diff changeset
153 char tmp[65];
5ba8e711a1a3 source added
boisy
parents:
diff changeset
154
5ba8e711a1a3 source added
boisy
parents:
diff changeset
155 sprintf (tmp, "bad Dialers entry: %s", *words);
5ba8e711a1a3 source added
boisy
parents:
diff changeset
156 logerror (tmp);
5ba8e711a1a3 source added
boisy
parents:
diff changeset
157 return (ABORT);
5ba8e711a1a3 source added
boisy
parents:
diff changeset
158 }
5ba8e711a1a3 source added
boisy
parents:
diff changeset
159
5ba8e711a1a3 source added
boisy
parents:
diff changeset
160 /* get modem reset string */
5ba8e711a1a3 source added
boisy
parents:
diff changeset
161 strcat (strcpy (modemreset, *(words+2)), "\n");
5ba8e711a1a3 source added
boisy
parents:
diff changeset
162
5ba8e711a1a3 source added
boisy
parents:
diff changeset
163 /* retrieve dial script */
5ba8e711a1a3 source added
boisy
parents:
diff changeset
164 for (*dialscript = '\0', i = 1; i < n; i++)
5ba8e711a1a3 source added
boisy
parents:
diff changeset
165 {
5ba8e711a1a3 source added
boisy
parents:
diff changeset
166 if (words[i][0] == '-' || words[i][0] == '\0')
5ba8e711a1a3 source added
boisy
parents:
diff changeset
167 strcat (dialscript, "|");
5ba8e711a1a3 source added
boisy
parents:
diff changeset
168 else
5ba8e711a1a3 source added
boisy
parents:
diff changeset
169 strcat (dialscript, *(words+i));
5ba8e711a1a3 source added
boisy
parents:
diff changeset
170
5ba8e711a1a3 source added
boisy
parents:
diff changeset
171 if (i != (n - 1))
5ba8e711a1a3 source added
boisy
parents:
diff changeset
172 strcat (dialscript, " ");
5ba8e711a1a3 source added
boisy
parents:
diff changeset
173 }
5ba8e711a1a3 source added
boisy
parents:
diff changeset
174
5ba8e711a1a3 source added
boisy
parents:
diff changeset
175 return (OPENPORT);
5ba8e711a1a3 source added
boisy
parents:
diff changeset
176 }