[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[commits] r4452 - in /fsf/trunk/libc: ./ iconvdata/ inet/ localedata/ localedata/charmaps/ nptl/ nptl/sysdeps/pthread/ stdio-common/ s...



Author: eglibc
Date: Sat Dec  8 00:04:06 2007
New Revision: 4452

Log:
Import glibc-mainline for 2007-12-08

Added:
    fsf/trunk/libc/iconvdata/hp-roman9.c
    fsf/trunk/libc/inet/tst-ether_line.c
    fsf/trunk/libc/localedata/charmaps/HP-ROMAN9
    fsf/trunk/libc/stdio-common/bug21.c
Modified:
    fsf/trunk/libc/ChangeLog
    fsf/trunk/libc/iconvdata/Makefile
    fsf/trunk/libc/iconvdata/hp-roman8.c
    fsf/trunk/libc/iconvdata/tst-tables.sh
    fsf/trunk/libc/inet/Makefile
    fsf/trunk/libc/inet/ether_line.c
    fsf/trunk/libc/localedata/ChangeLog
    fsf/trunk/libc/nptl/ChangeLog
    fsf/trunk/libc/nptl/sysdeps/pthread/pthread.h
    fsf/trunk/libc/stdio-common/Makefile
    fsf/trunk/libc/stdio-common/vfscanf.c
    fsf/trunk/libc/sysdeps/unix/sysv/linux/bits/sched.h

Modified: fsf/trunk/libc/ChangeLog
==============================================================================
--- fsf/trunk/libc/ChangeLog (original)
+++ fsf/trunk/libc/ChangeLog Sat Dec  8 00:04:06 2007
@@ -1,3 +1,32 @@
+2007-12-07  Ulrich Drepper  <drepper@xxxxxxxxxx>
+
+	[BZ #5427]
+	* iconvdata/hp-roman9.c: New file.
+	* iconvdata/Makefile: Add rules for hp-roman9.c.
+	* iconvdata/tst-tables.sh: Add HP-ROMAN9.
+
+	* iconvdata/hp-roman8.c: Use 8bit-gap instead of 8bit-generic.
+	* iconvdata/Makefile: Adjust appropriately.
+
+	[BZ #5441]
+	* stdio-common/vfscanf.c (_IO_vfwscanf): Don't free ptrs_to_free
+	structure, it's allocated with alloca.
+	* stdio-common/Makefile (tests): Add bug21.
+	* stdio-common/bug21.c: New file.
+
+2007-12-06  Aurelien Jarno  <aurelien@xxxxxxxxxxx>
+
+	[BZ #5452]
+	* sysdeps/unix/sysv/linux/bits/sched.h: Use __extension__
+	keyword for gcc's braced-groups.
+
+2007-12-07  Ulrich Drepper  <drepper@xxxxxxxxxx>
+
+	[BZ #5454]
+	* inet/ether_line.c: Strip hostname of whitespaces.
+	* inet/Makefile (tests): Add tst-ether_line.
+	* inet/tst-ether_line.c: New file.
+
 2007-12-03  Ulrich Drepper  <drepper@xxxxxxxxxx>
 
 	[BZ #5439]

Modified: fsf/trunk/libc/iconvdata/Makefile
==============================================================================
--- fsf/trunk/libc/iconvdata/Makefile (original)
+++ fsf/trunk/libc/iconvdata/Makefile Sat Dec  8 00:04:06 2007
@@ -25,7 +25,7 @@
 modules	:= ISO8859-1 ISO8859-2 ISO8859-3 ISO8859-4 ISO8859-5		 \
 	   ISO8859-6 ISO8859-7 ISO8859-8 ISO8859-9 ISO8859-10		 \
 	   ISO8859-11 ISO8859-13 ISO8859-14 ISO8859-15 ISO8859-16	 \
-	   T.61 ISO_6937 SJIS KOI-8 HP-ROMAN8 EBCDIC-AT-DE		 \
+	   T.61 ISO_6937 SJIS KOI-8 HP-ROMAN8 HP-ROMAN9 EBCDIC-AT-DE	 \
 	   EBCDIC-AT-DE-A EBCDIC-CA-FR EUC-KR UHC JOHAB libJIS libKSC	 \
 	   BIG5 EUC-JP libGB EUC-CN libCNS EUC-TW ISO646 EBCDIC-DK-NO	 \
 	   EBCDIC-DK-NO-A EBCDIC-ES EBCDIC-ES-A EBCDIC-ES-S EBCDIC-FI-SE \
@@ -198,7 +198,7 @@
 	      ibm12712.c ibm12712.h ibm16804.c ibm16804.h                   \
 	      ibm1364.c ibm1364.h ibm1371.c ibm1371.h ibm1388.c ibm1388.h   \
 	      ibm1390.c ibm1390.h ibm1399.c ibm1399.h iso_11548-1.c mik.c   \
-	      brf.c mac-centraleurope.c
+	      brf.c mac-centraleurope.c hp-roman9.c
 
 # We build the transformation modules only when we build shared libs.
 ifeq (yes,$(build-shared))
@@ -217,7 +217,7 @@
 # We can build the conversion tables for numerous charsets automatically.
 
 gen-8bit-modules := iso8859-2 iso8859-3 iso8859-4 iso8859-6 iso8859-9 koi-8 \
-		    hp-roman8 ebcdic-at-de ebcdic-at-de-a ebcdic-ca-fr	    \
+		    ebcdic-at-de ebcdic-at-de-a ebcdic-ca-fr		    \
 		    ebcdic-dk-no ebcdic-dk-no-a ebcdic-es ebcdic-es-a	    \
 		    ebcdic-es-s ebcdic-fi-se ebcdic-fi-se-a ebcdic-fr	    \
 		    ebcdic-is-friss ebcdic-it ebcdic-pt ebcdic-uk ebcdic-us \
@@ -241,7 +241,7 @@
 			iso-ir-197 tis-620 koi8-u ibm874 cp10007 koi8-t	   \
 			georgian-ps georgian-academy iso-ir-209 mac-sami   \
 			iso8859-11 ibm866nav pt154 rk1048 mik brf \
-			mac-centraleurope koi8-ru
+			mac-centraleurope koi8-ru hp-roman8 hp-roman9
 
 gen-special-modules := iso8859-7jp
 

Modified: fsf/trunk/libc/iconvdata/hp-roman8.c
==============================================================================
--- fsf/trunk/libc/iconvdata/hp-roman8.c (original)
+++ fsf/trunk/libc/iconvdata/hp-roman8.c Sat Dec  8 00:04:06 2007
@@ -1,5 +1,5 @@
 /* Conversion from and to HP-ROMAN8.
-   Copyright (C) 1997, 1998 Free Software Foundation, Inc.
+   Copyright (C) 1997, 1998, 2007 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Ulrich Drepper <drepper@xxxxxxxxxx>, 1997.
 
@@ -20,10 +20,10 @@
 
 #include <stdint.h>
 
-/* Get the conversion table.  */
-#include <hp-roman8.h>
+/* Specify the conversion table.  */
+#define TABLES <hp-roman8.h>
 
 #define CHARSET_NAME	"HP-ROMAN8//"
 #define HAS_HOLES	1	/* Not all 256 character are defined.  */
 
-#include <8bit-generic.c>
+#include <8bit-gap.c>

Added: fsf/trunk/libc/iconvdata/hp-roman9.c
==============================================================================
--- fsf/trunk/libc/iconvdata/hp-roman9.c (added)
+++ fsf/trunk/libc/iconvdata/hp-roman9.c Sat Dec  8 00:04:06 2007
@@ -1,0 +1,29 @@
+/* Conversion from and to HP-ROMAN9.
+   Copyright (C) 2007 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+   Contributed by Ulrich Drepper <drepper@xxxxxxxxxx>, 2007.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, write to the Free
+   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+   02111-1307 USA.  */
+
+#include <stdint.h>
+
+/* Specify the conversion table.  */
+#define TABLES <hp-roman9.h>
+
+#define CHARSET_NAME	"HP-ROMAN9//"
+#define HAS_HOLES	1	/* Not all 256 character are defined.  */
+
+#include <8bit-gap.c>

Modified: fsf/trunk/libc/iconvdata/tst-tables.sh
==============================================================================
--- fsf/trunk/libc/iconvdata/tst-tables.sh (original)
+++ fsf/trunk/libc/iconvdata/tst-tables.sh Sat Dec  8 00:04:06 2007
@@ -80,6 +80,7 @@
   LATIN-GREEK
   LATIN-GREEK-1
   HP-ROMAN8
+  HP-ROMAN9
   EBCDIC-AT-DE
   EBCDIC-AT-DE-A
   EBCDIC-CA-FR

Modified: fsf/trunk/libc/inet/Makefile
==============================================================================
--- fsf/trunk/libc/inet/Makefile (original)
+++ fsf/trunk/libc/inet/Makefile Sat Dec  8 00:04:06 2007
@@ -52,7 +52,7 @@
 aux := check_pf check_native ifreq
 
 tests := htontest test_ifindex tst-ntoa tst-ether_aton tst-network \
-	 tst-gethnm test-ifaddrs bug-if1 test-inet6_opt
+	 tst-gethnm test-ifaddrs bug-if1 test-inet6_opt tst-ether_line
 
 include ../Rules
 

Modified: fsf/trunk/libc/inet/ether_line.c
==============================================================================
--- fsf/trunk/libc/inet/ether_line.c (original)
+++ fsf/trunk/libc/inet/ether_line.c Sat Dec  8 00:04:06 2007
@@ -61,19 +61,20 @@
 	++line;
     }
 
-  /* Remove trailing white space.  */
-  cp = __strchrnul (line, '#');
-  while (cp > line && isspace (cp[-1]))
-    --cp;
+  /* Skip initial whitespace.  */
+  while (isspace (*line))
+    ++line;
 
-  if (cp == line)
+  if (*line == '#' || *line == '\0')
     /* No hostname.  */
     return -1;
 
+  /* The hostname is up to the next non-space character.  */
   /* XXX This can cause trouble because the hostname might be too long
      but we have no possibility to check it here.  */
-  memcpy (hostname, line, cp - line);
-  hostname [cp - line] = '\0';
+  while (*line != '\0' && *line != '#' && !isspace (*line))
+    *hostname++ = *line++;
+  *hostname = '\0';
 
   return 0;
 }

Added: fsf/trunk/libc/inet/tst-ether_line.c
==============================================================================
--- fsf/trunk/libc/inet/tst-ether_line.c (added)
+++ fsf/trunk/libc/inet/tst-ether_line.c Sat Dec  8 00:04:06 2007
@@ -1,0 +1,38 @@
+#include <stdio.h>
+#include <string.h>
+#include <netinet/ether.h>
+
+
+static int
+do_test (void)
+{
+  struct ether_addr a;
+  char buf[1000];
+  if (ether_line ("00:01:02:03:04:05       aaaaa   \n", &a, buf) != 0)
+    {
+      puts ("ether_line failed");
+      return 1;
+    }
+
+  int res = 0;
+  int i;
+  for (i = 0; i < ETH_ALEN; ++i)
+    {
+      printf ("%02x%s",
+	      (int) a.ether_addr_octet[i], i + 1 == ETH_ALEN ? "" : ":");
+      if (a.ether_addr_octet[i] != i)
+	{
+	  printf ("octet %d is %d, expected %d\n",
+		  i, (int) a.ether_addr_octet[i], i);
+	  res = 1;
+	}
+    }
+
+  printf (" \"%s\"\n", buf);
+  res |= strcmp (buf, "aaaaa") != 0;
+
+  return res;
+}
+
+#define TEST_FUNCTION do_test ()
+#include "../test-skeleton.c"

Modified: fsf/trunk/libc/localedata/ChangeLog
==============================================================================
--- fsf/trunk/libc/localedata/ChangeLog (original)
+++ fsf/trunk/libc/localedata/ChangeLog Sat Dec  8 00:04:06 2007
@@ -1,3 +1,8 @@
+2007-12-07  Ulrich Drepper  <drepper@xxxxxxxxxx>
+
+	[BZ #5427]
+	* charmaps/HP-ROMAN9: New file.
+
 2007-12-04  Ulrich Drepper  <drepper@xxxxxxxxxx>
 
 	* locales/si_LK (mon): Fix February and November spelling.

Added: fsf/trunk/libc/localedata/charmaps/HP-ROMAN9
==============================================================================
--- fsf/trunk/libc/localedata/charmaps/HP-ROMAN9 (added)
+++ fsf/trunk/libc/localedata/charmaps/HP-ROMAN9 Sat Dec  8 00:04:06 2007
@@ -1,0 +1,263 @@
+<code_set_name> HP-ROMAN9
+<comment_char> %
+<escape_char> /
+
+% alias ROMAN9
+% alias R9
+CHARMAP
+<U0000>     /x00         NULL (NUL)
+<U0001>     /x01         START OF HEADING (SOH)
+<U0002>     /x02         START OF TEXT (STX)
+<U0003>     /x03         END OF TEXT (ETX)
+<U0004>     /x04         END OF TRANSMISSION (EOT)
+<U0005>     /x05         ENQUIRY (ENQ)
+<U0006>     /x06         ACKNOWLEDGE (ACK)
+<U0007>     /x07         BELL (BEL)
+<U0008>     /x08         BACKSPACE (BS)
+<U0009>     /x09         CHARACTER TABULATION (HT)
+<U000A>     /x0a         LINE FEED (LF)
+<U000B>     /x0b         LINE TABULATION (VT)
+<U000C>     /x0c         FORM FEED (FF)
+<U000D>     /x0d         CARRIAGE RETURN (CR)
+<U000E>     /x0e         SHIFT OUT (SO)
+<U000F>     /x0f         SHIFT IN (SI)
+<U0010>     /x10         DATALINK ESCAPE (DLE)
+<U0011>     /x11         DEVICE CONTROL ONE (DC1)
+<U0012>     /x12         DEVICE CONTROL TWO (DC2)
+<U0013>     /x13         DEVICE CONTROL THREE (DC3)
+<U0014>     /x14         DEVICE CONTROL FOUR (DC4)
+<U0015>     /x15         NEGATIVE ACKNOWLEDGE (NAK)
+<U0016>     /x16         SYNCHRONOUS IDLE (SYN)
+<U0017>     /x17         END OF TRANSMISSION BLOCK (ETB)
+<U0018>     /x18         CANCEL (CAN)
+<U0019>     /x19         END OF MEDIUM (EM)
+<U001A>     /x1a         SUBSTITUTE (SUB)
+<U001B>     /x1b         ESCAPE (ESC)
+<U001C>     /x1c         FILE SEPARATOR (IS4)
+<U001D>     /x1d         GROUP SEPARATOR (IS3)
+<U001E>     /x1e         RECORD SEPARATOR (IS2)
+<U001F>     /x1f         UNIT SEPARATOR (IS1)
+<U0020>     /x20         SPACE
+<U0021>     /x21         EXCLAMATION MARK
+<U0022>     /x22         QUOTATION MARK
+<U0023>     /x23         NUMBER SIGN
+<U0024>     /x24         DOLLAR SIGN
+<U0025>     /x25         PERCENT SIGN
+<U0026>     /x26         AMPERSAND
+<U0027>     /x27         APOSTROPHE
+<U0028>     /x28         LEFT PARENTHESIS
+<U0029>     /x29         RIGHT PARENTHESIS
+<U002A>     /x2a         ASTERISK
+<U002B>     /x2b         PLUS SIGN
+<U002C>     /x2c         COMMA
+<U002D>     /x2d         HYPHEN-MINUS
+<U002E>     /x2e         FULL STOP
+<U002F>     /x2f         SOLIDUS
+<U0030>     /x30         DIGIT ZERO
+<U0031>     /x31         DIGIT ONE
+<U0032>     /x32         DIGIT TWO
+<U0033>     /x33         DIGIT THREE
+<U0034>     /x34         DIGIT FOUR
+<U0035>     /x35         DIGIT FIVE
+<U0036>     /x36         DIGIT SIX
+<U0037>     /x37         DIGIT SEVEN
+<U0038>     /x38         DIGIT EIGHT
+<U0039>     /x39         DIGIT NINE
+<U003A>     /x3a         COLON
+<U003B>     /x3b         SEMICOLON
+<U003C>     /x3c         LESS-THAN SIGN
+<U003D>     /x3d         EQUALS SIGN
+<U003E>     /x3e         GREATER-THAN SIGN
+<U003F>     /x3f         QUESTION MARK
+<U0040>     /x40         COMMERCIAL AT
+<U0041>     /x41         LATIN CAPITAL LETTER A
+<U0042>     /x42         LATIN CAPITAL LETTER B
+<U0043>     /x43         LATIN CAPITAL LETTER C
+<U0044>     /x44         LATIN CAPITAL LETTER D
+<U0045>     /x45         LATIN CAPITAL LETTER E
+<U0046>     /x46         LATIN CAPITAL LETTER F
+<U0047>     /x47         LATIN CAPITAL LETTER G
+<U0048>     /x48         LATIN CAPITAL LETTER H
+<U0049>     /x49         LATIN CAPITAL LETTER I
+<U004A>     /x4a         LATIN CAPITAL LETTER J
+<U004B>     /x4b         LATIN CAPITAL LETTER K
+<U004C>     /x4c         LATIN CAPITAL LETTER L
+<U004D>     /x4d         LATIN CAPITAL LETTER M
+<U004E>     /x4e         LATIN CAPITAL LETTER N
+<U004F>     /x4f         LATIN CAPITAL LETTER O
+<U0050>     /x50         LATIN CAPITAL LETTER P
+<U0051>     /x51         LATIN CAPITAL LETTER Q
+<U0052>     /x52         LATIN CAPITAL LETTER R
+<U0053>     /x53         LATIN CAPITAL LETTER S
+<U0054>     /x54         LATIN CAPITAL LETTER T
+<U0055>     /x55         LATIN CAPITAL LETTER U
+<U0056>     /x56         LATIN CAPITAL LETTER V
+<U0057>     /x57         LATIN CAPITAL LETTER W
+<U0058>     /x58         LATIN CAPITAL LETTER X
+<U0059>     /x59         LATIN CAPITAL LETTER Y
+<U005A>     /x5a         LATIN CAPITAL LETTER Z
+<U005B>     /x5b         LEFT SQUARE BRACKET
+<U005C>     /x5c         REVERSE SOLIDUS
+<U005D>     /x5d         RIGHT SQUARE BRACKET
+<U005E>     /x5e         CIRCUMFLEX ACCENT
+<U005F>     /x5f         LOW LINE
+<U0060>     /x60         GRAVE ACCENT
+<U0061>     /x61         LATIN SMALL LETTER A
+<U0062>     /x62         LATIN SMALL LETTER B
+<U0063>     /x63         LATIN SMALL LETTER C
+<U0064>     /x64         LATIN SMALL LETTER D
+<U0065>     /x65         LATIN SMALL LETTER E
+<U0066>     /x66         LATIN SMALL LETTER F
+<U0067>     /x67         LATIN SMALL LETTER G
+<U0068>     /x68         LATIN SMALL LETTER H
+<U0069>     /x69         LATIN SMALL LETTER I
+<U006A>     /x6a         LATIN SMALL LETTER J
+<U006B>     /x6b         LATIN SMALL LETTER K
+<U006C>     /x6c         LATIN SMALL LETTER L
+<U006D>     /x6d         LATIN SMALL LETTER M
+<U006E>     /x6e         LATIN SMALL LETTER N
+<U006F>     /x6f         LATIN SMALL LETTER O
+<U0070>     /x70         LATIN SMALL LETTER P
+<U0071>     /x71         LATIN SMALL LETTER Q
+<U0072>     /x72         LATIN SMALL LETTER R
+<U0073>     /x73         LATIN SMALL LETTER S
+<U0074>     /x74         LATIN SMALL LETTER T
+<U0075>     /x75         LATIN SMALL LETTER U
+<U0076>     /x76         LATIN SMALL LETTER V
+<U0077>     /x77         LATIN SMALL LETTER W
+<U0078>     /x78         LATIN SMALL LETTER X
+<U0079>     /x79         LATIN SMALL LETTER Y
+<U007A>     /x7a         LATIN SMALL LETTER Z
+<U007B>     /x7b         LEFT CURLY BRACKET
+<U007C>     /x7c         VERTICAL LINE
+<U007D>     /x7d         RIGHT CURLY BRACKET
+<U007E>     /x7e         TILDE
+<U007F>     /x7f         DELETE (DEL)
+<U0080>     /x80         PADDING CHARACTER (PAD)
+<U0081>     /x81         HIGH OCTET PRESET (HOP)
+<U0082>     /x82         BREAK PERMITTED HERE (BPH)
+<U0083>     /x83         NO BREAK HERE (NBH)
+<U0084>     /x84         INDEX (IND)
+<U0085>     /x85         NEXT LINE (NEL)
+<U0086>     /x86         START OF SELECTED AREA (SSA)
+<U0087>     /x87         END OF SELECTED AREA (ESA)
+<U0088>     /x88         CHARACTER TABULATION SET (HTS)
+<U0089>     /x89         CHARACTER TABULATION WITH JUSTIFICATION (HTJ)
+<U008A>     /x8a         LINE TABULATION SET (VTS)
+<U008B>     /x8b         PARTIAL LINE FORWARD (PLD)
+<U008C>     /x8c         PARTIAL LINE BACKWARD (PLU)
+<U008D>     /x8d         REVERSE LINE FEED (RI)
+<U008E>     /x8e         SINGLE-SHIFT TWO (SS2)
+<U008F>     /x8f         SINGLE-SHIFT THREE (SS3)
+<U0090>     /x90         DEVICE CONTROL STRING (DCS)
+<U0091>     /x91         PRIVATE USE ONE (PU1)
+<U0092>     /x92         PRIVATE USE TWO (PU2)
+<U0093>     /x93         SET TRANSMIT STATE (STS)
+<U0094>     /x94         CANCEL CHARACTER (CCH)
+<U0095>     /x95         MESSAGE WAITING (MW)
+<U0096>     /x96         START OF GUARDED AREA (SPA)
+<U0097>     /x97         END OF GUARDED AREA (EPA)
+<U0098>     /x98         START OF STRING (SOS)
+<U0099>     /x99         SINGLE GRAPHIC CHARACTER INTRODUCER (SGCI)
+<U009A>     /x9a         SINGLE CHARACTER INTRODUCER (SCI)
+<U009B>     /x9b         CONTROL SEQUENCE INTRODUCER (CSI)
+<U009C>     /x9c         STRING TERMINATOR (ST)
+<U009D>     /x9d         OPERATING SYSTEM COMMAND (OSC)
+<U009E>     /x9e         PRIVACY MESSAGE (PM)
+<U009F>     /x9f         APPLICATION PROGRAM COMMAND (APC)
+<U00A0>     /xa0         NO-BREAK SPACE
+<U00C0>     /xa1         LATIN CAPITAL LETTER A WITH GRAVE
+<U00C2>     /xa2         LATIN CAPITAL LETTER A WITH CIRCUMFLEX
+<U00C8>     /xa3         LATIN CAPITAL LETTER E WITH GRAVE
+<U00CA>     /xa4         LATIN CAPITAL LETTER E WITH CIRCUMFLEX
+<U00CB>     /xa5         LATIN CAPITAL LETTER E WITH DIAERESIS
+<U00CE>     /xa6         LATIN CAPITAL LETTER I WITH CIRCUMFLEX
+<U00CF>     /xa7         LATIN CAPITAL LETTER I WITH DIAERESIS
+<U00B4>     /xa8         ACUTE ACCENT
+<U02CB>     /xa9         MODIFIER LETTER GRAVE ACCENT (Mandarin Chinese fourth tone)
+<U02C6>     /xaa         MODIFIER LETTER CIRCUMFLEX ACCENT
+<U00A8>     /xab         DIAERESIS
+<U02DC>     /xac         SMALL TILDE
+<U00D9>     /xad         LATIN CAPITAL LETTER U WITH GRAVE
+<U00DB>     /xae         LATIN CAPITAL LETTER U WITH CIRCUMFLEX
+<U20A4>     /xaf         LIRA SIGN
+<U00AF>     /xb0         MACRON
+<U00DD>     /xb1         LATIN CAPITAL LETTER Y WITH ACUTE
+<U00FD>     /xb2         LATIN SMALL LETTER Y WITH ACUTE
+<U00B0>     /xb3         DEGREE SIGN
+<U00C7>     /xb4         LATIN CAPITAL LETTER C WITH CEDILLA
+<U00E7>     /xb5         LATIN SMALL LETTER C WITH CEDILLA
+<U00D1>     /xb6         LATIN CAPITAL LETTER N WITH TILDE
+<U00F1>     /xb7         LATIN SMALL LETTER N WITH TILDE
+<U00A1>     /xb8         INVERTED EXCLAMATION MARK
+<U00BF>     /xb9         INVERTED QUESTION MARK
+<U20A0>     /xba         EURO-CURRENCY SIGN
+<U00A3>     /xbb         POUND SIGN
+<U00A5>     /xbc         YEN SIGN
+<U00A7>     /xbd         SECTION SIGN
+<U0192>     /xbe         LATIN SMALL LETTER F WITH HOOK
+<U00A2>     /xbf         CENT SIGN
+<U00E2>     /xc0         LATIN SMALL LETTER A WITH CIRCUMFLEX
+<U00EA>     /xc1         LATIN SMALL LETTER E WITH CIRCUMFLEX
+<U00F4>     /xc2         LATIN SMALL LETTER O WITH CIRCUMFLEX
+<U00FB>     /xc3         LATIN SMALL LETTER U WITH CIRCUMFLEX
+<U00E1>     /xc4         LATIN SMALL LETTER A WITH ACUTE
+<U00E9>     /xc5         LATIN SMALL LETTER E WITH ACUTE
+<U00F3>     /xc6         LATIN SMALL LETTER O WITH ACUTE
+<U00FA>     /xc7         LATIN SMALL LETTER U WITH ACUTE
+<U00E0>     /xc8         LATIN SMALL LETTER A WITH GRAVE
+<U00E8>     /xc9         LATIN SMALL LETTER E WITH GRAVE
+<U00F2>     /xca         LATIN SMALL LETTER O WITH GRAVE
+<U00F9>     /xcb         LATIN SMALL LETTER U WITH GRAVE
+<U00E4>     /xcc         LATIN SMALL LETTER A WITH DIAERESIS
+<U00EB>     /xcd         LATIN SMALL LETTER E WITH DIAERESIS
+<U00F6>     /xce         LATIN SMALL LETTER O WITH DIAERESIS
+<U00FC>     /xcf         LATIN SMALL LETTER U WITH DIAERESIS
+<U00C5>     /xd0         LATIN CAPITAL LETTER A WITH RING ABOVE
+<U00EE>     /xd1         LATIN SMALL LETTER I WITH CIRCUMFLEX
+<U00D8>     /xd2         LATIN CAPITAL LETTER O WITH STROKE
+<U00C6>     /xd3         LATIN CAPITAL LETTER AE
+<U00E5>     /xd4         LATIN SMALL LETTER A WITH RING ABOVE
+<U00ED>     /xd5         LATIN SMALL LETTER I WITH ACUTE
+<U00F8>     /xd6         LATIN SMALL LETTER O WITH STROKE
+<U00E6>     /xd7         LATIN SMALL LETTER AE
+<U00C4>     /xd8         LATIN CAPITAL LETTER A WITH DIAERESIS
+<U00EC>     /xd9         LATIN SMALL LETTER I WITH GRAVE
+<U00D6>     /xda         LATIN CAPITAL LETTER O WITH DIAERESIS
+<U00DC>     /xdb         LATIN CAPITAL LETTER U WITH DIAERESIS
+<U00C9>     /xdc         LATIN CAPITAL LETTER E WITH ACUTE
+<U00EF>     /xdd         LATIN SMALL LETTER I WITH DIAERESIS
+<U00DF>     /xde         LATIN SMALL LETTER SHARP S (German)
+<U00D4>     /xdf         LATIN CAPITAL LETTER O WITH CIRCUMFLEX
+<U00C1>     /xe0         LATIN CAPITAL LETTER A WITH ACUTE
+<U00C3>     /xe1         LATIN CAPITAL LETTER A WITH TILDE
+<U00E3>     /xe2         LATIN SMALL LETTER A WITH TILDE
+<U00D0>     /xe3         LATIN CAPITAL LETTER ETH (Icelandic)
+<U00F0>     /xe4         LATIN SMALL LETTER ETH (Icelandic)
+<U00CD>     /xe5         LATIN CAPITAL LETTER I WITH ACUTE
+<U00CC>     /xe6         LATIN CAPITAL LETTER I WITH GRAVE
+<U00D3>     /xe7         LATIN CAPITAL LETTER O WITH ACUTE
+<U00D2>     /xe8         LATIN CAPITAL LETTER O WITH GRAVE
+<U00D5>     /xe9         LATIN CAPITAL LETTER O WITH TILDE
+<U00F5>     /xea         LATIN SMALL LETTER O WITH TILDE
+<U0160>     /xeb         LATIN CAPITAL LETTER S WITH CARON
+<U0161>     /xec         LATIN SMALL LETTER S WITH CARON
+<U00DA>     /xed         LATIN CAPITAL LETTER U WITH ACUTE
+<U0178>     /xee         LATIN CAPITAL LETTER Y WITH DIAERESIS
+<U00FF>     /xef         LATIN SMALL LETTER Y WITH DIAERESIS
+<U00DE>     /xf0         LATIN CAPITAL LETTER THORN (Icelandic)
+<U00FE>     /xf1         LATIN SMALL LETTER THORN (Icelandic)
+<U00B7>     /xf2         MIDDLE DOT
+<U00B5>     /xf3         MICRO SIGN
+<U00B6>     /xf4         PILCROW SIGN
+<U00BE>     /xf5         VULGAR FRACTION THREE QUARTERS
+<U2014>     /xf6         EM DASH
+<U00BC>     /xf7         VULGAR FRACTION ONE QUARTER
+<U00BD>     /xf8         VULGAR FRACTION ONE HALF
+<U00AA>     /xf9         FEMININE ORDINAL INDICATOR
+<U00BA>     /xfa         MASCULINE ORDINAL INDICATOR
+<U00AB>     /xfb         LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+<U25A0>     /xfc         BLACK SQUARE
+<U00BB>     /xfd         RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+<U00B1>     /xfe         PLUS-MINUS SIGN
+END CHARMAP

Modified: fsf/trunk/libc/nptl/ChangeLog
==============================================================================
--- fsf/trunk/libc/nptl/ChangeLog (original)
+++ fsf/trunk/libc/nptl/ChangeLog Sat Dec  8 00:04:06 2007
@@ -1,3 +1,10 @@
+2007-12-07  Ulrich Drepper  <drepper@xxxxxxxxxx>
+
+	[BZ #5455]
+	* sysdeps/pthread/pthread.h [!__EXCEPTIONS] (pthread_cleanup_pop):
+	Allow label before pthread_cleanup_pop.
+	(pthread_cleanup_pop_restore_np): Likewise.
+
 2007-12-04  Kaz Kojima  <kkojima@xxxxxxxxxxxxxx>
 
 	* sysdeps/unix/sysv/linux/sh/lowlevellock.S (__lll_timedlock_wait):

Modified: fsf/trunk/libc/nptl/sysdeps/pthread/pthread.h
==============================================================================
--- fsf/trunk/libc/nptl/sysdeps/pthread/pthread.h (original)
+++ fsf/trunk/libc/nptl/sysdeps/pthread/pthread.h Sat Dec  8 00:04:06 2007
@@ -655,6 +655,7 @@
 /* Remove a cleanup handler installed by the matching pthread_cleanup_push.
    If EXECUTE is non-zero, the handler function is called. */
 # define pthread_cleanup_pop(execute) \
+      do; while (0); /* Empty to allow label before pthread_cleanup_pop.  */  \
     } while (0);							      \
     __pthread_unregister_cancel (&__cancel_buf);			      \
     if (execute)							      \
@@ -690,6 +691,7 @@
    restores the cancellation type that was in effect when the matching
    pthread_cleanup_push_defer was called.  */
 #  define pthread_cleanup_pop_restore_np(execute) \
+      do; while (0); /* Empty to allow label before pthread_cleanup_pop.  */  \
     } while (0);							      \
     __pthread_unregister_cancel_restore (&__cancel_buf);		      \
     if (execute)							      \

Modified: fsf/trunk/libc/stdio-common/Makefile
==============================================================================
--- fsf/trunk/libc/stdio-common/Makefile (original)
+++ fsf/trunk/libc/stdio-common/Makefile Sat Dec  8 00:04:06 2007
@@ -57,7 +57,7 @@
 	 tst-perror tst-sprintf tst-rndseek tst-fdopen tst-fphex bug14 bug15 \
 	 tst-popen tst-unlockedio tst-fmemopen2 tst-put-error tst-fgets \
 	 tst-fwrite bug16 bug17 tst-swscanf tst-sprintf2 bug18 bug18a \
-	 bug19 bug19a tst-popen2 scanf13 scanf14 scanf15 bug20
+	 bug19 bug19a tst-popen2 scanf13 scanf14 scanf15 bug20 bug21
 
 test-srcs = tst-unbputc tst-printf
 

Added: fsf/trunk/libc/stdio-common/bug21.c
==============================================================================
--- fsf/trunk/libc/stdio-common/bug21.c (added)
+++ fsf/trunk/libc/stdio-common/bug21.c Sat Dec  8 00:04:06 2007
@@ -1,0 +1,16 @@
+#include <stdio.h>
+
+static int
+do_test (void)
+{
+  static const char buf[] = " ";
+  char *str;
+
+  int r = sscanf (buf, "%as", &str);
+  printf ("%d %p\n", r, str);
+
+  return r != -1 || str != NULL;
+}
+
+#define TEST_FUNCTION do_test ()
+#include "../test-skeleton.c"

Modified: fsf/trunk/libc/stdio-common/vfscanf.c
==============================================================================
--- fsf/trunk/libc/stdio-common/vfscanf.c (original)
+++ fsf/trunk/libc/stdio-common/vfscanf.c Sat Dec  8 00:04:06 2007
@@ -2845,7 +2845,6 @@
 		  *p->ptrs[cnt] = NULL;
 		}
 	      p = p->next;
-	      free (ptrs_to_free);
 	      ptrs_to_free = p;
 	    }
 	}

Modified: fsf/trunk/libc/sysdeps/unix/sysv/linux/bits/sched.h
==============================================================================
--- fsf/trunk/libc/sysdeps/unix/sysv/linux/bits/sched.h (original)
+++ fsf/trunk/libc/sysdeps/unix/sysv/linux/bits/sched.h Sat Dec  8 00:04:06 2007
@@ -132,17 +132,21 @@
   } while (0)
 # endif
 # define __CPU_SET_S(cpu, setsize, cpusetp) \
