> ftp://alpha.gnu.org/gnu/hello/hello-2.1.95.tar.bz2 (or .gz)
A quick review.
1. Here's a warning I observed on Solaris 8 with Sun C 5.8:
source='hello.c' object='hello.o' libtool=no \
DEPDIR=.deps depmode=none /bin/bash ../build-aux/depcomp \
cc -xarch=v9 -DLOCALEDIR=\"/usr/local/share/locale\" -DHAVE_CONFIG_H
-I. -I. -I.. -I../gnulib/lib -I../gnulib/lib -D_REENTRANT -g -c hello.c
"hello.c", line 114: warning: assignment type mismatch:
pointer to char "=" pointer to const char
2. The "#if ENABLE_NLS" isn't needed, since gettext.h does the right
thing anyway.
3. "hello a b c" outputs a less-than-helpful diagnostic, which doesn't
say that it's the "hello" program.
Here are proposed patches:
2006-11-09 Paul Eggert <[EMAIL PROTECTED]>
* src/hello.c (main): Make greeting const char *, to avoid
a violation of the C standard when assigning _("...") to it.
Remove unnecessary #if ENABLE_NLS bracket.
If too many operands are given, report our name, and the first
extra one.
--- src/hello.c.orig 2006-10-18 15:36:18.000000000 -0700
+++ src/hello.c 2006-11-09 09:39:19.184032000 -0800
@@ -42,18 +42,16 @@ main (int argc, char *argv[])
{
int optc;
int t = 0, n = 0, lose = 0;
- char *greeting = NULL;
+ const char *greeting = NULL;
program_name = argv[0];
/* Set locale via LC_ALL. */
setlocale (LC_ALL, "");
-#if ENABLE_NLS
/* Set the text message domain. */
bindtextdomain (PACKAGE, LOCALEDIR);
textdomain (PACKAGE);
-#endif
while ((optc = getopt_long (argc, argv, "g:hntv", longopts, NULL)) != -1)
switch (optc)
@@ -85,7 +83,8 @@ main (int argc, char *argv[])
{
/* Print error message and exit. */
if (optind < argc)
- fputs (_("Too many arguments\n"), stderr);
+ fprintf (stderr, _("%s: extra operand: %s\n"),
+ program_name, argv[optind]);
fprintf (stderr, _("Try `%s --help' for more information.\n"),
program_name);
exit (1);