#
# Copyright (C) 2014 Bruno Randolf <br1@einfach.org>
+# Copyright (C) 2019 Yousong Zhou <yszhou4tech@gmail.com>
#
# This is free software, licensed under the GNU General Public License v2.
# See /LICENSE for more information.
include $(INCLUDE_DIR)/kernel.mk
PKG_NAME:=exfat-nofuse
-PKG_RELEASE:=1
+PKG_RELEASE:=2
PKG_SOURCE_URL:=https://github.com/dorimanx/exfat-nofuse.git
PKG_SOURCE_PROTO:=git
--- /dev/null
+From c0d3452e0366e2ab4fc51e7981e48636facdf486 Mon Sep 17 00:00:00 2001
+From: Yousong Zhou <yszhou4tech@gmail.com>
+Date: Tue, 8 Jan 2019 15:45:26 +0000
+Subject: [PATCH 1/2] exfat_oal: use get_seconds() directly
+
+---
+ exfat_oal.c | 9 +--------
+ 1 file changed, 1 insertion(+), 8 deletions(-)
+
+diff --git a/exfat_oal.c b/exfat_oal.c
+index 7435442..83f8e4b 100644
+--- a/exfat_oal.c
++++ b/exfat_oal.c
+@@ -128,16 +128,9 @@ static time_t accum_days_in_year[] = {
+
+ TIMESTAMP_T *tm_current(TIMESTAMP_T *tp)
+ {
+- struct timespec ts;
+ time_t second, day, leap_day, month, year;
+
+-#if LINUX_VERSION_CODE < KERNEL_VERSION(4,8,0)
+- ts = CURRENT_TIME_SEC;
+-#else
+- ktime_get_real_ts(&ts);
+-#endif
+-
+- second = ts.tv_sec;
++ second = get_seconds();
+ second -= sys_tz.tz_minuteswest * SECS_PER_MIN;
+
+ /* Jan 1 GMT 00:00:00 1980. But what about another time zone? */
--- /dev/null
+From 4b9607d6fd4a35d9bb35527fae7aac23d848c0ce Mon Sep 17 00:00:00 2001
+From: Yousong Zhou <yszhou4tech@gmail.com>
+Date: Tue, 8 Jan 2019 15:45:24 +0000
+Subject: [PATCH 2/2] 4.18.patch
+
+Imported from https://aur.archlinux.org/cgit/aur.git/plain/4.18.patch?h=exfat-dkms-git
+---
+ exfat_super.c | 10 ++++++++++
+ 1 file changed, 10 insertions(+)
+
+diff --git a/exfat_super.c b/exfat_super.c
+index 312de36..3ac18b0 100644
+--- a/exfat_super.c
++++ b/exfat_super.c
+@@ -147,8 +147,13 @@ static time_t accum_days_in_year[] = {
+ static void _exfat_truncate(struct inode *inode, loff_t old_size);
+
+ /* Convert a FAT time/date pair to a UNIX date (seconds since 1 1 70). */
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(4,18,01)
++void exfat_time_fat2unix(struct exfat_sb_info *sbi, struct timespec64 *ts,
++ DATE_TIME_T *tp)
++#else
+ void exfat_time_fat2unix(struct exfat_sb_info *sbi, struct timespec *ts,
+ DATE_TIME_T *tp)
++#endif
+ {
+ time_t year = tp->Year;
+ time_t ld;
+@@ -166,8 +171,13 @@ void exfat_time_fat2unix(struct exfat_sb_info *sbi, struct timespec *ts,
+ }
+
+ /* Convert linear UNIX date to a FAT time/date pair. */
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(4,18,01)
++void exfat_time_unix2fat(struct exfat_sb_info *sbi, struct timespec64 *ts,
++ DATE_TIME_T *tp)
++#else
+ void exfat_time_unix2fat(struct exfat_sb_info *sbi, struct timespec *ts,
+ DATE_TIME_T *tp)
++#endif
+ {
+ time_t second = ts->tv_sec;
+ time_t day, month, year;