lel

Fork of Hiltjo's Farbfeld image viewer. (It was just for fun, not much use)
Log | Files | Refs | README | LICENSE

commit 984dc5ee73d47dd3dfd4f0626b925ce8deba028d
parent ea2fe74bd173dabd623c7135f762ebc5fee93a3e
Author: Jacob R. Edwards <jacobouno@protonmail.com>
Date:   Sun, 18 Apr 2021 14:42:30 -0700

Used getopt(3) for argument processing

The getopt function is pretty simple really, much simpler than
ARGBEGIN and the like. It also doesn't need to be re-compiled every
time.

Diffstat:
Darg.h | 63---------------------------------------------------------------
Mlel.c | 46+++++++++++++++++++---------------------------
2 files changed, 19 insertions(+), 90 deletions(-)

diff --git a/arg.h b/arg.h @@ -1,63 +0,0 @@ -/* - * Copy me if you can. - * by 20h - */ - -#ifndef ARG_H__ -#define ARG_H__ - -extern char *argv0; - -/* use main(int argc, char *argv[]) */ -#define ARGBEGIN for (argv0 = *argv, argv++, argc--;\ - argv[0] && argv[0][1]\ - && argv[0][0] == '-';\ - argc--, argv++) {\ - char argc_;\ - char **argv_;\ - int brk_;\ - if (argv[0][1] == '-' && argv[0][2] == '\0') {\ - argv++;\ - argc--;\ - break;\ - }\ - for (brk_ = 0, argv[0]++, argv_ = argv;\ - argv[0][0] && !brk_;\ - argv[0]++) {\ - if (argv_ != argv)\ - break;\ - argc_ = argv[0][0];\ - switch (argc_) - -/* Handles obsolete -NUM syntax */ -#define ARGNUM case '0':\ - case '1':\ - case '2':\ - case '3':\ - case '4':\ - case '5':\ - case '6':\ - case '7':\ - case '8':\ - case '9' - -#define ARGEND }\ - } - -#define ARGC() argc_ - -#define ARGNUMF(base) (brk_ = 1, estrtol(argv[0], (base))) - -#define EARGF(x) ((argv[0][1] == '\0' && argv[1] == NULL)?\ - ((x), abort(), (char *)0) :\ - (brk_ = 1, (argv[0][1] != '\0')?\ - (&argv[0][1]) :\ - (argc--, argv++, argv[0]))) - -#define ARGF() ((argv[0][1] == '\0' && argv[1] == NULL)?\ - (char *)0 :\ - (brk_ = 1, (argv[0][1] != '\0')?\ - (&argv[0][1]) :\ - (argc--, argv++, argv[0]))) - -#endif diff --git a/lel.c b/lel.c @@ -15,9 +15,6 @@ #include <X11/Xutil.h> #include <X11/keysym.h> -#include "arg.h" -char *argv0; - /* Image status flags. */ enum { NONE = 0, LOADED = 1, SCALED = 2, DRAWN = 4 }; @@ -74,13 +71,6 @@ die(char *s) edie(errno, s); } -static void -usage(void) -{ - fprintf(stderr, "usage: %s [-afv] [file...]\n", getprogname()); - exit(1); -} - static int ff_open(struct img *img, FILE *fp) { @@ -500,26 +490,28 @@ run(void) int main(int argc, char *argv[]) { - FILE *fp; - int i, j; - - ARGBEGIN { - case 'a': - viewmode = FULL_ASPECT; - break; - case 'f': - viewmode = FULL_STRETCH; - break; - default: - usage(); - break; - } ARGEND; + int c; + + while ((c = getopt(argc, argv, "af")) != -1) { + switch (c) { + case 'a': + viewmode = FULL_ASPECT; + break; + case 'f': + viewmode = FULL_STRETCH; + break; + default: + fprintf(stderr, "usage: %s [-afv] [file...]\n", + getprogname()); + exit(1); + } + } img.view.zoomfact = 1.0; - imgs = argv; - nimgs = argc; - if (!argc) { + imgs = argv + optind; + nimgs = argc - optind; + if (!nimgs) { ++nimgs; *imgs = "/dev/stdin"; }