From 3889e1d955ee2cc09ae3638dcc77587f58d8da33 Mon Sep 17 00:00:00 2001 From: Kurt Zeilenga Date: Sun, 2 Sep 2001 00:10:57 +0000 Subject: [PATCH] Add some EINTR logic to back-shell. Assumes fgets() handles such errors in a particular manner. --- servers/slapd/back-shell/result.c | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) 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; -- 2.39.5