You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@apr.apache.org by co...@apache.org on 2005/10/18 17:03:12 UTC

svn commit: r326117 - /apr/apr/trunk/file_io/unix/buffer.c

Author: colm
Date: Tue Oct 18 08:03:05 2005
New Revision: 326117

URL: http://svn.apache.org/viewcvs?rev=326117&view=rev
Log:
buffer.c, where the new variable file buffer functions are stored. 

Added:
    apr/apr/trunk/file_io/unix/buffer.c   (with props)

Added: apr/apr/trunk/file_io/unix/buffer.c
URL: http://svn.apache.org/viewcvs/apr/apr/trunk/file_io/unix/buffer.c?rev=326117&view=auto
==============================================================================
--- apr/apr/trunk/file_io/unix/buffer.c (added)
+++ apr/apr/trunk/file_io/unix/buffer.c Tue Oct 18 08:03:05 2005
@@ -0,0 +1,72 @@
+/* Copyright 2000-2005 The Apache Software Foundation or its licensors, as
+ * applicable.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include "apr_arch_file_io.h"
+#include "apr_pools.h"
+#include "apr_thread_mutex.h"
+
+APR_DECLARE(apr_status_t) apr_file_buffer_set(apr_file_t *file, 
+                                              char * buffer,
+                                              apr_size_t bufsize)
+{
+    apr_status_t rv;
+
+#if APR_HAS_THREADS
+     if (file->thlock) {
+         apr_thread_mutex_lock(file->thlock);
+     }
+#endif
+ 
+    if(file->buffered) {
+        /* Flush the existing buffer */
+        rv = apr_file_flush(file);
+        if (rv != APR_SUCCESS) {
+#if APR_HAS_THREADS
+            if (file->thlock) {
+                apr_thread_mutex_unlock(file->thlock);
+            }
+#endif
+            return rv;
+        }
+    }
+        
+    file->buffer = buffer;
+    file->bufsize = bufsize;
+    file->buffered = 1;
+    file->bufpos = 0;
+    file->direction = 0;
+    file->dataRead = 0;
+ 
+    if (file->bufsize == 0) {
+            /* Setting the buffer size to zero is equivalent to turning 
+             * buffering off. 
+             */
+            file->buffered = 0;
+    }
+    
+#if APR_HAS_THREADS
+    if (file->thlock) {
+        apr_thread_mutex_unlock(file->thlock);
+    }
+#endif
+
+    return APR_SUCCESS;
+}
+
+APR_DECLARE(apr_size_t) apr_file_buffer_size_get(apr_file_t *file)
+{
+    return file->bufsize;
+}

Propchange: apr/apr/trunk/file_io/unix/buffer.c
------------------------------------------------------------------------------
    svn:eol-style = native