* libio/iofopncook.c (_IO_cookie_seek): Correct return value.
	Patch by Peter Miller <millerp@canb.auug.org.au>.

1999-04-27  Thorsten Kukuk  <kukuk@suse.de>

	* sunrpc/pmap_clnt.c: Add own get_myaddress function, which
	  prefers loopback device.

1999-04-28  Ulrich Drepper  <drepper@cygnus.com>
This commit is contained in:
Ulrich Drepper 1999-04-28 10:00:35 +00:00
parent 66f93c2d97
commit 925ed47cfb
5 changed files with 91 additions and 25 deletions

View File

@ -1,3 +1,13 @@
1999-04-28 Ulrich Drepper <drepper@cygnus.com>
* libio/iofopncook.c (_IO_cookie_seek): Correct return value.
Patch by Peter Miller <millerp@canb.auug.org.au>.
1999-04-27 Thorsten Kukuk <kukuk@suse.de>
* sunrpc/pmap_clnt.c: Add own get_myaddress function, which
prefers loopback device.
1999-04-28 Ulrich Drepper <drepper@cygnus.com> 1999-04-28 Ulrich Drepper <drepper@cygnus.com>
* posix/fnmatch.c (internal_fnmatch): Finish incomplete * posix/fnmatch.c (internal_fnmatch): Finish incomplete

View File

