From: Kurt Zeilenga Date: Sun, 2 Sep 2001 00:10:57 +0000 (+0000) Subject: Add some EINTR logic to back-shell. Assumes fgets() handles X-Git-Tag: LDBM_PRE_GIANT_RWLOCK~1135 X-Git-Url: https://git.sur5r.net/?a=commitdiff_plain;h=3889e1d955ee2cc09ae3638dcc77587f58d8da33;p=openldap Add some EINTR logic to back-shell. Assumes fgets() handles such errors in a particular manner. --- 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;