diff options
Diffstat (limited to 'locale/programs/ld-telephone.c')
-rw-r--r-- | locale/programs/ld-telephone.c | 53 |
1 files changed, 9 insertions, 44 deletions
diff --git a/locale/programs/ld-telephone.c b/locale/programs/ld-telephone.c index 4452750921..3e71a36eb8 100644 --- a/locale/programs/ld-telephone.c +++ b/locale/programs/ld-telephone.c @@ -175,50 +175,15 @@ telephone_output (struct localedef_t *locale, const struct charmap_t *charmap, { struct locale_telephone_t *telephone = locale->categories[LC_TELEPHONE].telephone; - struct iovec iov[2 + _NL_ITEM_INDEX (_NL_NUM_LC_TELEPHONE)]; - struct locale_file data; - uint32_t idx[_NL_ITEM_INDEX (_NL_NUM_LC_TELEPHONE)]; - size_t cnt = 0; - - data.magic = LIMAGIC (LC_TELEPHONE); - data.n = _NL_ITEM_INDEX (_NL_NUM_LC_TELEPHONE); - iov[cnt].iov_base = (void *) &data; - iov[cnt].iov_len = sizeof (data); - ++cnt; - - iov[cnt].iov_base = (void *) idx; - iov[cnt].iov_len = sizeof (idx); - ++cnt; - - idx[cnt - 2] = iov[0].iov_len + iov[1].iov_len; - iov[cnt].iov_base = (void *) telephone->tel_int_fmt; - 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 *) telephone->tel_dom_fmt; - 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 *) telephone->int_select; - 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 *) telephone->int_prefix; - 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, "LC_TELEPHONE", - 2 + _NL_ITEM_INDEX (_NL_NUM_LC_TELEPHONE), iov); + struct locale_file file; + + init_locale_data (&file, _NL_ITEM_INDEX (_NL_NUM_LC_TELEPHONE)); + add_locale_string (&file, telephone->tel_int_fmt); + add_locale_string (&file, telephone->tel_dom_fmt); + add_locale_string (&file, telephone->int_select); + add_locale_string (&file, telephone->int_prefix); + add_locale_string (&file, charmap->code_set_name); + write_locale_data (output_path, LC_TELEPHONE, "LC_TELEPHONE", &file); } |