home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Columbia Kermit
/
kermit.zip
/
ckscripts
/
getline
< prev
next >
Wrap
Text File
|
2020-01-01
|
3KB
|
74 lines
#!/usr/local/bin/kermit +
#
# g e t l i n e -- Get first free dialout line.
#
# Given a string of the form:
#
# device,modem,speed:device,modem,speed:device,modem,speed...
#
# ...this script cycles through the devices until it finds a free one
# that it can assign. Upon failure it exits with a failure code.
#
# If it succeeds it returns with the associated modem type and speed also
# set: if called as a "kerbang" script, it leaves you at the C-Kermit>
# prompt; if called from another script, returns to the calling script.
#
# The string can be provided as a command-line argument or (if no
# command-line argument is given) the value of the DIALOUTS environment
# variable (DIALOUTS symbol or logical name in VMS).
#
# Illustrates using \fsplit() to break up delimited strings into arrays.
#
# Author: F. da Cruz, Columbia University, April 1999
# Updated Oct 1999 for QNX port locking.
#
local \&a[] \&b[] \%i myname ; Local variables
local list defmodem defspeed usage ; More local variables
.myname := \fbasename(\%0) ; Name of this script
.defmodem = usr ; Default modem type (*)
.defspeed = 57600 ; Default speed (*)
; (*) Change as needed
define USAGE {
echo {\m(myname): \%1}
echo Please supply a device list as (the only) command-line argument or
echo in the DIALOUTS environment variable. A device list looks like:
echo {"device,modem,speed:device,modem,speed:device,modem,speed..."}
exit 1
}
if > \v(argc) 2 { ; Check for bad command line
usage {Too many arguments.}
}
if def \%1 .list := \%1 ; Get command-line argument
if not def list .list := \$(DIALOUTS) ; If none get DIALOUTS variable
if not def list { ; If none give message and fail
usage {No device list given.}
}
set quiet on ; Suppress error messages
set qnx-port-lock on ; Significant in QNX - ignored elsewhere
for \%i 1 \fsplit(\m(list),&a,:) 1 { ; Loop for each triplet
dcl \&b[3] ; Re-create this array each time
.\%m := \fsplit(\&a[\%i],&b,{,}) ; Split this triplet
if not def \&b[1] continue ; Watch out for empty ones
echo Trying \&b[1]...
if not def \&b[2] { ; If no modem type included
.\&b[2] = \m(defmodem) ; supply default
}
if not def \&b[3] { ; Ditto for speed
.\&b[3] = \m(defspeed)
}
set modem type \&b[2] ; Try to set modem type
if fail continue ; Failed - go to next triplet
set line \&b[1] ; Try to get the line
if fail continue ; Failed - go to next triplet
set speed \&b[3] ; Set the speed but ignore errors
if !\v(local) continue ; Make sure we're in local mode
echo { Line: \v(line)} ; Report what we got...
echo { Modem: \v(modem)}
echo { Speed: \v(speed)}
end 0 ; And return successfully
}
exit 1 No devices free ; Didn't get one - fail