Update.
authorUlrich Drepper <drepper@redhat.com>
Wed, 28 Apr 1999 10:00:35 +0000 (10:00 +0000)
committerUlrich Drepper <drepper@redhat.com>
Wed, 28 Apr 1999 10:00:35 +0000 (10:00 +0000)
* 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>

ChangeLog
libio/iofopncook.c
localedata/charmaps/UTF8
localedata/repertoiremaps/mnemonic.ds
sunrpc/pmap_clnt.c

index 200c811..0ac46ab 100644 (file)
--- 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.
 
index 4f28ec2..7820fa3 100644 (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 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
index cb2a7a7..632e66b 100644 (file)
@@ -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
index 3cc6fa3..e64bed9 100644 (file)
@@ -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)
index 68bdfab..11e241d 100644 (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
  * unrestricted use provided that this legend is included on all tape
  * 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)