X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;f=src%2Fmisc.c;h=fd85aeddac9e433635bff3586077c11e6fa5ad2f;hb=fd18ece8535cd87bd72989d7d39092d55b283939;hp=63ca326e24787b5aa8fbb9cb934f7761480930c7;hpb=57bbc28786e5cc6c531b53ef5e29512b1e0b73e8;p=rocksndiamonds.git diff --git a/src/misc.c b/src/misc.c index 63ca326e..fd85aedd 100644 --- a/src/misc.c +++ b/src/misc.c @@ -235,12 +235,49 @@ char *getLoginName() { struct passwd *pwd; - if (!(pwd = getpwuid(getuid()))) - return "ANONYMOUS"; + if ((pwd = getpwuid(getuid())) == NULL) + return ANONYMOUS_NAME; else return pwd->pw_name; } +char *getRealName() +{ +#ifndef MSDOS + struct passwd *pwd; + + if ((pwd = getpwuid(getuid())) == NULL || strlen(pwd->pw_gecos) == 0) + return ANONYMOUS_NAME; + else + { + static char real_name[1024]; + char *from_ptr = pwd->pw_gecos, *to_ptr = real_name; + + if (strchr(pwd->pw_gecos, 'ß') == NULL) + return pwd->pw_gecos; + + /* the user's real name contains a 'ß' character (german sharp s), + which has no equivalent in upper case letters (which our fonts use) */ + while (*from_ptr != '\0' && (long)(to_ptr - real_name) < 1024 - 2) + { + if (*from_ptr != 'ß') + *to_ptr++ = *from_ptr++; + else + { + from_ptr++; + *to_ptr++ = 's'; + *to_ptr++ = 's'; + } + } + *to_ptr = '\0'; + + return real_name; + } +#else + return ANONYMOUS_NAME; +#endif +} + char *getHomeDir() { #ifndef MSDOS @@ -621,9 +658,9 @@ void translate_keyname(KeySym *keysym, char **x11name, char **name, int mode) { XK_slash, "XK_slash", "/" }, { XK_colon, "XK_colon", ":" }, { XK_semicolon, "XK_semicolon", ";" }, - { XK_less, "XK_less", "less" }, - { XK_equal, "XK_equal", "equal" }, - { XK_greater, "XK_greater", "greater" }, + { XK_less, "XK_less", "<" }, + { XK_equal, "XK_equal", "=" }, + { XK_greater, "XK_greater", ">" }, { XK_question, "XK_question", "?" }, { XK_at, "XK_at", "@" }, @@ -847,12 +884,8 @@ char getCharFromKeySym(KeySym keysym) letter = keyname[0]; else if (strcmp(keyname, "space") == 0) letter = ' '; - else if (strcmp(keyname, "less") == 0) - letter = '<'; - else if (strcmp(keyname, "equal") == 0) - letter = '='; - else if (strcmp(keyname, "greater") == 0) - letter = '>'; + else if (strcmp(keyname, "circumflex") == 0) + letter = '^'; return letter; }