]> Pileus Git - vpaste/blobdiff - index.cgi
Add stat command
[vpaste] / index.cgi
index da4cb5cc43c658a32573d06b1f7cd09d46bb9686..861a141a02bd58c077747dbc23a16b5465a057ec 100755 (executable)
--- a/index.cgi
+++ b/index.cgi
@@ -47,7 +47,13 @@ function cut_file {
 # Print out a generic header
 function header {
        echo "Content-Type: $1; charset=UTF-8"
-       echo
+       if [[ "$HTTP_ACCEPT_ENCODING" == *'gzip'* ]]; then
+               echo "Content-Encoding: gzip"
+               echo
+               exec 1> >(gzip)
+       else
+               echo
+       fi
 }
 
 # Print plain message and exit
@@ -64,17 +70,31 @@ function message {
 function do_cmd {
        header text/plain
        case "$1" in
-       head)
-               for i in $(ls -t db/*); do
-                       basename $i
-                       basename $i | sed 's/./-/g'
-                       sed '1,/^$/d; /^\s*$/d' $i | sed -n '1,5s/\(.\{0,60\}\).*/\1/p'
-                       echo
-               done
-               ;;
        ls)
                ls -t db | column
                ;;
+       head)
+               awk -v 'rows=4' -v 'cols=60' '
+                       FNR==1      { gsub(/.*\//, "", FILENAME);
+                                     print FILENAME
+                                     print "-----" }
+                       FNR==1,/^$/ { next }
+                       /\S/        { i++; printf "%."cols"s\n", $0 }
+                       i>=rows     { nextfile  }
+                       ENDFILE     { i=0; print ""  }
+               ' $(ls -t db/*)
+               ;;
+       stat)
+               ls -l --time-style='+%Y %m' db |
+               awk -v 'hdr=Jan  Feb  Mar  Apr  May  Jun  Jul  Aug  Sep  Oct  Nov  Dec' '
+                       BEGIN { printf "%64s\n", hdr }
+                       NR>1  { cnt[$6+0][$7+0]++ }
+                       END   { for (y in cnt) {
+                                 printf "%4d", y
+                                 for (m=1; m<=12; m++)
+                                   printf "%5s", cnt[y][m]
+                                 printf "\n" } }'
+               ;;
        esac
 }
 
@@ -289,8 +309,8 @@ function do_help {
                        <div class="box" id="devel">
                                <h1>License</h1>
                                <p>Copyright © 2009-2012
-                                  Andy spencer &lt;andy753421@gmail.com&gt;</p>
-                               <p>See individual files for license</p>
+                                  Andy Spencer &lt;andy753421@gmail.com&gt;</p>
+                               <p>See individual files for licenses</p>
 
                                <h1>Source code</h1>
                                <ul>
@@ -323,6 +343,7 @@ function do_help {
                                </ul>
                                <p><a href="ls">list all</a></p>
                                <p><a href="head">sample all</a></p>
+                               <p><a href="stat">statistics</a></p>
                        </div>
                </body>
        </html>
@@ -339,6 +360,8 @@ if [ "$pathinfo" = ls ]; then
        do_cmd ls
 elif [ "$pathinfo" = head ]; then
        do_cmd head
+elif [ "$pathinfo" = stat ]; then
+       do_cmd stat
 elif [ "$pathinfo" ]; then
        do_print "$pathinfo"
 elif [ "$CONTENT_TYPE" ]; then