When stdout is assigned to a terminal, it is line-buffered. But when opensm's stdout is redirected to a file, stdout becomes block-buffered, which means that '\n' won't cause the buffer to be flushed.
Forcing stdout to always be line-buffered and to have a more predictable behavior when used as "opensm > some_file". Signed-off-by: Yevgeny Kliteynik <[email protected]> --- Changes since V1: - replacing setlinebuf() with an ANSI C compliant setvbuf() - Note: similar patch for ibv_asyncwatch was accepted by Roland: http://www.mail-archive.com/[email protected]/msg04161.html opensm/opensm/main.c | 3 +++ 1 files changed, 3 insertions(+), 0 deletions(-) diff --git a/opensm/opensm/main.c b/opensm/opensm/main.c index 0093aa7..6e6c733 100644 --- a/opensm/opensm/main.c +++ b/opensm/opensm/main.c @@ -618,6 +618,9 @@ int main(int argc, char *argv[]) {NULL, 0, NULL, 0} /* Required at the end of the array */ }; + /* force stdout to be line-buffered */ + setvbuf(stdout, NULL, _IOLBF, 0); + /* Make sure that the opensm and complib were compiled using same modes (debug/free) */ if (osm_is_debug() != cl_is_debug()) { -- 1.5.1.4 -- To unsubscribe from this list: send the line "unsubscribe linux-rdma" in the body of a message to [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html
