OSSP CVS Repository

ossp - Check-in [4182]
Not logged in
[Honeypot]  [Browse]  [Home]  [Login]  [Reports
[Search]  [Ticket]  [Timeline
  [Patchset]  [Tagging/Branching

Check-in Number: 4182
Date: 2001-Jul-09 19:22:03 (local)
2001-Jul-09 17:22:03 (UTC)
User:simons
Branch:
Comment: Implemented xds_getbuffer().
Tickets:
Inspections:
Files:
ossp-pkg/xds/getbuffer.c      1.1 -> 1.2     24 inserted, 2 deleted

ossp-pkg/xds/getbuffer.c 1.1 -> 1.2

--- getbuffer.c  2001/07/04 15:58:51     1.1
+++ getbuffer.c  2001/07/09 17:22:03     1.2
@@ -25,9 +25,31 @@
    SUCH DAMAGE.
 */
 
+#include "assert.h"
 #include "internal.h"
 
-int xds_getbuffer(xds_t* xds, xds_scope_t flag, void** buffer, size_t* buffer_size)
+int xds_getbuffer(xds_t* xds, xds_scope_t flag, void** buffer, size_t* buffer_len)
     {
-    return XDS_ERR_INVALID_ARG;
+    /* Sanity checks. */
+
+    assert(xds != NULL);
+    assert(flag == XDS_GIFT || flag == XDS_LOAN);
+    assert(buffer != NULL);
+    assert(buffer_len != NULL);
+    if (xds == NULL || buffer == NULL || buffer_len == NULL || (flag != XDS_GIFT && flag != XDS_LOAN))
+        return XDS_ERR_INVALID_ARG;
+
+    /* Return the buffer to the caller. */
+
+    *buffer = xds->buffer;
+    *buffer_len = xds->buffer_len;
+    if (flag == XDS_GIFT)
+        {
+        xds->buffer = NULL;
+        xds->buffer_capacity = xds->buffer_len = 0;
+        }
+    else
+        xds->buffer_len = 0;
+
+    return XDS_OK;
     }

CVSTrac 2.0.1