0
0
Fork 0
haikuports/games-strategy/warmux/patches/warmux-11.0.4~git.patch

131 lines
3.7 KiB
Diff

--- a/lib/warmux/net/network.cpp
+++ b/lib/warmux/net/network.cpp
@@ -19,6 +19,7 @@
* Network layer for warmux.
*****************************************************************************/
+#include <sys/time.h>
#include <sys/types.h>
#include <iostream>
--- a/lib/warmux/tools/file_tools.cpp
+++ b/lib/warmux/tools/file_tools.cpp
@@ -88,7 +88,7 @@
if (subdir.size() != 0) {
// Create the directory if it doesn't exist
- if (MKDIR(subdir.c_str()) != 0 && errno != EEXIST)
+ if (!DoesFolderExist(subdir.c_str()) && MKDIR(subdir.c_str()) != 0 && errno != EEXIST)
return false;
}
pos = dir.find("/", pos+1);
@@ -277,6 +277,8 @@
struct dirent *file;
#ifdef __SYMBIAN32__
std::string dname;
+#elif __HAIKU__
+ struct stat st;
#endif
};
@@ -302,6 +304,9 @@
#ifdef __SYMBIAN32__
if (f->file->d_namlen && DoesFolderExist(f->dname+"/"+std::string(f->file->d_name))) {
+#elif __HAIKU__
+ stat(f->file->d_name, &f->st);
+ if (S_ISDIR(f->st.st_mode)) {
#else
if (f->file->d_type == DT_DIR) {
#endif
@@ -318,6 +323,8 @@
// This is a file and we do search for file
#ifdef __SYMBIAN32__
if (f->file->d_namlen && DoesFileExist(f->dname+"/"+std::string(f->file->d_name))) {
+#elif __HAIKU__
+ if (S_ISREG(f->st.st_mode)) {
#else
if (f->file->d_type == DT_REG) {
#endif
--- a/src/game/config.cpp
+++ b/src/game/config.cpp
@@ -37,6 +37,11 @@
# include <direct.h>
#endif
+#ifdef __HAIKU__
+# include <FindDirectory.h>
+# include <libgen.h>
+#endif
+
#include <WARMUX_file_tools.h>
#include <WARMUX_team_config.h>
@@ -201,7 +206,24 @@
personal_config_dir = GetHome() + PATH_SEPARATOR "Warmux" PATH_SEPARATOR;
personal_data_dir = personal_config_dir;
-#else //Neither WIN32, ANDROID or __APPLE__
+#elif __HAIKU__
+ char path[B_PATH_NAME_LENGTH];
+ find_path(B_APP_IMAGE_SYMBOL, B_FIND_PATH_DATA_DIRECTORY, "warmux/", path, B_PATH_NAME_LENGTH);
+ data_dir = path;
+
+# ifdef ENABLE_NLS
+ find_path(B_APP_IMAGE_SYMBOL, B_FIND_PATH_DATA_DIRECTORY, "locale/", path, B_PATH_NAME_LENGTH);
+ locale_dir = path;
+# endif
+
+ font_dir = data_dir + "font/";
+ ttf_filename = font_dir + basename(FONT_FILE);
+
+ find_directory(B_USER_SETTINGS_DIRECTORY, 0, false, path, B_PATH_NAME_LENGTH);
+ personal_config_dir = std::string(path) + "/warmux/";
+ personal_data_dir = data_dir;
+
+#else //Neither WIN32, ANDROID, __APPLE__ or __HAIKU__
data_dir = GetEnv(Constants::ENV_DATADIR, INSTALL_DATADIR);
# ifdef ENABLE_NLS
locale_dir = GetEnv(Constants::ENV_LOCALEDIR, INSTALL_LOCALEDIR);
@@ -393,6 +415,8 @@
m_default_config = GetDataDir() + "warmux_default_maemo_config.xml";
#elif __SYMBIAN32__
m_default_config = GetDataDir() + "warmux_default_symbian_config.xml";
+#elif __HAIKU__
+ m_default_config = personal_data_dir + "warmux_default_config.xml";
#else
m_default_config = GetDataDir() + "warmux_default_config.xml";
#endif
--- a/src/graphic/surface.cpp
+++ b/src/graphic/surface.cpp
@@ -25,6 +25,7 @@
#include <SDL_image.h>
#include <SDL_rotozoom.h>
#include <png.h>
+#include <zlib.h>
#include "graphic/surface.h"
#include "tool/math_tools.h"
--- a/src/interface/weapon_menu.cpp
+++ b/src/interface/weapon_menu.cpp
@@ -391,7 +391,7 @@
Weapon * WeaponsMenu::UpdateCurrentOverflyItem(const Polygon * poly)
{
if (!show)
- return false;
+ return NULL;
const std::vector<PolygonItem *>& items = poly->GetItem();
WeaponMenuItem * tmp;
Interface::GetInstance()->SetCurrentOverflyWeapon(NULL);
--- a/src/menu/network_teams_selection_box.cpp
+++ b/src/menu/network_teams_selection_box.cpp
@@ -114,6 +114,8 @@
result = "Android";
#elif defined(__SYMBIAN32__)
result = "Symbian";
+#elif defined(__HAIKU__)
+ result = "Haiku";
#else
result = getenv("USER");
#endif