Преглед на файлове

flush stdout more

to make sure it is timely written and not interleaved with stderr even
when when redirected.
Oswald Buddenhagen преди 12 години
родител
ревизия
8dbb3fe7a9
променени са 3 файла, в които са добавени 9 реда и са изтрити 2 реда
  1. 5 1
      src/drv_imap.c
  2. 3 1
      src/socket.c
  3. 1 0
      src/util.c

+ 5 - 1
src/drv_imap.c

@@ -250,6 +250,7 @@ send_imap_cmd( imap_store_t *ctx, struct imap_cmd *cmd )
 			printf( ">>> %s", buf );
 		else
 			printf( ">>> %d LOGIN <user> <pass>\n", cmd->tag );
+		fflush( stdout );
 	}
 	if (socket_write( &ctx->conn, buf, bufl, KeepOwn ) < 0)
 		goto bail;
@@ -573,6 +574,7 @@ parse_imap_list( imap_store_t *ctx, char **sp, parse_list_state_t *sts )
 				puts( "=========" );
 				fwrite( cur->val, cur->len, 1, stdout );
 				puts( "=========" );
+				fflush( stdout );
 			}
 
 		  getline:
@@ -1185,8 +1187,10 @@ do_cram_auth( imap_store_t *ctx, struct imap_cmd *cmdp, const char *prompt )
 
 	cram( prompt, srvc->user, srvc->pass, &resp, &l );
 
-	if (DFlags & VERBOSE)
+	if (DFlags & VERBOSE) {
 		printf( ">+> %s\n", resp );
+		fflush( stdout );
+	}
 	return socket_write( &ctx->conn, resp, l, GiveOwn );
 }
 #endif

+ 3 - 1
src/socket.c

@@ -539,8 +539,10 @@ socket_read_line( conn_t *b )
 	if (p != s && p[-1] == '\r')
 		p--;
 	*p = 0;
-	if (DFlags & VERBOSE)
+	if (DFlags & VERBOSE) {
 		puts( s );
+		fflush( stdout );
+	}
 	return s;
 }
 

+ 1 - 0
src/util.c

@@ -37,6 +37,7 @@ flushn( void )
 {
 	if (need_nl) {
 		putchar( '\n' );
+		fflush( stdout );
 		need_nl = 0;
 	}
 }