diff --git a/configure b/configure
index 38f84a823a3a5004e910385d7e48ede365730866..05e5d191229fe51773cf20c9a334702ea4117699 100755
--- a/configure
+++ b/configure
@@ -283,6 +283,12 @@ c_escape(){
     echo "$*" | sed 's/["\\]/\\\0/g'
 }
 
+sh_quote(){
+    v=$(echo "$1" | sed "s/'/'\\\\''/g")
+    test "$v" = "${v#*[ |&;<>()$\`\\\"\'*?\[\]#~=%]}" || v="'$v'"
+    echo "$v"
+}
+
 set_all(){
     value=$1
     shift
@@ -1270,9 +1276,9 @@ else
 fi
 
 for v in "$@"; do
-    r="${v#*=}"
-    l="${v%$r}"
-    test "$r" = "${r#* }" || r="'$r'"
+    r=${v#*=}
+    l=${v%"$r"}
+    r=$(sh_quote "$r")
     FFMPEG_CONFIGURATION="${FFMPEG_CONFIGURATION# } ${l}${r}"
 done
 
@@ -2444,7 +2450,7 @@ echo "# Automatically generated by configure - do not modify!" > config.mak
 echo "/* Automatically generated by configure - do not modify! */" > $TMPH
 echo "#ifndef FFMPEG_CONFIG_H" >> $TMPH
 echo "#define FFMPEG_CONFIG_H" >> $TMPH
-echo "#define FFMPEG_CONFIGURATION \"$FFMPEG_CONFIGURATION\"" >> $TMPH
+echo "#define FFMPEG_CONFIGURATION \"$(c_escape $FFMPEG_CONFIGURATION)\"" >> $TMPH
 echo "#define FFMPEG_DATADIR \"$(eval c_escape $datadir)\"" >> $TMPH
 
 echo "FFMPEG_CONFIGURATION=$FFMPEG_CONFIGURATION" >> config.mak