Welcome to mirror list, hosted at ThFree Co, Russian Federation.

cygwin.com/git/newlib-cygwin.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristopher Faylor <me@cgf.cx>2003-01-27 03:16:01 +0300
committerChristopher Faylor <me@cgf.cx>2003-01-27 03:16:01 +0300
commitfea48988ea866e6ef4f29247a13a8b28eb9be7ce (patch)
tree40e1433368cfe58c000284730c207907c298c633 /winsup/cygwin/passwd.cc
parent285d6b97b11d0516ba82b0deb59afe746ef8fb93 (diff)
* 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.cc17
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
}