/*                                                                           */
 /*                                                                           */
 /*                                                                           */
-/* (C) 2003-2010, Ullrich von Bassewitz                                      */
+/* (C) 2003-2013, Ullrich von Bassewitz                                      */
 /*                Roemerstrasse 52                                           */
 /*                D-70794 Filderstadt                                        */
 /* EMail:         uz@cc65.org                                                */
 SearchPath*      ObjSearchPath;         /* Object file path */
 SearchPath*      CfgSearchPath;         /* Config file path */
 
+SearchPath*      LibDefaultPath;        /* Default Library path */
+SearchPath*      ObjDefaultPath;        /* Default Object file path */
+SearchPath*      CfgDefaultPath;        /* Default Config file path */
+
 
 
 /*****************************************************************************/
     ObjSearchPath = NewSearchPath ();
     CfgSearchPath = NewSearchPath ();
 
+    LibDefaultPath = NewSearchPath ();
+    ObjDefaultPath = NewSearchPath ();
+    CfgDefaultPath = NewSearchPath ();
+
     /* Always search all stuff in the current directory */
     AddSearchPath (LibSearchPath, "");
     AddSearchPath (ObjSearchPath, "");
     AddSearchPath (CfgSearchPath, "");
 
-    /* Add some compiled in search paths if defined at compile time */
+    /* Add specific paths from the environment. */
+    AddSearchPathFromEnv (LibDefaultPath, "LD65_LIB");
+    AddSearchPathFromEnv (ObjDefaultPath, "LD65_OBJ");
+    AddSearchPathFromEnv (CfgDefaultPath, "LD65_CFG");
+
+    /* Add paths relative to a main directory defined in an env. var. */
+    AddSubSearchPathFromEnv (LibDefaultPath, "CC65_HOME", "lib");
+    AddSubSearchPathFromEnv (ObjDefaultPath, "CC65_HOME", "obj");
+    AddSubSearchPathFromEnv (CfgDefaultPath, "CC65_HOME", "cfg");
+
+    /* Add some compiled-in search paths if defined at compile time. */
 #if defined(LD65_LIB)
-    AddSearchPath (LibSearchPath, STRINGIZE (LD65_LIB));
+    AddSearchPath (LibDefaultPath, STRINGIZE (LD65_LIB));
 #endif
 #if defined(LD65_OBJ)
-    AddSearchPath (ObjSearchPath, STRINGIZE (LD65_OBJ));
+    AddSearchPath (ObjDefaultPath, STRINGIZE (LD65_OBJ));
 #endif
 #if defined(LD65_CFG)
-    AddSearchPath (CfgSearchPath, STRINGIZE (LD65_CFG));
+    AddSearchPath (CfgDefaultPath, STRINGIZE (LD65_CFG));
 #endif
-
-    /* Add specific paths from the environment */
-    AddSearchPathFromEnv (LibSearchPath, "LD65_LIB");
-    AddSearchPathFromEnv (ObjSearchPath, "LD65_OBJ");
-    AddSearchPathFromEnv (CfgSearchPath, "LD65_CFG");
-
-    /* Add paths relative to a main directory defined in an env var */
-    AddSubSearchPathFromEnv (LibSearchPath, "CC65_HOME", "lib");
-    AddSubSearchPathFromEnv (ObjSearchPath, "CC65_HOME", "obj");
-    AddSubSearchPathFromEnv (CfgSearchPath, "CC65_HOME", "cfg");
 }
 
 
 
 /*                                                                           */
 /*                                                                           */
 /*                                                                           */
-/* (C) 2003-2010, Ullrich von Bassewitz                                      */
+/* (C) 2003-2013, Ullrich von Bassewitz                                      */
 /*                Roemerstrasse 52                                           */
 /*                D-70794 Filderstadt                                        */
 /* EMail:         uz@cc65.org                                                */
 extern SearchPath*      ObjSearchPath;          /* Object file path */
 extern SearchPath*      CfgSearchPath;          /* Config file path */
 
+extern SearchPath*      LibDefaultPath;         /* Default Library path */
+extern SearchPath*      ObjDefaultPath;         /* Default Object file path */
+extern SearchPath*      CfgDefaultPath;         /* Default Config file path */
+
 
 
 /*****************************************************************************/
 
 /*                                                                          */
 /*                                                                          */
 /*                                                                          */
-/* (C) 1998-2010, Ullrich von Bassewitz                                      */
+/* (C) 1998-2013, Ullrich von Bassewitz                                      */
 /*                Roemerstrasse 52                                           */
 /*                D-70794 Filderstadt                                        */
 /* EMail:         uz@cc65.org                                                */
 
         case FILETYPE_LIB:
             PathName = SearchFile (LibSearchPath, Name);
+            if (PathName == 0) {
+                PathName = SearchFile (LibDefaultPath, Name);
+            }
             break;
 
         case FILETYPE_OBJ:
             PathName = SearchFile (ObjSearchPath, Name);
+            if (PathName == 0) {
+                PathName = SearchFile (ObjDefaultPath, Name);
+            }
             break;
 
         default:
     }
     /* Search for the file */
     PathName = SearchFile (CfgSearchPath, Arg);
+    if (PathName == 0) {
+        PathName = SearchFile (CfgDefaultPath, Arg);
+    }
     if (PathName == 0) {
         Error ("Cannot find config file `%s'", Arg);
-    } else {
-        CfgSetName (PathName);
     }
 
     /* Read the config */
+    CfgSetName (PathName);
     CfgRead ();
 }
 
 
     /* Search for the file */
     PathName = SearchFile (CfgSearchPath, SB_GetBuf (&FileName));
+    if (PathName == 0) {
+        PathName = SearchFile (CfgDefaultPath, SB_GetBuf (&FileName));
+    }
     if (PathName == 0) {
         Error ("Cannot find config file `%s'", SB_GetBuf (&FileName));
     }
 
 
 
-