* Replaced the dummy implementations of the <grp.h> and <pwd.h>
functions by ones reading /etc/{group,passwd}.
* Added quasi-standard getpwent_r() and getgrent_r().
* Added _SC_GETGR_R_SIZE_MAX and _SC_GETPW_R_SIZE_MAX sysconf()
constants.
* Moved initgroups() and getgrouplist() definition to grp.cpp. They use
the same backend as the <grp.h> functions.
* Set the permissions of files created by the build system to what they
should be on the image (executables: 755, others: 644). Otherwise only
root could do anything under Haiku.
* Added build system variables HAIKU_ROOT_USER_NAME and
HAIKU_ROOT_USER_REAL_NAME to customize name and real name of Haiku's
root user.
* Added build system rules AddUserToHaikuImage and AddGroupToHaikuImage
for adding additional users and groups (by default only root user and
group and a "users" group are created).
* Adjusted BIND port and coreutils config.h files according to what
features have become available.
* Fixed HAIKU_DOCUMENTATION_OBJECT_DIR definition. Untested, but it used
a wrong variable name before.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@24750 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
@@ -29,6 +29,8 @@ extern int getgrnam_r(const char *name, struct group *group, char *buffer,
|
||||
size_t bufferSize, struct group **_result);
|
||||
|
||||
extern struct group *getgrent(void);
|
||||
extern int getgrent_r(struct group* group, char* buffer, size_t bufferSize,
|
||||
struct group** _result);
|
||||
extern void setgrent(void);
|
||||
extern void endgrent(void);
|
||||
|
||||
|
||||
+3
-1
@@ -22,10 +22,12 @@ struct passwd {
|
||||
|
||||
/* traverse the user password database */
|
||||
extern struct passwd *getpwent(void);
|
||||
extern int getpwent_r(struct passwd* pwbuf, char* buf, size_t buflen,
|
||||
struct passwd** pwbufp);
|
||||
extern void setpwent(void);
|
||||
extern void endpwent(void);
|
||||
|
||||
/*search the user password database */
|
||||
/* search the user password database */
|
||||
extern struct passwd *getpwnam(const char *name);
|
||||
extern int getpwnam_r(const char *name, struct passwd *passwd, char *buffer,
|
||||
size_t bufferSize, struct passwd **result);
|
||||
|
||||
@@ -57,6 +57,8 @@
|
||||
#define _SC_STREAM_MAX 22
|
||||
#define _SC_TZNAME_MAX 23
|
||||
#define _SC_VERSION 24
|
||||
#define _SC_GETGR_R_SIZE_MAX 25
|
||||
#define _SC_GETPW_R_SIZE_MAX 26
|
||||
|
||||
/* lseek() constants */
|
||||
#ifndef SEEK_SET
|
||||
|
||||
@@ -10,6 +10,30 @@
|
||||
#include <image.h>
|
||||
|
||||
|
||||
#define MAX_PASSWD_NAME_LEN (32)
|
||||
#define MAX_PASSWD_PASSWORD_LEN (32)
|
||||
#define MAX_PASSWD_REAL_NAME_LEN (128)
|
||||
#define MAX_PASSWD_HOME_DIR_LEN (B_PATH_NAME_LENGTH)
|
||||
#define MAX_PASSWD_SHELL_LEN (B_PATH_NAME_LENGTH)
|
||||
|
||||
#define MAX_PASSWD_BUFFER_SIZE ( \
|
||||
MAX_PASSWD_NAME_LEN \
|
||||
+ MAX_PASSWD_PASSWORD_LEN \
|
||||
+ MAX_PASSWD_REAL_NAME_LEN \
|
||||
+ MAX_PASSWD_HOME_DIR_LEN \
|
||||
+ MAX_PASSWD_SHELL_LEN)
|
||||
|
||||
#define MAX_GROUP_NAME_LEN (32)
|
||||
#define MAX_GROUP_PASSWORD_LEN (32)
|
||||
#define MAX_GROUP_MEMBER_COUNT (32)
|
||||
|
||||
#define MAX_GROUP_BUFFER_SIZE ( \
|
||||
MAX_GROUP_NAME_LEN \
|
||||
+ MAX_GROUP_PASSWORD_LEN \
|
||||
+ ((MAX_GROUP_MEMBER_COUNT + 1) * sizeof(char*)))
|
||||
// MAX_GROUP_NAME_LEN and MAX_GROUP_PASSWORD_LEN are char* aligned
|
||||
|
||||
|
||||
struct user_space_program_args;
|
||||
struct real_time_data;
|
||||
|
||||
@@ -33,6 +57,8 @@ void __init_time(void);
|
||||
void __arch_init_time(struct real_time_data *data, bool setDefaults);
|
||||
bigtime_t __arch_get_system_time_offset(struct real_time_data *data);
|
||||
void __init_pwd_backend(void);
|
||||
void __reinit_pwd_backend_after_fork(void);
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user