From: Dwight Engen Date: Thu, 3 Apr 2014 01:13:05 +0000 (-0400) Subject: fix lxc-info printing duplicate lines X-Git-Tag: lxc-1.1.0.alpha1~170 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=e2426f0bb0a2e94593134fdec0aca95fee53eef0;p=thirdparty%2Flxc.git fix lxc-info printing duplicate lines When lxc-info's stdout is not line buffered (ie. "lxc-info -n foo |more") the first three lines will be duplicated. This is because c->get_ips() comes next and it forks and the child will exit() causing its fds to be closed which flushes out its (fork duplicated) stdio buffers. The lines are then duplicated when the parent actually gets around to flushing out its stdio. This causes problems for programs (such as the lxc-webpanel) which are popen()ing lxc-info. The fix here isn't necessarily the right one, but does show what the problem is. Seems like maybe we should fix this inside of get_ips(), for other API callers as well. Signed-off-by: Dwight Engen Signed-off-by: Serge Hallyn --- diff --git a/src/lxc/lxc_info.c b/src/lxc/lxc_info.c index 96cb9663c..24d6f9bd9 100644 --- a/src/lxc/lxc_info.c +++ b/src/lxc/lxc_info.c @@ -313,6 +313,7 @@ static int print_info(const char *name, const char *lxcpath) } if (ips) { + fflush(stdout); char **addresses = c->get_ips(c, NULL, NULL, 0); if (addresses) { char *address;