From e655f0cd7bca9dc7117fd6981efbac7164092e4e Mon Sep 17 00:00:00 2001 From: Peter Oberparleiter Date: Fri, 24 Aug 2018 09:35:30 +0100 Subject: [PATCH] cmsfs-fuse: Direct --help and --version output to stdout MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit cmsfs-fuse writes output for --help and --version to stderr. This is likely because cmsfs-fuse calls into a FUSE function for additional usage output that also writes to stderr (prior to FUSE 3.0.0). To be consistent with other s390-tools and GNU coding guide lines, fix this by using stdout for cmsfs-fuse generated output, and by redirecting stderr to stdout before calling the FUSE function. Also remove an inactive call to add FUSE version output on --version to be consistent with other FUSE-based s390-tools. Signed-off-by: Peter Oberparleiter Signed-off-by: Jan Höppner --- cmsfs-fuse/cmsfs-fuse.c | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/cmsfs-fuse/cmsfs-fuse.c b/cmsfs-fuse/cmsfs-fuse.c index 9c4d6d09..063744d5 100644 --- a/cmsfs-fuse/cmsfs-fuse.c +++ b/cmsfs-fuse/cmsfs-fuse.c @@ -76,7 +76,7 @@ static const struct fuse_opt cmsfs_opts[] = { static void usage(const char *progname) { - fprintf(stderr, + fprintf(stdout, "Usage: %s DEVICE MOUNTPOINT [OPTIONS]\n" "\n" "Use the cmsfs-fuse command to read and write files stored on a z/VM CMS disk.\n" @@ -4498,14 +4498,23 @@ static int cmsfs_process_args(void *data, const char *arg, int key, return 1; case KEY_HELP: usage(outargs->argv[0]); + + /* + * Usage output needs to go to stdout to be consistent with + * coding guidelines. FUSE versions before 3.0.0 print help + * output to stderr. Redirect stderr to stdout here to enforce + * consistent behavior. + */ + fflush(stderr); + dup2(STDOUT_FILENO, STDERR_FILENO); + fuse_opt_add_arg(outargs, "-ho"); cmsfs_fuse_main(outargs, &cmsfs_oper); exit(0); case KEY_VERSION: - fprintf(stderr, COMP "FUSE file system for CMS disks " + fprintf(stdout, COMP "FUSE file system for CMS disks " "program version %s\n", RELEASE_STRING); - fprintf(stderr, "Copyright IBM Corp. 2010, 2017\n"); - fuse_opt_add_arg(outargs, "--version"); + fprintf(stdout, "Copyright IBM Corp. 2010, 2017\n"); exit(0); default: