1
0
mirror of https://github.com/gryf/wmaker.git synced 2026-01-07 06:14:13 +01:00

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 6bf7994520 ("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.
This commit is contained in:
Carlos R. Mafra
2012-01-15 01:20:19 +00:00
parent 385dbdb3d6
commit 5ef03b2a3a

View File

@@ -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) {