-  ({ size_t __cpu = (cpu);						      \
-     __cpu < 8 * (setsize)						      \
-     ? ((cpusetp)->__bits[__CPUELT (__cpu)] |= __CPUMASK (__cpu)) : 0; })
+  (__extension__							      \
+   ({ size_t __cpu = (cpu);						      \
+      __cpu < 8 * (setsize)						      \
+      ? ((cpusetp)->__bits[__CPUELT (__cpu)] |= __CPUMASK (__cpu)) : 0; }))
 # define __CPU_CLR_S(cpu, setsize, cpusetp) \
-  ({ size_t __cpu = (cpu);						      \
-     __cpu < 8 * (setsize)						      \
-     ? ((cpusetp)->__bits[__CPUELT (__cpu)] &= ~__CPUMASK (__cpu)) : 0; })
+  (__extension__							      \
+   ({ size_t __cpu = (cpu);						      \
+      __cpu < 8 * (setsize)						      \
+      ? ((cpusetp)->__bits[__CPUELT (__cpu)] &= ~__CPUMASK (__cpu)) : 0; }))
 # define __CPU_ISSET_S(cpu, setsize, cpusetp) \
-  ({ size_t __cpu = (cpu);						      \
-     __cpu < 8 * (setsize)						      \
-     ? (((cpusetp)->__bits[__CPUELT (__cpu)] & __CPUMASK (__cpu))) != 0 : 0; })
+  (__extension__							      \
+   ({ size_t __cpu = (cpu);						      \
+      __cpu < 8 * (setsize)						      \
+      ? (((cpusetp)->__bits[__CPUELT (__cpu)] & __CPUMASK (__cpu))) != 0      \
+      : 0; }))
 
 # define __CPU_COUNT_S(setsize, cpusetp) \
   __sched_cpucount (setsize, cpusetp)
