# include <direct.h>
# include <io.h>
# include <shlobj.h>
+# include <sys/stat.h>
+# include <share.h>
#else
# include <pwd.h>
# include <sys/stat.h>
# define lseek _lseeki64
#endif
-#if _MSC_VER >= 1400
// suppress deprecated warnings
-# include <sys/stat.h>
-# include <share.h>
+#if _MSC_VER >= 1400
# define read _read
# define write _write
# define close _close
static void FS_ListGameDirs(void)
{
stringlist_t list, list2;
- int i, j;
+ int i;
const char *info;
char vabuf[1024];
continue;
if(!*info)
continue;
- strlcpy(fs_all_gamedirs[fs_all_gamedirs_count].name, list2.strings[i], sizeof(fs_all_gamedirs[j].name));
- strlcpy(fs_all_gamedirs[fs_all_gamedirs_count].description, info, sizeof(fs_all_gamedirs[j].description));
+ strlcpy(fs_all_gamedirs[fs_all_gamedirs_count].name, list2.strings[i], sizeof(fs_all_gamedirs[fs_all_gamedirs_count].name));
+ strlcpy(fs_all_gamedirs[fs_all_gamedirs_count].description, info, sizeof(fs_all_gamedirs[fs_all_gamedirs_count].description));
++fs_all_gamedirs_count;
}
}
p = buf;
while(COM_ParseToken_Console(&p))
{
+ size_t sz = strlen(com_token) + 1; // shut up clang
if(i >= args_left)
break;
- q = (char *)Mem_Alloc(fs_mempool, strlen(com_token) + 1);
- strlcpy(q, com_token, strlen(com_token) + 1);
+ q = (char *)Mem_Alloc(fs_mempool, sz);
+ strlcpy(q, com_token, sz);
new_argv[com_argc + i] = q;
++i;
}
if (nonblocking)
opt |= O_NONBLOCK;
+ if(COM_CheckParm("-readonly") && mod != O_RDONLY)
+ return -1;
+
#ifdef WIN32
# if _MSC_VER >= 1400
_sopen_s(&handle, filepath, mod | opt, (dolock ? ((mod == O_RDONLY) ? _SH_DENYRD : _SH_DENYRW) : _SH_DENYNO), _S_IREAD | _S_IWRITE);
void FS_mkdir (const char *path)
{
+ if(COM_CheckParm("-readonly"))
+ return;
+
#if WIN32
_mkdir (path);
#else