]> mj.ucw.cz Git - libucw.git/log
libucw.git
10 years agoMempool: Do not count the struct mempool to its stats.used_size.
Pavel Charvat [Wed, 28 May 2014 11:08:22 +0000 (13:08 +0200)]
Mempool: Do not count the struct mempool to its stats.used_size.

10 years agoBuild: With shared LibUCW we no longer need picstatic version of libraries.
Pavel Charvat [Tue, 27 May 2014 10:51:12 +0000 (12:51 +0200)]
Build: With shared LibUCW we no longer need picstatic version of libraries.

10 years agoUCW::CGI: When a file is uploaded, its original name can be obtained
Martin Mares [Mon, 26 May 2014 11:08:13 +0000 (13:08 +0200)]
UCW::CGI: When a file is uploaded, its original name can be obtained

10 years agoBuild: Added lib*.so -> lib*.so.0 symlinks to run/lib.
Pavel Charvat [Thu, 22 May 2014 09:44:04 +0000 (11:44 +0200)]
Build: Added lib*.so -> lib*.so.0 symlinks to run/lib.

10 years agoBuild: Added link path to libraries installed to non-standard path.
Pavel Charvat [Thu, 22 May 2014 07:18:45 +0000 (09:18 +0200)]
Build: Added link path to libraries installed to non-standard path.

10 years agoFastbufs: Fixed uninitialized variables in fbmulti's structure.
Pavel Charvat [Wed, 21 May 2014 12:57:54 +0000 (14:57 +0200)]
Fastbufs: Fixed uninitialized variables in fbmulti's structure.

10 years agoMempool: Fixed broken unit test.
Pavel Charvat [Tue, 20 May 2014 13:26:06 +0000 (15:26 +0200)]
Mempool: Fixed broken unit test.

10 years agoMempool: Implemented mp_shrink().
Pavel Charvat [Tue, 20 May 2014 11:36:32 +0000 (13:36 +0200)]
Mempool: Implemented mp_shrink().

10 years agoMempool: stats->chain_size[] should be u64, not uns.
Pavel Charvat [Tue, 20 May 2014 09:10:29 +0000 (11:10 +0200)]
Mempool: stats->chain_size[] should be u64, not uns.

10 years agoMempool: Implemented statistics about allocated bytes from memory pool to application.
Pavel Charvat [Tue, 20 May 2014 09:08:15 +0000 (11:08 +0200)]
Mempool: Implemented statistics about allocated bytes from memory pool to application.

10 years agoSorter: Fixed a documentation comment
Martin Mares [Sat, 17 May 2014 21:36:04 +0000 (23:36 +0200)]
Sorter: Fixed a documentation comment

10 years agoMerge branch 'master' of ssh://git.ucw.cz/projects/libucw/GIT/libucw
Martin Mares [Thu, 15 May 2014 12:18:52 +0000 (14:18 +0200)]
Merge branch 'master' of ssh://git.ucw.cz/projects/libucw/GIT/libucw

10 years agoMempool: Implemented various functions for appending to a growing buffer
Martin Mares [Thu, 15 May 2014 07:20:57 +0000 (09:20 +0200)]
Mempool: Implemented various functions for appending to a growing buffer

10 years agoABI cleanup
Martin Mares [Thu, 15 May 2014 07:20:44 +0000 (09:20 +0200)]
ABI cleanup

10 years agoNull fastbuf: Don't forget to set a fastbuf's name.
Pavel Charvat [Thu, 15 May 2014 07:12:53 +0000 (09:12 +0200)]
Null fastbuf: Don't forget to set a fastbuf's name.

10 years agoBuild: Fixed a bug in our unit tester.
Pavel Charvat [Tue, 13 May 2014 10:58:53 +0000 (12:58 +0200)]
Build: Fixed a bug in our unit tester.

10 years agoNull fastbuf: Clean ABI.
Pavel Charvat [Tue, 13 May 2014 10:54:10 +0000 (12:54 +0200)]
Null fastbuf: Clean ABI.

10 years agoMempools: mp_total_size() is O(1)
Martin Mares [Tue, 13 May 2014 10:14:49 +0000 (12:14 +0200)]
Mempools: mp_total_size() is O(1)

