2011-07-26 17:38:38 -07:00
|
|
|
#include "maplib.h"
|
|
|
|
|
|
|
|
void physfs_init(const char* binpath)
|
|
|
|
{
|
|
|
|
PHYSFS_init(binpath);
|
|
|
|
|
|
|
|
// Add cwd
|
|
|
|
PHYSFS_setWriteDir(".");
|
|
|
|
PHYSFS_mount(".", NULL, 1);
|
|
|
|
}
|
|
|
|
|
|
|
|
void physfs_shutdown()
|
|
|
|
{
|
|
|
|
PHYSFS_deinit();
|
|
|
|
}
|
|
|
|
|
|
|
|
char* physfs_addmappath(char *path)
|
|
|
|
{
|
|
|
|
char *p_path, *p_result;
|
|
|
|
char *result;
|
|
|
|
int length;
|
|
|
|
|
|
|
|
result = (char *)malloc(PATH_MAX * sizeof(char));
|
|
|
|
result[0] = '\0';
|
|
|
|
p_result = result;
|
|
|
|
|
|
|
|
length = strlen(path);
|
|
|
|
if (length >= 3 && strcmp(&path[length-3], ".wz")==0)
|
|
|
|
{
|
|
|
|
PHYSFS_mount(path, NULL, 1);
|
|
|
|
|
|
|
|
strcat(p_result, "multiplay/maps/");
|
|
|
|
p_result += strlen("multiplay/maps/");
|
|
|
|
|
|
|
|
p_path = strrchr(path, PHYSFS_getDirSeparator()[0]);
|
|
|
|
if (p_path)
|
|
|
|
{
|
|
|
|
// Remove the path
|
|
|
|
p_path++;
|
|
|
|
strcpy(p_result, p_path);
|
2011-07-27 17:43:41 -07:00
|
|
|
|
|
|
|
path[strlen(path) - strlen(result) - 1] = '\0';
|
|
|
|
PHYSFS_mount(path, NULL, 1);
|
2011-07-26 17:38:38 -07:00
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
strcpy(p_result, path);
|
|
|
|
}
|
|
|
|
|
|
|
|
// remove ".wz" from end
|
|
|
|
length = strlen(result);
|
|
|
|
result[length-3] = '\0';
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
if (PHYSFS_exists("multiplay/maps"))
|
|
|
|
{
|
|
|
|
strcat(p_result, "multiplay/maps/");
|
|
|
|
p_result += strlen("multiplay/maps/");
|
|
|
|
}
|
|
|
|
|
|
|
|
p_path = strrchr(path, PHYSFS_getDirSeparator()[0]);
|
|
|
|
if (p_path)
|
|
|
|
{
|
|
|
|
// Remove the path
|
|
|
|
p_path++;
|
|
|
|
strcpy(p_result, p_path);
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
strcpy(p_result, path);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
return result;
|
|
|
|
}
|
|
|
|
|
|
|
|
void physfs_printSearchPath()
|
|
|
|
{
|
|
|
|
char ** i, ** searchPath;
|
|
|
|
|
|
|
|
debug(0, "%s", "Search paths:");
|
|
|
|
searchPath = PHYSFS_getSearchPath();
|
|
|
|
for (i = searchPath; *i != NULL; i++)
|
|
|
|
{
|
|
|
|
debug(0, " [%s]", *i);
|
|
|
|
}
|
|
|
|
PHYSFS_freeList(searchPath);
|
|
|
|
}
|