diff options
author | Colm MacCarthaigh <colm@apache.org> | 2005-10-18 15:16:37 +0000 |
---|---|---|
committer | Colm MacCarthaigh <colm@apache.org> | 2005-10-18 15:16:37 +0000 |
commit | 149c903e5f897f9285428306668041311494f1a9 (patch) | |
tree | db886a11a1fd2a6b70f47b732c152d7d857fd311 /file_io/os2/buffer.c | |
parent | 111bd75ce10e93aced2e64c939e3fac1ff7ba6ce (diff) | |
download | apr-149c903e5f897f9285428306668041311494f1a9.tar.gz apr-149c903e5f897f9285428306668041311494f1a9.zip |
Initial implementation of the variable file-io buffer sizes functions on the
OS2 platform; entirely guesswork base, untested.
git-svn-id: https://svn.apache.org/repos/asf/apr/apr/trunk@326120 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'file_io/os2/buffer.c')
-rw-r--r-- | file_io/os2/buffer.c | 59 |
1 files changed, 59 insertions, 0 deletions
diff --git a/file_io/os2/buffer.c b/file_io/os2/buffer.c new file mode 100644 index 000000000..2e56b9933 --- /dev/null +++ b/file_io/os2/buffer.c @@ -0,0 +1,59 @@ +/* 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_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; + + apr_thread_mutex_lock(file->mutex); + + if(file->buffered) { + /* Flush the existing buffer */ + rv = apr_file_flush(file); + if (rv != APR_SUCCESS) { + apr_thread_mutex_unlock(file->mutex); + 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; + } + + apr_thread_mutex_unlock(file->mutex); + + return APR_SUCCESS; +} + +APR_DECLARE(apr_size_t) apr_file_buffer_size_get(apr_file_t *file) +{ + return file->bufsize; +} |