dos33fsprogs icon indicating copy to clipboard operation
dos33fsprogs copied to clipboard

Various utils (at least dos33fs-utils and prodos-utils): documentation of options placement is wrong on BSD-ish platforms.

Open micahcowan opened this issue 2 years ago • 2 comments

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:

  1. you could run getopt() once for 'hyx', and then run it again after moving the argv pointer past the disk_image and COMMAND arguments, so that getopt() "sees" the following options as coming first.
  2. 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 #defined, or by calling a differently-named getopt() routine?

micahcowan avatar Jul 26 '22 23:07 micahcowan

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

jquast avatar Jul 23 '23 23:07 jquast

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.

jquast avatar Jul 24 '23 05:07 jquast