Index: /trunk/Nebulous-Server/Changes
===================================================================
--- /trunk/Nebulous-Server/Changes	(revision 5660)
+++ /trunk/Nebulous-Server/Changes	(revision 5661)
@@ -1,3 +1,7 @@
 Revision history for Perl module Poi::PixelData
+
+0.02
+    - [nebclient] add nebOpenCreate()
+    - [nebclient] change nebCreate() to return just a filename
 
 0.01 Fri Sep  3 10:23:31 2004
Index: /trunk/Nebulous/Changes
===================================================================
--- /trunk/Nebulous/Changes	(revision 5660)
+++ /trunk/Nebulous/Changes	(revision 5661)
@@ -1,3 +1,7 @@
 Revision history for Perl module Poi::PixelData
+
+0.02
+    - [nebclient] add nebOpenCreate()
+    - [nebclient] change nebCreate() to return just a filename
 
 0.01 Fri Sep  3 10:23:31 2004
Index: /trunk/Nebulous/nebclient/src/nebclient.c
===================================================================
--- /trunk/Nebulous/nebclient/src/nebclient.c	(revision 5660)
+++ /trunk/Nebulous/nebclient/src/nebclient.c	(revision 5661)
@@ -4,5 +4,5 @@
  * Copyright (C) 2005  Joshua Hoblitt
  *
- * $Id: nebclient.c,v 1.39 2005-07-30 02:43:38 jhoblitt Exp $
+ * $Id: nebclient.c,v 1.40 2005-12-02 23:49:08 jhoblitt Exp $
  */
 
@@ -83,16 +83,15 @@
 }
 
-int nebCreate(nebServer *server, const char *key, unsigned int class, const char *volume, const char *comment, char **URI)
+char *nebCreate(nebServer *server, const char *key, unsigned int class, const char *volume, const char *comment, char **URI)
 {
     struct ns1__create_USCOREobjectResponse response;
     char            *filename;
-    int             file;
-
-    REQUIRE_SERVER;
-
-    if (!key) {
-        nebSetErr(server, "parameter 'key' may not be NULL");
-
-        return -1;
+
+    REQUIRE_SERVER;
+
+    if (!key) {
+        nebSetErr(server, "parameter 'key' may not be NULL");
+
+        return NULL;
     }
 
@@ -102,5 +101,5 @@
         nebSetServerErr(server);
 
-        return -1;
+        return NULL;
     }
 
@@ -108,6 +107,30 @@
         nebSetErr(server, "can not parse URI");
 
-        return -1;
-    }
+        return NULL;
+    }
+
+    // if URI is not NULL
+    if (URI) {
+        *URI = xmalloc(strlen((char *)response.result));
+        strcpy(*URI, (char *)response.result);
+    }
+
+    return filename;
+}
+
+int nebOpenCreate(nebServer *server, const char *key, unsigned int class, const char *volume, const char *comment, char **URI)
+{
+    char            *filename;
+    int             file;
+
+    REQUIRE_SERVER;
+
+    if (!key) {
+        nebSetErr(server, "parameter 'key' may not be NULL");
+
+        return -1;
+    }
+
+    filename = nebCreate(server, key, class, volume, comment, URI);
 
     file = open(filename, O_RDWR|O_TRUNC, 0660);
@@ -120,10 +143,4 @@
 
     nebFree(filename);
-
-    // if URI is not NULL
-    if (URI) {
-        *URI = xmalloc(strlen((char *)response.result));
-        strcpy(*URI, (char *)response.result);
-    }
 
     return file;
@@ -501,5 +518,5 @@
     }
 
-    destFH = nebCreate(server, newKey, 0, NULL, NULL, NULL);
+    destFH = nebOpenCreate(server, newKey, 0, NULL, NULL, NULL);
     if (destFH < 0) {
         // propigate nebCreate() error
Index: /trunk/Nebulous/nebclient/src/nebclient.h
===================================================================
--- /trunk/Nebulous/nebclient/src/nebclient.h	(revision 5660)
+++ /trunk/Nebulous/nebclient/src/nebclient.h	(revision 5661)
@@ -4,5 +4,5 @@
  * Copyright (C) 2005  Joshua Hoblitt
  *
- * $Id: nebclient.h,v 1.29 2005-07-29 02:48:20 jhoblitt Exp $
+ * $Id: nebclient.h,v 1.30 2005-12-02 23:49:08 jhoblitt Exp $
  */
 
@@ -72,10 +72,10 @@
 );
 
-/** Creates and opens new storage object
- *
- * @return A filehandle on success or a negative value on failure.
- */
-
-int nebCreate(
+/** Creates a new storage object
+ *
+ * @return A local filename
+ */
+
+char *nebCreate(
     nebServer *server,                  ///< nebServer object
     const char *key,                    ///< storage object key (name)
@@ -86,4 +86,18 @@
 );
 
+/** Creates and opens new storage object
+ *
+ * @return A filehandle on success or a negative value on failure.
+ */
+
+int nebOpenCreate(
+    nebServer *server,                  ///< nebServer object
+    const char *key,                    ///< storage object key (name)
+    unsigned int class,                 ///< storage object storage class
+    const char *volume,                 ///< preferred storage location of initial instance
+    const char *comment,                ///< storage object comment
+    char **URI                          ///< URL of initial instance, can be NULL
+);
+
 /** Adds an instance to a storage object
  *
Index: /trunk/Nebulous/nebclient/tests/tests.c
===================================================================
--- /trunk/Nebulous/nebclient/tests/tests.c	(revision 5660)
+++ /trunk/Nebulous/nebclient/tests/tests.c	(revision 5661)
@@ -27,5 +27,5 @@
     char            *key = "foobarbaz";
 
-    TESTS(19);
+    TESTS(22);
 
     if (getenv("NEBULOUS_SERVER")) {
@@ -40,9 +40,23 @@
     {
         char        *URI = NULL;
+        char        *filename;
+       
+        filename = nebCreate(server, key, 0, NULL, NULL, &URI);
+
+        OK(filename, "create object");
+        OK(URI, "URI not NULL");
+        OK(nebDelete(server, key), "delete object");
+
+        nebFree(URI);
+        nebFree(filename);
+    }
+
+    {
+        char        *URI = NULL;
         int         fh;
        
-        fh = nebCreate(server, key, 0, NULL, NULL, &URI);
+        fh = nebOpenCreate(server, key, 0, NULL, NULL, &URI);
 
-        OK(fh > -1, "create object");
+        OK(fh > -1, "create new object filehandle");
         OK(URI, "URI not NULL");
 
