dos33fsprogs
dos33fsprogs copied to clipboard
Various utils (at least dos33fs-utils and prodos-utils): documentation of options placement is wrong on BSD-ish platforms.
The problem is that BSD/traditional Unixes (including Darwin/Mac OS, which impacts me), use a getopt()
that, by default, demands that all the options be specified before any non-option arguments.
So, while e.g. dos33 -h gives:
Usage: dos33 [-h] [-y] [-x] disk_image COMMAND [options]
the reality is that, on my Mac, all of the options to COMMAND must be placed before the disk_image argument in order to be recognized by getopt()
.
That is, I may not portably type:
dos33 -y MY-DISK.DSK BSAVE -a 0x6000 MYBIN
but instead:
dos33 -y -a 0x6000 MY-DISK.DSK BSAVE MYBIN
Suggested solutions:
- you could run
getopt()
once for 'hyx', and then run it again after moving theargv
pointer past the disk_image and COMMAND arguments, so thatgetopt()
"sees" the following options as coming first. - probably easier - I believe most modern BSDish systems can be more relaxed about where options are placed on the command line, either with an appropriate macro
#define
d, or by calling a differently-namedgetopt()
routine?
Thanks for figuring this one out @micahcowan, I had the same problem, I will see if I can find some special #define as you suggest
I've submitted PR #22 should fix dos33 for BSD (or Mac OSX) users while being compatible with linux, I tested both. If it is accepted I can check elsewhere, like prodos-utils as you suggest.