xfsdump does not currently handle Ctrl-D well during a dialog prompt. If some text is entered followed by Ctrl-D, an assert will trip because xfsdump expects a new-line character at the end of the user's input (or if asserts are disabled, the last character the user entered will be dropped). If Ctrl-D is entered without entering any response, some dialog callers (e.g., tree_subtree_inter()) will abort because they receive an unexpected response code. This patch changes xfsdump to treat Ctrl-D as if the user hit enter. User input (if any) will be passed back to the caller, and a new line will be echoed to the terminal. Signed-off-by: Bill Kendall <wkendall@xxxxxxx> --- common/dlog.c | 17 +++++++++-------- 1 files changed, 9 insertions(+), 8 deletions(-) diff --git a/common/dlog.c b/common/dlog.c index 51666cf..ddd5524 100644 --- a/common/dlog.c +++ b/common/dlog.c @@ -489,17 +489,18 @@ promptinput( char *buf, *exceptionixp = sigquitix; } return BOOL_FALSE; - } else if ( nread == 0 ) { - *exceptionixp = timeoutix; - if ( bufsz > 0 ) { - buf[ 0 ] = 0; - } - return BOOL_FALSE; } else { ASSERT( dlog_signo_received == -1 ); ASSERT( ( size_t )nread < bufsz ); - ASSERT( buf[ nread - 1 ] == '\n' ); - buf[ nread - 1 ] = 0; + /* Eat the newline if there is one. If there isn't one + * (e.g., Ctrl-D) echo one to keep the output readable. + */ + if ( !nread || buf[ nread - 1 ] != '\n' ) { + buf[ nread ] = 0; + mlog( MLOG_NORMAL | MLOG_NOLOCK | MLOG_BARE, "\n" ); + } else { + buf[ nread - 1 ] = 0; + } *exceptionixp = 0; return BOOL_TRUE; } -- 1.7.0.4 _______________________________________________ xfs mailing list xfs@xxxxxxxxxxx http://oss.sgi.com/mailman/listinfo/xfs