From 5ef03b2a3a43b69a3652e2066d05f5e62e0f3f72 Mon Sep 17 00:00:00 2001 From: "Carlos R. Mafra" Date: Sun, 15 Jan 2012 01:20:19 +0000 Subject: [PATCH] getstyle: Fix output to stdout There is a problem with getstyle invoked with no arguments: [mafra@Pilar:util]$ ./getstyle Usage: getstyle [-t] [-p] [-h] [-v] [file] or with -t: [mafra@Pilar:util]$ ./getstyle -t Usage: getstyle [-t] [-p] [-h] [-v] [file] In both cases it is supposed to write to the standard output: [mafra@Pilar:wmaker.git]$ getstyle -h Usage: getstyle [-t] [-p] [-h] [-v] [file] Retrieves style/theme configuration and output to FILE or to stdout This regression was caused by commit 6bf79945201265dccf62 ("style Stuff up"). When that commit did argc -= optind; if (argc != 1) print_help(0,1); it excluded the output to stdout as valid, because in this case argc - optind is zero (see the manpage of getopt(3)). The correct handling is to set the style_file only when there is one non-option ARGV-element (argc - optind == 1) and print the help message when there are more than one non-option element. --- util/getstyle.c | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/util/getstyle.c b/util/getstyle.c index 1a9ac31d..6fd45025 100644 --- a/util/getstyle.c +++ b/util/getstyle.c @@ -385,17 +385,18 @@ int main(int argc, char **argv) /* NOTREACHED */ } - argc -= optind; - argv += optind; - - if (argc != 1) + /* At most one non-option ARGV-element is accepted (the theme name) */ + if (argc - optind > 1) print_help(0, 1); - style_file = argv[0]; - while ((p = strchr(style_file, '/')) != NULL) - *p = '_'; + if (argc - optind == 1) { + style_file = argv[argc - 1]; + while ((p = strchr(style_file, '/')) != NULL) + *p = '_'; + } - if (style_file && !make_pack) /* what's this? */ + /* A theme name was given but the option to create it (-p) was not */ + if (style_file && !make_pack) print_help(0, 1); if (make_pack && !style_file) { -- 2.11.4.GIT