10 years agoMerge branch 'master' of ssh://git.ucw.cz/projects/libucw/GIT/libucw
Pavel Charvat [Tue, 13 May 2014 07:45:33 +0000 (09:45 +0200)]
Merge branch 'master' of ssh://git.ucw.cz/projects/libucw/GIT/libucw

10 years agoNull fastbuf: Implemented a new "/dev/null"-like fastbuf.
Pavel Charvat [Tue, 13 May 2014 07:44:38 +0000 (09:44 +0200)]
Null fastbuf: Implemented a new "/dev/null"-like fastbuf.

10 years agoXML: "PUSH" in comments should be "PULL"
Martin Mares [Sat, 10 May 2014 21:50:46 +0000 (23:50 +0200)]
XML: "PUSH" in comments should be "PULL"

10 years agoPackages: Implemented `debian/mk --extra-conf=...'.
Pavel Charvat [Wed, 7 May 2014 08:28:18 +0000 (10:28 +0200)]
Packages: Implemented `debian/mk --extra-conf=...'.

10 years agoImages: Fixed dependencies in `make tests'.
Pavel Charvat [Wed, 7 May 2014 07:57:11 +0000 (09:57 +0200)]
Images: Fixed dependencies in `make tests'.

10 years agoImages: Fixed compilation problems with enabled GraphicsMagick.
Pavel Charvat [Wed, 7 May 2014 07:50:21 +0000 (09:50 +0200)]
Images: Fixed compilation problems with enabled GraphicsMagick.

10 years agoImages: Fixed linkage of libpthread.
Pavel Charvat [Wed, 7 May 2014 07:36:38 +0000 (09:36 +0200)]
Images: Fixed linkage of libpthread.

10 years agoBuild: Fixed few compilation warnings/errors.
Pavel Charvat [Wed, 7 May 2014 07:29:58 +0000 (09:29 +0200)]
Build: Fixed few compilation warnings/errors.

10 years agoMemory pools: Add a reference from each chunk to its memory pool (in debug mode).
Pavel Charvat [Wed, 7 May 2014 07:19:43 +0000 (09:19 +0200)]
Memory pools: Add a reference from each chunk to its memory pool (in debug mode).

10 years agoBuild: Silenced several compilation warnings on some versions of gcc.
Pavel Charvat [Wed, 7 May 2014 07:05:12 +0000 (09:05 +0200)]
Build: Silenced several compilation warnings on some versions of gcc.

10 years agoasserts: Added ASSERT_MSG to print a debug msg together with assertion fail.
Tomas Valla [Mon, 28 Apr 2014 09:13:48 +0000 (11:13 +0200)]
asserts: Added ASSERT_MSG to print a debug msg together with assertion fail.

10 years agoUCW::CGI: Let url_param_escape() encode non-ASCII characters
Martin Mares [Fri, 18 Apr 2014 10:44:53 +0000 (12:44 +0200)]
UCW::CGI: Let url_param_escape() encode non-ASCII characters

RFC 3986 (generic URI syntax) explicitly says this must be done
and some URI parsers choke on them.

Anyway, I am keeping bare url_escape() as is for the time being,
because it's used for production of user-friendly URLs, too. Needs
cleanup later.

10 years agoBuild: LibUCW should depend on -lm.
Pavel Charvat [Fri, 4 Apr 2014 09:52:00 +0000 (11:52 +0200)]
Build: LibUCW should depend on -lm.

10 years agoDaemon: Make user/group switching available separately
Martin Mares [Mon, 10 Mar 2014 22:00:32 +0000 (23:00 +0100)]
Daemon: Make user/group switching available separately

10 years agoOpt: Fixed confused macros
Martin Mares [Mon, 24 Feb 2014 11:55:04 +0000 (12:55 +0100)]
Opt: Fixed confused macros

10 years agoOpt: "--help" can stand both before and after config options
Martin Mares [Mon, 17 Feb 2014 17:49:48 +0000 (18:49 +0100)]
Opt: "--help" can stand both before and after config options

The OPT_BEFORE_CONFIG flag was incorrectly interpreted as "this is
a config option", so "--help" after all options did not work as
expected.

Now, OPT_BEFORE_CONFIG means "the option can stand anywhere and the
config check logic should not touch it".

10 years agoOpt: Improved parsing of negative boolean options
Martin Mares [Mon, 17 Feb 2014 17:41:33 +0000 (18:41 +0100)]
Opt: Improved parsing of negative boolean options

