=================================================================== RCS file: /cvsrepo/anoncvs/cvs/src/usr.bin/rcs/rcsparse.c,v retrieving revision 1.3 retrieving revision 1.4 diff -u -r1.3 -r1.4 --- src/usr.bin/rcs/rcsparse.c 2010/10/20 06:51:26 1.3 +++ src/usr.bin/rcs/rcsparse.c 2010/10/20 19:53:53 1.4 @@ -1,4 +1,4 @@ -/* $OpenBSD: rcsparse.c,v 1.3 2010/10/20 06:51:26 tobias Exp $ */ +/* $OpenBSD: rcsparse.c,v 1.4 2010/10/20 19:53:53 tobias Exp $ */ /* * Copyright (c) 2010 Tobias Stoeckmann * @@ -77,7 +77,6 @@ size_t rp_tlen; struct rcs_delta *rp_delta; - FILE *rp_file; int rp_lineno; int rp_msglineno; int rp_token; @@ -229,10 +228,7 @@ pdp->rp_token = -1; pdp->rp_lineno = 1; pdp->rp_msglineno = 1; - if ((pdp->rp_file = fdopen(rfp->rf_fd, "r")) == NULL) { - xfree(pdp); - return (1); - } + /* ditch the strict lock */ rfp->rf_flags &= ~RCS_SLOCK; rfp->rf_pdata = pdp; @@ -342,8 +338,6 @@ pdp = rfp->rf_pdata; - if (pdp->rp_file != NULL) - (void)fclose(pdp->rp_file); if (pdp->rp_buf != NULL) xfree(pdp->rp_buf); if (pdp->rp_token == RCS_TYPE_REVISION) @@ -849,13 +843,13 @@ *bp = '\0'; for (;;) { - c = getc(pdp->rp_file); + c = getc(rfp->rf_file); if (c == '@') { - c = getc(pdp->rp_file); + c = getc(rfp->rf_file); if (c == EOF) { return (EOF); } else if (c != '@') { - ungetc(c, pdp->rp_file); + ungetc(c, rfp->rf_file); break; } } @@ -904,9 +898,9 @@ c = EOF; do { pre = c; - c = getc(pdp->rp_file); + c = getc(rfp->rf_file); if (c == EOF) { - if (ferror(pdp->rp_file)) { + if (ferror(rfp->rf_file)) { rcsparse_warnx(rfp, "error during parsing"); return (0); } @@ -923,7 +917,7 @@ switch (c) { case '@': ret = rcsparse_string(rfp, allowed); - if (ret == EOF && ferror(pdp->rp_file)) { + if (ret == EOF && ferror(rfp->rf_file)) { rcsparse_warnx(rfp, "error during parsing"); return (0); } @@ -965,7 +959,7 @@ for (;;) { if (c == EOF) { - if (ferror(pdp->rp_file)) + if (ferror(rfp->rf_file)) rcsparse_warnx(rfp, "error during parsing"); else rcsparse_warnx(rfp, "unexpected end of file"); @@ -975,7 +969,7 @@ RBUF_PUTC(c); - c = getc(pdp->rp_file); + c = getc(rfp->rf_file); if (isspace(c)) { if (c == '\n') @@ -983,7 +977,7 @@ RBUF_PUTC('\0'); break; } else if (c == ';' || c == ':' || c == ',') { - ungetc(c, pdp->rp_file); + ungetc(c, rfp->rf_file); RBUF_PUTC('\0'); break; } else if (!isgraph(c)) {