about summary refs log tree commit diff
path: root/src/misc/getopt.c
Commit message (Collapse)AuthorAgeFilesLines
* fix unlikely corner cases in getopt's message printingRich Felker2016-02-161-2/+2
| | | | | | | | | | | | like fputs (see commit 10a17dfbad2c267d885817abc9c7589fc7ff630b), the message printing code for getopt assumed that fwrite only returns 0 on failure, but it can also happen on success if the total length to be written is zero. programs with zero-length argv[0] were affected. commit 500c6886c654fd45e4926990fee2c61d816be197 introduced this problem in getopt by fixing the fwrite behavior to conform to the requirements of ISO C. previously the wrong expectations of the getopt code were met by the fwrite implementation.
* add error message printing to getopt_long and make related improvementsRich Felker2014-12-201-2/+2
| | | | | some related changes are also made to getopt, and the return value of getopt_long in the case of missing arguments is fixed.
* support translation for getopt error messagesRich Felker2014-12-201-0/+2
|
* fix stderr locking and ferror semantics in getopt message printingRich Felker2014-12-191-12/+16
| | | | | | | | | | if writing the error message fails, POSIX requires that ferror(stderr) be set. and as a function that operates on a stdio stream, getopt is required to lock the stream it uses, stderr. fwrite calls are used instead of fprintf since there is a demand from some users not to pull in heavy stdio machinery via getopt. this mimics the original code using write.
* fix getopt handling of initial '+' in optstringRich Felker2014-12-101-1/+1
| | | | | | | in the case where an initial '+' was passed in optstring (a getopt_long feature to suppress argv permutation), getopt would fail to see a possible subsequent ':', resulting in incorrect handling of missing arguments.
* fix getopt handling of ':' modifier for multibyte option charactersRich Felker2014-12-041-4/+9
| | | | | | | | | the previous hard-coded offsets of +1 and +2 contained a hidden assumption that the option character matched was single-byte, despite this implementation of getopt attempting to support multibyte option characters. this patch reworks the matching logic to leave the final index pointing just past the matched character so that fixed offsets can be used to check for ':'.
* add support for non-option arguments extension to getoptGianluca Anzolin2014-12-021-1/+16
| | | | | | | 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.
* getopt: fix optional argument processingFelix Fietkau2014-11-151-2/+2
| | | | | | | Processing an option character with optional argument fails if the option is last on the command line. This happens because the if (optind >= argc) check runs first before testing for optional argument.
* support optional-argument extension to getopt via double-colonRich Felker2014-06-111-2/+5
| | | | | | | this extension is not incompatible with the standard behavior of the function, not expensive, and avoids requiring a replacement getopt with full GNU extensions for a few important apps including busybox's sed with the -i option.
* Add ABI compatability aliases.Isaac Dunham2013-04-051-0/+2
| | | | | | | | GNU used several extensions that were incompatible with C99 and POSIX, so they used alternate names for the standard functions. The result is that we need these to run standards-conformant programs that were linked with glibc.
* add getopt reset supportRich Felker2012-09-301-2/+11
| | | | | | | 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
* initial check-in, version 0.5.0 v0.5.0Rich Felker2011-02-121-0/+63