Boolean options with the OPT_NEGATIVE flag, which are named "no-X",
are also recognized as bare "X" with positive meaning.

Include tests for processing of both positive and negative bools.

10 years agoOpt: OPT_NO_HELP is gone
Martin Mares [Mon, 17 Feb 2014 17:12:58 +0000 (18:12 +0100)]
Opt: OPT_NO_HELP is gone

10 years agoOpt: Fixed a typo in OPT_UINT.
Pavel Charvat [Mon, 17 Feb 2014 12:14:14 +0000 (13:14 +0100)]
Opt: Fixed a typo in OPT_UINT.

10 years agoOpt: Implemented OPT_UINT.
Pavel Charvat [Mon, 17 Feb 2014 12:07:03 +0000 (13:07 +0100)]
Opt: Implemented OPT_UINT.

10 years agoTypes: Defined `uint' as a replacement for `uns'.
Pavel Charvat [Mon, 17 Feb 2014 12:05:42 +0000 (13:05 +0100)]
Types: Defined `uint' as a replacement for `uns'.

10 years agoFastbufs: Fixed an off-by-one error in bprintf().
Pavel Charvat [Wed, 12 Feb 2014 15:07:06 +0000 (16:07 +0100)]
Fastbufs: Fixed an off-by-one error in bprintf().

10 years agoPackages: Small fix in `debian/mk --gen-script'.
Pavel Charvat [Fri, 7 Feb 2014 11:27:50 +0000 (12:27 +0100)]
Packages: Small fix in `debian/mk --gen-script'.

10 years agoPackages: Implemented `debian/mk --no-source'.
Pavel Charvat [Fri, 7 Feb 2014 11:25:27 +0000 (12:25 +0100)]
Packages: Implemented `debian/mk --no-source'.

10 years agoLibUCW: debian/mk can postprocess debian/control with a custom script.
Pavel Charvat [Fri, 7 Feb 2014 08:54:31 +0000 (09:54 +0100)]
LibUCW: debian/mk can postprocess debian/control with a custom script.

10 years agoOpt: Fixed a bug in positional arguments.
Pavel Charvat [Thu, 6 Feb 2014 11:17:34 +0000 (12:17 +0100)]
Opt: Fixed a bug in positional arguments.

10 years agoOpt: Avoid fixed constants, use OPT_POSITIONAL_TAIL
Martin Mares [Thu, 6 Feb 2014 09:52:26 +0000 (10:52 +0100)]
Opt: Avoid fixed constants, use OPT_POSITIONAL_TAIL

10 years agoPackages: Removed the "-dev" suffix from UCW_ABI_SUFFIX.
Pavel Charvat [Tue, 4 Feb 2014 12:32:49 +0000 (13:32 +0100)]
Packages: Removed the "-dev" suffix from UCW_ABI_SUFFIX.

10 years agoMerge branch 'master' of ssh://jabberwock.ucw.cz/projects/libucw/GIT/libucw
Pavel Charvat [Tue, 4 Feb 2014 12:31:34 +0000 (13:31 +0100)]
Merge branch 'master' of ssh://jabberwock.ucw.cz/projects/libucw/GIT/libucw

10 years agoLogging: Stream filters are permitted to modify log messages
Martin Mares [Tue, 4 Feb 2014 12:55:23 +0000 (13:55 +0100)]
Logging: Stream filters are permitted to modify log messages

10 years agoPackages: The version number appended to names of libraries is detected from ucw...
Pavel Charvat [Tue, 4 Feb 2014 12:29:25 +0000 (13:29 +0100)]
Packages: The version number appended to names of libraries is detected from ucw/default.cfg instead of the tag.

10 years agoDoc: Moskyto has a homepage
Jan 'Moskyt' Matejka [Thu, 30 Jan 2014 23:50:54 +0000 (00:50 +0100)]
Doc: Moskyto has a homepage

10 years agowebpage: Updated for v6.0, author list and feature list.
Tomas Valla [Thu, 30 Jan 2014 22:28:54 +0000 (23:28 +0100)]
webpage: Updated for v6.0, author list and feature list.

10 years agoDebian: Let git describe use unsigned tags, too
Martin Mares [Tue, 28 Jan 2014 23:52:40 +0000 (00:52 +0100)]
Debian: Let git describe use unsigned tags, too

