]> mj.ucw.cz Git - libucw.git/blobdiff - lib/lfs.h
Added bitsig_free().
[libucw.git] / lib / lfs.h
index 44ba65c5b9725f3a4d6856733dc0205adfc8f1ab..d4d4a60b2a0cff0af5e89270e97bc54f84742a61 100644 (file)
--- a/lib/lfs.h
+++ b/lib/lfs.h
@@ -1,12 +1,15 @@
 /*
  *     Sherlock Library -- Large File Support
  *
- *     (c) 1999--2000 Martin Mares, <mj@atrey.karlin.mff.cuni.cz>
+ *     (c) 1999--2001 Martin Mares <mj@ucw.cz>
  */
 
 #ifndef _SHERLOCK_LFS_H
 #define _SHERLOCK_LFS_H
 
+#include <fcntl.h>
+#include <unistd.h>
+
 #ifdef SHERLOCK_CONFIG_LFS
 
 #ifdef SHERLOCK_CONFIG_LFS_LIBC
 #define sh_seek lseek64
 #define sh_pread pread64
 #define sh_pwrite pwrite64
+#define sh_ftruncate ftruncate64
+#define sh_mmap(a,l,p,f,d,o) mmap64(a,l,p,f,d,o)
 #define SHERLOCK_HAVE_PREAD
 
 #else
 
+#error Non-libc interface to LFS is currently broken, you have to fix it.
+
 /*
- *  Talk directly with the kernel. The LFS implementations of LFS in Linux 2.2
+ *  Talk directly with the kernel. The implementations of LFS in Linux 2.2
  *  and 2.4 differ, but fortunately for us only in things like stat64 which
  *  we don't need to use.
  */
@@ -39,7 +46,7 @@
 #endif
 #endif
 
-extern inline int
+static inline int
 sh_open(char *name, int flags, int mode)
 {
   return open(name, flags | O_LARGEFILE, mode);
@@ -54,7 +61,7 @@ sh_open(char *name, int flags, int mode)
 
 _syscall5(int, _llseek, int, fd, int, hi, int, lo, loff_t *, result, int, whence);
 
-extern inline loff_t sh_seek(int fd, sh_off_t pos, int whence)
+static inline loff_t sh_seek(int fd, sh_off_t pos, int whence)
 {
   loff_t result;
   int err;
@@ -81,6 +88,8 @@ extern loff_t llseek(int fd, loff_t pos, int whence);
 
 #define sh_open open
 #define sh_seek(f,o,w) lseek(f,o,w)
+#define sh_ftruncate(f,o) ftruncate(f,o)
+#define sh_mmap(a,l,p,f,d,o) mmap(a,l,p,f,d,o)
 
 #endif /* !SHERLOCK_CONFIG_LFS */
 
@@ -122,6 +131,7 @@ static int sh_pwrite(unsigned int fd, void *buf, size_t size, loff_t where)
 #elif defined(i386)
 /* old libc on i386 -> call syscalls directly the old way */
 #include <asm/unistd.h>
+#include <errno.h>
 static _syscall4(int, pread, unsigned int, fd, void *, buf, size_t, size, loff_t, where);
 static _syscall4(int, pwrite, unsigned int, fd, void *, buf, size_t, size, loff_t, where);
 #define sh_pread pread