aboutsummaryrefslogtreecommitdiff
path: root/src/misc/getopt_long.c (follow)
Commit message (Expand)AuthorAgeFilesLines
* simplify part of getopt_long•••as a result of commit e8e4e56a8ce1f3d7e4a027ff5478f2f8ea70c46b, the later code path for setting optarg to a null pointer is no longer necessary, and removing it eliminates an indention level and arguably makes the code more readable. Rich Felker2015-01-211-13/+11
* always set optarg in getopt_long•••the standard getopt does not touch optarg unless processing an option with an argument. however, programs using the GNU getopt API, which we attempt to provide in getopt_long, expect optarg to be a null pointer after processing an option without an argument. before argument permutation support was added, such programs typically detected its absence and used their own replacement getopt_long, masking the discrepency in behavior. Rich Felker2015-01-211-1/+1
* fix regression in getopt_long support for non-option arguments•••commit b72cd07f176b876aa51864d93aa8101477b1d732 added support for a this feature in getopt, but it was later broken in the case where getopt_long is used as a side effect of the changes made in commit 91184c4f16b143107fa9935edebe5d2b20bd70d8, which prevented the underlying getopt call from seeing the leading '-' or '+' character in optstring. this commit changes the logic in the getopt_long core to check for a leading colon, possibly after the leading '-' or '+', without depending on the latter having been skipped by the caller. a minor incorrectness in the return value for one error condition in getopt_long is also fixed when opterr has been set to zero but optstring has no leading ':'. Rich Felker2015-01-111-7/+6
* set optopt in getopt_long•••this is undocumented but possibly expected behavior of GNU getopt_long, and useful when error message printing has been suppressed. Rich Felker2014-12-201-0/+1
* add error message printing to getopt_long and make related improvements•••some related changes are also made to getopt, and the return value of getopt_long in the case of missing arguments is fixed. Rich Felker2014-12-201-4/+30
* simplify getopt_long argv permutation loop logicRich Felker2014-12-131-3/+1
* fix handling of "--" with getopt_long argv permutation•••if argv permutation is used, the option terminator "--" should be moved before any skipped non-option arguments rather than being left in the argv tail where the caller will see and interpret it. Rich Felker2014-12-131-1/+0
* accept null longopts pointer in getopt_long•••this is an undocumented feature of GNU getopt_long that the BSD version also mimics, and is reportedly needed by some programs. Rich Felker2014-12-111-1/+1
* support abbreviated options in getopt_longRich Felker2014-12-101-7/+18
* support options after non-option arguments in getopt_long (argv permutation)Rich Felker2014-12-101-0/+39
* add support for non-option arguments extension to getopt•••this is a GNU extension, activated by including '-' as the first character of the options string, whereby non-option arguments are processed as if they were arguments to an option character '\1' rather than ending option processing. Gianluca Anzolin2014-12-021-3/+4
* add getopt reset support•••based on proposed patches by Daniel Cegiełka, with minor changes: - use a weak symbol for optreset so it doesn't clash with namespace - also reset optpos (position in multi-option arg like -lR) - also make getopt_long support reset Rich Felker2012-09-301-0/+7
* cleanup src/linux and src/misc trees, etc.•••previously, it was pretty much random which one of these trees a given function appeared in. they have now been organized into: src/linux: non-POSIX linux syscalls (possibly shard with other nixen) src/legacy: various obsolete/legacy functions, mostly wrappers src/misc: still mostly uncategorized; some misc POSIX, some nonstd src/crypt: crypt hash functions further cleanup will be done later. Rich Felker2012-09-071-0/+52