1 /*
2  * Copyright (C) 1996-2021 The Squid Software Foundation and contributors
3  *
4  * Squid software is distributed under GPLv2+ license and includes
5  * contributions from numerous individuals and organizations.
6  * Please see the COPYING and CONTRIBUTORS files for details.
7  */
8 
9 /* DEBUG: section 06    Disk I/O Routines */
10 
11 #ifndef SQUID_FS_IO_H_
12 #define SQUID_FS_IO_H_
13 
14 #include "mem/forward.h"
15 #include "sbuf/forward.h"
16 #include "typedefs.h" //DRCB, DWCB
17 
18 class MemBuf;
19 
20 // POD
21 class dread_ctrl
22 {
23 public:
24     int fd;
25     off_t offset;
26     int req_len;
27     char *buf;
28     int end_of_file;
29     DRCB *handler;
30     void *client_data;
31 };
32 
33 // POD
34 class dwrite_q
35 {
36 public:
37     off_t file_offset;
38     char *buf;
39     size_t len;
40     size_t buf_offset;
41     dwrite_q *next;
42     FREE *free_func;
43 };
44 
45 int file_open(const char *path, int mode);
46 void file_close(int fd);
47 void file_write(int, off_t, void const *, int len, DWCB *, void *, FREE *);
48 void file_write_mbuf(int fd, off_t, MemBuf mb, DWCB * handler, void *handler_data);
49 void file_read(int, char *, int, off_t, DRCB *, void *);
50 void safeunlink(const char *path, int quiet);
51 
52 /*
53  * Wrapper for rename(2) which complains if something goes wrong;
54  * the caller is responsible for handing and explaining the
55  * consequences of errors.
56  *
57  * \retval true successful rename
58  * \retval false an error occured
59  */
60 bool FileRename(const SBuf &from, const SBuf &to);
61 
62 int fsBlockSize(const char *path, int *blksize);
63 int fsStats(const char *, int *, int *, int *, int *);
64 
65 #endif /* SQUID_FS_IO_H_ */
66 
67