#!/usr/bin/perl #-------------: Edit Text files #-------------: Jan-2004, Harley H. Puthuff #-------------: ©2004, DigiDentist use Cgi; #-------Local properties, methods: $extension = '.txt'; # default text file extension @textFiles = (); # list of text files within path sub put ($) {print STDOUT shift(),"\n"} #-------Main entry & dispatch: $extension = lc(".$ENV{QUERY_STRING}") if ($ENV{QUERY_STRING} ne ''); $extension = ".txt" if (($extension eq ".cgi") || ($extension eq ".pl")); $cgi = new Cgi; $cgi->headers; if (exists $cgi->{Update}) {updateFiles()} else { gatherFiles(); displayFiles(); } exit 0; #-------Gather up all text file names in the directory: sub gatherFiles { my @files; opendir(DIR,".") || return; @files = readdir DIR; foreach (@files) {push @textFiles,$_ if (index($_,$extension) != -1)} closedir DIR; } #-------Display the styles: sub displayStyles { print STDOUT <<"ETX"; ETX } #-------Display editing form for all text files: sub displayFiles { my ($files,$i,$filename,$line,$col,$row,$depth); $files = scalar @textFiles; put qq||; put qq||; put qq|Edit for Text Files|; displayStyles(); put qq||; put qq||; put qq|
|; put qq||; $depth = int($files / 3) + ((($files % 3) > 0) ? 1 : 0); put qq||; for ($i=0; $i < $files; $i++) { $filename = $textFiles[$i]; put qq||; } put qq||; put qq|

Editing all files with $extension extensions

|; for ($i=0,$col=0,$row=0; $i < $files; $i++) { $filename = $textFiles[$i]; put qq||; $row = 0; $col++;} } if ($row > 0) {put qq||; $row =0; $col++;} while ($col < 3) {put qq||; $col++;} put qq|
| if ($row == 0); put qq|$filename
|; if (++$row == $depth) {put qq|

Text for: $filename

|; put qq||; put qq|
|; put qq||; } #-------Update all text files in the directory: sub updateFiles { my ($i,$filename,$content,$count); for ($i=0,$count=0; $i < 999; $i++) { last unless (exists $cgi->{"name_$i"}); $filename = $cgi->{"name_$i"}; $content = $cgi->{"data_$i"}; $content =~ tr/\r//d; open(TEXT,">$filename") || next; print TEXT $content; close TEXT; $count++; } put qq||; put qq||; put qq|Text Files Updated|; displayStyles(); put qq||; put qq||; put qq|$count files updated|; put qq||; put qq||; }