Index: libcfa/src/parseargs.cfa
===================================================================
--- libcfa/src/parseargs.cfa	(revision 641707dcb4cb8e2cd6cf3d4ac4261fc2b8e5ee4c)
+++ libcfa/src/parseargs.cfa	(revision 59fdd0de780eab56cd0f2f21305b98edafad1b1b)
@@ -73,99 +73,98 @@
 //-----------------------------------------------------------------------------
 // Parsing args
-forall([opt_count]) {
-	void parse_args( const array( cfa_option, opt_count ) & options, const char * usage, char ** & left ) {
-		if ( 0p != &cfa_args_argc ) {
-			parse_args( cfa_args_argc, cfa_args_argv, options, usage, left );
-		} else {
-			char * temp[1] = { 0p };
-			parse_args(0, temp, options, usage, left );
-		}
-	}
-
-	void parse_args(
-		int argc,
-		char * argv[],
-		const array( cfa_option, opt_count ) & options,
-		const char * usage,
-		char ** & left
-	) {
-		check_args( options );
-
-		int maxv = 'h';
-		char optstring[(opt_count * 3) + 2] = { '\0' };
-		{
-			int idx = 0;
-			for ( i; opt_count ) {
-				if ( options[i].short_name ) {
-					maxv = max( options[i].short_name, maxv );
-					optstring[idx] = options[i].short_name;
-					idx++;
-					if ( (intptr_t)options[i].parse != (intptr_t)parse_settrue
-						 && ((intptr_t)options[i].parse) != ((intptr_t)parse_setfalse) ) {
-						optstring[idx] = ':';
-						idx++;
-					}
-				}
-			}
-			optstring[idx+0] = 'h';
-			optstring[idx+1] = '\0';
-		}
-
-		struct option optarr[opt_count + 2];
-		{
-			int idx = 0;
-			for ( i; opt_count ) {
-				if ( options[i].long_name ) {
-					// we don't have the mutable keyword here, which is really what we would want
-					int & val_ref = (int &)(const int &)options[i].val;
-					val_ref = (options[i].short_name != '\0') ? ((int)options[i].short_name) : ++maxv;
-
-					optarr[idx].name = options[i].long_name;
-					optarr[idx].flag = 0p;
-					optarr[idx].val  = options[i].val;
-					if ( ((intptr_t)options[i].parse) == ((intptr_t)parse_settrue)
-						 || ((intptr_t)options[i].parse) == ((intptr_t)parse_setfalse) ) {
-						optarr[idx].has_arg = no_argument;
-					} else {
-						optarr[idx].has_arg = required_argument;
-					}
+forall([opt_count])
+void parse_args( const array( cfa_option, opt_count ) & options, const char * usage, char ** & left ) {
+	if ( 0p != &cfa_args_argc ) {
+		parse_args( cfa_args_argc, cfa_args_argv, options, usage, left );
+	} else {
+		char * temp[1] = { 0p };
+		parse_args(0, temp, options, usage, left );
+	}
+}
+
+forall([opt_count])
+void parse_args(
+	int argc,
+	char * argv[],
+	const array( cfa_option, opt_count ) & options,
+	const char * usage,
+	char ** & left
+) {
+	check_args( options );
+
+	int maxv = 'h';
+	char optstring[(opt_count * 3) + 2] = { '\0' };
+	{
+		int idx = 0;
+		for ( i; opt_count ) {
+			if ( options[i].short_name ) {
+				maxv = max( options[i].short_name, maxv );
+				optstring[idx] = options[i].short_name;
+				idx++;
+				if ( (intptr_t)options[i].parse != (intptr_t)parse_settrue
+					 && ((intptr_t)options[i].parse) != ((intptr_t)parse_setfalse) ) {
+					optstring[idx] = ':';
 					idx++;
 				}
 			}
-			optarr[idx+0].[name, has_arg, flag, val] = ["help", no_argument, 0, 'h'];
-			optarr[idx+1].[name, has_arg, flag, val] = [0, no_argument, 0, 0];
-		}
-
-		FILE * out = stderr;
-		NEXT_ARG:
-		for () {
-			int idx = 0;
-			int opt = getopt_long( argc, argv, optstring, optarr, &idx );
-			switch( opt ) {
-				case -1:
-					if ( &left != 0p ) left = argv + optind;
-					return;
-				case 'h':
-					out = stdout;
-				case '?':
+		}
+		optstring[idx+0] = 'h';
+		optstring[idx+1] = '\0';
+	}
+
+	struct option optarr[opt_count + 2];
+	{
+		int idx = 0;
+		for ( i; opt_count ) {
+			if ( options[i].long_name ) {
+				// we don't have the mutable keyword here, which is really what we would want
+				int & val_ref = (int &)(const int &)options[i].val;
+				val_ref = (options[i].short_name != '\0') ? ((int)options[i].short_name) : ++maxv;
+
+				optarr[idx].name = options[i].long_name;
+				optarr[idx].flag = 0p;
+				optarr[idx].val  = options[i].val;
+				if ( ((intptr_t)options[i].parse) == ((intptr_t)parse_settrue)
+					 || ((intptr_t)options[i].parse) == ((intptr_t)parse_setfalse) ) {
+					optarr[idx].has_arg = no_argument;
+				} else {
+					optarr[idx].has_arg = required_argument;
+				}
+				idx++;
+			}
+		}
+		optarr[idx+0].[name, has_arg, flag, val] = ["help", no_argument, 0, 'h'];
+		optarr[idx+1].[name, has_arg, flag, val] = [0, no_argument, 0, 0];
+	}
+
+	FILE * out = stderr;
+	NEXT_ARG:
+	for () {
+		int idx = 0;
+		int opt = getopt_long( argc, argv, optstring, optarr, &idx );
+		switch( opt ) {
+		case -1:
+			if ( &left != 0p ) left = argv + optind;
+			return;
+		case 'h':
+			out = stdout;
+		case '?':
+			usage( argv[0], options, usage, out );
+		default:
+			for ( i; opt_count ) {
+				if ( opt == options[i].val ) {
+					const char * arg = optarg ? optarg : "";
+					if ( arg[0] == '=' ) { arg++; }
+					// work around for some weird bug
+					void * variable = options[i].variable;
+					bool (*parse_func)(const char *, void * ) = options[i].parse;
+					bool success = parse_func( arg, variable );
+					if ( success ) continue NEXT_ARG;
+
+					fprintf( out, "Argument '%s' for option %c could not be parsed\n\n", arg, (char)opt );
 					usage( argv[0], options, usage, out );
-				default:
-					for ( i; opt_count ) {
-						if ( opt == options[i].val ) {
-							const char * arg = optarg ? optarg : "";
-							if ( arg[0] == '=' ) { arg++; }
-							// work around for some weird bug
-							void * variable = options[i].variable;
-							bool (*parse_func)(const char *, void * ) = options[i].parse;
-							bool success = parse_func( arg, variable );
-							if ( success ) continue NEXT_ARG;
-
-							fprintf( out, "Argument '%s' for option %c could not be parsed\n\n", arg, (char)opt );
-							usage( argv[0], options, usage, out );
-						}
-					}
-					abort( "Internal parse arg error\n" );
+				}
 			}
-
+			abort( "Internal parse arg error\n" );
 		}
 	}
@@ -240,12 +239,12 @@
 }
 
-forall( [N] ) {
-	void print_args_usage( const array(cfa_option, N ) & options, const char * usage, bool error ) {
-		usage( cfa_args_argv[0], options, usage, error ? stderr : stdout );
-	}
-
-	void print_args_usage( int argc, char * argv[], const array( cfa_option, N ) & options, const char * usage, bool error ) {
-		usage( argv[0], options, usage, error ? stderr : stdout );
-	}
+forall([N])
+void print_args_usage( const array(cfa_option, N ) & options, const char * usage, bool error ) {
+	usage( cfa_args_argv[0], options, usage, error ? stderr : stdout );
+}
+
+forall([N])
+void print_args_usage( int argc, char * argv[], const array( cfa_option, N ) & options, const char * usage, bool error ) {
+	usage( argv[0], options, usage, error ? stderr : stdout );
 }
 
