Index: src/libcfa/fstream
===================================================================
--- src/libcfa/fstream	(revision 348006f9bbb24c9257fa8be8d10695e6da14597d)
+++ src/libcfa/fstream	(revision 829c907247aaf3211ea7e8c3d290193a6f2d15d5)
@@ -10,6 +10,6 @@
 // Created On       : Wed May 27 17:56:53 2015
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Tue Mar  7 14:48:08 2017
-// Update Count     : 91
+// Last Modified On : Tue Mar 21 15:57:24 2017
+// Update Count     : 102
 //
 
@@ -21,8 +21,10 @@
 enum { separateSize = 16 };
 struct ofstream {
-	void *file;
+	void * file;
 	_Bool sepDefault;
 	_Bool sepOnOff;
+	const char * sepCur;
 	char separator[separateSize];
+	char tupleSeparator[separateSize];
 }; // ofstream
 
@@ -32,6 +34,10 @@
 void sepReset( ofstream * );
 void sepReset( ofstream *, _Bool );
+const char * sepGetCur( ofstream * );
+void sepSetCur( ofstream *, const char * );
 const char * sepGet( ofstream * );
 void sepSet( ofstream *, const char * );
+const char * sepGetTuple( ofstream * );
+void sepSetTuple( ofstream *, const char * );
 _Bool sepDisable( ofstream * );
 _Bool sepEnable( ofstream * );
@@ -42,5 +48,7 @@
 void close( ofstream * );
 ofstream * write( ofstream *, const char * data, unsigned long int size );
-int prtfmt( ofstream *, const char fmt[], ... );
+int fmt( ofstream *, const char fmt[], ... );
+
+void ?{}( ofstream * );
 
 extern ofstream * sout, * serr;
@@ -48,5 +56,5 @@
 // implement context istream
 struct ifstream {
-	void *file;
+	void * file;
 }; // ifstream
 
@@ -57,7 +65,7 @@
 ifstream * read( ifstream * is, char * data, unsigned long int size );
 ifstream * ungetc( ifstream * is, char c );
-int scanfmt( ifstream *, const char fmt[], ... );
+int fmt( ifstream *, const char fmt[], ... );
 
-extern ifstream *sin;
+extern ifstream * sin;
 
 #endif // __FSTREAM_H__
Index: src/libcfa/fstream.c
===================================================================
--- src/libcfa/fstream.c	(revision 348006f9bbb24c9257fa8be8d10695e6da14597d)
+++ src/libcfa/fstream.c	(revision 829c907247aaf3211ea7e8c3d290193a6f2d15d5)
@@ -10,6 +10,6 @@
 // Created On       : Wed May 27 17:56:53 2015
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Tue Mar  7 14:48:09 2017
-// Update Count     : 192
+// Last Modified On : Tue Mar 21 20:56:10 2017
+// Update Count     : 215
 //
 
@@ -33,4 +33,8 @@
 void sepReset( ofstream * os ) { os->sepOnOff = os->sepDefault; }
 void sepReset( ofstream * os, _Bool reset ) { os->sepDefault = reset; os->sepOnOff = os->sepDefault; }
+
+const char * sepGetCur( ofstream * os ) { return os->sepCur; }
+void sepSetCur( ofstream * os, const char * sepCur ) { os->sepCur = sepCur; }
+
 const char * sepGet( ofstream * os ) { return &(os->separator[0]); }
 
@@ -38,4 +42,11 @@
 	strncpy( &(os->separator[0]), s, separateSize - 1 );
 	os->separator[separateSize - 1] = '\0';
+} // sepSet
+
+const char * sepGetTuple( ofstream * os ) { return &(os->tupleSeparator[0]); }
+
+void sepSetTuple( ofstream * os, const char * s ) {
+	strncpy( &(os->tupleSeparator[0]), s, separateSize - 1 );
+	os->tupleSeparator[separateSize - 1] = '\0';
 } // sepSet
 
@@ -95,8 +106,8 @@
 } // write
 
