summaryrefslogtreecommitdiffstats
path: root/generic/tclCmdAH.c
diff options
context:
space:
mode:
authordkf <donal.k.fellows@manchester.ac.uk>2003-03-07 11:38:28 (GMT)
committerdkf <donal.k.fellows@manchester.ac.uk>2003-03-07 11:38:28 (GMT)
commit75dd0ea28ca081f8177d36a1eeda0bb91b3f4ab2 (patch)
treebf89486e00b574d0d40c856f9ad07fc0db28fb9e /generic/tclCmdAH.c
parent15fafd797596ca59ac9d1bd9046db8228e6a3613 (diff)
downloadtcl-75dd0ea28ca081f8177d36a1eeda0bb91b3f4ab2.zip
tcl-75dd0ea28ca081f8177d36a1eeda0bb91b3f4ab2.tar.gz
tcl-75dd0ea28ca081f8177d36a1eeda0bb91b3f4ab2.tar.bz2
* generic/tclCmdAH.c (Tcl_FileObjCmd): Fix the setting of a file's mtime
and atime on 64-bit platforms. [Bug #698146]
Diffstat (limited to 'generic/tclCmdAH.c')
-rw-r--r--generic/tclCmdAH.c26
1 files changed, 19 insertions, 7 deletions
diff --git a/generic/tclCmdAH.c b/generic/tclCmdAH.c
index 2992367..03c1c38 100644
--- a/generic/tclCmdAH.c
+++ b/generic/tclCmdAH.c
@@ -11,7 +11,7 @@
* See the file "license.terms" for information on usage and redistribution
* of this file, and for a DISCLAIMER OF ALL WARRANTIES.
*
- * RCS: @(#) $Id: tclCmdAH.c,v 1.27 2002/07/02 12:16:05 vincentdarley Exp $
+ * RCS: @(#) $Id: tclCmdAH.c,v 1.28 2003/03/07 11:38:29 dkf Exp $
*/
#include "tclInt.h"
@@ -835,11 +835,17 @@ Tcl_FileObjCmd(dummy, interp, objc, objv)
return TCL_ERROR;
}
if (objc == 4) {
- if (Tcl_GetLongFromObj(interp, objv[3],
- (long*)(&buf.st_atime)) != TCL_OK) {
+ /*
+ * Need separate variable for reading longs from an
+ * object on 64-bit platforms. [Bug #698146]
+ */
+ long newTime;
+
+ if (Tcl_GetLongFromObj(interp, objv[3], &newTime) != TCL_OK) {
return TCL_ERROR;
}
- tval.actime = buf.st_atime;
+
+ tval.actime = newTime;
tval.modtime = buf.st_mtime;
if (Tcl_FSUtime(objv[2], &tval) != 0) {
Tcl_AppendStringsToObj(Tcl_GetObjResult(interp),
@@ -1071,12 +1077,18 @@ Tcl_FileObjCmd(dummy, interp, objc, objv)
return TCL_ERROR;
}
if (objc == 4) {
- if (Tcl_GetLongFromObj(interp, objv[3],
- (long*)(&buf.st_mtime)) != TCL_OK) {
+ /*
+ * Need separate variable for reading longs from an
+ * object on 64-bit platforms. [Bug #698146]
+ */
+ long newTime;
+
+ if (Tcl_GetLongFromObj(interp, objv[3], &newTime) != TCL_OK) {
return TCL_ERROR;
}
+
tval.actime = buf.st_atime;
- tval.modtime = buf.st_mtime;
+ tval.modtime = newTime;
if (Tcl_FSUtime(objv[2], &tval) != 0) {
Tcl_AppendStringsToObj(Tcl_GetObjResult(interp),
"could not set modification time for file \"",