blob: 48d1880207c428208dc3fa3a522150ea9f35fefd [file] [log] [blame]
package Apache::File;
use strict;
use Fcntl ();
use mod_perl ();
{
no strict;
$VERSION = '1.01';
__PACKAGE__->mod_perl::boot($VERSION);
}
my $TMPNAM = 'aaaaaa';
my $TMPDIR = $ENV{'TMPDIR'} || $ENV{'TEMP'} || '/tmp';
($TMPDIR) = $TMPDIR =~ /^([^<>|;*]+)$/; #untaint
my $Mode = Fcntl::O_RDWR()|Fcntl::O_EXCL()|Fcntl::O_CREAT();
my $Perms = 0600;
sub tmpfile {
my $class = shift;
my $limit = 100;
my $r = Apache->request;
while($limit--) {
my $tmpfile = "$TMPDIR/${$}" . $TMPNAM++;
my $fh = $class->new;
sysopen($fh, $tmpfile, $Mode, $Perms);
$r->register_cleanup(sub { unlink $tmpfile }) if $r;
if($fh) {
return wantarray ? ($tmpfile,$fh) : $fh;
}
}
}
1;
__END__