From ffee5229b5c2158b984f273076910f855a3e74fd Mon Sep 17 00:00:00 2001 From: zsilencer Date: Fri, 2 Oct 2015 09:44:18 -0600 Subject: [PATCH] fix directories in linux --- build.sh | 30 +++++++-- build_g2.sh | 6 +- src/openrct2.c | 2 +- src/platform/linux.c | 23 +++---- src/platform/shared.c | 2 +- src/platform/windows.c | 2 +- src/rct2.c | 7 ++ src/rct2.h | 150 +++++++++++++---------------------------- 8 files changed, 98 insertions(+), 124 deletions(-) diff --git a/build.sh b/build.sh index 378ddf7dd6..1c7cc7784a 100755 --- a/build.sh +++ b/build.sh @@ -64,8 +64,20 @@ pushd build fi popd -if [[ ! -h openrct2.dll ]]; then - ln -s build/openrct2.dll openrct2.dll +if [[ $TARGET == "windows" ]]; then + if [[ ! -h openrct2.dll ]]; then + ln -s build/openrct2.dll openrct2.dll + fi +fi + +if [[ ! -h build/data ]]; then + ln -s ../data build/data +fi + +if [[ $TARGET == "linux" ]] || [[ $TARGET == "docker32" ]]; then + if [[ ! -h openrct2 ]]; then + ln -s build/openrct2 openrct2 + fi fi if [[ -z "$DISABLE_G2_BUILD" ]]; then @@ -73,8 +85,16 @@ if [[ -z "$DISABLE_G2_BUILD" ]]; then ./build_g2.sh > /dev/null 2>&1 fi -if [[ -t 1 ]]; then - echo -e "\nDone! Run OpenRCT2 by typing:\n\n\033[95mwine openrct2.exe\n\033[0m" +if [[ $TARGET == "windows" ]]; then + if [[ -t 1 ]]; then + echo -e "\nDone! Run OpenRCT2 by typing:\n\n\033[95mwine openrct2.exe\n\033[0m" + else + echo -e "\nDone! Run OpenRCT2 by typing:\n\nwine openrct2.exe\n" + fi else - echo -e "\nDone! Run OpenRCT2 by typing:\n\nwine openrct2.exe\n" + if [[ -t 1 ]]; then + echo -e "\nDone! Run OpenRCT2 by typing:\n\n\033[95m./openrct2\n\033[0m" + else + echo -e "\nDone! Run OpenRCT2 by typing:\n\n./openrct2\n" + fi fi diff --git a/build_g2.sh b/build_g2.sh index d870c40205..3d3a72b307 100755 --- a/build_g2.sh +++ b/build_g2.sh @@ -1,3 +1,7 @@ #!/bin/bash -wine openrct2.exe sprite build data/g2.dat resources/g2/ +if [[ $TARGET == "windows" ]]; then + wine openrct2.exe sprite build data/g2.dat resources/g2/ +else + ./openrct2 sprite build data/g2.dat resources/g2/ +fi diff --git a/src/openrct2.c b/src/openrct2.c index 6de7aeb621..7d4ce2d7b3 100644 --- a/src/openrct2.c +++ b/src/openrct2.c @@ -459,7 +459,7 @@ static bool openrct2_setup_rct2_segment() #ifdef __linux__ #define DATA_OFFSET 0x004A4000 - const char *exepath = "../openrct2.exe"; + const char *exepath = "openrct2.exe"; int fd = open(exepath, O_RDONLY); if (fd < 0) { log_fatal("failed to open %s, errno = %d", exepath, errno); diff --git a/src/platform/linux.c b/src/platform/linux.c index cb8b405004..bccad09470 100644 --- a/src/platform/linux.c +++ b/src/platform/linux.c @@ -128,7 +128,7 @@ bool platform_original_game_data_exists(const utf8 *path) buffer[len] = '\0'; free(wPath); char checkPath[MAX_PATH]; - sprintf(checkPath, "%s%c%s%c%s", buffer, platform_get_path_separator(), "data", platform_get_path_separator(), "g1.dat"); + sprintf(checkPath, "%s%c%s%c%s", buffer, platform_get_path_separator(), "Data", platform_get_path_separator(), "g1.dat"); return platform_file_exists(checkPath); } @@ -374,8 +374,11 @@ void platform_enumerate_files_end(int handle) static int dirfilter(const struct dirent *d) { + if (d->d_name[0] == '.') { + return 0; + } #ifdef _DIRENT_HAVE_D_TYPE - if (d->d_type != DT_DIR) + if (d->d_type == DT_DIR) { return 1; } else { @@ -510,7 +513,7 @@ int platform_get_drives(){ return GetLogicalDrives(); */ STUB(); - return 0xff; + return 0; } bool platform_file_copy(const utf8 *srcPath, const utf8 *dstPath, bool overwrite) @@ -664,16 +667,10 @@ uint16 platform_get_locale_language(){ } time_t platform_file_get_modified_time(const utf8* path){ - /* - WIN32_FILE_ATTRIBUTE_DATA data; - if (!GetFileAttributesEx(path, GetFileExInfoStandard, &data)) - return 0; - ULARGE_INTEGER ull; - ull.LowPart = data.ftLastWriteTime.dwLowDateTime; - ull.HighPart = data.ftLastWriteTime.dwHighDateTime; - return ull.QuadPart / 10000000ULL - 11644473600ULL; - */ - STUB(); + struct stat buf; + if (stat(path, &buf) == 0) { + return buf.st_mtime; + } return 100; } diff --git a/src/platform/shared.c b/src/platform/shared.c index fa8ffcbbf2..839322dc1e 100644 --- a/src/platform/shared.c +++ b/src/platform/shared.c @@ -931,4 +931,4 @@ void platform_set_cursor_position(int x, int y) unsigned int platform_get_ticks() { return SDL_GetTicks(); -} \ No newline at end of file +} diff --git a/src/platform/windows.c b/src/platform/windows.c index 653bef75ba..911d42475f 100644 --- a/src/platform/windows.c +++ b/src/platform/windows.c @@ -132,7 +132,7 @@ bool platform_directory_exists(const utf8 *path) bool platform_original_game_data_exists(const utf8 *path) { utf8 checkPath[MAX_PATH]; - sprintf(checkPath, "%s%c%s%c%s", path, platform_get_path_separator(), "data", platform_get_path_separator(), "g1.dat"); + sprintf(checkPath, "%s%c%s%c%s", path, platform_get_path_separator(), "Data", platform_get_path_separator(), "g1.dat"); return platform_file_exists(checkPath); } diff --git a/src/rct2.c b/src/rct2.c index be90027f05..f35b1b6b1a 100644 --- a/src/rct2.c +++ b/src/rct2.c @@ -449,8 +449,15 @@ const utf8 *get_file_path(int pathId) return path; } + char *pathp = path + strnlen(path, sizeof(path)); + strcat(path, file_paths[pathId]); + while (*pathp) { + if (*pathp == '\\') *pathp = platform_get_path_separator(); + pathp++; + } + return path; } diff --git a/src/rct2.h b/src/rct2.h index 669a2ec026..99abc0d0d1 100644 --- a/src/rct2.h +++ b/src/rct2.h @@ -206,111 +206,57 @@ enum { // rct2 @ 0x0097F67C static const char * const file_paths[] = { -#ifdef _WIN32 - "data\\g1.dat", - "Data\\PLUGIN.DAT", - "Data\\CSS1.DAT", - "Data\\CSS2.DAT", - "Data\\CSS4.DAT", - "Data\\CSS5.DAT", - "Data\\CSS6.DAT", - "Data\\CSS7.DAT", - "Data\\CSS8.DAT", - "Data\\CSS9.DAT", - "Data\\CSS11.DAT", - "Data\\CSS12.DAT", - "Data\\CSS13.DAT", - "Data\\CSS14.DAT", - "Data\\CSS15.DAT", - "Data\\CSS3.DAT", - "Data\\CSS17.DAT", - "Data\\CSS18.DAT", - "Data\\CSS19.DAT", - "Data\\CSS20.DAT", - "Data\\CSS21.DAT", - "Data\\CSS22.DAT", - "Saved Games\\scores.DAT", - "Data\\CSS23.DAT", - "Data\\CSS24.DAT", - "Data\\CSS25.DAT", - "Data\\CSS26.DAT", - "Data\\CSS27.DAT", - "Data\\CSS28.DAT", - "Data\\CSS29.DAT", - "Data\\CSS30.DAT", - "Data\\CSS31.DAT", - "Data\\CSS32.DAT", - "Data\\CSS33.DAT", - "Data\\CSS34.DAT", - "Data\\CSS35.DAT", - "Data\\CSS36.DAT", - "Data\\CSS37.DAT", - "Data\\CSS38.DAT", + "Data\\g1.dat", + "Data\\plugin.dat", + "Data\\css1.dat", + "Data\\css2.dat", + "Data\\css4.dat", + "Data\\css5.dat", + "Data\\css6.dat", + "Data\\css7.dat", + "Data\\css8.dat", + "Data\\css9.dat", + "Data\\css11.dat", + "Data\\css12.dat", + "Data\\css13.dat", + "Data\\css14.dat", + "Data\\css15.dat", + "Data\\css3.dat", + "Data\\css17.dat", + "Data\\css18.dat", + "Data\\css19.dat", + "Data\\css20.dat", + "Data\\css21.dat", + "Data\\css22.dat", + "Saved Games\\scores.dat", + "Data\\css23.dat", + "Data\\css24.dat", + "Data\\css25.dat", + "Data\\css26.dat", + "Data\\css27.dat", + "Data\\css28.dat", + "Data\\css29.dat", + "Data\\css30.dat", + "Data\\css31.dat", + "Data\\css32.dat", + "Data\\css33.dat", + "Data\\css34.dat", + "Data\\css35.dat", + "Data\\css36.dat", + "Data\\css37.dat", + "Data\\css38.dat", "Data\\CUSTOM1.WAV", "Data\\CUSTOM2.WAV", - "Data\\CSS39.DAT", - "Data\\CSS40.DAT", - "Data\\CSS41.DAT", + "Data\\css39.dat", + "Data\\css40.dat", + "Data\\css41.dat", "Scenarios\\Six Flags Magic Mountain.SC6", - "Data\\CSS42.DAT", - "Data\\CSS43.DAT", - "Data\\CSS44.DAT", - "Data\\CSS45.DAT", - "Data\\CSS46.DAT", - "Data\\CSS50.DAT" -#else - "data/g1.dat", - "data/plugin.dat", - "data/css1.dat", - "data/css2.dat", - "data/css4.dat", - "data/css5.dat", - "data/css6.dat", - "data/css7.dat", - "data/css8.dat", - "data/css9.dat", - "data/css11.dat", - "data/css12.dat", - "data/css13.dat", - "data/css14.dat", - "data/css15.dat", - "data/css3.dat", - "data/css17.dat", - "data/css18.dat", - "data/css19.dat", - "data/css20.dat", - "data/css21.dat", - "data/css22.dat", - "Saved Games/scores.dat", - "data/css23.dat", - "data/css24.dat", - "data/css25.dat", - "data/css26.dat", - "data/css27.dat", - "data/css28.dat", - "data/css29.dat", - "data/css30.dat", - "data/css31.dat", - "data/css32.dat", - "data/css33.dat", - "data/css34.dat", - "data/css35.dat", - "data/css36.dat", - "data/css37.dat", - "data/css38.dat", - "data/CUSTOM1.WAV", - "data/CUSTOM2.WAV", - "data/css39.dat", - "data/css40.dat", - "data/css41.dat", - "Scenarios/Six Flags Magic Mountain.SC6", - "data/css42.dat", - "data/css43.dat", - "data/css44.dat", - "data/css45.dat", - "data/css46.dat", - "data/css50.dat" -#endif // _WIN32 + "Data\\css42.dat", + "Data\\css43.dat", + "Data\\css44.dat", + "Data\\css45.dat", + "Data\\css46.dat", + "Data\\css50.dat" }; // Files to check (rct2 @ 0x0097FB5A)