#!/bin/sh path=$(printf "${PATH_INFO}" | tr -s "/") path="${path%/}" if [ -f ".${path}" ] then printf "Content-Type: text/plain; charset=utf-8\n\n" cat ".${path}"; exit fi if [ "${path##*.}" == "tgz" -a -d ".${path%.tgz}" ] then cd ".${path%/*}" dir="${path##*/}" printf "Content-Type: application/x-tar-gz\n\n" tar czf - "${dir%.tgz}"; exit fi [ -d ".${path}" ] || path="" rurl="${SCRIPT_NAME%/*}" durl="${rurl}/index" cd ".${path}" stat -c "%F|%n|%z|%s" [!-]* 2>/dev/null | sort | \ awk -F '|' -v rurl="${rurl}" -v durl="${durl}" \ -v path="${path}" -v purl="${path%/*}" ' BEGIN { u="BKMGT" print("Content-Type: text/html\n") print("\n") print("
") print("" : "../") } $1=="directory" { printf("%s%-60s", "", $2"/") printf("%.16s%20s\n", $3, "-") next } $1=="regular file" && $2 !~ /^index/ { e=int(log($4)/log(1024)) printf("%s%-60s", "", $2"") printf("%.16s%19.1f%s", $3, $4/(1024^e), substr(u,e+1,1)) while(( getline line < $2 ) > 0 ) { b=match(line, /[^[:print:][:blank:]]/) if(b>0) {break} else {continue} } printf("%5s%s\n", "", (b==0 ? "View" : "")) } END { printf("
") }'