This is the mail archive of the glibc-cvs@sourceware.org mailing list for the glibc project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

GNU C Library master sources branch master updated. glibc-2.20-23-gd7e49b1


This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "GNU C Library master sources".

The branch, master has been updated
       via  d7e49b19d3ba73f02ec4c6e8c81aeb27f52186b2 (commit)
      from  c079afb7724ce4b9ff2d6b1ca4d7e3cdebcbcd1f (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
http://sourceware.org/git/gitweb.cgi?p=glibc.git;a=commitdiff;h=d7e49b19d3ba73f02ec4c6e8c81aeb27f52186b2

commit d7e49b19d3ba73f02ec4c6e8c81aeb27f52186b2
Author: Roland McGrath <roland@hack.frob.com>
Date:   Fri Sep 12 15:59:10 2014 -0700

    Minor cleanup in ld-ctype.c

diff --git a/ChangeLog b/ChangeLog
index 67c5025..08df92d 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,12 @@
 2014-09-12  Roland McGrath  <roland@hack.frob.com>
 
+	* locale/programs/ld-ctype.c (set_one_default): New function, broken
+	out of ...
+	(set_class_defaults): ... local function set_default here.
+	Define set_default as a macro locally to pass constant parameters.
+	(allocate_arrays, set_class_defaults): Use C99 for scope for each CNT,
+	rather than a shared local.
+
 	* stdlib/rpmatch.c (try): New function, broken out of ...
 	(rpmatch): ... local function here.  Also, prototypify definition.
 
diff --git a/locale/programs/ld-ctype.c b/locale/programs/ld-ctype.c
index 505cb13..67846b3 100644
--- a/locale/programs/ld-ctype.c
+++ b/locale/programs/ld-ctype.c
@@ -2928,61 +2928,64 @@ previous definition was here")));
 }
 
 
