]> git.sur5r.net Git - openldap/commitdiff
Add some EINTR logic to back-shell. Assumes fgets() handles
authorKurt Zeilenga <kurt@openldap.org>
Sun, 2 Sep 2001 00:10:57 +0000 (00:10 +0000)
committerKurt Zeilenga <kurt@openldap.org>
Sun, 2 Sep 2001 00:10:57 +0000 (00:10 +0000)
such errors in a particular manner.

servers/slapd/back-shell/result.c

index 113439b62a8eee28d18f73c2451164bed821a324..f2dd0e45939f59eb340a40a11cf290d943816a35 100644 (file)
@@ -9,6 +9,7 @@
 
 #include <stdio.h>
 
+#include <ac/errno.h>
 #include <ac/string.h>
 #include <ac/socket.h>
 #include <ac/unistd.h>
@@ -38,13 +39,29 @@ read_and_send_results(
        buf[0] = '\0';
        bsize = BUFSIZ;
        bp = buf;
-       while ( fgets( line, sizeof(line), fp ) != NULL ) {
+       while ( !feof(fp) ) {
+               errno = 0;
+               if ( fgets( line, sizeof(line), fp ) == NULL ) {
+                       if ( errno == EINTR ) continue;
+
+                       Debug( LDAP_DEBUG_ANY, "shell: fgets failed: %s (%d)\n",
+                               strerror(errno), errno, 0 ); 
+                       break;
+               }
+
                Debug( LDAP_DEBUG_SHELL, "shell search reading line (%s)\n",
                    line, 0, 0 );
+
+               /* ignore lines beginning with # (LDIFv1 comments) */
+               if ( *line == '#' ) {
+                       continue;
+               }
+
                /* ignore lines beginning with DEBUG: */
                if ( strncasecmp( line, "DEBUG:", 6 ) == 0 ) {
                        continue;
                }
+
                len = strlen( line );
                while ( bp + len - buf > bsize ) {
                        size_t offset = bp - buf;