rnd-19990205-1
[rocksndiamonds.git] / src / misc.c
index e917e13be6126ca7d1332a670a029b111494b437..fd85aeddac9e433635bff3586077c11e6fa5ad2f 100644 (file)
@@ -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,6 @@ 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 = '^';