Lines Matching +full:user +full:- +full:defined

38  * If file-system access is to be excluded, this module has no function,
60 #if defined(PREFER_REENTRANT) && defined(_POSIX_C_SOURCE) && _POSIX_C_SOURCE >= 199506L
65 * to avoid non-reentrant features.
67 #if defined __sun && defined __SVR4
88 struct passwd pwd; /* The password entry of a user */
117 home->err = NULL; in _new_HomeDir()
118 home->buffer = NULL; in _new_HomeDir()
119 home->buflen = 0; in _new_HomeDir()
123 home->err = _new_ErrMsg(); in _new_HomeDir()
124 if(!home->err) in _new_HomeDir()
127 * Allocate the buffer that is used by the reentrant POSIX password-entry in _new_HomeDir()
136 home->buflen = DEF_GETPW_R_SIZE_MAX; in _new_HomeDir()
139 home->buflen = sysconf(_SC_GETPW_R_SIZE_MAX); in _new_HomeDir()
143 if(home->buflen < 0 || errno) in _new_HomeDir()
144 home->buflen = DEF_GETPW_R_SIZE_MAX; in _new_HomeDir()
152 if(pathlen > home->buflen) in _new_HomeDir()
153 home->buflen = pathlen; in _new_HomeDir()
157 home->buffer = (char *) malloc(home->buflen); in _new_HomeDir()
158 if(!home->buffer) { in _new_HomeDir()
176 home->err = _del_ErrMsg(home->err); in _del_HomeDir()
177 if(home->buffer) in _del_HomeDir()
178 free(home->buffer); in _del_HomeDir()
185 * Lookup the home directory of a given user in the password file.
189 * user const char * The name of the user to lookup, or "" to lookup
210 const char *_hd_lookup_home_dir(HomeDir *home, const char *user) in _hd_lookup_home_dir() argument
212 const char *home_dir; /* A pointer to the home directory of the user */ in _hd_lookup_home_dir()
215 * user. in _hd_lookup_home_dir()
217 int login_user = !user || *user=='\0'; in _hd_lookup_home_dir()
229 if(!login_user && strcmp(user, "+") == 0) { in _hd_lookup_home_dir()
232 _err_record_msg(home->err, "Can't determine current directory", in _hd_lookup_home_dir()
239 * When looking up the home directory of the current user, see if the in _hd_lookup_home_dir()
248 * Look up the password entry of the user. in _hd_lookup_home_dir()
249 * First the POSIX threads version - this is painful! in _hd_lookup_home_dir()
256 * Look up the password entry of the specified user. in _hd_lookup_home_dir()
259 status = getpwuid_r(geteuid(), &home->pwd, home->buffer, home->buflen, in _hd_lookup_home_dir()
262 status = getpwnam_r(user, &home->pwd, home->buffer, home->buflen, &ret); in _hd_lookup_home_dir()
264 _err_record_msg(home->err, "User '", user, "' doesn't exist.", in _hd_lookup_home_dir()
271 home_dir = home->pwd.pw_dir; in _hd_lookup_home_dir()
278 struct passwd *pwd = login_user ? getpwuid(geteuid()) : getpwnam(user); in _hd_lookup_home_dir()
280 _err_record_msg(home->err, "User '", user, "' doesn't exist.", in _hd_lookup_home_dir()
287 home_dir = pwd->pw_dir; in _hd_lookup_home_dir()
304 return home ? _err_get_msg(home->err) : "NULL HomeDir argument"; in _hd_last_home_dir_error()
308 * The _hd_scan_user_home_dirs() function calls a user-provided function
310 * the name and the home directory of the user.
321 * callback_fn HOME_DIR_FN(*) The function to call for each user.
323 * return int 0 - Successful completion.
324 * 1 - An error occurred. A description
338 _err_record_msg(home->err,
353 #if defined(PREFER_REENTRANT) && defined(_POSIX_C_SOURCE) && _POSIX_C_SOURCE >= 199506L
354 #if defined __sun && defined __SVR4
369 waserr = callback_fn(data, pwd->pw_name, pwd->pw_dir,
370 _err_get_msg(home->err), ERR_MSG_LEN);
373 * See if the username of the current user minimally matches the prefix.
377 strncmp(prefix, pwd->pw_name, prefix_len)==0) {
378 waserr = callback_fn(data, pwd->pw_name, pwd->pw_dir,
379 _err_get_msg(home->err), ERR_MSG_LEN);
398 #if defined __sun && defined __SVR4
399 while((pwd = getpwent_r(&pwd_buffer, home->buffer, home->buflen)) != NULL && !waserr) {
403 if(strncmp(prefix, pwd->pw_name, prefix_len) == 0) {
404 waserr = callback_fn(data, pwd->pw_name, pwd->pw_dir,
405 _err_get_msg(home->err), ERR_MSG_LEN);
420 waserr = callback_fn(data, "+", pwd, _err_get_msg(home->err),ERR_MSG_LEN);
423 _err_record_msg(home->err, "Can't determine current directory.",
442 * return const char * A pointer to either home->buffer, where the
451 char *cwd = getcwd(home->buffer, home->buflen);