summaryrefslogtreecommitdiffstats
path: root/pw/pw.h
diff options
context:
space:
mode:
authorBaptiste Daroussin <bapt@FreeBSD.org>2015-08-02 12:47:50 +0000
committerBaptiste Daroussin <bapt@FreeBSD.org>2015-08-02 12:47:50 +0000
commit0c4addea3407c6268cd01be51e8d56a804e5b15d (patch)
tree6a632c6d718df3fdad70db4b8a3569a58f595176 /pw/pw.h
parentf1bef959a51e2994216735586c6ef525f2728f10 (diff)
downloadpw-darwin-0c4addea3407c6268cd01be51e8d56a804e5b15d.tar.gz
pw-darwin-0c4addea3407c6268cd01be51e8d56a804e5b15d.tar.zst
pw-darwin-0c4addea3407c6268cd01be51e8d56a804e5b15d.zip
Rewrite parsing subcommands arguments of pw(8)
Now each subcommands checks its arguments in a dedicated functions. This helps improving input validation, code readability/maintainability While here: - Add a -y option to pw userdel/usermod so it can maintain NIS servers if nispasswd is not defined in pw.conf(5) - Allow pw -r <rootdir> to remove directory with userdel -r - Fix bug when renaming a user which was not renaming the user name it groups it is a member of. - Only parse pw.conf(5) when needed.
Diffstat (limited to 'pw/pw.h')
-rw-r--r--pw/pw.h28
1 files changed, 24 insertions, 4 deletions
diff --git a/pw/pw.h b/pw/pw.h
index a22572e..b6e2ccf 100644
--- a/pw/pw.h
+++ b/pw/pw.h
@@ -78,21 +78,41 @@ LIST_HEAD(cargs, carg);
#define _UC_MAXLINE 1024
#define _UC_MAXSHELLS 32
+struct userconf *get_userconfig(const char *cfg);
struct userconf *read_userconfig(char const * file);
-int write_userconfig(char const * file);
+int write_userconfig(struct userconf *cnf, char const * file);
struct carg *addarg(struct cargs * _args, int ch, char *argstr);
struct carg *getarg(struct cargs * _args, int ch);
-int pw_user(int mode, char *name, long id, struct cargs * _args);
-int pw_usernext(struct userconf *cnf, bool quiet);
-int pw_group(int mode, char *name, long id, struct cargs * _args);
+int pw_group_add(int argc, char **argv, char *name);
+int pw_group_del(int argc, char **argv, char *name);
+int pw_group_mod(int argc, char **argv, char *name);
+int pw_group_next(int argc, char **argv, char *name);
+int pw_group_show(int argc, char **argv, char *name);
+int pw_user_add(int argc, char **argv, char *name);
+int pw_user_add(int argc, char **argv, char *name);
+int pw_user_add(int argc, char **argv, char *name);
+int pw_user_add(int argc, char **argv, char *name);
+int pw_user_del(int argc, char **argv, char *name);
+int pw_user_lock(int argc, char **argv, char *name);
+int pw_user_mod(int argc, char **argv, char *name);
+int pw_user_next(int argc, char **argv, char *name);
+int pw_user_show(int argc, char **argv, char *name);
+int pw_user_unlock(int argc, char **argv, char *name);
int pw_groupnext(struct userconf *cnf, bool quiet);
char *pw_checkname(char *name, int gecos);
+uintmax_t pw_checkid(char *nptr, uintmax_t maxval);
+int pw_checkfd(char *nptr);
int addnispwent(const char *path, struct passwd *pwd);
int delnispwent(const char *path, const char *login);
int chgnispwent(const char *path, const char *login, struct passwd *pwd);
+int groupadd(struct userconf *, char *name, gid_t id, char *members, int fd,
+ bool dryrun, bool pretty, bool precrypted);
+
+int nis_update(void);
+
int boolean_val(char const * str, int dflt);
char const *boolean_str(int val);
char *newstr(char const * p);