Index: trunk/Nebulous/nebclient/src/nebclient.c
===================================================================
--- trunk/Nebulous/nebclient/src/nebclient.c	(revision 4509)
+++ trunk/Nebulous/nebclient/src/nebclient.c	(revision 4510)
@@ -4,5 +4,5 @@
  * Copyright (C) 2005  Joshua Hoblitt
  *
- * $Id: nebclient.c,v 1.15 2005-07-08 01:38:00 jhoblitt Exp $
+ * $Id: nebclient.c,v 1.16 2005-07-08 02:04:05 jhoblitt Exp $
  */
 
@@ -300,8 +300,38 @@
 }
 
-int nebCopy(nebServer *server, const char *key, const char *newKey)
-{
-
-    return 0;
+bool nebCopy(nebServer *server, const char *key, const char *newKey)
+{
+    int             sourceFH;
+    int             destFH;
+
+    sourceFH = nebOpen(server, (char *)key, NEB_READ);
+    if (sourceFH < 0) {
+        // propigate nebOpen() error
+
+        return false;
+    }
+
+    destFH = nebCreate(server, newKey, 0, NULL, NULL, NULL);
+    if (destFH < 0) {
+        // propigate nebCreate() error
+
+        return false;
+    }
+
+    nebCopyFilehandle(sourceFH, destFH);
+
+    if (close(sourceFH) == -1) {
+        nebSetErr(server, "can not close file: %s", strerror(errno));
+
+        return false;
+    }
+
+    if (close(destFH) == -1) {
+        nebSetErr(server, "can not close file: %s", strerror(errno));
+
+        return false;
+    }
+
+    return true;
 }
 
Index: trunk/Nebulous/nebclient/src/nebclient.h
===================================================================
--- trunk/Nebulous/nebclient/src/nebclient.h	(revision 4509)
+++ trunk/Nebulous/nebclient/src/nebclient.h	(revision 4510)
@@ -4,5 +4,5 @@
  * Copyright (C) 2005  Joshua Hoblitt
  *
- * $Id: nebclient.h,v 1.16 2005-07-08 01:33:56 jhoblitt Exp $
+ * $Id: nebclient.h,v 1.17 2005-07-08 02:04:05 jhoblitt Exp $
  */
 
@@ -43,5 +43,5 @@
 bool nebDelete(nebServer *server, const char *key);
 
-int nebCopy(nebServer *server, const char *key, const char *newKey);
+bool nebCopy(nebServer *server, const char *key, const char *newKey);
 
 int nebMove(nebServer *server, const char *key, const char *newKey);
Index: trunk/Nebulous/nebclient/src/test.c
===================================================================
--- trunk/Nebulous/nebclient/src/test.c	(revision 4509)
+++ trunk/Nebulous/nebclient/src/test.c	(revision 4510)
@@ -51,5 +51,17 @@
     nebFree(filename);
 
+    if (!nebCopy(server, argv[1], "copyiedfile")) {
+        printf("copy failed: %s\n", nebErr(server));
+    } else {
+        printf("copy succeeded\n");
+    }
+
     if (!nebDelete(server, argv[1])) {
+        printf( "delete failed\n" );
+    } else {
+        printf( "delete succeeded\n" );
+    }
+
+    if (!nebDelete(server, "copyiedfile")) {
         printf( "delete failed\n" );
     } else {
