home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
ftp.cs.arizona.edu
/
ftp.cs.arizona.edu.tar
/
ftp.cs.arizona.edu
/
icon
/
historic
/
v941.tgz
/
icon.v941src.tar
/
icon.v941src
/
ipl
/
progs
/
filtskel.icn
< prev
next >
Wrap
Text File
|
2000-07-29
|
2KB
|
69 lines
############################################################################
#
# File: filtskel.icn
#
# Subject: Program skeleton for generic filter
#
# Author: Robert J. Alexander
#
# Date: July 16, 1994
#
############################################################################
#
# This file is in the public domain.
#
############################################################################
#
# Generic filter skeleton in Icon.
#
# This program is not intended to be used as is -- it serves as a
# starting point for creation of filter programs. Command line
# options, file names, and tabbing are handled by the skeleton. You
# need only provide the filtering code.
#
# As it stands, filter.icn simply copies the input file(s) to
# standard output.
#
# Multiple files can be specified as arguments, and will be processed
# in sequence. A file name of "-" represents the standard input file.
# If there are no arguments, standard input is processed.
#
############################################################################
#
# Links: options
#
############################################################################
link options
procedure main(arg)
local opt, tabs, Detab, fn, f, line
#
# Process command line options and file names.
#
opt := options(arg,"t+") # e.g. "fs:i+r." (flag, string, integer, real)
if *arg = 0 then arg := ["-"] # if no arguments, standard input
tabs := (\opt["t"] | 8) + 1 # tabs default to 8
Detab := tabs = 1 | detab # if -t 0, no detabbing
#
# Loop to process files.
#
every fn := !arg do {
f := if fn == "-" then &input else
open(fn) | stop("Can't open input file \"",fn,"\"")
#
# Loop to process lines of file (in string scanning mode).
#
while line := Detab(read(f)) do line ? {
write(line) # copy line to standard output
}
#
# Close this file.
#
close(f)
}
#
# End of program.
#
end