diff options
author | jbeich <jbeich@FreeBSD.org> | 2016-07-18 20:26:08 +0000 |
---|---|---|
committer | jbeich <jbeich@FreeBSD.org> | 2016-07-18 20:26:08 +0000 |
commit | 066c49cfc9cbfd0fedf06543ac9238c349b0991b (patch) | |
tree | 41c1b8bc188651faffbba14f097834ee958c05b0 | |
parent | 749d9b315d8ee6ccb36bf57d45e30ae4957a5545 (diff) | |
download | FreeBSD-ports-066c49cfc9cbfd0fedf06543ac9238c349b0991b.zip FreeBSD-ports-066c49cfc9cbfd0fedf06543ac9238c349b0991b.tar.gz |
MFH: r418728
sysutils/*exfat*: update to 1.2.4
- Chase project move to GitHub
- Chase patent licensing URL [1]
- Restore GPLv2 after r328060 [2]
- Fix build on DragonFly
- Drop unused iconv dependency
PR: 199874, 210823
PR: 210162 [1]
Suggested by: decke, tijl [2] (via bug 193629)
Approved by: maintainer timeout (2 weeks)
Approved by: ports-secteam (feld)
-rw-r--r-- | sysutils/exfat-utils/Makefile | 42 | ||||
-rw-r--r-- | sysutils/exfat-utils/distinfo | 4 | ||||
-rw-r--r-- | sysutils/exfat-utils/files/patch-SConstruct | 14 | ||||
-rw-r--r-- | sysutils/exfat-utils/files/patch-libexfat_platform.h | 11 | ||||
-rw-r--r-- | sysutils/exfat-utils/files/patch-ublio | 176 | ||||
-rw-r--r-- | sysutils/exfat-utils/pkg-descr | 2 | ||||
-rw-r--r-- | sysutils/fusefs-exfat/Makefile | 35 | ||||
-rw-r--r-- | sysutils/fusefs-exfat/distinfo | 4 | ||||
-rw-r--r-- | sysutils/fusefs-exfat/files/patch-SConstruct | 14 | ||||
-rw-r--r-- | sysutils/fusefs-exfat/files/patch-libexfat_platform.h | 11 | ||||
-rw-r--r-- | sysutils/fusefs-exfat/files/patch-ublio | 176 | ||||
-rw-r--r-- | sysutils/fusefs-exfat/pkg-descr | 2 |
12 files changed, 419 insertions, 72 deletions
diff --git a/sysutils/exfat-utils/Makefile b/sysutils/exfat-utils/Makefile index be7a1e4..7325744 100644 --- a/sysutils/exfat-utils/Makefile +++ b/sysutils/exfat-utils/Makefile @@ -1,41 +1,41 @@ # Created by: Alex Samorukov <samm@os2.kiev.ua> # $FreeBSD$ -PORTNAME= exfat-utils -PORTVERSION= 1.0.1 +PORTNAME= exfat +DISTVERSIONPREFIX= v +DISTVERSION= 1.2.4 CATEGORIES= sysutils -MASTER_SITES= GOOGLE_CODE +PKGNAMESUFFIX= -utils MAINTAINER= samm@os2.kiev.ua COMMENT= Utilities to create, check, label and dump exFAT filesystem -LICENSE= Microsoft-exFAT -LICENSE_NAME= Microsoft exFAT License -LICENSE_TEXT= Requires license from Microsoft, please see \ - http://www.microsoft.com/en-us/legal/intellectualproperty/IPLicensing/Programs/exFATFileSystem.aspx -LICENSE_PERMS= no-dist-mirror no-dist-sell no-pkg-mirror no-pkg-sell +LICENSE= GPLv2+ MSPAT +LICENSE_COMB= multi +LICENSE_FILE_GPLv2+ = ${WRKSRC}/COPYING +LICENSE_NAME_MSPAT= Microsoft exFAT Patent License +LICENSE_TEXT_MSPAT= It is important to note that open source and other publicly \ + available implementations of exFAT do not include a patent \ + license from Microsoft. A license is required in order to \ + implement exFAT and use it in a product or device. \ + https://www.microsoft.com/en-us/legal/intellectualproperty/mtl/exfat-licensing.aspx +LICENSE_PERMS_MSPAT= no-dist-mirror no-dist-sell no-pkg-mirror no-pkg-sell LIB_DEPENDS= libublio.so:devel/libublio -PROJECTHOST= exfat +USE_GITHUB= yes +GH_ACCOUNT= relan -USES= scons +USES= autoreconf localbase pkgconfig +GNU_CONFIGURE= yes PLIST_FILES= sbin/exfatlabel sbin/dumpexfat sbin/exfatfsck sbin/mkexfatfs \ + sbin/fsck.exfat sbin/mkfs.exfat \ man/man8/exfatlabel.8.gz man/man8/mkexfatfs.8.gz man/man8/exfatfsck.8.gz \ man/man8/dumpexfat.8.gz -do-install: - ${INSTALL_PROGRAM} ${WRKSRC}/label/exfatlabel ${STAGEDIR}${PREFIX}/sbin - ${INSTALL_PROGRAM} ${WRKSRC}/dump/dumpexfat ${STAGEDIR}${PREFIX}/sbin - ${INSTALL_PROGRAM} ${WRKSRC}/fsck/exfatfsck ${STAGEDIR}${PREFIX}/sbin - ${INSTALL_PROGRAM} ${WRKSRC}/mkfs/mkexfatfs ${STAGEDIR}${PREFIX}/sbin - ${INSTALL_MAN} ${WRKSRC}/label/exfatlabel.8 ${STAGEDIR}${MAN8PREFIX}/man/man8 - ${INSTALL_MAN} ${WRKSRC}/mkfs/mkexfatfs.8 ${STAGEDIR}${MAN8PREFIX}/man/man8 - ${INSTALL_MAN} ${WRKSRC}/dump/dumpexfat.8 ${STAGEDIR}${MAN8PREFIX}/man/man8 - ${INSTALL_MAN} ${WRKSRC}/fsck/exfatfsck.8 ${STAGEDIR}${MAN8PREFIX}/man/man8 - post-patch: - @${REINPLACE_CMD} -e 's|/usr/local/|${PREFIX}/|' ${WRKSRC}/SConstruct + @${REINPLACE_CMD} -e '/fuse/d' ${WRKSRC}/configure.ac + @${REINPLACE_CMD} -e 's/ fuse//' ${WRKSRC}/Makefile.am .include <bsd.port.mk> diff --git a/sysutils/exfat-utils/distinfo b/sysutils/exfat-utils/distinfo index 6c24489..430d60c 100644 --- a/sysutils/exfat-utils/distinfo +++ b/sysutils/exfat-utils/distinfo @@ -1,2 +1,2 @@ -SHA256 (exfat-utils-1.0.1.tar.gz) = eeacedca1878065dc3886674ae39cd51149c37bd7d6d7e9325c971a1d1acdab3 -SIZE (exfat-utils-1.0.1.tar.gz) = 51905 +SHA256 (relan-exfat-v1.2.4_GH0.tar.gz) = e65ca1b47f35421a1663b93c66e48abfd737c3e2f0c7f7154128ce2d30ecd0d8 +SIZE (relan-exfat-v1.2.4_GH0.tar.gz) = 55172 diff --git a/sysutils/exfat-utils/files/patch-SConstruct b/sysutils/exfat-utils/files/patch-SConstruct deleted file mode 100644 index 5287bb2..0000000 --- a/sysutils/exfat-utils/files/patch-SConstruct +++ /dev/null @@ -1,14 +0,0 @@ ---- SConstruct.orig 2013-02-02 14:14:34 UTC -+++ SConstruct -@@ -22,10 +22,7 @@ import os - import platform - import SCons - --env = Environment(**ARGUMENTS) --for var in ['PATH', 'SYSROOT']: -- if var in os.environ: -- env['ENV'][var] = os.environ[var] -+env = Environment(ENV = os.environ, **ARGUMENTS) - - destdir = env.get('DESTDIR', '/sbin'); - libs = ['exfat'] diff --git a/sysutils/exfat-utils/files/patch-libexfat_platform.h b/sysutils/exfat-utils/files/patch-libexfat_platform.h new file mode 100644 index 0000000..0d0b85d --- /dev/null +++ b/sysutils/exfat-utils/files/patch-libexfat_platform.h @@ -0,0 +1,11 @@ +--- libexfat/platform.h.orig 2016-06-03 05:30:35 UTC ++++ libexfat/platform.h +@@ -46,7 +46,7 @@ + #define EXFAT_LITTLE_ENDIAN LITTLE_ENDIAN + #define EXFAT_BIG_ENDIAN BIG_ENDIAN + +-#elif defined(__FreeBSD__) || defined(__DragonFlyBSD__) || defined(__NetBSD__) || defined(__OpenBSD__) ++#elif defined(__FreeBSD__) || defined(__DragonFly__) || defined(__NetBSD__) || defined(__OpenBSD__) + + #include <sys/endian.h> + #define exfat_bswap16(x) bswap16(x) diff --git a/sysutils/exfat-utils/files/patch-ublio b/sysutils/exfat-utils/files/patch-ublio new file mode 100644 index 0000000..afa1410 --- /dev/null +++ b/sysutils/exfat-utils/files/patch-ublio @@ -0,0 +1,176 @@ +# Revert 3959f7d to restore ublio support and add autoconf glue. + +diff --git README.md README.md +index 60d5c71..81446a6 100644 +--- README.md ++++ README.md +@@ -7,6 +7,7 @@ Supported operating systems: + + * GNU/Linux + * Mac OS X 10.5 or later ++* FreeBSD + * OpenBSD + + Most GNU/Linux distributions already have fuse-exfat and exfat-utils in their repositories, so you can just install and use them. The next chapter describes how to compile them from source. +diff --git configure.ac configure.ac +index b45db3f..2bcda4b 100644 +--- configure.ac ++++ configure.ac +@@ -31,6 +31,12 @@ AC_PROG_CC_C99 + AC_PROG_RANLIB + AM_PROG_AR + AC_SYS_LARGEFILE ++PKG_CHECK_MODULES([UBLIO], [libublio], [ ++ CFLAGS="$CFLAGS $UBLIO_CFLAGS" ++ LIBS="$LIBS $UBLIO_LIBS" ++ AC_DEFINE([USE_UBLIO], [1], ++ [Define if block devices are not supported.]) ++], [:]) + PKG_CHECK_MODULES([FUSE], [fuse]) + AC_CONFIG_HEADERS([libexfat/config.h]) + AC_CONFIG_FILES([ +diff --git libexfat/io.c libexfat/io.c +index 60f28e2..14c0151 100644 +--- libexfat/io.c ++++ libexfat/io.c +@@ -37,12 +37,20 @@ + #include <sys/ioctl.h> + #endif + #include <sys/mount.h> ++#ifdef USE_UBLIO ++#include <sys/uio.h> ++#include <ublio.h> ++#endif + + struct exfat_dev + { + int fd; + enum exfat_mode mode; + off_t size; /* in bytes */ ++#ifdef USE_UBLIO ++ off_t pos; ++ ublio_filehandle_t ufh; ++#endif + }; + + static int open_ro(const char* spec) +@@ -74,6 +82,9 @@ struct exfat_dev* exfat_open(const char* spec, enum exfat_mode mode) + { + struct exfat_dev* dev; + struct stat stbuf; ++#ifdef USE_UBLIO ++ struct ublio_param up; ++#endif + + dev = malloc(sizeof(struct exfat_dev)); + if (dev == NULL) +@@ -211,6 +222,24 @@ struct exfat_dev* exfat_open(const char* spec, enum exfat_mode mode) + } + } + ++#ifdef USE_UBLIO ++ memset(&up, 0, sizeof(struct ublio_param)); ++ up.up_blocksize = 256 * 1024; ++ up.up_items = 64; ++ up.up_grace = 32; ++ up.up_priv = &dev->fd; ++ ++ dev->pos = 0; ++ dev->ufh = ublio_open(&up); ++ if (dev->ufh == NULL) ++ { ++ close(dev->fd); ++ free(dev); ++ exfat_error("failed to initialize ublio"); ++ return NULL; ++ } ++#endif ++ + return dev; + } + +@@ -218,6 +247,13 @@ int exfat_close(struct exfat_dev* dev) + { + int rc = 0; + ++#ifdef USE_UBLIO ++ if (ublio_close(dev->ufh) != 0) ++ { ++ exfat_error("failed to close ublio"); ++ rc = -EIO; ++ } ++#endif + if (close(dev->fd) != 0) + { + exfat_error("failed to close device: %s", strerror(errno)); +@@ -231,6 +267,13 @@ int exfat_fsync(struct exfat_dev* dev) + { + int rc = 0; + ++#ifdef USE_UBLIO ++ if (ublio_fsync(dev->ufh) != 0) ++ { ++ exfat_error("ublio fsync failed"); ++ rc = -EIO; ++ } ++#endif + if (fsync(dev->fd) != 0) + { + exfat_error("fsync failed: %s", strerror(errno)); +@@ -251,29 +294,56 @@ off_t exfat_get_size(const struct exfat_dev* dev) + + off_t exfat_seek(struct exfat_dev* dev, off_t offset, int whence) + { ++#ifdef USE_UBLIO ++ /* XXX SEEK_CUR will be handled incorrectly */ ++ return dev->pos = lseek(dev->fd, offset, whence); ++#else + return lseek(dev->fd, offset, whence); ++#endif + } + + ssize_t exfat_read(struct exfat_dev* dev, void* buffer, size_t size) + { ++#ifdef USE_UBLIO ++ ssize_t result = ublio_pread(dev->ufh, buffer, size, dev->pos); ++ if (result >= 0) ++ dev->pos += size; ++ return result; ++#else + return read(dev->fd, buffer, size); ++#endif + } + + ssize_t exfat_write(struct exfat_dev* dev, const void* buffer, size_t size) + { ++#ifdef USE_UBLIO ++ ssize_t result = ublio_pwrite(dev->ufh, buffer, size, dev->pos); ++ if (result >= 0) ++ dev->pos += size; ++ return result; ++#else + return write(dev->fd, buffer, size); ++#endif + } + + ssize_t exfat_pread(struct exfat_dev* dev, void* buffer, size_t size, + off_t offset) + { ++#ifdef USE_UBLIO ++ return ublio_pread(dev->ufh, buffer, size, offset); ++#else + return pread(dev->fd, buffer, size, offset); ++#endif + } + + ssize_t exfat_pwrite(struct exfat_dev* dev, const void* buffer, size_t size, + off_t offset) + { ++#ifdef USE_UBLIO ++ return ublio_pwrite(dev->ufh, buffer, size, offset); ++#else + return pwrite(dev->fd, buffer, size, offset); ++#endif + } + + ssize_t exfat_generic_pread(const struct exfat* ef, struct exfat_node* node, diff --git a/sysutils/exfat-utils/pkg-descr b/sysutils/exfat-utils/pkg-descr index 470e466..fcc7119 100644 --- a/sysutils/exfat-utils/pkg-descr +++ b/sysutils/exfat-utils/pkg-descr @@ -4,4 +4,4 @@ It contains dumpexfat to dump properties of the filesystem, exfatfsck to report errors found on a exFAT filesystem, exfatlabel to label a exFAT filesystem and mkexfatfs to create a exFAT filesystem. -WWW: http://code.google.com/p/exfat/ +WWW: https://github.com/relan/exfat diff --git a/sysutils/fusefs-exfat/Makefile b/sysutils/fusefs-exfat/Makefile index ff34e92..dc22308 100644 --- a/sysutils/fusefs-exfat/Makefile +++ b/sysutils/fusefs-exfat/Makefile @@ -2,33 +2,34 @@ # $FreeBSD$ PORTNAME= exfat -PORTVERSION= 1.0.1 +DISTVERSIONPREFIX= v +DISTVERSION= 1.2.4 CATEGORIES= sysutils -MASTER_SITES= GOOGLE_CODE PKGNAMEPREFIX= fusefs- -DISTNAME= fuse-${PORTNAME}-${PORTVERSION} MAINTAINER= samm@os2.kiev.ua COMMENT= Full-featured exFAT FS implementation as a FUSE module -LICENSE= Microsoft-exFAT -LICENSE_NAME= Microsoft exFAT License -LICENSE_TEXT= Requires license from Microsoft, please see \ - http://www.microsoft.com/en-us/legal/intellectualproperty/IPLicensing/Programs/exFATFileSystem.aspx -LICENSE_PERMS= no-dist-mirror no-dist-sell no-pkg-mirror no-pkg-sell +LICENSE= GPLv2+ MSPAT +LICENSE_COMB= multi +LICENSE_FILE_GPLv2+ = ${WRKSRC}/COPYING +LICENSE_NAME_MSPAT= Microsoft exFAT Patent License +LICENSE_TEXT_MSPAT= It is important to note that open source and other publicly \ + available implementations of exFAT do not include a patent \ + license from Microsoft. A license is required in order to \ + implement exFAT and use it in a product or device. \ + https://www.microsoft.com/en-us/legal/intellectualproperty/mtl/exfat-licensing.aspx +LICENSE_PERMS_MSPAT= no-dist-mirror no-dist-sell no-pkg-mirror no-pkg-sell LIB_DEPENDS= libublio.so:devel/libublio -USES= fuse iconv scons +USE_GITHUB= yes +GH_ACCOUNT= relan -PLIST_FILES= bin/mount.exfat-fuse bin/mount.exfat man/man8/mount.exfat-fuse.8.gz +USES= autoreconf fuse localbase pkgconfig +GNU_CONFIGURE= yes +MAKE_ARGS= SUBDIRS="libexfat fuse" -do-install: - ${INSTALL_PROGRAM} ${WRKSRC}/fuse/mount.exfat-fuse ${STAGEDIR}${PREFIX}/bin - ${LN} -s ${PREFIX}/bin/mount.exfat-fuse ${STAGEDIR}${PREFIX}/bin/mount.exfat - ${INSTALL_MAN} ${WRKSRC}/fuse/mount.exfat-fuse.8 ${STAGEDIR}${MAN8PREFIX}/man/man8 - -post-patch: - @${REINPLACE_CMD} -e 's|/usr/local/|${PREFIX}/|' ${WRKSRC}/SConstruct +PLIST_FILES= sbin/mount.exfat-fuse sbin/mount.exfat man/man8/mount.exfat-fuse.8.gz .include <bsd.port.mk> diff --git a/sysutils/fusefs-exfat/distinfo b/sysutils/fusefs-exfat/distinfo index cb6574d..430d60c 100644 --- a/sysutils/fusefs-exfat/distinfo +++ b/sysutils/fusefs-exfat/distinfo @@ -1,2 +1,2 @@ -SHA256 (fuse-exfat-1.0.1.tar.gz) = 12ac1ba1b7d4343bef64e7898176705a41cfe3b5a7a179e28549d242e2854758 -SIZE (fuse-exfat-1.0.1.tar.gz) = 39627 +SHA256 (relan-exfat-v1.2.4_GH0.tar.gz) = e65ca1b47f35421a1663b93c66e48abfd737c3e2f0c7f7154128ce2d30ecd0d8 +SIZE (relan-exfat-v1.2.4_GH0.tar.gz) = 55172 diff --git a/sysutils/fusefs-exfat/files/patch-SConstruct b/sysutils/fusefs-exfat/files/patch-SConstruct deleted file mode 100644 index 12f9270..0000000 --- a/sysutils/fusefs-exfat/files/patch-SConstruct +++ /dev/null @@ -1,14 +0,0 @@ ---- SConstruct.orig 2015-04-13 20:50:01.073662000 +0300 -+++ SConstruct 2015-04-13 20:54:33.231753000 +0300 -@@ -22,10 +22,7 @@ - import platform - import SCons - --env = Environment(**ARGUMENTS) --for var in ['PATH', 'SYSROOT']: -- if var in os.environ: -- env['ENV'][var] = os.environ[var] -+env = Environment(ENV = os.environ, **ARGUMENTS) - - destdir = env.get('DESTDIR', '/sbin'); - libs = ['exfat'] diff --git a/sysutils/fusefs-exfat/files/patch-libexfat_platform.h b/sysutils/fusefs-exfat/files/patch-libexfat_platform.h new file mode 100644 index 0000000..0d0b85d --- /dev/null +++ b/sysutils/fusefs-exfat/files/patch-libexfat_platform.h @@ -0,0 +1,11 @@ +--- libexfat/platform.h.orig 2016-06-03 05:30:35 UTC ++++ libexfat/platform.h +@@ -46,7 +46,7 @@ + #define EXFAT_LITTLE_ENDIAN LITTLE_ENDIAN + #define EXFAT_BIG_ENDIAN BIG_ENDIAN + +-#elif defined(__FreeBSD__) || defined(__DragonFlyBSD__) || defined(__NetBSD__) || defined(__OpenBSD__) ++#elif defined(__FreeBSD__) || defined(__DragonFly__) || defined(__NetBSD__) || defined(__OpenBSD__) + + #include <sys/endian.h> + #define exfat_bswap16(x) bswap16(x) diff --git a/sysutils/fusefs-exfat/files/patch-ublio b/sysutils/fusefs-exfat/files/patch-ublio new file mode 100644 index 0000000..afa1410 --- /dev/null +++ b/sysutils/fusefs-exfat/files/patch-ublio @@ -0,0 +1,176 @@ +# Revert 3959f7d to restore ublio support and add autoconf glue. + +diff --git README.md README.md +index 60d5c71..81446a6 100644 +--- README.md ++++ README.md +@@ -7,6 +7,7 @@ Supported operating systems: + + * GNU/Linux + * Mac OS X 10.5 or later ++* FreeBSD + * OpenBSD + + Most GNU/Linux distributions already have fuse-exfat and exfat-utils in their repositories, so you can just install and use them. The next chapter describes how to compile them from source. +diff --git configure.ac configure.ac +index b45db3f..2bcda4b 100644 +--- configure.ac ++++ configure.ac +@@ -31,6 +31,12 @@ AC_PROG_CC_C99 + AC_PROG_RANLIB + AM_PROG_AR + AC_SYS_LARGEFILE ++PKG_CHECK_MODULES([UBLIO], [libublio], [ ++ CFLAGS="$CFLAGS $UBLIO_CFLAGS" ++ LIBS="$LIBS $UBLIO_LIBS" ++ AC_DEFINE([USE_UBLIO], [1], ++ [Define if block devices are not supported.]) ++], [:]) + PKG_CHECK_MODULES([FUSE], [fuse]) + AC_CONFIG_HEADERS([libexfat/config.h]) + AC_CONFIG_FILES([ +diff --git libexfat/io.c libexfat/io.c +index 60f28e2..14c0151 100644 +--- libexfat/io.c ++++ libexfat/io.c +@@ -37,12 +37,20 @@ + #include <sys/ioctl.h> + #endif + #include <sys/mount.h> ++#ifdef USE_UBLIO ++#include <sys/uio.h> ++#include <ublio.h> ++#endif + + struct exfat_dev + { + int fd; + enum exfat_mode mode; + off_t size; /* in bytes */ ++#ifdef USE_UBLIO ++ off_t pos; ++ ublio_filehandle_t ufh; ++#endif + }; + + static int open_ro(const char* spec) +@@ -74,6 +82,9 @@ struct exfat_dev* exfat_open(const char* spec, enum exfat_mode mode) + { + struct exfat_dev* dev; + struct stat stbuf; ++#ifdef USE_UBLIO ++ struct ublio_param up; ++#endif + + dev = malloc(sizeof(struct exfat_dev)); + if (dev == NULL) +@@ -211,6 +222,24 @@ struct exfat_dev* exfat_open(const char* spec, enum exfat_mode mode) + } + } + ++#ifdef USE_UBLIO ++ memset(&up, 0, sizeof(struct ublio_param)); ++ up.up_blocksize = 256 * 1024; ++ up.up_items = 64; ++ up.up_grace = 32; ++ up.up_priv = &dev->fd; ++ ++ dev->pos = 0; ++ dev->ufh = ublio_open(&up); ++ if (dev->ufh == NULL) ++ { ++ close(dev->fd); ++ free(dev); ++ exfat_error("failed to initialize ublio"); ++ return NULL; ++ } ++#endif ++ + return dev; + } + +@@ -218,6 +247,13 @@ int exfat_close(struct exfat_dev* dev) + { + int rc = 0; + ++#ifdef USE_UBLIO ++ if (ublio_close(dev->ufh) != 0) ++ { ++ exfat_error("failed to close ublio"); ++ rc = -EIO; ++ } ++#endif + if (close(dev->fd) != 0) + { + exfat_error("failed to close device: %s", strerror(errno)); +@@ -231,6 +267,13 @@ int exfat_fsync(struct exfat_dev* dev) + { + int rc = 0; + ++#ifdef USE_UBLIO ++ if (ublio_fsync(dev->ufh) != 0) ++ { ++ exfat_error("ublio fsync failed"); ++ rc = -EIO; ++ } ++#endif + if (fsync(dev->fd) != 0) + { + exfat_error("fsync failed: %s", strerror(errno)); +@@ -251,29 +294,56 @@ off_t exfat_get_size(const struct exfat_dev* dev) + + off_t exfat_seek(struct exfat_dev* dev, off_t offset, int whence) + { ++#ifdef USE_UBLIO ++ /* XXX SEEK_CUR will be handled incorrectly */ ++ return dev->pos = lseek(dev->fd, offset, whence); ++#else + return lseek(dev->fd, offset, whence); ++#endif + } + + ssize_t exfat_read(struct exfat_dev* dev, void* buffer, size_t size) + { ++#ifdef USE_UBLIO ++ ssize_t result = ublio_pread(dev->ufh, buffer, size, dev->pos); ++ if (result >= 0) ++ dev->pos += size; ++ return result; ++#else + return read(dev->fd, buffer, size); ++#endif + } + + ssize_t exfat_write(struct exfat_dev* dev, const void* buffer, size_t size) + { ++#ifdef USE_UBLIO ++ ssize_t result = ublio_pwrite(dev->ufh, buffer, size, dev->pos); ++ if (result >= 0) ++ dev->pos += size; ++ return result; ++#else + return write(dev->fd, buffer, size); ++#endif + } + + ssize_t exfat_pread(struct exfat_dev* dev, void* buffer, size_t size, + off_t offset) + { ++#ifdef USE_UBLIO ++ return ublio_pread(dev->ufh, buffer, size, offset); ++#else + return pread(dev->fd, buffer, size, offset); ++#endif + } + + ssize_t exfat_pwrite(struct exfat_dev* dev, const void* buffer, size_t size, + off_t offset) + { ++#ifdef USE_UBLIO ++ return ublio_pwrite(dev->ufh, buffer, size, offset); ++#else + return pwrite(dev->fd, buffer, size, offset); ++#endif + } + + ssize_t exfat_generic_pread(const struct exfat* ef, struct exfat_node* node, diff --git a/sysutils/fusefs-exfat/pkg-descr b/sysutils/fusefs-exfat/pkg-descr index aa98feb..859c708 100644 --- a/sysutils/fusefs-exfat/pkg-descr +++ b/sysutils/fusefs-exfat/pkg-descr @@ -3,4 +3,4 @@ exFAT is a simple file system created by Microsoft. It is intended to replace FAT32 removing some of it's limitations. exFAT is a standard FS for SDXC memory cards. -WWW: http://code.google.com/p/exfat/ +WWW: https://github.com/relan/exfat |