diff options
author | Ashwini Sharma <ak.ashwini1981@gmail.com> | 2013-12-23 07:23:28 -0600 |
---|---|---|
committer | Ashwini Sharma <ak.ashwini1981@gmail.com> | 2013-12-23 07:23:28 -0600 |
commit | 656d5043b8a1a746cf7c949ee695db6c6251dfea (patch) | |
tree | aba5a8362321ebfc9aa1e6d336a96b9f4facfac2 /lib/password.c | |
parent | fe69830eba96afc47fdcdf4ee8456f9ef95407f5 (diff) | |
download | toybox-656d5043b8a1a746cf7c949ee695db6c6251dfea.tar.gz |
Attached is an implementation for groupdel.
This is aliased to delgroup, for a requirement at my end.
Also lib/password.c is modified to along with.
Diffstat (limited to 'lib/password.c')
-rw-r--r-- | lib/password.c | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/lib/password.c b/lib/password.c index 34abf6e7..e184e0e0 100644 --- a/lib/password.c +++ b/lib/password.c @@ -118,6 +118,7 @@ static char *get_nextcolon(char *line, int cnt) * 2. complete entry for user details, when creating new user * 3. group members comma',' separated list, when adding user to group * 4. complete entry for group details, when creating new group + * 5. entry = NULL, delete the named entry user/group */ int update_password(char *filename, char* username, char* entry) { @@ -167,7 +168,7 @@ int update_password(char *filename, char* username, char* entry) { if (strncmp(line, namesfx, strlen(namesfx))) fprintf(newfp, "%s\n", line); - else { + else if (entry) { char *current_ptr = NULL; found = 1; @@ -180,7 +181,9 @@ int update_password(char *filename, char* username, char* entry) fprintf(newfp, "%s\n",current_ptr); } else fprintf(newfp, "%s\n",current_ptr); } else if (!strcmp(toys.which->name, "groupadd") || - !strcmp(toys.which->name, "addgroup")){ + !strcmp(toys.which->name, "addgroup") || + !strcmp(toys.which->name, "delgroup") || + !strcmp(toys.which->name, "groupdel")){ current_ptr = get_nextcolon(line, 3); //past gid/admin list *current_ptr = '\0'; fprintf(newfp, "%s", line); @@ -190,7 +193,7 @@ int update_password(char *filename, char* username, char* entry) free(line); } free(namesfx); - if (!found) fprintf(newfp, "%s\n", entry); + if (!found && entry) fprintf(newfp, "%s\n", entry); fcntl(fileno(exfp), F_SETLK, &lock); fclose(exfp); |