diff --git a/Misc/python-config.in b/Misc/python-config.in
index 9ac4414..552bbd5 100644
--- a/Misc/python-config.in
+++ b/Misc/python-config.in
@@ -5,11 +5,11 @@
 import getopt
 from distutils import sysconfig
 
-valid_opts = ['prefix', 'exec-prefix', 'includes', 'libs', 'cflags', 
+valid_opts = ['prefix', 'exec-prefix', 'includes', 'libs', 'cflags',
               'ldflags', 'help']
 
 def exit_with_usage(code=1):
-    print >>sys.stderr, "Usage: %s [%s]" % (sys.argv[0], 
+    print >>sys.stderr, "Usage: %s [%s]" % (sys.argv[0],
                                             '|'.join('--'+opt for opt in valid_opts))
     sys.exit(code)
 
@@ -21,33 +21,36 @@
 if not opts:
     exit_with_usage()
 
-opt = opts[0][0]
-
 pyver = sysconfig.get_config_var('VERSION')
 getvar = sysconfig.get_config_var
 
-if opt == '--help':
-    exit_with_usage(0)
+opt_flags = [flag for (flag, val) in opts]
 
-elif opt == '--prefix':
-    print sysconfig.PREFIX
+if '--help' in opt_flags:
+    exit_with_usage(code=0)
 
-elif opt == '--exec-prefix':
-    print sysconfig.EXEC_PREFIX
+for opt in opt_flags:
+    if opt == '--prefix':
+        print sysconfig.PREFIX
 
-elif opt in ('--includes', '--cflags'):
-    flags = ['-I' + sysconfig.get_python_inc(),
-             '-I' + sysconfig.get_python_inc(plat_specific=True)]
-    if opt == '--cflags':
-        flags.extend(getvar('CFLAGS').split())
-    print ' '.join(flags)
+    elif opt == '--exec-prefix':
+        print sysconfig.EXEC_PREFIX
 
-elif opt in ('--libs', '--ldflags'):
-    libs = getvar('LIBS').split() + getvar('SYSLIBS').split()
-    libs.append('-lpython'+pyver)
-    # add the prefix/lib/pythonX.Y/config dir, but only if there is no
-    # shared library in prefix/lib/.
-    if opt == '--ldflags' and not getvar('Py_ENABLE_SHARED'):
-        libs.insert(0, '-L' + getvar('LIBPL'))
-    print ' '.join(libs)
+    elif opt in ('--includes', '--cflags'):
+        flags = ['-I' + sysconfig.get_python_inc(),
+                 '-I' + sysconfig.get_python_inc(plat_specific=True)]
+        if opt == '--cflags':
+            flags.extend(getvar('CFLAGS').split())
+        print ' '.join(flags)
+
+    elif opt in ('--libs', '--ldflags'):
+        libs = getvar('LIBS').split() + getvar('SYSLIBS').split()
+        libs.append('-lpython'+pyver)
+        # add the prefix/lib/pythonX.Y/config dir, but only if there is no
+        # shared library in prefix/lib/.
+        if opt == '--ldflags':
+            if not getvar('Py_ENABLE_SHARED'):
+                libs.insert(0, '-L' + getvar('LIBPL'))
+            libs.extend(getvar('LINKFORSHARED').split())
+        print ' '.join(libs)
 
