summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorUlrich Drepper <drepper@redhat.com>1999-04-28 10:00:35 +0000
committerUlrich Drepper <drepper@redhat.com>1999-04-28 10:00:35 +0000
commit925ed47cfb2729953655f001df6cb9bd82360e19 (patch)
treeeb172b59d7ade049b0272d262a55eae573c03624
parent66f93c2d97c7a6299361805091513981b6277893 (diff)
Update.
* 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>
-rw-r--r--ChangeLog10
-rw-r--r--libio/iofopncook.c7
-rw-r--r--localedata/charmaps/UTF820
-rw-r--r--localedata/repertoiremaps/mnemonic.ds2
-rw-r--r--sunrpc/pmap_clnt.c77
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)