#!/usr/bin/perl -w #!/usr/bin/perl -w @cgiPairs = split("&",$ENV{'QUERY_STRING'}); foreach $pair ( @cgiPairs ) { # Pronalazimo ime promenjive i njenu vrednost ($var,$val) = split("=",$pair); # Zamenjujemo + sa prazninama $val =~ s/\+/ /g; # Zamenjujemo specijalne karaktere oblika %.. $val =~ s/%(..)/pack("c",hex($1))/g; # Gradimo hash $cgiVals{"$var"} = "$val"; } $name=$cgiVals{"dat"}; $keywords = "auto|break|case|char|const|continue|default|do|double|else|enum|extern|float|for|goto|if|int|long|register|return|short|signed|sizeof|static|struct|switch|typedef|union|unsigned|void|volatile|while"; die('Nor a regular file name') if ($name !~ /^[a-zA-Z0-9]+[-_a-zA-Z0-9.\/]*[.]c$/); open(DATOTEKA, $name) || die('Cannot open '.$name); print "Content-type: text/html\n\n"; print "
\n\n"; @dat =; $dat = join('',@dat); $dat =~ s/&/&/g; $dat =~ s/</g; $dat =~ s/>/>/g; while ($dat) { if ($dat =~ /^(&(lt|gt|amp);)/) { print $1; $dat = $'; } elsif ($dat =~ /^(\#(\\\s*\n|.)+)/) { print "".$1.""; $dat = $'; } elsif ($dat =~ /^(\"(\\\"|[^"])*\")/) { print "".$1.""; $dat = $'; } elsif ($dat =~ /^(0x([0-9a-fA-F]+)|(\d+[uU]?[lL]?)|([+-]?)(?=\d|\.\d)\d*(\.\d*)?([Ee]([+-]?\d+))?f?)/) { print "".$1.""; $dat = $'; } elsif ($dat =~ /^(\/\/.*)/) { print "".$1.""; $dat = $'; } elsif ($dat =~ /^(\/\*([^*]|\*[^\/])*\*\/)/) { print "".$1.""; $dat = $'; } else { @keywords = split(/\|/,$keywords); foreach $key(@keywords) { if ($dat =~ /^($key)([^a-zA-Z0-9_])/) { print "".$1.""; $dat = $2.$'; } } if ($dat =~ /^([A-Za-z_][A-Za-z0-9_]*)/) { print "".$1.""; $dat = $'; } else { print substr($dat,0,1); $dat = substr($dat, 1); } } } print "