diff --git a/src/boxes.c b/src/boxes.c
index 4fff23e..5757892 100644
--- a/src/boxes.c
+++ b/src/boxes.c
@@ -3,7 +3,7 @@
  *  Date created:     March 18, 1999 (Thursday, 15:09h)
  *  Author:           Copyright (C) 1999 Thomas Jensen
  *                    tsjensen@stud.informatik.uni-erlangen.de
- *  Version:          $Id: boxes.c,v 1.29 1999/08/16 18:29:39 tsjensen Exp tsjensen $
+ *  Version:          $Id: boxes.c,v 1.30 1999/08/21 15:55:42 tsjensen Exp tsjensen $
  *  Language:         ANSI C
  *  Platforms:        sunos5/sparc, for now
  *  World Wide Web:   http://home.pages.de/~jensen/boxes/
@@ -48,6 +48,12 @@
  *  Revision History:
  *
  *    $Log: boxes.c,v $
+ *    Revision 1.30  1999/08/21 15:55:42  tsjensen
+ *    Updated usage information
+ *    Updated quickinfo (-l -d) with killblank default value
+ *    Made indentation computation into a function of its own (get_indent())
+ *    Bugfix: REVERSION code may change indentation -> recompute if necessary
+ *
  *    Revision 1.29  1999/08/16 18:29:39  tsjensen
  *    Added output of total number of designs for -l
  *
@@ -209,7 +215,7 @@ extern int optind, opterr, optopt;       /* for getopt() */
 
 
 static const char rcsid_boxes_c[] =
-    "$Id: boxes.c,v 1.29 1999/08/16 18:29:39 tsjensen Exp tsjensen $";
+    "$Id: boxes.c,v 1.30 1999/08/21 15:55:42 tsjensen Exp tsjensen $";
 
 
 /*       _\|/_
@@ -264,6 +270,97 @@ static void usage (FILE *st)
 
 
 
+static int get_config_file()
+/*
+ *  Set yyin and yyfilename to the config file to be used.
+ *
+ *  If no config file was specified on the command line (yyin == stdin),
+ *  try getting it from other locations:
+ *      (1) contents of BOXES environment variable
+ *      (2) file ~/.boxes
+ *      (3) system-wide config file from GLOBALCONF macro.
+ *  If neither file exists, return complainingly.
+ *
+ *  RETURNS:    == 0    success  (yyin and yyfilename are set)
+ *              != 0    error    (yyin is unmodified)
+ *
+* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ */
+{
+    FILE *new_yyin = NULL;
+    char *s;                             /* points to data from environment */
+
+    if (yyin != stdin)
+        return 0;                        /* we're already ok */
+
+    /*
+     *  Try getting it from the BOXES environment variable
+     */
+    s = getenv ("BOXES");
+    if (s) {
+        new_yyin = fopen (s, "r");
+        if (new_yyin == NULL) {
+            fprintf (stderr, "%s: Couldn't open config file '%s' "
+                    "for input (taken from $BOXES).\n", PROJECT, s);
+            return 1;
+        }
+        yyfilename = (char *) strdup (s);
+        if (yyfilename == NULL) {
+            perror (PROJECT);
+            return 1;
+        }
+        yyin = new_yyin;
+        return 0;
+    }
+
+    /*
+     *  Try getting it from ~/.boxes
+     */
+    s = getenv ("HOME");
+    if (s) {
+        char buf[PATH_MAX];              /* to build file name */
+        strncpy (buf, s, PATH_MAX);
+        buf[PATH_MAX-1-7] = '\0';        /* ensure space for "/.boxes" */
+        strcat (buf, "/.boxes");
+        new_yyin = fopen (buf, "r");
+        if (new_yyin) {
+            yyfilename = (char *) strdup (buf);
+            if (yyfilename == NULL) {
+                perror (PROJECT);
+                return 1;
+            }
+            yyin = new_yyin;
+            return 0;
+        }
+    }
+    else {
+        fprintf (stderr, "%s: warning: Environment variable HOME not set!\n",
+                PROJECT);
+    }
+
+    /*
+     *  Try reading the system-wide config file
+     */
+    new_yyin = fopen (GLOBALCONF, "r");
+    if (new_yyin) {
+        yyfilename = (char *) strdup (GLOBALCONF);
+        if (yyfilename == NULL) {
+            perror (PROJECT);
+            return 1;
+        }
+        yyin = new_yyin;
+        return 0;
+    }
+
+    /*
+     *  Darn. No luck today.
+     */
+    fprintf (stderr, "%s: Can't find config file.\n", PROJECT);
+    return 2;
+}
+
+
+
 static int process_commandline (int argc, char *argv[])
 /*
  *  Process command line options.
@@ -285,6 +382,7 @@ static int process_commandline (int argc, char *argv[])
     int    errfl = 0;                    /* true on error */
     int    outfile_existed = 0;          /* true if we overwrite a file */
     size_t optlen;