10 years agoAPI: Include tbf.h and trie.h
Martin Mares [Tue, 28 Jan 2014 23:52:12 +0000 (00:52 +0100)]
API: Include tbf.h and trie.h

10 years agoDoc: Fixed function references v5.99
Martin Mares [Tue, 28 Jan 2014 23:40:15 +0000 (00:40 +0100)]
Doc: Fixed function references

10 years agoRelease: Use "make install-libucw-docs" to generate documentation
Martin Mares [Tue, 28 Jan 2014 23:11:37 +0000 (00:11 +0100)]
Release: Use "make install-libucw-docs" to generate documentation

10 years agoMaint: Automatic uploads of documentation
Martin Mares [Tue, 28 Jan 2014 22:14:52 +0000 (23:14 +0100)]
Maint: Automatic uploads of documentation

10 years agoDoc: Release dates
Martin Mares [Tue, 28 Jan 2014 22:13:49 +0000 (23:13 +0100)]
Doc: Release dates

10 years agoABI: Updated symbol renames
Martin Mares [Tue, 28 Jan 2014 21:56:32 +0000 (22:56 +0100)]
ABI: Updated symbol renames

10 years agoMaint: Moved ABI tools to maint/
Martin Mares [Tue, 28 Jan 2014 21:55:07 +0000 (22:55 +0100)]
Maint: Moved ABI tools to maint/

10 years agoDoc: Updated the list of contributors
Martin Mares [Tue, 28 Jan 2014 21:48:47 +0000 (22:48 +0100)]
Doc: Updated the list of contributors

10 years agoDoc: Documented growing arrays, generic allocators and related things
Martin Mares [Tue, 28 Jan 2014 21:39:20 +0000 (22:39 +0100)]
Doc: Documented growing arrays, generic allocators and related things

10 years agoIntroduced generic allocators
Martin Mares [Tue, 28 Jan 2014 20:50:04 +0000 (21:50 +0100)]
Introduced generic allocators

The concept of generic allocators, previously used locally in gary's,
turned out to be very promising and applicable to other data structures
in the future.

So I decided to decouple allocators from gary.[ch] and introduce them
to the society of libucw primitives.

<ucw/alloc.h> now provides allocators for malloc and zeroed malloc,
each mempool can also serve as an allocator (the current implementation
has an instance of struct ucw_allocator in each struct mempool, but
it is always accessed through an inline function, so it can be changed
if the overhead is deemed too heavy).

Growing arrays have been redefined in terms of generic allocators.

The realloc module has been merged to alloc.c to keep our malloc
wrappers together.

10 years agoConf: Dynamic arrays re-implemented as gary's
Martin Mares [Tue, 28 Jan 2014 20:18:48 +0000 (21:18 +0100)]
Conf: Dynamic arrays re-implemented as gary's

To the outside world, almost nothing changes as DARY_LEN is emulated.
However, static initializers are no longer possible, so DARY_ALLOC
is gone.

The current implementation is not elegant. It will be improved soon.

10 years agoOpt: OPT_MULTIPLE with clists replaced by OPT_CL_MULTIPLE with gary's
Martin Mares [Tue, 28 Jan 2014 17:28:57 +0000 (18:28 +0100)]
Opt: OPT_MULTIPLE with clists replaced by OPT_CL_MULTIPLE with gary's

10 years agoGary: Type-agnostic push
Martin Mares [Tue, 28 Jan 2014 17:28:20 +0000 (18:28 +0100)]
Gary: Type-agnostic push

10 years agoOpt: Document CT_USER with optional values
Martin Mares [Tue, 28 Jan 2014 17:00:25 +0000 (18:00 +0100)]
Opt: Document CT_USER with optional values

10 years agoOpt: User-defined types are specified as CT_USER, not OPT_CL_USER
Martin Mares [Tue, 28 Jan 2014 16:45:31 +0000 (17:45 +0100)]
Opt: User-defined types are specified as CT_USER, not OPT_CL_USER

10 years agoGary: Added growing arrays over mempools
Martin Mares [Tue, 28 Jan 2014 16:31:28 +0000 (17:31 +0100)]
Gary: Added growing arrays over mempools

10 years agoThreads: Renamed default_ucwlib_context to ucwlib_default_context
Martin Mares [Tue, 28 Jan 2014 16:03:53 +0000 (17:03 +0100)]
Threads: Renamed default_ucwlib_context to ucwlib_default_context

