BarryServer : Git

All the code for all my projects
// BarryServer : Git / OrionUserland / commit / 19aefaad8af9de8719ba1e5b5340e0a1b9c68853 / ls / arg.h

// Related

OrionUserland

Barry Importing existing Orion Userland 19aefaa (2 years, 4 months ago)
diff --git a/ls/arg.h b/ls/arg.h
new file mode 100644
index 0000000..9022339
--- /dev/null
+++ b/ls/arg.h
@@ -0,0 +1,42 @@
+#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