-int prtfmt( ofstream * os, const char fmt[], ... ) {
+int fmt( ofstream * os, const char format[], ... ) {
 	va_list args;
-	va_start( args, fmt );
-	int len = vfprintf( (FILE *)(os->file), fmt, args );
+	va_start( args, format );
+	int len = vfprintf( (FILE *)(os->file), format, args );
 	if ( len == EOF ) {
 		if ( ferror( (FILE *)(os->file) ) ) {
@@ -109,10 +120,18 @@
 	sepReset( os );										// reset separator
 	return len;
-} // prtfmt
-
-
-static ofstream soutFile = { (FILE *)(&_IO_2_1_stdout_), 1, 0, { ' ', '\0' } };
+} // fmt
+
+void ?{}( ofstream * this, void * file, _Bool sepDefault, _Bool sepOnOff, const char * separator, const char * tupleSeparator ) {
+	this->file = file;
+	this->sepDefault = sepDefault;
+	this->sepOnOff = sepOnOff;
+	sepSet( this, separator );
+	sepSetCur( this, sepGet( this ) );
+	sepSetTuple( this, tupleSeparator );
+}
+
+static ofstream soutFile = { (FILE *)(&_IO_2_1_stdout_), 1, 0, " ", ", " };
 ofstream *sout = &soutFile;
-static ofstream serrFile = { (FILE *)(&_IO_2_1_stderr_), 1, 0, { ' ', '\0' } };
+static ofstream serrFile = { (FILE *)(&_IO_2_1_stderr_), 1, 0, " ", ", " };
 ofstream *serr = &serrFile;
 
@@ -173,9 +192,9 @@
 } // ungetc
 
-int scanfmt( ifstream * is, const char fmt[], ... ) {
+int fmt( ifstream * is, const char format[], ... ) {
 	va_list args;
 
-	va_start( args, fmt );
-	int len = vfscanf( (FILE *)(is->file), fmt, args );
+	va_start( args, format );
+	int len = vfscanf( (FILE *)(is->file), format, args );
 	if ( len == EOF ) {
 		if ( ferror( (FILE *)(is->file) ) ) {
@@ -186,5 +205,5 @@
 	va_end( args );
 	return len;
-} // prtfmt
+} // fmt
 
 
Index: src/libcfa/iostream
===================================================================
--- src/libcfa/iostream	(revision 348006f9bbb24c9257fa8be8d10695e6da14597d)
+++ src/libcfa/iostream	(revision 829c907247aaf3211ea7e8c3d290193a6f2d15d5)
@@ -10,6 +10,6 @@
 // Created On       : Wed May 27 17:56:53 2015
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Mon Mar  6 20:51:35 2017
-// Update Count     : 98
+// Last Modified On : Tue Mar 21 15:57:29 2017
+// Update Count     : 104
 //
 
@@ -25,6 +25,10 @@
 	void sepReset( ostype * );							// set separator state to default state
 	void sepReset( ostype *, _Bool );					// set separator and default state
+	const char * sepGetCur( ostype * );					// get current separator string
+	void sepSetCur( ostype *, const char * );			// set current separator string
+	const char * sepGet( ostype * );					// get separator string
 	void sepSet( ostype *, const char * );				// set separator to string (15 character maximum)
-	const char * sepGet( ostype * );					// get separator string
+	const char * sepGetTuple( ostype * );				// get tuple separator string
+	void sepSetTuple( ostype *, const char * );			// set tuple separator to string (15 character maximum)
 	_Bool sepDisable( ostype * );						// set default state to off, and return previous state
 	_Bool sepEnable( ostype * );						// set default state to on, and return previous state
@@ -35,5 +39,5 @@
 	void close( ostype * os );
 	ostype * write( ostype *, const char *, unsigned long int );
-	int prtfmt( ostype *, const char fmt[], ... );
+	int fmt( ostype *, const char fmt[], ... );
 };
 
@@ -95,5 +99,5 @@
 	istype * read( istype *, char *, unsigned long int );
 	istype * ungetc( istype *, char );
-	int scanfmt( istype *, const char fmt[], ... );
+	int fmt( istype *, const char fmt[], ... );
 };
 
Index: src/libcfa/iostream.c
===================================================================
--- src/libcfa/iostream.c	(revision 348006f9bbb24c9257fa8be8d10695e6da14597d)
+++ src/libcfa/iostream.c	(revision 829c907247aaf3211ea7e8c3d290193a6f2d15d5)
@@ -10,6 +10,6 @@
 // Created On       : Wed May 27 17:56:53 2015
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Mon Mar  6 20:52:02 2017
-// Update Count     : 313
+// Last Modified On : Tue Mar 21 20:58:48 2017
+// Update Count     : 347
 //
 
@@ -24,103 +24,103 @@
 
 forall( dtype ostype | ostream( ostype ) )
-ostype * ?|?( ostype *os, char c ) {
-	prtfmt( os, "%c", c );
-	sepOff( os );
-	return os;
-} // ?|?
-
-forall( dtype ostype | ostream( ostype ) )
-ostype * ?|?( ostype *os, signed char c ) {
-	prtfmt( os, "%hhd", c );
-	sepOff( os );
-	return os;
-} // ?|?
-
-forall( dtype ostype | ostream( ostype ) )
-ostype * ?|?( ostype *os, unsigned char c ) {
-	prtfmt( os, "%hhu", c );
-	sepOff( os );
-	return os;
-} // ?|?
-
-forall( dtype ostype | ostream( ostype ) )
-ostype * ?|?( ostype *os, short int si ) {
-	if ( sepPrt( os ) ) prtfmt( os, "%s", sepGet( os ) );
-	prtfmt( os, "%hd", si );
-	return os;
-} // ?|?
-
-forall( dtype ostype | ostream( ostype ) )
-ostype * ?|?( ostype *os, unsigned short int usi ) {
-	if ( sepPrt( os ) ) prtfmt( os, "%s", sepGet( os ) );
-	prtfmt( os, "%hu", usi );
-	return os;
-} // ?|?
-
-forall( dtype ostype | ostream( ostype ) )
-ostype * ?|?( ostype *os, int i ) {
-	if ( sepPrt( os ) ) prtfmt( os, "%s", sepGet( os ) );
-	prtfmt( os, "%d", i );
-	return os;
-} // ?|?
-
-forall( dtype ostype | ostream( ostype ) )
-ostype * ?|?( ostype *os, unsigned int ui ) {
-	if ( sepPrt( os ) ) prtfmt( os, "%s", sepGet( os ) );
-	prtfmt( os, "%u", ui );
-	return os;
-} // ?|?
-
-forall( dtype ostype | ostream( ostype ) )
-ostype * ?|?( ostype *os, long int li ) {
-	if ( sepPrt( os ) ) prtfmt( os, "%s", sepGet( os ) );
-	prtfmt( os, "%ld", li );
-	return os;
-} // ?|?
-
-forall( dtype ostype | ostream( ostype ) )
-ostype * ?|?( ostype *os, unsigned long int uli ) {
-	if ( sepPrt( os ) ) prtfmt( os, "%s", sepGet( os ) );
-	prtfmt( os, "%lu", uli );
-	return os;
-} // ?|?
-
-forall( dtype ostype | ostream( ostype ) )
-ostype * ?|?( ostype *os, long long int lli ) {
-	if ( sepPrt( os ) ) prtfmt( os, "%s", sepGet( os ) );
-	prtfmt( os, "%lld", lli );
-	return os;
-} // ?|?
-
-forall( dtype ostype | ostream( ostype ) )
-ostype * ?|?( ostype *os, unsigned long long int ulli ) {
-	if ( sepPrt( os ) ) prtfmt( os, "%s", sepGet( os ) );
-	prtfmt( os, "%llu", ulli );
-	return os;
-} // ?|?
-
-forall( dtype ostype | ostream( ostype ) )
-ostype * ?|?( ostype *os, float f ) {
-	if ( sepPrt( os ) ) prtfmt( os, "%s", sepGet( os ) );
-	prtfmt( os, "%g", f );
-	return os;
-} // ?|?
-
-forall( dtype ostype | ostream( ostype ) )
-ostype * ?|?( ostype *os, double d ) {
-	if ( sepPrt( os ) ) prtfmt( os, "%s", sepGet( os ) );
-	prtfmt( os, "%.*lg", DBL_DIG, d );
-	return os;
-} // ?|?
-
-forall( dtype ostype | ostream( ostype ) )
-ostype * ?|?( ostype *os, long double ld ) {
-	if ( sepPrt( os ) ) prtfmt( os, "%s", sepGet( os ) );
-	prtfmt( os, "%.*Lg", LDBL_DIG, ld );
-	return os;
-} // ?|?
-
-forall( dtype ostype | ostream( ostype ) )
-ostype * ?|?( ostype *os, float _Complex fc ) {
+ostype * ?|?( ostype * os, char c ) {
+	fmt( os, "%c", c );
+	sepOff( os );
+	return os;
+} // ?|?
+
+forall( dtype ostype | ostream( ostype ) )
+ostype * ?|?( ostype * os, signed char c ) {
+	fmt( os, "%hhd", c );
+	sepOff( os );
+	return os;
+} // ?|?
+
+forall( dtype ostype | ostream( ostype ) )
+ostype * ?|?( ostype * os, unsigned char c ) {
+	fmt( os, "%hhu", c );
+	sepOff( os );
+	return os;
+} // ?|?
+
+forall( dtype ostype | ostream( ostype ) )
+ostype * ?|?( ostype * os, short int si ) {
+	if ( sepPrt( os ) ) fmt( os, "%s", sepGetCur( os ) );
+	fmt( os, "%hd", si );
+	return os;
+} // ?|?
+
+forall( dtype ostype | ostream( ostype ) )
+ostype * ?|?( ostype * os, unsigned short int usi ) {
+	if ( sepPrt( os ) ) fmt( os, "%s", sepGetCur( os ) );
+	fmt( os, "%hu", usi );
+	return os;
+} // ?|?
+
+forall( dtype ostype | ostream( ostype ) )
+ostype * ?|?( ostype * os, int i ) {
+	if ( sepPrt( os ) ) fmt( os, "%s", sepGetCur( os ) );
+	fmt( os, "%d", i );
+	return os;
+} // ?|?
+
+forall( dtype ostype | ostream( ostype ) )
+ostype * ?|?( ostype * os, unsigned int ui ) {
+	if ( sepPrt( os ) ) fmt( os, "%s", sepGetCur( os ) );
+	fmt( os, "%u", ui );
+	return os;
+} // ?|?
+
+forall( dtype ostype | ostream( ostype ) )
+ostype * ?|?( ostype * os, long int li ) {
+	if ( sepPrt( os ) ) fmt( os, "%s", sepGetCur( os ) );
+	fmt( os, "%ld", li );
+	return os;
+} // ?|?
+
+forall( dtype ostype | ostream( ostype ) )
+ostype * ?|?( ostype * os, unsigned long int uli ) {
+	if ( sepPrt( os ) ) fmt( os, "%s", sepGetCur( os ) );
+	fmt( os, "%lu", uli );
+	return os;
+} // ?|?
+
+forall( dtype ostype | ostream( ostype ) )
+ostype * ?|?( ostype * os, long long int lli ) {
+	if ( sepPrt( os ) ) fmt( os, "%s", sepGetCur( os ) );
+	fmt( os, "%lld", lli );
+	return os;
+} // ?|?
+
+forall( dtype ostype | ostream( ostype ) )
+ostype * ?|?( ostype * os, unsigned long long int ulli ) {
+	if ( sepPrt( os ) ) fmt( os, "%s", sepGetCur( os ) );
+	fmt( os, "%llu", ulli );
+	return os;
+} // ?|?
+
+forall( dtype ostype | ostream( ostype ) )
+ostype * ?|?( ostype * os, float f ) {
+	if ( sepPrt( os ) ) fmt( os, "%s", sepGetCur( os ) );
+	fmt( os, "%g", f );
+	return os;
+} // ?|?
+
+forall( dtype ostype | ostream( ostype ) )
+ostype * ?|?( ostype * os, double d ) {
+	if ( sepPrt( os ) ) fmt( os, "%s", sepGetCur( os ) );
+	fmt( os, "%.*lg", DBL_DIG, d );
+	return os;
+} // ?|?
+
+forall( dtype ostype | ostream( ostype ) )
+ostype * ?|?( ostype * os, long double ld ) {
+	if ( sepPrt( os ) ) fmt( os, "%s", sepGetCur( os ) );
+	fmt( os, "%.*Lg", LDBL_DIG, ld );
+	return os;
+} // ?|?
+
+forall( dtype ostype | ostream( ostype ) )
+ostype * ?|?( ostype * os, float _Complex fc ) {
 	os | crealf( fc );
 	_Bool temp = sepDisable( os );						// disable separators within complex value
@@ -132,5 +132,5 @@
 
 forall( dtype ostype | ostream( ostype ) )
-ostype * ?|?( ostype *os, double _Complex dc ) {
+ostype * ?|?( ostype * os, double _Complex dc ) {
 	os | creal( dc );
 	_Bool temp = sepDisable( os );						// disable separators within complex value
@@ -142,5 +142,5 @@
 
 forall( dtype ostype | ostream( ostype ) )
-ostype * ?|?( ostype *os, long double _Complex ldc ) {
+ostype * ?|?( ostype * os, long double _Complex ldc ) {
 	os | creall( ldc );
 	_Bool temp = sepDisable( os );						// disable separators within complex value
@@ -152,5 +152,5 @@
 
 forall( dtype ostype | ostream( ostype ) )
-ostype * ?|?( ostype *os, const char *cp ) {
+ostype * ?|?( ostype * os, const char * cp ) {
 	enum { Open = 1, Close, OpenClose };
 	static const unsigned char mask[256] = {
@@ -161,6 +161,6 @@
 		// closing delimiters, no space before
 		[','] : Close, ['.'] : Close, [':'] : Close, [';'] : Close, ['!'] : Close, ['?'] : Close,
+		['%'] : Close, [(unsigned char)'¢'] : Close, [(unsigned char)'»'] : Close,
 		[')'] : Close, [']'] : Close, ['}'] : Close,
-		['%'] : Close, [(unsigned char)'¢'] : Close, [(unsigned char)'»'] : Close,
 		// opening-closing delimiters, no space before or after
 		['\''] : OpenClose, ['`'] : OpenClose, ['"'] : OpenClose,
@@ -173,5 +173,5 @@
 	unsigned char ch = cp[0];							// must make unsigned
 	if ( sepPrt( os ) && mask[ ch ] != Close && mask[ ch ] != OpenClose ) {
-		prtfmt( os, "%s", sepGet( os ) );
+		fmt( os, "%s", sepGetCur( os ) );
 	} // if
 
@@ -191,7 +191,7 @@
 
 forall( dtype ostype | ostream( ostype ) )
-ostype * ?|?( ostype *os, const void *p ) {
-	if ( sepPrt( os ) ) prtfmt( os, "%s", sepGet( os ) );
-	prtfmt( os, "%p", p );
+ostype * ?|?( ostype * os, const void * p ) {
+	if ( sepPrt( os ) ) fmt( os, "%s", sepGetCur( os ) );
+	fmt( os, "%p", p );
 	return os;
 } // ?|?
@@ -201,6 +201,8 @@
 forall( dtype ostype, otype T, ttype Params | ostream( ostype ) | writeable( T ) | { ostype * ?|?( ostype *, Params ); } )
 ostype * ?|?( ostype * os, T arg, Params rest ) {
-	os | arg | ", ";
-	os | rest;
+	sepSetCur( os, sepGetTuple( os ) );					// switch to tuple separator
+	os | arg;											// print first argument
+	os | rest;											// print remaining arguments
+	sepSetCur( os, sepGet( os ) );						// switch to regular separator
 } // ?|?
 
@@ -247,5 +249,5 @@
 
 forall( otype elttype | writeable( elttype ), otype iteratortype | iterator( iteratortype, elttype ), dtype ostype | ostream( ostype ) )
-void write( iteratortype begin, iteratortype end, ostype *os ) {
+void write( iteratortype begin, iteratortype end, ostype * os ) {
 	void print( elttype i ) { os | i; }
 	for_each( begin, end, print );
@@ -253,5 +255,5 @@
 
 forall( otype elttype | writeable( elttype ), otype iteratortype | iterator( iteratortype, elttype ), dtype ostype | ostream( ostype ) )
-void write_reverse( iteratortype begin, iteratortype end, ostype *os ) {
+void write_reverse( iteratortype begin, iteratortype end, ostype * os ) {
 	void print( elttype i ) { os | i; }
 	for_each_reverse( begin, end, print );
@@ -262,5 +264,5 @@
 forall( dtype istype | istream( istype ) )
 istype * ?|?( istype * is, char * c ) {
-	scanfmt( is, "%c", c );
+	fmt( is, "%c", c );
 	return is;
 } // ?|?
@@ -268,5 +270,5 @@
 forall( dtype istype | istream( istype ) )
 istype * ?|?( istype * is, short int * si ) {
-	scanfmt( is, "%hd", si );
+	fmt( is, "%hd", si );
 	return is;
 } // ?|?
@@ -274,5 +276,5 @@
 forall( dtype istype | istream( istype ) )
 istype * ?|?( istype * is, unsigned short int * usi ) {
-	scanfmt( is, "%hu", usi );
+	fmt( is, "%hu", usi );
 	return is;
 } // ?|?
@@ -280,5 +282,5 @@
 forall( dtype istype | istream( istype ) )
 istype * ?|?( istype * is, int * i ) {
-	scanfmt( is, "%d", i );
+	fmt( is, "%d", i );
 	return is;
 } // ?|?
@@ -286,5 +288,5 @@
 forall( dtype istype | istream( istype ) )
 istype * ?|?( istype * is, unsigned int * ui ) {
-	scanfmt( is, "%u", ui );
+	fmt( is, "%u", ui );
 	return is;
 } // ?|?
@@ -292,5 +294,5 @@
 forall( dtype istype | istream( istype ) )
 istype * ?|?( istype * is, long int * li ) {
-	scanfmt( is, "%ld", li );
+	fmt( is, "%ld", li );
 	return is;
 } // ?|?
@@ -298,5 +300,5 @@
 forall( dtype istype | istream( istype ) )
 istype * ?|?( istype * is, unsigned long int * ulli ) {
-	scanfmt( is, "%lu", ulli );
+	fmt( is, "%lu", ulli );
 	return is;
 } // ?|?
@@ -304,5 +306,5 @@
 forall( dtype istype | istream( istype ) )
 istype * ?|?( istype * is, long long int * lli ) {
-	scanfmt( is, "%lld", lli );
+	fmt( is, "%lld", lli );
 	return is;
 } // ?|?
@@ -310,5 +312,5 @@
 forall( dtype istype | istream( istype ) )
 istype * ?|?( istype * is, unsigned long long int * ulli ) {
-	scanfmt( is, "%llu", ulli );
+	fmt( is, "%llu", ulli );
 	return is;
 } // ?|?
@@ -317,5 +319,5 @@
 forall( dtype istype | istream( istype ) )
 istype * ?|?( istype * is, float * f ) {
-	scanfmt( is, "%f", f );
+	fmt( is, "%f", f );
 	return is;
 } // ?|?
@@ -323,5 +325,5 @@
 forall( dtype istype | istream( istype ) )
 istype * ?|?( istype * is, double * d ) {
-	scanfmt( is, "%lf", d );
+	fmt( is, "%lf", d );
 	return is;
 } // ?|?
@@ -329,5 +331,5 @@
 forall( dtype istype | istream( istype ) )
 istype * ?|?( istype * is, long double * ld ) {
-	scanfmt( is, "%Lf", ld );
+	fmt( is, "%Lf", ld );
 	return is;
 } // ?|?
@@ -337,5 +339,5 @@
 istype * ?|?( istype * is, float _Complex * fc ) {
 	float re, im;
-	scanfmt( is, "%g%gi", &re, &im );
+	fmt( is, "%g%gi", &re, &im );
 	*fc = re + im * _Complex_I;
 	return is;
@@ -345,5 +347,5 @@
 istype * ?|?( istype * is, double _Complex * dc ) {
 	double re, im;
-	scanfmt( is, "%lf%lfi", &re, &im );
+	fmt( is, "%lf%lfi", &re, &im );
 	*dc = re + im * _Complex_I;
 	return is;
@@ -353,5 +355,5 @@
 istype * ?|?( istype * is, long double _Complex * ldc ) {
 	long double re, im;
-	scanfmt( is, "%Lf%Lfi", &re, &im );
+	fmt( is, "%Lf%Lfi", &re, &im );
 	*ldc = re + im * _Complex_I;
 	return is;
@@ -361,5 +363,5 @@
 forall( dtype istype | istream( istype ) )
 istype * ?|?( istype * is, _Istream_cstrUC cstr ) {
-	scanfmt( is, "%s", cstr.s );
+	fmt( is, "%s", cstr.s );
 	return is;
 } // cstr
@@ -370,5 +372,5 @@
 	char buf[16];
 	sprintf( buf, "%%%ds", cstr.size );
-	scanfmt( is, buf, cstr.s );
+	fmt( is, buf, cstr.s );
 	return is;
 } // cstr
