splitting pg_resetwal output strings

  • Jump to comment-1
    Álvaro Herrera<alvherre@kurilemu.de>
    Jan 31, 2026, 9:41 AM UTC
    Hello,
    For a long time I've been annoyed that certain tools such as (but not
    only) pg_resetwal have translatable strings full of whitespace that
    translators have to be careful about so that things look nice.
    For Spanish I have made the lines a bit wider so that everything fits,
    which means that every time someone adds a new line that's not yet
    translated, the output looks bad; and if I want to add one more space
    to align a new longer string, then I have to edit every single one of
    them. This is horrible.
    Here's a proposal. The idea is to have a separate file (entries.h right
    now but proposal for better names are welcome) which lists those
    strings, together with the printf specifiers needed to actually print
    them. This way, we can measure the length of each exactly as they
    translate before printing anything, and then line up everything to the
    same output length.
    One curious thing of note is that I had to add an internal_wcswidth()
    function, to avoid having to link libpq just to be able to do
    pg_wcswidth().
    This is not complete. It modifies PrintControlValues(), which is easy
    because I just print each item in the entries.h file in the same order
    they appear there. But for PrintNewControlValues() I'll need to add a
    symbolic identifier to each string, that the code can use to scan the
    array and print just those elements. I'll do that if there are no
    objections to this idea here. Also, pg_controldata could probably
    something very similar or maybe the same entries.h file.
    --
    Álvaro Herrera 48°01'N 7°57'E — https://www.EnterpriseDB.com/
    "If you want to have good ideas, you must have many ideas. Most of them
    will be wrong, and what you have to learn is which ones to throw away."
                                                         (Linus Pauling)
    • Jump to comment-1
      Álvaro Herrera<alvherre@kurilemu.de>
      Jan 31, 2026, 3:08 PM UTC
      On 2026-Jan-31, Álvaro Herrera wrote:
      This is not complete. It modifies PrintControlValues(), which is easy
      because I just print each item in the entries.h file in the same order
      they appear there. But for PrintNewControlValues() I'll need to add a
      symbolic identifier to each string, that the code can use to scan the
      array and print just those elements. I'll do that if there are no
      objections to this idea here.
      It looks more or less like this. Patch 0001 is the same as before, and
      0002 adds the symbolic names, which is used to create an enum and then
      to search for the correct lines to print in PrintNewControlValues.
      I decided to reuse simpleoidlist to store the integers values, which
      is kinda icky, so getting to something committable I think would have me
      add simpleintlist. Also, there's a few blocks that are duplicate
      cases of the same line measuring and printing logic; I suppose I should
      have a routine to simplify.
      --
      Álvaro Herrera 48°01'N 7°57'E — https://www.EnterpriseDB.com/
      "Most hackers will be perfectly comfortable conceptualizing users as entropy
      sources, so let's move on." (Nathaniel Smith)
        https://mail.gnu.org/archive/html/monotone-devel/2007-01/msg00080.html