* Copyright (c) 1983 The Regents of the University of California.
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* 3. All advertising materials mentioning features or use of this software
* must display the following acknowledgement:
* This product includes software developed by the University of
* California, Berkeley and its contributors.
* 4. Neither the name of the University nor the names of its contributors
* may be used to endorse or promote products derived from this software
* without specific prior written permission.
* THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
static char sccsid
[] = "@(#)acu.c 5.8 (Berkeley) 3/2/91";
static acu_t
*acu
= NOACU
;
* Establish connection for tip
* If DU is true, we should dial an ACU whose type is AT.
* The phone numbers are in PN, and the call unit is in CU.
* If the PN is an '@', then we consult the PHONES file for
* the phone numbers. This file is /etc/phones, unless overriden
* by an exported shell variable.
* The data base files must be in the format:
* host-name[ \t]*phone-number
* with the possibility of multiple phone numbers
* for a single host acting as a rotary (in the order
char *phnum
, string
[256];
if (!DU
) { /* regular connect message */
pwrite(FD
, CM
, size(CM
));
logent(value(HOST
), "", DV
, "call completed");
* @ =>'s use data base in PHONES environment variable
* otherwise, use /etc/phones
signal(SIGINT
, acuabort
);
signal(SIGQUIT
, acuabort
);
signal(SIGQUIT
, SIG_IGN
);
printf("\ncall aborted\n");
logent(value(HOST
), "", "", "call aborted");
boolean(value(VERBOSE
)) = FALSE
;
if ((acu
= acutype(AT
)) == NOACU
)
return ("unknown ACU type");
for (phnum
= cp
; *cp
&& *cp
!= ','; cp
++)
if (conflag
= (*acu
->acu_dialer
)(phnum
, CU
)) {
logent(value(HOST
), phnum
, acu
->acu_name
,
logent(value(HOST
), phnum
, acu
->acu_name
,
if ((fd
= fopen(PH
, "r")) == NOFILE
) {
return ("can't open phone number file");
while (fgets(string
, sizeof(string
), fd
) != NOSTR
) {
for (cp
= string
; !any(*cp
, " \t\n"); cp
++)
return ("unrecognizable host name");
if (strcmp(string
, value(HOST
)))
return ("missing phone number");
for (phnum
= cp
; *cp
&& *cp
!= ',' && *cp
!= '\n'; cp
++)
if (conflag
= (*acu
->acu_dialer
)(phnum
, CU
)) {
logent(value(HOST
), phnum
, acu
->acu_name
,
logent(value(HOST
), phnum
, acu
->acu_name
,
logent(value(HOST
), "", acu
->acu_name
, "missing phone number");
return (tried
? "call failed" : "missing phone number");
logent(value(HOST
), "", DV
, "call terminated");
logent(value(HOST
), "", acu
->acu_name
, "call terminated");
if (boolean(value(VERBOSE
)))
printf("\r\ndisconnecting...");
logent(value(HOST
), "", acu
->acu_name
, reason
);
(*acu
->acu_disconnect
)();
for (p
= acutable
; p
->acu_name
!= '\0'; p
++)
if (!strcmp(s
, p
->acu_name
))