Index: trunk/psModules/src/config/pmConfig.c
===================================================================
--- trunk/psModules/src/config/pmConfig.c	(revision 24496)
+++ trunk/psModules/src/config/pmConfig.c	(revision 26493)
@@ -47,4 +47,5 @@
 
 static bool checkPath(const char *filename, bool create, bool trunc);
+static psString resolveConfigFile(const char *name);
 
 bool pmConfigReadParamsSet(bool newReadCameraConfig)
@@ -447,5 +448,5 @@
             psWarning("-ipprc command-line switch provided without the required filename --- ignored.\n");
         } else {
-            configFile = psStringCopy(argv[argNum]);
+            configFile = resolveConfigFile(argv[argNum]);
             psArgumentRemove(argNum, argc, argv);
         }
@@ -1834,2 +1835,36 @@
     return false;
 }
+
+static psString resolveConfigFile(const char *nameArg)
+{
+    // if config file name is nebulous path resolve it
+    // otherwise just return a copy of the argument
+    if (strncasecmp(nameArg, "neb://", strlen("neb://"))) {
+        return psStringCopy(nameArg);
+    }
+
+    char *neb_server = getenv("NEB_SERVER");
+
+    // if env isn't set, check the config system
+    if (!neb_server) {
+        psError(PM_ERR_CONFIG, true, "NEB_SERVER environment variable must be set in order to resolve config file.");
+            return NULL;
+    }
+
+    nebServer *server = nebServerAlloc(neb_server);
+    if (!server) {
+        psError(PM_ERR_SYS, true, "failed to create a nebServer object.");
+        return NULL;
+    }
+
+    char *nebfile = nebFind(server, nameArg);
+    nebServerFree(server);
+    if (!nebfile) {
+        // object does not exist
+        psError(PM_ERR_SYS, true, "failed to resolve nebulous path: %s.", nameArg);
+        return NULL;
+    }
+    // XXX: do I need to free nebfile?
+
+    return psStringCopy(nebfile);
+}
