diff --git a/configure b/configure
index 510dc3d..a95494c 100755
--- a/configure
+++ b/configure
@@ -100,12 +100,6 @@ init_log()
 
 	printf "This is config.log, generated by sofort's configure script.\n\n" >&3
 	printf '$ %s' "$mb_script" >&3
-
-	for arg in $mb_args; do
-		printf ' %s' "$arg" >&3
-	done
-
-	printf '\n\n' >&3
 }
 
 init_vars()
@@ -847,16 +841,37 @@ config_success()
 
 
 # one: init
-mb_args=
-mb_args_space=
+mb_args_defs=
+mb_args_text=
+mb_args_idx=0
+
+init_log
 
 for arg ; do
-	mb_escaped_arg=\'$(printf '%s\n' "$arg" | sed -e "s/'/'\\\\''/g")\'
-	mb_args="$mb_args$mb_args_space$mb_escaped_arg"
-	mb_args_space=' '
+	mb_args_idx=$((mb_args_idx+1))
+
+	mb_arg_def=$(printf '%s%s="${%s}"' "-D_" "${mb_args_idx}" "${mb_args_idx}")
+	eval mb_args_defs='"$mb_args_defs "$mb_arg_def'
+
+	mb_args_text="$mb_args_text '_$((mb_args_idx))'"
 done
 
-init_log
+printf "$mb_args_text\n\n" | eval m4 $mb_args_defs - >&3
+
+if [ $mb_args_idx -gt 1 ]; then
+	printf '$ %s' "$mb_script" >&3
+
+	mb_args_idx=0
+	mb_args_text=
+
+	for arg; do
+		mb_args_idx=$((mb_args_idx+1))
+		mb_args_text="$mb_args_text"$(printf ' \\\\\n\t%s_%d%s' "'" "$mb_args_idx" "'")
+	done
+
+	printf "$mb_args_text\n\n" | eval m4 $mb_args_defs - >&3
+fi
+
 init_vars
 verify_build_directory