=================================================================== RCS file: /cvsrepo/anoncvs/cvs/src/usr.bin/rcs/buf.c,v retrieving revision 1.9 retrieving revision 1.10 diff -c -r1.9 -r1.10 *** src/usr.bin/rcs/buf.c 2007/02/02 04:24:09 1.9 --- src/usr.bin/rcs/buf.c 2007/02/02 04:34:49 1.10 *************** *** 1,4 **** ! /* $OpenBSD: buf.c,v 1.9 2007/02/02 04:24:09 ray Exp $ */ /* * Copyright (c) 2003 Jean-Francois Brousseau * All rights reserved. --- 1,4 ---- ! /* $OpenBSD: buf.c,v 1.10 2007/02/02 04:34:49 ray Exp $ */ /* * Copyright (c) 2003 Jean-Francois Brousseau * All rights reserved. *************** *** 35,51 **** struct rcs_buf { u_int cb_flags; ! /* buffer handle and size */ u_char *cb_buf; size_t cb_size; - - /* start and length of valid data in buffer */ - u_char *cb_cur; size_t cb_len; }; ! #define SIZE_LEFT(b) (b->cb_size - (size_t)(b->cb_cur - b->cb_buf) \ ! - b->cb_len) static void rcs_buf_grow(BUF *, size_t); --- 35,47 ---- struct rcs_buf { u_int cb_flags; ! /* buffer handle, buffer size, and data length */ u_char *cb_buf; size_t cb_size; size_t cb_len; }; ! #define SIZE_LEFT(b) (b->cb_size - b->cb_len) static void rcs_buf_grow(BUF *, size_t); *************** *** 70,76 **** b->cb_flags = flags; b->cb_size = len; - b->cb_cur = b->cb_buf; b->cb_len = 0; return (b); --- 66,71 ---- *************** *** 107,113 **** goto out; } buf = rcs_buf_alloc(st.st_size, flags); ! for (bp = buf->cb_cur; ; bp += (size_t)ret) { len = SIZE_LEFT(buf); ret = read(fd, bp, len); if (ret == -1) { --- 102,108 ---- goto out; } buf = rcs_buf_alloc(st.st_size, flags); ! for (bp = buf->cb_buf; ; bp += (size_t)ret) { len = SIZE_LEFT(buf); ret = read(fd, bp, len); if (ret == -1) { *************** *** 185,191 **** rcs_buf_empty(BUF *b) { memset(b->cb_buf, 0, b->cb_size); - b->cb_cur = b->cb_buf; b->cb_len = 0; } --- 180,185 ---- *************** *** 199,205 **** { u_char *bp; ! bp = b->cb_cur + b->cb_len; if (bp == (b->cb_buf + b->cb_size)) { /* extend */ if (b->cb_flags & BUF_AUTOEXT) --- 193,199 ---- { u_char *bp; ! bp = b->cb_buf + b->cb_len; if (bp == (b->cb_buf + b->cb_size)) { /* extend */ if (b->cb_flags & BUF_AUTOEXT) *************** *** 208,214 **** errx(1, "rcs_buf_putc failed"); /* the buffer might have been moved */ ! bp = b->cb_cur + b->cb_len; } *bp = (u_char)c; b->cb_len++; --- 202,208 ---- errx(1, "rcs_buf_putc failed"); /* the buffer might have been moved */ ! bp = b->cb_buf + b->cb_len; } *bp = (u_char)c; b->cb_len++; *************** *** 223,229 **** u_char rcs_buf_getc(BUF *b, size_t pos) { ! return (b->cb_cur[pos]); } /* --- 217,223 ---- u_char rcs_buf_getc(BUF *b, size_t pos) { ! return (b->cb_buf[pos]); } /* *************** *** 241,247 **** size_t left, rlen; u_char *bp, *bep; ! bp = b->cb_cur + b->cb_len; bep = b->cb_buf + b->cb_size; left = bep - bp; rlen = len; --- 235,241 ---- size_t left, rlen; u_char *bp, *bep; ! bp = b->cb_buf + b->cb_len; bep = b->cb_buf + b->cb_size; left = bep - bp; rlen = len; *************** *** 249,255 **** if (left < len) { if (b->cb_flags & BUF_AUTOEXT) { rcs_buf_grow(b, len - left); ! bp = b->cb_cur + b->cb_len; } else rlen = bep - bp; } --- 243,249 ---- if (left < len) { if (b->cb_flags & BUF_AUTOEXT) { rcs_buf_grow(b, len - left); ! bp = b->cb_buf + b->cb_len; } else rlen = bep - bp; } *************** *** 308,314 **** ssize_t ret; len = b->cb_len; ! bp = b->cb_cur; do { ret = write(fd, bp, len); --- 302,308 ---- ssize_t ret; len = b->cb_len; ! bp = b->cb_buf; do { ret = write(fd, bp, len); *************** *** 391,403 **** rcs_buf_grow(BUF *b, size_t len) { void *tmp; - size_t diff; - diff = b->cb_cur - b->cb_buf; tmp = xrealloc(b->cb_buf, 1, b->cb_size + len); b->cb_buf = tmp; b->cb_size += len; - - /* readjust pointers in case the buffer moved in memory */ - b->cb_cur = b->cb_buf + diff; } --- 385,392 ----