Index: trunk/psModules/src/config/pmConfig.c
===================================================================
--- trunk/psModules/src/config/pmConfig.c	(revision 11292)
+++ trunk/psModules/src/config/pmConfig.c	(revision 11296)
@@ -4,6 +4,6 @@
  *  @author EAM (IfA)
  *
- *  @version $Revision: 1.74 $ $Name: not supported by cvs2svn $
- *  @date $Date: 2007-01-26 00:05:18 $
+ *  @version $Revision: 1.75 $ $Name: not supported by cvs2svn $
+ *  @date $Date: 2007-01-26 00:21:11 $
  *
  *  Copyright 2004 Maui High Performance Computing Center, University of Hawaii
@@ -1133,24 +1133,35 @@
         nebServer *server = nebServerAlloc(nebulous_server);
         if (!server) {
-            psError(PM_ERR_SYS, true, "failed to create a nebServer object.");
+            psError(PM_ERR_SYS, true, "failed to create a nebServer object: %s", nebErr(server));
             nebServerFree(server);
             return NULL;
         }
 
-        psString newName = psStringCopy(filename);
-
-        // for for the nebulous key
-        char *foo = nebFind(server, newName);
-        // if it doesn't exist, create it
-        if (!foo) {
-            foo = nebCreate(server, newName, 0, NULL, NULL, NULL);
-        }
-
-        psFree(newName);
-        psString newFoo = psStringCopy(foo);
-        psFree(foo);
+        // ignore the leading neb://
+        char *cleanFilename = (char *)filename + strlen("neb://");
+
+        char *nebfile = NULL;
+        if (create) {
+            nebfile = nebCreate(server, cleanFilename, 0, NULL, NULL, NULL);
+            if (!nebfile) {
+                psError(PM_ERR_SYS, true, "failed to create a new nebulous key: %s", nebErr(server));
+                nebServerFree(server);
+                return NULL;
+            }
+        } else {
+            nebfile = nebFind(server, cleanFilename);
+            if (!nebfile) {
+                psError(PM_ERR_SYS, true, "failed to find nebulous key: %s", nebErr(server));
+                nebServerFree(server);
+                return NULL;
+            }
+        }
+
+        // convert nebfile into a psString
+        psString path = psStringCopy(nebfile);
+        psFree(nebfile);
         nebServerFree(server);
 
-        return newFoo;
+        return path;
 
         #else // ifdef HAVE_NEBCLIENT
