| @@ -3,6 +3,12 @@ · 2 unmodified lines |
| 3 | #include <bio.h> | 3 | #include <bio.h> |
| 4 | #include "common.h" | 4 | #include "common.h" |
| 5 | | 5 | |
| | 6 | enum |
| | 7 | { |
| | 8 | Outbufsz = 256*1024, |
| | 9 | Inbufsz = 256*1024, |
| | 10 | }; |
| | 11 | |
| 6 | Biobuf stderr, out; | 12 | Biobuf stderr, out; |
| 7 | int dflag, trackdump; | 13 | int dflag, trackdump; |
| 8 | | 14 | |
| @@ -16,9 +22,14 @@ usage(void) · 7 unmodified lines |
| 16 | void | 22 | void |
| 17 | main(int argc, char **argv) | 23 | main(int argc, char **argv) |
| 18 | { | 24 | { |
| 19 | Biobuf *f; | 25 | u8int d[4], *outbuf, *inbuf; |
| 20 | char *s, *status; | 26 | char *s, *status; |
| 21 | u8int d[4]; | 27 | Biobuf f; |
| | 28 | int fd; |
| | 29 | |
| | 30 | fmtinstall('H', encodefmt); |
| | 31 | fmtinstall('T', isotypefmt); |
| | 32 | fmtinstall('P', srttsfmt); |
| 22 | | 33 | |
| 23 | dflag = 0; | 34 | dflag = 0; |
| 24 | trackdump = Nodump; | 35 | trackdump = Nodump; |
| @@ -39,41 +50,42 @@ main(int argc, char **argv) · 14 unmodified lines |
| 39 | usage(); | 50 | usage(); |
| 40 | }ARGEND | 51 | }ARGEND |
| 41 | | 52 | |
| 42 | f = nil; | 53 | if((outbuf = malloc(Outbufsz)) == nil) |
| | 54 | sysfatal("memory"); |
| | 55 | if((inbuf = malloc(Inbufsz)) == nil) |
| | 56 | sysfatal("memory"); |
| | 57 | |
| | 58 | fd = 0; |
| 43 | if(argc == 1) | 59 | if(argc == 1) |
| 44 | f = Bopen(*argv, OREAD); | 60 | fd = open(*argv, OREAD); |
| 45 | else if(argc == 0) | 61 | else if(argc != 0) |
| 46 | f = Bfdopen(0, OREAD); | | |
| 47 | else | | |
| 48 | usage(); | 62 | usage(); |
| 49 | | 63 | |
| 50 | if(f == nil) | 64 | if(Binits(&f, fd, OREAD, inbuf, Inbufsz) != 0) |
| | 65 | sysfatal("%r"); |
| | 66 | if(Binits(&out, 1, OWRITE, outbuf, Outbufsz) != 0) |
| | 67 | sysfatal("%r"); |
| | 68 | if(Binit(&stderr, 2, OWRITE) != 0) |
| 51 | sysfatal("%r"); | 69 | sysfatal("%r"); |
| 52 | | | |
| 53 | fmtinstall('H', encodefmt); | | |
| 54 | fmtinstall('T', isotypefmt); | | |
| 55 | fmtinstall('P', srttsfmt); | | |
| 56 | Binit(&out, 1, OWRITE); | | |
| 57 | Binit(&stderr, 2, OWRITE); | | |
| 58 | | 70 | |
| 59 | status = nil; | 71 | status = nil; |
| 60 | if(Bread(f, d, 4) != 4){ | 72 | if(Bread(&f, d, 4) != 4){ |
| 61 | Bprint(&stderr, "unknown format\n"); | 73 | Bprint(&stderr, "unknown format\n"); |
| 62 | status = "unknown format"; | 74 | status = "unknown format"; |
| 63 | }else if(Bungetc(f) < 0 || Bungetc(f) < 0 || Bungetc(f) < 0 || Bungetc(f) < 0){ | 75 | }else if(Bungetc(&f) < 0 || Bungetc(&f) < 0 || Bungetc(&f) < 0 || Bungetc(&f) < 0){ |
| 64 | Bprint(&stderr, "seek back failed: %r\n"); | 76 | Bprint(&stderr, "seek back failed: %r\n"); |
| 65 | status = "seek failed"; | 77 | status = "seek failed"; |
| 66 | }else if(memcmp(d, "\x1a\x45\xdf\xa3", 4) == 0){ | 78 | }else if(memcmp(d, "\x1a\x45\xdf\xa3", 4) == 0){ |
| 67 | if(ebmlrun(f) != 0){ | 79 | if(ebmlrun(&f) != 0){ |
| 68 | Bprint(&stderr, "embl: %r\n"); | 80 | Bprint(&stderr, "embl: %r\n"); |
| 69 | status = "ebml failed"; | 81 | status = "ebml failed"; |
| 70 | } | 82 | } |
| 71 | }else if(isorun(f) != 0){ | 83 | }else if(isorun(&f) != 0){ |
| 72 | Bprint(&stderr, "iso: %r\n"); | 84 | Bprint(&stderr, "iso: %r\n"); |
| 73 | status = "iso failed"; | 85 | status = "iso failed"; |
| 74 | } | 86 | } |
| 75 | | 87 | |
| 76 | Bterm(f); | 88 | Bterm(&f); |
| 77 | Bterm(&out); | 89 | Bterm(&out); |
| 78 | Bterm(&stderr); | 90 | Bterm(&stderr); |
| 79 | | 91 | |