/* test bidirectional direct access */ #include "stdio.h" FILE * f; readsegment(pos, nbytes) int pos; int nbytes; { int i; int ch; fseek(f, pos, 0); for (i = 0 ; i < nbytes ; i++) if ((ch = fgetc(f)) != (i & 0xFF)) printf("Read mismatch at pos %d\n", ftell(f)); } writesegment(pos, nbytes) int pos; int nbytes; { int i; int ch; fseek(f, pos, 0); for (i = 0 ; i < nbytes ; i++) fputc(i, f); } main() { int i; f = fopen("direct2.dat", "wb"); writesegment(0, 20000); fclose(f); f = fopen("direct2.dat", "r+b"); set_stream_buffer_size(f, 32768); readsegment(0, 10000); readsegment(256, 10000); readsegment(512, 10000); readsegment(8192, 10000); readsegment(256, 256); readsegment(512, 256); readsegment(768, 256); writesegment(100, 100); writesegment(10000, 100); readsegment(100, 100); readsegment(10000, 100); fclose(f); }