asscat example
[assman] / examples / asscat / asscat.c
diff --git a/examples/asscat/asscat.c b/examples/asscat/asscat.c
new file mode 100644 (file)
index 0000000..799b6b0
--- /dev/null
@@ -0,0 +1,62 @@
+#include <stdio.h>
+#include <string.h>
+#include "assman.h"
+
+void print_usage(const char *argv0);
+
+int main(int argc, char **argv)
+{
+       int i, rdsz;
+       const char *prefix = 0;
+       ass_file *fp;
+       static char buf[1024];
+
+       for(i=1; i<argc; i++) {
+               if(argv[i][0] == '-') {
+                       if(strcmp(argv[i], "-prefix") == 0) {
+                               prefix = argv[++i];
+
+                       } else if(strcmp(argv[i], "-path") == 0) {
+                               ass_add_path(prefix, argv[++i]);
+
+                       } else if(strcmp(argv[i], "-archive") == 0) {
+                               ass_add_archive(prefix, argv[++i]);
+
+                       } else if(strcmp(argv[i], "-url") == 0) {
+                               ass_add_url(prefix, argv[++i]);
+
+                       } else if(strcmp(argv[i], "-help") == 0 || strcmp(argv[i], "-h") == 0) {
+                               print_usage(argv[0]);
+                               return 0;
+
+                       } else {
+                               fprintf(stderr, "invalid option: %s\n", argv[i]);
+                               return 1;
+                       }
+
+               } else {
+                       if(!(fp = ass_fopen(argv[i], "rb"))) {
+                               fprintf(stderr, "failed to open asset: %s: %s\n", argv[i], strerror(ass_errno));
+                               return 1;
+                       }
+                       while((rdsz = ass_fread(buf, 1, sizeof buf, fp)) > 0) {
+                               fwrite(buf, 1, rdsz, stdout);
+                       }
+                       fflush(stdout);
+                       ass_fclose(fp);
+               }
+       }
+
+       return 0;
+}
+
+void print_usage(const char *argv0)
+{
+       printf("Usage: %s [options] <file 1> <file 2> ... <file n>\n");
+       printf("Options:\n");
+       printf(" -prefix <prefix>   sets the path prefix to match for subsequent asset sources\n");
+       printf(" -path <path>       filesystem asset source\n");
+       printf(" -archive <archive> archive asset source\n");
+       printf(" -url <url>         url asset source\n");
+       printf(" -h,-help           print usage and exit\n");
+}