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:
authorCorinna Vinschen <corinna@vinschen.de>2014-03-12 21:36:56 +0400
committerCorinna Vinschen <corinna@vinschen.de>2014-03-12 21:36:56 +0400
commit29b7313d2225eb4468170b94f80acc473b06b7ea (patch)
treeb6f73d561c3948b777beca544691e167e68aa310 /winsup/cygwin/pwdgrp.h
parent681bb2f78aec647c42f20d7e8157c1f258957646 (diff)
* cygheap.h (enum cygheap_pwdgrp::cache_t): Remove.
(cygheap_pwdgrp::caching): Convert to bool. (cygheap_pwdgrp::pwd_cache): Add cygserver member. (cygheap_pwdgrp::grp_cache): Ditto. (cygheap_pwdgrp::nss_db_caching): Drop. (cygheap_pwdgrp::nss_db_full_caching): Drop. (cygheap_pwdgrp::nss_cygserver_caching): New method. (cygheap_pwdgrp::nss_disable_cygserver_caching): New method. * cygserver.h (client_request::request_code_t): Add CYGSERVER_REQUEST_PWDGRP. * cygserver_pwdgrp.h: New file. * cygtls.h (struct _local_storage): Remove pwbuf and grbuf members. * grp.cc (pwdgrp::prep_tls_grbuf): Drop. (internal_getgrsid): Handle cygserver caching and rearrange to check the caches first. (internal_getgrnam): Ditto. (internal_getgrgid): Ditto. (gr_ent::enumerate_caches): Handle cygserver cache. * passwd.cc (pwdgrp::prep_tls_pwbuf): Drop. (internal_getpwsid): Handle cygserver caching and rearrange to check the caches first. (internal_getpwnam): Ditto. (internal_getpwuid): Ditto. (pw_ent::enumerate_caches): Handle cygserver cache. * pwdgrp.h (pwdgrp::add_account_from_cygserver): New method declaration. (pwdgrp::fetch_account_from_cygserver): New method declaration. (pwdgrp::prep_tls_pwbuf): Drop declaration. (pwdgrp::prep_tls_grbuf): Drop declaration. (pwdgrp::add_user_from_cygserver): New inline methods. (pwdgrp::add_group_from_cygserver): New inline methods. * tlsoffsets.h: Regenerate. * tlsoffsets64.h: Regenerate. * uinfo.cc (internal_getlogin): Call internal_getgroups if cygserver caching is not available. (cygheap_pwdgrp::init): Initialize pwd_cache.cygserver and grp_cache.cygserver. Set caching to true. (cygheap_pwdgrp::nss_init_line): Drop db_cache handling entirely. (pwdgrp::add_account_from_windows): Drop no caching handling. (client_request_pwdgrp::client_request_pwdgrp): New method. (pwdgrp::fetch_account_from_cygserver): New method. (pwdgrp::add_account_from_cygserver): New method. * fhandler_disk_file.cc (fhandler_base::fstat_helper): Fix formatting. * include/sys/cygwin.h: Ditto.
Diffstat (limited to 'winsup/cygwin/pwdgrp.h')
-rw-r--r--winsup/cygwin/pwdgrp.h20
1 files changed, 17 insertions, 3 deletions
diff --git a/winsup/cygwin/pwdgrp.h b/winsup/cygwin/pwdgrp.h
index 0d2d9cc20..1a964def3 100644
--- a/winsup/cygwin/pwdgrp.h
+++ b/winsup/cygwin/pwdgrp.h
@@ -111,12 +111,14 @@ class pwdgrp
void *add_account_from_windows (cygpsid &sid, cyg_ldap *pldap = NULL);
void *add_account_from_windows (const char *name, cyg_ldap *pldap = NULL);
void *add_account_from_windows (uint32_t id, cyg_ldap *pldap = NULL);
+ void *add_account_from_cygserver (cygpsid &sid);
+ void *add_account_from_cygserver (const char *name);
+ void *add_account_from_cygserver (uint32_t id);
char *fetch_account_from_line (fetch_user_arg_t &arg, const char *line);
char *fetch_account_from_file (fetch_user_arg_t &arg);
char *fetch_account_from_windows (fetch_user_arg_t &arg,
cyg_ldap *pldap = NULL);
- pwdgrp *prep_tls_pwbuf ();
- pwdgrp *prep_tls_grbuf ();
+ char *fetch_account_from_cygserver (fetch_user_arg_t &arg);
public:
ULONG cached_users () const { return curr_lines; }
@@ -127,7 +129,13 @@ public:
void init_pwd ();
bool is_passwd () const { return pwdgrp_buf_elem_size == sizeof (pg_pwd); }
pg_pwd *passwd () const { return (pg_pwd *) pwdgrp_buf; };
- inline struct passwd *add_user_from_file (cygpsid &sid)
+ struct passwd *add_user_from_cygserver (cygpsid &sid)
+ { return (struct passwd *) add_account_from_cygserver (sid); }
+ struct passwd *add_user_from_cygserver (const char *name)
+ { return (struct passwd *) add_account_from_cygserver (name); }
+ struct passwd *add_user_from_cygserver (uint32_t id)
+ { return (struct passwd *) add_account_from_cygserver (id); }
+ struct passwd *add_user_from_file (cygpsid &sid)
{ return (struct passwd *) add_account_from_file (sid); }
struct passwd *add_user_from_file (const char *name)
{ return (struct passwd *) add_account_from_file (name); }
@@ -147,6 +155,12 @@ public:
void init_grp ();
bool is_group () const { return pwdgrp_buf_elem_size == sizeof (pg_grp); }
pg_grp *group () const { return (pg_grp *) pwdgrp_buf; };
+ struct group *add_group_from_cygserver (cygpsid &sid)
+ { return (struct group *) add_account_from_cygserver (sid); }
+ struct group *add_group_from_cygserver (const char *name)
+ { return (struct group *) add_account_from_cygserver (name); }
+ struct group *add_group_from_cygserver (uint32_t id)
+ { return (struct group *) add_account_from_cygserver (id); }
struct group *add_group_from_file (cygpsid &sid)
{ return (struct group *) add_account_from_file (sid); }
struct group *add_group_from_file (const char *name)