From 399dab5190d74c2b5b3ba16be6649d0e3fc74478 Mon Sep 17 00:00:00 2001 From: Micah Cowan Date: Sat, 4 Jul 2009 11:47:08 -0700 Subject: [PATCH] Translation-related improvements to version-info string. --- src/ChangeLog | 11 +++++++++++ src/main.c | 54 +++++++++++++++++++++------------------------------ 2 files changed, 33 insertions(+), 32 deletions(-) diff --git a/src/ChangeLog b/src/ChangeLog index 77466d04..f7ea65c0 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,14 @@ +2009-07-04 Micah Cowan + + * main.c (print_version): Allow localization of the version-info + labels, eschew attempts at alignment (which is complicated when + handling translated strings), and avoid using printf() with + variable-stored format strings that lack conversion + specifications. + (format_and_print_line): For similar reasons, don't calculate + line-continuation tabulation based on the number of bytes in a + string. + 2009-07-03 Micah Cowan * iri.h (iri_dup): Provide macro definition for when IRIs are diff --git a/src/main.c b/src/main.c index d7e2fbb9..85d7ff49 100644 --- a/src/main.c +++ b/src/main.c @@ -73,7 +73,8 @@ extern char *link_string; /* defined in build_info.c */ extern char *compiled_features[]; /* Used for --version output in print_version */ -static const int max_chars_per_line = 72; +#define MAX_CHARS_PER_LINE 72 +#define TABULATION 4 #if defined(SIGHUP) || defined(SIGUSR1) static void redirect_output_signal (int); @@ -715,7 +716,6 @@ static void format_and_print_line (const char *prefix, const char *line, int line_length) { - int leading_spaces; int remaining_chars; char *line_dup, *token; @@ -725,11 +725,10 @@ format_and_print_line (const char *prefix, const char *line, line_dup = xstrdup (line); if (line_length <= 0) - line_length = max_chars_per_line; + line_length = MAX_CHARS_PER_LINE - TABULATION; - leading_spaces = strlen (prefix); printf ("%s", prefix); - remaining_chars = line_length - leading_spaces; + remaining_chars = line_length; /* We break on spaces. */ token = strtok (line_dup, " "); while (token != NULL) @@ -739,11 +738,11 @@ format_and_print_line (const char *prefix, const char *line, token on the next line. */ if (remaining_chars <= strlen (token)) { - printf ("\n%*c", leading_spaces, ' '); - remaining_chars = line_length - leading_spaces; + printf ("\n%*c", TABULATION, ' '); + remaining_chars = line_length - TABULATION; } printf ("%s ", token); - remaining_chars -= strlen (token) + 1; // account for " " + remaining_chars -= strlen (token) + 1; /* account for " " */ token = strtok (NULL, " "); } @@ -755,25 +754,21 @@ format_and_print_line (const char *prefix, const char *line, static void print_version (void) { - const char *options_title = "Options : "; - const char *wgetrc_title = "Wgetrc : "; - const char *locale_title = "Locale : "; - const char *compile_title = "Compile : "; - const char *link_title = "Link : "; - const char *prefix_spaces = " "; - const int prefix_space_length = strlen (prefix_spaces); + const char *wgetrc_title = _("Wgetrc: "); + const char *locale_title = _("Locale: "); + const char *compile_title = _("Compile: "); + const char *link_title = _("Link: "); char *line; char *env_wgetrc, *user_wgetrc; int i; - printf ("GNU Wget %s\n", version_string); - printf (options_title); + printf (_("GNU Wget %s\n\n"), version_string); /* compiled_features is a char*[]. We limit the characters per - line to max_chars_per_line and prefix each line with a constant + line to MAX_CHARS_PER_LINE and prefix each line with a constant number of spaces for proper alignment. */ for (i = 0; compiled_features[i] != NULL; ) { - int line_length = max_chars_per_line - prefix_space_length; + int line_length = MAX_CHARS_PER_LINE; while ((line_length > 0) && (compiled_features[i] != NULL)) { printf ("%s ", compiled_features[i]); @@ -781,43 +776,38 @@ print_version (void) i++; } printf ("\n"); - if (compiled_features[i] != NULL) - { - printf (prefix_spaces); - } } + printf ("\n"); /* Handle the case when $WGETRC is unset and $HOME/.wgetrc is absent. */ - printf (wgetrc_title); + printf ("%s\n", wgetrc_title); env_wgetrc = wgetrc_env_file_name (); if (env_wgetrc && *env_wgetrc) { - printf ("%s (env)\n%s", env_wgetrc, prefix_spaces); + printf (" %s (env)\n", env_wgetrc); xfree (env_wgetrc); } user_wgetrc = wgetrc_user_file_name (); if (user_wgetrc) { - printf ("%s (user)\n%s", user_wgetrc, prefix_spaces); + printf (" %s (user)\n", user_wgetrc); xfree (user_wgetrc); } #ifdef SYSTEM_WGETRC - printf ("%s (system)\n", SYSTEM_WGETRC); -#else - putchar ('\n'); + printf (" %s (system)\n", SYSTEM_WGETRC); #endif format_and_print_line (locale_title, LOCALEDIR, - max_chars_per_line); + MAX_CHARS_PER_LINE); format_and_print_line (compile_title, compilation_string, - max_chars_per_line); + MAX_CHARS_PER_LINE); format_and_print_line (link_title, link_string, - max_chars_per_line); + MAX_CHARS_PER_LINE); printf ("\n"); /* TRANSLATORS: When available, an actual copyright character -- 2.39.2