summaryrefslogtreecommitdiff
path: root/filesystems/progsreiserfs/files/patch-libdal_file.c
diff options
context:
space:
mode:
Diffstat (limited to 'filesystems/progsreiserfs/files/patch-libdal_file.c')
-rw-r--r--filesystems/progsreiserfs/files/patch-libdal_file.c26
1 files changed, 26 insertions, 0 deletions
diff --git a/filesystems/progsreiserfs/files/patch-libdal_file.c b/filesystems/progsreiserfs/files/patch-libdal_file.c
new file mode 100644
index 000000000000..76a7926d532f
--- /dev/null
+++ b/filesystems/progsreiserfs/files/patch-libdal_file.c
@@ -0,0 +1,26 @@
+--- libdal/file.c.orig 2002-12-12 12:32:34 UTC
++++ libdal/file.c
+@@ -14,6 +14,7 @@
+
+ #if defined(__freebsd__)
+ # define O_LARGEFILE 0
++# include <sys/disk.h>
+ #endif
+
+ #ifndef DJGPP
+@@ -154,6 +155,15 @@ static count_t file_len(dal_t *dal) {
+
+ #endif
+
++#ifdef DIOCGMEDIASIZE
++
++ if (ioctl(*((int *)dal->entity), DIOCGMEDIASIZE, &size) >= 0)
++ return (count_t)(size / dal->blocksize);
++
++ file_save_error(dal);
++
++#endif
++
+ if ((max_off = lseek(*((int *)dal->entity), 0, SEEK_END)) == (off_t)-1) {
+ file_save_error(dal);
+ return 0;