
/* 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);
}

