mirror of https://github.com/mgba-emu/mgba.git
Util: Move VDirOptionalOpenFile back into vfs.c
This commit is contained in:
parent
7bb17bc99d
commit
24ff4e8a01
|
@ -16,3 +16,31 @@ ssize_t VFileReadline(struct VFile* vf, char* buffer, size_t size) {
|
|||
}
|
||||
return buffer[bytesRead] = '\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;
|
||||
}
|
||||
|
|
|
@ -51,34 +51,6 @@ struct VDir* VDirOpen(const char* path) {
|
|||
return &vd->d;
|
||||
}
|
||||
|
||||
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;
|
||||
}
|
||||
|
||||
struct VFile* VDirOptionalOpenIncrementFile(struct VDir* dir, const char* realPath, const char* prefix, const char* infix, const char* suffix, int mode) {
|
||||
char path[PATH_MAX];
|
||||
path[PATH_MAX - 1] = '\0';
|
||||
|
|
Loading…
Reference in New Issue