BarryServer : Git

All the code for all my projects
// BarryServer : Git / OrionUserland / blob / f8ba6df5ab36d7554d045837b3f053ab6db75e5d / ls / arg.h

// Related

OrionUserland

Barry Importing existing Orion Userland 19aefaa (2 years, 4 months ago)
#ifndef ARG_H
#define ARG_H

extern char *progname;

#define ARGBEGIN for (progname = *argv, argv++, argc--; \
		      argc && argv[0] && argv[0][0] == '-' \
		      && argv[0][1]; \
		      argc--, argv++) { \
			char argc_, **argv_; \
			int brk_; \
			if (argv[0][1] == '-' && argv[0][2] == '\0') { \
				argv++; \
				argc--; \
				break; \
			} \
			int i_; \
			for (i_ = 1, brk_ = 0, argv_ = argv; \
			     argv[0][i_] && !brk_; \
			     i_++) { \
				if (argv_ != argv) \
					break; \
				argc_ = argv[0][i_]; \
				switch (argc_)
#define ARGEND 		} \
		}

#define ARGC() argc_

#define EARGF(x) ((argv[0][i_+1] == '\0' && argv[1] == NULL) ? \
		 	((x), abort(), (char *) 0) : \
		 	(brk_ = 1, (argv[0][i_+1] != '\0') ? \
		 		(&argv[0][i_+1]) : \
		 		(argc--, argv++, argv[0])))

#define ARGF() ((argv[0][i_+1] == '\0' && argv[1] == NULL) ? \
			(char *) 0 : \
			(brk_ = 1, (argv[0][i_+1] != '\0') ? \
				(&argv[0][i_+1]) : \
				(argc--, argv++, argv[0])))

#endif