aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/io/github/jshipit/Mount.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/io/github/jshipit/Mount.java')
-rw-r--r--src/main/java/io/github/jshipit/Mount.java48
1 files changed, 48 insertions, 0 deletions
diff --git a/src/main/java/io/github/jshipit/Mount.java b/src/main/java/io/github/jshipit/Mount.java
new file mode 100644
index 0000000..63b60dd
--- /dev/null
+++ b/src/main/java/io/github/jshipit/Mount.java
@@ -0,0 +1,48 @@
+package io.github.jshipit;
+
+import com.sun.jna.Library;
+import com.sun.jna.Native;
+import com.sun.jna.Platform;
+
+public class Mount {
+ public interface CLibrary extends Library {
+ int mount(String source, String target,
+ String filesystemtype, int mountflags,
+ String data);
+
+ int umount(String target);
+ }
+
+ public void mount(String source, String target,
+ String filesystemtype, int mountflags,
+ String data) {
+ CLibrary libc;
+
+ if (Platform.isLinux()) {
+ libc = Native.load("c", CLibrary.class);
+ int result = libc.mount(source, target, filesystemtype, mountflags, data);
+ if (result == 0) {
+ System.out.println("Device mounted successfully.");
+ } else {
+ System.out.println("Device mount failed.");
+ }
+ }
+ }
+
+ public void overlayMount(String[] lower, String upper, String target) {
+ CLibrary libc;
+
+ if (Platform.isLinux()) {
+ libc = Native.load("c", CLibrary.class);
+ int result = libc.mount("overlay", target, "overlay", 0, "lowerdir="+String.join(":", lower)+",upperdir="+upper+",workdir="+target+"/work");
+ if (result == 0) {
+ System.out.println("Device mounted successfully.");
+ } else {
+ System.out.println("Device mount failed.");
+ }
+ } else {
+ System.out.println("Platform not supported.");
+ System.out.println("mount -t overlay overlay -o lowerdir="+String.join(":", lower)+",upperdir="+upper+",workdir="+target+"/work "+target);
+ }
+ }
+}