X-Git-Url: https://git.distorted.org.uk/~mdw/dvdrip/blobdiff_plain/42c936a1884d40b6679ba9f7f80bf308c5fb1f7f..c62cd11a8bcfdacd01498ee08da82b2afa4b2f25:/dvd-sector-copy.c diff --git a/dvd-sector-copy.c b/dvd-sector-copy.c index f1f6d4e..e699741 100644 --- a/dvd-sector-copy.c +++ b/dvd-sector-copy.c @@ -805,26 +805,6 @@ static void emit(secaddr start, secaddr end) #undef BUFSECTORS } -struct buf { - char *p; - size_t n, sz; -}; -#define BUF_INIT { 0, 0, 0 } -#define BUF_REWIND(b) do { (b)->n = 0; } while (0) -#define BUF_FREE(b) do { \ - buf *_b = (b); \ - free(_b->p); _b->p = 0; _b->n = _b->sz = 0; \ -} while (0) -#define BUF_PUTC(b, ch) do { \ - struct buf *_b = (b); \ - if (_b->n >= _b->sz) { \ - _b->sz = _b->sz ? 2*_b->sz : 32; \ - _b->p = realloc(_b->p, _b->sz); \ - if (!_b->p) bail("out of memory allocating %zu bytes", _b->sz); \ - } \ - _b->p[_b->n] = (ch); \ -} while (0) - static int read_line(FILE *fp, struct buf *b) { int ch; @@ -832,11 +812,9 @@ static int read_line(FILE *fp, struct buf *b) ch = getc(fp); if (ch == EOF) return (-1); - else if (ch != '\n') do { - BUF_PUTC(b, ch); b->n++; - ch = getc(fp); - } while (ch != EOF && ch != '\n'); - BUF_PUTC(b, 0); + else if (ch != '\n') + do { buf_putc(b, ch); ch = getc(fp); } while (ch != EOF && ch != '\n'); + buf_putz(b); return (0); } @@ -1002,7 +980,7 @@ int main(int argc, char *argv[]) bail_syserr(errno, "failed to open ranges file `%s'", optarg); i = 0; last = -1; for (;;) { - BUF_REWIND(&buf); if (read_line(fp, &buf)) break; + buf_rewind(&buf); if (read_line(fp, &buf)) break; p = buf.p; i++; while (ISSPACE(*p)) p++; if (!*p || *p == '#') continue; @@ -1028,7 +1006,7 @@ int main(int argc, char *argv[]) bail_syserr(errno, "failed to open bad-blocks file `%s'", optarg); i = 0; last = -1; for (;;) { - BUF_REWIND(&buf); if (read_line(fp, &buf)) break; + buf_rewind(&buf); if (read_line(fp, &buf)) break; p = buf.p; i++; while (ISSPACE(*p)) p++; if (!*p || *p == '#') continue;