- Added type flaw information (just after the variables section)
In pseudo-xml: <typeflaws><run id="1"><typeflaw><term variable /><termlist type(s) /><term value of variable /></typeflaw></run></typeflaws>
This commit is contained in:
		
							parent
							
								
									b7f82212c0
								
							
						
					
					
						commit
						f7f2bf27bb
					
				
							
								
								
									
										101
									
								
								src/xmlout.c
									
									
									
									
									
								
							
							
						
						
									
										101
									
								
								src/xmlout.c
									
									
									
									
									
								
							@ -357,6 +357,106 @@ xmlVariables (const System sys)
 | 
			
		||||
  show_substitution_path = prev_mode;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
//! Show a term and its type, on single lines
 | 
			
		||||
void
 | 
			
		||||
xmlTermType (const Term t)
 | 
			
		||||
{
 | 
			
		||||
  Term substbuf;
 | 
			
		||||
 | 
			
		||||
  if (realTermVariable (t))
 | 
			
		||||
    {
 | 
			
		||||
      substbuf = t->subst;
 | 
			
		||||
      t->subst = NULL;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
  xmlIndentPrint ();
 | 
			
		||||
  xmlTermPrint (t);
 | 
			
		||||
  printf ("\n");
 | 
			
		||||
  xmlTermlistPrint (t->stype);
 | 
			
		||||
 | 
			
		||||
  if (realTermVariable (t))
 | 
			
		||||
    {
 | 
			
		||||
      t->subst = substbuf;
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
//! Show a typeflaw of a single term
 | 
			
		||||
void
 | 
			
		||||
xmlTypeFlaw (const Term variable)
 | 
			
		||||
{
 | 
			
		||||
  if (realTermVariable (variable))
 | 
			
		||||
    {
 | 
			
		||||
      xmlPrint ("<typeflaw>");
 | 
			
		||||
      xmlindent++;
 | 
			
		||||
      xmlTermType (variable);
 | 
			
		||||
      xmlIndentPrint ();
 | 
			
		||||
      xmlTermPrint (deVar (variable));
 | 
			
		||||
      printf ("\n");
 | 
			
		||||
      xmlindent--;
 | 
			
		||||
      xmlPrint ("</typeflaw>");
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
//! Show runs with type flaws in the system
 | 
			
		||||
/**
 | 
			
		||||
 * Show a list of runs which have type flaws, and show what has happened
 | 
			
		||||
 */
 | 
			
		||||
void
 | 
			
		||||
xmlTypeflaws (const System sys)
 | 
			
		||||
{
 | 
			
		||||
  int run;			//!< current run under analysis
 | 
			
		||||
  int lastrun;			//!< last run in which a type flaw occurred (for correct lazy printing of wrappers)
 | 
			
		||||
 | 
			
		||||
  run = 0;
 | 
			
		||||
  lastrun = -1;
 | 
			
		||||
  while (run < sys->maxruns)
 | 
			
		||||
    {
 | 
			
		||||
      if (sys->runs[run].protocol != INTRUDER)
 | 
			
		||||
	{
 | 
			
		||||
	  Termlist varlist;
 | 
			
		||||
 | 
			
		||||
	  varlist = sys->runs[run].locals;
 | 
			
		||||
	  while (varlist != NULL)
 | 
			
		||||
	    {
 | 
			
		||||
	      /* Check the term with match 0 (of course this holds when
 | 
			
		||||
	       * switches.match is 0, but not necessarily when tested with -m2
 | 
			
		||||
	       */
 | 
			
		||||
	      if (!checkTypeTerm (0, varlist->term))
 | 
			
		||||
		{
 | 
			
		||||
		  // Not the correct type
 | 
			
		||||
		  // Ensure correct indent first
 | 
			
		||||
		  if (lastrun != run)
 | 
			
		||||
		    {
 | 
			
		||||
		      if (lastrun == -1)
 | 
			
		||||
			{
 | 
			
		||||
			  xmlPrint ("<typeflaws>");
 | 
			
		||||
			  xmlindent++;
 | 
			
		||||
			}
 | 
			
		||||
		      else
 | 
			
		||||
			{
 | 
			
		||||
			  xmlindent--;
 | 
			
		||||
			  xmlPrint ("</run>");
 | 
			
		||||
			}
 | 
			
		||||
		      xmlPrint ("<run id=\"%i\">", run);
 | 
			
		||||
		      xmlindent++;
 | 
			
		||||
		      lastrun = run;
 | 
			
		||||
		    }
 | 
			
		||||
		  xmlTypeFlaw (varlist->term);
 | 
			
		||||
		}
 | 
			
		||||
	      varlist = varlist->next;
 | 
			
		||||
	    }
 | 
			
		||||
	}
 | 
			
		||||
      run++;
 | 
			
		||||
    }
 | 
			
		||||
  if (lastrun != -1)
 | 
			
		||||
    {
 | 
			
		||||
      xmlindent--;
 | 
			
		||||
      xmlPrint ("</run>");
 | 
			
		||||
      xmlindent--;
 | 
			
		||||
      xmlPrint ("</typeflaws>");
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
//! Show inverses
 | 
			
		||||
void
 | 
			
		||||
xmlInverses (const System sys)
 | 
			
		||||
@ -852,6 +952,7 @@ xmlOutSemitrace (const System sys)
 | 
			
		||||
  xmlOutSysInfo (sys);
 | 
			
		||||
  /* instantiations of the variables */
 | 
			
		||||
  xmlVariables (sys);
 | 
			
		||||
  xmlTypeflaws (sys);
 | 
			
		||||
  /* semitrace */
 | 
			
		||||
  xmlPrint ("<semitrace>");
 | 
			
		||||
  xmlindent++;
 | 
			
		||||
 | 
			
		||||
		Loading…
	
		Reference in New Issue
	
	Block a user