Either I spotted a bug, or I don't understand the algorithm.
TCustomApplication.CheckOptions should check for a command line like this:
program -B file
Where -B is a short option without parameter.
CheckOptions always treats the parameter after a short option as parameter, no matter if B comes with the colon or not.
If this is a bug:
See lazarus/ide/lazbuild.lpr for a possible fix.
Mattias
