#ifdef DEBUG
#include <curses.h>
#else
#include <signal.h>
#endif

#include <stdio.h>
#include <sys/time.h>
#include "grid.h"
#include "word.h"
#include "fill.h"
#include "misc.h"

intr()
{
  int i;
  long	clock;

  putc('\n', stdout);
  clock=time(0);
  puts(ctime(&clock));
  for(i=0; i<=G_HEIGHT+1; i++)
  puts(grid[i]);
  putc('\n', stdout);
  fflush(stdout);
}

main(int ac, char **av)
{
  int i, j;
  unsigned long	ul;
  char c;
  struct itimerval value, ovalue;

  if(ac!=2)
  {
    fprintf(stderr, "Usage:  1across grid-file\n");
    exit(1);
  }
  srandom(time(0));
  initGrid(av[1]);
  initWords();

#ifdef DEBUG
  initscr();
  for(i=0; i<=G_HEIGHT+1; i++)
  {
    for(j=0; j<=G_WIDTH+1; j++)
    {
      if(grid[i][j]==BLOCK)
      {
	standout();
	mvaddch(i, j, grid[i][j]);
	standend();
      }
      else
	mvaddch(i, j, grid[i][j]);
    }
  }
  refresh();
#else
  signal(SIGINT, intr);
  signal(SIGALRM, intr);
  value.it_value.tv_sec=1200;
  value.it_value.tv_usec=0;
  value.it_interval=value.it_value;
  setitimer(ITIMER_REAL, &value, &ovalue);
  intr();
#endif

  i=fill(0);
#ifdef DEBUG
  move(G_HEIGHT+2, 0);
  refresh();
#else
  signal(SIGALRM, SIG_IGN);
#endif

#ifdef DEBUG
  clear();
  refresh();
  endwin();
#endif DEBUG

  intr();
  if(!i)
  {
    printf("Could not fill grid.\n");
    exit(1);
  }
}