10 years agoGary: Symbol renames
Martin Mares [Tue, 28 Jan 2014 16:03:12 +0000 (17:03 +0100)]
Gary: Symbol renames

10 years agoAPI: Introduced exceptions for common mistakes of the symbol mapper
Martin Mares [Tue, 28 Jan 2014 16:02:42 +0000 (17:02 +0100)]
API: Introduced exceptions for common mistakes of the symbol mapper

10 years agoGary: Gary now works over a general allocator
Martin Mares [Tue, 28 Jan 2014 15:51:26 +0000 (16:51 +0100)]
Gary: Gary now works over a general allocator

Zeroed gary's are no longer a special case.

Maybe the same system of allocators could be useful in other
parts of the library, too. Let me know if you have an idea.

10 years agoDoc: Indentation
Martin Mares [Tue, 28 Jan 2014 15:30:41 +0000 (16:30 +0100)]
Doc: Indentation

10 years agoGary: GARY_PUSH and GARY_POP have lost the 2nd argument
Martin Mares [Tue, 28 Jan 2014 15:27:54 +0000 (16:27 +0100)]
Gary: GARY_PUSH and GARY_POP have lost the 2nd argument

Having to tell "yessir, just one element" on each call was just too
inconvenient.

10 years agoGary: Remove unused gary_free()
Martin Mares [Tue, 28 Jan 2014 15:13:01 +0000 (16:13 +0100)]
Gary: Remove unused gary_free()

10 years agoPrepared for release of Libucw 6.0
Martin Mares [Mon, 27 Jan 2014 23:51:11 +0000 (00:51 +0100)]
Prepared for release of Libucw 6.0

10 years agoOpt: Added missing reference
Martin Mares [Mon, 27 Jan 2014 23:41:02 +0000 (00:41 +0100)]
Opt: Added missing reference

10 years agoOpt: Forgot to describe help columns
Martin Mares [Mon, 27 Jan 2014 23:39:44 +0000 (00:39 +0100)]
Opt: Forgot to describe help columns

10 years agoMerge branch 'dev-opt'
Martin Mares [Mon, 27 Jan 2014 23:24:57 +0000 (00:24 +0100)]
Merge branch 'dev-opt'

10 years agoOpt: Documented opt and its interaction with conf
Martin Mares [Mon, 27 Jan 2014 23:24:27 +0000 (00:24 +0100)]
Opt: Documented opt and its interaction with conf

10 years agoDoc: Newer versions of AsciiDoc require [footer-text]
Martin Mares [Mon, 27 Jan 2014 20:32:22 +0000 (21:32 +0100)]
Doc: Newer versions of AsciiDoc require [footer-text]

10 years agoOpt: State of opt-conf moved to opt_context
Martin Mares [Mon, 27 Jan 2014 20:03:50 +0000 (21:03 +0100)]
Opt: State of opt-conf moved to opt_context

It gives a better feeling to get rid of magical static variables
in functions :)

10 years agoOpt: OPT_HELP_OPTION does not need passing pointer to current definitions
Martin Mares [Mon, 27 Jan 2014 19:59:02 +0000 (20:59 +0100)]
Opt: OPT_HELP_OPTION does not need passing pointer to current definitions

I have introduced a new flag OPT_INTERNAL / OPT_HOOK_INTERNAL, which
can be used by internal handlers and hooks to get the pointer to the
current opt_context.

10 years agoLet <ucw/lib.h> include <stdbool.h> automatically
Martin Mares [Mon, 27 Jan 2014 19:45:28 +0000 (20:45 +0100)]
Let <ucw/lib.h> include <stdbool.h> automatically

10 years agoOpt: TODO cleared
Martin Mares [Mon, 27 Jan 2014 19:29:04 +0000 (20:29 +0100)]
Opt: TODO cleared

10 years agoOpt: opt_failure() is public, opt_usage() not so
Martin Mares [Mon, 27 Jan 2014 19:28:16 +0000 (20:28 +0100)]
Opt: opt_failure() is public, opt_usage() not so

10 years agoOpt: Generalization of hooks
Martin Mares [Mon, 27 Jan 2014 19:23:18 +0000 (20:23 +0100)]
Opt: Generalization of hooks

Hooks can specify a subset of events they wish to receive.
Helps to get rid of lots of special-casing.

