Skip to content

Commit 4d70985

Browse files
committed
shell fallback for disk_{avail,cap}
1 parent 1bfab64 commit 4d70985

File tree

5 files changed

+46
-4
lines changed

5 files changed

+46
-4
lines changed

+stdlib/+sys/disk_available.m

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
function t = disk_available(p)
2+
3+
if ispc()
4+
dl = extractBefore(stdlib.absolute(p), 2);
5+
cmd = "pwsh -c (Get-Volume -DriveLetter " + dl + ").SizeRemaining";
6+
elseif ismac()
7+
cmd = "df -k " + p + " | awk 'NR==2 {print $4*1024}'";
8+
else
9+
cmd = "df -B1 " + p + " | awk 'NR==2 {print $4}'";
10+
end
11+
12+
[s, t] = system(cmd);
13+
if s == 0
14+
t = strip(t);
15+
else
16+
t = "";
17+
end
18+
19+
end

+stdlib/+sys/disk_capacity.m

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
function t = disk_capacity(p)
2+
3+
if ispc()
4+
dl = extractBefore(stdlib.absolute(p), 2);
5+
cmd = "pwsh -c (Get-Volume -DriveLetter " + dl + ").Size";
6+
elseif ismac()
7+
cmd = "df -k " + p + " | awk 'NR==2 {print $2*1024}'";
8+
else
9+
cmd = "df -B1 " + p + " | awk 'NR==2 {print $2}'";
10+
end
11+
12+
[s, t] = system(cmd);
13+
if s == 0
14+
t = strip(t);
15+
else
16+
t = "";
17+
end
18+
19+
end

+stdlib/disk_available.m

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,10 @@
2121
f = stdlib.python.disk_available(d);
2222
end
2323

24+
if f == 0
25+
f = stdlib.sys.disk_available(d);
26+
end
27+
2428
f = uint64(f);
2529

2630
end

+stdlib/disk_capacity.m

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,10 @@
1919
f = stdlib.python.disk_capacity(d);
2020
end
2121

22+
if f == 0
23+
f = stdlib.sys.disk_capacity(d);
24+
end
25+
2226
f = uint64(f);
2327

2428
end

test/TestDisk.m

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,6 @@
1313

1414
function test_disk_available(tc, Ps)
1515

16-
tc.assumeTrue(tc.disk_fun || stdlib.is_mex_fun("stdlib.disk_available"))
17-
1816
zero = uint64(0);
1917

2018
if stdlib.exists(Ps)
@@ -27,8 +25,6 @@ function test_disk_available(tc, Ps)
2725

2826
function test_disk_capacity(tc, Ps)
2927

30-
tc.assumeTrue(tc.disk_fun || stdlib.is_mex_fun("stdlib.disk_capacity"))
31-
3228
zero = uint64(0);
3329

3430
if stdlib.exists(Ps)

0 commit comments

Comments
 (0)