summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorjbeich <jbeich@FreeBSD.org>2016-07-18 20:26:08 +0000
committerjbeich <jbeich@FreeBSD.org>2016-07-18 20:26:08 +0000
commit066c49cfc9cbfd0fedf06543ac9238c349b0991b (patch)
tree41c1b8bc188651faffbba14f097834ee958c05b0
parent749d9b315d8ee6ccb36bf57d45e30ae4957a5545 (diff)
downloadFreeBSD-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/Makefile42
-rw-r--r--sysutils/exfat-utils/distinfo4
-rw-r--r--sysutils/exfat-utils/files/patch-SConstruct14
-rw-r--r--sysutils/exfat-utils/files/patch-libexfat_platform.h11
-rw-r--r--sysutils/exfat-utils/files/patch-ublio176
-rw-r--r--sysutils/exfat-utils/pkg-descr2
-rw-r--r--sysutils/fusefs-exfat/Makefile35
-rw-r--r--sysutils/fusefs-exfat/distinfo4
-rw-r--r--sysutils/fusefs-exfat/files/patch-SConstruct14
-rw-r--r--sysutils/fusefs-exfat/files/patch-libexfat_platform.h11
-rw-r--r--sysutils/fusefs-exfat/files/patch-ublio176
-rw-r--r--sysutils/fusefs-exfat/pkg-descr2
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
OpenPOWER on IntegriCloud