In particular, the end of parsing is also an event, so that we
can load configuration if it has not been loaded yet. (This was
a bug in the original implementation, which never turned up,
because opt-test has mandatory arguments.)

10 years agoOpt: Cleaned up opt-conf
Martin Mares [Mon, 27 Jan 2014 19:05:15 +0000 (20:05 +0100)]
Opt: Cleaned up opt-conf

First of all, the names of configuration options are no longer
fixed. Each of these options has its own handler and as long as
OPT_CONF_HOOK is used, the caller is free to define configuration
options with the names and help texts of his choice.

The same applies to --help.

To achieve these goals, the OPT_BEFORE_CONFIG flag has been
introduced.

10 years agoOpt: Make OPT_LAST_ARG actually work and document interface of opt_parse()
Martin Mares [Mon, 27 Jan 2014 18:38:25 +0000 (19:38 +0100)]
Opt: Make OPT_LAST_ARG actually work and document interface of opt_parse()

10 years agoOpt: Split to three separate modules
Martin Mares [Mon, 27 Jan 2014 18:23:30 +0000 (19:23 +0100)]
Opt: Split to three separate modules

One handles parsing, one displaying of help, and one interfaces
with conf.

10 years agoOpt: Rewritten formatting of help
Martin Mares [Mon, 27 Jan 2014 17:42:01 +0000 (18:42 +0100)]
Opt: Rewritten formatting of help

Previous implementation of opt_help() had several drawbacks:
First, it formatted each section separately, so the columns
did not aligh. Second, it did produced incorrect output for
options which possess only the short form.

I hope that the new implementation is cleaner and easier to extend.

10 years agoOpt: exit() does not return, no need to call va_end() afterwards
Martin Mares [Mon, 27 Jan 2014 16:18:02 +0000 (17:18 +0100)]
Opt: exit() does not return, no need to call va_end() afterwards

10 years agoOpt: Simpified and corrected processing of OPT_SINGLE
Martin Mares [Mon, 27 Jan 2014 16:13:46 +0000 (17:13 +0100)]
Opt: Simpified and corrected processing of OPT_SINGLE

OPT_SINGLE is now checked in opt_parse_value(). Previously, short,
long, and positional options had their own checks.

OPT_CL_SWITCH did not allow changing the value of the switch once
it is set, although documentation in opt.h claimed quite the opposite.
Changes are currently allowed unless OPT_SINGLE is set.

Test cases have been updated accordingly.

10 years agoOpt: Fix bug introduced by my cleanups
Martin Mares [Mon, 27 Jan 2014 16:03:19 +0000 (17:03 +0100)]
Opt: Fix bug introduced by my cleanups

10 years agoOpt: Improved reporting of errors
Martin Mares [Mon, 27 Jan 2014 15:59:13 +0000 (16:59 +0100)]
Opt: Improved reporting of errors

Introduced opt_name() and THIS_OPT, which can be used in error
messages whenever you have a pointer to struct opt_precomputed ready.

10 years agoOpt: Streamlined opt_parse_value()
Martin Mares [Mon, 27 Jan 2014 15:43:52 +0000 (16:43 +0100)]
Opt: Streamlined opt_parse_value()

10 years agoOpt: Streamlined parsing of long options
Martin Mares [Mon, 27 Jan 2014 15:14:56 +0000 (16:14 +0100)]
Opt: Streamlined parsing of long options

Also, in error messages, we call them options, not arguments.

10 years agoOpt: Accept arguments for short options even in bundles
Martin Mares [Mon, 27 Jan 2014 14:57:32 +0000 (15:57 +0100)]
Opt: Accept arguments for short options even in bundles

Traditional getopt() seems to support this, so we should, too.

10 years agoOpt: Updated test case
Martin Mares [Mon, 27 Jan 2014 14:55:20 +0000 (15:55 +0100)]
Opt: Updated test case

Printing non-ASCII characters for positional arguments is a little
bit crazy, I will hopefully clean it up later.

10 years agoOpt: Streamlined opt_shortopt()
Martin Mares [Mon, 27 Jan 2014 14:51:47 +0000 (15:51 +0100)]
Opt: Streamlined opt_shortopt()

Also, we reject non-ASCII short options, which enabled us to lower
OPT_POSITIONAL_TAIL to 128 and thus save memory.