X-Git-Url: https://git.cameronkatri.com/pw-darwin.git/blobdiff_plain/b1da672b1218212f3151eff39f55f65f6f1bbac0..c060b30250b3b666ae19dc91192abdfc89250b62:/pw/pwupd.h diff --git a/pw/pwupd.h b/pw/pwupd.h index 54324f8..200ffee 100644 --- a/pw/pwupd.h +++ b/pw/pwupd.h @@ -23,7 +23,7 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $Id: pwupd.h,v 1.1.1.1 1996/12/09 14:05:35 joerg Exp $ + * $FreeBSD$ */ #ifndef _PWUPD_H_ @@ -35,45 +35,87 @@ #include -enum updtype +#if defined(__FreeBSD__) +#define RET_SETGRENT int +#else +#define RET_SETGRENT void +#endif + +struct pwf { - UPD_DELETE = -1, - UPD_CREATE = 0, - UPD_REPLACE = 1 + int _altdir; + void (*_setpwent)(void); + void (*_endpwent)(void); + struct passwd * (*_getpwent)(void); + struct passwd * (*_getpwuid)(uid_t uid); + struct passwd * (*_getpwnam)(const char * nam); + RET_SETGRENT (*_setgrent)(void); + void (*_endgrent)(void); + struct group * (*_getgrent)(void); + struct group * (*_getgrgid)(gid_t gid); + struct group * (*_getgrnam)(const char * nam); }; -__BEGIN_DECLS -int fileupdate __P((char const * fname, mode_t fm, char const * nline, char const * pfx, int pfxlen, int updmode)); -__END_DECLS +extern struct pwf PWF; +extern struct pwf VPWF; -enum pwdfmttype -{ - PWF_STANDARD, /* MASTER format but with '*' as password */ - PWF_PASSWD, /* V7 format */ - PWF_GROUP = PWF_PASSWD, - PWF_MASTER /* MASTER format with password */ -}; +#define SETPWENT() PWF._setpwent() +#define ENDPWENT() PWF._endpwent() +#define GETPWENT() PWF._getpwent() +#define GETPWUID(uid) PWF._getpwuid(uid) +#define GETPWNAM(nam) PWF._getpwnam(nam) -__BEGIN_DECLS -int addpwent __P((struct passwd * pwd)); -int delpwent __P((struct passwd * pwd)); -int chgpwent __P((char const * login, struct passwd * pwd)); -int fmtpwent __P((char *buf, struct passwd * pwd)); -int fmtpwentry __P((char *buf, struct passwd * pwd, int type)); -int addgrent __P((struct group * grp)); -int delgrent __P((struct group * grp)); -int chggrent __P((char const * name, struct group * grp)); -int fmtgrent __P((char *buf, struct group * grp)); -int fmtgrentry __P((char *buf, struct group * grp, int type)); -int editgroups __P((char *name, char **groups)); -__END_DECLS +#define SETGRENT() PWF._setgrent() +#define ENDGRENT() PWF._endgrent() +#define GETGRENT() PWF._getgrent() +#define GETGRGID(gid) PWF._getgrgid(gid) +#define GETGRNAM(nam) PWF._getgrnam(nam) -#define MAXGROUPS 200 -#define MAXPWLINE 1024 +#define PWALTDIR() PWF._altdir +#ifndef _PATH_PWD +#define _PATH_PWD "/etc" +#endif +#ifndef _GROUP +#define _GROUP "group" +#endif +#ifndef _MASTERPASSWD +#define _MASTERPASSWD "master.passwd" +#endif __BEGIN_DECLS -void copymkdir __P((char const * dir, char const * skel, mode_t mode, uid_t uid, gid_t gid)); -void rm_r __P((char const * dir, uid_t uid)); +int addpwent(struct passwd * pwd); +int delpwent(struct passwd * pwd); +int chgpwent(char const * login, struct passwd * pwd); + +int setpwdir(const char * dir); +char * getpwpath(char const * file); + +int addgrent(struct group * grp); +int delgrent(struct group * grp); +int chggrent(char const * name, struct group * grp); +int editgroups(char *name, char **groups); + +int setgrdir(const char * dir); +char * getgrpath(const char *file); + +void vsetpwent(void); +void vendpwent(void); +struct passwd * vgetpwent(void); +struct passwd * vgetpwuid(uid_t uid); +struct passwd * vgetpwnam(const char * nam); + +struct group * vgetgrent(void); +struct group * vgetgrgid(gid_t gid); +struct group * vgetgrnam(const char * nam); +RET_SETGRENT vsetgrent(void); +void vendgrent(void); + +void copymkdir(char const * dir, char const * skel, mode_t mode, uid_t uid, gid_t gid); +void rm_r(char const * dir, uid_t uid); +int extendline(char **buf, int *buflen, int needed); +int extendarray(char ***buf, int *buflen, int needed); __END_DECLS +#define PWBUFSZ 1024 + #endif /* !_PWUPD_H */