libdockapp: removed assertion that short-form options have length 2.

The mixed-option parsing code includes an assertion that short-form
options have a length of two.  However, there is no other validation of
this requirement and some dock-apps do not comply with it, which means
that if one exec's them with an unrecognized option or a mix of short
options, the assertion fails and the app aborts.

For example:

  $ /usr/bin/wmail --help | grep '\<display\>'
    -display <string>            display to use
  $ /usr/bin/wmail --blah
  wmail: daargs.c:126: contains: Assertion `strlen(needle) == 2' failed.
  Aborted

Since there is no explicit statement of this requirement, let's replace
the assertion with a conditional.
This commit is contained in:
Jeremy Sowden 2019-06-13 15:05:18 +01:00 committed by Carlos R. Mafra
parent 00630c75c7
commit 5b50ebaefb

View file

@ -117,13 +117,11 @@ DAParseArguments(
int int
contains(char *needle, char *haystack) contains(char *needle, char *haystack)
{ {
char c, *pos; char *pos = NULL;
assert(strlen(needle) == 2); if (strlen(needle) == 2 && needle[0] == '-') {
pos = strchr(haystack, needle[1]);
c = needle[1]; }
pos = strchr(haystack, c);
return (pos != NULL); return (pos != NULL);
} }