Skip to content

Commit b84d8c6

Browse files
committed
get_owner: java fcn
1 parent 537605a commit b84d8c6

File tree

7 files changed

+49
-11
lines changed

7 files changed

+49
-11
lines changed

+stdlib/+java/filesystem_type.m

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
function t = filesystem_type(p)
22

3-
t = javaMethod("getFileStore", "java.nio.file.Files", javaPathObject(p)).type;
3+
t = string(javaMethod("getFileStore", "java.nio.file.Files", javaPathObject(p)).type);
44

55
end

+stdlib/+java/get_owner.m

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
function n = get_owner(p)
2+
3+
% https://docs.oracle.com/en/java/javase/22/docs/api/java.base/java/nio/file/Files.html#getOwner(java.nio.file.Path,java.nio.file.LinkOption...)
4+
% https://docs.oracle.com/en/java/javase/22/docs/api/java.base/java/nio/file/LinkOption.html
5+
6+
try
7+
opt = javaMethod("values", "java.nio.file.LinkOption");
8+
9+
n = string(javaMethod("getOwner", "java.nio.file.Files", javaPathObject(p), opt));
10+
catch e
11+
warning(e.identifier, "%s", e.message)
12+
n = string.empty;
13+
end
14+
15+
end

+stdlib/+java/get_username.m

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
function n = get_username()
2+
3+
try
4+
n = string(javaMethod("getProperty", "java.lang.System", "user.name"));
5+
catch e
6+
warning(e.identifier, "Failed to get username from Java: %s", e.message);
7+
n = string.empty;
8+
end
9+
10+
end

+stdlib/+sys/get_username.m

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
function n = get_username()
2+
3+
if ispc()
4+
cmd = "whoami";
5+
else
6+
cmd = "id -un"; % POSIX compliant command to get username
7+
end
8+
[s, n] = system(cmd);
9+
10+
if s == 0
11+
n = strtrim(n); % Remove any trailing newline or spaces
12+
else
13+
warning("Failed to get username from system command: %s", n);
14+
n = string.empty;
15+
end
16+
17+
end

+stdlib/get_owner.m

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -15,13 +15,7 @@
1515
if ~ispc() && stdlib.has_python()
1616
n = stdlib.python.get_owner(p);
1717
elseif stdlib.has_java()
18-
% https://docs.oracle.com/en/java/javase/22/docs/api/java.base/java/nio/file/Files.html#getOwner(java.nio.file.Path,java.nio.file.LinkOption...)
19-
% https://docs.oracle.com/en/java/javase/22/docs/api/java.base/java/nio/file/LinkOption.html
20-
21-
opt = javaMethod("values", "java.nio.file.LinkOption");
22-
23-
n = javaMethod("getOwner", "java.nio.file.Files", javaPathObject(p), opt).toString();
24-
% .toString() needed for Octave
18+
n = stdlib.java.get_owner(p);
2519
end
2620

2721
if strempty(n)

+stdlib/get_username.m

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,11 @@
88
n = System.Environment.UserName;
99
% https://learn.microsoft.com/en-us/dotnet/api/system.environment.username
1010
elseif stdlib.has_java()
11-
n = javaMethod("getProperty", "java.lang.System", "user.name");
11+
n = stdlib.java.get_username();
12+
end
13+
14+
if strempty(n)
15+
n = stdlib.sys.get_username();
1216
end
1317

1418
try %#ok<*TRYNC>

test/TestSys.m

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -59,8 +59,6 @@ function test_hostname(tc)
5959
end
6060

6161
function test_username(tc)
62-
tc.assumeTrue(stdlib.has_dotnet() || stdlib.has_java())
63-
6462
u = stdlib.get_username();
6563
tc.verifyGreaterThan(strlength(u), 0)
6664
end

0 commit comments

Comments
 (0)