Lines Matching defs:file

1 /* rev_file.c --- revision file and index access functions
5 * or more contributor license agreements. See the NOTICE file
7 * regarding copyright ownership. The ASF licenses this file
9 * "License"); you may not use this file except in compliance
34 /* Return a new revision file instance, allocated in RESULT_POOL, for
41 svn_fs_x__revision_file_t *file = apr_palloc(result_pool, sizeof(*file));
43 file->is_packed = FALSE;
44 file->start_revision = SVN_INVALID_REVNUM;
46 file->file = NULL;
47 file->stream = NULL;
48 file->p2l_stream = NULL;
49 file->l2p_stream = NULL;
50 file->block_size = ffd->block_size;
51 file->l2p_offset = -1;
52 file->l2p_checksum = NULL;
53 file->p2l_offset = -1;
54 file->p2l_checksum = NULL;
55 file->footer_offset = -1;
56 file->pool = result_pool;
58 return file;
61 /* Return a new revision file instance, allocated in RESULT_POOL, for
69 svn_fs_x__revision_file_t *file = create_revision_file(fs, result_pool);
71 file->is_packed = svn_fs_x__is_packed_rev(fs, revision);
72 file->start_revision = svn_fs_x__packed_base_rev(fs, revision);
74 return file;
89 * (trying to) set the specified file to r/o mode. */
107 /* If the file at PATH is read-only, attempt to make it writable. The
124 (assuming the file will still exist, failing silently otherwise). */
142 * access to the file - temporarily resetting the r/o state if necessary.
145 open_pack_or_rev_file(svn_fs_x__revision_file_t *file,
167 /* open the revision file in buffered r/o or r/w mode */
174 file->file = apr_file;
175 file->stream = svn_stream_from_aprfile2(apr_file, TRUE,
183 /* Could not open the file. This may happen if the
184 * file once existed but got packed later. */
194 file->start_revision = svn_fs_x__packed_base_rev(fs, rev);
209 svn_fs_x__open_pack_or_rev_file(svn_fs_x__revision_file_t **file,
215 *file = init_revision_file(fs, rev, result_pool);
216 return svn_error_trace(open_pack_or_rev_file(*file, fs, rev, FALSE,
221 svn_fs_x__open_pack_or_rev_file_writable(svn_fs_x__revision_file_t** file,
227 *file = init_revision_file(fs, rev, result_pool);
228 return svn_error_trace(open_pack_or_rev_file(*file, fs, rev, TRUE,
233 svn_fs_x__auto_read_footer(svn_fs_x__revision_file_t *file)
235 if (file->l2p_offset == -1)
241 /* Determine file size. */
242 SVN_ERR(svn_io_file_seek(file->file, APR_END, &filesize, file->pool));
245 SVN_ERR(svn_io_file_aligned_seek(file->file, file->block_size, NULL,
246 filesize - 1, file->pool));
247 SVN_ERR(svn_io_file_read_full2(file->file, &footer_length,
249 file->pool));
252 footer = svn_stringbuf_create_ensure(footer_length, file->pool);
253 SVN_ERR(svn_io_file_aligned_seek(file->file, file->block_size, NULL,
255 file->pool));
256 SVN_ERR(svn_io_file_read_full2(file->file, footer->data, footer_length,
257 &footer->len, NULL, file->pool));
261 SVN_ERR(svn_fs_x__parse_footer(&file->l2p_offset, &file->l2p_checksum,
262 &file->p2l_offset, &file->p2l_checksum,
263 footer, file->start_revision,
264 file->pool));
265 file->footer_offset = filesize - footer_length - 1;
272 svn_fs_x__open_proto_rev_file(svn_fs_x__revision_file_t **file,
285 return svn_error_trace(svn_fs_x__wrap_temp_rev_file(file, fs, apr_file,
290 svn_fs_x__wrap_temp_rev_file(svn_fs_x__revision_file_t **file,
295 *file = create_revision_file(fs, result_pool);
296 (*file)->file = temp_file;
297 (*file)->stream = svn_stream_from_aprfile2(temp_file, TRUE, result_pool);
303 svn_fs_x__close_revision_file(svn_fs_x__revision_file_t *file)
305 if (file->stream)
306 SVN_ERR(svn_stream_close(file->stream));
307 if (file->file)
308 SVN_ERR(svn_io_file_close(file->file, file->pool));
310 file->file = NULL;
311 file->stream = NULL;
312 file->l2p_stream = NULL;
313 file->p2l_stream = NULL;