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);
}
}