From c0f3b0c3c95aad6b67a80643bbf389acf7aa191d Mon Sep 17 00:00:00 2001
From: Simon Pichugin <spichugi@redhat.com>
Date: Thu, 29 Aug 2019 15:51:56 +0200
Subject: [PATCH] Issue 50572 - After running cl-dump dbdir/cldb/*ldif.done are
not deleted
Description: By default, remove ldif.done files after running cl-dump.
Add an option '-l' which allows keep the files.
Update man files.
https://pagure.io/389-ds-base/issue/50572
Reviewed by: firstyear, mreynolds (Thanks!)
---
ldap/admin/src/scripts/cl-dump.pl | 23 +++++++++++++++--------
man/man1/cl-dump.1 | 11 +++++++----
2 files changed, 22 insertions(+), 12 deletions(-)
diff --git a/ldap/admin/src/scripts/cl-dump.pl b/ldap/admin/src/scripts/cl-dump.pl
index f4ad5dd33..2e7f20413 100755
--- a/ldap/admin/src/scripts/cl-dump.pl
+++ b/ldap/admin/src/scripts/cl-dump.pl
@@ -5,7 +5,7 @@
# All rights reserved.
#
# License: GPL (version 3 or any later version).
-# See LICENSE for details.
+# See LICENSE for details.
# END COPYRIGHT BLOCK
###################################################################################
#
@@ -13,7 +13,7 @@
#
# SYNOPSIS:
# cl-dump.pl [-h host] [-p port] [-D bind-dn] -w bind-password | -P bind-cert
-# [-r replica-roots] [-o output-file] [-c] [-v]
+# [-r replica-roots] [-o output-file] [-c] [-l] [-v]
#
# cl-dump.pl -i changelog-ldif-file-with-base64encoding [-o output-file] [-c]
#
@@ -22,7 +22,7 @@
#
# OPTIONS:
# -c Dump and interpret CSN only. This option can be used with or
-# without -i option.
+# without -i option.
#
# -D bind-dn
# Directory server's bind DN. Default to "cn=Directory Manager" if
@@ -32,6 +32,8 @@
# Directory server's host. Default to the server where the script
# is running.
#
+# -l Preserve generated ldif.done files from changelogdir
+#
# -i changelog-ldif-file-with-base64encoding
# If you already have a ldif-like changelog, but the changes
# in that file are encoded, you may use this option to
@@ -68,7 +70,7 @@
# all of this nonsense can be omitted if the mozldapsdk and perldap are
# installed in the operating system locations (e.g. /usr/lib /usr/lib/perl5)
-$usage="Usage: $0 [-h host] [-p port] [-D bind-dn] [-w bind-password | -P bind-cert] [-r replica-roots] [-o output-file] [-c] [-v]\n\n $0 -i changelog-ldif-file-with-base64encoding [-o output-file] [-c]\n";
+$usage="Usage: $0 [-h host] [-p port] [-D bind-dn] [-w bind-password | -P bind-cert] [-r replica-roots] [-o output-file] [-c] [-l] [-v]\n\n $0 -i changelog-ldif-file-with-base64encoding [-o output-file] [-c]\n";
use Getopt::Std; # Parse command line arguments
use Mozilla::LDAP::Conn; # LDAP module for Perl
@@ -86,7 +88,7 @@ $version = "Directory Server Changelog Dump - Version 1.0";
$| = 1;
# Check for legal options
- if (!getopts('h:p:D:w:P:r:o:cvi:')) {
+ if (!getopts('h:p:D:w:P:r:o:clvi:')) {
print $usage;
exit -1;
}
@@ -123,7 +125,7 @@ sub validateArgs
if ($opt_o && ! open (OUTPUT, ">$opt_o")) {
print "Can't create output file $opt_o\n";
$rc = -1;
- }
+ }
# Open STDOUT if option -o is missing
open (OUTPUT, ">-") if !$opt_o;
@@ -194,10 +196,15 @@ sub cl_dump_and_decode
else {
&cl_decode ($_);
}
- # Test op -M doesn't work well so we use rename
+ # Test op -M doesn't work well so we use rename/remove
# here to avoid reading the same ldif file more
# than once.
- rename ($ldif, "$ldif.done");
+ if ($opt_l) {
+ rename ($ldif, "$ldif.done");
+ } else {
+ # Remove the file - default behaviou when '-l' is not specified
+ unlink ($ldif)
+ }
}
&print_header ($replica, "Not Found") if !$gotldif;
}
diff --git a/man/man1/cl-dump.1 b/man/man1/cl-dump.1
index db736aca9..fbb836a72 100644
--- a/man/man1/cl-dump.1
+++ b/man/man1/cl-dump.1
@@ -20,7 +20,7 @@ cl-dump \- Dump and decode Directory Server replication change log
.SH SYNOPSIS
.B cl\-dump
[\fI\-h host\fR] [\fI\-p port\fR] [\fI\-D bind\(hydn\fR] \-w bind\(hypassword | \-P bind\(hycert
- [\fI\-r replica\(hyroots\fR] [\fI\-o output\(hyfile\fR] [\fI\-c\fR] [\fI\-v\fR]
+ [\fI\-r replica\(hyroots\fR] [\fI\-o output\(hyfile\fR] [\fI\-c\fR] [\fI\-l\fR] [\fI\-v\fR]
.PP
.B cl\-dump
@@ -30,12 +30,12 @@ cl-dump \- Dump and decode Directory Server replication change log
Dump and decode Directory Server replication change log
.PP
.\" TeX users may be more comfortable with the \fB<whatever>\fP and
-.\" \fI<whatever>\fP escape sequences to invode bold face and italics,
+.\" \fI<whatever>\fP escape sequences to invode bold face and italics,
.\" respectively.
.SH OPTIONS
A summary of options is included below.
.TP
-.B \-c
+.B \-c
Dump and interpret CSN only. This option can be used with or
without \-i option.
.TP
@@ -47,6 +47,9 @@ the option is omitted.
Directory server's host. Default to the server where the script
is running.
.TP
+.B \-l
+Preserve generated ldif.done files from changelogdir
+.TP
.B \-i changelog\(hyldif\(hyfile\(hywith\(hybase64encoding
If you already have a ldif-like changelog, but the changes
in that file are encoded, you may use this option to
@@ -66,7 +69,7 @@ Specify replica roots whose changelog you want to dump. The replica
roots may be separated by comma. All the replica roots would be
dumped if the option is omitted.
.TP
-.B \-v
+.B \-v
Print the version of this script.
.TP
.B \-w bind\(hypassword
--
2.21.1