1*433d7a01SDavid du Colombier#!/bin/rc 2*433d7a01SDavid du Colombier# sources2web source-file - massage source file into html 3*433d7a01SDavid du Colombierrfork e 4*433d7a01SDavid du Colombiercontrib=`{cat /sys/lib/dist/contrib.note} 5*433d7a01SDavid du Colombiercontrib=`{echo $contrib | sed 's;/;\\/;g'} 6*433d7a01SDavid du Colombierifs=' 7*433d7a01SDavid du Colombier' 8*433d7a01SDavid du Colombierfile=$1 9*433d7a01SDavid du Colombiersafefile=`{cleanname -d `{pwd} $file | sed 's;/;\\/;g'} # safe for sed 10*433d7a01SDavid du Colombierif(! ~ $safefile *contrib*) 11*433d7a01SDavid du Colombier contrib='' 12*433d7a01SDavid du Colombier 13*433d7a01SDavid du Colombierfn html { 14*433d7a01SDavid du Colombier echo Content-Type: text/html 15*433d7a01SDavid du Colombier echo 16*433d7a01SDavid du Colombier} 17*433d7a01SDavid du Colombierfn head { 18*433d7a01SDavid du Colombier sed -n '1,/END HEADER/p' /usr/web/plan9/sources.html | translate 19*433d7a01SDavid du Colombier} 20*433d7a01SDavid du Colombierfn tail { 21*433d7a01SDavid du Colombier sed -n '/BEGIN TAIL/,$p' /usr/web/plan9/sources.html | translate 22*433d7a01SDavid du Colombier} 23*433d7a01SDavid du Colombierfn translate { 24*433d7a01SDavid du Colombier sed 's/PATH/'$safefile'/g; s/CONTRIB/'$"contrib'/g;' $* 25*433d7a01SDavid du Colombier} 26*433d7a01SDavid du Colombier 27*433d7a01SDavid du Colombierif(test -f $1){ 28*433d7a01SDavid du Colombier type=`{file -m $1} 29*433d7a01SDavid du Colombier if(! ~ $type text/*){ 30*433d7a01SDavid du Colombier len=`{ls -l $1 | awk '{print $6}'} 31*433d7a01SDavid du Colombier echo Content-Type: $type 32*433d7a01SDavid du Colombier echo Content-Length: $len 33*433d7a01SDavid du Colombier echo 34*433d7a01SDavid du Colombier cat $1 35*433d7a01SDavid du Colombier exit 0 36*433d7a01SDavid du Colombier } 37*433d7a01SDavid du Colombier html 38*433d7a01SDavid du Colombier head 39*433d7a01SDavid du Colombier cat $1 | aux/htmlsanitize 40*433d7a01SDavid du Colombier tail 41*433d7a01SDavid du Colombier exit 0 42*433d7a01SDavid du Colombier} 43*433d7a01SDavid du Colombierif(test -d $1){ 44*433d7a01SDavid du Colombier html 45*433d7a01SDavid du Colombier head 46*433d7a01SDavid du Colombier # exclude stuff that we don't want to publish with grep -v 47*433d7a01SDavid du Colombier ls -lp $1 | grep -v ' _| snap$| (9k|nix|pac)' | 48*433d7a01SDavid du Colombier sed 's/ . [0-9]+ / /' | 49*433d7a01SDavid du Colombier aux/htmlsanitize | 50*433d7a01SDavid du Colombier sed 's; ([^ /]+)$; <a href="\1">\1</a>;' 51*433d7a01SDavid du Colombier tail 52*433d7a01SDavid du Colombier exit 0 53*433d7a01SDavid du Colombier} 54*433d7a01SDavid du Colombier 55*433d7a01SDavid du Colombierecho not found 56*433d7a01SDavid du Colombierexit 0 57