| \input texinfo @c -*-texinfo-*- |
| @c %**start of header |
| @setfilename hello.info |
| @include version.texi |
| @settitle GNU Hello @value{VERSION} |
| |
| @c Define a new index for options. |
| @defcodeindex op |
| @c Combine everything into one index (arbitrarily chosen to be the |
| @c concept index). |
| @syncodeindex op cp |
| @c %**end of header |
| |
| @copying |
| This manual is for GNU Hello (version @value{VERSION}, @value{UPDATED}), |
| which prints a friendly greeting (and serves as an example GNU package). |
| |
| Copyright @copyright{} 1992, 1993, 1996, 2002, 2005, 2006, 2007, 2008, |
| 2009, 2010, 2011, 2012, 2013, 2014, 2015 Free Software Foundation, Inc. |
| |
| @quotation |
| Permission is granted to copy, distribute and/or modify this document |
| under the terms of the GNU Free Documentation License, Version 1.3 or |
| any later version published by the Free Software Foundation; with no |
| Invariant Sections, with no Front-Cover Texts, and with no Back-Cover |
| Texts. A copy of the license is included in the section entitled |
| ``GNU Free Documentation License''. |
| @end quotation |
| @end copying |
| @c If your manual is published on paper by the FSF, it should include |
| @c the standard FSF Front-Cover and Back-Cover Texts, as given in |
| @c maintain.texi. |
| |
| @dircategory Basics |
| @direntry |
| * Hello: (hello). Hello, GNU world. |
| @end direntry |
| |
| @titlepage |
| @title GNU Hello |
| @subtitle for version @value{VERSION}, @value{UPDATED} |
| @author GNU Hello Developers (@email{bug-hello@@gnu.org}) |
| @page |
| @vskip 0pt plus 1filll |
| @insertcopying |
| @end titlepage |
| |
| @contents |
| |
| |
| @ifnottex |
| @node Top |
| @top GNU Hello |
| |
| This manual is for GNU Hello (version @value{VERSION}, @value{UPDATED}), |
| which prints a friendly greeting (and serves as an example GNU package). |
| @end ifnottex |
| |
| @menu |
| * Overview:: General purpose and information. |
| * Sample output:: Sample output from @command{hello}. |
| * Invoking hello:: How to run @command{hello}. |
| * Reporting bugs:: Sending bug reports and feature suggestions. |
| * GNU Free Documentation License:: Copying and sharing this documentation. |
| * Concept index:: Index of concepts. |
| @end menu |
| |
| |
| @node Overview |
| @chapter Overview |
| |
| @cindex greetings |
| @cindex overview |
| |
| The GNU @command{hello} program |
| (@url{http://www.gnu.org/software/hello/}) produces a familiar, |
| friendly greeting. It allows nonprogrammers to use a classic computer |
| science tool which would otherwise be unavailable to them. Because it |
| is protected by the GNU General Public License, users are free (in |
| perpetuity) to share and change it. |
| |
| @cindex joke, not |
| Not to spoil the joke, but of course the practical purpose of GNU |
| Hello is to serve as a minimal example of a GNU package. So, although |
| most manuals don't need to discuss the implementation of the programs |
| they document, that is part of the goal here. |
| |
| @cindex GNU coding standards |
| @cindex GNU maintainer standards |
| @cindex standards, GNU coding |
| @cindex standards, GNU maintainer |
| First, GNU Hello follows the GNU coding standards |
| (@pxref{Top,,Preface,standards,GNU Coding Standards}) and GNU |
| maintainer standards (@pxref{Top,,Preface,maintain, Information for |
| GNU Maintainers}). These are the basic documents which all GNU |
| packages should adhere to. |
| |
| The Hello package also implements recommended development practices |
| not embodied in the standards, using other GNU packages and features: |
| |
| @itemize @bullet |
| @item |
| @cindex Automake |
| @cindex Autoconf |
| It uses Automake (@pxref{Top,,Introduction,automake,GNU Automake}) and |
| hence also Autoconf (@pxref{Top,,Introduction,autoconf,GNU Autoconf}) |
| for configuration. |
| |
| @item |
| @cindex Gnulib |
| @cindex @command{srclist-update} script |
| @cindex @file{README-dev} source file |
| It uses Gnulib (@pxref{Top,,Introduction,gnulib,GNU Gnulib}) to enhance |
| portability and avoid duplication of common sources. Both |
| @code{gnulib-tool} and @code{srclist-update} are used, for purposes of |
| example. See the @file{README-dev} file in the distribution. |
| |
| @item |
| @cindex Gettext |
| GNU Gettext (@pxref{Top,,Introduction,gettext,GNU Gettext}) is used |
| for internationalization support. Hello's greeting has been translated |
| into many languages. |
| |
| @item |
| @opindex --help |
| Internally, Hello uses the GNU @code{getopt_long} function |
| (@pxref{Getopt Long Options,,,libc,GNU C Library}) to parse options, |
| thus supporting GNU-style long options such as @option{--help}. |
| |
| @item |
| @cindex Help2man |
| The Hello Man page is generated with GNU @code{help2man} |
| (@pxref{Top,,Overview,help2man,GNU @code{help2man}}) from the |
| @option{--help} output. This relieves the maintainers from the burden |
| of updating separate man documentation, yet provides a reasonable |
| overview for man devotees. |
| |
| @item |
| @cindex Texinfo |
| Finally, Texinfo (@pxref{Top,,Introduction,texinfo,Texinfo}) is the |
| documentation format for this manual. It supports output in Info, |
| HTML, PDF, DVI, plain text, XML, and other formats. |
| |
| @end itemize |
| |
| GNU Hello is implemented in C@. The GNU Gettext distribution contains |
| ``hello world'' examples in many other programming languages; see the |
| Gettext home page at @url{http://www.gnu.org/software/gettext/}. |
| |
| @cindex @file{Makefile.am} targets |
| The top-level @file{Makefile.am} in Hello also contains a few special |
| targets for other projects to adapt as desired: |
| |
| @table @code |
| @item diff |
| Make a diff from the previous release, assuming the current tarball is |
| in the current tarball. |
| |
| @item po-check |
| Verify that all source files using @code{_()} are included for |
| translation in @file{po/POTFILES.in}, so translators will have all the |
| messages. |
| |
| @item wwwdoc |
| Sample procedure for updating the manual on the GNU web site, in this |
| case @url{http://www.gnu.org/software/hello/manual/}. |
| @end table |
| |
| @cindex authors |
| @cindex Haertel, Mike |
| @cindex MacKenzie, David |
| @cindex Brittenson, Jan |
| @cindex Hannum, Charles |
| @cindex McGrath, Roland |
| @cindex Friedman, Noah |
| @cindex Eichwalder, Karl |
| @cindex King, The |
| @cindex Berry, Karl |
| GNU Hello was written by Mike Haertel, David MacKenzie, Jan |
| Brittenson, Charles Hannum, Roland McGrath, Noah Friedman, Karl |
| Eichwalder, Karl Berry, and @w{The King}. |
| |
| |
| @node Sample output |
| @chapter Sample output |
| |
| @cindex sample output |
| @cindex examples |
| |
| Here are some examples of running GNU Hello. |
| |
| This is the output of the command @samp{hello}: |
| |
| @example |
| Hello, world! |
| @end example |
| |
| This is the output of the command @samp{hello --traditional}: |
| |
| @example |
| hello, world |
| @end example |
| |
| This is the output of the command @samp{hello --greeting=hi}: |
| |
| @example |
| hi |
| @end example |
| |
| |
| @node Invoking hello |
| @chapter Invoking @command{hello} |
| |
| @cindex invoking |
| @cindex options |
| @cindex usage |
| @cindex help |
| |
| The format for running the @command{hello} program is: |
| |
| @example |
| hello @var{option} @dots{} |
| @end example |
| |
| With no options, @command{hello} prints the greeting @samp{Hello, |
| world!}. |
| |
| @command{hello} supports the following options: |
| |
| @table @option |
| @item --greeting=@var{text} |
| @itemx -g @var{text} |
| @opindex --greeting |
| @opindex -g |
| Output @var{text} instead of the default greeting. |
| |
| @item --help |
| @itemx -h |
| @opindex --help |
| @opindex -h |
| Print an informative help message on standard output and exit |
| successfully. |
| |
| @cindex environment variables, help for |
| @c This comment prevents `make syntax-check' from diagnosing a doubled word "for\nFor" |
| For the @option{--help} output of GNU programs, it's strongly |
| encouraged to include a brief (one or two sentences) description of |
| what the program does, as well as the synopsis of how to run the |
| program. Any environment variables which affect execution should also |
| be mentioned (Hello doesn't have any). |
| |
| @item --traditional |
| @itemx -t |
| @opindex --traditional |
| @opindex -t |
| @cindex traditional |
| @cindex modern |
| Output the traditional greeting message @samp{hello, world}. |
| |
| @item --version |
| @itemx -v |
| @opindex --version |
| @opindex -v |
| Print the version number and licensing information of Hello on |
| standard output and then exit successfully. |
| |
| @end table |
| |
| If more than one of the greeting options (@option{-g}, |
| @option{-t}, and their long-named equivalents) is specified, whichever |
| comes last takes precedence. |
| |
| |
| @node Reporting bugs |
| @chapter Reporting bugs |
| |
| @cindex bug reporting |
| @cindex problems |
| @cindex reporting bugs |
| |
| To report bugs, suggest enhancements or otherwise discuss GNU Hello, |
| please send electronic mail to @email{bug-hello@@gnu.org}. |
| |
| @cindex checklist for bug reports |
| For bug reports, please include enough information for the maintainers |
| to reproduce the problem. Generally speaking, that means: |
| |
| @itemize @bullet |
| @item The version numbers of Hello (which you can find by running |
| @w{@samp{hello --version}}) and any other program(s) or |
| manual(s) involved. |
| @item Hardware and operating system names and versions. |
| @item The contents of any input files necessary to reproduce the bug. |
| @item The expected behavior and/or output. |
| @item A description of the problem and samples of any erroneous output. |
| @item Options you gave to @command{configure} other than specifying |
| installation directories. |
| @item Anything else that you think would be helpful. |
| @end itemize |
| |
| When in doubt whether something is needed or not, include it. It's |
| better to include too much than to leave out something important. |
| |
| @cindex patches, contributing |
| Patches are welcome; if possible, please make them with @samp{@w{diff |
| -c}} (@pxref{Top,, Overview, diff, Comparing and Merging Files}) and |
| include @file{ChangeLog} entries (@pxref{Change Log,,, emacs, The GNU |
| Emacs Manual}). Please follow the existing coding style. |
| |
| |
| @node GNU Free Documentation License |
| @appendix GNU Free Documentation License |
| |
| @include fdl.texi |
| |
| |
| @node Concept index |
| @unnumbered Concept index |
| |
| @printindex cp |
| |
| @bye |