Index: src/libcfa/fstream
===================================================================
--- src/libcfa/fstream	(revision 5e1adb5cd4646216dbea029a925fcba958df0bc6)
+++ src/libcfa/fstream	(revision 8da741193d0d09f32a2162ad3f0b13202e5a6fc2)
@@ -10,6 +10,6 @@
 // Created On       : Wed May 27 17:56:53 2015
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Thu Dec  7 08:06:11 2017
-// Update Count     : 129
+// Last Modified On : Thu Dec  7 15:17:26 2017
+// Update Count     : 130
 //
 
@@ -52,4 +52,5 @@
 int flush( ofstream & );
 void open( ofstream &, const char * name, const char * mode );
+void open( ofstream &, const char * name );
 void close( ofstream & );
 ofstream & write( ofstream &, const char * data, unsigned long int size );
@@ -58,4 +59,5 @@
 void ?{}( ofstream & os );
 void ?{}( ofstream & os, const char * name, const char * mode );
+void ?{}( ofstream & os, const char * name );
 
 extern ofstream & sout, & serr;
@@ -69,4 +71,5 @@
 int fail( ifstream & is );
 int eof( ifstream & is );
+void open( ifstream & is, const char * name, const char * mode );
 void open( ifstream & is, const char * name );
 void close( ifstream & is );
@@ -76,4 +79,5 @@
 
 void ?{}( ifstream & is );
+void ?{}( ifstream & is, const char * name, const char * mode );
 void ?{}( ifstream & is, const char * name );
 
Index: src/libcfa/fstream.c
===================================================================
--- src/libcfa/fstream.c	(revision 5e1adb5cd4646216dbea029a925fcba958df0bc6)
+++ src/libcfa/fstream.c	(revision 8da741193d0d09f32a2162ad3f0b13202e5a6fc2)
@@ -10,6 +10,6 @@
 // Created On       : Wed May 27 17:56:53 2015
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Thu Dec  7 08:35:01 2017
-// Update Count     : 270
+// Last Modified On : Sat Dec  9 09:31:23 2017
+// Update Count     : 275
 //
 
@@ -46,8 +46,11 @@
 
 // public
-void ?{}( ofstream & os ) {}
+void ?{}( ofstream & os ) { os.file = 0; }
 
 void ?{}( ofstream & os, const char * name, const char * mode ) {
 	open( os, name, mode );
+}
+void ?{}( ofstream & os, const char * name ) {
+	open( os, name, "w" );
 }
 
@@ -84,5 +87,5 @@
 
 int fail( ofstream & os ) {
-	return ferror( (FILE *)(os.file) );
+	return os.file == 0 || ferror( (FILE *)(os.file) );
 } // fail
 
@@ -93,10 +96,14 @@
 void open( ofstream & os, const char * name, const char * mode ) {
 	FILE *file = fopen( name, mode );
-	if ( file == 0 ) {									// do not change unless successful
-		fprintf( stderr, IO_MSG "open output file \"%s\", ", name );
-		perror( 0 );
-		exit( EXIT_FAILURE );
-	} // if
+	// if ( file == 0 ) {									// do not change unless successful
+	// 	fprintf( stderr, IO_MSG "open output file \"%s\", ", name );
+	// 	perror( 0 );
+	// 	exit( EXIT_FAILURE );
+	// } // if
 	(os){ file, true, false, " ", ", " };
+} // open
+
+void open( ofstream & os, const char * name ) {
+	open( os, name, "w" );
 } // open
 
@@ -152,12 +159,15 @@
 
 // public
-void ?{}( ifstream & is ) {}
-
+void ?{}( ifstream & is ) {	is.file = 0; }
+
+void ?{}( ifstream & is, const char * name, const char * mode ) {
+	open( is, name, mode );
+}
 void ?{}( ifstream & is, const char * name ) {
-	open( is, name );
+	open( is, name, "r" );
 }
 
 int fail( ifstream & is ) {
-	return ferror( (FILE *)(is.file) );
+	return is.file == 0 || ferror( (FILE *)(is.file) );
 } // fail
 
@@ -166,12 +176,16 @@
 } // eof
 
+void open( ifstream & is, const char * name, const char * mode ) {
+	FILE *file = fopen( name, mode );
+	// if ( file == 0 ) {									// do not change unless successful
+	// 	fprintf( stderr, IO_MSG "open input file \"%s\", ", name );
+	// 	perror( 0 );
+	// 	exit( EXIT_FAILURE );
+	// } // if
+	is.file = file;
+} // open
+
 void open( ifstream & is, const char * name ) {
-	FILE *file = fopen( name, "r" );
-	if ( file == 0 ) {									// do not change unless successful
-		fprintf( stderr, IO_MSG "open input file \"%s\", ", name );
-		perror( 0 );
-		exit( EXIT_FAILURE );
-	} // if
-	is.file = file;
+	open( is, name, "r" );
 } // open
 
