799b6b0bb4cb1d6a31edc81b0880eb22332df137
[assman] / examples / asscat / asscat.c
1 #include <stdio.h>
2 #include <string.h>
3 #include "assman.h"
4
5 void print_usage(const char *argv0);
6
7 int main(int argc, char **argv)
8 {
9         int i, rdsz;
10         const char *prefix = 0;
11         ass_file *fp;
12         static char buf[1024];
13
14         for(i=1; i<argc; i++) {
15                 if(argv[i][0] == '-') {
16                         if(strcmp(argv[i], "-prefix") == 0) {
17                                 prefix = argv[++i];
18
19                         } else if(strcmp(argv[i], "-path") == 0) {
20                                 ass_add_path(prefix, argv[++i]);
21
22                         } else if(strcmp(argv[i], "-archive") == 0) {
23                                 ass_add_archive(prefix, argv[++i]);
24
25                         } else if(strcmp(argv[i], "-url") == 0) {
26                                 ass_add_url(prefix, argv[++i]);
27
28                         } else if(strcmp(argv[i], "-help") == 0 || strcmp(argv[i], "-h") == 0) {
29                                 print_usage(argv[0]);
30                                 return 0;
31
32                         } else {
33                                 fprintf(stderr, "invalid option: %s\n", argv[i]);
34                                 return 1;
35                         }
36
37                 } else {
38                         if(!(fp = ass_fopen(argv[i], "rb"))) {
39                                 fprintf(stderr, "failed to open asset: %s: %s\n", argv[i], strerror(ass_errno));
40                                 return 1;
41                         }
42                         while((rdsz = ass_fread(buf, 1, sizeof buf, fp)) > 0) {
43                                 fwrite(buf, 1, rdsz, stdout);
44                         }
45                         fflush(stdout);
46                         ass_fclose(fp);
47                 }
48         }
49
50         return 0;
51 }
52
53 void print_usage(const char *argv0)
54 {
55         printf("Usage: %s [options] <file 1> <file 2> ... <file n>\n");
56         printf("Options:\n");
57         printf(" -prefix <prefix>   sets the path prefix to match for subsequent asset sources\n");
58         printf(" -path <path>       filesystem asset source\n");
59         printf(" -archive <archive> archive asset source\n");
60         printf(" -url <url>         url asset source\n");
61         printf(" -h,-help           print usage and exit\n");
62 }