apr  1.7.0
About: APR (Apache Portable Runtime) project offers software libraries that provide a predictable and consistent interface to underlying platform-specific implementations (APR core library).
  Fossies Dox: apr-1.7.0.tar.bz2  ("inofficial" and yet experimental doxygen-generated source code documentation)  

buffer.c
Go to the documentation of this file.
1 /* Licensed to the Apache Software Foundation (ASF) under one or more
2  * contributor license agreements. See the NOTICE file distributed with
3  * this work for additional information regarding copyright ownership.
4  * The ASF licenses this file to You under the Apache License, Version 2.0
5  * (the "License"); you may not use this file except in compliance with
6  * the License. You may obtain a copy of the License at
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 
17 #include "apr_arch_file_io.h"
18 #include "apr_thread_mutex.h"
19 
20 APR_DECLARE(apr_status_t) apr_file_buffer_set(apr_file_t *file,
21  char * buffer,
22  apr_size_t bufsize)
23 {
24  apr_status_t rv;
25 
26  apr_thread_mutex_lock(file->mutex);
27 
28  if(file->buffered) {
29  /* Flush the existing buffer */
30  rv = apr_file_flush(file);
31  if (rv != APR_SUCCESS) {
32  apr_thread_mutex_unlock(file->mutex);
33  return rv;
34  }
35  }
36 
37  file->buffer = buffer;
38  file->bufsize = bufsize;
39  file->buffered = 1;
40  file->bufpos = 0;
41  file->direction = 0;
42  file->dataRead = 0;
43 
44  if (file->bufsize == 0) {
45  /* Setting the buffer size to zero is equivalent to turning
46  * buffering off.
47  */
48  file->buffered = 0;
49  }
50 
51  apr_thread_mutex_unlock(file->mutex);
52 
53  return APR_SUCCESS;
54 }
55 
56 APR_DECLARE(apr_size_t) apr_file_buffer_size_get(apr_file_t *file)
57 {
58  return file->bufsize;
59 }
apr_file_t::buffer
char * buffer
Definition: apr_arch_file_io.h:113
apr_file_t::bufpos
apr_size_t bufpos
Definition: apr_arch_file_io.h:114
apr_file_t::buffered
int buffered
Definition: apr_arch_file_io.h:105
APR_DECLARE
APR_DECLARE(apr_status_t)
Definition: buffer.c:20
apr_file_t::bufsize
apr_size_t bufsize
Definition: apr_arch_file_io.h:115
buffer
char * buffer
Definition: apr_file_io.h:696
apr_file_t::dataRead
apr_off_t dataRead
Definition: apr_arch_file_io.h:116
apr_file_t
Definition: apr_arch_file_io.h:97
apr_status_t
int apr_status_t
Definition: apr_errno.h:44
APR_SUCCESS
#define APR_SUCCESS
Definition: apr_errno.h:225
bufsize
char apr_size_t bufsize
Definition: apr_errno.h:52
file
const char apr_file_t * file
Definition: apr_file_io.h:851
apr_file_t::direction
int direction
Definition: apr_arch_file_io.h:117
apr_file_t::mutex
apr_thread_mutex_t * mutex
Definition: apr_arch_file_io.h:57
apr_thread_mutex.h
APR Thread Mutex Routines.