diff options
author | Christopher Faylor <me@cgf.cx> | 2003-01-27 00:16:01 +0000 |
---|---|---|
committer | Christopher Faylor <me@cgf.cx> | 2003-01-27 00:16:01 +0000 |
commit | fea48988ea866e6ef4f29247a13a8b28eb9be7ce (patch) | |
tree | 40e1433368cfe58c000284730c207907c298c633 /winsup/cygwin/passwd.cc | |
parent | 285d6b97b11d0516ba82b0deb59afe746ef8fb93 (diff) | |
download | cygnal-fea48988ea866e6ef4f29247a13a8b28eb9be7ce.tar.gz cygnal-fea48988ea866e6ef4f29247a13a8b28eb9be7ce.tar.bz2 cygnal-fea48988ea866e6ef4f29247a13a8b28eb9be7ce.zip |
* strings.h (strechr): New function.
* uinfo.cc (pwdgrp::next_str): Search only for input char in string. Return
EOS on failure. Don't check for NULL since it shouldn't be possible.
(pwdgrp::add_line): Revert to replacing '\n' in input line with '\0'.
(pwdgrp::next_num): Pass explicit separator character to next_str.
* grp.cc (pwdgrp::parse_group): Ditto.
* passwd.cc (pwdgrp::parse_passwd): Ditto. Revamp test for garbage input.
* pwdgrp.h (pwdgrp::next_str): Don't use default parameter.
Diffstat (limited to 'winsup/cygwin/passwd.cc')
-rw-r--r-- | winsup/cygwin/passwd.cc | 17 |
1 files changed, 8 insertions, 9 deletions
diff --git a/winsup/cygwin/passwd.cc b/winsup/cygwin/passwd.cc index 113f92acf..c257bd640 100644 --- a/winsup/cygwin/passwd.cc +++ b/winsup/cygwin/passwd.cc @@ -38,18 +38,17 @@ bool pwdgrp::parse_passwd () { # define res (*passwd_buf)[curr_lines] - res.pw_name = next_str (); - res.pw_passwd = next_str (); - - if (res.pw_name == res.pw_passwd) - return false; - + res.pw_name = next_str (':'); + res.pw_passwd = next_str (':'); + char *p = raw_ptr (); (void) next_num (res.pw_uid); + if (p == raw_ptr ()) + return false; /* parsing did not advance. line is garbage */ (void) next_num (res.pw_gid); res.pw_comment = NULL; - res.pw_gecos = next_str (); - res.pw_dir = next_str (); - res.pw_shell = next_str (); + res.pw_gecos = next_str (':'); + res.pw_dir = next_str (':'); + res.pw_shell = next_str (':'); return true; # undef res } |