1
0
mirror of https://github.com/moparisthebest/wget synced 2024-07-03 16:38:41 -04:00

Translation-related improvements to version-info string.

This commit is contained in:
Micah Cowan 2009-07-04 11:47:08 -07:00
parent efd514c825
commit 399dab5190
2 changed files with 33 additions and 32 deletions

View File

@ -1,3 +1,14 @@
2009-07-04 Micah Cowan <micah@cowan.name>
* 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 <micah@cowan.name> 2009-07-03 Micah Cowan <micah@cowan.name>
* iri.h (iri_dup): Provide macro definition for when IRIs are * iri.h (iri_dup): Provide macro definition for when IRIs are

View File

@ -73,7 +73,8 @@ extern char *link_string;
/* defined in build_info.c */ /* defined in build_info.c */
extern char *compiled_features[]; extern char *compiled_features[];
/* Used for --version output in print_version */ /* 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) #if defined(SIGHUP) || defined(SIGUSR1)
static void redirect_output_signal (int); static void redirect_output_signal (int);
@ -715,7 +716,6 @@ static void
format_and_print_line (const char *prefix, const char *line, format_and_print_line (const char *prefix, const char *line,
int line_length) int line_length)
{ {
int leading_spaces;
int remaining_chars; int remaining_chars;
char *line_dup, *token; char *line_dup, *token;
@ -725,11 +725,10 @@ format_and_print_line (const char *prefix, const char *line,
line_dup = xstrdup (line); line_dup = xstrdup (line);
if (line_length <= 0) if (line_length <= 0)
line_length = max_chars_per_line; line_length = MAX_CHARS_PER_LINE - TABULATION;
leading_spaces = strlen (prefix);
printf ("%s", prefix); printf ("%s", prefix);
remaining_chars = line_length - leading_spaces; remaining_chars = line_length;
/* We break on spaces. */ /* We break on spaces. */
token = strtok (line_dup, " "); token = strtok (line_dup, " ");
while (token != NULL) while (token != NULL)
@ -739,11 +738,11 @@ format_and_print_line (const char *prefix, const char *line,
token on the next line. */ token on the next line. */
if (remaining_chars <= strlen (token)) if (remaining_chars <= strlen (token))
{ {
printf ("\n%*c", leading_spaces, ' '); printf ("\n%*c", TABULATION, ' ');
remaining_chars = line_length - leading_spaces; remaining_chars = line_length - TABULATION;
} }
printf ("%s ", token); printf ("%s ", token);
remaining_chars -= strlen (token) + 1; // account for " " remaining_chars -= strlen (token) + 1; /* account for " " */
token = strtok (NULL, " "); token = strtok (NULL, " ");
} }
@ -755,25 +754,21 @@ format_and_print_line (const char *prefix, const char *line,
static void static void
print_version (void) print_version (void)
{ {
const char *options_title = "Options : "; const char *wgetrc_title = _("Wgetrc: ");
const char *wgetrc_title = "Wgetrc : "; const char *locale_title = _("Locale: ");
const char *locale_title = "Locale : "; const char *compile_title = _("Compile: ");
const char *compile_title = "Compile : "; const char *link_title = _("Link: ");
const char *link_title = "Link : ";
const char *prefix_spaces = " ";
const int prefix_space_length = strlen (prefix_spaces);
char *line; char *line;
char *env_wgetrc, *user_wgetrc; char *env_wgetrc, *user_wgetrc;
int i; int i;
printf ("GNU Wget %s\n", version_string); printf (_("GNU Wget %s\n\n"), version_string);
printf (options_title);
/* compiled_features is a char*[]. We limit the characters per /* 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. */ number of spaces for proper alignment. */
for (i = 0; compiled_features[i] != NULL; ) 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)) while ((line_length > 0) && (compiled_features[i] != NULL))
{ {
printf ("%s ", compiled_features[i]); printf ("%s ", compiled_features[i]);
@ -781,43 +776,38 @@ print_version (void)
i++; i++;
} }
printf ("\n"); printf ("\n");
if (compiled_features[i] != NULL)
{
printf (prefix_spaces);
}
} }
printf ("\n");
/* Handle the case when $WGETRC is unset and $HOME/.wgetrc is /* Handle the case when $WGETRC is unset and $HOME/.wgetrc is
absent. */ absent. */
printf (wgetrc_title); printf ("%s\n", wgetrc_title);
env_wgetrc = wgetrc_env_file_name (); env_wgetrc = wgetrc_env_file_name ();
if (env_wgetrc && *env_wgetrc) if (env_wgetrc && *env_wgetrc)
{ {
printf ("%s (env)\n%s", env_wgetrc, prefix_spaces); printf (" %s (env)\n", env_wgetrc);
xfree (env_wgetrc); xfree (env_wgetrc);
} }
user_wgetrc = wgetrc_user_file_name (); user_wgetrc = wgetrc_user_file_name ();
if (user_wgetrc) if (user_wgetrc)
{ {
printf ("%s (user)\n%s", user_wgetrc, prefix_spaces); printf (" %s (user)\n", user_wgetrc);
xfree (user_wgetrc); xfree (user_wgetrc);
} }
#ifdef SYSTEM_WGETRC #ifdef SYSTEM_WGETRC
printf ("%s (system)\n", SYSTEM_WGETRC); printf (" %s (system)\n", SYSTEM_WGETRC);
#else
putchar ('\n');
#endif #endif
format_and_print_line (locale_title, format_and_print_line (locale_title,
LOCALEDIR, LOCALEDIR,
max_chars_per_line); MAX_CHARS_PER_LINE);
format_and_print_line (compile_title, format_and_print_line (compile_title,
compilation_string, compilation_string,
max_chars_per_line); MAX_CHARS_PER_LINE);
format_and_print_line (link_title, format_and_print_line (link_title,
link_string, link_string,
max_chars_per_line); MAX_CHARS_PER_LINE);
printf ("\n"); printf ("\n");
/* TRANSLATORS: When available, an actual copyright character /* TRANSLATORS: When available, an actual copyright character