mirror of
https://github.com/yquake2/yquake2remaster.git
synced 2024-11-23 13:02:07 +00:00
Introduce a wrapper Q_fopen() and replace fopen() with it.
On Unix platforms unicode is implemented through UTF-8 which is transparent for applications. But on Windows a UTF-16 dialect is used which needs alteration at application side. This wrapper is another step to unicode support on Windows, now we can replace fopen() by a function that converts our internal UTF-8 pathes to Windows UTF-16 dialect. This is a noop for Unix platforms. The Windows build is broken, the compiler errors out in shared.h. This will be fixed in a later commit. Caveats: * fopen() calls in 3rd party code (std_* and unzip) are not replaced. This may become a problem. We need to check that. * In the Unix specific code fopen() isn't replaced since it's not necessayry.
This commit is contained in:
parent
bcb7364507
commit
37ea3e1d58
15 changed files with 38 additions and 28 deletions
|
@ -284,7 +284,7 @@ void VID_WriteScreenshot( int width, int height, int comp, const void* data )
|
||||||
{
|
{
|
||||||
FILE *f;
|
FILE *f;
|
||||||
Com_sprintf(checkname, sizeof(checkname), "%s/scrnshot/q2_%04d.%s", gameDir, i, supportedFormats[format]);
|
Com_sprintf(checkname, sizeof(checkname), "%s/scrnshot/q2_%04d.%s", gameDir, i, supportedFormats[format]);
|
||||||
f = fopen(checkname, "rb");
|
f = Q_fopen(checkname, "rb");
|
||||||
|
|
||||||
if (!f)
|
if (!f)
|
||||||
{
|
{
|
||||||
|
|
|
@ -165,7 +165,7 @@ Con_Dump_f(void)
|
||||||
|
|
||||||
Com_Printf("Dumped console text to %s.\n", name);
|
Com_Printf("Dumped console text to %s.\n", name);
|
||||||
FS_CreatePath(name);
|
FS_CreatePath(name);
|
||||||
f = fopen(name, "w");
|
f = Q_fopen(name, "w");
|
||||||
|
|
||||||
if (!f)
|
if (!f)
|
||||||
{
|
{
|
||||||
|
|
|
@ -477,7 +477,7 @@ CL_CheckOrDownloadFile(char *filename)
|
||||||
not opened yet */
|
not opened yet */
|
||||||
CL_DownloadFileName(name, sizeof(name), cls.downloadtempname);
|
CL_DownloadFileName(name, sizeof(name), cls.downloadtempname);
|
||||||
|
|
||||||
fp = fopen(name, "r+b");
|
fp = Q_fopen(name, "r+b");
|
||||||
|
|
||||||
if (fp)
|
if (fp)
|
||||||
{
|
{
|
||||||
|
@ -587,7 +587,7 @@ CL_ParseDownload(void)
|
||||||
|
|
||||||
FS_CreatePath(name);
|
FS_CreatePath(name);
|
||||||
|
|
||||||
cls.download = fopen(name, "wb");
|
cls.download = Q_fopen(name, "wb");
|
||||||
|
|
||||||
if (!cls.download)
|
if (!cls.download)
|
||||||
{
|
{
|
||||||
|
|
|
@ -837,7 +837,7 @@ Key_WriteConsoleHistory()
|
||||||
Com_sprintf(path, sizeof(path), "%sconsole_history.txt", Sys_GetHomeDir());
|
Com_sprintf(path, sizeof(path), "%sconsole_history.txt", Sys_GetHomeDir());
|
||||||
}
|
}
|
||||||
|
|
||||||
FILE* f = fopen(path, "w");
|
FILE* f = Q_fopen(path, "w");
|
||||||
|
|
||||||
if(f==NULL)
|
if(f==NULL)
|
||||||
{
|
{
|
||||||
|
@ -884,7 +884,7 @@ Key_ReadConsoleHistory()
|
||||||
Com_sprintf(path, sizeof(path), "%sconsole_history.txt", Sys_GetHomeDir());
|
Com_sprintf(path, sizeof(path), "%sconsole_history.txt", Sys_GetHomeDir());
|
||||||
}
|
}
|
||||||
|
|
||||||
FILE* f = fopen(path, "r");
|
FILE* f = Q_fopen(path, "r");
|
||||||
if(f==NULL)
|
if(f==NULL)
|
||||||
{
|
{
|
||||||
Com_DPrintf("Opening console history %s for reading failed!\n", path);
|
Com_DPrintf("Opening console history %s for reading failed!\n", path);
|
||||||
|
|
|
@ -178,7 +178,7 @@ CL_Record_f(void)
|
||||||
|
|
||||||
Com_Printf("recording to %s.\n", name);
|
Com_Printf("recording to %s.\n", name);
|
||||||
FS_CreatePath(name);
|
FS_CreatePath(name);
|
||||||
cls.demofile = fopen(name, "wb");
|
cls.demofile = Q_fopen(name, "wb");
|
||||||
|
|
||||||
if (!cls.demofile)
|
if (!cls.demofile)
|
||||||
{
|
{
|
||||||
|
@ -604,7 +604,7 @@ CL_WriteConfiguration(void)
|
||||||
|
|
||||||
Com_sprintf(path, sizeof(path), "%s/config.cfg", FS_Gamedir());
|
Com_sprintf(path, sizeof(path), "%s/config.cfg", FS_Gamedir());
|
||||||
|
|
||||||
f = fopen(path, "w");
|
f = Q_fopen(path, "w");
|
||||||
|
|
||||||
if (!f)
|
if (!f)
|
||||||
{
|
{
|
||||||
|
|
|
@ -144,12 +144,12 @@ Com_VPrintf(int print_level, const char *fmt, va_list argptr)
|
||||||
|
|
||||||
if (logfile_active->value > 2)
|
if (logfile_active->value > 2)
|
||||||
{
|
{
|
||||||
logfile = fopen(name, "a");
|
logfile = Q_fopen(name, "a");
|
||||||
}
|
}
|
||||||
|
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
logfile = fopen(name, "w");
|
logfile = Q_fopen(name, "w");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -501,7 +501,7 @@ Cvar_WriteVariables(char *path)
|
||||||
char buffer[1024];
|
char buffer[1024];
|
||||||
FILE *f;
|
FILE *f;
|
||||||
|
|
||||||
f = fopen(path, "a");
|
f = Q_fopen(path, "a");
|
||||||
|
|
||||||
for (var = cvar_vars; var; var = var->next)
|
for (var = cvar_vars; var; var = var->next)
|
||||||
{
|
{
|
||||||
|
|
|
@ -389,7 +389,7 @@ FS_FOpenFile(const char *name, fileHandle_t *f, qboolean gamedir_only)
|
||||||
{
|
{
|
||||||
/* PAK */
|
/* PAK */
|
||||||
file_from_pak = true;
|
file_from_pak = true;
|
||||||
handle->file = fopen(pack->name, "rb");
|
handle->file = Q_fopen(pack->name, "rb");
|
||||||
|
|
||||||
if (handle->file)
|
if (handle->file)
|
||||||
{
|
{
|
||||||
|
@ -428,12 +428,12 @@ FS_FOpenFile(const char *name, fileHandle_t *f, qboolean gamedir_only)
|
||||||
/* Search in a directory tree. */
|
/* Search in a directory tree. */
|
||||||
Com_sprintf(path, sizeof(path), "%s/%s", search->path, handle->name);
|
Com_sprintf(path, sizeof(path), "%s/%s", search->path, handle->name);
|
||||||
|
|
||||||
handle->file = fopen(path, "rb");
|
handle->file = Q_fopen(path, "rb");
|
||||||
|
|
||||||
if (!handle->file)
|
if (!handle->file)
|
||||||
{
|
{
|
||||||
Q_strlwr(path);
|
Q_strlwr(path);
|
||||||
handle->file = fopen(path, "rb");
|
handle->file = Q_fopen(path, "rb");
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!handle->file)
|
if (!handle->file)
|
||||||
|
@ -668,7 +668,7 @@ FS_LoadPAK(const char *packPath)
|
||||||
dpackheader_t header; /* PAK file header. */
|
dpackheader_t header; /* PAK file header. */
|
||||||
dpackfile_t info[MAX_FILES_IN_PACK]; /* PAK info. */
|
dpackfile_t info[MAX_FILES_IN_PACK]; /* PAK info. */
|
||||||
|
|
||||||
handle = fopen(packPath, "rb");
|
handle = Q_fopen(packPath, "rb");
|
||||||
|
|
||||||
if (handle == NULL)
|
if (handle == NULL)
|
||||||
{
|
{
|
||||||
|
|
|
@ -342,7 +342,7 @@ Qcommon_Frame(int msec)
|
||||||
log_stats_file = 0;
|
log_stats_file = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
log_stats_file = fopen("stats.log", "w");
|
log_stats_file = Q_fopen("stats.log", "w");
|
||||||
|
|
||||||
if (log_stats_file)
|
if (log_stats_file)
|
||||||
{
|
{
|
||||||
|
|
|
@ -254,6 +254,16 @@ int Q_strlcat(char *dst, const char *src, int size);
|
||||||
|
|
||||||
/* ============================================= */
|
/* ============================================= */
|
||||||
|
|
||||||
|
/* Unicode wrappers around fopen(). */
|
||||||
|
|
||||||
|
#ifdef _WIN32
|
||||||
|
#error "Not implemented yet"
|
||||||
|
#else
|
||||||
|
#define Q_fopen(file, mode) fopen(file, mode)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* ============================================= */
|
||||||
|
|
||||||
short BigShort(short l);
|
short BigShort(short l);
|
||||||
short LittleShort(short l);
|
short LittleShort(short l);
|
||||||
int BigLong(int l);
|
int BigLong(int l);
|
||||||
|
|
|
@ -293,7 +293,7 @@ SVCmd_WriteIP_f(void)
|
||||||
|
|
||||||
gi.cprintf(NULL, PRINT_HIGH, "Writing %s.\n", name);
|
gi.cprintf(NULL, PRINT_HIGH, "Writing %s.\n", name);
|
||||||
|
|
||||||
f = fopen(name, "wb");
|
f = Q_fopen(name, "wb");
|
||||||
|
|
||||||
if (!f)
|
if (!f)
|
||||||
{
|
{
|
||||||
|
|
|
@ -772,7 +772,7 @@ WriteGame(const char *filename, qboolean autosave)
|
||||||
SaveClientData();
|
SaveClientData();
|
||||||
}
|
}
|
||||||
|
|
||||||
f = fopen(filename, "wb");
|
f = Q_fopen(filename, "wb");
|
||||||
|
|
||||||
if (!f)
|
if (!f)
|
||||||
{
|
{
|
||||||
|
@ -824,7 +824,7 @@ ReadGame(const char *filename)
|
||||||
|
|
||||||
gi.FreeTags(TAG_GAME);
|
gi.FreeTags(TAG_GAME);
|
||||||
|
|
||||||
f = fopen(filename, "rb");
|
f = Q_fopen(filename, "rb");
|
||||||
|
|
||||||
if (!f)
|
if (!f)
|
||||||
{
|
{
|
||||||
|
@ -980,7 +980,7 @@ WriteLevel(const char *filename)
|
||||||
edict_t *ent;
|
edict_t *ent;
|
||||||
FILE *f;
|
FILE *f;
|
||||||
|
|
||||||
f = fopen(filename, "wb");
|
f = Q_fopen(filename, "wb");
|
||||||
|
|
||||||
if (!f)
|
if (!f)
|
||||||
{
|
{
|
||||||
|
@ -1071,7 +1071,7 @@ ReadLevel(const char *filename)
|
||||||
int i;
|
int i;
|
||||||
edict_t *ent;
|
edict_t *ent;
|
||||||
|
|
||||||
f = fopen(filename, "rb");
|
f = Q_fopen(filename, "rb");
|
||||||
|
|
||||||
if (!f)
|
if (!f)
|
||||||
{
|
{
|
||||||
|
|
|
@ -509,7 +509,7 @@ SV_ServerRecord_f(void)
|
||||||
|
|
||||||
Com_Printf("recording to %s.\n", name);
|
Com_Printf("recording to %s.\n", name);
|
||||||
FS_CreatePath(name);
|
FS_CreatePath(name);
|
||||||
svs.demofile = fopen(name, "wb");
|
svs.demofile = Q_fopen(name, "wb");
|
||||||
|
|
||||||
if (!svs.demofile)
|
if (!svs.demofile)
|
||||||
{
|
{
|
||||||
|
|
|
@ -141,7 +141,7 @@ SV_CheckForSavegame(void)
|
||||||
|
|
||||||
Com_sprintf(name, sizeof(name), "%s/save/current/%s.sav",
|
Com_sprintf(name, sizeof(name), "%s/save/current/%s.sav",
|
||||||
FS_Gamedir(), sv.name);
|
FS_Gamedir(), sv.name);
|
||||||
f = fopen(name, "rb");
|
f = Q_fopen(name, "rb");
|
||||||
|
|
||||||
if (!f)
|
if (!f)
|
||||||
{
|
{
|
||||||
|
|
|
@ -80,14 +80,14 @@ CopyFile(char *src, char *dst)
|
||||||
|
|
||||||
Com_DPrintf("CopyFile (%s, %s)\n", src, dst);
|
Com_DPrintf("CopyFile (%s, %s)\n", src, dst);
|
||||||
|
|
||||||
f1 = fopen(src, "rb");
|
f1 = Q_fopen(src, "rb");
|
||||||
|
|
||||||
if (!f1)
|
if (!f1)
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
f2 = fopen(dst, "wb");
|
f2 = Q_fopen(dst, "wb");
|
||||||
|
|
||||||
if (!f2)
|
if (!f2)
|
||||||
{
|
{
|
||||||
|
@ -168,7 +168,7 @@ SV_WriteLevelFile(void)
|
||||||
|
|
||||||
Com_sprintf(name, sizeof(name), "%s/save/current/%s.sv2",
|
Com_sprintf(name, sizeof(name), "%s/save/current/%s.sv2",
|
||||||
FS_Gamedir(), sv.name);
|
FS_Gamedir(), sv.name);
|
||||||
f = fopen(name, "wb");
|
f = Q_fopen(name, "wb");
|
||||||
|
|
||||||
if (!f)
|
if (!f)
|
||||||
{
|
{
|
||||||
|
@ -224,7 +224,7 @@ SV_WriteServerFile(qboolean autosave)
|
||||||
Com_DPrintf("SV_WriteServerFile(%s)\n", autosave ? "true" : "false");
|
Com_DPrintf("SV_WriteServerFile(%s)\n", autosave ? "true" : "false");
|
||||||
|
|
||||||
Com_sprintf(name, sizeof(name), "%s/save/current/server.ssv", FS_Gamedir());
|
Com_sprintf(name, sizeof(name), "%s/save/current/server.ssv", FS_Gamedir());
|
||||||
f = fopen(name, "wb");
|
f = Q_fopen(name, "wb");
|
||||||
|
|
||||||
if (!f)
|
if (!f)
|
||||||
{
|
{
|
||||||
|
@ -367,7 +367,7 @@ SV_Loadgame_f(void)
|
||||||
/* make sure the server.ssv file exists */
|
/* make sure the server.ssv file exists */
|
||||||
Com_sprintf(name, sizeof(name), "%s/save/%s/server.ssv",
|
Com_sprintf(name, sizeof(name), "%s/save/%s/server.ssv",
|
||||||
FS_Gamedir(), Cmd_Argv(1));
|
FS_Gamedir(), Cmd_Argv(1));
|
||||||
f = fopen(name, "rb");
|
f = Q_fopen(name, "rb");
|
||||||
|
|
||||||
if (!f)
|
if (!f)
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in a new issue