diff options
| -rw-r--r-- | snag/main.c | 5 | ||||
| -rw-r--r-- | snag/makefile | 2 | ||||
| -rw-r--r-- | snag/util.c | 15 | ||||
| -rw-r--r-- | snag/util.h | 6 |
4 files changed, 27 insertions, 1 deletions
diff --git a/snag/main.c b/snag/main.c index c3fc47a..eff1f2f 100644 --- a/snag/main.c +++ b/snag/main.c @@ -1,11 +1,16 @@ #include <stdio.h> #include "pkg_db.h" +#include "util.h" void subcmd_install(char* pkgs[], size_t count); int main(int argc, char* argv[]) { + char buf[4096]; + vstrcat(buf, "this ", "is", " a", " te", "st"); + fprintf(stderr, "buf: %s\n", buf); + // run install subcommand with each argument as a package subcmd_install(argv+1, argc-1); diff --git a/snag/makefile b/snag/makefile index b44020f..7af765e 100644 --- a/snag/makefile +++ b/snag/makefile @@ -3,7 +3,7 @@ CFLAGS = -Wall -g TARGET = snag -SRCS = main.c pkg_db.c +SRCS = main.c pkg_db.c util.c OBJS = $(SRCS:.c=.o) .SILENT: $(OBJS) $(TARGET) diff --git a/snag/util.c b/snag/util.c new file mode 100644 index 0000000..c4137f6 --- /dev/null +++ b/snag/util.c @@ -0,0 +1,15 @@ +#include <stdarg.h> +#include <string.h> + +void vstrcat_(char* dest, ...) { + va_list args; + va_start(args, dest); + while (1) { + char* arg = va_arg(args, char*); + if (!arg) break; + memcpy(dest, arg, strlen(arg)); + dest += strlen(arg); + } + va_end(args); + *dest = 0; +} diff --git a/snag/util.h b/snag/util.h new file mode 100644 index 0000000..88906cc --- /dev/null +++ b/snag/util.h @@ -0,0 +1,6 @@ +#ifndef UTIL_H +#define UTIL_H +#include <stdlib.h> +#define vstrcat(dest, ...) vstrcat_(dest, __VA_ARGS__, NULL) +void vstrcat_(char* dest, ...); +#endif // UTIL_H |
