Use stock File implementation

This commit is contained in:
topjohnwu 2022-05-01 04:21:00 -07:00
parent d793ba9fff
commit c33b59e3a0
3 changed files with 31 additions and 40 deletions

View File

@ -18,8 +18,10 @@ interface IFileSystemService {
boolean mkdirs(String path);
boolean renameTo(String path, String dest);
boolean setLastModified(String path, long time);
boolean setPermission(String path, int access, boolean enable, boolean ownerOnly);
boolean setReadOnly(String path);
boolean setWritable(String path, boolean writable, boolean ownerOnly);
boolean setReadable(String path, boolean readable, boolean ownerOnly);
boolean setExecutable(String path, boolean executable, boolean ownerOnly);
boolean checkAccess(String path, int access);
long getTotalSpace(String path);
long getFreeSpace(String path);

View File

@ -143,26 +143,26 @@ class FileSystemService extends IFileSystemService.Stub {
return mCache.get(path).setLastModified(time);
}
@SuppressWarnings("OctalInteger")
@Override
public boolean setPermission(String path, int access, boolean enable, boolean ownerOnly) {
try {
access = access & 07;
int mask = ownerOnly ? (access << 6) : (access | (access << 3) | (access << 6));
StructStat st = Os.stat(path);
int mode = st.st_mode & 07777;
Os.chmod(path, enable ? (mode | mask) : (mode & ~mask));
return true;
} catch (ErrnoException e) {
return false;
}
}
@Override
public boolean setReadOnly(String path) {
return mCache.get(path).setReadOnly();
}
@Override
public boolean setWritable(String path, boolean writable, boolean ownerOnly) {
return mCache.get(path).setWritable(writable, ownerOnly);
}
@Override
public boolean setReadable(String path, boolean readable, boolean ownerOnly) {
return mCache.get(path).setReadable(readable, ownerOnly);
}
@Override
public boolean setExecutable(String path, boolean executable, boolean ownerOnly) {
return mCache.get(path).setExecutable(executable, ownerOnly);
}
@Override
public boolean checkAccess(String path, int access) {
try {

View File

@ -286,42 +286,31 @@ class RemoteFile extends FileImpl<RemoteFile> {
}
}
private boolean setPermission(int access, boolean enable, boolean ownerOnly) {
@Override
public boolean setWritable(boolean writable, boolean ownerOnly) {
try {
return fs.setPermission(getPath(), access, enable, ownerOnly);
return fs.setWritable(getPath(), writable, ownerOnly);
} catch (RemoteException e) {
return false;
}
}
@Override
public boolean setWritable(boolean writable, boolean ownerOnly) {
return setPermission(0x2, writable, ownerOnly);
}
@Override
public boolean setWritable(boolean writable) {
return setPermission(0x2, writable, true);
}
@Override
public boolean setReadable(boolean readable, boolean ownerOnly) {
return setPermission(0x4, readable, ownerOnly);
try {
return fs.setReadable(getPath(), readable, ownerOnly);
} catch (RemoteException e) {
return false;
}
@Override
public boolean setReadable(boolean readable) {
return setPermission(0x4, readable, true);
}
@Override
public boolean setExecutable(boolean executable, boolean ownerOnly) {
return setPermission(0x1, executable, ownerOnly);
try {
return fs.setExecutable(getPath(), executable, ownerOnly);
} catch (RemoteException e) {
return false;
}
@Override
public boolean setExecutable(boolean executable) {
return setPermission(0x1, executable, true);
}
@Override