X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;f=src%2Flibgame%2Fmisc.c;h=eda87185ec74990bc6ac9efbee0b648a93d82436;hb=7ecf99096c7c23909ada034e05d971464f66552f;hp=37aacf9187da13d46839f82cae07b629e357ac7e;hpb=ccbc62287e20cd3776b95980a77be3fee5ad7053;p=rocksndiamonds.git diff --git a/src/libgame/misc.c b/src/libgame/misc.c index 37aacf91..eda87185 100644 --- a/src/libgame/misc.c +++ b/src/libgame/misc.c @@ -441,7 +441,7 @@ unsigned int get_random_number(int nr, int max) /* system info functions */ /* ------------------------------------------------------------------------- */ -#if !defined(PLATFORM_MSDOS) +#if !defined(PLATFORM_MSDOS) && !defined(PLATFORM_ANDROID) static char *get_corrected_real_name(char *real_name) { char *real_name_new = checked_malloc(MAX_USERNAME_LEN + 1); @@ -1047,8 +1047,11 @@ void Error(int mode, char *format, ...) char *process_name = ""; #if defined(PLATFORM_ANDROID) - android_log_prio = (mode & ERR_WARN ? ANDROID_LOG_WARN : - mode & ERR_EXIT ? ANDROID_LOG_FATAL : ANDROID_LOG_INFO); + android_log_prio = (mode & ERR_DEBUG ? ANDROID_LOG_DEBUG : + mode & ERR_INFO ? ANDROID_LOG_INFO : + mode & ERR_WARN ? ANDROID_LOG_WARN : + mode & ERR_EXIT ? ANDROID_LOG_FATAL : + ANDROID_LOG_UNKNOWN); #endif #if 1 @@ -1450,7 +1453,9 @@ void translate_keyname(Key *keysym, char **x11name, char **name, int mode) { KSYM_End, "XK_End", "end" }, { KSYM_Page_Up, "XK_Page_Up", "page up" }, { KSYM_Page_Down, "XK_Page_Down", "page down" }, - { KSYM_Menu, "XK_Menu", "menu" }, /* Win-Menu */ + + { KSYM_Menu, "XK_Menu", "menu" }, /* menu key */ + { KSYM_Back, "XK_Back", "back" }, /* back key */ /* ASCII 0x20 to 0x40 keys (except numbers) */ { KSYM_space, "XK_space", "space" }, @@ -2087,7 +2092,7 @@ DirectoryEntry *readDirectory(Directory *dir) dir->dir_entry = checked_calloc(sizeof(DirectoryEntry)); dir->dir_entry->is_directory = FALSE; - if (line[strlen(line) - 1] = '/') + if (line[strlen(line) - 1] == '/') { dir->dir_entry->is_directory = TRUE; @@ -2141,23 +2146,53 @@ void freeDirectoryEntry(DirectoryEntry *dir_entry) /* functions for checking files and filenames */ /* ------------------------------------------------------------------------- */ +boolean directoryExists(char *dir_name) +{ + if (dir_name == NULL) + return FALSE; + + boolean success = (access(dir_name, F_OK) == 0); + +#if defined(PLATFORM_ANDROID) + if (!success) + { + // this might be an asset directory; check by trying to open toc file + char *asset_toc_filename = getPath2(dir_name, ASSET_TOC_BASENAME); + SDL_RWops *file = SDL_RWFromFile(asset_toc_filename, MODE_READ); + + checked_free(asset_toc_filename); + + success = (file != NULL); + + if (success) + SDL_RWclose(file); + } +#endif + + return success; +} + boolean fileExists(char *filename) { if (filename == NULL) return FALSE; + boolean success = (access(filename, F_OK) == 0); + #if defined(PLATFORM_ANDROID) - // workaround: check if file exists by opening and closing it - SDL_RWops *file = SDL_RWFromFile(filename, MODE_READ); - boolean success = (file != NULL); + if (!success) + { + // this might be an asset file; check by trying to open it + SDL_RWops *file = SDL_RWFromFile(filename, MODE_READ); - if (success) - SDL_RWclose(file); + success = (file != NULL); - return success; -#else - return (access(filename, F_OK) == 0); + if (success) + SDL_RWclose(file); + } #endif + + return success; } boolean fileHasPrefix(char *basename, char *prefix) @@ -2208,23 +2243,38 @@ boolean FileIsGraphic(char *filename) { char *basename = getBaseNamePtr(filename); +#if defined(TARGET_SDL) + return (!fileHasSuffix(basename, "txt") && + !fileHasSuffix(basename, "conf")); +#else return fileHasSuffix(basename, "pcx"); +#endif } boolean FileIsSound(char *filename) { char *basename = getBaseNamePtr(filename); +#if defined(TARGET_SDL) + return (!fileHasSuffix(basename, "txt") && + !fileHasSuffix(basename, "conf")); +#else return fileHasSuffix(basename, "wav"); +#endif } boolean FileIsMusic(char *filename) { char *basename = getBaseNamePtr(filename); +#if defined(TARGET_SDL) + return (!fileHasSuffix(basename, "txt") && + !fileHasSuffix(basename, "conf")); +#else if (FileIsSound(basename)) return TRUE; +#if 0 #if defined(TARGET_SDL) if ((fileHasPrefix(basename, "mod") && !fileHasSuffix(basename, "txt")) || fileHasSuffix(basename, "mod") || @@ -2236,9 +2286,11 @@ boolean FileIsMusic(char *filename) fileHasSuffix(basename, "mp3") || fileHasSuffix(basename, "ogg")) return TRUE; +#endif #endif return FALSE; +#endif } boolean FileIsArtworkType(char *basename, int type) @@ -2496,10 +2548,13 @@ struct FileInfo *getFileListFromConfigList(struct ConfigInfo *config_list, } list_pos = 0; + for (i = 0; config_list[i].token != NULL; i++) { int len_config_token = strlen(config_list[i].token); +#if 0 int len_config_value = strlen(config_list[i].value); +#endif boolean is_file_entry = TRUE; for (j = 0; suffix_list[j].token != NULL; j++) @@ -2514,6 +2569,7 @@ struct FileInfo *getFileListFromConfigList(struct ConfigInfo *config_list, config_list[i].value); is_file_entry = FALSE; + break; } } @@ -2531,6 +2587,7 @@ struct FileInfo *getFileListFromConfigList(struct ConfigInfo *config_list, if (list_pos >= num_file_list_entries) break; +#if 0 /* simple sanity check if this is really a file definition */ if (!strEqual(&config_list[i].value[len_config_value - 4], ".pcx") && !strEqual(&config_list[i].value[len_config_value - 4], ".wav") && @@ -2540,6 +2597,7 @@ struct FileInfo *getFileListFromConfigList(struct ConfigInfo *config_list, config_list[i].token, config_list[i].value); Error(ERR_EXIT, "This seems to be no valid definition -- please fix"); } +#endif file_list[list_pos].token = config_list[i].token; file_list[list_pos].default_filename = config_list[i].value; @@ -3524,7 +3582,7 @@ void debug_print_timestamp(int counter_nr, char *message) if (message) #if 1 - Error(ERR_INFO, "%s%s%s %.3f %s", + Error(ERR_DEBUG, "%s%s%s %.3f %s", #else printf("%s%s%s %.3f %s\n", #endif