]> git.sur5r.net Git - openldap/blobdiff - servers/slapd/slapcat.c
ITS#5860 - more for entry cache counts
[openldap] / servers / slapd / slapcat.c
index 73732963fc72d78d5595fbc98378a276ed99f313..a0f1d3c9977502ee137c090b79845584c815bba9 100644 (file)
@@ -1,7 +1,7 @@
 /* $OpenLDAP$ */
 /* This work is part of OpenLDAP Software <http://www.openldap.org/>.
  *
- * Copyright 1998-2007 The OpenLDAP Foundation.
+ * Copyright 1998-2009 The OpenLDAP Foundation.
  * Portions Copyright 1998-2003 Kurt D. Zeilenga.
  * Portions Copyright 2003 IBM Corporation.
  * All rights reserved.
@@ -32,7 +32,7 @@
 #include "slapcommon.h"
 #include "ldif.h"
 
-static int gotsig;
+static volatile sig_atomic_t gotsig;
 
 static RETSIGTYPE
 slapcat_sig( int sig )
@@ -123,12 +123,18 @@ slapcat( int argc, char **argv )
                        break;
                }
 
-               fputs( data, ldiffp->fp );
-               fputs( "\n", ldiffp->fp );
+               if ( fputs( data, ldiffp->fp ) == EOF ||
+                       fputs( "\n", ldiffp->fp ) == EOF ) {
+                       fprintf(stderr, "%s: error writing output.\n",
+                               progname);
+                       rc = EXIT_FAILURE;
+                       break;
+               }
        }
 
        be->be_entry_close( be );
 
-       slap_tool_destroy();
+       if ( slap_tool_destroy())
+               rc = EXIT_FAILURE;
        return rc;
 }