Tagged 0.981_01 (experimental auditlog)
[dbsrgits/DBM-Deep.git] / lib / DBM / Deep.pm
index 6b7197f..c51fe40 100644 (file)
@@ -1483,9 +1483,25 @@ sub DELETE {
        ##
        # Delete single key/value pair or element given plain key or array index
        ##
-    my $self = $_[0]->_get_self;
-       my $key = $_[1];
+    my $self = shift->_get_self;
+       my ($key, $orig_key) = @_;
        
+    if ( my $afh = $self->_root->{audit_fh} ) {
+        unless ( $self->_type eq SIG_ARRAY && $key eq 'length' ) {
+            my $lhs = $self->_find_parent;
+            if ( $self->_type eq SIG_HASH ) {
+                $lhs .= "\{$key\}";
+            }
+            else {
+                $lhs .= "\[$_[3]\]";
+            }
+
+            flock( $afh, LOCK_EX );
+            print( $afh "delete $lhs; # " . localtime(time) . "\n" );
+            flock( $afh, LOCK_UN );
+        }
+    }
+
        my $md5 = $DIGEST_FUNC->($key);
 
        ##
@@ -1569,6 +1585,22 @@ sub CLEAR {
        ##
     my $self = $_[0]->_get_self;
 
+    if ( my $afh = $self->_root->{audit_fh} ) {
+        my $lhs = $self->_find_parent;
+
+        my $rhs;
+        if ( $self->_type eq SIG_HASH ) {
+            $rhs = '{}';
+        }
+        elsif ( $self->_type eq SIG_ARRAY ) {
+            $rhs = '[]';
+        }
+
+        flock( $afh, LOCK_EX );
+        print( $afh "$lhs = $rhs; # " . localtime(time) . "\n" );
+        flock( $afh, LOCK_UN );
+    }
+
        ##
        # Make sure file is open
        ##