Beispiel #1
0
static char *
getlogin_basic(int *status)
{
	static char logname[MAXLOGNAME];

	if (_logname_valid == 0) {
#ifdef __NETBSD_SYSCALLS
		if (__getlogin(logname, sizeof(logname) - 1) < 0) {
#else
		if (_getlogin(logname, sizeof(logname)) < 0) {
#endif
			*status = errno;
			return (NULL);
		}
		_logname_valid = 1;
	}
	*status = 0;
	return (*logname ? logname : NULL);
}

char *
getlogin(void)
{
	char	*result;
	int	status;

	THREAD_LOCK();
	result = getlogin_basic(&status);
	THREAD_UNLOCK();
	return (result);
}
Beispiel #2
0
int
getlogin_r(char *name, size_t namelen)
{
	size_t len;
	int rv;

	mutex_lock(&logname_mutex);
	if (__logname_valid == 0) {
		if (__getlogin(logname, sizeof(logname) - 1) < 0) {
			rv = errno;
			mutex_unlock(&logname_mutex);
			return (rv);
		}
		__logname_valid = 1;
	}
	len = strlen(logname) + 1;
	if (len > namelen) {
		rv = ERANGE;
	} else {
		strncpy(name, logname, len);
		rv = 0;
	}
	mutex_unlock(&logname_mutex);

	return (rv);
}
char *
getlogin()
{
	static char logname[MAXLOGNAME + 1];

	if (__logname_valid == 0) {
		if (__getlogin(logname, sizeof(logname) - 1) < 0)
			return ((char *)NULL);
		__logname_valid = 1;
	}
	return (*logname ? logname : (char *)NULL);
}
Beispiel #4
0
char *
getlogin(void)
{
	char *rv;

	mutex_lock(&logname_mutex);
	if (__logname_valid == 0) {
		if (__getlogin(logname, sizeof(logname) - 1) < 0) {
			mutex_unlock(&logname_mutex);
			return ((char *)NULL);
		}
		__logname_valid = 1;
	}
	rv = (*logname ? logname : (char *)NULL);
	mutex_unlock(&logname_mutex);

	return rv;
}