diff options
author | Arthur de Jong <arthur@arthurdejong.org> | 2007-01-08 23:26:29 +0100 |
---|---|---|
committer | Arthur de Jong <arthur@arthurdejong.org> | 2007-01-08 23:26:29 +0100 |
commit | ffd69c9a0fd2c7e3f0c7443ddb39f1d94957182a (patch) | |
tree | 9031443585afd4e8e9ae928adb5b0f1b3796457d /nss/netgroup.c | |
parent | 73d2e3b6aae4bbc6ef03d4bbf35247c8b3ed0ac7 (diff) |
use our own thread-local file pointer for doing requests instead of misusing the data field in the __netgrent struct
git-svn-id: http://arthurdejong.org/svn/nss-pam-ldapd/nss-ldapd@214 ef36b2f9-881f-0410-afb5-c4e39611909c
Diffstat (limited to 'nss/netgroup.c')
-rw-r--r-- | nss/netgroup.c | 19 |
1 files changed, 11 insertions, 8 deletions
diff --git a/nss/netgroup.c b/nss/netgroup.c index 1ea602e..249f234 100644 --- a/nss/netgroup.c +++ b/nss/netgroup.c @@ -78,8 +78,12 @@ static enum nss_status read_netgrent( return NSS_STATUS_SUCCESS; } +/* thread-local file pointer to an ongoing request */ +static __thread FILE *netgrentfp; + enum nss_status _nss_ldap_setnetgrent(const char *group,struct __netgrent *result) { + /* we cannot use NSS_SETENT() here because we have a parameter */ int32_t tmpint32; int errnocp; int *errnop; @@ -88,22 +92,21 @@ enum nss_status _nss_ldap_setnetgrent(const char *group,struct __netgrent *resul if ((group==NULL)||(group[0]=='\0')) return NSS_STATUS_UNAVAIL; /* open a new stream and write the request */ - OPEN_SOCK(result->data); - WRITE_REQUEST(result->data,NSLCD_ACTION_NETGROUP_BYNAME); - WRITE_STRING(result->data,group); - WRITE_FLUSH(result->data); + OPEN_SOCK(netgrentfp); + WRITE_REQUEST(netgrentfp,NSLCD_ACTION_NETGROUP_BYNAME); + WRITE_STRING(netgrentfp,group); + WRITE_FLUSH(netgrentfp); /* read response header */ - READ_RESPONSEHEADER(result->data,NSLCD_ACTION_NETGROUP_BYNAME); + READ_RESPONSEHEADER(netgrentfp,NSLCD_ACTION_NETGROUP_BYNAME); return NSS_STATUS_SUCCESS; -/* fixme: this should probably also set result->known_groups */ } enum nss_status _nss_ldap_getnetgrent_r(struct __netgrent *result,char *buffer,size_t buflen,int *errnop) { - NSS_GETENT(result->data,read_netgrent); + NSS_GETENT(netgrentfp,read_netgrent); } enum nss_status _nss_ldap_endnetgrent(struct __netgrent *result) { - NSS_ENDENT(result->data); + NSS_ENDENT(netgrentfp); } |