Esempio n. 1
0
void fread_id_handler( ID_HANDLER *handler, FILE *fp )
{
   char *word;
   bool found, done = FALSE;

   word = ( feof( fp ) ? "#END" : fread_word( fp ) );
   while( !done )
   {
      found = FALSE;
      switch( word[0] )
      {
         case '#':
            if( !strcasecmp( word, "#END" ) ) { done = TRUE; found = TRUE; break; }
         case 'T':
            IREAD( "TopID", handler->top_id );
            break;
      }
      if( !found )
      {
         bug( "%s: bad file format %s.", __FUNCTION__, word );
         return;
      }
      if( !done )
         word = ( feof( fp ) ? "#END" : fread_word( fp ) );
   }
   return;
}
Esempio n. 2
0
void FMAATOMREAD(Word Q, Word V, Word *F_, Word *t_)
{
       Word F,P,P1,P2,R,a,r,s,t,k,pi;
       char c;
       /* hide r,s,t; */

Step1: /* Read the left polynomial. */
        t = 1; r = LENGTH(V);
        IPEXPREAD(r,V,&P1,&t); if (t == 0) goto Return;

Step2: /* Read the relational operator. */
        RLOPRDR(&R,&t); if (t == 0) goto Return;

Step2p: /* Read Root expression (if it's there). */
	k = 0;
	do {
	  c = CREAD();
	} while (c == ' ' || c == '\n');
	if (c == '_')
	  if (CREAD() == 'r' && CREAD() == 'o' && CREAD() == 'o'
	      && CREAD() == 't' && CREAD() == '_')
	    k = IREAD();
	  else {
	    t = 0; goto Return; }
	else
	  BKSP();	      

Step3: /* Read the right polynomial. */
        IPEXPREAD(r,V,&P2,&t); if (t == 0) goto Return;

Setp4: /* Tarski Atom. */
	if (k == 0) {
	  if (P2 != 0) { t = 0; goto Return; }
	  pi = POLYINDEX(Q,P1,r,&t); 
	  F = LIST2(pi,R);
	  goto Return; }

Step5: /* Extended Atom. */
	pi = POLYINDEX(Q,P2,r,&t);
	/* should do an error check here! */
	F = LIST2(pi,LIST2(R,k));
	goto Return;

Step6: /* Error exit. */
        DIELOC(); t = 0; goto Return;

Return: /* Prepare for return. */
       *F_ = F;
       *t_ = t;
       return;
}
Esempio n. 3
0
Word RNREAD()
{
       Word C,R,R1,R2;
       /* hide C,R; */

Step1: /* Read. */
       R1 = IREAD();
       C = CREAD();
       if (C == '/')
         R2 = IREAD();
       else
         {
         R2 = 1;
         BKSP();
         }
       if (R1 == 0)
         R = 0;
       else
         R = LIST2(R1,R2);

Return: /* Prepare for return. */
       return(R);
}
Esempio n. 4
0
I_ID *fread_i_id( FILE *fp )
{
   I_ID *id = NULL;
   char *word;
   bool found, done = FALSE;

   CREATE( id, I_ID, 1 );
   word = ( feof( fp ) ? "#END" : fread_word( fp ) );
   while( ! done )
   {
      found = FALSE;
      switch( word[0] )
      {
         case '#':
            if( !strcasecmp( word, "#END" ) ){done = TRUE; found = TRUE; break;}
         case 'C':
            SREAD( "CreatedBy", id->created_by );
            SREAD( "CreatedOn", id->created_on );
            break;
         case 'I':
            IREAD( "ID", id->id );
            break;
         case 'M':
            SREAD( "ModifiedBy", id->modified_by );
            SREAD( "ModifiedLast", id->last_modified );
            break;
      }
      if( !found )
      {
         bug( "%s: bad file format %s.", __FUNCTION__, word );
         free_i_id( id );
         return NULL;
      }
      if( !done )
         word = ( feof( fp ) ? "#END" : fread_word( fp ) );
   }
   return id;
}
Esempio n. 5
0
int sacMain()
{
  Word V,B,t,Vx,M,L,Lp,i,k = 20;
  Word wii, p, J, *I , *Bp;
  
  /* Read bivariate polynomial */
  V = LIST2(LFS("x"),LFS("y"));
  SWRITE("Enter B, a polynomial in x and y : ");
  IPEXPREADR(2,V,&B,&t);
  if (!t) {
    SWRITE("Polynomial read unsuccessfull!\n");
    return 1; }
  else {
    SWRITE("Polynomial read in is: ");
    IPDWRITE(2,B,V);
    SWRITE("\n"); }

  /* Get precision */
  SWRITE("Enter precision: ");
  p = IREAD();
  SWRITE("Precision read is: ");
  IWRITE(p);
  SWRITE("\n");

  /* Read Interval */
  SWRITE("Enter binary rational interval: ");
  J = LBRIREAD();

  /* Sub! */
  Bp = GETARRAY(1 + (PDEG(B) + 1)*2*(p + 3));
  IBPELBRISIPR(B,J,p,Bp);
  SWRITE("Evaluation result is : ");
  SIPWRITE(Bp,p,k);
  SWRITE("\n");

  return 0;
}
Esempio n. 6
0
D_MOBILE *load_player(char *player)
{
  FILE *fp;
  D_MOBILE *dMob = NULL;
  char pfile[MAX_BUFFER];
  char pName[MAX_BUFFER];
  char *word;
  bool done = FALSE, found;
  int i, size;

  pName[0] = toupper(player[0]);
  size = strlen(player);
  for (i = 1; i < size && i < MAX_BUFFER - 1; i++)
    pName[i] = tolower(player[i]);
  pName[i] = '\0';

  /* open the pfile so we can write to it */
  snprintf(pfile, MAX_BUFFER, "players/%s.pfile", pName);     
  if ((fp = fopen(pfile, "r")) == NULL)
    return NULL;

  /* create new mobile data */
  if (StackSize(dmobile_free) <= 0)
  {
    if ((dMob = malloc(sizeof(*dMob))) == NULL)
    {
      bug("Load_player: Cannot allocate memory.");
      abort();
    }
  }
  else
  {
    dMob = (D_MOBILE *) PopStack(dmobile_free);
  }
  clear_mobile(dMob);

  /* load data */
  word = fread_word(fp);
  while (!done)
  {
    found = FALSE;
    switch (word[0])
    {
      case 'E':
        if (!strcasecmp(word, "EOF")) {done = TRUE; found = TRUE; break;}
        break;
      case 'L':
        IREAD( "Level",     dMob->level     );
        break;
      case 'N':
        SREAD( "Name",      dMob->name      );
        break;
      case 'P':
        SREAD( "Password",  dMob->password  );
        break;
    }
    if (!found)
    {
      bug("Load_player: unexpected '%s' in %s's pfile.", word, player);
      free_mobile(dMob);
      return NULL;
    }

    /* read one more */
    if (!done) word = fread_word(fp);
  }

  fclose(fp);
  return dMob;
}
Esempio n. 7
0
File: save.c Progetto: pfchrono/cmud
D_MOBILE *load_player(char *player)
{
  FILE *fp;
  D_MOBILE *dMob = NULL;
  char pfile[256];
  char pName[20];
  char *word;
  bool done = FALSE, found;
  int i, size;

  pName[0] = toupper(player[0]);
  size = strlen(player);
  for (i = 1; i < size; i++)
    pName[i] = tolower(player[i]);
  pName[i] = '\0';

  /* open the pfile so we can write to it */
  sprintf(pfile, "../players/%s.pfile", pName);     
  if ((fp = fopen(pfile, "r")) == NULL)
    return NULL;

  /* create new mobile data */
  if (StackSize(dmobile_free) <= 0)
  {
    if ((dMob = malloc(sizeof(*dMob))) == NULL)
    {
      bug("Load_player: Cannot allocate memory.");
      abort();
    }
  }
  else
  {
    dMob = (D_MOBILE *) PopStack(dmobile_free);
  }
  clear_mobile(dMob);

#ifdef IMC
    imc_initchar( dMob );
#endif

  /* load data */
  word = fread_word(fp);
  while (!done)
  {
    found = FALSE;
    switch (word[0])
    {
      case 'C':
        if (compares(word, "Coordx")) { IREAD( "Coordx", dMob->coordx ); }
	if (compares(word, "Coordy")) { IREAD( "Coordy", dMob->coordy ); }
	if (compares(word, "Coordz")) { IREAD( "Coordz", dMob->coordz ); }
	break;
      case 'E':
        if (!strcasecmp(word, "EOF")) {done = TRUE; found = TRUE; break;}
        break;
      case 'I':
#ifdef IMC
           if( ( found = imc_loadchar( dMob, fp, word ) ) )
                break;
#endif
        break;
      case 'L':
        IREAD( "Level",     dMob->level     );
        break;
      case 'N':
        SREAD( "Name",      dMob->name      );
        break;
      case 'P':
        SREAD( "Password",  dMob->password  );
        break;
      case 'T':
      SREAD( "Title",     dMob->title     );
        break;
    }
    if (!found)
    {
      bug("Load_player: unexpected '%s' in %s's pfile.", word, player);
      free_mobile(dMob);
      return NULL;
    }

    /* read one more */
    if (!done) word = fread_word(fp);
  }

  fclose(fp);
  return dMob;
}