cass.awk
by Winston Jenks <winston@capesoftware.com>
#---------------------------------------------------------------------+
# Copyright (c) 2000 Winston Jenks. All Rights Reserved. |
# |
# http://thecassandraproject.org/ |
# |
# This is free software; you can redistribute it and/or modify it |
# under the terms of the GNU General Public License as published by |
# the Free Software Foundation; either version 2 of the License, or |
# (at your option) any later version. |
# |
# This software is distributed in the hope that it will be useful, |
# but WITHOUT ANY WARRANTY; without even the implied warranty of |
# merchantability or fitness for a particular purpose. See the GNU |
# General Public License (http://www.fsf.org/copyleft/gpl.htm)for |
# more details. |
# |
# To obtain the GNU General Public License, write to: |
# |
# Free Software Foundation, Inc. |
# 59 Temple Place - Suite 330 |
# Boston, MA 02111-1307 |
# USA |
#---------------------------------------------------------------------+
# (watch out here nawk does not exist on the AW70's)
#
function PrintUsage()
{
print "#Usage: " ARGV[0] " inpfile... [-?|help] "
print "#\t [-prog] [-[no]verb] [-[no]quiet]"
print "# where:"
print "# inpfile contains the trip tables"
print "# and the the options are:"
print "# -help prints this help"
print "# -prog prints progress and summary"
print "# -[no]verb [does not] print extra information"
print "# -config {file} uses {file} as config file"
print "#"
print "# This program does nothing. It exists to show a particular"
print "# AWK style, which, if you find useful you can mimic. Try"
print "# this with 'awk -f cass.awk cass.awk -progress cass.awk'"
}
# Note the two begin statements, this is OK. I do this because some
# AWKs allow an INIT section (which is what the first BEGIN {} was
BEGIN {
# set up default option values here, g___ for intentionally global variables
gRetStatus = 0
# use o___ for things that are options set on the command line.
oShowProgress = 0
oVerbose = 0
oQuiet = 0
oHelp = 0
oConfigFile = ""
nFiles = 1
for (i=1; i < ARGC; i++) {
if (ARGV[i] ~ /^-/) {
if (ARGV[i] ~ /-verb/) {
oVerbose = 1
}
else if (ARGV[i] ~ /-noverb/) {
oVerbose = 0
}
else if (ARGV[i] ~ /-prog/) {
oShowProgress = 1
}
else if (ARGV[i] ~ /-noprog/) {
oShowProgress = 0
}
else if (ARGV[i] ~ /-help|-\?/) {
oHelp = 1
}
else if (ARGV[i] ~ /-config/) {
if ((i+1 < ARGC) && (ARGV[i+1] !~ /^-/)) {
i++
oConfigFile = ARGV[i]
}
else {
print "## option", ARGV[i], "requires a filename"
gRetStatus = 1
}
}
else {
# Unknown argument
print "## Unknown option: " ARGV[i]
gRetStatus = 1
}
}
else {
# The argument was not a switch, so it must be a file.
# In this case if there is no extension, then assume a
# ".txt"
# print "File[" files "] =", ARGV[i]
if (split(ARGV[i], ff, ".") == 1) {
ARGV[i] = ARGV[i] ".txt"
}
ARGV[nFiles++] = ARGV[i]
}
}
ARGC = nFiles
if ((oHelp) || (gRetStatus != 0)) {
PrintUsage()
exit(gRetStatus)
}
}
# OK, now awk will get on with the show, parsing the files in
# the ARGC array as it should
BEGIN {
print "Executing the BEGIN {} section"
print " oHelp = " oHelp
print " oShowProgress = " oShowProgress
print " oVerbose = " oVerbose
print " oQuiet = " oQuiet
print " oConfigfile = " oConfigFile
}
# this gets executed only once, because NR is not reset when a new
# file is read in.
NR == 1 {
print "Executing the NR == 1 section"
}
# this gets executed once per file
FNR == 1 {
print "Processing " FILENAME "..."
}
END {
print "Executing the END {} section"
exit(gRetStatus)
}