1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91
|
package rt;
sub write_content {
local ($time, $serial_num,$transaction_num,$content) =@_;
my ($temp,$file);
require rt::support::utils; # for untaint
$serial_num=int($serial_num);
$transaction_num=int($transaction_num);
($weekday, $month, $monthday, $hour, $min, $sec, $TZ, $year)=&parse_time($time);
$serial_num = &rt::untaint($serial_num);
$transaction_num = &rt::untaint($transaction_num);
$weekday= &rt::untaint($weekday);
$month= &rt::untaint($month);
$monthday = &rt::untaint($monthday);
$hour = &rt::untaint($hour);
$min = &rt::untaint($min);
$sec = &rt::untaint($sec);
# $TZ= &rt::untaint($TZ);
$year = &rt::untaint($year);
$temp = $<;
$< = $>; #set real to effective uid
if (! (-d "$transaction_dir/$year")) {
mkdir ("$transaction_dir/$year",$dirmode) or
die "Could not create dir $transaction_dir/$year: $!\n";
# chown $rtusernum, $rtgroupnum, "$transaction_dir/$year";
}
$month_dir = "$transaction_dir/$year/$month";
if (! (-d "$month_dir")) {
mkdir("$month_dir",$dirmode) or
die "Could not create dir $month_dir: $!\n";
#chown $rtusernum, $rtgroupnum, "$transaction_dir/$year/$month";
}
$day_dir = "$month_dir/$monthday";
if (! (-d "$day_dir")) {
mkdir ("$day_dir", $dirmode) or
die "Could not create dir $day_dir: $!\n";
# chown $rtusernum, $rtgroupnum, "$transaction_dir/$year/$month/$monthday";
}
$file="$transaction_dir/$year/$month/$monthday/$serial_num.$transaction_num";
open(CONTENT, ">$file") or die "Couldn't open $file for writing: $!\n";
print CONTENT "$content" or die "Error writing to $file: $!\n";
close (CONTENT);
}
sub read_content {
local ($in_time, $in_serial_num,$in_transaction_num) =@_;
local ($content="");
$in_serial_num=int($in_serial_num);
$in_transaction_num=int($in_transaction_num);
($weekday, $month, $monthday, $hour, $min, $sec, $TZ, $year)=&parse_time($in_time);
$file="$transaction_dir/$year/$month/$monthday/$in_serial_num.$in_transaction_num";
if (! (-r $file))
{
$file="$transaction_dir/$year/$month/$in_serial_num.$in_transaction_num";
if (! (-r $file))
{
return (0,"The specified transaction's content is missing or inaccessable. ($in_time, $in_serial_num:$in_transaction_num)");
}
}
open(CONTENT, $file);
while (<CONTENT>)
{
$content .= $_;
}
close (CONTENT);
return (1,$content);
}
1;
|