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-2005, PostgreSQL Global Development Group
19
* Portions Copyright (c) 1994, Regents of the University of California
21
* $PostgreSQL: pgsql/src/include/storage/buffile.h,v 1.18 2004-12-31 22:03:42 pgsql Exp $
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, long offset, int whence);
42
extern void BufFileTell(BufFile *file, int *fileno, long *offset);
43
extern int BufFileSeekBlock(BufFile *file, long blknum);
45
#endif /* BUFFILE_H */