diff --git a/misc/options.c b/misc/options.c
index 72c52ee..beb29df 100644
--- a/misc/options.c
+++ b/misc/options.c
@@ -16,7 +16,7 @@
 #include "version.h"
 #include "debugtools.h"
 
-struct option
+struct option_descr
 {
     const char *longname;
     char        shortname;
@@ -33,8 +33,7 @@
     NULL,           /* display */
     NULL,           /* dllFlags */
     FALSE,          /* synchronous */
-    FALSE,          /* Managed windows */
-    NULL            /* Alternate config file name */
+    FALSE           /* Managed windows */
 };
 
 const char *argv0;       /* the original argv[0] */
@@ -60,7 +59,6 @@
     return ret;
 }
 
-static void do_config( const char *arg );
 static void do_debugmsg( const char *arg );
 static void do_desktop( const char *arg );
 static void do_display( const char *arg );
@@ -71,10 +69,8 @@
 static void do_synchronous( const char *arg );
 static void do_version( const char *arg );
 
-static const struct option option_table[] =
+static const struct option_descr option_table[] =
 {
-    { "config",       0, 1, 0, do_config,
-      "--config name    Specify config file to use" },
     { "debugmsg",     0, 1, 1, do_debugmsg,
       "--debugmsg name  Turn debugging-messages on or off" },
     { "desktop",      0, 1, 1, do_desktop,
@@ -155,11 +151,6 @@
     Options.managed = TRUE;
 }
 
-static void do_config( const char *arg )
-{
-    Options.configFileName = xstrdup( arg );
-}
-
 static void do_debugmsg( const char *arg )
 {
     static const char * const debug_class_names[__DBCL_COUNT] = { "fixme", "err", "warn", "trace" };
@@ -292,7 +283,7 @@
 /* parse options from the argv array and remove all the recognized ones */
 static void parse_options( char *argv[] )
 {
-    const struct option *opt;
+    const struct option_descr *opt;
     int i;
 
     for (i = 0; argv[i]; i++)
@@ -371,7 +362,7 @@
  */
 void OPTIONS_Usage(void)
 {
-    const struct option *opt;
+    const struct option_descr *opt;
     MESSAGE( "Usage: %s [options] [--] program_name [arguments]\n", argv0 );
     MESSAGE("The -- has to be used if you specify arguments (of the program)\n\n");
     MESSAGE( "Options:\n" );
