annotate 3rdparty/packages/uucpbb/src/findmach.c @ 2855:e126b9acab32 lwtools-port

rules.mak: Do not hardcode path for "echo" It is basically the only tool with full path here and I don't see any reason for it. We don't use special echo options that would fail on the shell built-in echo. Also don't hardcode path for losetup. sudo should make sure you have the relevant location in your path, and that the path is sanitized, otherwise your sudo setup is broken.
author Tormod Volden <debian.tormod@gmail.com>
date Sat, 13 Jul 2013 11:30:31 +0200
parents 5ba8e711a1a3
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 }