Io: Cleanup access bits for files.

Also, we default a lot of these members, so don't need to reset.
This commit is contained in:
Unknown W. Brackets 2020-05-21 18:20:38 -07:00
parent 9b112efa0b
commit d7ad43b1d9
5 changed files with 25 additions and 37 deletions

View file

@ -742,11 +742,6 @@ PSPFileInfo DirectoryFileSystem::GetFileInfo(std::string filename) {
File::FileDetails details; File::FileDetails details;
if (!File::GetFileDetails(fullName, &details)) { if (!File::GetFileDetails(fullName, &details)) {
ERROR_LOG(FILESYS, "DirectoryFileSystem::GetFileInfo: GetFileDetails failed: %s", fullName.c_str()); ERROR_LOG(FILESYS, "DirectoryFileSystem::GetFileInfo: GetFileDetails failed: %s", fullName.c_str());
x.size = 0;
x.access = 0;
memset(&x.atime, 0, sizeof(x.atime));
memset(&x.ctime, 0, sizeof(x.ctime));
memset(&x.mtime, 0, sizeof(x.mtime));
} else { } else {
x.size = details.size; x.size = details.size;
x.access = details.access; x.access = details.access;
@ -1094,6 +1089,7 @@ PSPFileInfo VFSFileSystem::GetFileInfo(std::string filename) {
if (x.exists) { if (x.exists) {
x.size = fo.size; x.size = fo.size;
x.type = fo.isDirectory ? FILETYPE_DIRECTORY : FILETYPE_NORMAL; x.type = fo.isDirectory ? FILETYPE_DIRECTORY : FILETYPE_NORMAL;
x.access = fo.isWritable ? 0666 : 0444;
} }
} else { } else {
x.exists = false; x.exists = false;

View file

@ -88,29 +88,25 @@ private:
}; };
struct PSPFileInfo { struct PSPFileInfo {
PSPFileInfo() PSPFileInfo() {
: size(0), access(0), exists(false), type(FILETYPE_NORMAL), isOnSectorSystem(false), startSector(0), numSectors(0), sectorSize(0) {
memset(&ctime, 0, sizeof(ctime));
memset(&atime, 0, sizeof(atime));
memset(&mtime, 0, sizeof(mtime));
} }
void DoState(PointerWrap &p); void DoState(PointerWrap &p);
std::string name; std::string name;
s64 size; s64 size = 0;
u32 access; //unix 777 u32 access = 0; //unix 777
bool exists; bool exists = false;
FileType type; FileType type = FILETYPE_NORMAL;
tm atime; tm atime{};
tm ctime; tm ctime{};
tm mtime; tm mtime{};
bool isOnSectorSystem; bool isOnSectorSystem = false;
u32 startSector; u32 startSector = 0;
u32 numSectors; u32 numSectors = 0;
u32 sectorSize; u32 sectorSize = 0;
}; };

View file

@ -617,6 +617,7 @@ PSPFileInfo ISOFileSystem::GetFileInfo(std::string filename) {
fileInfo.exists = true; fileInfo.exists = true;
fileInfo.type = FILETYPE_NORMAL; fileInfo.type = FILETYPE_NORMAL;
fileInfo.size = readSize; fileInfo.size = readSize;
fileInfo.access = 0444;
fileInfo.startSector = sectorStart; fileInfo.startSector = sectorStart;
fileInfo.isOnSectorSystem = true; fileInfo.isOnSectorSystem = true;
fileInfo.numSectors = (readSize + sectorSize - 1) / sectorSize; fileInfo.numSectors = (readSize + sectorSize - 1) / sectorSize;
@ -625,12 +626,10 @@ PSPFileInfo ISOFileSystem::GetFileInfo(std::string filename) {
TreeEntry *entry = GetFromPath(filename, false); TreeEntry *entry = GetFromPath(filename, false);
PSPFileInfo x; PSPFileInfo x;
if (!entry) { if (entry) {
x.size = 0;
x.exists = false;
} else {
x.name = entry->name; x.name = entry->name;
x.access = FILEACCESS_READ; // Strangely, it seems to be executable even for files.
x.access = 0555;
x.size = entry->size; x.size = entry->size;
x.exists = true; x.exists = true;
x.type = entry->isDirectory ? FILETYPE_DIRECTORY : FILETYPE_NORMAL; x.type = entry->isDirectory ? FILETYPE_DIRECTORY : FILETYPE_NORMAL;
@ -658,16 +657,14 @@ std::vector<PSPFileInfo> ISOFileSystem::GetDirListing(std::string path) {
PSPFileInfo x; PSPFileInfo x;
x.name = e->name; x.name = e->name;
x.access = FILEACCESS_READ; // Strangely, it seems to be executable even for files.
x.access = 0555;
x.size = e->size; x.size = e->size;
x.type = e->isDirectory ? FILETYPE_DIRECTORY : FILETYPE_NORMAL; x.type = e->isDirectory ? FILETYPE_DIRECTORY : FILETYPE_NORMAL;
x.isOnSectorSystem = true; x.isOnSectorSystem = true;
x.startSector = e->startingPosition/2048; x.startSector = e->startingPosition/2048;
x.sectorSize = sectorSize; x.sectorSize = sectorSize;
x.numSectors = (u32)((e->size + sectorSize - 1) / sectorSize); x.numSectors = (u32)((e->size + sectorSize - 1) / sectorSize);
memset(&x.atime, 0, sizeof(x.atime));
memset(&x.mtime, 0, sizeof(x.mtime));
memset(&x.ctime, 0, sizeof(x.ctime));
myVector.push_back(x); myVector.push_back(x);
} }
return myVector; return myVector;

View file

@ -370,7 +370,7 @@ PSPFileInfo MetaFileSystem::GetFileInfo(std::string filename)
} }
else else
{ {
PSPFileInfo bogus; // TODO PSPFileInfo bogus;
return bogus; return bogus;
} }
} }

View file

@ -571,6 +571,7 @@ PSPFileInfo VirtualDiscFileSystem::GetFileInfo(std::string filename) {
fileInfo.exists = true; fileInfo.exists = true;
fileInfo.type = FILETYPE_NORMAL; fileInfo.type = FILETYPE_NORMAL;
fileInfo.size = readSize; fileInfo.size = readSize;
fileInfo.access = 0444;
fileInfo.startSector = sectorStart; fileInfo.startSector = sectorStart;
fileInfo.isOnSectorSystem = true; fileInfo.isOnSectorSystem = true;
fileInfo.numSectors = (readSize + 2047) / 2048; fileInfo.numSectors = (readSize + 2047) / 2048;
@ -582,6 +583,7 @@ PSPFileInfo VirtualDiscFileSystem::GetFileInfo(std::string filename) {
x.type = FILETYPE_NORMAL; x.type = FILETYPE_NORMAL;
x.isOnSectorSystem = true; x.isOnSectorSystem = true;
x.startSector = fileList[fileIndex].firstBlock; x.startSector = fileList[fileIndex].firstBlock;
x.access = 0555;
HandlerFileHandle temp = fileList[fileIndex].handler; HandlerFileHandle temp = fileList[fileIndex].handler;
if (temp.Open(basePath, filename, FILEACCESS_READ)) { if (temp.Open(basePath, filename, FILEACCESS_READ)) {
@ -610,6 +612,7 @@ PSPFileInfo VirtualDiscFileSystem::GetFileInfo(std::string filename) {
x.type = File::IsDirectory(fullName) ? FILETYPE_DIRECTORY : FILETYPE_NORMAL; x.type = File::IsDirectory(fullName) ? FILETYPE_DIRECTORY : FILETYPE_NORMAL;
x.exists = true; x.exists = true;
x.access = 0555;
if (fileIndex != -1) { if (fileIndex != -1) {
x.isOnSectorSystem = true; x.isOnSectorSystem = true;
x.startSector = fileList[fileIndex].firstBlock; x.startSector = fileList[fileIndex].firstBlock;
@ -621,12 +624,8 @@ PSPFileInfo VirtualDiscFileSystem::GetFileInfo(std::string filename) {
ERROR_LOG(FILESYS, "DirectoryFileSystem::GetFileInfo: GetFileDetails failed: %s", fullName.c_str()); ERROR_LOG(FILESYS, "DirectoryFileSystem::GetFileInfo: GetFileDetails failed: %s", fullName.c_str());
x.size = 0; x.size = 0;
x.access = 0; x.access = 0;
memset(&x.atime, 0, sizeof(x.atime));
memset(&x.ctime, 0, sizeof(x.ctime));
memset(&x.mtime, 0, sizeof(x.mtime));
} else { } else {
x.size = details.size; x.size = details.size;
x.access = details.access;
time_t atime = details.atime; time_t atime = details.atime;
time_t ctime = details.ctime; time_t ctime = details.ctime;
time_t mtime = details.mtime; time_t mtime = details.mtime;
@ -691,7 +690,7 @@ std::vector<PSPFileInfo> VirtualDiscFileSystem::GetDirListing(std::string path)
entry.type = FILETYPE_NORMAL; entry.type = FILETYPE_NORMAL;
} }
entry.access = FILEACCESS_READ; entry.access = 0555;
entry.size = findData.nFileSizeLow | ((u64)findData.nFileSizeHigh<<32); entry.size = findData.nFileSizeLow | ((u64)findData.nFileSizeHigh<<32);
entry.name = ConvertWStringToUTF8(findData.cFileName); entry.name = ConvertWStringToUTF8(findData.cFileName);
tmFromFiletime(entry.atime, findData.ftLastAccessTime); tmFromFiletime(entry.atime, findData.ftLastAccessTime);
@ -737,7 +736,7 @@ std::vector<PSPFileInfo> VirtualDiscFileSystem::GetDirListing(std::string path)
entry.type = FILETYPE_DIRECTORY; entry.type = FILETYPE_DIRECTORY;
else else
entry.type = FILETYPE_NORMAL; entry.type = FILETYPE_NORMAL;
entry.access = s.st_mode & 0x1FF; entry.access = 0555;
entry.name = dirp->d_name; entry.name = dirp->d_name;
entry.size = s.st_size; entry.size = s.st_size;
localtime_r((time_t*)&s.st_atime,&entry.atime); localtime_r((time_t*)&s.st_atime,&entry.atime);