X-Git-Url: https://git.artsoft.org/?p=rocksndiamonds.git;a=blobdiff_plain;f=src%2Flibgame%2Fmisc.c;h=6fe6949b45e3adc687938977ee4248b491449d5e;hp=9fc0cf0405cfb3bdc3e6e4308e1ddf43bfd2c092;hb=bcb3453f710b95ec98b188b95574bea9ab336e96;hpb=41e8d55b767c898f20c29a1b0b8d2ef8840be2f5 diff --git a/src/libgame/misc.c b/src/libgame/misc.c index 9fc0cf04..6fe6949b 100644 --- a/src/libgame/misc.c +++ b/src/libgame/misc.c @@ -584,6 +584,23 @@ void GetOptions(char *argv[]) } } +/* used by SetError() and GetError() to store internal error messages */ +static char internal_error[1024]; /* this is bad */ + +void SetError(char *format, ...) +{ + va_list ap; + + va_start(ap, format); + vsprintf(internal_error, format, ap); + va_end(ap); +} + +char *GetError() +{ + return internal_error; +} + void Error(int mode, char *format, ...) { char *process_name = ""; @@ -801,7 +818,8 @@ void WriteUnusedBytesToFile(FILE *file, unsigned long bytes) #define TRANSLATE_KEYSYM_TO_KEYNAME 0 #define TRANSLATE_KEYSYM_TO_X11KEYNAME 1 -#define TRANSLATE_X11KEYNAME_TO_KEYSYM 2 +#define TRANSLATE_KEYNAME_TO_KEYSYM 2 +#define TRANSLATE_X11KEYNAME_TO_KEYSYM 3 void translate_keyname(Key *keysym, char **x11name, char **name, int mode) { @@ -988,6 +1006,26 @@ void translate_keyname(Key *keysym, char **x11name, char **name, int mode) *x11name = name_buffer; } + else if (mode == TRANSLATE_KEYNAME_TO_KEYSYM) + { + Key key = KSYM_UNDEFINED; + + i = 0; + do + { + if (strcmp(translate_key[i].name, *name) == 0) + { + key = translate_key[i].key; + break; + } + } + while (translate_key[++i].x11name); + + if (key == KSYM_UNDEFINED) + Error(ERR_WARN, "getKeyFromKeyName(): not completely implemented"); + + *keysym = key; + } else if (mode == TRANSLATE_X11KEYNAME_TO_KEYSYM) { Key key = KSYM_UNDEFINED; @@ -1089,6 +1127,14 @@ char *getX11KeyNameFromKey(Key key) return x11name; } +Key getKeyFromKeyName(char *name) +{ + Key key; + + translate_keyname(&key, NULL, &name, TRANSLATE_KEYNAME_TO_KEYSYM); + return key; +} + Key getKeyFromX11KeyName(char *x11name) { Key key; @@ -1113,6 +1159,40 @@ char getCharFromKey(Key key) } +/* ========================================================================= */ +/* functions for checking filenames */ +/* ========================================================================= */ + +boolean FileIsGraphic(char *filename) +{ + if (strlen(filename) > 4 && + strcmp(&filename[strlen(filename) - 4], ".pcx") == 0) + return TRUE; + + return FALSE; +} + +boolean FileIsSound(char *filename) +{ + if (strlen(filename) > 4 && + strcmp(&filename[strlen(filename) - 4], ".wav") == 0) + return TRUE; + + return FALSE; +} + +boolean FileIsMusic(char *filename) +{ + if (strlen(filename) > 4 && + (strcmp(&filename[strlen(filename) - 4], ".mod") == 0 || + strcmp(&filename[strlen(filename) - 4], ".MOD") == 0 || + strncmp(filename, "mod.", 4) == 0 || + strncmp(filename, "MOD.", 4) == 0)) + return TRUE; + + return FALSE; +} + /* ========================================================================= */ /* functions only needed for non-Unix (non-command-line) systems */ /* ========================================================================= */