Dear texinfo developers,

I run into an issue with texi2dvi (see attached example file) that
results in the following error messages:

$ texi2dvi libTMCG_bug.texi
This is pdfTeX, Version 3.14159265-2.6-1.40.18 (TeX Live 2017)
(preloaded format=etex)
 restricted \write18 enabled.
entering extended mode
(./libTMCG_bug.texi (/usr/share/texmf-dist/tex/texinfo/texinfo.tex
Loading texinfo [version 2016-09-18.18]: pdf, fonts, markup, glyphs,
page headings, tables, conditionals, indexing, sectioning, toc,
environments,
defuns, macros, cross references, insertions,
(/usr/share/texmf-dist/tex/generic/epsf/epsf.tex
This is `epsf.tex' v2.7.4 <14 February 2011>
) localization, formatting, and turning on texinfo input format.) [1] [2]
[-1] Chapter 1
Writing index file libTMCG_bug.cp
Writing index file libTMCG_bug.tp
Writing index file libTMCG_bug.fn
./libTMCG_bug.texi:86: Argument of & has an extra }.
<inserted text>
                @par
<to be read again>
                   }
@tclose ...n @rawbackslash @plainfrenchspacing #1}
                                                  @null
@codex #1->@tclose {#1}
                       @endgroup
<argument> ..._in, @code {const std::vector<int>&}
                                                   fd_in_in, @code
{const st...

@defunargs ...arkupstyle {var}@ttslanted {##1}}}#1
                                                  @sl @hyphenchar @font =45
...
l.86 ...st bool} aio_is_encrypted_in @code{=true})

How can I avoid this error without adding an extra space at the end of
the @code-block?

Best regards,
Heiko.
\input texinfo
@c %**start of header
@afourpaper
@finalout
@documentencoding ISO-8859-1
@setfilename libTMCG_bug.info
@settitle The LibTMCG Reference Manual (Bug)
@c %**end of header

@copying
This is the reference manual of LibTMCG.

Revision 20180905.

Copyright @copyright{} 2005--2007, 2009, 2015--2018 Heiko Stamer <@email{HeikoStamer@@gmx.net}>.

@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, no Front-Cover Texts, and no Back-Cover
Texts. A copy of the license is included in the section entitled ``GNU
Free Documentation License''.
@end quotation
@end copying

@titlepage
@title The LibTMCG Reference Manual
@subtitle Bug Hunting by @email{bug-texinfo@@gnu.org}
@subtitle @today{}
@author Heiko Stamer <@email{HeikoStamer@@gmx.net}>

@page
@vskip 0pt plus 1filll
@insertcopying
@end titlepage

@contents

@ifnottex
@node Top
@top LibTMCG Reference Manual
@menu
* Application Programming Interface::
@end menu

@insertcopying
@end ifnottex

@node Application Programming Interface
@c **********************************************************
@c *************************  API  **************************
@c **********************************************************
@chapter Application Programming Interface
Now we start with a description of some important global symbols and structures.
@menu
* Basic Structures::
@end menu

@c **********************************************************
@node Basic Structures
@section Basic Structures
This section describes all public data types, communication interfaces,
and classes of high-level protocols that are necessary to create a
secure card game. Private methods and only internally used members are
not explained.

@menu
* Communication Interfaces::
@end menu

@node Communication Interfaces
@subsection Communication Interfaces
@cindex Communication Interfaces
Note that headers @code{aiounicast_nonblock.hh} or @code{aiounicast_select.hh}
must be included in addition to @code{libTMCG.hh}, however,
@code{aiounicast_select} is strongly recommended. Then the following classes
can be instantiated by your application.
@deftp {Class} aiounicast_nonblock
	This class works with non-blocking file descriptors, i.e., the pipes or
	sockets have to be opened with the @code{O_NONBLOCK} flag. The methods use
	continiuous polling on the descriptors to achieve asynchronous I/O that
	results in exorbitant CPU load. The class should be used only, if no
	select system call is available or appropriate for the application.

	@defop {Constructor} aiounicast_nonblock aiounicast_nonblock (@code{const size_t} n_in, @code{const size_t} j_in, @code{const std::vector<int>&} fd_in_in, @code{const std::vector<int>& } fd_out_in, @code{const std::vector<std::string>& } key_in, @code{const size_t} aio_default_scheduler_in @code{=aio_scheduler_roundrobin}, @code{const time_t} aio_default_timeout_in @code{=aio_timeout_long}, @code{const bool} aio_is_authenticated_in @code{=true}, @code{const bool} aio_is_encrypted_in @code{=true})
		The constructor initializes internal queues and data structures
		for asynchronous point-to-point channels connecting @math{n}
		parties (i.e. @var{n_in}).
		The index of the calling party within this set is given by
		@var{j_in}. It is followed by a vector @var{fd_in_in} of exactly
		@math{n} input file descriptors that are ready for reading
		and writing, and by a vector @var{fd_out_in} of exactly @math{n}
		output file descriptors. Finally, the vector @var{key_in} with exactly @math{n}
		passphrases@footnote{The key derivation function PBKDF2 is applied with
		an iteration count of 25.000 and a different constant salt to derive the
		authentication and the encryption key, respectively.} or pre-shared keys
		is neccesary, if @var{aio_is_authenticated_in} or @var{aio_is_encrypted_in} is
		set @code{true}, which is the default behaviour. The default values for
		timeout (in seconds) and the receive scheduler can be modified carefully
		according to the desired usage scenario.
	@end defop
@end deftp

@bye

Reply via email to