| @@ -3,6 +3,12 @@ · 2 unmodified lines |
| 3 | 3 | #include <bio.h> |
| 4 | 4 | #include "common.h" |
| 5 | 5 | |
| 6 | +enum |
| 7 | +{ |
| 8 | + Outbufsz = 256*1024, |
| 9 | + Inbufsz = 256*1024, |
| 10 | +}; |
| 11 | + |
| 6 | 12 | Biobuf stderr, out; |
| 7 | 13 | int dflag, trackdump; |
| 8 | 14 | |
| @@ -16,9 +22,14 @@ usage(void) · 7 unmodified lines |
| 16 | 22 | void |
| 17 | 23 | main(int argc, char **argv) |
| 18 | 24 | { |
| 19 | | − Biobuf *f; |
| 25 | + u8int d[4], *outbuf, *inbuf; |
| 20 | 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 | 34 | dflag = 0; |
| 24 | 35 | trackdump = Nodump; |
| @@ -39,41 +50,42 @@ main(int argc, char **argv) · 14 unmodified lines |
| 39 | 50 | usage(); |
| 40 | 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 | 59 | if(argc == 1) |
| 44 | | − f = Bopen(*argv, OREAD); |
| 45 | | − else if(argc == 0) |
| 46 | | − f = Bfdopen(0, OREAD); |
| 47 | | − else |
| 60 | + fd = open(*argv, OREAD); |
| 61 | + else if(argc != 0) |
| 48 | 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 | 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 | 71 | status = nil; |
| 60 | | − if(Bread(f, d, 4) != 4){ |
| 72 | + if(Bread(&f, d, 4) != 4){ |
| 61 | 73 | Bprint(&stderr, "unknown format\n"); |
| 62 | 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 | 76 | Bprint(&stderr, "seek back failed: %r\n"); |
| 65 | 77 | status = "seek failed"; |
| 66 | 78 | }else if(memcmp(d, "\x1a\x45\xdf\xa3", 4) == 0){ |
| 67 | | − if(ebmlrun(f) != 0){ |
| 79 | + if(ebmlrun(&f) != 0){ |
| 68 | 80 | Bprint(&stderr, "embl: %r\n"); |
| 69 | 81 | status = "ebml failed"; |
| 70 | 82 | } |
| 71 | | − }else if(isorun(f) != 0){ |
| 83 | + }else if(isorun(&f) != 0){ |
| 72 | 84 | Bprint(&stderr, "iso: %r\n"); |
| 73 | 85 | status = "iso failed"; |
| 74 | 86 | } |
| 75 | 87 | |
| 76 | | − Bterm(f); |
| 88 | + Bterm(&f); |
| 77 | 89 | Bterm(&out); |
| 78 | 90 | Bterm(&stderr); |
| 79 | 91 | |