]> git.saurik.com Git - apple/libc.git/blobdiff - gen/setlogin.c
Libc-997.1.1.tar.gz
[apple/libc.git] / gen / setlogin.c
index 174dea700282fddef418aed10f090525c27308cc..b81cb1fc958f3b11009b7ec00b930467c6b9a240 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999 Apple Computer, Inc. All rights reserved.
+ * Copyright (c) 2006 Apple Computer, Inc. All rights reserved.
  *
  * @APPLE_LICENSE_HEADER_START@
  * 
 
 
 #include <unistd.h>
+#include <pthread.h>
+#include <stdlib.h>
+#include <string.h>
 
-extern int _setlogin(const char* name);
+extern int __setlogin(const char* name);
 
-extern int _logname_valid;             /* shared with getlogin() */
+extern pthread_mutex_t __logname_mutex;
+extern char *__logname;
 
 int setlogin(const char* name)
 {
-       return (_logname_valid = _setlogin(name));
+       pthread_mutex_lock(&__logname_mutex);
+
+       int res = __setlogin(name);
+       if (res == 0 && __logname != NULL) {
+               __logname[0] = 0;
+       }
+
+       pthread_mutex_unlock(&__logname_mutex);
+
+       return res;
 }