]> mj.ucw.cz Git - libucw.git/blob - lib/lfs.h
db4ceafd3b92241866b53dd4c7ecb24d209feb94
[libucw.git] / lib / lfs.h
1 /*
2  *      UCW Library -- Large File Support
3  *
4  *      (c) 1999--2002 Martin Mares <mj@ucw.cz>
5  *
6  *      This software may be freely distributed and used according to the terms
7  *      of the GNU Lesser General Public License.
8  */
9
10 #ifndef _UCW_LFS_H
11 #define _UCW_LFS_H
12
13 #include <fcntl.h>
14 #include <unistd.h>
15
16 #ifdef CONFIG_LFS
17
18 #define sh_open open64
19 #define sh_seek lseek64
20 #define sh_pread pread64
21 #define sh_pwrite pwrite64
22 #define sh_ftruncate ftruncate64
23 #define sh_mmap(a,l,p,f,d,o) mmap64(a,l,p,f,d,o)
24 #define sh_pread pread64
25 #define sh_pwrite pwrite64
26 #define sh_stat stat64
27
28 #else   /* !CONFIG_LFS */
29
30 #define sh_open open
31 #define sh_seek(f,o,w) lseek(f,o,w)
32 #define sh_ftruncate(f,o) ftruncate(f,o)
33 #define sh_mmap(a,l,p,f,d,o) mmap(a,l,p,f,d,o)
34 #define sh_pread pread
35 #define sh_pwrite pwrite
36 #define sh_stat stat
37
38 #endif  /* !CONFIG_LFS */
39
40 #define HAVE_PREAD
41
42 static inline sh_off_t
43 sh_file_size(byte *name)
44 {
45   int fd = sh_open(name, O_RDONLY);
46   if (fd < 0)
47     die("Cannot open %s: %m", name);
48   sh_off_t len = sh_seek(fd, 0, SEEK_END);
49   close(fd);
50   return len;
51 }
52
53 #endif  /* !_UCW_LFS_H */