+/* Subroutine of set_class_defaults, below.  */
+static void
+set_one_default (struct locale_ctype_t *ctype,
+                 const struct charmap_t *charmap,
+                 int bitpos, int from, int to)
+{
+  char tmp[2];
+  int ch;
+  int bit = _ISbit (bitpos);
+  int bitw = _ISwbit (bitpos);
+  /* Define string.  */
+  strcpy (tmp, "?");
+
+  for (ch = from; ch <= to; ++ch)
+    {
+      struct charseq *seq;
+      tmp[0] = ch;
+
+      seq = charmap_find_value (charmap, tmp, 1);
+      if (seq == NULL)
+        {
+          char buf[10];
+          sprintf (buf, "U%08X", ch);
+          seq = charmap_find_value (charmap, buf, 9);
+        }
+      if (seq == NULL)
+        {
+          if (!be_quiet)
+            WITH_CUR_LOCALE (error (0, 0, _("\
+%s: character `%s' not defined while needed as default value"),
+                                    "LC_CTYPE", tmp));
+        }
+      else if (seq->nbytes != 1)
+        WITH_CUR_LOCALE (error (0, 0, _("\
+%s: character `%s' in charmap not representable with one byte"),
+                                "LC_CTYPE", tmp));
+      else
+        ctype->class256_collection[seq->bytes[0]] |= bit;
+
+      /* No need to search here, the ASCII value is also the Unicode
+         value.  */
+      ELEM (ctype, class_collection, , ch) |= bitw;
+    }
+}
+
 static void
 set_class_defaults (struct locale_ctype_t *ctype,
 		    const struct charmap_t *charmap,
 		    struct repertoire_t *repertoire)
 {
-  size_t cnt;
+#define set_default(bitpos, from, to) \
+  set_one_default (ctype, charmap, bitpos, from, to)
 
   /* These function defines the default values for the classes and conversions
      according to POSIX.2 2.5.2.1.
      It may seem that the order of these if-blocks is arbitrary but it is NOT.
      Don't move them unless you know what you do!  */
 
-  auto void set_default (int bitpos, int from, int to);
-
-  void set_default (int bitpos, int from, int to)
-    {
-      char tmp[2];
-      int ch;
-      int bit = _ISbit (bitpos);
-      int bitw = _ISwbit (bitpos);
-      /* Define string.  */
-      strcpy (tmp, "?");
-
-      for (ch = from; ch <= to; ++ch)
-	{
-	  struct charseq *seq;
-	  tmp[0] = ch;
-
-	  seq = charmap_find_value (charmap, tmp, 1);
-	  if (seq == NULL)
-	    {
-	      char buf[10];
-	      sprintf (buf, "U%08X", ch);
-	      seq = charmap_find_value (charmap, buf, 9);
-	    }
-	  if (seq == NULL)
-	    {
-	      if (!be_quiet)
-		WITH_CUR_LOCALE (error (0, 0, _("\
-%s: character `%s' not defined while needed as default value"),
-					"LC_CTYPE", tmp));
-	    }
-	  else if (seq->nbytes != 1)
-	    WITH_CUR_LOCALE (error (0, 0, _("\
-%s: character `%s' in charmap not representable with one byte"),
-				    "LC_CTYPE", tmp));
-	  else
-	    ctype->class256_collection[seq->bytes[0]] |= bit;
-
-	  /* No need to search here, the ASCII value is also the Unicode
-	     value.  */
-	  ELEM (ctype, class_collection, , ch) |= bitw;
-	}
-    }
-
   /* Set default values if keyword was not present.  */
   if ((ctype->class_done & BITw (tok_upper)) == 0)
     /* "If this keyword [lower] is not specified, the lowercase letters
@@ -3003,11 +3006,11 @@ set_class_defaults (struct locale_ctype_t *ctype,
       unsigned long int mask = BIT (tok_upper) | BIT (tok_lower);
       unsigned long int maskw = BITw (tok_upper) | BITw (tok_lower);
 
-      for (cnt = 0; cnt < 256; ++cnt)
+      for (size_t cnt = 0; cnt < 256; ++cnt)
 	if ((ctype->class256_collection[cnt] & mask) != 0)
 	  ctype->class256_collection[cnt] |= BIT (tok_alpha);
 
-      for (cnt = 0; cnt < ctype->class_collection_act; ++cnt)
+      for (size_t cnt = 0; cnt < ctype->class_collection_act; ++cnt)
 	if ((ctype->class_collection[cnt] & maskw) != 0)
 	  ctype->class_collection[cnt] |= BITw (tok_alpha);
     }
@@ -3025,11 +3028,11 @@ set_class_defaults (struct locale_ctype_t *ctype,
     unsigned long int mask = BIT (tok_alpha) | BIT (tok_digit);
     unsigned long int maskw = BITw (tok_alpha) | BITw (tok_digit);
 
-    for (cnt = 0; cnt < 256; ++cnt)
+    for (size_t cnt = 0; cnt < 256; ++cnt)
       if ((ctype->class256_collection[cnt] & mask) != 0)
 	ctype->class256_collection[cnt] |= BIT (tok_alnum);
 
-    for (cnt = 0; cnt < ctype->class_collection_act; ++cnt)
+    for (size_t cnt = 0; cnt < ctype->class_collection_act; ++cnt)
       if ((ctype->class_collection[cnt] & maskw) != 0)
 	ctype->class_collection[cnt] |= BITw (tok_alnum);
   }
@@ -3240,13 +3243,12 @@ set_class_defaults (struct locale_ctype_t *ctype,
       unsigned long int maskw = BITw (tok_upper) | BITw (tok_lower) |
 	BITw (tok_alpha) | BITw (tok_digit) | BITw (tok_xdigit) |
 	BITw (tok_punct);
-      size_t cnt;
 
-      for (cnt = 0; cnt < ctype->class_collection_act; ++cnt)
+      for (size_t cnt = 0; cnt < ctype->class_collection_act; ++cnt)
 	if ((ctype->class_collection[cnt] & maskw) != 0)
 	  ctype->class_collection[cnt] |= BITw (tok_graph);
 
-      for (cnt = 0; cnt < 256; ++cnt)
+      for (size_t cnt = 0; cnt < 256; ++cnt)
 	if ((ctype->class256_collection[cnt] & mask) != 0)
 	  ctype->class256_collection[cnt] |= BIT (tok_graph);
     }
@@ -3262,14 +3264,13 @@ set_class_defaults (struct locale_ctype_t *ctype,
       unsigned long int maskw = BITw (tok_upper) | BITw (tok_lower) |
 	BITw (tok_alpha) | BITw (tok_digit) | BITw (tok_xdigit) |
 	BITw (tok_punct);
-      size_t cnt;
       struct charseq *seq;
 
-      for (cnt = 0; cnt < ctype->class_collection_act; ++cnt)
+      for (size_t cnt = 0; cnt < ctype->class_collection_act; ++cnt)
 	if ((ctype->class_collection[cnt] & maskw) != 0)
 	  ctype->class_collection[cnt] |= BITw (tok_print);
 
-      for (cnt = 0; cnt < 256; ++cnt)
+      for (size_t cnt = 0; cnt < 256; ++cnt)
 	if ((ctype->class256_collection[cnt] & mask) != 0)
 	  ctype->class256_collection[cnt] |= BIT (tok_print);
 
@@ -3376,13 +3377,13 @@ set_class_defaults (struct locale_ctype_t *ctype,
     /* "If this keyword [tolower] is not specified, the mapping shall be
        the reverse mapping of the one specified to `toupper'."  [P1003.2]  */
     {
-      for (cnt = 0; cnt < ctype->map_collection_act[0]; ++cnt)
+      for (size_t cnt = 0; cnt < ctype->map_collection_act[0]; ++cnt)
 	if (ctype->map_collection[0][cnt] != 0)
 	  ELEM (ctype, map_collection, [1],
 		ctype->map_collection[0][cnt])
 	    = ctype->charnames[cnt];
 
-      for (cnt = 0; cnt < 256; ++cnt)
+      for (size_t cnt = 0; cnt < 256; ++cnt)
 	if (ctype->map256_collection[0][cnt] != 0)
 	  ctype->map256_collection[1][ctype->map256_collection[0][cnt]] = cnt;
     }
@@ -3394,7 +3395,7 @@ set_class_defaults (struct locale_ctype_t *ctype,
 %s: field `%s' does not contain exactly ten entries"),
 				"LC_CTYPE", "outdigit"));
 
-      for (cnt = ctype->outdigits_act; cnt < 10; ++cnt)
+      for (size_t cnt = ctype->outdigits_act; cnt < 10; ++cnt)
 	{
 	  ctype->mboutdigits[cnt] = charmap_find_symbol (charmap,
 							 (char *) digits + cnt,
@@ -3429,6 +3430,8 @@ no output digits defined and none of the standard names in the charmap")));
 
       ctype->outdigits_act = 10;
     }
+
+#undef set_default
 }
 
 
@@ -3878,76 +3881,72 @@ allocate_arrays (struct locale_ctype_t *ctype, const struct charmap_t *charmap,
 
     /* Now add the explicitly specified widths.  */
     if (charmap->width_rules != NULL)
-      {
-	size_t cnt;
-
-	for (cnt = 0; cnt < charmap->nwidth_rules; ++cnt)
-	  {
-	    unsigned char bytes[charmap->mb_cur_max];
-	    int nbytes = charmap->width_rules[cnt].from->nbytes;
-
-	    /* We have the range of character for which the width is
-	       specified described using byte sequences of the multibyte
-	       charset.  We have to convert this to UCS4 now.  And we
-	       cannot simply convert the beginning and the end of the
-	       sequence, we have to iterate over the byte sequence and
-	       convert it for every single character.  */
-	    memcpy (bytes, charmap->width_rules[cnt].from->bytes, nbytes);
-
-	    while (nbytes < charmap->width_rules[cnt].to->nbytes
-		   || memcmp (bytes, charmap->width_rules[cnt].to->bytes,
-			      nbytes) <= 0)
-	      {
-		/* Find the UCS value for `bytes'.  */
-		int inner;
-		uint32_t wch;
-		struct charseq *seq =
-		  charmap_find_symbol (charmap, (char *) bytes, nbytes);
-
-		if (seq == NULL)
-		  wch = ILLEGAL_CHAR_VALUE;
-		else if (seq->ucs4 != UNINITIALIZED_CHAR_VALUE)
-		  wch = seq->ucs4;
-		else
-		  wch = repertoire_find_value (ctype->repertoire, seq->name,
-					       strlen (seq->name));
-
-		if (wch != ILLEGAL_CHAR_VALUE)
-		  {
-		    /* Store the value.  */
-		    uint32_t *class_bits =
-		      find_idx (ctype, &ctype->class_collection, NULL,
-				&ctype->class_collection_act, wch);
-
-		    if (class_bits != NULL && (*class_bits & BITw (tok_print)))
-		      wcwidth_table_add (t, wch,
-					 charmap->width_rules[cnt].width);
-		  }
-
-		/* "Increment" the bytes sequence.  */
-		inner = nbytes - 1;
-		while (inner >= 0 && bytes[inner] == 0xff)
-		  --inner;
-
-		if (inner < 0)
-		  {
-		    /* We have to extend the byte sequence.  */
-		    if (nbytes >= charmap->width_rules[cnt].to->nbytes)
-		      break;
-
-		    bytes[0] = 1;
-		    memset (&bytes[1], 0, nbytes);
-		    ++nbytes;
-		  }
-		else
-		  {
-		    ++bytes[inner];
-		    while (++inner < nbytes)
-		      bytes[inner] = 0;
-		  }
-	      }
-	  }
-      }
+      for (size_t cnt = 0; cnt < charmap->nwidth_rules; ++cnt)
+        {
+          unsigned char bytes[charmap->mb_cur_max];
+          int nbytes = charmap->width_rules[cnt].from->nbytes;
+
+          /* We have the range of character for which the width is
+             specified described using byte sequences of the multibyte
+             charset.  We have to convert this to UCS4 now.  And we
+             cannot simply convert the beginning and the end of the
+             sequence, we have to iterate over the byte sequence and
+             convert it for every single character.  */
+          memcpy (bytes, charmap->width_rules[cnt].from->bytes, nbytes);
+
+          while (nbytes < charmap->width_rules[cnt].to->nbytes
+                 || memcmp (bytes, charmap->width_rules[cnt].to->bytes,
+                            nbytes) <= 0)
+            {
+              /* Find the UCS value for `bytes'.  */
+              int inner;
+              uint32_t wch;
+              struct charseq *seq =
+                charmap_find_symbol (charmap, (char *) bytes, nbytes);
+
+              if (seq == NULL)
+                wch = ILLEGAL_CHAR_VALUE;
+              else if (seq->ucs4 != UNINITIALIZED_CHAR_VALUE)
+                wch = seq->ucs4;
+              else
+                wch = repertoire_find_value (ctype->repertoire, seq->name,
+                                             strlen (seq->name));
+
+              if (wch != ILLEGAL_CHAR_VALUE)
+                {
+                  /* Store the value.  */
+                  uint32_t *class_bits =
+                    find_idx (ctype, &ctype->class_collection, NULL,
+                              &ctype->class_collection_act, wch);
+
+                  if (class_bits != NULL && (*class_bits & BITw (tok_print)))
+                    wcwidth_table_add (t, wch,
+                                       charmap->width_rules[cnt].width);
+                }
+
+              /* "Increment" the bytes sequence.  */
+              inner = nbytes - 1;
+              while (inner >= 0 && bytes[inner] == 0xff)
+                --inner;
+
+              if (inner < 0)
+                {
+                  /* We have to extend the byte sequence.  */
+                  if (nbytes >= charmap->width_rules[cnt].to->nbytes)
+                    break;
+
+                  bytes[0] = 1;
+                  memset (&bytes[1], 0, nbytes);
+                  ++nbytes;
+                }
+              else
+                {
+                  ++bytes[inner];
+                  while (++inner < nbytes)
+                    bytes[inner] = 0;
+                }
+            }
+        }
 
     /* Set the width of L'\0' to 0.  */
     wcwidth_table_add (t, 0, 0);
