home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Columbia Kermit
/
kermit.zip
/
ckscripts
/
iksget
< prev
next >
Wrap
Text File
|
2020-01-01
|
3KB
|
78 lines
#!/usr/local/bin/kermit +
#
# i k s g e t -- Get files from an Internet Kermit Service
#
# Helper for IKSD URLs.
#
# If necessary, change the top line to show the full pathname of C-Kermit 7.0.
# Put this file in your PATH and give it execute permission (chmod +x).
#
# Usage:
#
# iksget iksd://hostname/path/filespec
#
# (The "iksd:" and "//" are optional.)
#
# Separates the argument into access (IKSD://, optional), host, and path.
# Logs into the IKSD (if any) at the given host as "anonymous" and gets the
# given file(s). Metacharacters in filespec must be quoted to prevent shell
# expansion. Example:
#
# iksget "iksd://kermit.columbia.edu/kermit/f/ck*.txt"
#
# Illustrates:
# . Anonymous access to IKSD
# . Retrieving command-line arguments
# . Use of \fsplit() function for parsing strings
# . Compact substring notation
#
# Requires: C-Kermit 7.0
#
# Author: F. da Cruz, Columbia University, 5 March 2000
#
local \&a[] \%n host path rc ; Local variables.
set case off ; Caseless string comparisons.
if ( != 2 \v(argc) ) { ; Exactly one argument required.
exit 1 {Usage: \%0 <iksd-url>}
}
.\%n := \fsplit(\&_[1],&a,:) ; Split access://host/path.
switch \%n { ; Verify result.
:0, exit 1 {Error: empty argument} ; Nothing found.
:1, .host := \&a[1] ; IKSD: omitted - assume host/path.
break
:2, if ( not eq "\&a[1]" "iksd" ) { ; Access: included.
exit 1 {Error: non-IKSD URL} ; Make sure it's "IKSD:".
}
.host := \&a[2] ; Get host/path.
break
:default, ; Bad URL.
exit 1 {Error: too many :'s.}
}
while ( eq "\s(host[1:2])" "//" ) { ; Strip any leading "//".
.host := \s(host[3])
}
.\%n = \findex(/,\m(host)) ; Find host/path separator.
if ( < \%n 1 ) { ; Fail if none found.
exit 1 {Error: No filename given}
}
.path := \s(host[\%n+1]) ; This is the path.
.host := \s(host[1:\%n-1]) ; This is the hostname.
set host \m(host):1649 /telnet ; Connect to IKSD on the host.
if fail {
exit 1 {Can't reach \m(host) - \v(errstring)}
}
set exit warning off ; Disable "OK to quit?" prompt.
remote login anonymous \v(user)@\v(host) ; Log in as user "anonymous".
if fail exit 1 {Anonymous login rejected} ; Check for failure.
set transfer display brief ; Use BRIEF file-transfer display.
set transfer bell off ; Don't ring the bell.
get \m(path) ; GET requested file(s).
.rc := \v(status) ; Retain status.
bye ; Sign off from server.
exit \m(rc) ; Exit with GET return code.