diff --git a/NEWS b/NEWS index 2979ddace..4c3863bbc 100644 --- a/NEWS +++ b/NEWS @@ -1,6 +1,13 @@ Noteworthy changes in version 1.9.23 ------------------------------------------------- + * man pages for most tools are now build directly from the texinfo + source. + + * The gpg code from 1.4.5 has been fully merged into this release. + The configure option --enable-gpg is still required to build this + gpg part. For production use of OpenPGP the gpg version 1.4.5 is + still recommended. Noteworthy changes in version 1.9.22 (2006-07-27) diff --git a/README b/README index 35832f46c..6ae0e79bc 100644 --- a/README +++ b/README @@ -55,11 +55,12 @@ that this package won't conflict with a GnuPG 1.2 or 1.3 installation. gpg2 behaves just like gpg; it is however suggested to keep using gpg 1.2.x or 1.3.x. gpg2 is not even build by default. -In case of problem please ask on gpa-dev@gnupg.org for advise. Note +In case of problem please ask on gnupg-dev@gnupg.org for advise. Note that this release is only expected to build on GNU and *BSD systems. -A texinfo manual named `gnupg.info' will get installed. Some commands -and options given below. See also the section `SMARTCARD INTRO'. +A texinfo manual named `gnupg.info' will get installed. man pages for +all major components are also provided. Some commands and options +given below. See also the section `SMARTCARD INTRO'. COMMANDS diff --git a/doc/Makefile.am b/doc/Makefile.am index 872a7448e..8c1cdd767 100644 --- a/doc/Makefile.am +++ b/doc/Makefile.am @@ -22,7 +22,8 @@ EXTRA_DIST = gnupg-badge-openpgp.eps gnupg-badge-openpgp.jpg \ gnupg-badge-openpgp.pdf \ gnupg-card-architecture.eps gnupg-card-architecture.png \ - gnupg-card-architecture.pdf + gnupg-card-architecture.pdf \ + opt-homedir.texi see-also-note.texi BUILT_SOURCES = gnupg-card-architecture.eps gnupg-card-architecture.png \ gnupg-card-architecture.pdf @@ -38,12 +39,16 @@ gnupg_TEXINFOS = \ tools.texi debugging.texi glossary.texi contrib.texi gpl.texi \ sysnotes.texi gnupg-card-architecture.fig -YAT2M_OPTIONS = \ +AM_MAKEFINFOFLAGS = -I $(srcdir) + +YAT2M_OPTIONS = -I $(srcdir) \ --release "GnuPG @PACKAGE_VERSION@" --source "GNU Privacy Guard" myman_sources = gpg.texi gpgsm.texi gpg-agent.texi scdaemon.texi tools.texi myman_pages = gpg2.1 gpgsm.1 gpg-agent.1 scdaemon.1 \ - watchgnupg.1 gpgconf.1 addgnupghome.8 + watchgnupg.1 gpgconf.1 addgnupghome.8 gpg-preset-passphrase.1 \ + gpg-connect-agent.1 gpgparsemail.1 symcryptrun.1 \ + gpgsm-gencert.sh.1 man_MANS = $(myman_pages) diff --git a/doc/gpg-agent.texi b/doc/gpg-agent.texi index 74f9aa537..cb5032e41 100644 --- a/doc/gpg-agent.texi +++ b/doc/gpg-agent.texi @@ -168,14 +168,8 @@ per-user configuration file. The default configuration file is named below the home directory of the user. @anchor{option --homedir} -@item --homedir @var{dir} -@opindex homedir -Set the name of the home directory to @var{dir}. If his option is not -used, the home directory defaults to @file{~/.gnupg}. It is only -recognized when given on the command line. It also overrides any home -directory stated through the environment variable @env{GNUPGHOME} or -(on W32 systems) by means on the Registry entry -@var{HKCU\Software\GNU\GnuPG:HomeDir}. +@include opt-homedir.texi + @item -v @item --verbose diff --git a/doc/gpg.texi b/doc/gpg.texi index 49d332f5a..7d7e09c24 100644 --- a/doc/gpg.texi +++ b/doc/gpg.texi @@ -1501,11 +1501,8 @@ directory. If the filename does not contain a slash, it is assumed to be in the GnuPG home directory ("~/.gnupg" if --homedir or $GNUPGHOME is not used). -@item --homedir @code{directory} -Set the name of the home directory to @code{directory} If this option is not -used it defaults to "~/.gnupg". It does not make sense to use this in -a options file. This also overrides the environment variable -$GNUPGHOME. +@include opt-homedir.texi + @item --pcsc-driver @code{file} Use @code{file} to access the smartcard reader. The current default is diff --git a/doc/gpgsm.texi b/doc/gpgsm.texi index 63b1f74ad..720e3e7d8 100644 --- a/doc/gpgsm.texi +++ b/doc/gpgsm.texi @@ -286,14 +286,7 @@ per-user configuration file. The default configuration file is named @file{gpgsm.conf} and expected in the @file{.gnupg} directory directly below the home directory of the user. -@item --homedir @var{dir} -@opindex homedir -Set the name of the home directory to @var{dir}. If his option is not -used, the home directory defaults to @file{~/.gnupg}. It is only -recognized when given on the command line. It also overrides any home -directory stated through the environment variable @env{GNUPGHOME} or -(on W32 systems) by means on the Registry entry -@var{HKCU\Software\GNU\GnuPG:HomeDir}. +@include opt-homedir.texi @item -v diff --git a/doc/opt-homedir.texi b/doc/opt-homedir.texi new file mode 100644 index 000000000..387bd02ba --- /dev/null +++ b/doc/opt-homedir.texi @@ -0,0 +1,14 @@ +@c This option is included at several places. +@item --homedir @var{dir} +@opindex homedir +Set the name of the home directory to @var{dir}. If his option is not +used, the home directory defaults to @file{~/.gnupg}. It is only +recognized when given on the command line. It also overrides any home +directory stated through the environment variable @env{GNUPGHOME} or +(on W32 systems) by means on the Registry entry +@ifset isman +@var{HKCU\\Software\\GNU\\GnuPG:HomeDir}. +@end ifset +@ifclear isman +@var{HKCU\Software\GNU\GnuPG:HomeDir}. +@end ifclear diff --git a/doc/scdaemon.texi b/doc/scdaemon.texi index 9a9e278aa..f50752076 100644 --- a/doc/scdaemon.texi +++ b/doc/scdaemon.texi @@ -114,14 +114,8 @@ per-user configuration file. The default configuration file is named @file{scdaemon.conf} and expected in the @file{.gnupg} directory directly below the home directory of the user. -@item --homedir @var{dir} -@opindex homedir -Set the name of the home directory to @var{dir}. If his option is not -used, the home directory defaults to @file{~/.gnupg}. It is only -recognized when given on the command line. It also overrides any home -directory stated through the environment variable @env{GNUPGHOME} or -(on W32 systems) by means on the Registry entry -@var{HKCU\Software\GNU\GnuPG:HomeDir}. +@include opt-homedir.texi + @item -v @item --verbose diff --git a/doc/see-also-note.texi b/doc/see-also-note.texi new file mode 100644 index 000000000..b18efc3eb --- /dev/null +++ b/doc/see-also-note.texi @@ -0,0 +1,14 @@ +@c We append this note to all ``see also'' sections of the man pages + +@ifset isman +The full documentation for this tool is maintained as a Texinfo manual. +If GnuPG and the info program are properly installed at your site, the +command + +@example +info gnupg +@end example + +should give you access to the complete manual including a menu structure +and an index. +@end ifset diff --git a/doc/tools.texi b/doc/tools.texi index ec147601b..d4f698482 100644 --- a/doc/tools.texi +++ b/doc/tools.texi @@ -138,15 +138,17 @@ addgnupghome account1 account2 ... accountn @ifset manverb .B gpgconf .RI [ options ] -.BI --list-components +.B \-\-list-components .br .B gpgconf .RI [ options ] -.BI --list-options component +.B \-\-list-options +.I component .br .B gpgconf .RI [ options ] -.BI --change-options component +.B \-\-change-options +.I component @end ifset @@ -192,7 +194,7 @@ throughout this section. * Changing options:: Changing options of a component. @end menu - +@manpause @node Invoking gpgconf @subsection Invoking gpgconf @@ -210,7 +212,6 @@ List all options of the component @var{component}. @item --change-options @var{component} Change the options of the component @var{component}. -@manpause @end table @mansect options @@ -650,21 +651,48 @@ $ echo 'force:16:' | gpgconf --change-options dirmngr The @code{--runtime} option can influence when the changes take effect. +@mansect see also +@command{gpg}(1), +@command{gpgsm}(1), +@command{gpg-agent}(1), +@command{scdaemon}(1), +@command{dirmngr}(1) +@include see-also-note.texi + + @manpause @c @c GPGSM-GENCERT.SH @c @node gpgsm-gencert.sh @section Generate an X.509 certificate request +@manpage gpgsm-gencert.sh.1 +@ifset manverb +.B gpgsm-gencert.sh +\- Generate an X.509 certificate request +@end ifset +@mansect synopsis +@ifset manverb +.B gpgsm-gencert.sh +@end ifset + +@mansect description This is a simple tool to interactivly generate a certificate request which will be printed to stdout. +@manpause @noindent @command{gpgsm-gencert.sh} is invoked as: @samp{gpgsm-cencert.sh} +@mansect see also +@command{gpgsm}(1), +@command{gpg-agent}(1), +@command{scdaemon}(1) +@include see-also-note.texi + @c @@ -672,7 +700,21 @@ which will be printed to stdout. @c @node gpg-preset-passphrase @section Put a passphrase into the cache. +@manpage gpg-preset-passphrase.1 +@ifset manverb +.B gpg-preset-passphrase +\- Put a passphrase into gpg-agent's cache +@end ifset +@mansect synopsis +@ifset manverb +.B gpg-preset-passphrase +.RI [ options ] +.RI [ command ] +.I keygrip +@end ifset + +@mansect description The @command{gpg-preset-passphrase} is a utility to seed the internal cache of a running @command{gpg-agent} with passphrases. It is mainly useful for unattended machines, where the usual @command{pinentry} tool @@ -690,9 +732,10 @@ starting @command{gpg-agent} with the * Invoking gpg-preset-passphrase:: List of all commands and options. @end menu - +@manpause @node Invoking gpg-preset-passphrase @subsection List of all commands and options. +@mancont @noindent @command{gpg-preset-passphrase} is invoked this way: @@ -709,11 +752,13 @@ must be given: @table @gnupgtabopt @item --preset +@opindex preset Preset a passphrase. This is what you usually will use. @command{gpg-preset-passphrase} will then read the passphrase from @code{stdin}. @item --forget +@opindex forget Flush the passphrase for the given keygrip from the cache. @end table @@ -735,6 +780,12 @@ Instead of reading the passphrase from @code{stdin}, use the supplied for other users. @end table +@mansect see also +@command{gpg}(1), +@command{gpgsm}(1), +@command{gpg-agent}(1), +@command{scdaemon}(1) +@include see-also-note.texi @@ -743,8 +794,20 @@ for other users. @c GPG-CONNECT-AGENT @c @node gpg-connect-agent -@section Communicate with a runnig agent. +@section Communicate with a running agent. +@manpage gpg-connect-agent.1 +@ifset manverb +.B gpg-connect-agent +\- Communicate with a running agent +@end ifset +@mansect synopsis +@ifset manverb +.B gpg-connect-agent +.RI [ options ] +@end ifset + +@mansect description The @command{gpg-connect-agent} is a utility to communicate with a running @command{gpg-agent}. It is useful to check out the commands gpg-agent provides using the Assuan interface. It might also be useful @@ -758,9 +821,10 @@ here we connect to a running instance. * Invoking gpg-connect-agent:: List of all commands and options. @end menu - +@manpause @node Invoking gpg-connect-agent @subsection List of all commands and options. +@mancont @noindent @command{gpg-connect-agent} is invoked this way: @@ -784,15 +848,7 @@ Output additional information while running. @opindex quiet Try to be as quiet as possible. -@item --homedir @var{dir} -@opindex homedir -Set the name of the home directory to @var{dir}. If his option is not -used, the home directory defaults to @file{~/.gnupg}. It is only -recognized when given on the command line. It also overrides any home -directory stated through the environment variable @env{GNUPGHOME} or -(on W32 systems) by means on the Registry entry -@var{HKCU\Software\GNU\GnuPG:HomeDir}. - +@include opt-homedir.texi @item -S @itemx --raw-socket @var{name} @@ -802,16 +858,36 @@ Connect to socket @var{name} assuming this is an Assuan style server. Do not run any special initializations or environment checks. This may be used to directly connect to any Assuan style socket server. - @end table +@mansect see also +@command{gpg-agent}(1), +@command{scdaemon}(1) +@include see-also-note.texi + + + @c @c GPGPARSEMAIL @c @node gpgparsemail @section Parse a mail message into an annotated format -The @command{gpgparsemail} is a utility currentlu only useful for +@manpage gpgparsemail.1 +@ifset manverb +.B gpgparsemail +\- Parse a mail message into an annotated format +@end ifset + +@mansect synopsis +@ifset manverb +.B gpgparsemail +.RI [ options ] +.RI [ file ] +@end ifset + +@mansect description +The @command{gpgparsemail} is a utility currently only useful for debugging. Run it with @code{--help} for usage information. @@ -821,7 +897,26 @@ debugging. Run it with @code{--help} for usage information. @c @node symcryptrun @section Call a simple symmetric encryption tool. +@manpage symcryptrun.1 +@ifset manverb +.B symcryptrun +\- Call a simple symmetric encryption tool +@end ifset +@mansect synopsis +@ifset manverb +.B symcryptrun +.B \-\-class +.I class +.B \-\-program +.I program +.B \-\-keyfile +.I keyfile +.RB [ --decrypt | --encrypt ] +.RI [ inputfile ] +@end ifset + +@mansect description Sometimes simple encryption tools are already in use for a long time and there might be a desire to integrate them into the GnuPG framework. The protocols and encryption methods might be non-standard or not even @@ -838,7 +933,7 @@ configured with @samp{--enable-symcryptrun} at build time. * Invoking symcryptrun:: List of all commands and options. @end menu - +@manpause @node Invoking symcryptrun @subsection List of all commands and options. @@ -849,6 +944,7 @@ configured with @samp{--enable-symcryptrun} at build time. symcryptrun --class CLASS --program PROGRAM --keyfile KEYFILE [--decrypt | --encrypt] [inputfile] @end example +@mancont For encryption, the plain text must be provided on STDIN or as the argument @var{inputfile}, and the ciphertext will be output to STDOUT. @@ -882,14 +978,8 @@ Output additional information while running. @opindex quiet Try to be as quiet as possible. -@item --homedir @var{dir} -@opindex homedir -Set the name of the home directory to @var{dir}. If his option is not -used, the home directory defaults to @file{~/.gnupg}. It is only -recognized when given on the command line. It also overrides any home -directory stated through the environment variable @env{GNUPGHOME} or -(on W32 systems) by means on the Registry entry -@var{HKCU\Software\GNU\GnuPG:HomeDir}. +@include opt-homedir.texi + @item --log-file @var{file} @opindex log-file @@ -913,3 +1003,9 @@ The possible exit status codes of @command{symcryptrun} are: @end table +@mansect see also +@command{gpg}(1), +@command{gpgsm}(1), +@command{gpg-agent}(1), +@include see-also-note.texi + diff --git a/doc/yat2m.c b/doc/yat2m.c index e45168a4f..39feea9fe 100644 --- a/doc/yat2m.c +++ b/doc/yat2m.c @@ -85,6 +85,7 @@ static int debug; static const char *opt_source; static const char *opt_release; static const char *opt_select; +static const char *opt_include; static int opt_store; @@ -335,7 +336,6 @@ add_content (const char *sectname, char *line, int verbatim) section_buffer_t sect; line_buffer_t lb; - sect = get_section_buffer (sectname); if (sect->last_line && !sect->last_line->verbatim == !verbatim) { @@ -447,6 +447,7 @@ proc_texi_cmd (FILE *fp, const char *command, const char *rest, size_t len, { "end", 4 }, { "quotation",1, ".RS\n\\fB" }, { "ifset", 1 }, + { "ifclear", 1 }, { NULL } }; size_t n; @@ -501,6 +502,11 @@ proc_texi_cmd (FILE *fp, const char *command, const char *rest, size_t len, { fputs ("\\fR\n.RE\n", fp); } + else if (n >= 5 && !memcmp (s, "ifset", 5) + && (!n || s[5] == ' ' || s[5] == '\t' || s[5] == '\n')) + { + fputs ("\\fR\n.RE\n", fp); + } /* Now throw away the entire line. */ s = memchr (rest, '\n', len); return s? (s-rest)+1 : len; @@ -815,8 +821,8 @@ parse_file (const char *fname, FILE *fp, char **section_name) while (*p == ' ' || *p == '\t') p++; - if (skip_to_end - &&n == 4 && !memcmp (line, "@end", 4) + if (skip_to_end + && n == 4 && !memcmp (line, "@end", 4) && (line[4]==' '||line[4]=='\t'||!line[4])) { skip_to_end = 0; @@ -881,12 +887,29 @@ parse_file (const char *fname, FILE *fp, char **section_name) { skip_to_end = 1; } + else if (n == 8 && !memcmp (line, "@ifclear", 8) + && !strncmp (p, "isman", 5) && (p[5]==' '||p[5]=='\t'||!p[5])) + { + skip_to_end = 1; + } else if (n == 8 && !memcmp (line, "@include", 8) && (line[8]==' '||line[8]=='\t'||!line[8])) { char *incname = xstrdup (p); FILE *incfp = fopen (incname, "r"); + if (!incfp && opt_include && *opt_include && *p != '/') + { + free (incname); + incname = xmalloc (strlen (opt_include) + 1 + + strlen (p) + 1); + strcpy (incname, opt_include); + if ( incname[strlen (incname)-1] != '/' ) + strcat (incname, "/"); + strcat (incname, p); + incfp = fopen (incname, "r"); + } + if (!incfp) err ("can't open include file `%s':%s", incname, strerror (errno)); @@ -895,8 +918,9 @@ parse_file (const char *fname, FILE *fp, char **section_name) parse_file (incname, incfp, section_name); fclose (incfp); } + free (incname); } - else + else if (!skip_to_end) got_line = 1; } else if (!skip_to_end) @@ -956,7 +980,8 @@ main (int argc, char **argv) " --select NAME only output pages with @manpage NAME\n" " --verbose enable extra informational output\n" " --debug enable additional debug output\n" - " --help display this help and exit\n\n" + " --help display this help and exit\n" + " -I DIR also search in include DIR\n\n" "With no FILE, or when FILE is -, read standard input.\n\n" "Report bugs to ."); exit (0); @@ -1021,6 +1046,15 @@ main (int argc, char **argv) argc--; argv++; } } + else if (!strcmp (*argv, "-I")) + { + argc--; argv++; + if (argc) + { + opt_include = *argv; + argc--; argv++; + } + } } if (argc > 1)