1 /*-------------------------------------------------------------------------
4 * Management of large buffered files, primarily temporary files.
6 * The BufFile routines provide a partial replacement for stdio atop
7 * virtual file descriptors managed by fd.c. Currently they only support
8 * buffered access to a virtual file, without any of stdio's formatting
9 * features. That's enough for immediate needs, but the set of facilities
10 * could be expanded if necessary.
12 * BufFile also supports working with temporary files that exceed the OS
13 * file size limit and/or the largest offset representable in an int.
14 * It might be better to split that out as a separately accessible module,
15 * but currently we have no need for oversize temp files without buffered
18 * Portions Copyright (c) 1996-2008, PostgreSQL Global Development Group
19 * Portions Copyright (c) 1994, Regents of the University of California
23 *-------------------------------------------------------------------------
29 /* BufFile is an opaque type whose details are not known outside buffile.c. */
31 typedef struct BufFile BufFile
;
34 * prototypes for functions in buffile.c
37 extern BufFile
*BufFileCreateTemp(bool interXact
);
38 extern void BufFileClose(BufFile
*file
);
39 extern size_t BufFileRead(BufFile
*file
, void *ptr
, size_t size
);
40 extern size_t BufFileWrite(BufFile
*file
, void *ptr
, size_t size
);
41 extern int BufFileSeek(BufFile
*file
, int fileno
, off_t offset
, int whence
);
42 extern void BufFileTell(BufFile
*file
, int *fileno
, off_t
*offset
);
43 extern int BufFileSeekBlock(BufFile
*file
, long blknum
);
45 #endif /* BUFFILE_H */