@ -1,4 +1,4 @@
/* Copyright (C) 1993, 1995, 1997 Free Software Foundation, Inc. /* Copyright (C) 1993, 1995, 1997, 1999 Free Software Foundation, Inc.
This file is part of the GNU IO Library. This file is part of the GNU IO Library.
This library is free software; you can redistribute it and/or This library is free software; you can redistribute it and/or
@ -81,10 +81,7 @@ _IO_cookie_seek (fp, offset, dir)
pos = _IO_pos_0; pos = _IO_pos_0;
_IO_pos_adjust (pos, offset); _IO_pos_adjust (pos, offset);
if (cfile->io_functions.seek (cfile->cookie, pos, dir)) return cfile->io_functions.seek (cfile->cookie, pos, dir);
return _IO_pos_BAD;
return pos;
} }
static int static int

View File

@ -51,8 +51,8 @@ CHARMAP
<D4> /x14 <U0014> DEVICE CONTROL FOUR (DC4) <D4> /x14 <U0014> DEVICE CONTROL FOUR (DC4)
<NAK> /x15 <U0015> NEGATIVE ACKNOWLEDGE (NAK) <NAK> /x15 <U0015> NEGATIVE ACKNOWLEDGE (NAK)
<NK> /x15 <U0015> NEGATIVE ACKNOWLEDGE (NAK) <NK> /x15 <U0015> NEGATIVE ACKNOWLEDGE (NAK)
<SYN> /x16 <U0016> SYNCRONOUS IDLE (SYN) <SYN> /x16 <U0016> SYNCHRONOUS IDLE (SYN)
<SY> /x16 <U0016> SYNCRONOUS IDLE (SYN) <SY> /x16 <U0016> SYNCHRONOUS IDLE (SYN)
<ETB> /x17 <U0017> END OF TRANSMISSION BLOCK (ETB) <ETB> /x17 <U0017> END OF TRANSMISSION BLOCK (ETB)
<EB> /x17 <U0017> END OF TRANSMISSION BLOCK (ETB) <EB> /x17 <U0017> END OF TRANSMISSION BLOCK (ETB)
<CAN> /x18 <U0018> CANCEL (CAN) <CAN> /x18 <U0018> CANCEL (CAN)
@ -524,8 +524,8 @@ CHARMAP
<o1> /xc7/xad <U01ed> LATIN SMALL LETTER O WITH OGONEK AND MACRON <o1> /xc7/xad <U01ed> LATIN SMALL LETTER O WITH OGONEK AND MACRON
<EZ> /xc7/xae <U01ee> LATIN CAPITAL LETTER EZH WITH CARON <EZ> /xc7/xae <U01ee> LATIN CAPITAL LETTER EZH WITH CARON
<ez> /xc7/xaf <U01ef> LATIN SMALL LETTER EZH WITH CARON <ez> /xc7/xaf <U01ef> LATIN SMALL LETTER EZH WITH CARON
<G'> /xc7/xb8 <U01f8> LATIN CAPITAL LETTER G WITH ACUTE <G'> /xc7/xb4 <U01f4> LATIN CAPITAL LETTER G WITH ACUTE
<g'> /xc7/xb9 <U01f9> LATIN SMALL LETTER G WITH ACUTE <g'> /xc7/xb5 <U01f5> LATIN SMALL LETTER G WITH ACUTE
<AA'> /xc7/xba <U01fa> LATIN CAPITAL LETTER A WITH RING ABOVE AND ACUTE <AA'> /xc7/xba <U01fa> LATIN CAPITAL LETTER A WITH RING ABOVE AND ACUTE
<aa'> /xc7/xbb <U01fb> LATIN SMALL LETTER A WITH RING ABOVE AND ACUTE <aa'> /xc7/xbb <U01fb> LATIN SMALL LETTER A WITH RING ABOVE AND ACUTE
<AE'> /xc7/xbc <U01fc> LATIN CAPITAL LETTER AE WITH ACUTE <AE'> /xc7/xbc <U01fc> LATIN CAPITAL LETTER AE WITH ACUTE
@ -560,7 +560,7 @@ CHARMAP
<;S> /xca/xbb <U02bb> MODIFIER LETTER TURNED COMMA <;S> /xca/xbb <U02bb> MODIFIER LETTER TURNED COMMA
<1/>> /xcb/x86 <U02c6> MODIFIER LETTER CIRCUMFLEX ACCENT <1/>> /xcb/x86 <U02c6> MODIFIER LETTER CIRCUMFLEX ACCENT
<'<> /xcb/x87 <U02c7> CARON (Mandarin Chinese third tone) <'<> /xcb/x87 <U02c7> CARON (Mandarin Chinese third tone)
<1!> /xcb/x95 <U02d5> MODIFIER LETTER GRAVE ACCENT <1!> /xcb/x8b <U02cb> MODIFIER LETTER GRAVE ACCENT
<'(> /xcb/x98 <U02d8> BREVE <'(> /xcb/x98 <U02d8> BREVE
<'.> /xcb/x99 <U02d9> DOT ABOVE (Mandarin Chinese light tone) <'.> /xcb/x99 <U02d9> DOT ABOVE (Mandarin Chinese light tone)
<'0> /xcb/x9a <U02da> RING ABOVE <'0> /xcb/x9a <U02da> RING ABOVE
@ -581,7 +581,7 @@ CHARMAP
<O%> /xce/x8c <U038c> GREEK CAPITAL LETTER OMICRON WITH TONOS <O%> /xce/x8c <U038c> GREEK CAPITAL LETTER OMICRON WITH TONOS
<U%> /xce/x8e <U038e> GREEK CAPITAL LETTER UPSILON WITH TONOS <U%> /xce/x8e <U038e> GREEK CAPITAL LETTER UPSILON WITH TONOS
<W%> /xce/x8f <U038f> GREEK CAPITAL LETTER OMEGA WITH TONOS <W%> /xce/x8f <U038f> GREEK CAPITAL LETTER OMEGA WITH TONOS
<i3> /xce/x90 <U0390> GREEK SMALL LETTER IOTA WITH DIALYTICA AND TONOS <i3> /xce/x90 <U0390> GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS
<A*> /xce/x91 <U0391> GREEK CAPITAL LETTER ALPHA <A*> /xce/x91 <U0391> GREEK CAPITAL LETTER ALPHA
<B*> /xce/x92 <U0392> GREEK CAPITAL LETTER BETA <B*> /xce/x92 <U0392> GREEK CAPITAL LETTER BETA
<G*> /xce/x93 <U0393> GREEK CAPITAL LETTER GAMMA <G*> /xce/x93 <U0393> GREEK CAPITAL LETTER GAMMA
@ -1161,7 +1161,7 @@ CHARMAP
<=s> /xe2/x82/x8c <U208c> SUBSCRIPT EQUALS SIGN <=s> /xe2/x82/x8c <U208c> SUBSCRIPT EQUALS SIGN
<(s> /xe2/x82/x8d <U208d> SUBSCRIPT LEFT PARENTHESIS <(s> /xe2/x82/x8d <U208d> SUBSCRIPT LEFT PARENTHESIS
<)s> /xe2/x82/x8e <U208e> SUBSCRIPT RIGHT PARENTHESIS <)s> /xe2/x82/x8e <U208e> SUBSCRIPT RIGHT PARENTHESIS
<Ff> /xe2/x82/xa3 <U20a3> FRENCH FRANK SIGN <Ff> /xe2/x82/xa3 <U20a3> FRENCH FRANC SIGN
<Li> /xe2/x82/xa4 <U20a4> LIRA SIGN <Li> /xe2/x82/xa4 <U20a4> LIRA SIGN
<Pt> /xe2/x82/xa7 <U20a7> PESETA SIGN <Pt> /xe2/x82/xa7 <U20a7> PESETA SIGN
<W=> /xe2/x82/xa9 <U20a9> WON SIGN <W=> /xe2/x82/xa9 <U20a9> WON SIGN
@ -1546,7 +1546,7 @@ CHARMAP
<RO> /xe2/x96/xa2 <U25a2> WHITE SQUARE WITH ROUNDED CORNERS <RO> /xe2/x96/xa2 <U25a2> WHITE SQUARE WITH ROUNDED CORNERS
<Rr> /xe2/x96/xa3 <U25a3> WHITE SQUARE CONTAINING BLACK SMALL SQUARE <Rr> /xe2/x96/xa3 <U25a3> WHITE SQUARE CONTAINING BLACK SMALL SQUARE
<RF> /xe2/x96/xa4 <U25a4> SQUARE WITH HORIZONTAL FILL <RF> /xe2/x96/xa4 <U25a4> SQUARE WITH HORIZONTAL FILL
<RY> /x00 SQUARE WITH VERTICAL FILL <RY> /xe2/x96/xa5 <U25a5> SQUARE WITH VERTICAL FILL
<RH> /xe2/x96/xa6 <U25a6> SQUARE WITH ORTHOGONAL CROSSHATCH FILL <RH> /xe2/x96/xa6 <U25a6> SQUARE WITH ORTHOGONAL CROSSHATCH FILL
<RZ> /xe2/x96/xa7 <U25a7> SQUARE WITH UPPER LEFT TO LOWER RIGHT FILL <RZ> /xe2/x96/xa7 <U25a7> SQUARE WITH UPPER LEFT TO LOWER RIGHT FILL
<RK> /xe2/x96/xa8 <U25a8> SQUARE WITH UPPER RIGHT TO LOWER LEFT FILL <RK> /xe2/x96/xa8 <U25a8> SQUARE WITH UPPER RIGHT TO LOWER LEFT FILL
@ -1608,7 +1608,7 @@ CHARMAP
<,_> /xe3/x80/x81 <U3001> IDEOGRAPHIC COMMA <,_> /xe3/x80/x81 <U3001> IDEOGRAPHIC COMMA
<._> /xe3/x80/x82 <U3002> IDEOGRAPHIC FULL STOP <._> /xe3/x80/x82 <U3002> IDEOGRAPHIC FULL STOP
<+"> /xe3/x80/x83 <U3003> DITTO MARK <+"> /xe3/x80/x83 <U3003> DITTO MARK
<JIS> /xe3/x80/x84 <U3004> JAPANESE INDUSTRIAL STANDARD SIGN <JIS> /xe3/x80/x84 <U3004> JAPANESE INDUSTRIAL STANDARD SYMBOL
<*_> /xe3/x80/x85 <U3005> IDEOGRAPHIC ITERATION MARK <*_> /xe3/x80/x85 <U3005> IDEOGRAPHIC ITERATION MARK
<;_> /xe3/x80/x86 <U3006> IDEOGRAPHIC CLOSING MARK <;_> /xe3/x80/x86 <U3006> IDEOGRAPHIC CLOSING MARK
<0_> /xe3/x80/x87 <U3007> IDEOGRAPHIC NUMBER ZERO <0_> /xe3/x80/x87 <U3007> IDEOGRAPHIC NUMBER ZERO
@ -1829,7 +1829,7 @@ CHARMAP
<fl> /xef/xac/x82 <Ufb02> LATIN SMALL LIGATURE FL <fl> /xef/xac/x82 <Ufb02> LATIN SMALL LIGATURE FL
<ffi> /xef/xac/x83 <Ufb03> LATIN SMALL LIGATURE FFI <ffi> /xef/xac/x83 <Ufb03> LATIN SMALL LIGATURE FFI
<ffl> /xef/xac/x84 <Ufb04> LATIN SMALL LIGATURE FFL <ffl> /xef/xac/x84 <Ufb04> LATIN SMALL LIGATURE FFL
<ft> /xef/xac/x85 <Ufb05> LATIN SMALL LIGATURE FT <ft> /xef/xac/x85 <Ufb05> LATIN SMALL LIGATURE LONG S T
<st> /xef/xac/x86 <Ufb06> LATIN SMALL LIGATURE ST <st> /xef/xac/x86 <Ufb06> LATIN SMALL LIGATURE ST
<3+;> /xef/xb9/xbd <Ufe7d> ARABIC SHADDA MEDIAL FORM <3+;> /xef/xb9/xbd <Ufe7d> ARABIC SHADDA MEDIAL FORM
<aM.> /xef/xba/x82 <Ufe82> ARABIC LETTER ALEF WITH MADDA ABOVE FINAL FORM <aM.> /xef/xba/x82 <Ufe82> ARABIC LETTER ALEF WITH MADDA ABOVE FINAL FORM

View File

@ -233,7 +233,7 @@ escape_char /
<S3> <U008F> SINGLE-SHIFT THREE (SS3) <S3> <U008F> SINGLE-SHIFT THREE (SS3)
<DC> <U0090> DEVICE CONTROL STRING (DCS) <DC> <U0090> DEVICE CONTROL STRING (DCS)
<P1> <U0091> PRIVATE USE ONE (PU1) <P1> <U0091> PRIVATE USE ONE (PU1)
<P2> <U0092> PRIVATE USE ONE (PU2) <P2> <U0092> PRIVATE USE TWO (PU2)
<TS> <U0093> SET TRANSMIT STATE (STS) <TS> <U0093> SET TRANSMIT STATE (STS)
<CC> <U0094> CANCEL CHARACTER (CCH) <CC> <U0094> CANCEL CHARACTER (CCH)
<MW> <U0095> MESSAGE WAITING (MW) <MW> <U0095> MESSAGE WAITING (MW)

View File

@ -1,4 +1,3 @@
/* @(#)pmap_clnt.c 2.2 88/08/01 4.0 RPCSRC */
/* /*
* Sun RPC is a product of Sun Microsystems, Inc. and is provided for * Sun RPC is a product of Sun Microsystems, Inc. and is provided for
* unrestricted use provided that this legend is included on all tape * unrestricted use provided that this legend is included on all tape
@ -27,21 +26,81 @@
* 2550 Garcia Avenue * 2550 Garcia Avenue
* Mountain View, California 94043 * Mountain View, California 94043
*/ */
#if !defined(lint) && defined(SCCSIDS) /*
static char sccsid[] = "@(#)pmap_clnt.c 1.37 87/08/11 Copyr 1984 Sun Micro"; * Copyright (C) 1984, Sun Microsystems, Inc.
#endif */
/* /*
* pmap_clnt.c * pmap_clnt.c
* Client interface to pmap rpc service. * Client interface to pmap rpc service.
*
* Copyright (C) 1984, Sun Microsystems, Inc.
*/ */
#include <stdio.h>
#include <unistd.h>
#include <net/if.h>
#include <sys/ioctl.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <rpc/rpc.h> #include <rpc/rpc.h>
#include <rpc/pmap_prot.h> #include <rpc/pmap_prot.h>
#include <rpc/pmap_clnt.h> #include <rpc/pmap_clnt.h>
/*
* Same as get_myaddress, but we try to use the loopback
* interface. portmap caches interfaces, and on DHCP clients,
* it could be that only loopback is started at this time.
*/
static void
__get_myaddress (struct sockaddr_in *addr)
{
int s;
char buf[BUFSIZ];
struct ifconf ifc;
struct ifreq ifreq, *ifr;
int len, loopback = 1;
if ((s = __socket (AF_INET, SOCK_DGRAM, 0)) < 0)
{
perror ("__get_myaddress: socket");
exit (1);
}
ifc.ifc_len = sizeof (buf);
ifc.ifc_buf = buf;
if (__ioctl (s, SIOCGIFCONF, (char *) &ifc) < 0)
{
perror (_("__get_myaddress: ioctl (get interface configuration)"));
exit (1);
}
again:
ifr = ifc.ifc_req;
for (len = ifc.ifc_len; len; len -= sizeof ifreq)
{
ifreq = *ifr;
if (__ioctl (s, SIOCGIFFLAGS, (char *) &ifreq) < 0)
{
perror ("__get_myaddress: ioctl");
exit (1);
}
if ((ifreq.ifr_flags & IFF_UP) && (ifr->ifr_addr.sa_family == AF_INET)
&& ((ifreq.ifr_flags & IFF_LOOPBACK) || (loopback == 0)))
{
*addr = *((struct sockaddr_in *) &ifr->ifr_addr);
addr->sin_port = htons (PMAPPORT);
__close (s);
return;
}
ifr++;
}
if (loopback == 1)
{
loopback = 0;
goto again;
}
__close (s);
}
static const struct timeval timeout = {5, 0}; static const struct timeval timeout = {5, 0};
static const struct timeval tottimeout = {60, 0}; static const struct timeval tottimeout = {60, 0};
@ -58,7 +117,7 @@ pmap_set (u_long program, u_long version, int protocol, u_short port)
struct pmap parms; struct pmap parms;
bool_t rslt; bool_t rslt;
get_myaddress (&myaddress); __get_myaddress (&myaddress);
client = clntudp_bufcreate (&myaddress, PMAPPROG, PMAPVERS, client = clntudp_bufcreate (&myaddress, PMAPPROG, PMAPVERS,
timeout, &socket, RPCSMALLMSGSIZE, RPCSMALLMSGSIZE); timeout, &socket, RPCSMALLMSGSIZE, RPCSMALLMSGSIZE);
if (client == (CLIENT *) NULL) if (client == (CLIENT *) NULL)
@ -92,7 +151,7 @@ pmap_unset (u_long program, u_long version)
struct pmap parms; struct pmap parms;
bool_t rslt; bool_t rslt;
get_myaddress (&myaddress); __get_myaddress (&myaddress);
client = clntudp_bufcreate (&myaddress, PMAPPROG, PMAPVERS, client = clntudp_bufcreate (&myaddress, PMAPPROG, PMAPVERS,
timeout, &socket, RPCSMALLMSGSIZE, RPCSMALLMSGSIZE); timeout, &socket, RPCSMALLMSGSIZE, RPCSMALLMSGSIZE);
if (client == (CLIENT *) NULL) if (client == (CLIENT *) NULL)