Lines Matching defs:home
81 * The resources needed to lookup and record a home directory are
94 static const char *hd_getpwd(HomeDir *home);
104 HomeDir *home; /* The object to be returned */
109 home = (HomeDir *) malloc(sizeof(HomeDir));
110 if(!home) {
119 home->err = NULL;
120 home->buffer = NULL;
121 home->buflen = 0;
125 home->err = _new_ErrMsg();
126 if(!home->err)
127 return _del_HomeDir(home);
138 home->buflen = DEF_GETPW_R_SIZE_MAX;
141 home->buflen = sysconf(_SC_GETPW_R_SIZE_MAX);
145 if(home->buflen < 0 || errno)
146 home->buflen = DEF_GETPW_R_SIZE_MAX;
154 if(pathlen > home->buflen)
155 home->buflen = pathlen;
159 home->buffer = (char *) malloc(home->buflen);
160 if(!home->buffer) {
162 return _del_HomeDir(home);
164 return home;
171 * home HomeDir * The object to be deleted.
175 HomeDir *_del_HomeDir(HomeDir *home)
177 if(home) {
178 home->err = _del_ErrMsg(home->err);
179 if(home->buffer)
180 free(home->buffer);
181 free(home);
187 * Lookup the home directory of a given user in the password file.
190 * home HomeDir * The resources needed to lookup the home directory.
192 * the home directory of the person running the
195 * return const char * The home directory. If the library was compiled
212 const char *_hd_lookup_home_dir(HomeDir *home, const char *user)
214 const char *home_dir; /* A pointer to the home directory of the user */
223 if(!home) {
232 home_dir = hd_getpwd(home);
234 _err_record_msg(home->err, "Can't determine current directory",
241 * When looking up the home directory of the current user, see if the
261 status = getpwuid_r(geteuid(), &home->pwd, home->buffer, home->buflen,
264 status = getpwnam_r(user, &home->pwd, home->buffer, home->buflen, &ret);
266 _err_record_msg(home->err, "User '", user, "' doesn't exist.",
271 * Get a pointer to the string that holds the home directory.
273 home_dir = home->pwd.pw_dir;
282 _err_record_msg(home->err, "User '", user, "' doesn't exist.",
287 * Get a pointer to the home directory.
300 * home HomeDir * The resources needed to record the home directory.
304 const char *_hd_last_home_dir_error(HomeDir *home)
306 return home ? _err_get_msg(home->err) : "NULL HomeDir argument";
312 * the name and the home directory of the user.
315 * home HomeDir * The resource object for reading home
330 int _hd_scan_user_home_dirs(HomeDir *home, const char *prefix,
338 if(!home || !prefix || !callback_fn) {
339 if(home) {
340 _err_record_msg(home->err,
372 _err_get_msg(home->err), ERR_MSG_LEN);
381 _err_get_msg(home->err), ERR_MSG_LEN);
401 while((pwd = getpwent_r(&pwd_buffer, home->buffer, home->buflen)) != NULL && !waserr) {
407 _err_get_msg(home->err), ERR_MSG_LEN);
420 const char *pwd = hd_getpwd(home);
422 waserr = callback_fn(data, "+", pwd, _err_get_msg(home->err),ERR_MSG_LEN);
425 _err_record_msg(home->err, "Can't determine current directory.",
442 * home HomeDir * The resource object for reading home directories.
444 * return const char * A pointer to either home->buffer, where the
448 static const char *hd_getpwd(HomeDir *home)
453 char *cwd = getcwd(home->buffer, home->buflen);