Changeset View
Changeset View
Standalone View
Standalone View
lib/libc/gen/getlogin.c
Show First 20 Lines • Show All 55 Lines • ▼ Show 20 Lines | if (_getlogin(logname, sizeof(logname)) < 0) | ||||
return (NULL); | return (NULL); | ||||
return (logname[0] != '\0' ? logname : NULL); | return (logname[0] != '\0' ? logname : NULL); | ||||
} | } | ||||
int | int | ||||
getlogin_r(char *logname, size_t namelen) | getlogin_r(char *logname, size_t namelen) | ||||
{ | { | ||||
char tmpname[MAXLOGNAME]; | char tmpname[MAXLOGNAME]; | ||||
int len; | size_t len; | ||||
if (namelen < 1) | if (namelen < 1) | ||||
return (ERANGE); | return (ERANGE); | ||||
logname[0] = '\0'; | logname[0] = '\0'; | ||||
if (_getlogin(tmpname, sizeof(tmpname)) < 0) | if (_getlogin(tmpname, sizeof(tmpname)) < 0) | ||||
return (errno); | return (errno); | ||||
len = strlen(tmpname) + 1; | len = strlen(tmpname) + 1; | ||||
if (len > namelen) | if (len > namelen) | ||||
return (ERANGE); | return (ERANGE); | ||||
strlcpy(logname, tmpname, len); | strlcpy(logname, tmpname, len); | ||||
return (0); | return (0); | ||||
} | } | ||||
/* FreeBSD 12 and earlier compat. */ | /* FreeBSD 12 and earlier compat. */ | ||||
int | static int | ||||
__getlogin_r_fbsd12(char *logname, int namelen) | __getlogin_r_fbsd12(char *logname, int namelen) | ||||
{ | { | ||||
if (namelen < 1) | if (namelen < 1) | ||||
return (ERANGE); | return (ERANGE); | ||||
return (getlogin_r(logname, namelen)); | return (getlogin_r(logname, namelen)); | ||||
} | } | ||||
__sym_compat(getlogin_r, __getlogin_r_fbsd12, FBSD_1.0); | __sym_compat(getlogin_r, __getlogin_r_fbsd12, FBSD_1.0); |