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';
|
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;
|
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) {
|
struct VFile* VDirOptionalOpenIncrementFile(struct VDir* dir, const char* realPath, const char* prefix, const char* infix, const char* suffix, int mode) {
|
||||||
char path[PATH_MAX];
|
char path[PATH_MAX];
|
||||||
path[PATH_MAX - 1] = '\0';
|
path[PATH_MAX - 1] = '\0';
|
||||||
|
|
Loading…
Reference in New Issue