- Update to 1.13.0

PR:		ports/96744
Submitted by:	Martin Matuska <martin@matuska.org>
This commit is contained in:
Pav Lucistnik 2006-05-05 08:52:13 +00:00
parent f6797d8713
commit 08e703c0f0
Notes: svn2git 2021-03-31 03:12:20 +00:00
svn path=/head/; revision=161395
10 changed files with 104 additions and 207 deletions

View file

@ -6,8 +6,7 @@
#
PORTNAME= ntfsprogs
PORTVERSION= 1.12.1
PORTREVISION= 1
PORTVERSION= 1.13.0
CATEGORIES= sysutils
MASTER_SITES= ${MASTER_SITE_SOURCEFORGE}
MASTER_SITE_SUBDIR= linux-ntfs
@ -17,11 +16,11 @@ COMMENT= Utilities and library to manipulate NTFS partitions
GNU_CONFIGURE= yes
USE_GCC= 3.4+
USE_REINPLACE= yes
USE_GETOPT_LONG=yes
WANT_GNOME= yes
INSTALLS_SHLIB= yes
CONFIGURE_ARGS= --program-transform-name=""
CONFIGURE_ENV= PKG_CONFIG=${LOCALBASE}/bin/pkg-config
CONFIGURE_TARGET= --build=${MACHINE_ARCH}-portbld-freebsd${OSREL}
OPTIONS= GNOMEVFS2 "Install GnomeVFS 2.0 libntfs interface" off \
@ -59,7 +58,7 @@ PLIST_SUB+= GNOMEVFS2="@comment "
CONFIGURE_ARGS+=--enable-fuse-module
PLIST_SUB+= FUSE=""
USE_GNOME+= pkgconfig
BUILD_DEPENDS+= fusefs-libs>2.4:${PORTSDIR}/sysutils/fusefs-libs
BUILD_DEPENDS+= fusefs-libs>2.5:${PORTSDIR}/sysutils/fusefs-libs
MLINKS+= ntfsmount.8 mount.ntfs-fuse.8
.else
CONFIGURE_ARGS+=--disable-fuse-module

View file

@ -1,3 +1,3 @@
MD5 (ntfsprogs-1.12.1.tar.gz) = 607b86d45ab65cf9db2255669545006e
SHA256 (ntfsprogs-1.12.1.tar.gz) = 819085b87b48d8cac5bee125f2b56b93ae08354ca2cf212bf381ea001e1e490a
SIZE (ntfsprogs-1.12.1.tar.gz) = 801124
MD5 (ntfsprogs-1.13.0.tar.gz) = 4679cf54fb37527503d7ad44ec5376a8
SHA256 (ntfsprogs-1.13.0.tar.gz) = a74aa19dca47c4744d0e1245687b54f0a0028e80a9b6e2ce99ba19fd8e168d57
SIZE (ntfsprogs-1.13.0.tar.gz) = 860532

View file

