/[wait]/trunk/lib/WAIT/Database.pm
This is repository of my old source code which isn't updated any more. Go to git.rot13.org for current projects!
ViewVC logotype

Diff of /trunk/lib/WAIT/Database.pm

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 115 by dpavlin, Wed Jul 14 07:35:56 2004 UTC revision 116 by dpavlin, Wed Jul 14 09:48:26 2004 UTC
# Line 88  sub create { Line 88  sub create {
88    croak("Directory '$dir' does not exits: $!") unless (-d $dir);    croak("Directory '$dir' does not exits: $!") unless (-d $dir);
89    
90    if (-d "$dir/$name") {    if (-d "$dir/$name") {
91      warn "Warning: Directory '$dir/$name' already exists";      carp "Warning: directory '$dir/$name' already exists\n";
92    } else {    } else {
93      unless (mkdir "$dir/$name", 0775) {      unless (mkdir "$dir/$name", 0775) {
94        croak("Could not mkdir '$dir/$name': $!");        croak("Could not mkdir '$dir/$name': $!");
# Line 162  sub open { Line 162  sub open {
162    my $name    = $parm{name} or croak "No name specified";    my $name    = $parm{name} or croak "No name specified";
163    my $self = bless {}, ref($type) || $type;    my $self = bless {}, ref($type) || $type;
164    
165      croak("Directory '$dir' does not exits: $!") unless (-d $dir);
166      if (!-d "$dir/$name") {
167        carp "Warning: database '$dir/$name' doesn't exist\n";
168        return;
169      }
170    my $mode = (exists $parm{mode})?$parm{mode}:(O_CREAT | O_RDWR);    my $mode = (exists $parm{mode})?$parm{mode}:(O_CREAT | O_RDWR);
171    $self->{dir}  = $dir; # will be overwritten by the thaw below, but we need it now    $self->{dir}  = $dir; # will be overwritten by the thaw below, but we need it now
172    $self->{name} = $name;    $self->{name} = $name;
# Line 170  sub open { Line 175  sub open {
175    
176    return if (! -d $self->path);    return if (! -d $self->path);
177    
178    if ($mode & O_RDWR) {    my $flags = DB_CREATE|DB_INIT_MPOOL|DB_INIT_CDB;
179      my $flags = DB_CREATE|DB_INIT_MPOOL|DB_INIT_CDB;  
180      #warn "setting flags for envorinment 'writing'";    $env = BerkeleyDB::Env->new(
     $env = BerkeleyDB::Env->new(  
181                                  -Home => $self->path,                                  -Home => $self->path,
182                                  -Flags => $flags,                                  -Flags => $flags,
183                                 );                               );
184      unless ($env) {    unless ($env) {
185        confess("Could not create environment in [".$self->path."]: $BerkeleyDB::Error");      return if ($parm{mode} & O_RDWR);
186      }      confess("Could not create environment in [".$self->path."]: $BerkeleyDB::Error");
   } else {  
     # in der Datei neo-lieferung.pl habe ich in Punkt 2.6 darueber  
     # lamentiert, dass der Readonly-User kein Environment bekommt.  
     # Es muesste ein Klacks sein, dafuer einen Schalter  
     # bereitzustellen. Kostet mich aber zu viel Denkzeit.  
     # warn "DEBUG: setting env to NIL";  
     $env = "";  
187    }    }
188    
189    #warn "DEBUG: trying to open the database for _attr";    #warn "DEBUG: trying to open the database for _attr";
# Line 197  sub open { Line 194  sub open {
194                                      $env ? (-Env => $env) : (-Flags => DB_RDONLY),                                      $env ? (-Env => $env) : (-Flags => DB_RDONLY),
195                                     );                                     );
196    unless (defined($attr)) {    unless (defined($attr)) {
197          return if ($parm{mode} & O_RDWR);
198        croak "Cannot open [$maindbfile] _attr: $BerkeleyDB::Error; mdbf[$maindbfile] env[$env]";        croak "Cannot open [$maindbfile] _attr: $BerkeleyDB::Error; mdbf[$maindbfile] env[$env]";
199    }    }
200    

Legend:
Removed from v.115  
changed lines
  Added in v.116

  ViewVC Help
Powered by ViewVC 1.1.26