diff options
author | Arthur de Jong <arthur@arthurdejong.org> | 2010-10-11 22:12:59 +0200 |
---|---|---|
committer | Arthur de Jong <arthur@arthurdejong.org> | 2010-10-11 22:12:59 +0200 |
commit | 90fec72d7d1390d0744622928c6648355d3f6f33 (patch) | |
tree | bd09214dd94179b152d738e8d4798bd9595b86df /nss/hosts.c | |
parent | 11428fdf252a18551d64fb6a119e44eab2d2c5d9 (diff) |
also try to support older Solaris releases that do not have the returnlen member of struct nss_XbyY_args
git-svn-id: http://arthurdejong.org/svn/nss-pam-ldapd/nss-pam-ldapd-solaris@1262 ef36b2f9-881f-0410-afb5-c4e39611909c
Diffstat (limited to 'nss/hosts.c')
-rw-r--r-- | nss/hosts.c | 23 |
1 files changed, 19 insertions, 4 deletions
diff --git a/nss/hosts.c b/nss/hosts.c index 3037a10..8a699f3 100644 --- a/nss/hosts.c +++ b/nss/hosts.c @@ -242,6 +242,8 @@ nss_status_t _nss_ldap_endhostent(void) #ifdef NSS_FLAVOUR_SOLARIS +#ifdef HAVE_STRUCT_NSS_XBYY_ARGS_RETURNLEN + static nss_status_t read_hoststring(TFILE *fp,nss_XbyY_args_t *args,int erronempty) { struct hostent result; @@ -298,16 +300,29 @@ static nss_status_t read_hoststring(TFILE *fp,nss_XbyY_args_t *args,int erronemp NSS_ARGS(args)->buf.result? \ read_hostent_erronempty(fp,NSS_ARGS(args)->key.hostaddr.type,(struct hostent *)NSS_ARGS(args)->buf.result,NSS_ARGS(args)->buf.buffer,NSS_ARGS(args)->buf.buflen,&errno,&(NSS_ARGS(args)->h_errno)): \ read_hoststring(fp,args,1); \ - if (NSS_ARGS(args)->buf.result) \ - NSS_ARGS(args)->returnval=NSS_ARGS(args)->buf.result + if ((NSS_ARGS(args)->buf.result)&&(retv=NSS_STATUS_SUCCESS)) \ + NSS_ARGS(args)->returnval=NSS_ARGS(args)->buf.result; #define READ_RESULT_NEXTONEMPTY(fp) \ NSS_ARGS(args)->buf.result? \ read_hostent_nextonempty(fp,NSS_ARGS(args)->key.hostaddr.type,(struct hostent *)NSS_ARGS(args)->buf.result,NSS_ARGS(args)->buf.buffer,NSS_ARGS(args)->buf.buflen,&errno,&(NSS_ARGS(args)->h_errno)): \ read_hoststring(fp,args,0); \ - if (NSS_ARGS(args)->buf.result) \ - NSS_ARGS(args)->returnval=NSS_ARGS(args)->buf.result + if ((NSS_ARGS(args)->buf.result)&&(retv=NSS_STATUS_SUCCESS)) \ + NSS_ARGS(args)->returnval=NSS_ARGS(args)->buf.result; + +#else /* not HAVE_STRUCT_NSS_XBYY_ARGS_RETURNLEN */ + +#define READ_RESULT_ERRONEMPTY(fp) \ + read_hostent_erronempty(fp,NSS_ARGS(args)->key.hostaddr.type,(struct hostent *)NSS_ARGS(args)->buf.result,NSS_ARGS(args)->buf.buffer,NSS_ARGS(args)->buf.buflen,&errno,&(NSS_ARGS(args)->h_errno)); \ + if (retv=NSS_STATUS_SUCCESS) \ + NSS_ARGS(args)->returnval=NSS_ARGS(args)->buf.result; + +#define READ_RESULT_NEXTONEMPTY(fp) \ + read_hostent_nextonempty(fp,NSS_ARGS(args)->key.hostaddr.type,(struct hostent *)NSS_ARGS(args)->buf.result,NSS_ARGS(args)->buf.buffer,NSS_ARGS(args)->buf.buflen,&errno,&(NSS_ARGS(args)->h_errno)); \ + if (retv=NSS_STATUS_SUCCESS) \ + NSS_ARGS(args)->returnval=NSS_ARGS(args)->buf.result; +#endif /* not HAVE_STRUCT_NSS_XBYY_ARGS_RETURNLEN */ /* hack to set the correct errno and h_errno */ #define h_errnop &(NSS_ARGS(args)->h_errno) |