@@ -152,25 +156,27 @@
   (__builtin_memcmp (cpusetp1, cpusetp2, setsize) == 0)
 # else
 #  define __CPU_EQUAL_S(setsize, cpusetp1, cpusetp2) \
-  ({ cpu_set_t *__arr1 = (cpusetp1);					      \
-     cpu_set_t *__arr2 = (cpusetp2);					      \
-     size_t __imax = (setsize) / sizeof (__cpu_mask);			      \
-     size_t __i;							      \
-     for (__i = 0; __i < __imax; ++__i)					      \
-       if (__arr1->__bits[__i] != __arr2->__bits[__i])			      \
-	 break;								      \
-     __i == __imax; })
+  (__extension__							      \
+   ({ cpu_set_t *__arr1 = (cpusetp1);					      \
+      cpu_set_t *__arr2 = (cpusetp2);					      \
+      size_t __imax = (setsize) / sizeof (__cpu_mask);			      \
+      size_t __i;							      \
+      for (__i = 0; __i < __imax; ++__i)				      \
+	if (__arr1->__bits[__i] != __arr2->__bits[__i])			      \
+	  break;							      \
+      __i == __imax; }))
 # endif
 
 # define __CPU_OP_S(setsize, destset, srcset1, srcset2, op) \
-  ({ cpu_set_t *__dest = (destset);					      \
-     cpu_set_t *__arr1 = (srcset1);					      \
-     cpu_set_t *__arr2 = (srcset2);					      \
-     size_t __imax = (setsize) / sizeof (__cpu_mask);			      \
-     size_t __i;							      \
-     for (__i = 0; __i < __imax; ++__i)					      \
-       __dest->__bits[__i] = __arr1->__bits[__i] op __arr2->__bits[__i];      \
-     __dest; })
+  (__extension__							      \
+   ({ cpu_set_t *__dest = (destset);					      \
+      cpu_set_t *__arr1 = (srcset1);					      \
+      cpu_set_t *__arr2 = (srcset2);					      \
+      size_t __imax = (setsize) / sizeof (__cpu_mask);			      \
+      size_t __i;							      \
+      for (__i = 0; __i < __imax; ++__i)				      \
+	__dest->__bits[__i] = __arr1->__bits[__i] op __arr2->__bits[__i];     \
+      __dest; }))
 
 # define __CPU_ALLOC_SIZE(count) \
   ((((count) + __NCPUBITS - 1) / __NCPUBITS) * 8)