Apache-Auth-UserDB

 view release on metacpan or  search on metacpan

lib/Apache/Auth/UserDB/File.pm  view on Meta::CPAN

use IO::File;
use File::Copy;

# Constants:
##############################################################################

use constant TRUE   => (0 == 0);
use constant FALSE  => not TRUE;

# When writing user DB files ...
use constant file_write_mode_write_rename   => 0;  # write new file, then rename over old one.
use constant file_write_mode_overwrite      => 1;  # overwrite old file in-place.

# Implementation:
##############################################################################

sub new {
    my ($class, %options) = @_;
    my $self = $class->SUPER::new(%options);
    $self->{file_write_mode} ||= $self->file_write_mode_write_rename;
    return $self;
}

sub open {
    my ($class, %options) = @_;
    
    my $self = $class->new(%options);
    if (defined($self) and $self->_read()) {
        return $self;
    }

lib/Apache/Auth/UserDB/File.pm  view on Meta::CPAN

    }
    
    $file->close();
    
    return TRUE;
}

sub _write {
    my ($self) = @_;
    
    if ($self->{file_write_mode} == $self->file_write_mode_write_rename) {
        # Write new file, then rename over old one:
        
        my $temp_file_name = $self->{file_name} . sprintf('.%d:%d', $$, time());
        my $temp_file = IO::File->new($temp_file_name, '>');
        return undef if not $temp_file;
        #croak("Unable to open file for writing: $temp_file_name")
        #   if not $temp_file;
        
        foreach my $user (@{$self->{users}}) {
            $temp_file->print($self->_build_entry($user), "\n");
        }



( run in 0.467 second using v1.01-cache-2.11-cpan-131fc08a04b )