Skip to content
Snippets Groups Projects
Commit 8fe75761 authored by Howard Chu's avatar Howard Chu
Browse files

ITS#3764 add signal handlers so slapcat will cleanup if interrupted.

(Just slapcat for now, other tools don't seem to be critical.)
parent 43c6253a
No related branches found
No related tags found
No related merge requests found
......@@ -32,6 +32,14 @@
#include "slapcommon.h"
#include "ldif.h"
static int gotsig;
static RETSIGTYPE
slapcat_sig( int sig )
{
gotsig=1;
}
int
slapcat( int argc, char **argv )
{
......@@ -42,6 +50,15 @@ slapcat( int argc, char **argv )
slap_tool_init( progname, SLAPCAT, argc, argv );
#ifdef SIGPIPE
(void) SIGNAL( SIGPIPE, slapcat_sig );
#endif
#ifdef SIGHUP
(void) SIGNAL( SIGHUP, slapcat_sig );
#endif
(void) SIGNAL( SIGINT, slapcat_sig );
(void) SIGNAL( SIGTERM, slapcat_sig );
if( !be->be_entry_open ||
!be->be_entry_close ||
!be->be_entry_first ||
......@@ -59,15 +76,19 @@ slapcat( int argc, char **argv )
exit( EXIT_FAILURE );
}
op.o_bd = be;
for ( id = be->be_entry_first( be );
id != NOID;
id = be->be_entry_next( be ) )
{
char *data;
int len;
Entry* e = be->be_entry_get( be, id );
op.o_bd = be;
Entry* e;
if ( gotsig )
break;
e = be->be_entry_get( be, id );
if ( e == NULL ) {
printf("# no data for entry id=%08lx\n\n", (long) id );
rc = EXIT_FAILURE;
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment