mirror of https://github.com/mgba-emu/mgba.git
VFS: Move VDirOptionalOpenFile back to vfs.c
This commit is contained in:
parent
43f9f2dfd3
commit
ef93f68658
|
@ -80,3 +80,31 @@ ssize_t VFileRead16LE(struct VFile* vf, void* hword) {
|
||||||
}
|
}
|
||||||
return r;
|
return r;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
struct VFile* VDirOptionalOpenFile(struct VDir* dir, const char* realPath, const char* prefix, const char* suffix, int mode) {
|
||||||
|
char path[PATH_MAX];
|
||||||
|
path[PATH_MAX - 1] = '\0';
|
||||||
|
struct VFile* vf;
|
||||||
|
if (!dir) {
|
||||||
|
if (!realPath) {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
char* dotPoint = strrchr(realPath, '.');
|
||||||
|
if (dotPoint - realPath + 1 >= PATH_MAX - 1) {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
if (dotPoint > strrchr(realPath, '/')) {
|
||||||
|
int len = dotPoint - realPath;
|
||||||
|
strncpy(path, realPath, len);
|
||||||
|
path[len] = 0;
|
||||||
|
strncat(path + len, suffix, PATH_MAX - len - 1);
|
||||||
|
} else {
|
||||||
|
snprintf(path, PATH_MAX - 1, "%s%s", realPath, suffix);
|
||||||
|
}
|
||||||
|
vf = VFileOpen(path, mode);
|
||||||
|
} else {
|
||||||
|
snprintf(path, PATH_MAX - 1, "%s%s", prefix, suffix);
|
||||||
|
vf = dir->openFile(dir, path, mode);
|
||||||
|
}
|
||||||
|
return vf;
|
||||||
|
}
|
||||||
|
|
|
@ -190,31 +190,3 @@ const char* _vdeName(struct VDirEntry* vde) {
|
||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
struct VFile* VDirOptionalOpenFile(struct VDir* dir, const char* realPath, const char* prefix, const char* suffix, int mode) {
|
|
||||||
char path[PATH_MAX];
|
|
||||||
path[PATH_MAX - 1] = '\0';
|
|
||||||
struct VFile* vf;
|
|
||||||
if (!dir) {
|
|
||||||
if (!realPath) {
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
char* dotPoint = strrchr(realPath, '.');
|
|
||||||
if (dotPoint - realPath + 1 >= PATH_MAX - 1) {
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
if (dotPoint > strrchr(realPath, '/')) {
|
|
||||||
int len = dotPoint - realPath;
|
|
||||||
strncpy(path, realPath, len);
|
|
||||||
path[len] = 0;
|
|
||||||
strncat(path + len, suffix, PATH_MAX - len - 1);
|
|
||||||
} else {
|
|
||||||
snprintf(path, PATH_MAX - 1, "%s%s", realPath, suffix);
|
|
||||||
}
|
|
||||||
vf = VFileOpen(path, mode);
|
|
||||||
} else {
|
|
||||||
snprintf(path, PATH_MAX - 1, "%s%s", prefix, suffix);
|
|
||||||
vf = dir->openFile(dir, path, mode);
|
|
||||||
}
|
|
||||||
return vf;
|
|
||||||
}
|
|
||||||
|
|
Loading…
Reference in New Issue