Index: libcfa/src/parseconfig.cfa
===================================================================
--- libcfa/src/parseconfig.cfa	(revision 16f9aca2ea5ad835bf063489ba7b2cc2bf9ee79c)
+++ libcfa/src/parseconfig.cfa	(revision 1896c1faa49411d9a7ac2b757db22a6626912c14)
@@ -1,4 +1,3 @@
-#include <iostream>
-#include <fstream>
+#include <fstream.hfa>
 #include <limits>										// numeric_limits
 using namespace std;
@@ -7,8 +6,8 @@
 static bool comments( ifstream & in, string & name ) {
 	for ( ;; ) {
-		in >> name;
-	  if ( in.fail() ) return true;
+		in | name;
+	  if ( fail( in ) ) return true;
 	  if ( name.substr(0,1) != "#" ) break;
-		in.ignore( numeric_limits<int>::max(), '\n' );	// ignore remainder of line
+		in | nl;	// ignore remainder of line
 	} // for
 	return false;
@@ -16,5 +15,5 @@
 
 // Process the configuration file to set the simulation parameters.
-void processConfigFile( const char *configFile, ConfigParms & cparms ) {
+void parseConfig( const char * configFile, ConfigParms & cparms ) {
 	enum { Parmnum = 11 };
 	struct {
@@ -40,5 +39,7 @@
 
 	try {
-		ifstream in( configFile );						// open the configuration file for input
+		ifstream in;
+
+		open( in, configFile );							// open the configuration file for input
 
 		for ( cnt = 0 ; cnt < Parmnum; cnt += 1 ) {		// parameter names can appear in any order
@@ -47,12 +48,12 @@
 		  if ( posn == Parmnum ) break;					// configuration not found ?
 		  if ( parms[posn].used ) break;				// duplicate configuration ?
-			in >> value;
+			in | value;
 			if ( value < 0 ) {
-				cerr << "Error: file \"" << configFile << "\" parameter " << name
-					 << " value " << value << " must be non-negative." << endl;
-				exit( EXIT_FAILURE );
+				close( in );
+				exit | "Error: file \"" | configFile | "\" parameter " | name
+					 | " value " | value | " must be non-negative."; // *** DOES THIS PRINT TO STDERR??? IT MUST!!! *** //
 			} // if
-		  if ( in.fail() ) break;
-			in.ignore( numeric_limits<int>::max(), '\n' ); // ignore remainder of line
+		  if ( fail( in ) ) break;
+		  	in | nl; // ignore remainder of line
 			numOfParm += 1;
 			parms[posn].used = true;
@@ -61,31 +62,30 @@
 
 		if ( numOfParm != Parmnum ) {
-			cerr << "Error: file \"" << configFile << "\" is corrupt." << endl;
-			exit( EXIT_FAILURE );
+			close( in );
+			exit | "Error: file \"" | configFile | "\" is corrupt."; // *** DOES THIS PRINT TO STDERR??? IT MUST!!! *** //
 		} // if
 		if ( ! comments( in, name ) ) {					// ! eof ?
-			cerr << "Error: file \"" << configFile << "\" has extraneous data." << endl;
-			exit( EXIT_FAILURE );
+			close( in );
+			exit | "Error: file \"" | configFile | "\" has extraneous data."; // *** DOES THIS PRINT TO STDERR??? IT MUST!!! *** //
 		} // if
-	} catch( uFile::Failure & ) {
-		cerr << "Error: could not open input file \"" << configFile << "\"" << endl;
-		exit( EXIT_FAILURE );
+	} catch( Open_Failure * ex; ex->istream == &in ) {
+		close( in );
+		exit | "Error: could not open input file \"" | configFile | "\""; // *** DOES THIS PRINT TO STDERR??? IT MUST!!! *** //
 	} // try
 
-	if (cparms.numStops < 2) {
-        cerr << "Error: file \"" << configFile << "\" parameter NumStops value "
-             << cparms.numStops << " must be at least 2." << endl;
-        exit( EXIT_FAILURE );
+	close( in );
+
+	if ( cparms.numStops < 2 ) {
+		exit | "Error: file \"" | configFile | "\" parameter NumStops value "
+			 | cparms.numStops | " must be at least 2."; // *** DOES THIS PRINT TO STDERR??? IT MUST!!! *** //
 	}
-    if (cparms.numStudents < 1) {
-        cerr << "Error: file \"" << configFile << "\" parameter NumStudents value "
-             << cparms.numStudents << " must be at least 1." << endl;
-        exit( EXIT_FAILURE );
-    }
-    if (cparms.numCouriers < 1) {
-        cerr << "Error: file \"" << configFile << "\" parameter NumCouriers value "
-             << cparms.numCouriers << " must be at least 1." << endl;
-        exit( EXIT_FAILURE );
-    }
+	if ( cparms.numStudents < 1 ) {
+		exit | "Error: file \"" | configFile | "\" parameter NumStudents value "
+			 | cparms.numStudents | " must be at least 1."; // *** DOES THIS PRINT TO STDERR??? IT MUST!!! *** //
+	}
+	if ( cparms.numCouriers < 1 ) {
+		exit | "Error: file \"" | configFile | "\" parameter NumCouriers value "
+			 | cparms.numCouriers | " must be at least 1."; // *** DOES THIS PRINT TO STDERR??? IT MUST!!! *** //
+	}
 } // processConfigFile
 
