Skip to content

Commit de22f30

Browse files
committed
set_modtime shell fallback
1 parent 57adfa7 commit de22f30

File tree

3 files changed

+22
-4
lines changed

3 files changed

+22
-4
lines changed

+stdlib/+sys/set_modtime.m

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
function ok = set_modtime(p, t)
2+
3+
if ispc()
4+
cmd = sprintf('pwsh -Command "(Get-Item ''%s'').LastWriteTime = ''%s''"', p, string(t, "yyyy-MM-dd HH:mm:ss"));
5+
elseif ismac()
6+
cmd = sprintf("touch -mt %s %s", string(t, "yyyyMMddHHmm"), p);
7+
else
8+
cmd = sprintf("touch -d '%s' %s", string(t, "yyyy-MM-dd HH:mm:ss"), p);
9+
end
10+
11+
[s, m] = system(cmd);
12+
ok = s == 0;
13+
14+
if ~ok
15+
warning("stdlib:set_modtime:ValueError", "%s set modification time of %s: %s", cmd, p, m);
16+
end
17+
18+
end

+stdlib/set_modtime.m

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,10 @@
2424
ok = stdlib.python.set_modtime(p, utc);
2525
end
2626

27+
if ~ok
28+
ok = stdlib.sys.set_modtime(p, utc);
29+
end
30+
2731
end
2832

2933
%!test

test/TestTime.m

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -32,8 +32,6 @@ function test_get_modtime(tc)
3232

3333

3434
function test_touch_modtime(tc)
35-
tc.assumeTrue(stdlib.has_java() || stdlib.has_python())
36-
3735
fn = fullfile(tc.td, "modtime.txt");
3836

3937
tc.verifyTrue(stdlib.touch(fn, datetime("yesterday")))
@@ -47,8 +45,6 @@ function test_touch_modtime(tc)
4745

4846

4947
function test_set_modtime(tc)
50-
tc.assumeTrue(stdlib.has_java() || stdlib.has_python())
51-
5248
tc.verifyEqual(stdlib.set_modtime("", datetime("now")), false)
5349
end
5450

0 commit comments

Comments
 (0)