Skip to content

Commit 1ca8eac

Browse files
committed
set_permissions simplify
1 parent 0fa6346 commit 1ca8eac

4 files changed

Lines changed: 11 additions & 18 deletions

File tree

+stdlib/+legacy/set_permissions.m

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@
3434
[s, msg, id] = fileattrib(char(file), mode);
3535
ok = s == 1;
3636
if ~ok
37-
warning(id, 'Failed to set permissions %s for %s: %s', mode, file, msg)
37+
error(id, 'Failed to set permissions %s for %s: %s', mode, file, msg)
3838
end
3939

4040
end

+stdlib/+native/set_permissions.m

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,5 @@
11
function ok = set_permissions(file, readable, writable, executable)
22

3-
mustBeInteger(readable)
4-
mustBeInteger(writable)
5-
mustBeInteger(executable)
6-
73
p = filePermissions(file);
84

95
assert(isscalar(p), "set_permissions: one file only")

+stdlib/set_permissions.m

Lines changed: 5 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -13,26 +13,18 @@
1313

1414
function [ok, b] = set_permissions(file, readable, writable, executable)
1515
arguments
16-
file {mustBeTextScalar, mustBeFileOrFolder}
16+
file {mustBeTextScalar}
1717
readable (1,1) {mustBeInteger, mustBeMember(readable, [-1, 0, 1])}
1818
writable (1,1) {mustBeInteger, mustBeMember(writable, [-1, 0, 1])}
1919
executable (1,1) {mustBeInteger, mustBeMember(executable, [-1, 0, 1])}
2020
end
2121

22-
try
22+
if stdlib.matlabOlderThan('R2025a')
23+
ok = stdlib.legacy.set_permissions(file, readable, writable, executable);
24+
b = 'legacy';
25+
else
2326
ok = stdlib.native.set_permissions(file, readable, writable, executable);
2427
b = 'native';
25-
catch e
26-
switch e.identifier
27-
case {'MATLAB:UndefinedFunction', 'MATLAB:m_illegal_character'}
28-
ok = stdlib.legacy.set_permissions(file, readable, writable, executable);
29-
b = 'legacy';
30-
case 'MATLAB:io:filesystem:filePermissions:CannotFindLocation'
31-
ok = false;
32-
b = '';
33-
otherwise
34-
rethrow(e)
35-
end
3628
end
3729

3830
end

test/TestPermissions.m

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,11 @@ function test_not_exist(tc, Pe)
2626
e = 'MATLAB:io:filesystem:filePermissions:CannotFindLocation';
2727
tc.verifyError(@() stdlib.get_permissions(Pe), e)
2828

29+
if stdlib.matlabOlderThan('R2025a')
30+
e = 'MATLAB:FILEATTRIB:CannotFindFile';
31+
end
32+
tc.verifyError(@() stdlib.set_permissions(Pe, 0, 0, 0), e)
33+
2934
end
3035

3136
function test_get_permissions(tc, Ps)

0 commit comments

Comments
 (0)