COPY
#define COPY 4 /* copy files to destination dir */
#define COPY(field) do { \
#undef COPY
#define COPY(field, flag) do { \
#undef COPY
#define COPY(field, flag) do { \
#undef COPY
#define COPY(n) (void)memcpy((void *)fp->pub._p, (void *)p, (size_t)(n))
#define COPY(a, b, count, size, tmp1, tmp2) { \
COPY, /* i/o: waiting for input or output to copy stored block */
#define COPY(fld) ifmd.ifmd_##fld = ifp->if_##fld
#undef COPY
#define COPY(fld) ifp->if_##fld = ifmd.ifmd_##fld
#undef COPY
COPY, /* o: copying bytes in window, waiting for space */
COPY, /* i/o: waiting for input or output to copy stored block */
enum {READ, VERIFY, COPY, COPYVERIFY} op = READ;
COPY, /* i/o: waiting for input or output to copy stored block */