X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;f=src%2Fmisc.c;h=9aec199e92e8a442a56922fdcb7c080a14776317;hb=f941ccddee3065d7531298e37ad4dcfcd892c1f8;hp=c3e5b205eaa0e83837b2ed5b13d5bf4db5000d71;hpb=ed4b7eed89c292042403561e1ed1449e60888b45;p=rocksndiamonds.git diff --git a/src/misc.c b/src/misc.c index c3e5b205..9aec199e 100644 --- a/src/misc.c +++ b/src/misc.c @@ -235,12 +235,45 @@ 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() +{ + 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; + } +} + char *getHomeDir() { #ifndef MSDOS