00001 /* Licensed to the Apache Software Foundation (ASF) under one or more 00002 * contributor license agreements. See the NOTICE file distributed with 00003 * this work for additional information regarding copyright ownership. 00004 * The ASF licenses this file to You under the Apache License, Version 2.0 00005 * (the "License"); you may not use this file except in compliance with 00006 * the License. You may obtain a copy of the License at 00007 * 00008 * http://www.apache.org/licenses/LICENSE-2.0 00009 * 00010 * Unless required by applicable law or agreed to in writing, software 00011 * distributed under the License is distributed on an "AS IS" BASIS, 00012 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 00013 * See the License for the specific language governing permissions and 00014 * limitations under the License. 00015 */ 00016 00017 #ifndef APR_FILE_IO_H 00018 #define APR_FILE_IO_H 00019 00020 /** 00021 * @file apr_file_io.h 00022 * @brief APR File I/O Handling 00023 */ 00024 00025 #include "apr.h" 00026 #include "apr_pools.h" 00027 #include "apr_time.h" 00028 #include "apr_errno.h" 00029 #include "apr_file_info.h" 00030 #include "apr_inherit.h" 00031 00032 #define APR_WANT_STDIO /**< for SEEK_* */ 00033 #define APR_WANT_IOVEC /**< for apr_file_writev */ 00034 #include "apr_want.h" 00035 00036 #ifdef __cplusplus 00037 extern "C" { 00038 #endif /* __cplusplus */ 00039 00040 /** 00041 * @defgroup apr_file_io File I/O Handling Functions 00042 * @ingroup APR 00043 * @{ 00044 */ 00045 00046 /** 00047 * @defgroup apr_file_open_flags File Open Flags/Routines 00048 * @{ 00049 */ 00050 00051 /* Note to implementors: Values in the range 0x00100000--0x80000000 00052 are reserved for platform-specific values. */ 00053 00054 #define APR_FOPEN_READ 0x00001 /**< Open the file for reading */ 00055 #define APR_FOPEN_WRITE 0x00002 /**< Open the file for writing */ 00056 #define APR_FOPEN_CREATE 0x00004 /**< Create the file if not there */ 00057 #define APR_FOPEN_APPEND 0x00008 /**< Append to the end of the file */ 00058 #define APR_FOPEN_TRUNCATE 0x00010 /**< Open the file and truncate 00059 to 0 length */ 00060 #define APR_FOPEN_BINARY 0x00020 /**< Open the file in binary mode */ 00061 #define APR_FOPEN_EXCL 0x00040 /**< Open should fail if APR_CREATE 00062 and file exists. */ 00063 #define APR_FOPEN_BUFFERED 0x00080 /**< Open the file for buffered I/O */ 00064 #define APR_FOPEN_DELONCLOSE 0x00100 /**< Delete the file after close */ 00065 #define APR_FOPEN_XTHREAD 0x00200 /**< Platform dependent tag to open 00066 the file for use across multiple 00067 threads */ 00068 #define APR_FOPEN_SHARELOCK 0x00400 /**< Platform dependent support for 00069 higher level locked read/write 00070 access to support writes across 00071 process/machines */ 00072 #define APR_FOPEN_NOCLEANUP 0x00800 /**< Do not register a cleanup 00073 when the file is opened */ 00074 #define APR_FOPEN_SENDFILE_ENABLED 0x01000 /**< Advisory flag that this 00075 file should support 00076 apr_socket_sendfile operation */ 00077 #define APR_FOPEN_LARGEFILE 0x04000 /**< Platform dependent flag to enable 00078 * large file support, see WARNING below 00079 */ 00080 #define APR_FOPEN_SPARSE 0x08000 /**< Platform dependent flag to enable 00081 * sparse file support, see WARNING below 00082 */ 00083 00084 /* backcompat */ 00085 #define APR_READ APR_FOPEN_READ /**< @deprecated @see APR_FOPEN_READ */ 00086 #define APR_WRITE APR_FOPEN_WRITE /**< @deprecated @see APR_FOPEN_WRITE */ 00087 #define APR_CREATE APR_FOPEN_CREATE /**< @deprecated @see APR_FOPEN_CREATE */ 00088 #define APR_APPEND APR_FOPEN_APPEND /**< @deprecated @see APR_FOPEN_APPEND */ 00089 #define APR_TRUNCATE APR_FOPEN_TRUNCATE /**< @deprecated @see APR_FOPEN_TRUNCATE */ 00090 #define APR_BINARY APR_FOPEN_BINARY /**< @deprecated @see APR_FOPEN_BINARY */ 00091 #define APR_EXCL APR_FOPEN_EXCL /**< @deprecated @see APR_FOPEN_EXCL */ 00092 #define APR_BUFFERED APR_FOPEN_BUFFERED /**< @deprecated @see APR_FOPEN_BUFFERED */ 00093 #define APR_DELONCLOSE APR_FOPEN_DELONCLOSE /**< @deprecated @see APR_FOPEN_DELONCLOSE */ 00094 #define APR_XTHREAD APR_FOPEN_XTHREAD /**< @deprecated @see APR_FOPEN_XTHREAD */ 00095 #define APR_SHARELOCK APR_FOPEN_SHARELOCK /**< @deprecated @see APR_FOPEN_SHARELOCK */ 00096 #define APR_FILE_NOCLEANUP APR_FOPEN_NOCLEANUP /**< @deprecated @see APR_FOPEN_NOCLEANUP */ 00097 #define APR_SENDFILE_ENABLED APR_FOPEN_SENDFILE_ENABLED /**< @deprecated @see APR_FOPEN_SENDFILE_ENABLED */ 00098 #define APR_LARGEFILE APR_FOPEN_LARGEFILE /**< @deprecated @see APR_FOPEN_LARGEFILE */ 00099 00100 /** @warning APR_FOPEN_LARGEFILE flag only has effect on some 00101 * platforms where sizeof(apr_off_t) == 4. Where implemented, it 00102 * allows opening and writing to a file which exceeds the size which 00103 * can be represented by apr_off_t (2 gigabytes). When a file's size 00104 * does exceed 2Gb, apr_file_info_get() will fail with an error on the 00105 * descriptor, likewise apr_stat()/apr_lstat() will fail on the 00106 * filename. apr_dir_read() will fail with APR_INCOMPLETE on a 00107 * directory entry for a large file depending on the particular 00108 * APR_FINFO_* flags. Generally, it is not recommended to use this 00109 * flag. 00110 * 00111 * @warning APR_FOPEN_SPARSE may, depending on platform, convert a 00112 * normal file to a sparse file. Some applications may be unable 00113 * to decipher a sparse file, so it's critical that the sparse file 00114 * flag should only be used for files accessed only by APR or other 00115 * applications known to be able to decipher them. APR does not 00116 * guarantee that it will compress the file into sparse segments 00117 * if it was previously created and written without the sparse flag. 00118 * On platforms which do not understand, or on file systems which 00119 * cannot handle sparse files, the flag is ignored by apr_file_open(). 00120 */ 00121 00122 /** @} */ 00123 00124 /** 00125 * @defgroup apr_file_seek_flags File Seek Flags 00126 * @{ 00127 */ 00128 00129 /* flags for apr_file_seek */ 00130 /** Set the file position */ 00131 #define APR_SET SEEK_SET 00132 /** Current */ 00133 #define APR_CUR SEEK_CUR 00134 /** Go to end of file */ 00135 #define APR_END SEEK_END 00136 /** @} */ 00137 00138 /** 00139 * @defgroup apr_file_attrs_set_flags File Attribute Flags 00140 * @{ 00141 */ 00142 00143 /* flags for apr_file_attrs_set */ 00144 #define APR_FILE_ATTR_READONLY 0x01 /**< File is read-only */ 00145 #define APR_FILE_ATTR_EXECUTABLE 0x02 /**< File is executable */ 00146 #define APR_FILE_ATTR_HIDDEN 0x04 /**< File is hidden */ 00147 /** @} */ 00148 00149 /** 00150 * @defgroup apr_file_writev{_full} max iovec size 00151 * @{ 00152 */ 00153 #if defined(DOXYGEN) 00154 #define APR_MAX_IOVEC_SIZE 1024 /**< System dependent maximum 00155 size of an iovec array */ 00156 #elif defined(IOV_MAX) 00157 #define APR_MAX_IOVEC_SIZE IOV_MAX 00158 #elif defined(MAX_IOVEC) 00159 #define APR_MAX_IOVEC_SIZE MAX_IOVEC 00160 #else 00161 #define APR_MAX_IOVEC_SIZE 1024 00162 #endif 00163 /** @} */ 00164 00165 /** File attributes */ 00166 typedef apr_uint32_t apr_fileattrs_t; 00167 00168 /** Type to pass as whence argument to apr_file_seek. */ 00169 typedef int apr_seek_where_t; 00170 00171 /** 00172 * Structure for referencing files. 00173 */ 00174 typedef struct apr_file_t apr_file_t; 00175 00176 /* File lock types/flags */ 00177 /** 00178 * @defgroup apr_file_lock_types File Lock Types 00179 * @{ 00180 */ 00181 00182 #define APR_FLOCK_SHARED 1 /**< Shared lock. More than one process 00183 c667eass="code" href="group__apr__file__io.html#gaa46e4763ac375ea3c7a43ba6f6099e22">apr_file_t apr_file_t; 00175 00176 /* File lock types/flags */ 00177 /** 00178 * @defgroup apr_file_lock_types File Lock Types 00179 * @{ 00180 */ 00181 00182 #define APR_FLOCK_SHARED 1 /**< Shared lock. More than one process 00183 c667eass="code" href="group__apr__file__io.html#gaa46e4763ac375ea3c7a43ba6f6099e22">apr_file_t apr_file_t; 00175 00176 /* File lock types/flags */ 00177 /** 00178 * @defgroup apr_file_lock_types File Lock Types 00179 * @{ 00180 */ 00181 00182 #define APR_FLOCK_SHARED 1 /**< Shared lock. More than one process 00183 c667eass="code" href="group__apr__file__io.html#gaa46e4763ac375ea3c7a43ba6f6099e22">apr_file_t apr_file_t; 00175 00176 /* File lock types/flags */ 00177 /** 00178 * @defgroup apr_file_lock_types File Lock Types 00179 * @{ 00180 */ 00181 00182 #define APR_FLOCK_SHARED 1 /**< Shared lock. More than one process 00183 c667eass="code" href="group__apr__file__io.html#gaa46e4763ac375ea3c7a43ba6f6099e22">apr_file_t apr_file_t; 00175 00176 /* File lock types/flags */ 00177 /** 00178 * @defgroup apr_file_lock_types File Lock Types 00179 * @{ 00180 */ 00181 00182 #define APR_FLOCK_SHARED 1 /**< Shared lock. More than one process 00183 c667eass="code" href="group__apr__file__io.html#gaa46e4763ac375ea3c7a43ba6f6099e22">apr_file_t apr_file_t; 00175 00176 /* File lock types/flags */ 00177 /** 00178 * @defgroup apr_file_lock_types File Lock Types 00179 * @{ 00180 */ 00181 00182 #define APR_FLOCK_SHARED 1 /**< Shared lock. More than one process 00183 c667eass="code" href="group__apr__file__io.html#gaa46e4763ac375ea3c7a43ba6f6099e22">apr_file_t apr_file_t; 00175 00176 /* File lock types/flags */ 00177 /** 00178 * @defgroup apr_file_lock_types File Lock Types 00179 * @{ 00180 */ 00181 00182 #define APR_FLOCK_SHARED 1 /**< Shared lock. More than one process 00183 c667eass="code" href="group__apr__file__io.html#gaa46e4763ac375ea3c7a43ba6f6099e22">apr_file_t apr_file_t; 00175 00176 /* File lock types/flags */ 00177 /** 00178 * @defgroup apr_file_lock_types File Lock Types 00179 * @{ 00180 */ 00181 00182 #define APR_FLOCK_SHARED 1 /**< Shared lock. More than one process 00183 c667eass="code" href="group__apr__file__io.html#gaa46e4763ac375ea3c7a43ba6f6099e22">apr_file_t apr_file_t; 00175 00176 /* File lock types/flags */ 00177 /** 00178 * @defgroup apr_file_lock_types File Lock Types 00179 * @{ 00180 */ 00181 00182 #define APR_FLOCK_SHARED 1 /**< Shared lock. More than one process 00183 c667eass="code" href="group__apr__file__io.html#gaa46e4763ac375ea3c7a43ba6f6099e22">apr_file_t apr_file_t; 00175 00176 /* File lock types/flags */ 00177 /** 00178 * @defgroup apr_file_lock_types File Lock Types 00179 * @{ 00180 */ 00181 00182 #define APR_FLOCK_SHARED 1 /**< Shared lock. More than one process 00183 c667eass="code" href="group__apr__file__io.html#gaa46e4763ac375ea3c7a43ba6f6099e22">apr_file_t apr_file_t; 00175 00176 /* File lock types/flags */ 00177 /** 00178 * @defgroup apr_file_lock_types File Lock Types 00179 * @{ 00180 */ 00181 00182 #define APR_FLOCK_SHARED 1 /**< Shared lock. More than one process 00183 c667eass="code" href="group__apr__file__io.html#gaa46e4763ac375ea3c7a43ba6f6099e22">apr_file_t apr_file_t; 00175 00176 /* File lock types/flags */ 00177 /** 00178 * @defgroup apr_file_lock_types File Lock Types 00179 * @{ 00180 */ 00181 00182 #define APR_FLOCK_SHARED 1 /**< Shared lock. More than one process 00183 c667eass="code" href="group__apr__file__io.html#gaa46e4763ac375ea3c7a43ba6f6099e22">apr_file_t apr_file_t; 00175 00176 /* File lock types/flags */ 00177 /** 00178 * @defgroup apr_file_lock_types File Lock Types 00179 * @{ 00180 */ 00181 00182 #define APR_FLOCK_SHARED 1 /**< Shared lock. More than one process 00183 c667eass="code" href="group__apr__file__io.html#gaa46e4763ac375ea3c7a43ba6f6099e22">apr_file_t apr_file_t; 00175 00176 /* File lock types/flags */ 00177 /** 00178 * @defgroup apr_file_lock_types File Lock Types 00179 * @{ 00180 */ 00181 00182 #define APR_FLOCK_SHARED 1 /**< Shared lock. More than one process 00183 c667eass="code" href="group__apr__file__io.html#gaa46e4763ac375ea3c7a43ba6f6099e22">apr_file_t apr_file_t; 00175 00176 /* File lock types/flags */ 00177 /** 00178 * @defgroup apr_file_lock_types File Lock Types 00179 * @{ 00180 */ 00181 00182 #define APR_FLOCK_SHARED 1 /**< Shared lock. More than one process 00183 c667eass="code" href="group__apr__file__io.html#gaa46e4763ac375ea3c7a43ba6f6099e22">apr_file_t apr_file_t; 00175 00176 /* File lock types/flags */ 00177 /** 00178 * @defgroup apr_file_lock_types File Lock Types 00179 * @{ 00180 */ 00181 00182 #define APR_FLOCK_SHARED 1 /**< Shared lock. More than one process 00183 c667eass="code" href="group__apr__file__io.html#gaa46e4763ac375ea3c7a43ba6f6099e22">apr_file_t apr_file_t; 00175 00176 /* File lock types/flags */ 00177 /** 00178 * @defgroup apr_file_lock_types File Lock Types 00179 * @{ 00180 */ 00181 00182 #define APR_FLOCK_SHARED 1 /**< Shared lock. More than one process 00183 c667eass="code" href="group__apr__file__io.html#gaa46e4763ac375ea3c7a43ba6f6099e22">apr_file_t apr_file_t; 00175 00176 /* File lock types/flags */ 00177 /** 00178 * @defgroup apr_file_lock_types File Lock Types 00179 * @{ 00180 */ 00181 00182 #define APR_FLOCK_SHARED 1 /**< Shared lock. More than one process 00183 c667eass="code" href="group__apr__file__io.html#gaa46e4763ac375ea3c7a43ba6f6099e22">apr_file_t apr_file_t; 00175 00176 /* File lock types/flags */ 00177 /** 00178 * @defgroup apr_file_lock_types File Lock Types 00179 * @{ 00180 */ 00181 00182 #define APR_FLOCK_SHARED 1 /**< Shared lock. More than one process 00183 c667eass="code" href="group__apr__file__io.html#gaa46e4763ac375ea3c7a43ba6f6099e22">apr_file_t apr_file_t; 00175 00176 /* File lock types/flags */ 00177 /** 00178 * @defgroup apr_file_lock_types File Lock Types 00179 * @{ 00180 */ 00181 00182 #define APR_FLOCK_SHARED 1 /**< Shared lock. More than one process 00183 c667eass="code" href="group__apr__file__io.html#gaa46e4763ac375ea3c7a43ba6f6099e22">apr_file_t apr_file_t; 00175 00176 /* File lock types/flags */ 00177 /** 00178 * @defgroup apr_file_lock_types File Lock Types 00179 * @{ 00180 */ 00181 00182 #define APR_FLOCK_SHARED 1 /**< Shared lock. More than one process 00183 c667eass="code" href="group__apr__file__io.html#gaa46e4763ac375ea3c7a43ba6f6099e22">apr_file_t apr_file_t; 00175 00176 /* File lock types/flags */ 00177 /** 00178 * @defgroup apr_file_lock_types File Lock Types 00179 * @{ 00180 */ 00181 00182 #define APR_FLOCK_SHARED 1 /**< Shared lock. More than one process 00183 c667eass="code" href="group__apr__file__io.html#gaa46e4763ac375ea3c7a43ba6f6099e22">apr_file_t apr_file_t; 00175 00176 /* File lock types/flags */ 00177 /** 00178 * @defgroup apr_file_lock_types File Lock Types 00179 * @{ 00180 */ 00181 00182 #define APR_FLOCK_SHARED 1 /**< Shared lock. More than one process 00183 c667eass="code" href="group__apr__file__io.html#gaa46e4763ac375ea3c7a43ba6f6099e22">apr_file_t apr_file_t; 00175 00176 /* File lock types/flags */ 00177 /** 00178 * @defgroup apr_file_lock_types File Lock Types 00179 * @{ 00180 */ 00181 00182 #define APR_FLOCK_SHARED 1 /**< Shared lock. More than one process 00183 c667eass="code" href="group__apr__file__io.html#gaa46e4763ac375ea3c7a43ba6f6099e22">apr_file_t apr_file_t; 00175 00176 /* File lock types/flags */ 00177 /** 00178 * @defgroup apr_file_lock_types File Lock Types 00179 * @{ 00180 */ 00181 00182 #define APR_FLOCK_SHARED 1 /**< Shared lock. More than one process 00183 c667eass="code" href="group__apr__file__io.html#gaa46e4763ac375ea3c7a43ba6f6099e22">apr_file_t apr_file_t; 00175 00176 /* File lock types/flags */ 00177 /** 00178 * @defgroup apr_file_lock_types File Lock Types 00179 * @{ 00180 */ 00181 00182 #define APR_FLOCK_SHARED 1 /**< Shared lock. More than one process 00183 c667eass="code" href="group__apr__file__io.html#gaa46e4763ac375ea3c7a43ba6f6099e22">apr_file_t apr_file_t; 00175 00176 /* File lock types/flags */ 00177 /** 00178 * @defgroup apr_file_lock_types File Lock Types 00179 * @{ 00180 */ 00181 00182 #define APR_FLOCK_SHARED 1 /**< Shared lock. More than one process 00183 c667eass="code" href="group__apr__file__io.html#gaa46e4763ac375ea3c7a43ba6f6099e22">apr_file_t apr_file_t; 00175 00176 /* File lock types/flags */ 00177 /** 00178 * @defgroup apr_file_lock_types File Lock Types 00179 * @{ 00180 */ 00181 00182 #define APR_FLOCK_SHARED 1 /**< Shared lock. More than one process 00183 c667eass="code" href="group__apr__file__io.html#gaa46e4763ac375ea3c7a43ba6f6099e22">apr_file_t apr_file_t; 00175 00176 /* File lock types/flags */ 00177 /** 00178 * @defgroup apr_file_lock_types File Lock Types 00179 * @{ 00180 */ 00181 00182 #define APR_FLOCK_SHARED 1 /**< Shared lock. More than one process 00183 c667eass="code" href="group__apr__file__io.html#gaa46e4763ac375ea3c7a43ba6f6099e22">apr_file_t apr_file_t; 00175 00176 /* File lock types/flags */ 00177 /** 00178 * @defgroup apr_file_lock_types File Lock Types 00179 * @{ 00180 */ 00181 00182 #define APR_FLOCK_SHARED 1 /**< Shared lock. More than one process 00183 c667eass="code" href="group__apr__file__io.html#gaa46e4763ac375ea3c7a43ba6f6099e22">apr_file_t apr_file_t; 00175 00176 /* File lock types/flags */ 00177 /** 00178 * @defgroup apr_file_lock_types File Lock Types 00179 * @{ 00180 */ 00181 00182 #define APR_FLOCK_SHARED 1 /**< Shared lock. More than one process 00183 c667eass="code" href="group__apr__file__io.html#gaa46e4763ac375ea3c7a43ba6f6099e22">apr_file_t apr_file_t; 00175 00176 /* File lock types/flags */ 00177 /** 00178 * @defgroup apr_file_lock_types File Lock Types 00179 * @{ 00180 */ 00181 00182 #define APR_FLOCK_SHARED 1 /**< Shared lock. More than one process 00183 c667eass="code" href="group__apr__file__io.html#gaa46e4763ac375ea3c7a43ba6f6099e22">apr_file_t apr_file_t; 00175 00176 /* File lock types/flags */ 00177 /** 00178 * @defgroup apr_file_lock_types File Lock Types 00179 * @{ 00180 */ 00181 00182 #define APR_FLOCK_SHARED 1 /**< Shared lock. More than one process 00183 c667eass="code" href="group__apr__file__io.html#gaa46e4763ac375ea3c7a43ba6f6099e22">apr_file_t apr_file_t; 00175 00176 /* File lock types/flags */ 00177 /** 00178 * @defgroup apr_file_lock_types File Lock Types 00179 * @{ 00180 */ 00181 00182 #define APR_FLOCK_SHARED 1 /**< Shared lock. More than one process 00183 c667eass="code" href="group__apr__file__io.html#gaa46e4763ac375ea3c7a43ba6f6099e22">apr_file_t apr_file_t; 00175 00176 /* File lock types/flags */ 00177 /** 00178 * @defgroup apr_file_lock_types File Lock Types 00179 * @{ 00180 */ 00181 00182 #define APR_FLOCK_SHARED 1 /**< Shared lock. More than one process 00183 c667eass="code" href="group__apr__file__io.html#gaa46e4763ac375ea3c7a43ba6f6099e22">apr_file_t apr_file_t; 00175 00176 /* File lock types/flags */ 00177 /** 00178 * @defgroup apr_file_lock_types File Lock Types 00179 * @{ 00180 */ 00181 00182 #define APR_FLOCK_SHARED 1 /**< Shared lock. More than one process 00183 c667eass="code" href="group__apr__file__io.html#gaa46e4763ac375ea3c7a43ba6f6099e22">apr_file_t apr_file_t; 00175 00176 /* File lock types/flags */ 00177 /** 00178 * @defgroup apr_file_lock_types File Lock Types 00179 * @{ 00180 */ 00181 00182 #define APR_FLOCK_SHARED 1 /**< Shared lock. More than one process 00183 c667eass="code" href="group__apr__file__io.html#gaa46e4763ac375ea3c7a43ba6f6099e22">apr_file_t apr_file_t; 00175 00176 /* File lock types/flags */ 00177 /** 00178 * @defgroup apr_file_lock_types File Lock Types 00179 * @{ 00180 */ 00181 00182 #define APR_FLOCK_SHARED 1 /**< Shared lock. More than one process 00183 c667eass="code" href="group__apr__file__io.html#gaa46e4763ac375ea3c7a43ba6f6099e22">apr_file_t apr_file_t; 00175 00176 /* File lock types/flags */ 00177 /** 00178 * @defgroup apr_file_lock_types File Lock Types 00179 * @{ 00180 */ 00181 00182 #define APR_FLOCK_SHARED 1 /**< Shared lock. More than one process 00183 c667eass="code" href="group__apr__file__io.html#gaa46e4763ac375ea3c7a43ba6f6099e22">apr_file_t apr_file_t; 00175 00176 /* File lock types/flags */ 00177 /** 00178 * @defgroup apr_file_lock_types File Lock Types 00179 * @{ 00180 */ 00181 00182 #define APR_FLOCK_SHARED 1 /**< Shared lock. More than one process 00183 c667eass="code" href="group__apr__file__io.html#gaa46e4763ac375ea3c7a43ba6f6099e22">apr_file_t apr_file_t; 00175 00176 /* File lock types/flags */ 00177 /** 00178 * @defgroup apr_file_lock_types File Lock Types 00179 * @{ 00180 */ 00181 00182 #define APR_FLOCK_SHARED 1 /**< Shared lock. More than one process 00183 c667eass="code" href="group__apr__file__io.html#gaa46e4763ac375ea3c7a43ba6f6099e22">apr_file_t apr_file_t; 00175 00176 /* File lock types/flags */ 00177 /** 00178 * @defgroup apr_file_lock_types File Lock Types 00179 * @{ 00180 */ 00181 00182 #define APR_FLOCK_SHARED 1 /**< Shared lock. More than one process 00183 c667eass="code" href="group__apr__file__io.html#gaa46e4763ac375ea3c7a43ba6f6099e22">apr_file_t apr_file_t; 00175 00176 /* File lock types/flags */ 00177 /** 00178 * @defgroup apr_file_lock_types File Lock Types 00179 * @{ 00180 */ 00181 00182 #define APR_FLOCK_SHARED 1 /**< Shared lock. More than one process 00183 c667eass="code" href="group__apr__file__io.html#gaa46e4763ac375ea3c7a43ba6f6099e22">apr_file_t apr_file_t; 00175 00176 /* File lock types/flags */ 00177 /** 00178 * @defgroup apr_file_lock_types File Lock Types 00179 * @{ 00180 */ 00181 00182 #define APR_FLOCK_SHARED 1 /**< Shared lock. More than one process 00183 c667eass="code" href="group__apr__file__io.html#gaa46e4763ac375ea3c7a43ba6f6099e22">apr_file_t apr_file_t; 00175 00176 /* File lock types/flags */ 00177 /** 00178 * @defgroup apr_file_lock_types File Lock Types 00179 * @{ 00180 */ 00181 00182 #define APR_FLOCK_SHARED 1 /**< Shared lock. More than one process 00183 c667eass="code" href="group__apr__file__io.html#gaa46e4763ac375ea3c7a43ba6f6099e22">apr_file_t apr_file_t; 00175 00176 /* File lock types/flags */ 00177 /** 00178 * @defgroup apr_file_lock_types File Lock Types 00179 * @{ 00180 */ 00181 00182 #define APR_FLOCK_SHARED 1 /**< Shared lock. More than one process 00183 c667eass="code" href="group__apr__file__io.html#gaa46e4763ac375ea3c7a43ba6f6099e22">apr_file_t apr_file_t; 00175 00176 /* File lock types/flags */ 00177 /** 00178 * @defgroup apr_file_lock_types File Lock Types 00179 * @{ 00180 */ 00181 00182 #define APR_FLOCK_SHARED 1 /**< Shared lock. More than one process 00183 c667eass="code" href="group__apr__file__io.html#gaa46e4763ac375ea3c7a43ba6f6099e22">apr_file_t apr_file_t; 00175 00176 /* File lock types/flags */ 00177 /** 00178 * @defgroup apr_file_lock_types File Lock Types 00179 * @{ 00180 */ 00181 00182 #define APR_FLOCK_SHARED 1 /**< Shared lock. More than one process 00183 c667eass="code" href="group__apr__file__io.html#gaa46e4763ac375ea3c7a43ba6f6099e22">apr_file_t apr_file_t; 00175 00176 /* File lock types/flags */ 00177 /** 00178 * @defgroup apr_file_lock_types File Lock Types 00179 * @{ 00180 */ 00181 00182 #define APR_FLOCK_SHARED 1 /**< Shared lock. More than one process 00183 c667eass="code" href="group__apr__file__io.html#gaa46e4763ac375ea3c7a43ba6f6099e22">apr_file_t apr_file_t; 00175 00176 /* File lock types/flags */ 00177 /** 00178 * @defgroup apr_file_lock_types File Lock Types 00179 * @{ 00180 */ 00181 00182 #define APR_FLOCK_SHARED 1 /**< Shared lock. More than one process 00183 c667eass="code" href="group__apr__file__io.html#gaa46e4763ac375ea3c7a43ba6f6099e22">apr_file_t apr_file_t; 00175 00176 /* File lock types/flags */ 00177 /** 00178 * @defgroup apr_file_lock_types File Lock Types 00179 * @{ 00180 */ 00181 00182 #define APR_FLOCK_SHARED 1 /**< Shared lock. More than one process 00183 c667eass="code" href="group__apr__file__io.html#gaa46e4763ac375ea3c7a43ba6f6099e22">apr_file_t apr_file_t; 00175 00176 /* File lock types/flags */ 00177 /** 00178 * @defgroup apr_file_lock_types File Lock Types 00179 * @{ 00180 */ 00181 00182 #define APR_FLOCK_SHARED 1 /**< Shared lock. More than one process 00183 c667eass="code" href="group__apr__file__io.html#gaa46e4763ac375ea3c7a43ba6f6099e22">apr_file_t apr_file_t; 00175 00176 /* File lock types/flags */ 00177 /** 00178 * @defgroup apr_file_lock_types File Lock Types 00179 * @{ 00180 */ 00181 00182 #define APR_FLOCK_SHARED 1 /**< Shared lock. More than one process 00183 c667eass="code" href="group__apr__file__io.html#gaa46e4763ac375ea3c7a43ba6f6099e22">apr_file_t apr_file_t; 00175 00176 /* File lock types/flags */ 00177 /** 00178 * @defgroup apr_file_lock_types File Lock Types 00179 * @{ 00180 */ 00181 00182 #define APR_FLOCK_SHARED 1 /**< Shared lock. More than one process 00183 c667eass="code" href="group__apr__file__io.html#gaa46e4763ac375ea3c7a43ba6f6099e22">apr_file_t apr_file_t; 00175 00176 /* File lock types/flags */ 00177 /** 00178 * @defgroup apr_file_lock_types File Lock Types 00179 * @{ 00180 */ 00181 00182 #define APR_FLOCK_SHARED 1 /**< Shared lock. More than one process 00183 c667eass="code" href="group__apr__file__io.html#gaa46e4763ac375ea3c7a43ba6f6099e22">apr_file_t apr_file_t; 00175 00176 /* File lock types/flags */ 00177 /** 00178 * @defgroup apr_file_lock_types File Lock Types 00179 * @{ 00180 */ 00181 00182 #define APR_FLOCK_SHARED 1 /**< Shared lock. More than one process 00183 c667eass="code" href="group__apr__file__io.html#gaa46e4763ac375ea3c7a43ba6f6099e22">apr_file_t apr_file_t; 00175 00176 /* File lock types/flags */ 00177 /** 00178 * @defgroup apr_file_lock_types File Lock Types 00179 * @{ 00180 */ 00181 00182 #define APR_FLOCK_SHARED 1 /**< Shared lock. More than one process 00183 c667eass="code" href="group__apr__file__io.html#gaa46e4763ac375ea3c7a43ba6f6099e22">apr_file_t apr_file_t; 00175 00176 /* File lock types/flags */ 00177 /** 00178 * @defgroup apr_file_lock_types File Lock Types 00179 * @{ 00180 */ 00181 00182 #define APR_FLOCK_SHARED 1 /**< Shared lock. More than one process 00183 c667eass="code" href="group__apr__file__io.html#gaa46e4763ac375ea3c7a43ba6f6099e22">apr_file_t apr_file_t; 00175 00176 /* File lock types/flags */ 00177 /** 00178 * @defgroup apr_file_lock_types File Lock Types 00179 * @{ 00180 */ 00181 00182 #define APR_FLOCK_SHARED 1 /**< Shared lock. More than one process 00183 c667eass="code" href="group__apr__file__io.html#gaa46e4763ac375ea3c7a43ba6f6099e22">apr_file_t apr_file_t; 00175 00176 /* File lock types/flags */ 00177 /** 00178 * @defgroup apr_file_lock_types File Lock Types 00179 * @{ 00180 */ 00181 00182 #define APR_FLOCK_SHARED 1 /**< Shared lock. More than one process 00183 c667eass="code" href="group__apr__file__io.html#gaa46e4763ac375ea3c7a43ba6f6099e22">apr_file_t apr_file_t; 00175 00176 /* File lock types/flags */ 00177 /** 00178 * @defgroup apr_file_lock_types File Lock Types 00179 * @{ 00180 */ 00181 00182 #define APR_FLOCK_SHARED 1 /**< Shared lock. More than one process 00183 c667eass="code" href="group__apr__file__io.html#gaa46e4763ac375ea3c7a43ba6f6099e22">apr_file_t apr_file_t; 00175 00176 /* File lock types/flags */ 00177 /** 00178 * @defgroup apr_file_lock_types File Lock Types 00179 * @{ 00180 */ 00181 00182 #define APR_FLOCK_SHARED 1 /**< Shared lock. More than one process 00183 c667eass="code" href="group__apr__file__io.html#gaa46e4763ac375ea3c7a43ba6f6099e22">apr_file_t apr_file_t; 00175 00176 /* File lock types/flags */ 00177 /** 00178 * @defgroup apr_file_lock_types File Lock Types 00179 * @{ 00180 */ 00181 00182 #define APR_FLOCK_SHARED 1 /**< Shared lock. More than one process 00183 c667eass="code" href="group__apr__file__io.html#gaa46e4763ac375ea3c7a43ba6f6099e22">apr_file_t apr_file_t; 00175 00176 /* File lock types/flags */ 00177 /** 00178 * @defgroup apr_file_lock_types File Lock Types 00179 * @{ 00180 */ 00181 00182 #define APR_FLOCK_SHARED 1 /**< Shared lock. More than one process 00183 c667eass="code" href="group__apr__file__io.html#gaa46e4763ac375ea3c7a43ba6f6099e22">apr_file_t apr_file_t; 00175 00176 /* File lock types/flags */ 00177 /** 00178 * @defgroup apr_file_lock_types File Lock Types 00179 * @{ 00180 */ 00181 00182 #define APR_FLOCK_SHARED 1 /**< Shared lock. More than one process 00183 c667eass="code" href="group__apr__file__io.html#gaa46e4763ac375ea3c7a43ba6f6099e22">apr_file_t apr_file_t; 00175 00176 /* File lock types/flags */ 00177 /** 00178 * @defgroup apr_file_lock_types File Lock Types 00179 * @{ 00180 */ 00181 00182 #define APR_FLOCK_SHARED 1 /**< Shared lock. More than one process 00183 c667eass="code" href="group__apr__file__io.html#gaa46e4763ac375ea3c7a43ba6f6099e22">apr_file_t apr_file_t; 00175 00176 /* File lock types/flags */ 00177 /** 00178 * @defgroup apr_file_lock_types File Lock Types 00179 * @{ 00180 */ 00181 00182 #define APR_FLOCK_SHARED 1 /**< Shared lock. More than one process 00183 c667eass="code" href="group__apr__file__io.html#gaa46e4763ac375ea3c7a43ba6f6099e22">apr_file_t apr_file_t; 00175 00176 /* File lock types/flags */ 00177 /** 00178 * @defgroup apr_file_lock_types File Lock Types 00179 * @{ 00180 */ 00181 00182 #define APR_FLOCK_SHARED 1 /**< Shared lock. More than one process 00183 c667eass="code" href="group__apr__file__io.html#gaa46e4763ac375ea3c7a43ba6f6099e22">apr_file_t apr_file_t; 00175 00176 /* File lock types/flags */ 00177 /** 00178 * @defgroup apr_file_lock_types File Lock Types 00179 * @{ 00180 */ 00181 00182 #define APR_FLOCK_SHARED 1 /**< Shared lock. More than one process 00183 c667eass="code" href="group__apr__file__io.html#gaa46e4763ac375ea3c7a43ba6f6099e22">apr_file_t apr_file_t; 00175 00176 /* File lock types/flags */ 00177 /** 00178 * @defgroup apr_file_lock_types File Lock Types 00179 * @{ 00180 */ 00181 00182 #define APR_FLOCK_SHARED 1 /**< Shared lock. More than one process 00183 c667eass="code" href="group__apr__file__io.html#gaa46e4763ac375ea3c7a43ba6f6099e22">apr_file_t apr_file_t; 00175 00176 /* File lock types/flags */ 00177 /** 00178 * @defgroup apr_file_lock_types File Lock Types 00179 * @{ 00180 */ 00181 00182 #define APR_FLOCK_SHARED 1 /**< Shared lock. More than one process 00183 c667eass="code" href="group__apr__file__io.html#gaa46e4763ac375ea3c7a43ba6f6099e22">apr_file_t apr_file_t; 00175 00176 /* File lock types/flags */ 00177 /** 00178 * @defgroup apr_file_lock_types File Lock Types 00179 * @{ 00180 */ 00181 00182 #define APR_FLOCK_SHARED 1 /**< Shared lock. More than one process 00183 c667eass="code" href="group__apr__file__io.html#gaa46e4763ac375ea3c7a43ba6f6099e22">apr_file_t apr_file_t; 00175 00176 /* File lock types/flags */ 00177 /** 00178 * @defgroup apr_file_lock_types File Lock Types 00179 * @{ 00180 */ 00181 00182 #define APR_FLOCK_SHARED 1 /**< Shared lock. More than one process 00183 c667eass="code" href="group__apr__file__io.html#gaa46e4763ac375ea3c7a43ba6f6099e22">apr_file_t apr_file_t; 00175 00176 /* File lock types/flags */ 00177 /** 00178 * @defgroup apr_file_lock_types File Lock Types 00179 * @{ 00180 */ 00181 00182 #define APR_FLOCK_SHARED 1 /**< Shared lock. More than one process 00183 c667eass="code" href="group__apr__file__io.html#gaa46e4763ac375ea3c7a43ba6f6099e22">apr_file_t apr_file_t; 00175 00176 /* File lock types/flags */ 00177 /** 00178 * @defgroup apr_file_lock_types File Lock Types 00179 * @{ 00180 */ 00181 00182 #define APR_FLOCK_SHARED 1 /**< Shared lock. More than one process 00183 c667eass="code" href="group__apr__file__io.html#gaa46e4763ac375ea3c7a43ba6f6099e22">apr_file_t apr_file_t; 00175 00176 /* File lock types/flags */ 00177 /** 00178 * @defgroup apr_file_lock_types File Lock Types 00179 * @{ 00180 */ 00181 00182 #define APR_FLOCK_SHARED 1 /**< Shared lock. More than one process 00183 c667eass="code" href="group__apr__file__io.html#gaa46e4763ac375ea3c7a43ba6f6099e22">apr_file_t apr_file_t; 00175 00176 /* File lock types/flags */ 00177 /** 00178 * @defgroup apr_file_lock_types File Lock Types 00179 * @{ 00180 */ 00181 00182 #define APR_FLOCK_SHARED 1 /**< Shared lock. More than one process 00183 c667eass="code" href="group__apr__file__io.html#gaa46e4763ac375ea3c7a43ba6f6099e22">apr_file_t apr_file_t; 00175 00176 /* File lock types/flags */ 00177 /** 00178 * @defgroup apr_file_lock_types File Lock Types 00179 * @{ 00180 */ 00181 00182 #define APR_FLOCK_SHARED 1 /**< Shared lock. More than one process 00183 c667eass="code" href="group__apr__file__io.html#gaa46e4763ac375ea3c7a43ba6f6099e22">apr_file_t apr_file_t; 00175 00176 /* File lock types/flags */ 00177 /** 00178 * @defgroup apr_file_lock_types File Lock Types 00179 * @{ 00180 */ 00181 00182 #define APR_FLOCK_SHARED 1 /**< Shared lock. More than one process 00183 c667eass="code" href="group__apr__file__io.html#gaa46e4763ac375ea3c7a43ba6f6099e22">apr_file_t apr_file_t; 00175 00176 /* File lock types/flags */ 00177 /** 00178 * @defgroup apr_file_lock_types File Lock Types 00179 * @{ 00180 */ 00181 00182 #define APR_FLOCK_SHARED 1 /**< Shared lock. More than one process 00183 c667eass="code" href="group__apr__file__io.html#gaa46e4763ac375ea3c7a43ba6f6099e22">apr_file_t apr_file_t; 00175 00176 /* File lock types/flags */ 00177 /** 00178 * @defgroup apr_file_lock_types File Lock Types 00179 * @{ 00180 */ 00181 00182 #define APR_FLOCK_SHARED 1 /**< Shared lock. More than one process 00183 c667eass="code" href="group__apr__file__io.html#gaa46e4763ac375ea3c7a43ba6f6099e22">apr_file_t apr_file_t; 00175 00176 /* File lock types/flags */ 00177 /** 00178 * @defgroup apr_file_lock_types File Lock Types 00179 * @{ 00180 */ 00181 00182 #define APR_FLOCK_SHARED 1 /**< Shared lock. More than one process 00183 c667eass="code" href="group__apr__file__io.html#gaa46e4763ac375ea3c7a43ba6f6099e22">apr_file_t apr_file_t; 00175 00176 /* File lock types/flags */ 00177 /** 00178 * @defgroup apr_file_lock_types File Lock Types 00179 * @{ 00180 */ 00181 00182 #define APR_FLOCK_SHARED 1 /**< Shared lock. More than one process 00183 c667eass="code" href="group__apr__file__io.html#gaa46e4763ac375ea3c7a43ba6f6099e22">apr_file_t apr_file_t; 00175 00176 /* File lock types/flags */ 00177 /** 00178 * @defgroup apr_file_lock_types File Lock Types 00179 * @{ 00180 */ 00181 00182 #define APR_FLOCK_SHARED 1 /**< Shared lock. More than one process 00183 c667eass="code" href="group__apr__file__io.html#gaa46e4763ac375ea3c7a43ba6f6099e22">apr_file_t apr_file_t; 00175 00176 /* File lock types/flags */ 00177 /** 00178 * @defgroup apr_file_lock_types File Lock Types 00179 * @{ 00180 */ 00181 00182 #define APR_FLOCK_SHARED 1 /**< Shared lock. More than one process 00183 c667eass="code" href="group__apr__file__io.html#gaa46e4763ac375ea3c7a43ba6f6099e22">apr_file_t apr_file_t; 00175 00176 /* File lock types/flags */ 00177 /** 00178 * @defgroup apr_file_lock_types File Lock Types 00179 * @{ 00180 */ 00181 00182 #define APR_FLOCK_SHARED 1 /**< Shared lock. More than one process 00183 c667eass="code" href="group__apr__file__io.html#gaa46e4763ac375ea3c7a43ba6f6099e22">apr_file_t apr_file_t; 00175 00176 /* File lock types/flags */ 00177 /** 00178 * @defgroup apr_file_lock_types File Lock Types 00179 * @{ 00180 */ 00181 00182 #define APR_FLOCK_SHARED 1 /**< Shared lock. More than one process 00183 c667eass="code" href="group__apr__file__io.html#gaa46e4763ac375ea3c7a43ba6f6099e22">apr_file_t apr_file_t; 00175 00176 /* File lock types/flags */ 00177 /** 00178 * @defgroup apr_file_lock_types File Lock Types 00179 * @{ 00180 */ 00181 00182 #define APR_FLOCK_SHARED 1 /**< Shared lock. More than one process 00183 c667eass="code" href="group__apr__file__io.html#gaa46e4763ac375ea3c7a43ba6f6099e22">apr_file_t apr_file_t; 00175 00176 /* File lock types/flags */ 00177 /** 00178 * @defgroup apr_file_lock_types File Lock Types 00179 * @{ 00180 */ 00181 00182 #define APR_FLOCK_SHARED 1 /**< Shared lock. More than one process 00183 c667eass="code" href="group__apr__file__io.html#gaa46e4763ac375ea3c7a43ba6f6099e22">apr_file_t apr_file_t; 00175 00176 /* File lock types/flags */ 00177 /** 00178 * @defgroup apr_file_lock_types File Lock Types 00179 * @{ 00180 */ 00181 00182 #define APR_FLOCK_SHARED 1 /**< Shared lock. More than one process 00183 c667eass="code" href="group__apr__file__io.html#gaa46e4763ac375ea3c7a43ba6f6099e22">apr_file_t apr_file_t; 00175 00176 /* File lock types/flags */ 00177 /** 00178 * @defgroup apr_file_lock_types File Lock Types 00179 * @{ 00180 */ 00181 00182 #define APR_FLOCK_SHARED 1 /**< Shared lock. More than one process 00183 c667eass="code" href="group__apr__file__io.html#gaa46e4763ac375ea3c7a43ba6f6099e22">apr_file_t apr_file_t; 00175 00176 /* File lock types/flags */ 00177 /** 00178 * @defgroup apr_file_lock_types File Lock Types 00179 * @{ 00180 */ 00181 00182 #define APR_FLOCK_SHARED 1 /**< Shared lock. More than one process 00183 c667eass="code" href="group__apr__file__io.html#gaa46e4763ac375ea3c7a43ba6f6099e22">apr_file_t apr_file_t; 00175 00176 /* File lock types/flags */ 00177 /** 00178 * @defgroup apr_file_lock_types File Lock Types 00179 * @{ 00180 */ 00181 00182 #define APR_FLOCK_SHARED 1 /**< Shared lock. More than one process 00183 c667eass="code" href="group__apr__file__io.html#gaa46e4763ac375ea3c7a43ba6f6099e22">apr_file_t apr_file_t; 00175 00176 /* File lock types/flags */ 00177 /** 00178 * @defgroup apr_file_lock_types File Lock Types 00179 * @{ 00180 */ 00181 00182 #define APR_FLOCK_SHARED 1 /**< Shared lock. More than one process 00183 c667eass="code" href="group__apr__file__io.html#gaa46e4763ac375ea3c7a43ba6f6099e22">apr_file_t apr_file_t; 00175 00176 /* File lock types/flags */ 00177 /** 00178 * @defgroup apr_file_lock_types File Lock Types 00179 * @{ 00180 */ 00181 00182 #define APR_FLOCK_SHARED 1 /**< Shared lock. More than one process 00183 c667eass="code" href="group__apr__file__io.html#gaa46e4763ac375ea3c7a43ba6f6099e22">apr_file_t apr_file_t; 00175 00176 /* File lock types/flags */ 00177 /** 00178 * @defgroup apr_file_lock_types File Lock Types 00179 * @{ 00180