From c81d9c33463e2d8b0b23f3c1522414b2ac3d6315 Mon Sep 17 00:00:00 2001 From: agnostic-apollo Date: Sun, 17 Apr 2022 06:18:14 +0500 Subject: [PATCH] Added: Add `FileType.SOCKET` support and add `FileUtils.deleteSocketFile()` function --- .../java/com/termux/shared/file/FileUtils.java | 15 +++++++++++++++ .../shared/file/filesystem/FileAttributes.java | 4 ++++ .../termux/shared/file/filesystem/FileType.java | 17 +++++++++-------- .../shared/file/filesystem/FileTypes.java | 2 ++ .../shared/file/filesystem/UnixConstants.java | 2 ++ 5 files changed, 32 insertions(+), 8 deletions(-) diff --git a/termux-shared/src/main/java/com/termux/shared/file/FileUtils.java b/termux-shared/src/main/java/com/termux/shared/file/FileUtils.java index 715d65f5..f51de782 100644 --- a/termux-shared/src/main/java/com/termux/shared/file/FileUtils.java +++ b/termux-shared/src/main/java/com/termux/shared/file/FileUtils.java @@ -1116,6 +1116,21 @@ public class FileUtils { return deleteFile(label, filePath, ignoreNonExistentFile, false, FileType.SYMLINK.getValue()); } + /** + * Delete socket file at path. + * + * This function is a wrapper for {@link #deleteFile(String, String, boolean, boolean, int)}. + * + * @param label The optional label for file to delete. This can optionally be {@code null}. + * @param filePath The {@code path} for file to delete. + * @param ignoreNonExistentFile The {@code boolean} that decides if it should be considered an + * error if file to deleted doesn't exist. + * @return Returns the {@code error} if deletion was not successful, otherwise {@code null}. + */ + public static Error deleteSocketFile(String label, final String filePath, final boolean ignoreNonExistentFile) { + return deleteFile(label, filePath, ignoreNonExistentFile, false, FileType.SOCKET.getValue()); + } + /** * Delete regular, directory or symlink file at path. * diff --git a/termux-shared/src/main/java/com/termux/shared/file/filesystem/FileAttributes.java b/termux-shared/src/main/java/com/termux/shared/file/filesystem/FileAttributes.java index 5e847a1e..4565acc3 100644 --- a/termux-shared/src/main/java/com/termux/shared/file/filesystem/FileAttributes.java +++ b/termux-shared/src/main/java/com/termux/shared/file/filesystem/FileAttributes.java @@ -202,6 +202,10 @@ public class FileAttributes { return ((st_mode & UnixConstants.S_IFMT) == UnixConstants.S_IFIFO); } + public boolean isSocket() { + return ((st_mode & UnixConstants.S_IFMT) == UnixConstants.S_IFSOCK); + } + public boolean isBlock() { return ((st_mode & UnixConstants.S_IFMT) == UnixConstants.S_IFBLK); } diff --git a/termux-shared/src/main/java/com/termux/shared/file/filesystem/FileType.java b/termux-shared/src/main/java/com/termux/shared/file/filesystem/FileType.java index 00ed06d6..ff9418fc 100644 --- a/termux-shared/src/main/java/com/termux/shared/file/filesystem/FileType.java +++ b/termux-shared/src/main/java/com/termux/shared/file/filesystem/FileType.java @@ -3,14 +3,15 @@ package com.termux.shared.file.filesystem; /** The {@link Enum} that defines file types. */ public enum FileType { - NO_EXIST("no exist", 0), // 0000000 - REGULAR("regular", 1), // 0000001 - DIRECTORY("directory", 2), // 0000010 - SYMLINK("symlink", 4), // 0000100 - CHARACTER("character", 8), // 0001000 - FIFO("fifo", 16), // 0010000 - BLOCK("block", 32), // 0100000 - UNKNOWN("unknown", 64); // 1000000 + NO_EXIST("no exist", 0), // 00000000 + REGULAR("regular", 1), // 00000001 + DIRECTORY("directory", 2), // 00000010 + SYMLINK("symlink", 4), // 00000100 + SOCKET("socket", 8), // 00001000 + CHARACTER("character", 16), // 00010000 + FIFO("fifo", 32), // 00100000 + BLOCK("block", 64), // 01000000 + UNKNOWN("unknown", 128); // 10000000 private final String name; private final int value; diff --git a/termux-shared/src/main/java/com/termux/shared/file/filesystem/FileTypes.java b/termux-shared/src/main/java/com/termux/shared/file/filesystem/FileTypes.java index c739392d..29f2b294 100644 --- a/termux-shared/src/main/java/com/termux/shared/file/filesystem/FileTypes.java +++ b/termux-shared/src/main/java/com/termux/shared/file/filesystem/FileTypes.java @@ -104,6 +104,8 @@ public class FileTypes { return FileType.DIRECTORY; else if (fileAttributes.isSymbolicLink()) return FileType.SYMLINK; + else if (fileAttributes.isSocket()) + return FileType.SOCKET; else if (fileAttributes.isCharacter()) return FileType.CHARACTER; else if (fileAttributes.isFifo()) diff --git a/termux-shared/src/main/java/com/termux/shared/file/filesystem/UnixConstants.java b/termux-shared/src/main/java/com/termux/shared/file/filesystem/UnixConstants.java index 39e84eb6..72e7dc2a 100644 --- a/termux-shared/src/main/java/com/termux/shared/file/filesystem/UnixConstants.java +++ b/termux-shared/src/main/java/com/termux/shared/file/filesystem/UnixConstants.java @@ -88,6 +88,8 @@ public class UnixConstants { static final int S_IFLNK = OsConstants.S_IFLNK; + static final int S_IFSOCK = OsConstants.S_IFSOCK; + static final int S_IFCHR = OsConstants.S_IFCHR; static final int S_IFBLK = OsConstants.S_IFBLK;