@@ -3976,7 +3975,6 @@ allocate_arrays (struct locale_ctype_t *ctype, const struct charmap_t *charmap,
       /* First count how many entries we have.  This is the upper limit
 	 since some entries from the included files might be overwritten.  */
       size_t number = 0;
-      size_t cnt;
       struct translit_t *runp = ctype->translit;
       struct translit_t **sorted;
       size_t from_len, to_len;
@@ -4036,7 +4034,7 @@ allocate_arrays (struct locale_ctype_t *ctype, const struct charmap_t *charmap,
 	 - to-string array.
       */
       from_len = to_len = 0;
-      for (cnt = 0; cnt < number; ++cnt)
+      for (size_t cnt = 0; cnt < number; ++cnt)
 	{
 	  struct translit_to_t *srunp;
 	  from_len += wcslen ((const wchar_t *) sorted[cnt]->from) + 1;
@@ -4059,7 +4057,7 @@ allocate_arrays (struct locale_ctype_t *ctype, const struct charmap_t *charmap,
 
       from_len = 0;
       to_len = 0;
-      for (cnt = 0; cnt < number; ++cnt)
+      for (size_t cnt = 0; cnt < number; ++cnt)
 	{
 	  size_t len;
 	  struct translit_to_t *srunp;

-----------------------------------------------------------------------

Summary of changes:
 ChangeLog                  |    7 ++
 locale/programs/ld-ctype.c |  258 ++++++++++++++++++++++----------------------
 2 files changed, 135 insertions(+), 130 deletions(-)


hooks/post-receive
-- 
GNU C Library master sources


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]