Skip to content

Commit 98c6996

Browse files
committed
use switch-case for concise/clarity
1 parent 54bf68a commit 98c6996

File tree

5 files changed

+43
-56
lines changed

5 files changed

+43
-56
lines changed

+stdlib/create_symlink.m

Lines changed: 10 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,6 @@
66
% * link: path to create link at
77
%%% Outputs
88
% * ok: true if successful
9-
%
10-
% Ref: https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/nio/file/Files.html#createSymbolicLink(java.nio.file.Path,java.nio.file.Path,java.nio.file.attribute.FileAttribute...)
119

1210
function ok = create_symlink(target, link)
1311
arguments
@@ -20,27 +18,22 @@
2018
createSymbolicLink(link, target);
2119
ok = true;
2220
catch e
23-
if strcmp(e.identifier, "MATLAB:io:filesystem:symlink:NeedsAdminPerms") || ...
24-
strcmp(e.identifier, 'MATLAB:UndefinedFunction')
21+
switch e.identifier
22+
case {"MATLAB:io:filesystem:symlink:NeedsAdminPerms", "MATLAB:UndefinedFunction"}
2523
% windows requires RunAsAdmin
2624
% https://www.mathworks.com/help/releases/R2024b/matlab/ref/createsymboliclink.html
2725
% ok = java.nio.file.Files.createSymbolicLink(java.io.File(link).toPath(), java.io.File(target).toPath());
2826
% Matlab Java doesn't recognize the optional argument omitted.
2927
% see example/Filesystem.java for this working in plain Java.
3028
% see example/javaCreateSymbolicLink.m for a non-working attempt in Matlab.
31-
32-
warning(e.identifier, "buildtool mex \n%s", e.message)
33-
34-
ok = false;
35-
elseif strcmp(e.identifier, "Octave:undefined-function")
36-
[err, msg] = symlink(target, link);
37-
ok = err == 0;
38-
if ~ok
39-
warning("create_symlink: %s", msg)
40-
end
41-
else
42-
warning(e.identifier, "%s", e.message)
43-
ok = false;
29+
warning(e.identifier, "buildtool mex \n%s", e.message)
30+
ok = false;
31+
case "Octave:undefined-function"
32+
err = symlink(target, link);
33+
ok = err == 0;
34+
otherwise
35+
warning(e.identifier, "%s", e.message)
36+
ok = false;
4437
end
4538
end
4639

+stdlib/get_permissions.m

Lines changed: 11 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -12,18 +12,17 @@
1212
try
1313
v = filePermissions(f);
1414
catch e
15-
if strcmp(e.identifier, "MATLAB:io:filesystem:filePermissions:CannotFindLocation")
16-
return
17-
elseif strcmp(e.identifier, "Octave:undefined-function")
18-
try %#ok<TRYNC>
19-
p = stat(f).modestr;
20-
end
21-
return
22-
elseif strcmp(e.identifier, "MATLAB:UndefinedFunction")
23-
v = file_attributes(f);
24-
if isempty(v), return, end
25-
else
26-
rethrow(e)
15+
switch e.identifier
16+
case "MATLAB:io:filesystem:filePermissions:CannotFindLocation", return
17+
case "Octave:undefined-function"
18+
try %#ok<TRYNC>
19+
p = stat(f).modestr;
20+
end
21+
return
22+
case "MATLAB:UndefinedFunction"
23+
v = file_attributes(f);
24+
if isempty(v), return, end
25+
otherwise, rethrow(e)
2726
end
2827
end
2928

+stdlib/get_pid.m

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -5,12 +5,10 @@
55
try
66
pid = matlabProcessID;
77
catch e
8-
if strcmp(e.identifier, "MATLAB:UndefinedFunction")
9-
pid = uint64(feature("getpid"));
10-
elseif strcmp(e.identifier, "Octave:undefined-function")
11-
pid = uint64(getpid());
12-
else
13-
rethrow(e)
8+
switch e.identifier
9+
case "MATLAB:UndefinedFunction", pid = uint64(feature("getpid"));
10+
case "Octave:undefined-function", pid = uint64(getpid());
11+
otherwise, rethrow(e)
1412
end
1513
end
1614

+stdlib/is_symlink.m

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -10,12 +10,10 @@
1010
try
1111
ok = isSymbolicLink(p);
1212
catch e
13-
if strcmp(e.identifier, "MATLAB:UndefinedFunction")
14-
ok = java.nio.file.Files.isSymbolicLink(javaPathObject(stdlib.absolute(p, "", false)));
15-
elseif strcmp(e.identifier, "Octave:undefined-function")
16-
ok = S_ISLNK(stat(p).mode);
17-
else
18-
rethrow(e)
13+
switch e.identifier
14+
case "MATLAB:UndefinedFunction", ok = java.nio.file.Files.isSymbolicLink(javaPathObject(stdlib.absolute(p, "", false)));
15+
case "Octave:undefined-function", ok = S_ISLNK(stat(p).mode);
16+
otherwise, rethrow(e)
1917
end
2018
end
2119

+stdlib/read_symlink.m

Lines changed: 14 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -13,22 +13,21 @@
1313
[ok, t] = isSymbolicLink(p);
1414
if ~ok, return, end
1515
catch e
16-
17-
if strcmp(e.identifier, "Octave:undefined-function")
18-
t = readlink(p);
19-
elseif strcmp(e.identifier, 'MATLAB:UndefinedFunction')
20-
if ~stdlib.is_symlink(p)
21-
return
16+
switch e.identifier
17+
case "Octave:undefined-function", t = readlink(p);
18+
case "MATLAB:UndefinedFunction"
19+
if ~stdlib.is_symlink(p)
20+
return
21+
end
22+
23+
% must be absolute path
24+
% must not be .canonical or symlink is gobbled!
25+
r = stdlib.absolute(p, "", false);
26+
27+
% https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/nio/file/Files.html#readSymbolicLink(java.nio.file.Path)
28+
t = java.nio.file.Files.readSymbolicLink(javaPathObject(r));
29+
otherwise, rethrow(e)
2230
end
23-
24-
% must be absolute path
25-
% must not be .canonical or symlink is gobbled!
26-
r = stdlib.absolute(p, "", false);
27-
28-
% https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/nio/file/Files.html#readSymbolicLink(java.nio.file.Path)
29-
t = java.nio.file.Files.readSymbolicLink(javaPathObject(r));
30-
end
31-
3231
end
3332

3433
r = stdlib.posix(t);

0 commit comments

Comments
 (0)