Skip to content

Commit 85e4242

Browse files
committed
touch: don't reset modtime if created file
set_modtime: require time input
1 parent 32c966a commit 85e4242

File tree

4 files changed

+20
-11
lines changed

4 files changed

+20
-11
lines changed

+stdlib/get_modtime.m

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,6 @@
2323

2424
%!test
2525
%! p = tempname();
26-
%! t = time();
27-
%! assert(touch(p, t))
26+
%! assert(touch(p, []))
2827
%! assert(get_modtime(p) > 0)
2928
%! delete(p)

+stdlib/set_modtime.m

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
function ok = set_modtime(p, t)
44
arguments
55
p (1,1) string
6-
t (1,1) datetime = datetime("now")
6+
t (1,1) datetime
77
end
88

99
try
@@ -23,6 +23,6 @@
2323
%!test
2424
%! p = tempname();
2525
%! t = time()
26-
%! assert(touch(p, t))
26+
%! assert(touch(p, []))
2727
%! assert(set_modtime(p, t))
2828
%! delete(p)

+stdlib/touch.m

Lines changed: 15 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,24 +3,34 @@
33
function ok = touch(p, t)
44
arguments
55
p (1,1) string
6-
t (1,1) datetime = datetime("now")
6+
t datetime {mustBeScalarOrEmpty} = datetime.empty
77
end
88

99
ok = false;
1010

1111
if ~stdlib.exists(p)
1212
fid = fopen(p, "w");
13-
if fid < 0 || fclose(fid) ~= 0
13+
ok = fid > 0 && fclose(fid) == 0;
14+
if isempty(t)
1415
return
1516
end
1617
end
1718

18-
ok = stdlib.set_modtime(p, t);
19+
if isempty(t)
20+
t = datetime("now");
21+
end
22+
23+
try
24+
ok = stdlib.set_modtime(p, t);
25+
catch e
26+
if ~strcmp(e.identifier, "MATLAB:undefinedVarOrClass")
27+
rethrow(e)
28+
end
29+
end
1930

2031
end
2132

2233
%!test
2334
%! f = tempname();
24-
%! t = time();
25-
%! assert (touch(f, t))
35+
%! assert (touch(f, []))
2636
%! assert (isfile(f))

test/TestJava.m

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -136,7 +136,7 @@ function test_touch_modtime(tc)
136136
tc.verifyTrue(stdlib.touch(fn, datetime("yesterday")))
137137
t0 = stdlib.get_modtime(fn);
138138

139-
tc.verifyTrue(stdlib.set_modtime(fn))
139+
tc.verifyTrue(stdlib.set_modtime(fn, datetime("now")))
140140
t1 = stdlib.get_modtime(fn);
141141

142142
tc.verifyGreaterThanOrEqual(t1, t0)
@@ -148,7 +148,7 @@ function test_get_modtime(tc)
148148
end
149149

150150
function test_set_modtime(tc)
151-
tc.verifyEqual(stdlib.set_modtime(""), false)
151+
tc.verifyEqual(stdlib.set_modtime("", datetime("now")), false)
152152
end
153153

154154

0 commit comments

Comments
 (0)