Skip to content

Commit 3d08cb1

Browse files
committed
which: simplify, like Ffilesystem
1 parent 5366ac7 commit 3d08cb1

File tree

2 files changed

+18
-33
lines changed

2 files changed

+18
-33
lines changed

+stdlib/which.m

Lines changed: 15 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -12,25 +12,17 @@
1212
use_java (1,1) logical = false
1313
end
1414

15-
names = filename;
16-
17-
if ispc
18-
% Windows executable filename doesn't necessarily need .exe,
19-
% particularly for WSL executables that is_exe() will detect from
20-
% native Windows Matlab.
21-
if ~endsWith(lower(filename), ".exe")
22-
names(2) = filename + ".exe";
23-
end
24-
end
25-
26-
% directory/filename given
27-
for exe = names
15+
exe = string.empty;
2816

29-
if stdlib.is_absolute(exe, use_java) && stdlib.is_exe(exe, use_java)
30-
return
31-
end
17+
if stdlib.is_exe(filename, use_java)
18+
exe = stdlib.posix(filename);
19+
return
20+
end
3221

33-
end % for exe
22+
% relative directory component, but path was not a file
23+
if stdlib.filename(filename) ~= filename
24+
return
25+
end
3426

3527
% path given
3628

@@ -40,18 +32,13 @@
4032
end
4133
fpath = fpath(strlength(fpath)>0);
4234

43-
for name = names
44-
45-
for p = fpath
46-
exe = stdlib.posix(p) + "/" + name;
47-
if stdlib.is_exe(exe, use_java)
48-
return
49-
end
35+
for p = fpath
36+
e = p + "/" + filename;
37+
if stdlib.is_exe(e, use_java)
38+
exe = stdlib.posix(e);
39+
return
5040
end
51-
52-
end % for name
53-
54-
exe = string.empty;
41+
end
5542

5643
end
5744

test/TestWhich.m

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -35,13 +35,11 @@ function test_is_exe_which_fullpath(tc, use_java)
3535

3636
n = "matlab";
3737
%% is_exe test
38-
p = fullfile(matlabroot, "bin", n);
38+
p = matlabroot + "/bin/" + n;
3939
if ispc
40-
fp = p + ".exe";
41-
else
42-
fp = p;
40+
p = p + ".exe";
4341
end
44-
tc.verifyTrue(stdlib.is_exe(fp, use_java))
42+
tc.verifyTrue(stdlib.is_exe(p, use_java))
4543
%% which: test absolute path
4644
exe = stdlib.which(p, getenv('PATH'), use_java);
4745

0 commit comments

Comments
 (0)