Author: REHSACK
Date: Mon May 24 00:59:41 2010
New Revision: 14016

Modified:
   dbi/trunk/lib/DBD/DBM.pm

Log:
clean up some attribute handling (dbm_ext -> f_ext, dbm_lockfile, ...)


Modified: dbi/trunk/lib/DBD/DBM.pm
==============================================================================
--- dbi/trunk/lib/DBD/DBM.pm    (original)
+++ dbi/trunk/lib/DBD/DBM.pm    Mon May 24 00:59:41 2010
@@ -78,6 +78,7 @@
     #    });
     my $this = $drh->SUPER::connect( $dbname, $user, $auth, $attr );
 
+    $this->STORE( 'dbm_lockfile', '.lck' );
     $this->STORE( 'Active', 1 );
     return $this;
 }
@@ -110,8 +111,14 @@
     #
     if ( ( $attrib eq lc($attrib) ) && ( -1 == index( $attrib, "_" ) ) )
     {
+       # carp "Usage of '$attrib' is depreciated, use 'dbm_$attrib' instead" 
if( $^W );
         $attrib = "dbm_" . $attrib;    # backward compatibility - would like 
to carp here
     }
+    if( $attrib eq "dbm_ext" )
+    {
+       # carp "Attribute 'dbm_ext' is depreciated, use 'f_ext' instead" if( 
$^W );
+       $attrib = 'f_ext';
+    }
     return $dbh->SUPER::STORE( $attrib, $value ) unless ( 0 == index( $attrib, 
'dbm_' ) );
 
     # throw an error if it has our prefix but isn't a valid attr name
@@ -309,7 +316,10 @@
 
     my $tbl = $self->SUPER::file2table( $meta, $file, $file_is_table, $quoted 
) or return;
 
-    $meta->{f_fqln}     = $meta->{f_fqbn} . '.lck';
+    if( !defined($meta->{dbm_lockfile}) and $meta->{dbm_lockfile} )
+    {
+       $meta->{f_fqln} = $meta->{f_fqbn} . $meta->{dbm_lockfile};
+    }
     $meta->{f_dontopen} = 1;
 
     return $tbl;
@@ -325,6 +335,8 @@
     $meta->{dbm_type} ||= $dbh->{dbm_type} || 'SDBM_File';
     $meta->{dbm_mldbm} ||= $dbh->{dbm_mldbm} if ( $dbh->{dbm_mldbm} );
     $meta->{dbm_berkeley_flags} ||= $dbh->{dbm_berkeley_flags};
+    exists $meta->{dbm_lockfile} or
+        $meta->{dbm_lockfile} = $dbh->{dbm_lockfile};
 
     unless ( defined( $meta->{f_ext} ) )
     {
@@ -737,18 +749,18 @@
 
 However, I am not aware (and therefore DBD::DBM is not aware) of all
 possible extensions for various DBM types.  If your DBM type uses an
-extension other than .pag and .dir, you should set the I<dbm_ext> attribute
+extension other than .pag and .dir, you should set the I<f_ext> attribute
 to the extension. B<And> you should write me with the name of the
 implementation and extension so I can add it to DBD::DBM! Thanks in advance
 for that :-).
 
-    $dbh = DBI->connect('dbi:DBM:ext=.db');  # .db extension is used
-    $dbh = DBI->connect('dbi:DBM:ext=');     # no extension is used
+    $dbh = DBI->connect('dbi:DBM:f_ext=.db');  # .db extension is used
+    $dbh = DBI->connect('dbi:DBM:f_ext=');     # no extension is used
 
 or
 
-    $dbh->{dbm_ext}='.db';                      # global setting
-    $dbh->{dbm_tables}->{'qux'}->{ext}='.db';   # setting for table 'qux'
+    $dbh->{f_ext}='.db';                      # global setting
+    $dbh->{f_meta}->{'qux'}->{f_ext}='.db';       # setting for table 'qux'
 
 By default files are assumed to be in the current working directory.  To
 have the module look in a different directory, specify the I<f_dir>
@@ -813,15 +825,15 @@
 If you wish to use a lockfile extension other than '.lck', simply specify
 the dbm_lockfile attribute:
 
-  $dbh = DBI->connect('dbi:DBM:lockfile=.foo');
+  $dbh = DBI->connect('dbi:DBM:dbm_lockfile=.foo');
   $dbh->{dbm_lockfile} = '.foo';
-  $dbh->{dbm_tables}->{qux}->{lockfile} = '.foo';
+  $dbh->{f_meta}->{qux}->{dbm_lockfile} = '.foo';
 
 If you wish to disable locking, set the dbm_lockfile equal to 0.
 
-  $dbh = DBI->connect('dbi:DBM:lockfile=0');
+  $dbh = DBI->connect('dbi:DBM:dbm_lockfile=0');
   $dbh->{dbm_lockfile} = 0;
-  $dbh->{dbm_tables}->{qux}->{lockfile} = 0;
+  $dbh->{f_meta}->{qux}->{dbm_lockfile} = 0;
 
 =head2 Specifying the DBM type
 
@@ -1113,7 +1125,7 @@
 =head1 GOTCHAS AND WARNINGS
 
 Using the SQL DROP command will remove any file that has the name specified
-in the command with either '.pag' or '.dir' or your {dbm_ext} appended to
+in the command with either '.pag' or '.dir' or your {f_ext} appended to
 it.  So this be dangerous if you aren't sure what file it refers to:
 
  $dbh->do(qq{DROP TABLE "/path/to/any/file"});

Reply via email to