Do_spying.cxx

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>

#include "../central_intelligence_agency/cia.hxx"
#include "gen_match.hxx"

#define TRUE  1
#define FALSE 0

void line (char *str);

int playbuf[1000];

void main (int argc,char* argv[])
{
  int activeplayers[MAXNUMPLAYERS];
  int numplayers, matches;
  int forcetactics;
  char buf[1000];
  int temporarymanagerbuilt = FALSE;
  int write = 0;

  CCia theCia;

  theCia.LoadFile ();
  for (int cnt = 1; cnt < argc; cnt++)
    {
      if ((strcmp (argv[cnt],"-all") == 0 || strcmp (argv[cnt],"-a") == 0))
	theCia.ActivateAll ();
      if ((strcmp (argv[cnt],"-clear") == 0 || strcmp (argv[cnt],"-c") == 0))
	theCia.ClearAgainstUs ();
    }
  theCia.FindChangedPlayers ();

  theCia.SaveFile ();

  while (theCia.GetMatchesToPlay (activeplayers,&numplayers,playbuf,&matches,&forcetactics))
    {
      //  printf ("%d: ",numplayers);
      //  for (int i = 0; i < numplayers; i++)
      //	printf ("%d ",activeplayers[i]);
      //      printf ("\n%s\n\n",playbuf);

      if (!temporarymanagerbuilt)
	{
	  int players[MAXNUMPLAYERS];
	  theCia.GetActivePlayers(players);
	  if (!GenerateManager (players,MAXNUMPLAYERS))
	    {
	      printf ("Failed to generate manager.\n");
	      exit(0);
	    }

	  char *tmpbuf;
	  
	  printf ("Compiling...\n");
	  sprintf (buf,"gada %s",TMP_MAN_NAME_ADB);
	  if (*(tmpbuf = syscall (buf)) != '\0')
	    {
	      printf ("Aborting, due to error:\n\n");
	      printf (tmpbuf);
	      exit(0);
	    }
	  printf ("Linking...\n");
	  sprintf (buf,"gld %s",TMP_MAN_NAME);
	  if (*(tmpbuf = syscall (buf)) != '\0')
	    {
	      printf ("Aborting, due to error:\n\n");
	      printf (tmpbuf);
	      exit(0);
	    }
	  /*	  sprintf (buf,"ls -l %s",TMP_MAN_NAME);
	  if (lstimetolong(syscall(buf)) == -1)
	    {
	      printf ("Couldn't find manager, aborting...\n\n");
	      exit(0);
	    }*/
	  temporarymanagerbuilt = TRUE;
	}
      char *tmpbuf;
      
      FILE* tmpfile;
      
      if ((tmpfile = fopen (TEMPMANCONVFILE,"w")) == NULL)
	{
	  printf ("Error writing file: %s\n",TEMPMANCONVFILE);
	  exit(0);
	}
      fwrite (&forcetactics,sizeof (int),1,tmpfile);
      for (int i = 0; i < matches; i++)
	{
	  fwrite ((playbuf+i*2),sizeof (int),1,tmpfile);
	  fwrite ((playbuf+i*2+1),sizeof (int),1,tmpfile);
	}
      
      fclose (tmpfile);
      
      //      printf ("Running...\n");
      sprintf (buf,"%s",TMP_MAN_NAME);
      tmpbuf = syscall (buf);
      //      printf (tmpbuf);
      theCia.NoteMatchResults (tmpbuf);
      if (write++ % 10 == 1)
	theCia.SaveFile (); // avoid a lot of trouble if we interrupt
    }

  theCia.SaveFile ();
  theCia.CheckBestMethods ();
  theCia.CheckNameDependence ();
  theCia.DumpActivePlayerNumbers ("andra_spelare");
  
  if (temporarymanagerbuilt)
    {
      sprintf (buf,"rm %s",TMP_MAN_NAME);
      system (buf);
      sprintf (buf,"rm %s.adb",TMP_MAN_NAME);
      system (buf);
      sprintf (buf,"rm %s.o",TMP_MAN_NAME);
      system (buf);
      sprintf (buf,"rm %s.ali",TMP_MAN_NAME);
      system (buf);
    }
}

Tillbaka till huvudsidan