Recently Written · git

sad

sad (2f30.org simple audio daemon) with a Cygwin/OSS port on branch cygwin

git clone https://github.com/equwal/sad

Log | Files | Refs


commit 7d484bfef637b1003d6d5dfeacbde23b84754cb5
sin <sin@2f30.org>
2014-12-27 20:31:58 +0000

Add arg.h

 Makefile |  2 +-
 arg.h    | 63 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 sad.c    |  2 +-
 3 files changed, 65 insertions(+), 2 deletions(-)
diff --git a/Makefile b/Makefile
index bc13189..2c90e7c 100644
--- a/Makefile
+++ b/Makefile
@@ -33,7 +33,7 @@ all: $(BIN)
 $(BIN): $(OBJ)
 	$(CC) $(CFLAGS) $(LDFLAGS) -o $@ $(OBJ) $(LDLIBS)
 
-$(OBJ): compat.h config.h sad.h
+$(OBJ): arg.h compat.h config.h sad.h
 
 install: all
 	mkdir -p $(DESTDIR)$(PREFIX)/bin
diff --git a/arg.h b/arg.h
new file mode 100644
index 0000000..4df77a7
--- /dev/null
+++ b/arg.h
@@ -0,0 +1,63 @@
+/*
+ * 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/sad.c b/sad.c
index c595fb9..111bf6e 100644
--- a/sad.c
+++ b/sad.c
@@ -64,7 +64,7 @@ static void
 playaudio(void)
 {
 	Song    *s;
-	unsigned char buf[4096];
+	unsigned char buf[2048];
 	int      nbytes;
 
 	s = getcursong();