anchor.diff:                  tmpdir := DirectoryTemporary(),
                   io := [] # Initially no StartACE IO Streams
                 );
  -ACEData.infile  := Filename(ACEData.tmpdir,"in"); 
  -ACEData.outfile := Filename(ACEData.tmpdir,"out");
  -ACEData.banner := Filename(ACEData.tmpdir,"banner");
  +ACEData.infile  := Filename(ACEData.tmpdir, "in"); 
  +ACEData.outfile := Filename(ACEData.tmpdir, "out");
  +ACEData.banner  := Filename(ACEData.tmpdir, "banner");
   
   PrintTo(ACEData.infile, "\n");
   # Fire up ACE with a null input (ACEData.infile contains only a "\n")
   # ... to generate a banner (which has ACE's current version)
  -Exec( Concatenation("cd ", Filename(ACEData.tmpdir, ""), "; ",
  -                    ACEData.binary, " < in > banner") );
  -# For now use ACEData.scratch to record an input stream
  +Exec( Concatenation(ACEData.binary, "<", ACEData.infile, ">", ACEData.banner) );
  +# For now use ACEData.scratch for an input stream
   ACEData.scratch := InputTextFile(ACEData.banner);
   # Grab the first line of banner, which begins like: "ACE N.nnn   "
   ACEData.version := ReadLine(ACEData.scratch);
  
positive.code: #W  ace.g                   ACE Share Package                Alexander Hulpke
  #W                                                                Greg Gamble
  ##
  ##  This  file  contains the interface to the ACE (Advanced Coset Enumerator)
  ##  binary, written by George Havas and Colin Ramsay.  The original interface
  ##  was written by Alexander Hulpke and modified by Greg Gamble.
  ##    
  #H  @(#)$Id$
  ##
  
negative.code: 
  #############################################################################
  ####
  ##  Ensure no zombie ACE processes from interactive (StartACE)  sessions  are 
  ##  . . . . .  . . . . . . . . . . . .  left lying around when user quits GAP
  ##
  InstallAtExit( QuitAllACE );
  
  #E  ace.g . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ends here 
  