* grp.cc (getgrent32): Only refresh group entries when at beginning.
(internal_getgrsid): Only refresh if uninitialized. (internal_getgrent): Ditto. * passwd.cc (getpwent): Only refresh passwd entries when at beginning. (pwdgrp::read_passwd): linebuf *cannot* be NO_COPY. (internal_getpwsid): Only refresh if uninitialized. (getpass): No need to refresh passwd data here. * pwdgrp.h (refresh): Eliminate default.
This commit is contained in:
		| @@ -1,3 +1,14 @@ | ||||
| 2003-02-01  Christopher Faylor  <cgf@redhat.com> | ||||
|  | ||||
| 	* grp.cc (getgrent32): Only refresh group entries when at beginning. | ||||
| 	(internal_getgrsid): Only refresh if uninitialized. | ||||
| 	(internal_getgrent): Ditto. | ||||
| 	* passwd.cc (getpwent): Only refresh passwd entries when at beginning. | ||||
| 	(pwdgrp::read_passwd): linebuf *cannot* be NO_COPY. | ||||
| 	(internal_getpwsid): Only refresh if uninitialized. | ||||
| 	(getpass): No need to refresh passwd data here. | ||||
| 	* pwdgrp.h (refresh): Eliminate default. | ||||
|  | ||||
| 2003-01-31  Christopher Faylor  <cgf@redhat.com> | ||||
|  | ||||
| 	* dlfcn.cc (dlerror): Only report load errors once per error. | ||||
|   | ||||
| @@ -111,7 +111,7 @@ internal_getgrsid (cygsid &sid) | ||||
| { | ||||
|   char sid_string[128]; | ||||
|  | ||||
|   gr.refresh (); | ||||
|   gr.refresh (false); | ||||
|  | ||||
|   if (sid.string (sid_string)) | ||||
|     for (int i = 0; i < gr.curr_lines; i++) | ||||
| @@ -197,8 +197,8 @@ endgrent () | ||||
| extern "C" struct __group32 * | ||||
| getgrent32 () | ||||
| { | ||||
|   gr.refresh (); | ||||
|  | ||||
|   if (grp_pos == 0) | ||||
|     gr.refresh (true); | ||||
|   if (grp_pos < gr.curr_lines) | ||||
|     return group_buf + grp_pos++; | ||||
|  | ||||
| @@ -223,7 +223,7 @@ setgrent () | ||||
| struct __group32 * | ||||
| internal_getgrent (int pos) | ||||
| { | ||||
|   gr.refresh (); | ||||
|   gr.refresh (false); | ||||
|  | ||||
|   if (pos < gr.curr_lines) | ||||
|     return group_buf + pos; | ||||
|   | ||||
| @@ -82,7 +82,8 @@ pwdgrp::read_passwd () | ||||
| 	myself->uid != (__uid32_t) pw->pw_uid  && | ||||
| 	!internal_getpwuid (myself->uid)))) | ||||
|     { | ||||
|       static char NO_COPY linebuf[1024];	// must be static | ||||
|       static char linebuf[1024];	// must be static and | ||||
|       					// should not be NO_COPY | ||||
|       (void) cygheap->user.ontherange (CH_HOME, NULL); | ||||
|       snprintf (linebuf, sizeof (linebuf), "%s:*:%lu:%lu:,%s:%s:/bin/sh", | ||||
| 		cygheap->user.name (), | ||||
| @@ -102,7 +103,7 @@ internal_getpwsid (cygsid &sid) | ||||
|   char *ptr1, *ptr2, *endptr; | ||||
|   char sid_string[128] = {0,','}; | ||||
|  | ||||
|   pr.refresh (); | ||||
|   pr.refresh (false); | ||||
|  | ||||
|   if (sid.string (sid_string + 2)) | ||||
|     { | ||||
| @@ -252,8 +253,8 @@ getpwnam_r (const char *nam, struct passwd *pwd, char *buffer, size_t bufsize, s | ||||
| extern "C" struct passwd * | ||||
| getpwent (void) | ||||
| { | ||||
|   pr.refresh (); | ||||
|  | ||||
|   if (pw_pos == 0) | ||||
|     pr.refresh (true); | ||||
|   if (pw_pos < pr.curr_lines) | ||||
|     return passwd_buf + pw_pos++; | ||||
|  | ||||
| @@ -290,8 +291,6 @@ getpass (const char * prompt) | ||||
|   char *pass=_reent_winsup ()->_pass; | ||||
|   struct termios ti, newti; | ||||
|  | ||||
|   pr.refresh (); | ||||
|  | ||||
|   cygheap_fdget fhstdin (0); | ||||
|  | ||||
|   if (fhstdin < 0) | ||||
|   | ||||
| @@ -67,7 +67,7 @@ public: | ||||
|   int curr_lines; | ||||
|  | ||||
|   void load (const char *); | ||||
|   void refresh (bool check = true) | ||||
|   void refresh (bool check) | ||||
|   { | ||||
|     if (!check && initialized) | ||||
|       return; | ||||
|   | ||||
		Reference in New Issue
	
	Block a user