#!/usr/bin/sh
#c2html.cgi
#\
exec /opt/csw/bin/tclsh "$0" ${1+"$@"}
#2>/home/pdv/musial/www/cgilog
# Defaultwerte (aenderbar)
set IndexFile {/home/pdv/pdv/www/lehre/mxBrowser/mxIndex.tcl} ;# Datei mit den Indexdaten
set CachePath {/home/pdv/pdv/www/lehre/mxBrowser/cache} ;# Pfad mit den gecachten Files
set DefPath {/home/pdv/info4/minmax99/src} ;# Pfad mit den C und H Files
set DefLink {http://pdv.cs.tu-berlin.de/lehre/mxBrowser/c2html.cgi} ;# URL, ueber die das ganze laeuft
set LogoPath {http://pdv.cs.tu-berlin.de/lehre/mxBrowser/mx-small.jpg} ;# URL mit dem MinMax-Logo
set SourceName {Browser für die MinMax99-Quellen} ;# Begruessungszeile
set BackLink {http://pdv.cs.tu-berlin.de/MinMax/index.html} ;# zurueck
set ErrorTitle {Shit! Geht nicht} ;# Titelzeile fuer Fehlermeldung
set ErrorString {Tja, da ist wohl was schiefgegangen!} ;# Fehlermeldung
set AsmExt {.S} ;# Extension von Asm-Files
set CExt {.c} ;# Extension von C-Files
set HExt {.h} ;# Extension von H-Files
set cText {"#000000"} ;# normale Textfarbe
set cBack {"#FFFFFF"} ;# Hintergrundfarbe
set cString {"#008A00"} ;# Farbe fuer Strings
set cLink {"#AF00AF"} ;# Farbe fuer Links
set cBKeyW {"#CFAF00"} ;# Farbe fuer Schluesselwoerter (Befehle)
set cPKeyW {"#1A00FF"} ;# Farbe fuer Schluesselwoerter (Precompiler)
set cVKeyW {"#5F005F"} ;# Farbe fuer Schluesselwoerter (Variablen)
set cFKeyW {"#006800"} ;# Farbe fuer erkannte Funktionsnamen
set cCase {"#FF00AF"} ;# Farbe fuer CASE-Bedingung u. a.
set cComment {"#FF0000"} ;# Farbe fuer Kommentare
# Defaulwerte (Finger wech!)
set BottomLine {
Bei Problemen mit der Seite bitte eine Mail an Marek
Converted with C2HTML V0.669 by Iluvatar
Prozeßdatenverarbeitung} ;# Finger wech :-)
set IncFile {[0-9a-zA-Z_./][0-9a-zA-Z_./]*} ;# Includefile
set CName {[a-zA-Z_][0-9a-zA-Z_.-]*} ;# Zulaessige Namen in C
set Case {[']?[0-9a-zA-Z_][0-9a-zA-Z_.-]*[']?} ;# Zulaessig im Case-Statement
set MName {[a-zA-Z_][0-9a-zA-Z_.()]*} ;# Name eines Macros
set FName {[a-zA-Z_][0-9a-zA-Z_.]*} ;# Name einer Funktion in C
set All {.*} ;# Alles was wie wo gehen tut :-)
set Spaces "\[ \t\]+" ;# Was an Spaces so drinne ist
set FPrefix {[ *]} ;# Zeichen, die direkt vor einem Proto. stehen
set I {[^a-zA-Z0-9_#]} ;# Rand innen
set A "$I|^|\$" ;# Rand außen
set Inoqu {[^a-zA-Z0-9_#\"]} ;# Rand innen ohne "
set Anoqu "$Inoqu|^|\$" ;# Rand außen ohne "
set Ires {[^a-zA-Z0-9_]} ;# Rand innen anspruchsvoll
set Ares "$Ires|^|\$" ;# Rand aussen anspruchsvoll
# Datei einbinden
if {![file exists $IndexFile]} {
set index(0) ""
} else {
catch {source $IndexFile}
}
# Hilfsroutinen
proc Cgi_Parse {} {
global env cgi query
if {![info exists env(QUERY_STRING)] || [string length $env(QUERY_STRING)] == 0} {
if [info exists env(CONTENT_LENGTH)] {
set query [read stdin $env(CONTENT_LENGTH)]
} else {
gets stdin query
}
} else {
set query $env(QUERY_STRING)
}
regsub -all {\+} $query { } query
foreach {name value} [split $query &=] {
if [info exists list($name)] {
set cgi($name) [list $cgi($name) [CgiDecode $value]]
unset list($name)
} elseif [info exists cgi($name)] {
lappend cgi($name) [CgiDecode $value]
} else {
set cgi($name) [CgiDecode $value]
set list($name) 1
}
}
return [array names cgi]
}
proc Cgi_Value {name} {
global cgi
if ![info exists cgi($name)] {
return {}
} elseif {[llength $cgi($name)] == 1} {
return [lindex $cgi($name) 0]
} else {
return $cgi($name)
}
}
proc CgiDecode {str} {
regsub -all {[][\\\$]} $str {\\&} str
regsub -all {%([0-9a-fA-F][0-9a-fA-F])} $str {[format %c 0x\1]} str
return [subst $str]
}
# Die eigendliche Arbeit
proc MakeIndex {c path} {
global BottomLine cText cBack cLink DefLink SourceName Mindex Pindex Tindex LogoPath BackLink
# HTML-Seite beginnen
puts $c ""
puts $c ""
puts $c ""
puts $c ""
puts $c "HTML-Version von MinMax99 -=\> Liste \<=-"
puts $c ""
puts $c ""
# Ueberschrift
puts $c ""
puts $c " | "
puts $c "$SourceName | "
puts $c " | "
puts $c "
"
puts $c "
"
# Liste der Suchbegriffe
puts $c "" ;# Form zumachen
puts $c "
"
# Liste der Dateien
puts $c "" ;# Tabelle aufmachen
puts $c "" ;# Zeile aufmachen
puts $c "Header-Files: | "
puts $c " | "
puts $c "C-Files: | "
puts $c "
"
puts $c "" ;# Zeile aufmachen
puts $c ""
foreach f [lsort -dictionary [exec /bin/ls -a1Lb $path]] {
if {[file extension $f] == {.h}} {
puts $c "$f "
}
}
puts $c " | | "
foreach f [lsort -dictionary [exec /bin/ls -a1Lb $path]] {
if {[file extension $f] == {.c} || [file extension $f] == {.S}} {
puts $c "$f "
}
}
puts $c " | "
puts $c "
" ;# Zeile zumachen
puts $c "
" ;# Table abschliessen
# Seite abschliessen
puts $c "$BottomLine"
puts $c ""
puts $c "