diff options
author | Richard Sandiford <richard@codesourcery.com> | 2013-09-06 17:20:45 +0000 |
---|---|---|
committer | Joseph Myers <joseph@codesourcery.com> | 2013-09-06 17:20:45 +0000 |
commit | 1ecbb381aeed75d52f8abf47e03a31bb8212984e (patch) | |
tree | f6244ddf2f45891065af57085bc81775c83142c3 /locale/programs/ld-messages.c | |
parent | 2618d9db2da5d5f59adb8120fc6b58d8f96f5528 (diff) | |
download | glibc-1ecbb381aeed75d52f8abf47e03a31bb8212984e.tar.gz glibc-1ecbb381aeed75d52f8abf47e03a31bb8212984e.tar.xz glibc-1ecbb381aeed75d52f8abf47e03a31bb8212984e.zip |
Make localedef output generation use more logical interfaces.
Diffstat (limited to 'locale/programs/ld-messages.c')
-rw-r--r-- | locale/programs/ld-messages.c | 52 |
1 files changed, 9 insertions, 43 deletions
diff --git a/locale/programs/ld-messages.c b/locale/programs/ld-messages.c index f1b9f93f26..116f3a2bb6 100644 --- a/locale/programs/ld-messages.c +++ b/locale/programs/ld-messages.c @@ -184,49 +184,15 @@ messages_output (struct localedef_t *locale, const struct charmap_t *charmap, { struct locale_messages_t *messages = locale->categories[LC_MESSAGES].messages; - struct iovec iov[2 + _NL_ITEM_INDEX (_NL_NUM_LC_MESSAGES)]; - struct locale_file data; - uint32_t idx[_NL_ITEM_INDEX (_NL_NUM_LC_MESSAGES)]; - size_t cnt = 0; - - data.magic = LIMAGIC (LC_MESSAGES); - data.n = _NL_ITEM_INDEX (_NL_NUM_LC_MESSAGES); - 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 = (char *) messages->yesexpr; - 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 *) messages->noexpr; - 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 *) messages->yesstr; - 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 *) 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)); - - write_locale_data (output_path, LC_MESSAGES, "LC_MESSAGES", - 2 + _NL_ITEM_INDEX (_NL_NUM_LC_MESSAGES), iov); + struct locale_file file; + + init_locale_data (&file, _NL_ITEM_INDEX (_NL_NUM_LC_MESSAGES)); + add_locale_string (&file, messages->yesexpr); + add_locale_string (&file, messages->noexpr); + add_locale_string (&file, messages->yesstr); + add_locale_string (&file, messages->nostr); + add_locale_string (&file, charmap->code_set_name); + write_locale_data (output_path, LC_MESSAGES, "LC_MESSAGES", &file); } |