Implements getlogin{,_r} (XCC)
authorBarret Rhoden <brho@cs.berkeley.edu>
Thu, 14 May 2015 12:25:15 +0000 (08:25 -0400)
committerBarret Rhoden <brho@cs.berkeley.edu>
Fri, 15 May 2015 01:35:44 +0000 (21:35 -0400)
We don't have multiple users.  If we ever do, we can grab that name out
of /proc or something.

Rebuild your toolchain.

tools/compilers/gcc-glibc/glibc-2.19-akaros/sysdeps/akaros/getlogin.c [new file with mode: 0644]
tools/compilers/gcc-glibc/glibc-2.19-akaros/sysdeps/akaros/getlogin_r.c [new file with mode: 0644]

diff --git a/tools/compilers/gcc-glibc/glibc-2.19-akaros/sysdeps/akaros/getlogin.c b/tools/compilers/gcc-glibc/glibc-2.19-akaros/sysdeps/akaros/getlogin.c
new file mode 100644 (file)
index 0000000..67f1fd0
--- /dev/null
@@ -0,0 +1,29 @@
+/* Copyright (C) 1991-2014 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, see
+   <http://www.gnu.org/licenses/>.  */
+
+#include <stddef.h>
+#include <unistd.h>
+
+/* Return the login name of the user, or NULL if it can't be determined.
+   The returned pointer, if not NULL, is good only until the next call.  */
+static char username[] = "Nanwan";
+
+char *
+getlogin (void)
+{
+  return username;
+}
diff --git a/tools/compilers/gcc-glibc/glibc-2.19-akaros/sysdeps/akaros/getlogin_r.c b/tools/compilers/gcc-glibc/glibc-2.19-akaros/sysdeps/akaros/getlogin_r.c
new file mode 100644 (file)
index 0000000..ffd5364
--- /dev/null
@@ -0,0 +1,33 @@
+/* Reentrant function to return the current login name.  Stub version.
+   Copyright (C) 1996-2014 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, see
+   <http://www.gnu.org/licenses/>.  */
+
+#include <unistd.h>
+#include <stdio.h>
+
+/* Return at most NAME_LEN characters of the login name of the user in NAME.
+   If it cannot be determined or some other error occurred, return the error
+   code.  Otherwise return 0.  */
+int
+getlogin_r (name, name_len)
+     char *name;
+     size_t name_len;
+{
+  snprintf(name, name_len, "Nanwan");
+  return 0;
+}
+libc_hidden_def (getlogin_r)