mirror of
https://sourceware.org/git/glibc.git
synced 2024-12-23 03:10:05 +00:00
Update.
2004-04-01 Jakub Jelinek <jakub@redhat.com> * nis/nss_nis/nis-service.c (_nss_nis_getservbyname_r): If protocol is NULL, instead of trying yp_match (name/tcp), yp_match (name/udp), yp_all, try yp_match (name), yp_all. 2004-04-01 Ulrich Drepper <drepper@redhat.com> * sysdeps/generic/dl-sysdep.c (_dl_show_auxv): Add handling for ignored entries. Ignore AT_IGNOREPPC.
This commit is contained in:
parent
bf244ee81f
commit
dd047aa514
11
ChangeLog
11
ChangeLog
@ -1,3 +1,14 @@
|
||||
2004-04-01 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
* nis/nss_nis/nis-service.c (_nss_nis_getservbyname_r): If protocol
|
||||
is NULL, instead of trying yp_match (name/tcp), yp_match (name/udp),
|
||||
yp_all, try yp_match (name), yp_all.
|
||||
|
||||
2004-04-01 Ulrich Drepper <drepper@redhat.com>
|
||||
|
||||
* sysdeps/generic/dl-sysdep.c (_dl_show_auxv): Add handling for
|
||||
ignored entries. Ignore AT_IGNOREPPC.
|
||||
|
||||
2004-03-31 Andreas Jaeger <aj@suse.de>
|
||||
|
||||
* libio/fileops.c (new_do_write): Return _IO_size_t to make 64-bit
|
||||
|
@ -279,60 +279,56 @@ _nss_nis_getservbyname_r (const char *name, const char *protocol,
|
||||
return NSS_STATUS_UNAVAIL;
|
||||
|
||||
/* If the protocol is given, we could try if our NIS server knows
|
||||
about services.byservicename map. If yes, we only need one query.
|
||||
If the protocol is not given, try first name/tcp, then name/udp
|
||||
and then fallback to sequential scanning of services.byname map. */
|
||||
const char *proto = protocol != NULL ? protocol : "tcp";
|
||||
do
|
||||
about services.byservicename map. If yes, we only need one query. */
|
||||
char key[strlen (name) + (protocol ? strlen (protocol) : 0) + 2];
|
||||
char *cp, *result;
|
||||
size_t keylen, len;
|
||||
int int_len;
|
||||
|
||||
/* key is: "name/proto" */
|
||||
cp = stpcpy (key, name);
|
||||
if (protocol)
|
||||
{
|
||||
char key[strlen (name) + strlen (proto) + 2];
|
||||
char *cp, *result;
|
||||
size_t keylen, len;
|
||||
int int_len;
|
||||
|
||||
/* key is: "name/proto" */
|
||||
cp = stpcpy (key, name);
|
||||
*cp++ = '/';
|
||||
stpcpy (cp, proto);
|
||||
keylen = strlen (key);
|
||||
status = yperr2nss (yp_match (domain, "services.byservicename", key,
|
||||
keylen, &result, &int_len));
|
||||
len = int_len;
|
||||
|
||||
/* If we found the key, it's ok and parse the result. If not,
|
||||
fall through and parse the complete table. */
|
||||
if (status == NSS_STATUS_SUCCESS)
|
||||
{
|
||||
struct parser_data *pdata = (void *) buffer;
|
||||
int parse_res;
|
||||
char *p;
|
||||
|
||||
if ((size_t) (len + 1) > buflen)
|
||||
{
|
||||
free (result);
|
||||
*errnop = ERANGE;
|
||||
return NSS_STATUS_TRYAGAIN;
|
||||
}
|
||||
|
||||
p = strncpy (buffer, result, len);
|
||||
buffer[len] = '\0';
|
||||
while (isspace (*p))
|
||||
++p;
|
||||
free (result);
|
||||
parse_res = _nss_files_parse_servent (p, serv, pdata,
|
||||
buflen, errnop);
|
||||
if (parse_res < 0)
|
||||
{
|
||||
if (parse_res == -1)
|
||||
return NSS_STATUS_TRYAGAIN;
|
||||
else
|
||||
return NSS_STATUS_NOTFOUND;
|
||||
}
|
||||
else
|
||||
return NSS_STATUS_SUCCESS;
|
||||
}
|
||||
strcpy (cp, protocol);
|
||||
}
|
||||
keylen = strlen (key);
|
||||
status = yperr2nss (yp_match (domain, "services.byservicename", key,
|
||||
keylen, &result, &int_len));
|
||||
len = int_len;
|
||||
|
||||
/* If we found the key, it's ok and parse the result. If not,
|
||||
fall through and parse the complete table. */
|
||||
if (status == NSS_STATUS_SUCCESS)
|
||||
{
|
||||
struct parser_data *pdata = (void *) buffer;
|
||||
int parse_res;
|
||||
char *p;
|
||||
|
||||
if ((size_t) (len + 1) > buflen)
|
||||
{
|
||||
free (result);
|
||||
*errnop = ERANGE;
|
||||
return NSS_STATUS_TRYAGAIN;
|
||||
}
|
||||
|
||||
p = strncpy (buffer, result, len);
|
||||
buffer[len] = '\0';
|
||||
while (isspace (*p))
|
||||
++p;
|
||||
free (result);
|
||||
parse_res = _nss_files_parse_servent (p, serv, pdata,
|
||||
buflen, errnop);
|
||||
if (parse_res < 0)
|
||||
{
|
||||
if (parse_res == -1)
|
||||
return NSS_STATUS_TRYAGAIN;
|
||||
else
|
||||
return NSS_STATUS_NOTFOUND;
|
||||
}
|
||||
else
|
||||
return NSS_STATUS_SUCCESS;
|
||||
}
|
||||
while (protocol == NULL && (proto[0] == 't' ? (proto = "udp") : NULL));
|
||||
|
||||
struct ypall_callback ypcb;
|
||||
struct search_t req;
|
||||
|
Loading…
Reference in New Issue
Block a user