Emit codeset information.
authordrepper <drepper>
Fri, 6 Apr 2001 17:42:52 +0000 (17:42 +0000)
committerdrepper <drepper>
Fri, 6 Apr 2001 17:42:52 +0000 (17:42 +0000)
locale/programs/ld-address.c
locale/programs/ld-collate.c
locale/programs/ld-identification.c
locale/programs/ld-measurement.c
locale/programs/ld-messages.c
locale/programs/ld-monetary.c
locale/programs/ld-name.c
locale/programs/ld-numeric.c
locale/programs/ld-paper.c
locale/programs/ld-telephone.c
locale/programs/ld-time.c

index ed5860d..4e1c581 100644 (file)
@@ -410,6 +410,11 @@ address_output (struct localedef_t *locale, struct charmap_t *charmap,
   iov[cnt].iov_len = strlen (iov[cnt].iov_base) + 1;
   ++cnt;
 
+  idx[cnt - 3] = idx[cnt - 4] + iov[cnt - 1].iov_len;
+  iov[cnt].iov_base = (void *) charmap->code_set_name;
+  iov[cnt].iov_len = strlen (iov[cnt].iov_base) + 1;
+  ++cnt;
+
   assert (cnt == 3 + _NL_ITEM_INDEX (_NL_NUM_LC_ADDRESS));
 
   write_locale_data (output_path, "LC_ADDRESS",
index 2ce4d46..ddaf3ed 100644 (file)
@@ -2522,9 +2522,15 @@ collate_output (struct localedef_t *locale, struct charmap_t *charmap,
   assert (cnt == _NL_ITEM_INDEX (_NL_COLLATE_COLLSEQWC));
   iov[2 + cnt].iov_base = collate->wcseqorder.result;
   iov[2 + cnt].iov_len = collate->wcseqorder.result_size;
+  idx[1 + cnt] = idx[cnt] + iov[2 + cnt].iov_len;
   assert (idx[cnt] % __alignof__ (int32_t) == 0);
   ++cnt;
 
+  assert (cnt == _NL_ITEM_INDEX (_NL_COLLATE_CODESET));
+  iov[2 + cnt].iov_base = (void *) charmap->code_set_name;
+  iov[2 + cnt].iov_len = strlen (iov[2 + cnt].iov_base) + 1;
+  ++cnt;
+
   assert (cnt == _NL_ITEM_INDEX (_NL_NUM_LC_COLLATE));
 
   write_locale_data (output_path, "LC_COLLATE", 2 + cnt, iov);
index 12e32f8..9a6dfdf 100644 (file)
@@ -185,6 +185,7 @@ identification_output (struct localedef_t *locale, struct charmap_t *charmap,
   uint32_t idx[_NL_ITEM_INDEX (_NL_NUM_LC_IDENTIFICATION)];
   size_t cnt = 0;
   size_t num;
+  size_t last_idx;
 
   data.magic = LIMAGIC (LC_IDENTIFICATION);
   data.n = _NL_ITEM_INDEX (_NL_NUM_LC_IDENTIFICATION);
@@ -267,19 +268,26 @@ identification_output (struct localedef_t *locale, struct charmap_t *charmap,
   ++cnt;
 
   idx[cnt - 2] = idx[cnt - 3] + iov[cnt - 1].iov_len;
+  last_idx = cnt - 1;
+  idx[last_idx] = idx[cnt - 2];
   for (num = 0; num < __LC_LAST; ++num)
     if (num != LC_ALL)
       {
        iov[cnt].iov_base = (void *) identification->category[num];
        iov[cnt].iov_len = strlen (iov[cnt].iov_base) + 1;
+       idx[last_idx] += iov[cnt].iov_len;
        ++cnt;
       }
 
+  assert (last_idx == _NL_ITEM_INDEX (_NL_NUM_LC_IDENTIFICATION) - 1);
+  iov[cnt].iov_base = (void *) charmap->code_set_name;
+  iov[cnt].iov_len = strlen (iov[cnt].iov_base) + 1;
+  ++cnt;
+
   assert (cnt == (2 + _NL_ITEM_INDEX (_NL_NUM_LC_IDENTIFICATION)
                  + (__LC_LAST - 2)));
 
-  write_locale_data (output_path, "LC_IDENTIFICATION",
-                    2 + _NL_ITEM_INDEX (_NL_NUM_LC_IDENTIFICATION), iov);
+  write_locale_data (output_path, "LC_IDENTIFICATION", cnt, iov);
 }
 
 
index 07eb3cb..e2cfa6a 100644 (file)
@@ -141,6 +141,11 @@ measurement_output (struct localedef_t *locale, struct charmap_t *charmap,
   iov[cnt].iov_len = 1;
   ++cnt;
 
+  idx[cnt - 2] = iov[0].iov_len + iov[1].iov_len;
+  iov[cnt].iov_base = (void *) charmap->code_set_name;
+  iov[cnt].iov_len = strlen (iov[cnt].iov_base) + 1;
+  ++cnt;
+
   assert (cnt == 2 + _NL_ITEM_INDEX (_NL_NUM_LC_MEASUREMENT));
 
   write_locale_data (output_path, "LC_MEASUREMENT",
index cbf240e..dd5de42 100644 (file)
@@ -216,6 +216,11 @@ messages_output (struct localedef_t *locale, struct charmap_t *charmap,
   idx[cnt - 2] = idx[cnt - 3] + iov[cnt - 1].iov_len;
   iov[cnt].iov_base = (char *) messages->nostr;
   iov[cnt].iov_len = strlen (iov[cnt].iov_base) + 1;
+  ++cnt;
+
+  idx[cnt - 2] = idx[cnt - 3] + iov[cnt - 1].iov_len;
+  iov[cnt].iov_base = (char *) charmap->code_set_name;
+  iov[cnt].iov_len = strlen (iov[cnt].iov_base) + 1;
 
   assert (cnt + 1 == 2 + _NL_ITEM_INDEX (_NL_NUM_LC_MESSAGES));
 
index 7779e87..3eeb305 100644 (file)
@@ -608,6 +608,11 @@ monetary_output (struct localedef_t *locale, struct charmap_t *charmap,
   iov[cnt].iov_len = sizeof (uint32_t);
   ++cnt;
 
+  idx[cnt - 3] = idx[cnt - 4] + iov[cnt - 1].iov_len;
+  iov[cnt].iov_base = (void *) charmap->code_set_name;
+  iov[cnt].iov_len = strlen (iov[cnt].iov_base) + 1;
+  ++cnt;
+
   assert (cnt == 3 + _NL_ITEM_INDEX (_NL_NUM_LC_MONETARY));
 
   write_locale_data (output_path, "LC_MONETARY",
index 7940c03..8d7b863 100644 (file)
@@ -200,6 +200,11 @@ name_output (struct localedef_t *locale, struct charmap_t *charmap,
   iov[cnt].iov_len = strlen (iov[cnt].iov_base) + 1;
   ++cnt;
 
+  idx[cnt - 2] = idx[cnt - 3] + iov[cnt - 1].iov_len;
+  iov[cnt].iov_base = (void *) charmap->code_set_name;
+  iov[cnt].iov_len = strlen (iov[cnt].iov_base) + 1;
+  ++cnt;
+
   assert (cnt == 2 + _NL_ITEM_INDEX (_NL_NUM_LC_NAME));
 
   write_locale_data (output_path, "LC_NAME",
index 77633ef..6bf6c25 100644 (file)
@@ -178,6 +178,11 @@ numeric_output (struct localedef_t *locale, struct charmap_t *charmap,
   idx[cnt - 3] = idx[cnt - 4] + iov[cnt - 1].iov_len;
   iov[cnt].iov_base = (void *) &numeric->thousands_sep_wc;
   iov[cnt].iov_len = sizeof (uint32_t);
+  ++cnt;
+
+  idx[cnt - 3] = idx[cnt - 4] + iov[cnt - 1].iov_len;
+  iov[cnt].iov_base = (void *) charmap->code_set_name;
+  iov[cnt].iov_len = strlen (iov[cnt].iov_base) + 1;
 
   assert (cnt + 1 == 3 + _NL_ITEM_INDEX (_NL_NUM_LC_NUMERIC));
 
index d0ca850..b55f985 100644 (file)
@@ -143,6 +143,11 @@ paper_output (struct localedef_t *locale, struct charmap_t *charmap,
   iov[cnt].iov_len = 4;
   ++cnt;
 
+  idx[cnt - 2] = idx[cnt - 3] + iov[cnt - 1].iov_len;
+  iov[cnt].iov_base = (void *) charmap->code_set_name;
+  iov[cnt].iov_len = strlen (iov[cnt].iov_base) + 1;
+  ++cnt;
+
   assert (cnt == 2 + _NL_ITEM_INDEX (_NL_NUM_LC_PAPER));
 
   write_locale_data (output_path, "LC_PAPER",
index 2d59079..a2c8d51 100644 (file)
@@ -210,6 +210,11 @@ telephone_output (struct localedef_t *locale, struct charmap_t *charmap,
   iov[cnt].iov_len = strlen (iov[cnt].iov_base) + 1;
   ++cnt;
 
+  idx[cnt - 2] = idx[cnt - 3] + iov[cnt - 1].iov_len;
+  iov[cnt].iov_base = (void *) charmap->code_set_name;;
+  iov[cnt].iov_len = strlen (iov[cnt].iov_base) + 1;
+  ++cnt;
+
   assert (cnt == 2 + _NL_ITEM_INDEX (_NL_NUM_LC_TELEPHONE));
 
   write_locale_data (output_path, "LC_TELEPHONE",
index 1475953..37615c4 100644 (file)
@@ -869,6 +869,12 @@ time_output (struct localedef_t *locale, struct charmap_t *charmap,
   iov[2 + cnt].iov_base = (void *) time->wdate_fmt;
   iov[2 + cnt].iov_len = ((wcslen (iov[2 + cnt].iov_base) + 1)
                           * sizeof (uint32_t));
+  idx[1 + last_idx] = idx[last_idx] + iov[2 + cnt].iov_len;
+  ++cnt;
+  ++last_idx;
+
+  iov[2 + cnt].iov_base = (void *) charmap->code_set_name;
+  iov[2 + cnt].iov_len = strlen (iov[2 + cnt].iov_base) + 1;
   ++cnt;
   ++last_idx;