@ -1,84 +0,0 @@
--- libntfs/attrib.c Sat Sep 4 13:16:32 2004
+++ libntfs/attrib.c Fri Jul 22 01:05:09 2005
@@ -709,9 +709,9 @@
*/
s64 ntfs_attr_pread(ntfs_attr *na, const s64 pos, s64 count, void *b)
{
- s64 br, to_read, ofs, total, total2;
+ s64 br, old_to_read, to_read, ofs, total, total2;
ntfs_volume *vol;
runlist_element *rl;
Dprintf("%s(): Entering for inode 0x%llx, attr 0x%x, pos 0x%llx, "
"count 0x%llx.\n", __FUNCTION__,
@@ -741,6 +744,7 @@
if (pos + count > na->data_size) {
if (pos >= na->data_size)
return 0;
+ Dprintf("trunacting read pos=%lld, na->data_size=%lld, (old) count=%lld\n", pos, na->data_size, count);
count = na->data_size - pos;
}
vol = na->ni->vol;
@@ -820,6 +825,10 @@
/* It is a real lcn, read it into @dst. */
to_read = min(count, (rl->length << vol->cluster_size_bits) -
ofs);
+ old_to_read = to_read;
+ to_read = (to_read + 511) / 512 * 512;
+ if(old_to_read != to_read)
+ Dprintf("adjusted %lld->%lld\n", old_to_read, to_read);
retry:
Dprintf("%s(): Reading 0x%llx bytes from vcn 0x%llx, lcn 0x%llx, "
"ofs 0x%llx.\n", __FUNCTION__, to_read,
@@ -828,6 +837,8 @@
ofs, to_read, b);
/* If everything ok, update progress counters and continue. */
if (br > 0) {
+ if(br > old_to_read)
+ br = old_to_read;
total += br;
count -= br;
b = (u8*)b + br;
--- libntfs/device.c Sat Sep 4 13:16:32 2004
+++ libntfs/device.c Mon Jul 11 23:27:55 2005
@@ -441,10 +441,10 @@
*/
static inline int ntfs_device_offset_valid(struct ntfs_device *dev, s64 ofs)
{
- char ch;
+ char ch[512];
if (dev->d_ops->seek(dev, ofs, SEEK_SET) >= 0 &&
- dev->d_ops->read(dev, &ch, 1) == 1)
+ dev->d_ops->read(dev, &ch, 512) > 0)
return 0;
return -1;
}
--- ntfsprogs/ntfsclone.c Mon Jul 25 12:31:30 2005
+++ ntfsprogs/ntfsclone.c Mon Jul 25 12:33:32 2005
@@ -1080,9 +1080,9 @@
static int device_offset_valid(int fd, s64 ofs)
{
- char ch;
+ char ch[512];
- if (lseek(fd, ofs, SEEK_SET) >= 0 && read(fd, &ch, 1) == 1)
+ if (lseek(fd, ofs, SEEK_SET) >= 0 && read(fd, &ch, 512) > 0)
return 0;
return -1;
}
--- ntfsprogs/ntfsresize.c Fri Oct 7 23:57:31 2005
+++ ntfsprogs/ntfsresize.c Tue Oct 11 13:35:09 2005
@@ -1971,6 +1971,11 @@
err_exit("Resident attribute in $Bitmap isn't supported!\n");
bm_bsize = nr_clusters_to_bitmap_byte_size(resize->new_volume_size);
+ if(bm_bsize % 512 != 0) {
+ s64 old_bm_bsize = bm_bsize;
+ bm_bsize = (bm_bsize + 511) / 512 * 512;
+ Dprintf("adjusted bm_bsize: %lld->%lld\n", old_bm_bsize, bm_bsize);
+ }
nr_bm_clusters = rounded_up_division(bm_bsize, vol->cluster_size);
if (resize->shrink) {

View file

@ -0,0 +1,39 @@
--- libntfs/attrib.c.orig Fri Feb 24 10:17:49 2006
+++ libntfs/attrib.c Thu May 4 04:44:07 2006
@@ -763,7 +763,7 @@
*/
s64 ntfs_attr_pread(ntfs_attr *na, const s64 pos, s64 count, void *b)
{
- s64 br, to_read, ofs, total, total2;
+ s64 br, old_to_read, to_read, ofs, total, total2;
ntfs_volume *vol;
runlist_element *rl;
@@ -799,6 +799,7 @@
if (pos + count > na->data_size) {
if (pos >= na->data_size)
return 0;
+ ntfs_log_trace("trunacting read pos=%lld, na->data_size=%lld, (old) count=%lld\n", pos, na->data_size, count);
count = na->data_size - pos;
}
/* If it is a resident attribute, get the value from the mft record. */
@@ -887,6 +888,10 @@
/* It is a real lcn, read it into @dst. */
to_read = min(count, (rl->length << vol->cluster_size_bits) -
ofs);
+ old_to_read = to_read;
+ to_read = (to_read + 511) / 512 * 512;
+ if(old_to_read != to_read)
+ ntfs_log_trace("adjusted %lld->%lld\n", old_to_read, to_read);
retry:
ntfs_log_trace("Reading 0x%llx bytes from vcn 0x%llx, lcn 0x%llx, "
"ofs 0x%llx.\n", to_read, rl->vcn, rl->lcn, ofs);
@@ -894,6 +899,8 @@
ofs, to_read, b);
/* If everything ok, update progress counters and continue. */
if (br > 0) {
+ if(br > old_to_read)
+ br = old_to_read;
total += br;
count -= br;
b = (u8*)b + br;

View file

@ -0,0 +1,15 @@
--- libntfs/device.c Sat Sep 4 13:16:32 2004
+++ libntfs/device.c Mon Jul 11 23:27:55 2005
@@ -441,10 +441,10 @@
*/
static inline int ntfs_device_offset_valid(struct ntfs_device *dev, s64 ofs)
{
- char ch;
+ char ch[512];
if (dev->d_ops->seek(dev, ofs, SEEK_SET) >= 0 &&
- dev->d_ops->read(dev, &ch, 1) == 1)
+ dev->d_ops->read(dev, &ch, 512) > 0)
return 0;
return -1;
}

View file

@ -1,29 +1,29 @@
--- libntfs/unix_io.c.orig Mon Mar 21 12:16:42 2005
+++ libntfs/unix_io.c Mon Mar 21 12:17:19 2005
@@ -72,6 +72,7 @@
--- libntfs/unix_io.c.orig Sat Feb 4 03:42:15 2006
+++ libntfs/unix_io.c Thu May 4 03:59:59 2006
@@ -110,6 +110,7 @@
flk.l_type = F_WRLCK;
flk.l_whence = SEEK_SET;
flk.l_start = flk.l_len = 0LL;
+#if 0
if (fcntl(DEV_FD(dev), F_SETLK, &flk)) {
err = errno;
Dprintf("ntfs_device_unix_io_open: Could not lock %s for %s: "
@@ -83,6 +84,7 @@
strerror(errno));
ntfs_log_debug("ntfs_device_unix_io_open: Could not lock %s for %s\n",
@@ -119,6 +120,7 @@
"close %s", dev->d_name);
goto err_out;
}
+#endif
/* Set our open flag. */
NDevSetOpen(dev);
return 0;
@@ -108,9 +110,11 @@
/* Determine if device is a block device or not, ignoring errors. */
if (!fstat(DEV_FD(dev), &sbuf) && S_ISBLK(sbuf.st_mode))
NDevSetBlock(dev);
@@ -155,9 +157,11 @@
flk.l_type = F_UNLCK;
flk.l_whence = SEEK_SET;
flk.l_start = flk.l_len = 0LL;
+#if 0
if (fcntl(DEV_FD(dev), F_SETLK, &flk))
Dprintf("ntfs_device_unix_io_close: Warning: Could not unlock "
"%s: %s\n", dev->d_name, strerror(errno));
ntfs_log_perror("ntfs_device_unix_io_close: Warning: Could not "
"unlock %s", dev->d_name);
+#endif
/* Close the file descriptor and clear our open flag. */
if (close(DEV_FD(dev)))

View file

@ -0,0 +1,14 @@
--- ntfsprogs/ntfsclone.c Mon Jul 25 12:31:30 2005
+++ ntfsprogs/ntfsclone.c Mon Jul 25 12:33:32 2005
@@ -1080,9 +1080,9 @@
static int device_offset_valid(int fd, s64 ofs)
{
- char ch;
+ char ch[512];
- if (lseek(fd, ofs, SEEK_SET) >= 0 && read(fd, &ch, 1) == 1)
+ if (lseek(fd, ofs, SEEK_SET) >= 0 && read(fd, &ch, 512) > 0)
return 0;
return -1;
}

View file

@ -0,0 +1,14 @@
--- ntfsprogs/ntfsresize.c.orig Tue Feb 14 12:17:52 2006
+++ ntfsprogs/ntfsresize.c Thu May 4 04:46:10 2006
@@ -1974,6 +1974,11 @@
err_exit("Resident attribute in $Bitmap isn't supported!\n");
bm_bsize = nr_clusters_to_bitmap_byte_size(resize->new_volume_size);
+ if(bm_bsize % 512 != 0) {
+ s64 old_bm_bsize = bm_bsize;
+ bm_bsize = (bm_bsize + 511) / 512 * 512;
+ ntfs_log_verbose("adjusted bm_bsize: %lld->%lld\n", old_bm_bsize, bm_bsize);
+ }
nr_bm_clusters = rounded_up_division(bm_bsize, vol->cluster_size);
if (resize->shrink) {

View file

@ -1,103 +0,0 @@
--- ntfsprogs/Makefile.am.orig Sat Oct 8 00:35:40 2005
+++ ntfsprogs/Makefile.am Fri Jan 20 11:26:37 2006
@@ -88,7 +88,7 @@
ntfsmount_SOURCES = ntfsmount.c utils.c utils.h
ntfsmount_LDADD = $(AM_LIBS) $(FUSE_MODULE_LIBS)
ntfsmount_LDFLAGS = $(AM_LFLAGS)
-ntfsmount_CFLAGS = $(FUSE_MODULE_CFLAGS) -DFUSE_USE_VERSION=22
+ntfsmount_CFLAGS = $(FUSE_MODULE_CFLAGS) -DFUSE_USE_VERSION=25
endif
# We don't distribute these
--- ntfsprogs/Makefile.in.orig Fri Jan 20 11:24:48 2006
+++ ntfsprogs/Makefile.in Fri Jan 20 11:26:40 2006
@@ -366,7 +366,7 @@
@ENABLE_FUSE_MODULE_TRUE@ntfsmount_SOURCES = ntfsmount.c utils.c utils.h
@ENABLE_FUSE_MODULE_TRUE@ntfsmount_LDADD = $(AM_LIBS) $(FUSE_MODULE_LIBS)
@ENABLE_FUSE_MODULE_TRUE@ntfsmount_LDFLAGS = $(AM_LFLAGS)
-@ENABLE_FUSE_MODULE_TRUE@ntfsmount_CFLAGS = $(FUSE_MODULE_CFLAGS) -DFUSE_USE_VERSION=22
+@ENABLE_FUSE_MODULE_TRUE@ntfsmount_CFLAGS = $(FUSE_MODULE_CFLAGS) -DFUSE_USE_VERSION=25
# We don't distribute these
ntfsrm_SOURCES = ntfsrm.c ntfsrm.h utils.c utils.h
--- ntfsprogs/ntfsmount.c.orig Mon Oct 10 14:47:38 2005
+++ ntfsprogs/ntfsmount.c Fri Jan 20 11:42:09 2006
@@ -81,10 +81,10 @@
int state;
long free_clusters;
long free_mft;
- uid_t uid;
- gid_t gid;
- mode_t fmask;
- mode_t dmask;
+ unsigned int uid;
+ unsigned int gid;
+ unsigned int fmask;
+ unsigned int dmask;
BOOL ro;
BOOL show_sys_files;
BOOL succeed_chmod;
@@ -196,7 +196,7 @@
* Return 0 on success or -errno on error.
*/
static int ntfs_fuse_statfs(const char *path __attribute__((unused)),
- struct statfs *sfs)
+ struct statvfs *sfs)
{
long size;
ntfs_volume *vol;
@@ -204,10 +204,10 @@
vol = ctx->vol;
if (!vol)
return -ENODEV;
- /* Type of filesystem. */
- sfs->f_type = NTFS_SB_MAGIC;
/* Optimal transfer block size. */
sfs->f_bsize = vol->cluster_size;
+ /* XXX This field needs to be filled, I guess it's fine this way... */
+ sfs->f_frsize = vol->cluster_size;
/*
* Total data blocks in file system in units of f_bsize and since
* inodes are also stored in data blocs ($MFT is a file) this is just
@@ -228,7 +228,7 @@
size = 0;
sfs->f_ffree = size;
/* Maximum length of filenames. */
- sfs->f_namelen = NTFS_MAX_NAME_LEN;
+ sfs->f_namemax = NTFS_MAX_NAME_LEN;
return 0;
}
@@ -1462,8 +1462,9 @@
int main(int argc, char *argv[])
{
char *parsed_options;
+ struct fuse_args margs = FUSE_ARGS_INIT(0, NULL);
struct fuse *fh;
- int ffd;
+ int ffd = 0;
utils_set_locale();
signal(SIGINT, signal_handler);
@@ -1491,7 +1492,20 @@
}
free(opts.device);
/* Create filesystem. */
- ffd = fuse_mount(opts.mnt_point, parsed_options);
+ /*
+ * XXX Eventually, ntfsmount should drop it's homebrew option parsing
+ * routines and use stock ones. Here we don't go that far, we just use the
+ * FUSE opt parsing API to dummily create the structure which satisfies
+ * fuse_mount's current signature (that is, revert all the work which
+ * has been accomplished by the homebrew routine... silly, eh?).
+ */
+ if ((fuse_opt_add_arg(&margs, "") == -1 ||
+ fuse_opt_add_arg(&margs, "-o") == -1 ||
+ fuse_opt_add_arg(&margs, parsed_options) == -1))
+ ffd = -1;
+ if (ffd != -1)
+ ffd = fuse_mount(opts.mnt_point, &margs);
+ fuse_opt_free_args(&margs);
if (ffd == -1) {
Eprintf("fuse_mount failed.\n");
ntfs_fuse_destroy();

View file

@ -24,12 +24,15 @@ include/ntfs/layout.h
include/ntfs/lcnalloc.h
include/ntfs/list.h
include/ntfs/logfile.h
include/ntfs/logging.h
include/ntfs/mft.h
include/ntfs/mst.h
include/ntfs/ntfstime.h
include/ntfs/rich.h
include/ntfs/runlist.h
include/ntfs/security.h
include/ntfs/support.h
include/ntfs/tree.h
include/ntfs/types.h
include/ntfs/unistr.h
include/ntfs/version.h
@ -37,7 +40,7 @@ include/ntfs/volume.h
lib/libntfs.a
lib/libntfs.la
lib/libntfs.so
lib/libntfs.so.8
lib/libntfs.so.9
sbin/mkntfs
sbin/mkfs.ntfs
%%FUSE%%sbin/mount.ntfs-fuse