File 2148-Refactor-time_t-in-efile_drv.patch of Package erlang

From 3168f03a80b548094032a33c90a7fd0638493b07 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Bj=C3=B6rn-Egil=20Dahlberg?= <egil@erlang.org>
Date: Thu, 31 Mar 2016 16:42:29 +0200
Subject: [PATCH] Refactor time_t in efile_drv

---
 erts/emulator/drivers/common/efile_drv.c | 12 ++++++------
 erts/emulator/drivers/common/erl_efile.h |  6 +++---
 erts/emulator/drivers/unix/unix_efile.c  | 10 +++++-----
 3 files changed, 14 insertions(+), 14 deletions(-)

diff --git a/erts/emulator/drivers/common/efile_drv.c b/erts/emulator/drivers/common/efile_drv.c
index 3088dfd..ee14bd8 100644
--- a/erts/emulator/drivers/common/efile_drv.c
+++ b/erts/emulator/drivers/common/efile_drv.c
@@ -2900,12 +2900,12 @@ file_output(ErlDrvData e, char* buf, ErlDrvSizeT count)
 	    d = EF_SAFE_ALLOC(sizeof(struct t_data) - 1
 			      + FILENAME_BYTELEN(buf + 9*4) + FILENAME_CHARSIZE);
 	    
-	    d->info.mode       = get_int32(buf +  0 * 4);
-	    d->info.uid        = get_int32(buf +  1 * 4);
-	    d->info.gid        = get_int32(buf +  2 * 4);
-	    d->info.accessTime = (time_t)((Sint64)get_int64(buf +  3 * 4));
-	    d->info.modifyTime = (time_t)((Sint64)get_int64(buf +  5 * 4));
-	    d->info.cTime      = (time_t)((Sint64)get_int64(buf +  7 * 4));
+	    d->info.mode       = get_int32(buf + 0 * 4);
+	    d->info.uid        = get_int32(buf + 1 * 4);
+	    d->info.gid        = get_int32(buf + 2 * 4);
+	    d->info.accessTime = get_int64(buf + 3 * 4);
+	    d->info.modifyTime = get_int64(buf + 5 * 4);
+	    d->info.cTime      = get_int64(buf + 7 * 4);
 
 	    FILENAME_COPY(d->b, buf + 9*4);
 #ifdef USE_VM_PROBES
diff --git a/erts/emulator/drivers/common/erl_efile.h b/erts/emulator/drivers/common/erl_efile.h
index be5a891..7ffeed6 100644
--- a/erts/emulator/drivers/common/erl_efile.h
+++ b/erts/emulator/drivers/common/erl_efile.h
@@ -105,9 +105,9 @@ typedef struct _Efile_info {
     Uint32 inode;		/* Inode number. */
     Uint32 uid;			/* User id of owner. */
     Uint32 gid;			/* Group id of owner. */
-    time_t accessTime;		/* Last time the file was accessed. */
-    time_t modifyTime;		/* Last time the file was modified. */
-    time_t cTime;		/* Creation time (Windows) or last
+    Sint64 accessTime;		/* Last time the file was accessed. */
+    Sint64 modifyTime;		/* Last time the file was modified. */
+    Sint64 cTime;		/* Creation time (Windows) or last
 				 * inode change (Unix).
 				 */
 } Efile_info;
diff --git a/erts/emulator/drivers/unix/unix_efile.c b/erts/emulator/drivers/unix/unix_efile.c
index ac9b681..81ed199 100644
--- a/erts/emulator/drivers/unix/unix_efile.c
+++ b/erts/emulator/drivers/unix/unix_efile.c
@@ -537,9 +537,9 @@ efile_fileinfo(Efile_error* errInfo, Efile_info* pInfo,
     else
 	pInfo->type = FT_OTHER;
 
-    pInfo->accessTime   = statbuf.st_atime;
-    pInfo->modifyTime   = statbuf.st_mtime;
-    pInfo->cTime        = statbuf.st_ctime;
+    pInfo->accessTime   = (Sint64)statbuf.st_atime;
+    pInfo->modifyTime   = (Sint64)statbuf.st_mtime;
+    pInfo->cTime        = (Sint64)statbuf.st_ctime;
 
     pInfo->mode         = statbuf.st_mode;
     pInfo->links        = statbuf.st_nlink;
@@ -578,8 +578,8 @@ efile_write_info(Efile_error *errInfo, Efile_info *pInfo, char *name)
 	}
     }
 
-    tval.actime  = pInfo->accessTime;
-    tval.modtime = pInfo->modifyTime;
+    tval.actime  = (time_t)pInfo->accessTime;
+    tval.modtime = (time_t)pInfo->modifyTime;
 
     return check_error(utime(name, &tval), errInfo);
 }
-- 
2.1.4

openSUSE Build Service is sponsored by