X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;f=src%2Flibgame%2Fmisc.c;h=7c2f4353851cb803d8dc8bd43fd1474e65711df8;hb=959794cfda1f83edc51512211ae5a9f6b1e0b179;hp=8114d79e40b82fb59325a2882cbd2afc2f5d3762;hpb=b06464b4dc26c0e31ef0bca48b31a4dfbdd549e6;p=rocksndiamonds.git diff --git a/src/libgame/misc.c b/src/libgame/misc.c index 8114d79e..7c2f4353 100644 --- a/src/libgame/misc.c +++ b/src/libgame/misc.c @@ -223,18 +223,6 @@ boolean getTokenValueFromString(char *string, char **token, char **value) /* counter functions */ /* ------------------------------------------------------------------------- */ -#if defined(PLATFORM_MSDOS) -volatile unsigned int counter = 0; - -void increment_counter() -{ - counter++; -} - -END_OF_FUNCTION(increment_counter); -#endif - - /* maximal allowed length of a command line option */ #define MAX_OPTION_LEN 256 @@ -323,22 +311,12 @@ static unsigned int mainCounter(int mode) void InitCounter() /* set counter back to zero */ { -#if !defined(PLATFORM_MSDOS) mainCounter(INIT_COUNTER); -#else - LOCK_VARIABLE(counter); - LOCK_FUNCTION(increment_counter); - install_int_ex(increment_counter, BPS_TO_TIMER(100)); -#endif } unsigned int Counter() /* get milliseconds since last call of InitCounter() */ { -#if !defined(PLATFORM_MSDOS) return mainCounter(READ_COUNTER); -#else - return (counter * 10); -#endif } static void sleep_milliseconds(unsigned int milliseconds_delay) @@ -474,7 +452,7 @@ unsigned int get_random_number(int nr, int max) /* system info functions */ /* ------------------------------------------------------------------------- */ -#if !defined(PLATFORM_MSDOS) && !defined(PLATFORM_ANDROID) +#if !defined(PLATFORM_ANDROID) static char *get_corrected_real_name(char *real_name) { char *real_name_new = checked_malloc(MAX_USERNAME_LEN + 1); @@ -708,7 +686,7 @@ char *getPath3(char *path1, char *path2, char *path3) return getStringCat3WithSeparator(path1, path2, path3, STRING_PATH_SEPARATOR); } -char *getStringCopy(char *s) +char *getStringCopy(const char *s) { char *s_copy; @@ -721,7 +699,7 @@ char *getStringCopy(char *s) return s_copy; } -char *getStringCopyN(char *s, int n) +char *getStringCopyN(const char *s, int n) { char *s_copy; int s_len = MAX(0, n); @@ -736,7 +714,18 @@ char *getStringCopyN(char *s, int n) return s_copy; } -char *getStringToLower(char *s) +char *getStringCopyNStatic(const char *s, int n) +{ + static char *s_copy = NULL; + + checked_free(s_copy); + + s_copy = getStringCopyN(s, n); + + return s_copy; +} + +char *getStringToLower(const char *s) { char *s_copy = checked_malloc(strlen(s) + 1); char *s_ptr = s_copy; @@ -1057,15 +1046,17 @@ void GetOptions(char *argv[], void (*print_usage_function)(void)) /* error handling functions */ /* ------------------------------------------------------------------------- */ +#define MAX_INTERNAL_ERROR_SIZE 1024 + /* used by SetError() and GetError() to store internal error messages */ -static char internal_error[1024]; /* this is bad */ +static char internal_error[MAX_INTERNAL_ERROR_SIZE]; void SetError(char *format, ...) { va_list ap; va_start(ap, format); - vsprintf(internal_error, format, ap); + vsnprintf(internal_error, MAX_INTERNAL_ERROR_SIZE, format, ap); va_end(ap); } @@ -1664,6 +1655,9 @@ void translate_keyname(Key *keysym, char **x11name, char **name, int mode) { KSYM_odiaeresis, "XK_odiaeresis", "\xc3\xb6" }, { KSYM_udiaeresis, "XK_udiaeresis", "\xc3\xbc" }, { KSYM_ssharp, "XK_ssharp", "\xc3\x9f" }, + + /* other keys (for reverse mapping only) */ + { KSYM_space, "XK_space", " " }, #endif #if defined(TARGET_SDL2) @@ -2493,13 +2487,22 @@ boolean fileHasSuffix(char *basename, char *suffix) return FALSE; } +#if defined(TARGET_SDL) +static boolean FileCouldBeArtwork(char *basename) +{ + return (!strEqual(basename, ".") && + !strEqual(basename, "..") && + !fileHasSuffix(basename, "txt") && + !fileHasSuffix(basename, "conf")); +} +#endif + boolean FileIsGraphic(char *filename) { char *basename = getBaseNamePtr(filename); #if defined(TARGET_SDL) - return (!fileHasSuffix(basename, "txt") && - !fileHasSuffix(basename, "conf")); + return FileCouldBeArtwork(basename); #else return fileHasSuffix(basename, "pcx"); #endif @@ -2510,8 +2513,7 @@ boolean FileIsSound(char *filename) char *basename = getBaseNamePtr(filename); #if defined(TARGET_SDL) - return (!fileHasSuffix(basename, "txt") && - !fileHasSuffix(basename, "conf")); + return FileCouldBeArtwork(basename); #else return fileHasSuffix(basename, "wav"); #endif @@ -2522,8 +2524,7 @@ boolean FileIsMusic(char *filename) char *basename = getBaseNamePtr(filename); #if defined(TARGET_SDL) - return (!fileHasSuffix(basename, "txt") && - !fileHasSuffix(basename, "conf")); + return FileCouldBeArtwork(basename); #else if (FileIsSound(basename)) return TRUE;