#include "os.h"

#include "structs.h"

void do_it (FILE * src, FILE * trg, FILE * out);

int main (int argc, char **argv)
{
  FILE *src, *trg, *out;

  if (argc != 4) {
    fprintf (stderr, "Usage: %s source target ulit\n", argv[0]);
    return 0;
  } else if (!(src = fopen (argv[1], "rb"))) {
    fprintf (stderr, "%s: Could not open.\n", argv[1]);
    return 1;
  } else if (!(trg = fopen (argv[2], "rb"))) {
    fprintf (stderr, "%s: Could not open.\n", argv[2]);
    return 1;
  } else if (!(out = fopen (argv[3], "wb"))) {
    fprintf (stderr, "%s: Could not open.\n", argv[3]);
    return 1;
  } else {
    do_it (src, trg, out);
  }

  fclose (src);
  fclose (trg);
  fclose (out);
  return 0;
}


void do_it (FILE * src, FILE * trg, FILE * out)
{
  struct char_file_u inbuf1, inbuf2;
  int a, b, c, d, n;

  srand ((int) time (0));

  n = 1;

  for (;;) {
    fread (&inbuf1, sizeof (inbuf1), 1, trg);
    fread (&inbuf2, sizeof (inbuf2), 1, src);
    while (strcmp (inbuf1.name, inbuf2.name))
      fread (&inbuf2, sizeof (inbuf2), 1, src);


    if (feof (trg))
      break;
    /* do something */

    inbuf1.points.gold = inbuf2.points.gold;

    if (inbuf1.points.gold > 25000 * inbuf1.level)
      inbuf1.points.gold = 25000 * inbuf1.level;

    /* do something else */
    fwrite (&inbuf1, sizeof (inbuf1), 1, out);
  }

}