1251875Speter/* Licensed to the Apache Software Foundation (ASF) under one or more 2251875Speter * contributor license agreements. See the NOTICE file distributed with 3251875Speter * this work for additional information regarding copyright ownership. 4251875Speter * The ASF licenses this file to You under the Apache License, Version 2.0 5251875Speter * (the "License"); you may not use this file except in compliance with 6251875Speter * the License. You may obtain a copy of the License at 7251875Speter * 8251875Speter * http://www.apache.org/licenses/LICENSE-2.0 9251875Speter * 10251875Speter * Unless required by applicable law or agreed to in writing, software 11251875Speter * distributed under the License is distributed on an "AS IS" BASIS, 12251875Speter * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13251875Speter * See the License for the specific language governing permissions and 14251875Speter * limitations under the License. 15251875Speter */ 16251875Speter 17251875Speter#include "apr_arch_file_io.h" 18251875Speter#include "apr_pools.h" 19251875Speter#include "apr_thread_mutex.h" 20251875Speter 21251875SpeterAPR_DECLARE(apr_status_t) apr_file_buffer_set(apr_file_t *file, 22251875Speter char * buffer, 23251875Speter apr_size_t bufsize) 24251875Speter{ 25251875Speter apr_status_t rv; 26251875Speter 27251875Speter file_lock(file); 28251875Speter 29251875Speter if(file->buffered) { 30251875Speter /* Flush the existing buffer */ 31251875Speter rv = apr_file_flush_locked(file); 32251875Speter if (rv != APR_SUCCESS) { 33251875Speter file_unlock(file); 34251875Speter return rv; 35251875Speter } 36251875Speter } 37251875Speter 38251875Speter file->buffer = buffer; 39251875Speter file->bufsize = bufsize; 40251875Speter file->buffered = 1; 41251875Speter file->bufpos = 0; 42251875Speter file->direction = 0; 43251875Speter file->dataRead = 0; 44251875Speter 45251875Speter if (file->bufsize == 0) { 46251875Speter /* Setting the buffer size to zero is equivalent to turning 47251875Speter * buffering off. 48251875Speter */ 49251875Speter file->buffered = 0; 50251875Speter } 51251875Speter 52251875Speter file_unlock(file); 53251875Speter 54251875Speter return APR_SUCCESS; 55251875Speter} 56251875Speter 57251875SpeterAPR_DECLARE(apr_size_t) apr_file_buffer_size_get(apr_file_t *file) 58251875Speter{ 59251875Speter return file->bufsize; 60251875Speter} 61