mirror of
https://git.savannah.gnu.org/git/make.git
synced 2024-11-24 12:19:02 +00:00
Change the version.
Update to require new gettext. Change hash.c to by K&R. Redo some strings to make i18n simpler.
This commit is contained in:
parent
f2ceb0d68a
commit
ee3a4f9dd6
8 changed files with 193 additions and 203 deletions
18
ChangeLog
18
ChangeLog
|
@ -1,8 +1,26 @@
|
|||
2002-08-08 Paul D. Smith <psmith@gnu.org>
|
||||
|
||||
* configure.in: Require a newer version of gettext.
|
||||
|
||||
* misc.c (perror_with_name): Translate the format string (for
|
||||
right-to-left language support).
|
||||
(pfatal_with_name): Ditto.
|
||||
|
||||
* main.c: Create a static array of strings to store the usage
|
||||
text. This is done to facilitate translations.
|
||||
(struct command_switch): Remove argdesc and description fields.
|
||||
(switches): Remove values for obsolete fields.
|
||||
(print_usage): Print each element of the usage array.
|
||||
|
||||
* hash.c: Change function definitions to be K&R style.
|
||||
|
||||
2002-08-02 Paul D. Smith <psmith@gnu.org>
|
||||
|
||||
* NEWS: Remove the mention of .TARGETS; we aren't going to publish
|
||||
this one because it's too hard to get right. We'll look at it for
|
||||
a future release.
|
||||
* main.c (main): Don't create the .TARGETS variable.
|
||||
* variable.c (handle_special_var): Don't handle .TARGETS.
|
||||
|
||||
2002-08-01 Paul D. Smith <psmith@gnu.org>
|
||||
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
# Process this file with autoconf to produce a configure script.
|
||||
|
||||
AC_INIT(GNU make,3.80rc1,bug-make@gnu.org)
|
||||
AC_INIT(GNU make,3.80b2,bug-make@gnu.org)
|
||||
|
||||
AC_PREREQ(2.53)
|
||||
|
||||
|
@ -32,7 +32,7 @@ AC_MINIX
|
|||
|
||||
# Enable gettext, in "external" mode.
|
||||
|
||||
GETTEXT_VERSION=0.11.3-pre2
|
||||
AM_GNU_GETTEXT_VERSION(0.11.5)
|
||||
AM_GNU_GETTEXT([external])
|
||||
|
||||
# This test must come as early as possible after the compiler configuration
|
||||
|
|
73
hash.c
73
hash.c
|
@ -41,8 +41,12 @@ void *hash_deleted_item = &hash_deleted_item;
|
|||
given size. */
|
||||
|
||||
void
|
||||
hash_init (struct hash_table* ht, unsigned long size,
|
||||
hash_func_t hash_1, hash_func_t hash_2, hash_cmp_func_t hash_cmp)
|
||||
hash_init (ht, size, hash_1, hash_2, hash_cmp)
|
||||
struct hash_table* ht;
|
||||
unsigned long size;
|
||||
hash_func_t hash_1;
|
||||
hash_func_t hash_2;
|
||||
hash_cmp_func_t hash_cmp;
|
||||
{
|
||||
ht->ht_size = round_up_2 (size);
|
||||
ht->ht_empty_slots = ht->ht_size;
|
||||
|
@ -67,7 +71,11 @@ hash_init (struct hash_table* ht, unsigned long size,
|
|||
/* Load an array of items into `ht'. */
|
||||
|
||||
void
|
||||
hash_load (struct hash_table* ht, void *item_table, unsigned long cardinality, unsigned long size)
|
||||
hash_load (ht, item_table, cardinality, size)
|
||||
struct hash_table* ht;
|
||||
void *item_table;
|
||||
unsigned long cardinality;
|
||||
unsigned long size;
|
||||
{
|
||||
char *items = (char *) item_table;
|
||||
while (cardinality--)
|
||||
|
@ -83,7 +91,9 @@ hash_load (struct hash_table* ht, void *item_table, unsigned long cardinality, u
|
|||
ht_fill on insertion. */
|
||||
|
||||
void **
|
||||
hash_find_slot (struct hash_table* ht, void const *key)
|
||||
hash_find_slot (ht, key)
|
||||
struct hash_table* ht;
|
||||
void const *key;
|
||||
{
|
||||
void **slot;
|
||||
void **deleted_slot = 0;
|
||||
|
@ -118,14 +128,18 @@ hash_find_slot (struct hash_table* ht, void const *key)
|
|||
}
|
||||
|
||||
void *
|
||||
hash_find_item (struct hash_table* ht, void const *key)
|
||||
hash_find_item (ht, key)
|
||||
struct hash_table* ht;
|
||||
void const *key;
|
||||
{
|
||||
void **slot = hash_find_slot (ht, key);
|
||||
return ((HASH_VACANT (*slot)) ? 0 : *slot);
|
||||
}
|
||||
|
||||
void *
|
||||
hash_insert (struct hash_table* ht, void *item)
|
||||
hash_insert (ht, item)
|
||||
struct hash_table* ht;
|
||||
void *item;
|
||||
{
|
||||
void **slot = hash_find_slot (ht, item);
|
||||
void *old_item = slot ? *slot : 0;
|
||||
|
@ -134,7 +148,10 @@ hash_insert (struct hash_table* ht, void *item)
|
|||
}
|
||||
|
||||
void *
|
||||
hash_insert_at (struct hash_table* ht, void *item, void const *slot)
|
||||
hash_insert_at (ht, item, slot)
|
||||
struct hash_table* ht;
|
||||
void *item;
|
||||
void const *slot;
|
||||
{
|
||||
void *old_item = *(void **) slot;
|
||||
if (HASH_VACANT (old_item))
|
||||
|
@ -155,14 +172,18 @@ hash_insert_at (struct hash_table* ht, void *item, void const *slot)
|
|||
}
|
||||
|
||||
void *
|
||||
hash_delete (struct hash_table* ht, void const *item)
|
||||
hash_delete (ht, item)
|
||||
struct hash_table* ht;
|
||||
void const *item;
|
||||
{
|
||||
void **slot = hash_find_slot (ht, item);
|
||||
return hash_delete_at (ht, slot);
|
||||
}
|
||||
|
||||
void *
|
||||
hash_delete_at (struct hash_table* ht, void const *slot)
|
||||
hash_delete_at (ht, slot)
|
||||
struct hash_table* ht;
|
||||
void const *slot;
|
||||
{
|
||||
void *item = *(void **) slot;
|
||||
if (!HASH_VACANT (item))
|
||||
|
@ -176,7 +197,8 @@ hash_delete_at (struct hash_table* ht, void const *slot)
|
|||
}
|
||||
|
||||
void
|
||||
hash_free_items (struct hash_table* ht)
|
||||
hash_free_items (ht)
|
||||
struct hash_table* ht;
|
||||
{
|
||||
void **vec = ht->ht_vec;
|
||||
void **end = &vec[ht->ht_size];
|
||||
|
@ -192,7 +214,8 @@ hash_free_items (struct hash_table* ht)
|
|||
}
|
||||
|
||||
void
|
||||
hash_delete_items (struct hash_table* ht)
|
||||
hash_delete_items (ht)
|
||||
struct hash_table* ht;
|
||||
{
|
||||
void **vec = ht->ht_vec;
|
||||
void **end = &vec[ht->ht_size];
|
||||
|
@ -206,7 +229,9 @@ hash_delete_items (struct hash_table* ht)
|
|||
}
|
||||
|
||||
void
|
||||
hash_free (struct hash_table* ht, int free_items)
|
||||
hash_free (ht, free_items)
|
||||
struct hash_table* ht;
|
||||
int free_items;
|
||||
{
|
||||
if (free_items)
|
||||
hash_free_items (ht);
|
||||
|
@ -221,7 +246,9 @@ hash_free (struct hash_table* ht, int free_items)
|
|||
}
|
||||
|
||||
void
|
||||
hash_map (struct hash_table *ht, hash_map_func_t map)
|
||||
hash_map (ht, map)
|
||||
struct hash_table *ht;
|
||||
hash_map_func_t map;
|
||||
{
|
||||
void **slot;
|
||||
void **end = &ht->ht_vec[ht->ht_size];
|
||||
|
@ -234,7 +261,10 @@ hash_map (struct hash_table *ht, hash_map_func_t map)
|
|||
}
|
||||
|
||||
void
|
||||
hash_map_arg (struct hash_table *ht, hash_map_arg_func_t map, void *arg)
|
||||
hash_map_arg (ht, map, arg)
|
||||
struct hash_table *ht;
|
||||
hash_map_arg_func_t map;
|
||||
void *arg;
|
||||
{
|
||||
void **slot;
|
||||
void **end = &ht->ht_vec[ht->ht_size];
|
||||
|
@ -249,7 +279,8 @@ hash_map_arg (struct hash_table *ht, hash_map_arg_func_t map, void *arg)
|
|||
/* Double the size of the hash table in the event of overflow... */
|
||||
|
||||
static void
|
||||
hash_rehash (struct hash_table* ht)
|
||||
hash_rehash (ht)
|
||||
struct hash_table* ht;
|
||||
{
|
||||
unsigned long old_ht_size = ht->ht_size;
|
||||
void **old_vec = ht->ht_vec;
|
||||
|
@ -276,7 +307,9 @@ hash_rehash (struct hash_table* ht)
|
|||
}
|
||||
|
||||
void
|
||||
hash_print_stats (struct hash_table *ht, FILE *out_FILE)
|
||||
hash_print_stats (ht, out_FILE)
|
||||
struct hash_table *ht;
|
||||
FILE *out_FILE;
|
||||
{
|
||||
/* GKM FIXME: honor NO_FLOAT */
|
||||
fprintf (out_FILE, _("Load=%ld/%ld=%.0f%%, "), ht->ht_fill, ht->ht_size,
|
||||
|
@ -292,7 +325,10 @@ hash_print_stats (struct hash_table *ht, FILE *out_FILE)
|
|||
user-supplied vector, or malloc one. */
|
||||
|
||||
void **
|
||||
hash_dump (struct hash_table *ht, void **vector_0, qsort_cmp_t compare)
|
||||
hash_dump (ht, vector_0, compare)
|
||||
struct hash_table *ht;
|
||||
void **vector_0;
|
||||
qsort_cmp_t compare;
|
||||
{
|
||||
void **vector;
|
||||
void **slot;
|
||||
|
@ -315,7 +351,8 @@ hash_dump (struct hash_table *ht, void **vector_0, qsort_cmp_t compare)
|
|||
/* Round a given number up to the nearest power of 2. */
|
||||
|
||||
static unsigned long
|
||||
round_up_2 (unsigned long n)
|
||||
round_up_2 (n)
|
||||
unsigned long n;
|
||||
{
|
||||
n |= (n >> 1);
|
||||
n |= (n >> 2);
|
||||
|
|
293
main.c
293
main.c
|
@ -105,9 +105,6 @@ struct command_switch
|
|||
char *default_value;/* Pointer to default value. */
|
||||
|
||||
char *long_name; /* Long option name. */
|
||||
char *argdesc; /* Descriptive word for argument. */
|
||||
char *description; /* Description for usage message. */
|
||||
/* 0 means internal; don't display help. */
|
||||
};
|
||||
|
||||
/* True if C is a switch value that corresponds to a short option. */
|
||||
|
@ -258,115 +255,136 @@ int warn_undefined_variables_flag;
|
|||
|
||||
int always_make_flag = 0;
|
||||
|
||||
/* The usage output. We write it this way to make life easier for the
|
||||
translators, especially those trying to translate to right-to-left
|
||||
languages like Hebrew. */
|
||||
|
||||
static const char *const usage[] =
|
||||
{
|
||||
N_("Options:\n"),
|
||||
N_("\
|
||||
-b, -m Ignored for compatibility.\n"),
|
||||
N_("\
|
||||
-B, --always-make Unconditionally make all targets.\n"),
|
||||
N_("\
|
||||
-C DIRECTORY, --directory=DIRECTORY\n\
|
||||
Change to DIRECTORY before doing anything.\n"),
|
||||
N_("\
|
||||
-d Print lots of debugging information.\n"),
|
||||
N_("\
|
||||
--debug[=FLAGS] Print various types of debugging information.\n"),
|
||||
N_("\
|
||||
-e, --environment-overrides\n\
|
||||
Environment variables override makefiles.\n"),
|
||||
N_("\
|
||||
-f FILE, --file=FILE, --makefile=FILE\n\
|
||||
Read FILE as a makefile.\n"),
|
||||
N_("\
|
||||
-h, --help Print this message and exit.\n"),
|
||||
N_("\
|
||||
-i, --ignore-errors Ignore errors from commands.\n"),
|
||||
N_("\
|
||||
-I DIRECTORY, --include-dir=DIRECTORY\n\
|
||||
Search DIRECTORY for included makefiles.\n"),
|
||||
N_("\
|
||||
-j [N], --jobs[=N] Allow N jobs at once; infinite jobs with no arg.\n"),
|
||||
N_("\
|
||||
-k, --keep-going Keep going when some targets can't be made.\n"),
|
||||
N_("\
|
||||
-l [N], --load-average[=N], --max-load[=N]\n\
|
||||
Don't start multiple jobs unless load is below N.\n"),
|
||||
N_("\
|
||||
-n, --just-print, --dry-run, --recon\n\
|
||||
Don't actually run any commands; just print them.\n"),
|
||||
N_("\
|
||||
-o FILE, --old-file=FILE, --assume-old=FILE\n\
|
||||
Consider FILE to be very old and don't remake it.\n"),
|
||||
N_("\
|
||||
-p, --print-data-base Print make's internal database.\n"),
|
||||
N_("\
|
||||
-q, --question Run no commands; exit status says if up to date.\n"),
|
||||
N_("\
|
||||
-r, --no-builtin-rules Disable the built-in implicit rules.\n"),
|
||||
N_("\
|
||||
-R, --no-builtin-variables Disable the built-in variable settings.\n"),
|
||||
N_("\
|
||||
-s, --silent, --quiet Don't echo commands.\n"),
|
||||
N_("\
|
||||
-S, --no-keep-going, --stop\n\
|
||||
Turns off -k.\n"),
|
||||
N_("\
|
||||
-t, --touch Touch targets instead of remaking them.\n"),
|
||||
N_("\
|
||||
-v, --version Print the version number of make and exit.\n"),
|
||||
N_("\
|
||||
-w, --print-directory Print the current directory.\n"),
|
||||
N_("\
|
||||
--no-print-directory Turn off -w, even if it was turned on implicitly.\n"),
|
||||
N_("\
|
||||
-W FILE, --what-if=FILE, --new-file=FILE, --assume-new=FILE\n\
|
||||
Consider FILE to be infinitely new.\n"),
|
||||
N_("\
|
||||
--warn-undefined-variables Warn when an undefined variable is referenced.\n"),
|
||||
NULL
|
||||
};
|
||||
|
||||
/* The table of command switches. */
|
||||
|
||||
static const struct command_switch switches[] =
|
||||
{
|
||||
{ 'b', ignore, 0, 0, 0, 0, 0, 0,
|
||||
0, 0,
|
||||
N_("Ignored for compatibility") },
|
||||
{ 'B', flag, (char *) &always_make_flag, 1, 1, 0, 0, 0,
|
||||
"always-make", 0,
|
||||
N_("Unconditionally make all targets") },
|
||||
{ 'C', string, (char *) &directories, 0, 0, 0, 0, 0,
|
||||
"directory", N_("DIRECTORY"),
|
||||
N_("Change to DIRECTORY before doing anything") },
|
||||
{ 'd', flag, (char *) &debug_flag, 1, 1, 0, 0, 0,
|
||||
0, 0,
|
||||
N_("Print lots of debugging information") },
|
||||
{ CHAR_MAX+1, string, (char *) &db_flags, 1, 1, 0,
|
||||
"basic", 0,
|
||||
"debug", N_("FLAGS"),
|
||||
N_("Print various types of debugging information") },
|
||||
{ 'b', ignore, 0, 0, 0, 0, 0, 0, 0 },
|
||||
{ 'B', flag, (char *) &always_make_flag, 1, 1, 0, 0, 0, "always-make" },
|
||||
{ 'C', string, (char *) &directories, 0, 0, 0, 0, 0, "directory" },
|
||||
{ 'd', flag, (char *) &debug_flag, 1, 1, 0, 0, 0, 0 },
|
||||
{ CHAR_MAX+1, string, (char *) &db_flags, 1, 1, 0, "basic", 0, "debug" },
|
||||
#ifdef WINDOWS32
|
||||
{ 'D', flag, (char *) &suspend_flag, 1, 1, 0, 0, 0,
|
||||
"suspend-for-debug", 0,
|
||||
N_("Suspend process to allow a debugger to attach") },
|
||||
{ 'D', flag, (char *) &suspend_flag, 1, 1, 0, 0, 0, "suspend-for-debug" },
|
||||
#endif
|
||||
{ 'e', flag, (char *) &env_overrides, 1, 1, 0, 0, 0,
|
||||
"environment-overrides", 0,
|
||||
N_("Environment variables override makefiles") },
|
||||
{ 'f', string, (char *) &makefiles, 0, 0, 0, 0, 0,
|
||||
"file", N_("FILE"),
|
||||
N_("Read FILE as a makefile") },
|
||||
{ 'h', flag, (char *) &print_usage_flag, 0, 0, 0, 0, 0,
|
||||
"help", 0,
|
||||
N_("Print this message and exit") },
|
||||
"environment-overrides", },
|
||||
{ 'f', string, (char *) &makefiles, 0, 0, 0, 0, 0, "file" },
|
||||
{ 'h', flag, (char *) &print_usage_flag, 0, 0, 0, 0, 0, "help" },
|
||||
{ 'i', flag, (char *) &ignore_errors_flag, 1, 1, 0, 0, 0,
|
||||
"ignore-errors", 0,
|
||||
N_("Ignore errors from commands") },
|
||||
"ignore-errors" },
|
||||
{ 'I', string, (char *) &include_directories, 1, 1, 0, 0, 0,
|
||||
"include-dir", N_("DIRECTORY"),
|
||||
N_("Search DIRECTORY for included makefiles") },
|
||||
{ 'j',
|
||||
positive_int, (char *) &job_slots, 1, 1, 0,
|
||||
(char *) &inf_jobs, (char *) &default_job_slots,
|
||||
"jobs", "N",
|
||||
N_("Allow N jobs at once; infinite jobs with no arg") },
|
||||
"include-dir" },
|
||||
{ 'j', positive_int, (char *) &job_slots, 1, 1, 0, (char *) &inf_jobs,
|
||||
(char *) &default_job_slots, "jobs" },
|
||||
{ CHAR_MAX+2, string, (char *) &jobserver_fds, 1, 1, 0, 0, 0,
|
||||
"jobserver-fds", 0,
|
||||
0 },
|
||||
{ 'k', flag, (char *) &keep_going_flag, 1, 1, 0,
|
||||
0, (char *) &default_keep_going_flag,
|
||||
"keep-going", 0,
|
||||
N_("Keep going when some targets can't be made") },
|
||||
"jobserver-fds" },
|
||||
{ 'k', flag, (char *) &keep_going_flag, 1, 1, 0, 0,
|
||||
(char *) &default_keep_going_flag, "keep-going" },
|
||||
#ifndef NO_FLOAT
|
||||
{ 'l', floating, (char *) &max_load_average, 1, 1, 0,
|
||||
(char *) &default_load_average, (char *) &default_load_average,
|
||||
"load-average", "N",
|
||||
N_("Don't start multiple jobs unless load is below N") },
|
||||
"load-average" },
|
||||
#else
|
||||
{ 'l', positive_int, (char *) &max_load_average, 1, 1, 0,
|
||||
(char *) &default_load_average, (char *) &default_load_average,
|
||||
"load-average", "N",
|
||||
N_("Don't start multiple jobs unless load is below N") },
|
||||
"load-average" },
|
||||
#endif
|
||||
{ 'm', ignore, 0, 0, 0, 0, 0, 0,
|
||||
0, 0,
|
||||
"-b" },
|
||||
{ 'n', flag, (char *) &just_print_flag, 1, 1, 1, 0, 0,
|
||||
"just-print", 0,
|
||||
N_("Don't actually run any commands; just print them") },
|
||||
{ 'o', string, (char *) &old_files, 0, 0, 0, 0, 0,
|
||||
"old-file", N_("FILE"),
|
||||
N_("Consider FILE to be very old and don't remake it") },
|
||||
{ 'm', ignore, 0, 0, 0, 0, 0, 0, 0 },
|
||||
{ 'n', flag, (char *) &just_print_flag, 1, 1, 1, 0, 0, "just-print" },
|
||||
{ 'o', string, (char *) &old_files, 0, 0, 0, 0, 0, "old-file" },
|
||||
{ 'p', flag, (char *) &print_data_base_flag, 1, 1, 0, 0, 0,
|
||||
"print-data-base", 0,
|
||||
N_("Print make's internal database") },
|
||||
{ 'q', flag, (char *) &question_flag, 1, 1, 1, 0, 0,
|
||||
"question", 0,
|
||||
N_("Run no commands; exit status says if up to date") },
|
||||
"print-data-base" },
|
||||
{ 'q', flag, (char *) &question_flag, 1, 1, 1, 0, 0, "question" },
|
||||
{ 'r', flag, (char *) &no_builtin_rules_flag, 1, 1, 0, 0, 0,
|
||||
"no-builtin-rules", 0,
|
||||
N_("Disable the built-in implicit rules") },
|
||||
"no-builtin-rules" },
|
||||
{ 'R', flag, (char *) &no_builtin_variables_flag, 1, 1, 0, 0, 0,
|
||||
"no-builtin-variables", 0,
|
||||
N_("Disable the built-in variable settings") },
|
||||
{ 's', flag, (char *) &silent_flag, 1, 1, 0, 0, 0,
|
||||
"silent", 0,
|
||||
N_("Don't echo commands") },
|
||||
{ 'S', flag_off, (char *) &keep_going_flag, 1, 1, 0,
|
||||
0, (char *) &default_keep_going_flag,
|
||||
"no-keep-going", 0,
|
||||
N_("Turns off -k") },
|
||||
{ 't', flag, (char *) &touch_flag, 1, 1, 1, 0, 0,
|
||||
"touch", 0,
|
||||
N_("Touch targets instead of remaking them") },
|
||||
{ 'v', flag, (char *) &print_version_flag, 1, 1, 0, 0, 0,
|
||||
"version", 0,
|
||||
N_("Print the version number of make and exit") },
|
||||
"no-builtin-variables" },
|
||||
{ 's', flag, (char *) &silent_flag, 1, 1, 0, 0, 0, "silent" },
|
||||
{ 'S', flag_off, (char *) &keep_going_flag, 1, 1, 0, 0,
|
||||
(char *) &default_keep_going_flag, "no-keep-going" },
|
||||
{ 't', flag, (char *) &touch_flag, 1, 1, 1, 0, 0, "touch" },
|
||||
{ 'v', flag, (char *) &print_version_flag, 1, 1, 0, 0, 0, "version" },
|
||||
{ 'w', flag, (char *) &print_directory_flag, 1, 1, 0, 0, 0,
|
||||
"print-directory", 0,
|
||||
N_("Print the current directory") },
|
||||
"print-directory" },
|
||||
{ CHAR_MAX+3, flag, (char *) &inhibit_print_directory_flag, 1, 1, 0, 0, 0,
|
||||
"no-print-directory", 0,
|
||||
N_("Turn off -w, even if it was turned on implicitly") },
|
||||
{ 'W', string, (char *) &new_files, 0, 0, 0, 0, 0,
|
||||
"what-if", N_("FILE"),
|
||||
N_("Consider FILE to be infinitely new") },
|
||||
"no-print-directory" },
|
||||
{ 'W', string, (char *) &new_files, 0, 0, 0, 0, 0, "what-if" },
|
||||
{ CHAR_MAX+4, flag, (char *) &warn_undefined_variables_flag, 1, 1, 0, 0, 0,
|
||||
"warn-undefined-variables", 0,
|
||||
N_("Warn when an undefined variable is referenced") },
|
||||
"warn-undefined-variables" },
|
||||
{ '\0', }
|
||||
};
|
||||
|
||||
|
@ -385,12 +403,6 @@ static struct option long_option_aliases[] =
|
|||
{ "makefile", required_argument, 0, 'f' },
|
||||
};
|
||||
|
||||
/* The usage message prints the descriptions of options starting in
|
||||
this column. Make sure it leaves enough room for the longest
|
||||
description to fit in less than 80 characters. */
|
||||
|
||||
#define DESCRIPTION_COLUMN 30
|
||||
|
||||
/* List of goal targets. */
|
||||
|
||||
static struct dep *goals, *lastgoal;
|
||||
|
@ -2104,7 +2116,7 @@ print_usage (bad)
|
|||
int bad;
|
||||
{
|
||||
extern char *make_host;
|
||||
register const struct command_switch *cs;
|
||||
const char *const *cpp;
|
||||
FILE *usageto;
|
||||
|
||||
if (print_version_flag)
|
||||
|
@ -2114,93 +2126,16 @@ print_usage (bad)
|
|||
|
||||
fprintf (usageto, _("Usage: %s [options] [target] ...\n"), program);
|
||||
|
||||
fputs (_("Options:\n"), usageto);
|
||||
for (cs = switches; cs->c != '\0'; ++cs)
|
||||
{
|
||||
char buf[1024], shortarg[50], longarg[50], *p;
|
||||
|
||||
if (!cs->description || cs->description[0] == '-')
|
||||
continue;
|
||||
|
||||
switch (long_options[cs - switches].has_arg)
|
||||
{
|
||||
case no_argument:
|
||||
shortarg[0] = longarg[0] = '\0';
|
||||
break;
|
||||
case required_argument:
|
||||
sprintf (longarg, "=%s", gettext (cs->argdesc));
|
||||
sprintf (shortarg, " %s", gettext (cs->argdesc));
|
||||
break;
|
||||
case optional_argument:
|
||||
sprintf (longarg, "[=%s]", gettext (cs->argdesc));
|
||||
sprintf (shortarg, " [%s]", gettext (cs->argdesc));
|
||||
break;
|
||||
}
|
||||
|
||||
p = buf;
|
||||
|
||||
if (short_option (cs->c))
|
||||
{
|
||||
sprintf (buf, " -%c%s", cs->c, shortarg);
|
||||
p += strlen (p);
|
||||
}
|
||||
if (cs->long_name != 0)
|
||||
{
|
||||
unsigned int i;
|
||||
sprintf (p, "%s--%s%s",
|
||||
!short_option (cs->c) ? " " : ", ",
|
||||
cs->long_name, longarg);
|
||||
p += strlen (p);
|
||||
for (i = 0; i < (sizeof (long_option_aliases) /
|
||||
sizeof (long_option_aliases[0]));
|
||||
++i)
|
||||
if (long_option_aliases[i].val == cs->c)
|
||||
{
|
||||
sprintf (p, ", --%s%s",
|
||||
long_option_aliases[i].name, longarg);
|
||||
p += strlen (p);
|
||||
}
|
||||
}
|
||||
{
|
||||
const struct command_switch *ncs = cs;
|
||||
while ((++ncs)->c != '\0')
|
||||
if (ncs->description
|
||||
&& ncs->description[0] == '-'
|
||||
&& ncs->description[1] == cs->c)
|
||||
{
|
||||
/* This is another switch that does the same
|
||||
one as the one we are processing. We want
|
||||
to list them all together on one line. */
|
||||
sprintf (p, ", -%c%s", ncs->c, shortarg);
|
||||
p += strlen (p);
|
||||
if (ncs->long_name != 0)
|
||||
{
|
||||
sprintf (p, ", --%s%s", ncs->long_name, longarg);
|
||||
p += strlen (p);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (p - buf > DESCRIPTION_COLUMN - 2)
|
||||
/* The list of option names is too long to fit on the same
|
||||
line with the description, leaving at least two spaces.
|
||||
Print it on its own line instead. */
|
||||
{
|
||||
fprintf (usageto, "%s\n", buf);
|
||||
buf[0] = '\0';
|
||||
}
|
||||
|
||||
fprintf (usageto, "%*s%s.\n",
|
||||
- DESCRIPTION_COLUMN,
|
||||
buf, gettext (cs->description));
|
||||
}
|
||||
for (cpp = usage; *cpp; ++cpp)
|
||||
fputs (_(*cpp), usageto);
|
||||
|
||||
if (!remote_description || *remote_description == '\0')
|
||||
fprintf (usageto, _("\nThis program built for %s"), make_host);
|
||||
fprintf (usageto, _("\nThis program built for %s\n"), make_host);
|
||||
else
|
||||
fprintf (usageto, "\nThis program built for %s (%s)", make_host, remote_description);
|
||||
fprintf (usageto, _("\nThis program built for %s (%s)\n"),
|
||||
make_host, remote_description);
|
||||
|
||||
fprintf (usageto, _("\nReport bugs to <bug-make@gnu.org>\n"));
|
||||
fprintf (usageto, _("Report bugs to <bug-make@gnu.org>\n"));
|
||||
}
|
||||
|
||||
/* Decode switches from ARGC and ARGV.
|
||||
|
|
|
@ -218,7 +218,7 @@ changelog-check:
|
|||
po-check:
|
||||
if test -f po/POTFILES.in; then \
|
||||
grep -E -v '^(#|$$)' po/POTFILES.in | sort > $@-1; \
|
||||
grep -E -l '\b_\(' lib/*.c src/*.c | sort > $@-2; \
|
||||
grep -E -l '\b_\(' *.c | sort > $@-2; \
|
||||
diff -u $@-1 $@-2 || exit 1; \
|
||||
rm -f $@-1 $@-2; \
|
||||
fi
|
||||
|
|
4
misc.c
4
misc.c
|
@ -339,7 +339,7 @@ void
|
|||
perror_with_name (str, name)
|
||||
const char *str, *name;
|
||||
{
|
||||
error (NILF, "%s%s: %s", str, name, strerror (errno));
|
||||
error (NILF, _("%s%s: %s"), str, name, strerror (errno));
|
||||
}
|
||||
|
||||
/* Print an error message from errno and exit. */
|
||||
|
@ -348,7 +348,7 @@ void
|
|||
pfatal_with_name (name)
|
||||
const char *name;
|
||||
{
|
||||
fatal (NILF, "%s: %s", name, strerror (errno));
|
||||
fatal (NILF, _("%s: %s"), name, strerror (errno));
|
||||
|
||||
/* NOTREACHED */
|
||||
}
|
||||
|
|
|
@ -9,6 +9,7 @@ expand.c
|
|||
file.c
|
||||
function.c
|
||||
getopt.c
|
||||
hash.c
|
||||
implicit.c
|
||||
job.c
|
||||
main.c
|
||||
|
|
|
@ -214,7 +214,6 @@ handle_special_var (var)
|
|||
|
||||
if (streq (var->name, ".TARGETS"))
|
||||
var->value = build_target_list (var->value);
|
||||
|
||||
else
|
||||
*/
|
||||
|
||||
|
|
Loading…
Reference in a new issue