diff options
-rw-r--r-- | ChangeLog | 10 | ||||
-rw-r--r-- | libio/iofopncook.c | 7 | ||||
-rw-r--r-- | localedata/charmaps/UTF8 | 20 | ||||
-rw-r--r-- | localedata/repertoiremaps/mnemonic.ds | 2 | ||||
-rw-r--r-- | sunrpc/pmap_clnt.c | 77 |
5 files changed, 91 insertions, 25 deletions
diff --git a/ChangeLog b/ChangeLog index 200c811dda..0ac46ab466 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,15 @@ 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> + * posix/fnmatch.c (internal_fnmatch): Finish incomplete no_leading_period change. diff --git a/libio/iofopncook.c b/libio/iofopncook.c index 4f28ec20a8..7820fa325a 100644 --- a/libio/iofopncook.c +++ b/libio/iofopncook.c @@ -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 library is free software; you can redistribute it and/or @@ -81,10 +81,7 @@ _IO_cookie_seek (fp, offset, dir) pos = _IO_pos_0; _IO_pos_adjust (pos, offset); - if (cfile->io_functions.seek (cfile->cookie, pos, dir)) - return _IO_pos_BAD; - - return pos; + return cfile->io_functions.seek (cfile->cookie, pos, dir); } static int diff --git a/localedata/charmaps/UTF8 b/localedata/charmaps/UTF8 index cb2a7a72fd..632e66bdaa 100644 --- a/localedata/charmaps/UTF8 +++ b/localedata/charmaps/UTF8 @@ -51,8 +51,8 @@ CHARMAP <D4> /x14 <U0014> DEVICE CONTROL FOUR (DC4) <NAK> /x15 <U0015> NEGATIVE ACKNOWLEDGE (NAK) <NK> /x15 <U0015> NEGATIVE ACKNOWLEDGE (NAK) -<SYN> /x16 <U0016> SYNCRONOUS IDLE (SYN) -<SY> /x16 <U0016> SYNCRONOUS IDLE (SYN) +<SYN> /x16 <U0016> SYNCHRONOUS IDLE (SYN) +<SY> /x16 <U0016> SYNCHRONOUS IDLE (SYN) <ETB> /x17 <U0017> END OF TRANSMISSION BLOCK (ETB) <EB> /x17 <U0017> END OF TRANSMISSION BLOCK (ETB) <CAN> /x18 <U0018> CANCEL (CAN) @@ -524,8 +524,8 @@ CHARMAP <o1> /xc7/xad <U01ed> LATIN SMALL LETTER O WITH OGONEK AND MACRON <EZ> /xc7/xae <U01ee> LATIN CAPITAL 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/xb9 <U01f9> LATIN SMALL LETTER G WITH ACUTE +<G'> /xc7/xb4 <U01f4> LATIN CAPITAL 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/xbb <U01fb> LATIN SMALL LETTER A WITH RING ABOVE AND ACUTE <AE'> /xc7/xbc <U01fc> LATIN CAPITAL LETTER AE WITH ACUTE @@ -560,7 +560,7 @@ CHARMAP <;S> /xca/xbb <U02bb> MODIFIER LETTER TURNED COMMA <1/>> /xcb/x86 <U02c6> MODIFIER LETTER CIRCUMFLEX ACCENT <'<> /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/x99 <U02d9> DOT ABOVE (Mandarin Chinese light tone) <'0> /xcb/x9a <U02da> RING ABOVE @@ -581,7 +581,7 @@ CHARMAP <O%> /xce/x8c <U038c> GREEK CAPITAL LETTER OMICRON WITH TONOS <U%> /xce/x8e <U038e> GREEK CAPITAL LETTER UPSILON 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 <B*> /xce/x92 <U0392> GREEK CAPITAL LETTER BETA <G*> /xce/x93 <U0393> GREEK CAPITAL LETTER GAMMA @@ -1161,7 +1161,7 @@ CHARMAP <=s> /xe2/x82/x8c <U208c> SUBSCRIPT EQUALS SIGN <(s> /xe2/x82/x8d <U208d> SUBSCRIPT LEFT 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 <Pt> /xe2/x82/xa7 <U20a7> PESETA SIGN <W=> /xe2/x82/xa9 <U20a9> WON SIGN @@ -1546,7 +1546,7 @@ CHARMAP <RO> /xe2/x96/xa2 <U25a2> WHITE SQUARE WITH ROUNDED CORNERS <Rr> /xe2/x96/xa3 <U25a3> WHITE SQUARE CONTAINING BLACK SMALL SQUARE <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 <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 @@ -1608,7 +1608,7 @@ CHARMAP <,_> /xe3/x80/x81 <U3001> IDEOGRAPHIC COMMA <._> /xe3/x80/x82 <U3002> IDEOGRAPHIC FULL STOP <+"> /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/x86 <U3006> IDEOGRAPHIC CLOSING MARK <0_> /xe3/x80/x87 <U3007> IDEOGRAPHIC NUMBER ZERO @@ -1829,7 +1829,7 @@ CHARMAP <fl> /xef/xac/x82 <Ufb02> LATIN SMALL LIGATURE FL <ffi> /xef/xac/x83 <Ufb03> LATIN SMALL LIGATURE FFI <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 <3+;> /xef/xb9/xbd <Ufe7d> ARABIC SHADDA MEDIAL FORM <aM.> /xef/xba/x82 <Ufe82> ARABIC LETTER ALEF WITH MADDA ABOVE FINAL FORM diff --git a/localedata/repertoiremaps/mnemonic.ds b/localedata/repertoiremaps/mnemonic.ds index 3cc6fa36b7..e64bed9ab6 100644 --- a/localedata/repertoiremaps/mnemonic.ds +++ b/localedata/repertoiremaps/mnemonic.ds @@ -233,7 +233,7 @@ escape_char / <S3> <U008F> SINGLE-SHIFT THREE (SS3) <DC> <U0090> DEVICE CONTROL STRING (DCS) <P1> <U0091> PRIVATE USE ONE (PU1) -<P2> <U0092> PRIVATE USE ONE (PU2) +<P2> <U0092> PRIVATE USE TWO (PU2) <TS> <U0093> SET TRANSMIT STATE (STS) <CC> <U0094> CANCEL CHARACTER (CCH) <MW> <U0095> MESSAGE WAITING (MW) diff --git a/sunrpc/pmap_clnt.c b/sunrpc/pmap_clnt.c index 68bdfab01e..11e241dfcb 100644 --- a/sunrpc/pmap_clnt.c +++ b/sunrpc/pmap_clnt.c @@ -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 * unrestricted use provided that this legend is included on all tape @@ -27,21 +26,81 @@ * 2550 Garcia Avenue * Mountain View, California 94043 */ -#if !defined(lint) && defined(SCCSIDS) -static char sccsid[] = "@(#)pmap_clnt.c 1.37 87/08/11 Copyr 1984 Sun Micro"; -#endif - +/* + * Copyright (C) 1984, Sun Microsystems, Inc. + */ /* * pmap_clnt.c * 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/pmap_prot.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 tottimeout = {60, 0}; @@ -58,7 +117,7 @@ pmap_set (u_long program, u_long version, int protocol, u_short port) struct pmap parms; bool_t rslt; - get_myaddress (&myaddress); + __get_myaddress (&myaddress); client = clntudp_bufcreate (&myaddress, PMAPPROG, PMAPVERS, timeout, &socket, RPCSMALLMSGSIZE, RPCSMALLMSGSIZE); if (client == (CLIENT *) NULL) @@ -92,7 +151,7 @@ pmap_unset (u_long program, u_long version) struct pmap parms; bool_t rslt; - get_myaddress (&myaddress); + __get_myaddress (&myaddress); client = clntudp_bufcreate (&myaddress, PMAPPROG, PMAPVERS, timeout, &socket, RPCSMALLMSGSIZE, RPCSMALLMSGSIZE); if (client == (CLIENT *) NULL) |