From: Kurt Zeilenga Date: Tue, 4 Sep 2001 00:18:07 +0000 (+0000) Subject: Add better fgets() handling X-Git-Tag: OPENLDAP_REL_ENG_2_0_13~12 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=07caa485451a7a6ae4354d65cfe3b84563ef4c20;p=thirdparty%2Fopenldap.git Add better fgets() handling --- diff --git a/servers/slapd/back-shell/result.c b/servers/slapd/back-shell/result.c index 113439b62a..f2dd0e4593 100644 --- a/servers/slapd/back-shell/result.c +++ b/servers/slapd/back-shell/result.c @@ -9,6 +9,7 @@ #include +#include #include #include #include @@ -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;