BEGIN { home = "http://www.complang.tuwien.ac.at/"; site = home; sitemap["de"] = "sitemap"; sitemap["en"] = "sitemap-e"; sitemaptitle["de"] = "Überblick über die Seiten"; sitemaptitle["en"] = "Overview of these Pages"; css = "complang.css"; favicon = "favicon.ico"; output = 0; found = 0; activeme = 0; addtitle = ""; statement = ""; outer = prefix; atlevel[0] = ""; atlevel[1] = "   "; atlevel[2] = "      "; atlevel[3] = "         "; atlevel[4] = "            "; atlevel[5] = "               "; atlevel[6] = "                  "; rselins = ""; otherlang["de"] = "en"; otherlang["en"] = "de"; alang["de"] = "English"; alang["en"] = "German"; fisite["de"] = "http://www.informatik.tuwien.ac.at/"; fisite["en"] = "http://www.informatik.tuwien.ac.at/english/"; fititle["de"] = "Fakultät für Informatik"; fititle["en"] = "Faculty of Informatics"; tutitle["de"] = "Technische Universität Wien"; tutitle["en"] = "Vienna University of Technology"; hometitle["de"] = "Die Complang-Gruppe"; hometitle["en"] = "The Complang Group"; thispage["de"] = "Kurzbezeichnung der aktuellen Seite"; thispage["en"] = "Short Name of Current Page"; partofpage["de"] = "Verweis innerhalb dieser Seite"; partofpage["en"] = "Reference Within this Page"; currentsub = ""; newsfound = 0; if (encoding == "") { encoding = "ISO-8859-1"; } rsslink = ""; } function noindex(ind) { if (ind == "index") { return home; } else if (index(ind, site) != 0) { return ind; } else { result = gensub("/index$","/",1,ind); if (result == ind) return prefix ind; else return result; } } ($1 == "%encoding"){ if(NF != 2 ){ # at least a text or a date/place musst be provided with a title print FILENAME " (line " FNR "): WARNING: encoding entry with missing parameters" >"/dev/stderr"; next; } else{ encoding = $2; } } ($1 == "%rsslink") && (output == 0){ if(NF != 2 ){ # at least a text or a date/place musst be provided with a title print FILENAME " (line " FNR "): WARNING: rsslink entry with missing parameters" >"/dev/stderr"; next; } else{ rsslink = $2; } } # set flag to process news items ($1 == "%news") { newsfound = 1; next; } # news item is now processed... ($1 == "%endnews" ) && (newsfound == 1) { newsfound = 0; # build the news entry if (news_title == "" && (news_text == "" || !(news_date == "" || news_time == "" || news_place == ""))){ # at least a text or a date/place musst be provided with a title print FILENAME " (line " FNR "): WARNING: news entry with missing parameters" >"/dev/stderr"; next; } if (news_pretitle != "") { news_pretitle = news_pretitle ": " } if (news_url == ""){ print "

" news_pretitle "" news_title "

"; } else{ print "

" news_pretitle "" news_title "

"; news_url = ""; } if (news_text != ""){ print "
"; print news_text; print "
"; news_text = ""; } if ((news_date != "" && news_time != "" && news_place != "")){ print "
"; print "
Datum:
" news_date "
"; print "
Zeit:
" news_time "
"; print "
Ort:
" news_place "
"; print "
" news_date = ""; news_time = ""; news_place = ""; } print "
" next; } (newsfound == 1) { # we are inside a news item, process the different options if ($1 == "%title"){ news_title = substr($0, 7); } else if ($1 == "%pretitle"){ if (NF < 2) { print FILENAME " (line " FNR "): WARNING: %pretitle missing an argument" >"/dev/stderr"; } news_pretitle = substr($0, 10); } else if($1 == "%url"){ if (NF < 2) { print FILENAME " (line " FNR "): WARNING: %url missing an argument" >"/dev/stderr"; } news_url = substr($0, 5); } else if($1 == "%time"){ if (NF < 2) { print FILENAME " (line " FNR "): WARNING: %time missing an argument" >"/dev/stderr"; } news_time = substr($0, 6); } else if($1 == "%date"){ if (NF < 2) { print FILENAME " (line " FNR "): WARNING: %date missing an argument" >"/dev/stderr"; } news_date = substr($0, 6); } else if ($1 == "%place"){ if (NF < 2) { print FILENAME " (line " FNR "): WARNING: %place missing an argument" >"/dev/stderr"; } news_place = substr($0, 7); } else if ($1 == "%pubdate"){ # ignore here } else { # append plain text news_text = news_text " " $0 } next; } (output == 1) && (newsfound == 0){ print $0; next; } ($1 == "%altlng") && (output == 0) { if (NF < 3) print FILENAME " (line " FNR "): WARNING: %altlang has less than 2 arguments" >"/dev/stderr"; if (altlang[$2] != "" && altlang[$2] != $3) print FILENAME " (line " FNR "): WARNING: " $2 " already has " altlang[$2] " as page name of alternative language; overridden by " $3 >"/dev/stderr"; if (altlang[$3] != "" && altlang[$3] != $2) print FILENAME " (line " FNR "): WARNING: " $3 " already has " altlang[$3] " as page name of alternative language; overridden by " $2 >"/dev/stderr"; altlang[$2] = $3; altlang[$3] = $2; currentsub = ""; next; } ($1 == "%map") && (output == 0) { if (NF < 6) print FILENAME " (line " FNR "): WARNING: %map has less than 5 arguments" >"/dev/stderr"; nm = $2; lng = $3; pr = $4; st = $5; brackets = 0; lt = ""; h1 = ""; for (i = 6; i <= NF; i++) { if ($i == "[") brackets++; else if ($i == "]") if (brackets > 0) brackets--; else print FILENAME " (line " FNR "): WARNING: unbalanced ']' in title field of %map" >"/dev/stderr"; else { if (lt == "") lt = $i; else lt = lt " " $i; if (brackets == 0) if (h1 == "") h1 = $i; else h1 = h1 " " $i; } } if (brackets > 0) print FILENAME " (line " FNR "): WARNING: unbalanced '[' in title field of %map" >"/dev/stderr"; skip = 0; titlelist[prefix nm] = lt; if (pr == "-") { outer = site; toplevel = 0; } else if (pr == 0) { level[nm] = 0; toplevel = 0; start[lng] = nm; if (altlang[nm] == "") start[otherlang[lng]] == nm; } else { newlevel = level[pr] + 1; level[nm] = newlevel; if (newlevel > toplevel) { if (found == 0 || pr == me || altlang[pr] == me) { lmenu[newlevel, "de"] = lmenu[toplevel, "de"]; lmenu[newlevel, "en"] = lmenu[toplevel, "en"]; toplevel = newlevel; } else skip = 1; } else if (newlevel < toplevel) { if (found == 1) { lmenu[newlevel, "de"] = lmenu[toplevel, "de"]; lmenu[newlevel, "en"] = lmenu[toplevel, "en"]; } toplevel = newlevel; } } if (nm == me) { if (activeme == 0) entry = "
" atlevel[toplevel] "" st "\n"; else entry = "
" atlevel[toplevel] "" st "\n"; found = 1; lang = lng; stitle = st; ltitle = lt; header1 = h1; pred = pr; if (altlang[me] != "") rmenu = "
" alang[lang] "\n"; rmenu = rmenu "
Sitemap\n"; } else entry = "
" atlevel[toplevel] "" st "\n"; if (skip == 0) { lmenu[toplevel, lng] = lmenu[toplevel, lng] entry; if (altlang[nm] == "") lmenu[toplevel, otherlang[lng]] = lmenu[toplevel, otherlang[lng]] entry; } currentsub = ""; next; } ($1 == "%submenu") && (output == 0) { if (NF < 2) print FILENAME " (line " FNR "): WARNING: %submenu has no argument" >"/dev/stderr"; currentsub = $2; if (NF > 2) { lt = $3; for (i = 4; i <= NF; i++) lt = lt " " $i; submenu[currentsub] = submenu[currentsub] "
" lt "\n"; } next; } ($1 == "%subsel") && (output == 0) { if (currentsub == "") print FILENAME " (line " FNR "): WARNING: no %submenu defined" >"/dev/stderr"; if (NF < 3) print FILENAME " (line " FNR "): WARNING: %subsel has less than two arguments" >"/dev/stderr"; if (NF > 3) { lt = $4; for (i = 5; i <= NF; i++) lt = lt " " $i; submenu[currentsub] = submenu[currentsub] "
" $3 "\n"; } else { nm = gensub("#.*","",1,$2); if (nm == "") submenu[currentsub] = submenu[currentsub] "
" $3 "\n"; else if (titlelist[nm] != "") submenu[currentsub] = submenu[currentsub] "
" $3 "\n"; else submenu[currentsub] = submenu[currentsub] "
" $3 "\n"; } next; } ($1 == "%rselins") && (output == 0) { if (NF < 2) rselins = ""; else if (NF > 2) print FILENAME " (line " FNR "): WARNING: %rselins has more than one argument" >"/dev/stderr"; else rselins = $2; currentsub = ""; next; } ($1 == "%rsel") && (output == 0) { if (NF < 3) print FILENAME " (line " FNR "): WARNING: %rsel has less than two arguments" >"/dev/stderr"; if (NF > 3) { lt = $4; for (i = 5; i <= NF; i++) lt = lt " " $i; rmenu = rmenu "
" rselins "" $3 "\n"; } else { nm = gensub("#.*","",1,$2); if (nm == "") rmenu = rmenu "
" rselins "" $3 "\n"; else if (titlelist[nm] != "") rmenu = rmenu "
" rselins "" $3 "\n"; else rmenu = rmenu "
" rselins "" $3 "\n"; } currentsub = ""; next; } ($1 == "%rhead") && (output == 0) { if (NF < 2) print FILENAME " (line " FNR "): WARNING: %rhead has no argument" >"/dev/stderr"; lt = $2; for (i = 3; i <= NF; i++) lt = lt " " $i; rmenu = rmenu "
" lt "\n"; currentsub = ""; next; } ($1 == "%addmenu") && (output == 0) { if (NF < 2) print FILENAME " (line " FNR "): WARNING: %addmenu has no argument" >"/dev/stderr"; else if (NF > 2) print FILENAME " (line " FNR "): WARNING: %addmenu has more than one argument" >"/dev/stderr"; else if (submenu[$2] == "") print FILENAME " (line " FNR "): WARNING: unknown submenu ignored" >"/dev/stderr"; else rmenu = rmenu submenu[$2]; currentsub = ""; next; } ($1 == "%addtitle") && (output == 0) { if (ltitle == "") print FILENAME " (line " FNR "): WARNING: %addtitle found before sitemap entry for " me >"/dev/stderr"; else for (i = 2; i <= NF; i++) { ltitle = ltitle " " $i; header1 = header1 " " $i; } currentsub = ""; next; } ($1 == "%change") && (output == 0) { if (NF < 2) print FILENAME " (line " FNR "): WARNING: %change has no argument" >"/dev/stderr"; else { if ($2 != "-") date = $2; if ((NF == 3 && $3 != "-") || NF > 3) { esign = $3; for (i = 4; i <= NF; i++) esign = esign " " $i; gsign = esign; } } next; } ($1 == "%statement") && (output == 0) { if (NF < 2) print FILENAME " (line " FNR "): WARNING: %statement has no argument" >"/dev/stderr"; else if (statement != "") print FILENAME " (line " FNR "): WARNING: several %statement lines found" >"/dev/stderr"; else { statement = " " $2; for (i = 3; i <= NF; i++) if ($i == "/") statement = statement "
\n "; else statement = statement " " $i; } currentsub = ""; next; } ($1 == "%content") && (output == 0) { output = 1; if (found == 0) print "WARNING: no appropriate sitemap entry found for " me >"/dev/stderr"; print ""; print ""; print ""; print " "; print " "; print " "; if (pred != 0) print " "; if (altlang[me] != "") print " "; if (rsslink != ""){ print " " } print " " ltitle ""; print ""; print ""; print ""; print "
"; print ""; print " \"Computer"; print ""; print "
"; print ""; print "
"; if (statement != "") { print "

"; print statement; print "

"; } print "

" header1 "

"; next; } END { if (output == 0) print "WARNING: no %content found (empty page)" >"/dev/stderr"; print "
"; print ""; print "
"; print "
"; print lmenu[toplevel, lang] "
"; print "
"; print ""; print "
"; print "
"; print rmenu "
"; print "
"; print ""; print "
"; print ""; print " \"""; print ""; print "
"; print ""; print "
"; print ""; print " \"""; print ""; print "
"; print ""; print "
"; if (lang == "de") { print " Anfang |"; print " HTML 4.01 |"; print " Datenschutzerklärung |"; print " letzte Änderung: " date " (" gsign ")"; } else { print " top |"; print " HTML 4.01 |"; print " Datenschutzerklärung |"; print " last update: " date " (" esign ")"; } print "
"; print ""; print ""; }