+    int    rc;
 
     /*
      *  Set default values
@@ -583,72 +681,35 @@ static int process_commandline (int argc, char *argv[])
                  */
                 break;
 
-            default:                        /* This case must never be */
-                fprintf (stderr, "%s: Uh-oh! This should have been "
-                        "unreachable code. %%-)\n", PROJECT);
+            default:                     /* This case must never be */
+                fprintf (stderr, "%s: internal error\n", PROJECT);
                 return 1;
         }
     } while (oc != EOF);
 
     /*
-     *  If no config file has been specified, try getting it from other
-     *  locations. (1) contents of BOXES environment variable (2) file
-     *  ~/.boxes. If neither file exists, complain and die.
+     *  If no config file has as yet been specified, try getting it elsewhere.
      */
-    if (yyin == stdin) {
-        char *s = getenv ("BOXES");
-        if (s) {
-            f = fopen (s, "r");
-            if (f == NULL) {
-                fprintf (stderr, "%s: Couldn\'t open config file \'%s\' "
-                        "for input (taken from environment).\n", PROJECT, s);
-                return 1;
-            }
-            yyfilename = (char *) strdup (s);
-            yyin = f;
-        }
-        else {
-            char buf[PATH_MAX];              /* to build file name */
-            s = getenv ("HOME");
-            if (s) {
-                strncpy (buf, s, PATH_MAX);
-                buf[PATH_MAX-1-7] = '\0';    /* ensure space for "/.boxes" */
-                strcat (buf, "/.boxes");
-                f = fopen (buf, "r");
-                if (f) {
-                    yyfilename = (char *) strdup (buf);
-                    yyin = f;
-                }
-                else {
-                    fprintf (stderr, "%s: Could not find config file.\n",
-                            PROJECT);
-                    return 1;
-                }
-            }
-            else {
-                fprintf (stderr, "%s: Environment variable HOME must point to "
-                        "the user\'s home directory.\n", PROJECT);
-                return 1;
-            }
-        }
-    }
+    rc = get_config_file();              /* sets yyin and yyfilename */
+    if (rc)
+        return rc;
 
-   /*
-    *  Input and Output Files
-    *
-    *  After any command line options, an input file and an output file may
-    *  be specified (in that order). "-" may be substituted for standard
-    *  input or output. A third file name would be invalid.
-    *  The alogrithm is as follows:
-    *
-    *  If no files are given, use stdin and stdout.
-    *  Else If infile is "-", use stdin for input
-    *       Else open specified file (die if it doesn't work)
-    *       If no output file is given, use stdout for output
-    *       Else If outfile is "-", use stdout for output
-    *            Else open specified file for writing (die if it doesn't work)
-    *            If a third file is given, die.
-    */
+    /*
+     *  Input and Output Files
+     *
+     *  After any command line options, an input file and an output file may
+     *  be specified (in that order). "-" may be substituted for standard
+     *  input or output. A third file name would be invalid.
+     *  The alogrithm is as follows:
+     *
+     *  If no files are given, use stdin and stdout.
+     *  Else If infile is "-", use stdin for input
+     *       Else open specified file (die if it doesn't work)
+     *       If no output file is given, use stdout for output
+     *       Else If outfile is "-", use stdout for output
+     *            Else open specified file for writing (die if it doesn't work)
+     *            If a third file is given, die.
+     */
     if (argv[optind] == NULL) {          /* neither infile nor outfile given */
         opt.infile = stdin;
         opt.outfile = stdout;