From 2d354eff98ccfc013b3421564087d8cfb6201425 Mon Sep 17 00:00:00 2001 From: Paul Buetow Date: Thu, 27 Jan 2011 22:10:51 +0000 Subject: initial import from svn.buetow.org/repos/awksite --- index.cgi | 88 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 88 insertions(+) create mode 100755 index.cgi (limited to 'index.cgi') diff --git a/index.cgi b/index.cgi new file mode 100755 index 0000000..231db39 --- /dev/null +++ b/index.cgi @@ -0,0 +1,88 @@ +#!/usr/bin/awk -f +# +# AWKsite v0.2 +# +# AWK CGI website main program file +# +# AWK CGI is Copyright by Paul C. Buetow (2005) +# http://buetow.org +# Runs on FreeBSD 6.x +# +# AWK CGI is Copyright by Paul C. Buetow (2009) +# Update for Debian Lenny (GNU AWK) +# + +BEGIN { + config_file = "awksite.conf" + + read_config_values(config_file) + print_http_header() + process_foreach_line() +} + +function print_http_header() { + print "Content-type: text/html\n\n" +} + +function read_config_values(config_file) { + while ((getline < config_file) > 0) { + position = index($0,"=") + if (position == 0 || /^#/) + continue + + key = substr($0, 0, position) + val = substr($0, position+1, 100) + + if (val ~ /^!/) + substr(val, 2, 100) | getline val + + values[key] = val + } + + close(config_file) +} + +function process_foreach_line() { + template_file = values["template"] + + while ((getline < template_file) > 0) + print process_line($0) + close(template_file) +} + +function process_line(line) { + if (line ~ /%%.+%%/) + return insert_template_value(line) + return line +} + +function insert_template_value(line) { + position1 = index(line, "%%") + 2 + temp = substr(line, position1, 100) + + if ((position2 = index(temp, "%%") ) == 1 ) + return line + + key = substr(temp, 0, position2) + + if (key ~ /^!sort /) + values[key] = read_file_sorted(substr(key, 7, 100)) + + gsub("%%" key "%%", values[key], line) + + if (line ~ /%%/) + return insert_template_value(line) + + return line +} + +function read_file_sorted(file) { + retval = ""; command = "cat " file " | sort" + while (( command | getline ) > 0 ) + retval = retval $0 "
\n" + return retval +} + +function debug(message) { + print "DEBUG " message +} -- cgit v1.2.3