summaryrefslogtreecommitdiff
path: root/libs/androidfw/misc.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'libs/androidfw/misc.cpp')
-rw-r--r--libs/androidfw/misc.cpp69
1 files changed, 30 insertions, 39 deletions
diff --git a/libs/androidfw/misc.cpp b/libs/androidfw/misc.cpp
index 26eb320805c9..32f3624a3aee 100644
--- a/libs/androidfw/misc.cpp
+++ b/libs/androidfw/misc.cpp
@@ -16,10 +16,10 @@
#define LOG_TAG "misc"
-#include "androidfw/misc.h"
-
-#include <errno.h>
-#include <sys/stat.h>
+//
+// Miscellaneous utility functions.
+//
+#include <androidfw/misc.h>
#include "android-base/logging.h"
@@ -28,7 +28,9 @@
#include <sys/vfs.h>
#endif // __linux__
-#include <array>
+#include <errno.h>
+#include <sys/stat.h>
+
#include <cstdio>
#include <cstring>
#include <tuple>
@@ -38,26 +40,28 @@ namespace android {
/*
* Get a file's type.
*/
-FileType getFileType(const char* fileName) {
- struct stat sb;
- if (stat(fileName, &sb) < 0) {
- if (errno == ENOENT || errno == ENOTDIR)
- return kFileTypeNonexistent;
- else {
- PLOG(ERROR) << "getFileType(): stat(" << fileName << ") failed";
- return kFileTypeUnknown;
- }
- } else {
- if (S_ISREG(sb.st_mode))
- return kFileTypeRegular;
- else if (S_ISDIR(sb.st_mode))
- return kFileTypeDirectory;
- else if (S_ISCHR(sb.st_mode))
- return kFileTypeCharDev;
- else if (S_ISBLK(sb.st_mode))
- return kFileTypeBlockDev;
- else if (S_ISFIFO(sb.st_mode))
- return kFileTypeFifo;
+FileType getFileType(const char* fileName)
+{
+ struct stat sb;
+
+ if (stat(fileName, &sb) < 0) {
+ if (errno == ENOENT || errno == ENOTDIR)
+ return kFileTypeNonexistent;
+ else {
+ PLOG(ERROR) << "getFileType(): stat(" << fileName << ") failed";
+ return kFileTypeUnknown;
+ }
+ } else {
+ if (S_ISREG(sb.st_mode))
+ return kFileTypeRegular;
+ else if (S_ISDIR(sb.st_mode))
+ return kFileTypeDirectory;
+ else if (S_ISCHR(sb.st_mode))
+ return kFileTypeCharDev;
+ else if (S_ISBLK(sb.st_mode))
+ return kFileTypeBlockDev;
+ else if (S_ISFIFO(sb.st_mode))
+ return kFileTypeFifo;
#if defined(S_ISLNK)
else if (S_ISLNK(sb.st_mode))
return kFileTypeSymlink;
@@ -71,7 +75,7 @@ FileType getFileType(const char* fileName) {
}
}
-ModDate getModDate(const struct stat& st) {
+static ModDate getModDate(const struct stat& st) {
#ifdef _WIN32
return st.st_mtime;
#elif defined(__APPLE__)
@@ -109,14 +113,8 @@ bool isReadonlyFilesystem(const char*) {
bool isReadonlyFilesystem(int) {
return false;
}
-bool isKnownWritablePath(const char*) {
- return false;
-}
#else // __linux__
bool isReadonlyFilesystem(const char* path) {
- if (isKnownWritablePath(path)) {
- return false;
- }
struct statfs sfs;
if (::statfs(path, &sfs)) {
PLOG(ERROR) << "isReadonlyFilesystem(): statfs(" << path << ") failed";
@@ -133,13 +131,6 @@ bool isReadonlyFilesystem(int fd) {
}
return (sfs.f_flags & ST_RDONLY) != 0;
}
-
-bool isKnownWritablePath(const char* path) {
- // We know that all paths in /data/ are writable.
- static constexpr char kRwPrefix[] = "/data/";
- return strncmp(kRwPrefix, path, std::size(kRwPrefix) - 1) == 0;
-}
-
#endif // __linux__
} // namespace android