this is a DMR anecdote?

On Tue, Jul 10, 2018 at 6:32 PM Larry McVoy <lm@mcvoy.com> wrote:
On Wed, Jul 11, 2018 at 10:20:50AM +1000, Noel Hunt wrote:
> I'm surprised why anyone would bother with these routines
> anymore, given the startling simplicity of Plan9's arg(3).
> One stands in awe of such simplicity. I believe it was
> William Cheswick who designed it, but I may be wrong.

It's nice but I like long opts.  The getopt in BK (and now in L)
looks like this and produces its own help (which does miss the
short opts, my bad, I could fix that).  Look at the default in
the switch:

int
main(int ac, string av[])
{
        string  c;
        string  lopts[] = {
                "bigy:",
                "date-split",
                "exif",
                "exif-hover",
                "force",
                "index:",
                "names",
                "nav",
                "parallel:",
                "quiet",
                "regen",
                "reverse",
                "sharpen",
                "slide:",
                "thumbnails",
                "title:",
                "ysize:",
        };

        while (c = getopt(av, "fj:", lopts)) {
                switch (c) {
                    case "bigy": bigy = (int)optarg; break;
                    case "date-split": dates = 1; break;
                    case "exif": exif = 1; break;
                    case "exif-hover": exif_hover = 1; break;
                    case "f":
                    case "force":
                    case "regen":
                        force = 1; break;
                    case "index": indexf = optarg; break;
                    case "j":
                    case "parallel": parallel = (int)optarg; break;
                    case "quiet": quiet = 1; break;
                    case "names": names = 1; break;
                    case "nav": nav = 1; break;
                    case "reverse": reverse = 1; break;
                    case "sharpen": sharpen = 1; break;
                    case "slide": slidef = optarg; break;
                    case "title": title = optarg; break;
                    case "thumbnails": thumbnails = 1; break;
                    case "ysize": ysize = (int)optarg; break;
                    default:
                        printf("Usage: photos.l");
                        foreach(c in lopts) {
                                if (c =~ /(.*):/) {
                                        printf(" --%s=<val>", $1);
                                } else {
                                        printf(" --%s", c);
                                }
                        }
                        printf("\n");
                        return(0);
                }
        }