import texinfo-4.8a
This commit is contained in:
parent
8c986671c8
commit
29619d2afe
768
external/gpl2/texinfo/dist/ABOUT-NLS
vendored
Normal file
768
external/gpl2/texinfo/dist/ABOUT-NLS
vendored
Normal file
@ -0,0 +1,768 @@
|
||||
Notes on the Free Translation Project
|
||||
*************************************
|
||||
|
||||
Free software is going international! The Free Translation Project is
|
||||
a way to get maintainers of free software, translators, and users all
|
||||
together, so that will gradually become able to speak many languages.
|
||||
A few packages already provide translations for their messages.
|
||||
|
||||
If you found this `ABOUT-NLS' file inside a distribution, you may
|
||||
assume that the distributed package does use GNU `gettext' internally,
|
||||
itself available at your nearest GNU archive site. But you do _not_
|
||||
need to install GNU `gettext' prior to configuring, installing or using
|
||||
this package with messages translated.
|
||||
|
||||
Installers will find here some useful hints. These notes also
|
||||
explain how users should proceed for getting the programs to use the
|
||||
available translations. They tell how people wanting to contribute and
|
||||
work at translations should contact the appropriate team.
|
||||
|
||||
When reporting bugs in the `intl/' directory or bugs which may be
|
||||
related to internationalization, you should tell about the version of
|
||||
`gettext' which is used. The information can be found in the
|
||||
`intl/VERSION' file, in internationalized packages.
|
||||
|
||||
Quick configuration advice
|
||||
==========================
|
||||
|
||||
If you want to exploit the full power of internationalization, you
|
||||
should configure it using
|
||||
|
||||
./configure --with-included-gettext
|
||||
|
||||
to force usage of internationalizing routines provided within this
|
||||
package, despite the existence of internationalizing capabilities in the
|
||||
operating system where this package is being installed. So far, only
|
||||
the `gettext' implementation in the GNU C library version 2 provides as
|
||||
many features (such as locale alias, message inheritance, automatic
|
||||
charset conversion or plural form handling) as the implementation here.
|
||||
It is also not possible to offer this additional functionality on top
|
||||
of a `catgets' implementation. Future versions of GNU `gettext' will
|
||||
very likely convey even more functionality. So it might be a good idea
|
||||
to change to GNU `gettext' as soon as possible.
|
||||
|
||||
So you need _not_ provide this option if you are using GNU libc 2 or
|
||||
you have installed a recent copy of the GNU gettext package with the
|
||||
included `libintl'.
|
||||
|
||||
INSTALL Matters
|
||||
===============
|
||||
|
||||
Some packages are "localizable" when properly installed; the programs
|
||||
they contain can be made to speak your own native language. Most such
|
||||
packages use GNU `gettext'. Other packages have their own ways to
|
||||
internationalization, predating GNU `gettext'.
|
||||
|
||||
By default, this package will be installed to allow translation of
|
||||
messages. It will automatically detect whether the system already
|
||||
provides the GNU `gettext' functions. If not, the GNU `gettext' own
|
||||
library will be used. This library is wholly contained within this
|
||||
package, usually in the `intl/' subdirectory, so prior installation of
|
||||
the GNU `gettext' package is _not_ required. Installers may use
|
||||
special options at configuration time for changing the default
|
||||
behaviour. The commands:
|
||||
|
||||
./configure --with-included-gettext
|
||||
./configure --disable-nls
|
||||
|
||||
will respectively bypass any pre-existing `gettext' to use the
|
||||
internationalizing routines provided within this package, or else,
|
||||
_totally_ disable translation of messages.
|
||||
|
||||
When you already have GNU `gettext' installed on your system and run
|
||||
configure without an option for your new package, `configure' will
|
||||
probably detect the previously built and installed `libintl.a' file and
|
||||
will decide to use this. This might be not what is desirable. You
|
||||
should use the more recent version of the GNU `gettext' library. I.e.
|
||||
if the file `intl/VERSION' shows that the library which comes with this
|
||||
package is more recent, you should use
|
||||
|
||||
./configure --with-included-gettext
|
||||
|
||||
to prevent auto-detection.
|
||||
|
||||
The configuration process will not test for the `catgets' function
|
||||
and therefore it will not be used. The reason is that even an
|
||||
emulation of `gettext' on top of `catgets' could not provide all the
|
||||
extensions of the GNU `gettext' library.
|
||||
|
||||
Internationalized packages have usually many `po/LL.po' files, where
|
||||
LL gives an ISO 639 two-letter code identifying the language. Unless
|
||||
translations have been forbidden at `configure' time by using the
|
||||
`--disable-nls' switch, all available translations are installed
|
||||
together with the package. However, the environment variable `LINGUAS'
|
||||
may be set, prior to configuration, to limit the installed set.
|
||||
`LINGUAS' should then contain a space separated list of two-letter
|
||||
codes, stating which languages are allowed.
|
||||
|
||||
Using This Package
|
||||
==================
|
||||
|
||||
As a user, if your language has been installed for this package, you
|
||||
only have to set the `LANG' environment variable to the appropriate
|
||||
`LL_CC' combination. Here `LL' is an ISO 639 two-letter language code,
|
||||
and `CC' is an ISO 3166 two-letter country code. For example, let's
|
||||
suppose that you speak German and live in Germany. At the shell
|
||||
prompt, merely execute `setenv LANG de_DE' (in `csh'),
|
||||
`export LANG; LANG=de_DE' (in `sh') or `export LANG=de_DE' (in `bash').
|
||||
This can be done from your `.login' or `.profile' file, once and for
|
||||
all.
|
||||
|
||||
You might think that the country code specification is redundant.
|
||||
But in fact, some languages have dialects in different countries. For
|
||||
example, `de_AT' is used for Austria, and `pt_BR' for Brazil. The
|
||||
country code serves to distinguish the dialects.
|
||||
|
||||
The locale naming convention of `LL_CC', with `LL' denoting the
|
||||
language and `CC' denoting the country, is the one use on systems based
|
||||
on GNU libc. On other systems, some variations of this scheme are
|
||||
used, such as `LL' or `LL_CC.ENCODING'. You can get the list of
|
||||
locales supported by your system for your country by running the command
|
||||
`locale -a | grep '^LL''.
|
||||
|
||||
Not all programs have translations for all languages. By default, an
|
||||
English message is shown in place of a nonexistent translation. If you
|
||||
understand other languages, you can set up a priority list of languages.
|
||||
This is done through a different environment variable, called
|
||||
`LANGUAGE'. GNU `gettext' gives preference to `LANGUAGE' over `LANG'
|
||||
for the purpose of message handling, but you still need to have `LANG'
|
||||
set to the primary language; this is required by other parts of the
|
||||
system libraries. For example, some Swedish users who would rather
|
||||
read translations in German than English for when Swedish is not
|
||||
available, set `LANGUAGE' to `sv:de' while leaving `LANG' to `sv_SE'.
|
||||
|
||||
Special advice for Norwegian users: The language code for Norwegian
|
||||
bokma*l changed from `no' to `nb' recently (in 2003). During the
|
||||
transition period, while some message catalogs for this language are
|
||||
installed under `nb' and some older ones under `no', it's recommended
|
||||
for Norwegian users to set `LANGUAGE' to `nb:no' so that both newer and
|
||||
older translations are used.
|
||||
|
||||
In the `LANGUAGE' environment variable, but not in the `LANG'
|
||||
environment variable, `LL_CC' combinations can be abbreviated as `LL'
|
||||
to denote the language's main dialect. For example, `de' is equivalent
|
||||
to `de_DE' (German as spoken in Germany), and `pt' to `pt_PT'
|
||||
(Portuguese as spoken in Portugal) in this context.
|
||||
|
||||
Translating Teams
|
||||
=================
|
||||
|
||||
For the Free Translation Project to be a success, we need interested
|
||||
people who like their own language and write it well, and who are also
|
||||
able to synergize with other translators speaking the same language.
|
||||
Each translation team has its own mailing list. The up-to-date list of
|
||||
teams can be found at the Free Translation Project's homepage,
|
||||
`http://www.iro.umontreal.ca/contrib/po/HTML/', in the "National teams"
|
||||
area.
|
||||
|
||||
If you'd like to volunteer to _work_ at translating messages, you
|
||||
should become a member of the translating team for your own language.
|
||||
The subscribing address is _not_ the same as the list itself, it has
|
||||
`-request' appended. For example, speakers of Swedish can send a
|
||||
message to `sv-request@li.org', having this message body:
|
||||
|
||||
subscribe
|
||||
|
||||
Keep in mind that team members are expected to participate
|
||||
_actively_ in translations, or at solving translational difficulties,
|
||||
rather than merely lurking around. If your team does not exist yet and
|
||||
you want to start one, or if you are unsure about what to do or how to
|
||||
get started, please write to `translation@iro.umontreal.ca' to reach the
|
||||
coordinator for all translator teams.
|
||||
|
||||
The English team is special. It works at improving and uniformizing
|
||||
the terminology in use. Proven linguistic skill are praised more than
|
||||
programming skill, here.
|
||||
|
||||
Available Packages
|
||||
==================
|
||||
|
||||
Languages are not equally supported in all packages. The following
|
||||
matrix shows the current state of internationalization, as of January
|
||||
2004. The matrix shows, in regard of each package, for which languages
|
||||
PO files have been submitted to translation coordination, with a
|
||||
translation percentage of at least 50%.
|
||||
|
||||
Ready PO files af am ar az be bg bs ca cs da de el en en_GB eo es
|
||||
+----------------------------------------------------+
|
||||
a2ps | [] [] [] [] |
|
||||
aegis | () |
|
||||
ant-phone | () |
|
||||
anubis | |
|
||||
ap-utils | |
|
||||
aspell | [] |
|
||||
bash | [] [] [] [] |
|
||||
batchelor | |
|
||||
bfd | [] [] |
|
||||
binutils | [] [] |
|
||||
bison | [] [] [] |
|
||||
bluez-pin | [] [] [] |
|
||||
clisp | |
|
||||
clisp | [] [] [] |
|
||||
console-tools | [] [] |
|
||||
coreutils | [] [] [] [] |
|
||||
cpio | [] [] [] |
|
||||
darkstat | [] () [] |
|
||||
diffutils | [] [] [] [] [] [] [] |
|
||||
e2fsprogs | [] [] [] |
|
||||
enscript | [] [] [] [] |
|
||||
error | [] [] [] [] [] |
|
||||
fetchmail | [] () [] [] [] [] |
|
||||
fileutils | [] [] [] |
|
||||
findutils | [] [] [] [] [] [] [] |
|
||||
flex | [] [] [] [] |
|
||||
fslint | |
|
||||
gas | [] |
|
||||
gawk | [] [] [] [] |
|
||||
gbiff | [] |
|
||||
gcal | [] |
|
||||
gcc | [] [] |
|
||||
gettext | [] [] [] [] [] |
|
||||
gettext-examples | [] [] [] [] |
|
||||
gettext-runtime | [] [] [] [] [] |
|
||||
gettext-tools | [] [] [] |
|
||||
gimp-print | [] [] [] [] [] |
|
||||
gliv | |
|
||||
glunarclock | [] [] |
|
||||
gnubiff | [] |
|
||||
gnucash | [] () [] [] |
|
||||
gnucash-glossary | [] () [] |
|
||||
gnupg | [] () [] [] [] [] |
|
||||
gpe-aerial | [] |
|
||||
gpe-beam | [] [] |
|
||||
gpe-calendar | [] [] |
|
||||
gpe-clock | [] [] |
|
||||
gpe-conf | [] [] |
|
||||
gpe-contacts | [] [] |
|
||||
gpe-edit | [] |
|
||||
gpe-go | [] |
|
||||
gpe-login | [] [] |
|
||||
gpe-ownerinfo | [] [] |
|
||||
gpe-sketchbook | [] [] |
|
||||
gpe-su | [] [] |
|
||||
gpe-taskmanager | [] [] |
|
||||
gpe-timesheet | [] |
|
||||
gpe-today | [] [] |
|
||||
gpe-todo | [] [] |
|
||||
gphoto2 | [] [] [] [] |
|
||||
gprof | [] [] [] |
|
||||
gpsdrive | () () () |
|
||||
gramadoir | [] |
|
||||
grep | [] [] [] [] [] [] |
|
||||
gretl | [] |
|
||||
gtick | [] () |
|
||||
hello | [] [] [] [] [] [] |
|
||||
id-utils | [] [] |
|
||||
indent | [] [] [] [] |
|
||||
iso_3166 | [] [] [] [] [] [] [] [] [] [] |
|
||||
iso_3166_1 | [] [] [] [] [] [] |
|
||||
iso_3166_2 | |
|
||||
iso_3166_3 | [] |
|
||||
iso_4217 | [] [] [] [] |
|
||||
iso_639 | |
|
||||
jpilot | [] [] [] |
|
||||
jtag | |
|
||||
jwhois | [] |
|
||||
kbd | [] [] [] [] [] |
|
||||
latrine | () |
|
||||
ld | [] [] |
|
||||
libc | [] [] [] [] [] [] |
|
||||
libgpewidget | [] [] |
|
||||
libiconv | [] [] [] [] [] |
|
||||
lifelines | [] () |
|
||||
lilypond | [] |
|
||||
lingoteach | |
|
||||
lingoteach_lessons | () () |
|
||||
lynx | [] [] [] [] |
|
||||
m4 | [] [] [] [] |
|
||||
mailutils | [] [] |
|
||||
make | [] [] [] |
|
||||
man-db | [] () [] [] () |
|
||||
minicom | [] [] [] |
|
||||
mysecretdiary | [] [] [] |
|
||||
nano | [] () [] [] [] |
|
||||
nano_1_0 | [] () [] [] [] |
|
||||
opcodes | [] |
|
||||
parted | [] [] [] [] [] |
|
||||
ptx | [] [] [] [] [] |
|
||||
python | |
|
||||
radius | [] |
|
||||
recode | [] [] [] [] [] [] [] |
|
||||
rpm | [] [] |
|
||||
screem | |
|
||||
scrollkeeper | [] [] [] [] [] [] |
|
||||
sed | [] [] [] [] [] [] |
|
||||
sh-utils | [] [] [] |
|
||||
shared-mime-info | |
|
||||
sharutils | [] [] [] [] [] [] |
|
||||
silky | () |
|
||||
skencil | [] () [] |
|
||||
sketch | [] () [] |
|
||||
soundtracker | [] [] [] |
|
||||
sp | [] |
|
||||
tar | [] [] [] [] |
|
||||
texinfo | [] [] [] |
|
||||
textutils | [] [] [] [] |
|
||||
tin | () () |
|
||||
tp-robot | |
|
||||
tuxpaint | [] [] [] [] [] [] [] |
|
||||
unicode-han-tra... | |
|
||||
unicode-transla... | |
|
||||
util-linux | [] [] [] [] [] |
|
||||
vorbis-tools | [] [] [] [] |
|
||||
wastesedge | () |
|
||||
wdiff | [] [] [] [] |
|
||||
wget | [] [] [] [] [] [] |
|
||||
xchat | [] [] [] [] |
|
||||
xfree86_xkb_xml | [] [] |
|
||||
xpad | [] |
|
||||
+----------------------------------------------------+
|
||||
af am ar az be bg bs ca cs da de el en en_GB eo es
|
||||
4 0 0 1 9 4 1 40 41 60 78 17 1 5 13 68
|
||||
|
||||
et eu fa fi fr ga gl he hr hu id is it ja ko lg
|
||||
+-------------------------------------------------+
|
||||
a2ps | [] [] [] () () |
|
||||
aegis | |
|
||||
ant-phone | [] |
|
||||
anubis | [] |
|
||||
ap-utils | [] |
|
||||
aspell | [] [] |
|
||||
bash | [] [] |
|
||||
batchelor | [] [] |
|
||||
bfd | [] |
|
||||
binutils | [] [] |
|
||||
bison | [] [] [] [] |
|
||||
bluez-pin | [] [] [] [] [] |
|
||||
clisp | |
|
||||
clisp | [] |
|
||||
console-tools | |
|
||||
coreutils | [] [] [] [] [] [] |
|
||||
cpio | [] [] [] [] |
|
||||
darkstat | () [] [] [] |
|
||||
diffutils | [] [] [] [] [] [] [] |
|
||||
e2fsprogs | |
|
||||
enscript | [] [] |
|
||||
error | [] [] [] [] |
|
||||
fetchmail | [] |
|
||||
fileutils | [] [] [] [] [] [] |
|
||||
findutils | [] [] [] [] [] [] [] [] [] [] [] |
|
||||
flex | [] [] [] |
|
||||
fslint | [] |
|
||||
gas | [] |
|
||||
gawk | [] [] [] |
|
||||
gbiff | [] |
|
||||
gcal | [] |
|
||||
gcc | [] |
|
||||
gettext | [] [] [] |
|
||||
gettext-examples | [] [] |
|
||||
gettext-runtime | [] [] [] [] [] |
|
||||
gettext-tools | [] [] [] |
|
||||
gimp-print | [] [] |
|
||||
gliv | () |
|
||||
glunarclock | [] [] [] [] |
|
||||
gnubiff | [] |
|
||||
gnucash | () [] |
|
||||
gnucash-glossary | [] |
|
||||
gnupg | [] [] [] [] [] [] [] |
|
||||
gpe-aerial | [] |
|
||||
gpe-beam | [] |
|
||||
gpe-calendar | [] [] [] |
|
||||
gpe-clock | [] |
|
||||
gpe-conf | [] |
|
||||
gpe-contacts | [] [] |
|
||||
gpe-edit | [] [] |
|
||||
gpe-go | [] |
|
||||
gpe-login | [] [] |
|
||||
gpe-ownerinfo | [] [] [] |
|
||||
gpe-sketchbook | [] |
|
||||
gpe-su | [] |
|
||||
gpe-taskmanager | [] |
|
||||
gpe-timesheet | [] [] [] |
|
||||
gpe-today | [] [] |
|
||||
gpe-todo | [] [] |
|
||||
gphoto2 | [] [] [] |
|
||||
gprof | [] [] |
|
||||
gpsdrive | () () () |
|
||||
gramadoir | [] [] |
|
||||
grep | [] [] [] [] [] [] [] [] [] [] [] |
|
||||
gretl | [] [] |
|
||||
gtick | [] [] [] |
|
||||
hello | [] [] [] [] [] [] [] [] [] [] [] [] [] |
|
||||
id-utils | [] [] [] [] |
|
||||
indent | [] [] [] [] [] [] [] [] [] |
|
||||
iso_3166 | [] [] [] [] [] [] [] |
|
||||
iso_3166_1 | [] [] [] [] [] |
|
||||
iso_3166_2 | |
|
||||
iso_3166_3 | |
|
||||
iso_4217 | [] [] [] [] [] [] |
|
||||
iso_639 | |
|
||||
jpilot | [] () |
|
||||
jtag | [] |
|
||||
jwhois | [] [] [] [] |
|
||||
kbd | [] |
|
||||
latrine | [] |
|
||||
ld | [] |
|
||||
libc | [] [] [] [] [] [] |
|
||||
libgpewidget | [] [] [] [] |
|
||||
libiconv | [] [] [] [] [] [] [] [] [] |
|
||||
lifelines | () |
|
||||
lilypond | [] |
|
||||
lingoteach | [] [] |
|
||||
lingoteach_lessons | |
|
||||
lynx | [] [] [] [] |
|
||||
m4 | [] [] [] [] |
|
||||
mailutils | |
|
||||
make | [] [] [] [] [] [] |
|
||||
man-db | () () |
|
||||
minicom | [] [] [] [] |
|
||||
mysecretdiary | [] [] |
|
||||
nano | [] [] [] [] |
|
||||
nano_1_0 | [] [] [] [] |
|
||||
opcodes | [] |
|
||||
parted | [] [] [] |
|
||||
ptx | [] [] [] [] [] [] [] |
|
||||
python | |
|
||||
radius | [] |
|
||||
recode | [] [] [] [] [] [] |
|
||||
rpm | [] [] |
|
||||
screem | |
|
||||
scrollkeeper | [] |
|
||||
sed | [] [] [] [] [] [] [] [] [] |
|
||||
sh-utils | [] [] [] [] [] [] [] |
|
||||
shared-mime-info | [] [] [] |
|
||||
sharutils | [] [] [] [] [] |
|
||||
silky | () [] () () |
|
||||
skencil | [] |
|
||||
sketch | [] |
|
||||
soundtracker | [] [] |
|
||||
sp | [] () |
|
||||
tar | [] [] [] [] [] [] [] [] [] |
|
||||
texinfo | [] [] [] [] |
|
||||
textutils | [] [] [] [] [] [] |
|
||||
tin | [] () |
|
||||
tp-robot | [] |
|
||||
tuxpaint | [] [] [] [] [] [] [] [] [] |
|
||||
unicode-han-tra... | |
|
||||
unicode-transla... | [] [] |
|
||||
util-linux | [] [] [] [] () [] |
|
||||
vorbis-tools | [] |
|
||||
wastesedge | () |
|
||||
wdiff | [] [] [] [] [] [] |
|
||||
wget | [] [] [] [] [] [] [] |
|
||||
xchat | [] [] [] |
|
||||
xfree86_xkb_xml | [] [] |
|
||||
xpad | [] [] |
|
||||
+-------------------------------------------------+
|
||||
et eu fa fi fr ga gl he hr hu id is it ja ko lg
|
||||
22 2 1 26 106 28 24 8 10 41 33 1 26 33 12 0
|
||||
|
||||
lt lv mk mn ms mt nb nl nn no nso pl pt pt_BR ro ru
|
||||
+-----------------------------------------------------+
|
||||
a2ps | [] [] () () [] [] [] |
|
||||
aegis | () () () |
|
||||
ant-phone | [] [] |
|
||||
anubis | [] [] [] [] [] [] |
|
||||
ap-utils | [] () [] |
|
||||
aspell | [] |
|
||||
bash | [] [] [] |
|
||||
batchelor | [] |
|
||||
bfd | [] |
|
||||
binutils | [] |
|
||||
bison | [] [] [] [] [] |
|
||||
bluez-pin | [] [] [] |
|
||||
clisp | |
|
||||
clisp | [] |
|
||||
console-tools | [] |
|
||||
coreutils | [] [] |
|
||||
cpio | [] [] [] [] [] |
|
||||
darkstat | [] [] [] [] |
|
||||
diffutils | [] [] [] [] [] [] |
|
||||
e2fsprogs | [] |
|
||||
enscript | [] [] [] [] |
|
||||
error | [] [] [] |
|
||||
fetchmail | [] [] () [] |
|
||||
fileutils | [] [] [] |
|
||||
findutils | [] [] [] [] [] |
|
||||
flex | [] [] [] [] |
|
||||
fslint | [] [] |
|
||||
gas | |
|
||||
gawk | [] [] [] |
|
||||
gbiff | [] [] |
|
||||
gcal | |
|
||||
gcc | |
|
||||
gettext | [] [] [] |
|
||||
gettext-examples | [] [] [] |
|
||||
gettext-runtime | [] [] [] [] |
|
||||
gettext-tools | [] [] |
|
||||
gimp-print | [] |
|
||||
gliv | [] [] [] |
|
||||
glunarclock | [] [] [] [] |
|
||||
gnubiff | [] |
|
||||
gnucash | [] [] () [] |
|
||||
gnucash-glossary | [] [] |
|
||||
gnupg | [] |
|
||||
gpe-aerial | [] [] [] [] |
|
||||
gpe-beam | [] [] [] [] |
|
||||
gpe-calendar | [] [] [] [] |
|
||||
gpe-clock | [] [] [] [] |
|
||||
gpe-conf | [] [] [] [] |
|
||||
gpe-contacts | [] [] [] [] |
|
||||
gpe-edit | [] [] [] [] |
|
||||
gpe-go | [] [] [] |
|
||||
gpe-login | [] [] [] [] |
|
||||
gpe-ownerinfo | [] [] [] [] |
|
||||
gpe-sketchbook | [] [] [] [] |
|
||||
gpe-su | [] [] [] [] |
|
||||
gpe-taskmanager | [] [] [] [] |
|
||||
gpe-timesheet | [] [] [] [] |
|
||||
gpe-today | [] [] [] [] |
|
||||
gpe-todo | [] [] [] [] |
|
||||
gphoto2 | [] |
|
||||
gprof | [] [] |
|
||||
gpsdrive | () () [] |
|
||||
gramadoir | () [] |
|
||||
grep | [] [] [] [] [] |
|
||||
gretl | |
|
||||
gtick | [] [] [] |
|
||||
hello | [] [] [] [] [] [] [] [] [] [] |
|
||||
id-utils | [] [] [] [] |
|
||||
indent | [] [] [] [] |
|
||||
iso_3166 | [] [] [] |
|
||||
iso_3166_1 | [] [] |
|
||||
iso_3166_2 | |
|
||||
iso_3166_3 | [] |
|
||||
iso_4217 | [] [] [] [] [] [] [] [] |
|
||||
iso_639 | [] |
|
||||
jpilot | () () |
|
||||
jtag | |
|
||||
jwhois | [] [] [] [] () |
|
||||
kbd | [] [] [] |
|
||||
latrine | [] |
|
||||
ld | |
|
||||
libc | [] [] [] [] |
|
||||
libgpewidget | [] [] [] |
|
||||
libiconv | [] [] [] [] [] |
|
||||
lifelines | |
|
||||
lilypond | |
|
||||
lingoteach | |
|
||||
lingoteach_lessons | |
|
||||
lynx | [] [] [] |
|
||||
m4 | [] [] [] [] [] |
|
||||
mailutils | [] [] [] |
|
||||
make | [] [] [] [] |
|
||||
man-db | [] |
|
||||
minicom | [] [] [] [] |
|
||||
mysecretdiary | [] [] [] |
|
||||
nano | [] [] [] [] [] |
|
||||
nano_1_0 | [] [] [] [] [] [] |
|
||||
opcodes | [] [] |
|
||||
parted | [] [] [] [] |
|
||||
ptx | [] [] [] [] [] [] [] [] |
|
||||
python | |
|
||||
radius | [] [] |
|
||||
recode | [] [] [] [] |
|
||||
rpm | [] [] [] |
|
||||
screem | |
|
||||
scrollkeeper | [] [] [] [] [] |
|
||||
sed | [] [] [] |
|
||||
sh-utils | [] [] |
|
||||
shared-mime-info | [] [] |
|
||||
sharutils | [] [] |
|
||||
silky | () |
|
||||
skencil | [] [] |
|
||||
sketch | [] [] |
|
||||
soundtracker | |
|
||||
sp | |
|
||||
tar | [] [] [] [] [] [] |
|
||||
texinfo | [] [] [] [] |
|
||||
textutils | [] [] |
|
||||
tin | |
|
||||
tp-robot | [] |
|
||||
tuxpaint | [] [] [] [] [] [] [] [] |
|
||||
unicode-han-tra... | |
|
||||
unicode-transla... | |
|
||||
util-linux | [] [] [] |
|
||||
vorbis-tools | [] [] [] |
|
||||
wastesedge | |
|
||||
wdiff | [] [] [] [] [] |
|
||||
wget | [] [] [] |
|
||||
xchat | [] [] [] |
|
||||
xfree86_xkb_xml | [] [] |
|
||||
xpad | [] [] |
|
||||
+-----------------------------------------------------+
|
||||
lt lv mk mn ms mt nb nl nn no nso pl pt pt_BR ro ru
|
||||
1 2 0 3 12 0 10 69 6 7 1 40 26 36 76 63
|
||||
|
||||
sk sl sr sv ta th tr uk ven vi wa xh zh_CN zh_TW zu
|
||||
+-----------------------------------------------------+
|
||||
a2ps | [] [] [] [] | 16
|
||||
aegis | | 0
|
||||
ant-phone | | 3
|
||||
anubis | [] [] | 9
|
||||
ap-utils | () | 3
|
||||
aspell | | 4
|
||||
bash | | 9
|
||||
batchelor | | 3
|
||||
bfd | [] [] | 6
|
||||
binutils | [] [] [] | 8
|
||||
bison | [] [] | 14
|
||||
bluez-pin | [] [] [] | 14
|
||||
clisp | | 0
|
||||
clisp | | 5
|
||||
console-tools | | 3
|
||||
coreutils | [] [] [] [] | 16
|
||||
cpio | [] [] | 14
|
||||
darkstat | [] [] [] () () | 12
|
||||
diffutils | [] [] [] | 23
|
||||
e2fsprogs | [] [] | 6
|
||||
enscript | [] [] | 12
|
||||
error | [] [] [] | 15
|
||||
fetchmail | [] [] | 11
|
||||
fileutils | [] [] [] [] [] | 17
|
||||
findutils | [] [] [] [] [] [] | 29
|
||||
flex | [] [] | 13
|
||||
fslint | | 3
|
||||
gas | [] | 3
|
||||
gawk | [] [] | 12
|
||||
gbiff | | 4
|
||||
gcal | [] [] | 4
|
||||
gcc | [] | 4
|
||||
gettext | [] [] [] [] [] | 16
|
||||
gettext-examples | [] [] [] [] [] | 14
|
||||
gettext-runtime | [] [] [] [] [] [] [] [] | 22
|
||||
gettext-tools | [] [] [] [] [] [] | 14
|
||||
gimp-print | [] [] | 10
|
||||
gliv | | 3
|
||||
glunarclock | [] [] [] | 13
|
||||
gnubiff | | 3
|
||||
gnucash | [] [] | 9
|
||||
gnucash-glossary | [] [] [] | 8
|
||||
gnupg | [] [] [] [] | 17
|
||||
gpe-aerial | [] | 7
|
||||
gpe-beam | [] | 8
|
||||
gpe-calendar | [] [] [] [] | 13
|
||||
gpe-clock | [] [] [] | 10
|
||||
gpe-conf | [] [] | 9
|
||||
gpe-contacts | [] [] [] | 11
|
||||
gpe-edit | [] [] [] [] [] | 12
|
||||
gpe-go | | 5
|
||||
gpe-login | [] [] [] [] [] | 13
|
||||
gpe-ownerinfo | [] [] [] [] | 13
|
||||
gpe-sketchbook | [] [] | 9
|
||||
gpe-su | [] [] [] | 10
|
||||
gpe-taskmanager | [] [] [] | 10
|
||||
gpe-timesheet | [] [] [] [] | 12
|
||||
gpe-today | [] [] [] [] [] | 13
|
||||
gpe-todo | [] [] [] [] | 12
|
||||
gphoto2 | [] [] [] | 11
|
||||
gprof | [] [] | 9
|
||||
gpsdrive | [] [] | 3
|
||||
gramadoir | [] | 5
|
||||
grep | [] [] [] [] | 26
|
||||
gretl | | 3
|
||||
gtick | | 7
|
||||
hello | [] [] [] [] [] | 34
|
||||
id-utils | [] [] | 12
|
||||
indent | [] [] [] [] | 21
|
||||
iso_3166 | [] [] [] [] [] [] [] | 27
|
||||
iso_3166_1 | [] [] [] | 16
|
||||
iso_3166_2 | | 0
|
||||
iso_3166_3 | | 2
|
||||
iso_4217 | [] [] [] [] [] [] | 24
|
||||
iso_639 | | 1
|
||||
jpilot | [] [] [] [] [] | 9
|
||||
jtag | [] | 2
|
||||
jwhois | () [] [] | 11
|
||||
kbd | [] [] | 11
|
||||
latrine | | 2
|
||||
ld | [] [] | 5
|
||||
libc | [] [] [] [] | 20
|
||||
libgpewidget | [] [] [] [] | 13
|
||||
libiconv | [] [] [] [] [] [] [] [] | 27
|
||||
lifelines | [] | 2
|
||||
lilypond | [] | 3
|
||||
lingoteach | | 2
|
||||
lingoteach_lessons | () | 0
|
||||
lynx | [] [] [] | 14
|
||||
m4 | [] [] | 15
|
||||
mailutils | | 5
|
||||
make | [] [] [] | 16
|
||||
man-db | [] | 5
|
||||
minicom | | 11
|
||||
mysecretdiary | [] [] | 10
|
||||
nano | [] [] [] [] | 17
|
||||
nano_1_0 | [] [] [] | 17
|
||||
opcodes | [] [] | 6
|
||||
parted | [] [] [] | 15
|
||||
ptx | [] [] | 22
|
||||
python | | 0
|
||||
radius | | 4
|
||||
recode | [] [] [] | 20
|
||||
rpm | [] [] | 9
|
||||
screem | [] [] | 2
|
||||
scrollkeeper | [] [] [] | 15
|
||||
sed | [] [] [] [] [] [] | 24
|
||||
sh-utils | [] [] | 14
|
||||
shared-mime-info | [] [] | 7
|
||||
sharutils | [] [] [] [] | 17
|
||||
silky | () | 3
|
||||
skencil | [] | 6
|
||||
sketch | [] | 6
|
||||
soundtracker | [] [] | 7
|
||||
sp | [] | 3
|
||||
tar | [] [] [] [] [] | 24
|
||||
texinfo | [] [] [] | 14
|
||||
textutils | [] [] [] [] | 16
|
||||
tin | | 1
|
||||
tp-robot | | 2
|
||||
tuxpaint | [] [] [] [] [] | 29
|
||||
unicode-han-tra... | | 0
|
||||
unicode-transla... | | 2
|
||||
util-linux | [] [] | 15
|
||||
vorbis-tools | | 8
|
||||
wastesedge | | 0
|
||||
wdiff | [] [] [] | 18
|
||||
wget | [] [] [] [] [] [] [] [] | 24
|
||||
xchat | [] [] [] [] [] | 15
|
||||
xfree86_xkb_xml | [] [] [] [] [] | 11
|
||||
xpad | | 5
|
||||
+-----------------------------------------------------+
|
||||
63 teams sk sl sr sv ta th tr uk ven vi wa xh zh_CN zh_TW zu
|
||||
131 domains 47 19 28 83 0 0 59 13 1 1 11 0 22 22 0 1373
|
||||
|
||||
Some counters in the preceding matrix are higher than the number of
|
||||
visible blocks let us expect. This is because a few extra PO files are
|
||||
used for implementing regional variants of languages, or language
|
||||
dialects.
|
||||
|
||||
For a PO file in the matrix above to be effective, the package to
|
||||
which it applies should also have been internationalized and
|
||||
distributed as such by its maintainer. There might be an observable
|
||||
lag between the mere existence a PO file and its wide availability in a
|
||||
distribution.
|
||||
|
||||
If January 2004 seems to be old, you may fetch a more recent copy of
|
||||
this `ABOUT-NLS' file on most GNU archive sites. The most up-to-date
|
||||
matrix with full percentage details can be found at
|
||||
`http://www.iro.umontreal.ca/contrib/po/HTML/matrix.html'.
|
||||
|
||||
Using `gettext' in new packages
|
||||
===============================
|
||||
|
||||
If you are writing a freely available program and want to
|
||||
internationalize it you are welcome to use GNU `gettext' in your
|
||||
package. Of course you have to respect the GNU Library General Public
|
||||
License which covers the use of the GNU `gettext' library. This means
|
||||
in particular that even non-free programs can use `libintl' as a shared
|
||||
library, whereas only free software can use `libintl' as a static
|
||||
library or use modified versions of `libintl'.
|
||||
|
||||
Once the sources are changed appropriately and the setup can handle
|
||||
the use of `gettext' the only thing missing are the translations. The
|
||||
Free Translation Project is also available for packages which are not
|
||||
developed inside the GNU project. Therefore the information given above
|
||||
applies also for every other Free Software Project. Contact
|
||||
`translation@iro.umontreal.ca' to make the `.pot' files available to
|
||||
the translation teams.
|
||||
|
31
external/gpl2/texinfo/dist/AUTHORS
vendored
Normal file
31
external/gpl2/texinfo/dist/AUTHORS
vendored
Normal file
@ -0,0 +1,31 @@
|
||||
Id: AUTHORS,v 1.10 2004/04/11 17:56:45 karl Exp
|
||||
Texinfo authors.
|
||||
|
||||
Copyright (C) 2003 Free Software Foundation, Inc.
|
||||
|
||||
Copying and distribution of this file, with or without modification,
|
||||
are permitted in any medium without royalty provided the copyright
|
||||
notice and this notice are preserved.
|
||||
|
||||
Akim Demaille texi2dvi.
|
||||
Alper Ersoy makeinfo: enhancements in all files, especially
|
||||
html-, xml-, and docbook-related.
|
||||
Andreas Schwab texinfo.tex, configure.ac, most makeinfo files.
|
||||
Bob Chassell texinfo.tex, original texinfo.txi.
|
||||
Brian Fox all makeinfo/* and info/* files, info-stnd.texi.
|
||||
Dave Love original makeinfo/html.[ch].
|
||||
Eli Zaretskii all files.
|
||||
Karl Berry all files.
|
||||
Karl Heinz Marbaise original makeinfo language support, most files.
|
||||
Noah Friedman original texi2dvi.
|
||||
Paul Rubin original makeinfo/multi.c.
|
||||
Philippe Martin original makeinfo xml/docbook output.
|
||||
Richard Stallman original texinfo.tex, install-info.c,
|
||||
texindex.c, texinfo.txi.
|
||||
Zack Weinberg texinfo.tex: @macro implementation.
|
||||
|
||||
See http://www.iro.umontreal.ca/contrib/po/HTML/team-LL.html for the
|
||||
translation teams for a given language LL.
|
||||
|
||||
Many files included in the Texinfo distribution are copied from other
|
||||
locations, no author information is given for those. See util/srclist*.
|
340
external/gpl2/texinfo/dist/COPYING
vendored
Normal file
340
external/gpl2/texinfo/dist/COPYING
vendored
Normal file
@ -0,0 +1,340 @@
|
||||
GNU GENERAL PUBLIC LICENSE
|
||||
Version 2, June 1991
|
||||
|
||||
Copyright (C) 1989, 1991 Free Software Foundation, Inc.
|
||||
59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
Everyone is permitted to copy and distribute verbatim copies
|
||||
of this license document, but changing it is not allowed.
|
||||
|
||||
Preamble
|
||||
|
||||
The licenses for most software are designed to take away your
|
||||
freedom to share and change it. By contrast, the GNU General Public
|
||||
License is intended to guarantee your freedom to share and change free
|
||||
software--to make sure the software is free for all its users. This
|
||||
General Public License applies to most of the Free Software
|
||||
Foundation's software and to any other program whose authors commit to
|
||||
using it. (Some other Free Software Foundation software is covered by
|
||||
the GNU Library General Public License instead.) You can apply it to
|
||||
your programs, too.
|
||||
|
||||
When we speak of free software, we are referring to freedom, not
|
||||
price. Our General Public Licenses are designed to make sure that you
|
||||
have the freedom to distribute copies of free software (and charge for
|
||||
this service if you wish), that you receive source code or can get it
|
||||
if you want it, that you can change the software or use pieces of it
|
||||
in new free programs; and that you know you can do these things.
|
||||
|
||||
To protect your rights, we need to make restrictions that forbid
|
||||
anyone to deny you these rights or to ask you to surrender the rights.
|
||||
These restrictions translate to certain responsibilities for you if you
|
||||
distribute copies of the software, or if you modify it.
|
||||
|
||||
For example, if you distribute copies of such a program, whether
|
||||
gratis or for a fee, you must give the recipients all the rights that
|
||||
you have. You must make sure that they, too, receive or can get the
|
||||
source code. And you must show them these terms so they know their
|
||||
rights.
|
||||
|
||||
We protect your rights with two steps: (1) copyright the software, and
|
||||
(2) offer you this license which gives you legal permission to copy,
|
||||
distribute and/or modify the software.
|
||||
|
||||
Also, for each author's protection and ours, we want to make certain
|
||||
that everyone understands that there is no warranty for this free
|
||||
software. If the software is modified by someone else and passed on, we
|
||||
want its recipients to know that what they have is not the original, so
|
||||
that any problems introduced by others will not reflect on the original
|
||||
authors' reputations.
|
||||
|
||||
Finally, any free program is threatened constantly by software
|
||||
patents. We wish to avoid the danger that redistributors of a free
|
||||
program will individually obtain patent licenses, in effect making the
|
||||
program proprietary. To prevent this, we have made it clear that any
|
||||
patent must be licensed for everyone's free use or not licensed at all.
|
||||
|
||||
The precise terms and conditions for copying, distribution and
|
||||
modification follow.
|
||||
|
||||
GNU GENERAL PUBLIC LICENSE
|
||||
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
|
||||
|
||||
0. This License applies to any program or other work which contains
|
||||
a notice placed by the copyright holder saying it may be distributed
|
||||
under the terms of this General Public License. The "Program", below,
|
||||
refers to any such program or work, and a "work based on the Program"
|
||||
means either the Program or any derivative work under copyright law:
|
||||
that is to say, a work containing the Program or a portion of it,
|
||||
either verbatim or with modifications and/or translated into another
|
||||
language. (Hereinafter, translation is included without limitation in
|
||||
the term "modification".) Each licensee is addressed as "you".
|
||||
|
||||
Activities other than copying, distribution and modification are not
|
||||
covered by this License; they are outside its scope. The act of
|
||||
running the Program is not restricted, and the output from the Program
|
||||
is covered only if its contents constitute a work based on the
|
||||
Program (independent of having been made by running the Program).
|
||||
Whether that is true depends on what the Program does.
|
||||
|
||||
1. You may copy and distribute verbatim copies of the Program's
|
||||
source code as you receive it, in any medium, provided that you
|
||||
conspicuously and appropriately publish on each copy an appropriate
|
||||
copyright notice and disclaimer of warranty; keep intact all the
|
||||
notices that refer to this License and to the absence of any warranty;
|
||||
and give any other recipients of the Program a copy of this License
|
||||
along with the Program.
|
||||
|
||||
You may charge a fee for the physical act of transferring a copy, and
|
||||
you may at your option offer warranty protection in exchange for a fee.
|
||||
|
||||
2. You may modify your copy or copies of the Program or any portion
|
||||
of it, thus forming a work based on the Program, and copy and
|
||||
distribute such modifications or work under the terms of Section 1
|
||||
above, provided that you also meet all of these conditions:
|
||||
|
||||
a) You must cause the modified files to carry prominent notices
|
||||
stating that you changed the files and the date of any change.
|
||||
|
||||
b) You must cause any work that you distribute or publish, that in
|
||||
whole or in part contains or is derived from the Program or any
|
||||
part thereof, to be licensed as a whole at no charge to all third
|
||||
parties under the terms of this License.
|
||||
|
||||
c) If the modified program normally reads commands interactively
|
||||
when run, you must cause it, when started running for such
|
||||
interactive use in the most ordinary way, to print or display an
|
||||
announcement including an appropriate copyright notice and a
|
||||
notice that there is no warranty (or else, saying that you provide
|
||||
a warranty) and that users may redistribute the program under
|
||||
these conditions, and telling the user how to view a copy of this
|
||||
License. (Exception: if the Program itself is interactive but
|
||||
does not normally print such an announcement, your work based on
|
||||
the Program is not required to print an announcement.)
|
||||
|
||||
These requirements apply to the modified work as a whole. If
|
||||
identifiable sections of that work are not derived from the Program,
|
||||
and can be reasonably considered independent and separate works in
|
||||
themselves, then this License, and its terms, do not apply to those
|
||||
sections when you distribute them as separate works. But when you
|
||||
distribute the same sections as part of a whole which is a work based
|
||||
on the Program, the distribution of the whole must be on the terms of
|
||||
this License, whose permissions for other licensees extend to the
|
||||
entire whole, and thus to each and every part regardless of who wrote it.
|
||||
|
||||
Thus, it is not the intent of this section to claim rights or contest
|
||||
your rights to work written entirely by you; rather, the intent is to
|
||||
exercise the right to control the distribution of derivative or
|
||||
collective works based on the Program.
|
||||
|
||||
In addition, mere aggregation of another work not based on the Program
|
||||
with the Program (or with a work based on the Program) on a volume of
|
||||
a storage or distribution medium does not bring the other work under
|
||||
the scope of this License.
|
||||
|
||||
3. You may copy and distribute the Program (or a work based on it,
|
||||
under Section 2) in object code or executable form under the terms of
|
||||
Sections 1 and 2 above provided that you also do one of the following:
|
||||
|
||||
a) Accompany it with the complete corresponding machine-readable
|
||||
source code, which must be distributed under the terms of Sections
|
||||
1 and 2 above on a medium customarily used for software interchange; or,
|
||||
|
||||
b) Accompany it with a written offer, valid for at least three
|
||||
years, to give any third party, for a charge no more than your
|
||||
cost of physically performing source distribution, a complete
|
||||
machine-readable copy of the corresponding source code, to be
|
||||
distributed under the terms of Sections 1 and 2 above on a medium
|
||||
customarily used for software interchange; or,
|
||||
|
||||
c) Accompany it with the information you received as to the offer
|
||||
to distribute corresponding source code. (This alternative is
|
||||
allowed only for noncommercial distribution and only if you
|
||||
received the program in object code or executable form with such
|
||||
an offer, in accord with Subsection b above.)
|
||||
|
||||
The source code for a work means the preferred form of the work for
|
||||
making modifications to it. For an executable work, complete source
|
||||
code means all the source code for all modules it contains, plus any
|
||||
associated interface definition files, plus the scripts used to
|
||||
control compilation and installation of the executable. However, as a
|
||||
special exception, the source code distributed need not include
|
||||
anything that is normally distributed (in either source or binary
|
||||
form) with the major components (compiler, kernel, and so on) of the
|
||||
operating system on which the executable runs, unless that component
|
||||
itself accompanies the executable.
|
||||
|
||||
If distribution of executable or object code is made by offering
|
||||
access to copy from a designated place, then offering equivalent
|
||||
access to copy the source code from the same place counts as
|
||||
distribution of the source code, even though third parties are not
|
||||
compelled to copy the source along with the object code.
|
||||
|
||||
4. You may not copy, modify, sublicense, or distribute the Program
|
||||
except as expressly provided under this License. Any attempt
|
||||
otherwise to copy, modify, sublicense or distribute the Program is
|
||||
void, and will automatically terminate your rights under this License.
|
||||
However, parties who have received copies, or rights, from you under
|
||||
this License will not have their licenses terminated so long as such
|
||||
parties remain in full compliance.
|
||||
|
||||
5. You are not required to accept this License, since you have not
|
||||
signed it. However, nothing else grants you permission to modify or
|
||||
distribute the Program or its derivative works. These actions are
|
||||
prohibited by law if you do not accept this License. Therefore, by
|
||||
modifying or distributing the Program (or any work based on the
|
||||
Program), you indicate your acceptance of this License to do so, and
|
||||
all its terms and conditions for copying, distributing or modifying
|
||||
the Program or works based on it.
|
||||
|
||||
6. Each time you redistribute the Program (or any work based on the
|
||||
Program), the recipient automatically receives a license from the
|
||||
original licensor to copy, distribute or modify the Program subject to
|
||||
these terms and conditions. You may not impose any further
|
||||
restrictions on the recipients' exercise of the rights granted herein.
|
||||
You are not responsible for enforcing compliance by third parties to
|
||||
this License.
|
||||
|
||||
7. If, as a consequence of a court judgment or allegation of patent
|
||||
infringement or for any other reason (not limited to patent issues),
|
||||
conditions are imposed on you (whether by court order, agreement or
|
||||
otherwise) that contradict the conditions of this License, they do not
|
||||
excuse you from the conditions of this License. If you cannot
|
||||
distribute so as to satisfy simultaneously your obligations under this
|
||||
License and any other pertinent obligations, then as a consequence you
|
||||
may not distribute the Program at all. For example, if a patent
|
||||
license would not permit royalty-free redistribution of the Program by
|
||||
all those who receive copies directly or indirectly through you, then
|
||||
the only way you could satisfy both it and this License would be to
|
||||
refrain entirely from distribution of the Program.
|
||||
|
||||
If any portion of this section is held invalid or unenforceable under
|
||||
any particular circumstance, the balance of the section is intended to
|
||||
apply and the section as a whole is intended to apply in other
|
||||
circumstances.
|
||||
|
||||
It is not the purpose of this section to induce you to infringe any
|
||||
patents or other property right claims or to contest validity of any
|
||||
such claims; this section has the sole purpose of protecting the
|
||||
integrity of the free software distribution system, which is
|
||||
implemented by public license practices. Many people have made
|
||||
generous contributions to the wide range of software distributed
|
||||
through that system in reliance on consistent application of that
|
||||
system; it is up to the author/donor to decide if he or she is willing
|
||||
to distribute software through any other system and a licensee cannot
|
||||
impose that choice.
|
||||
|
||||
This section is intended to make thoroughly clear what is believed to
|
||||
be a consequence of the rest of this License.
|
||||
|
||||
8. If the distribution and/or use of the Program is restricted in
|
||||
certain countries either by patents or by copyrighted interfaces, the
|
||||
original copyright holder who places the Program under this License
|
||||
may add an explicit geographical distribution limitation excluding
|
||||
those countries, so that distribution is permitted only in or among
|
||||
countries not thus excluded. In such case, this License incorporates
|
||||
the limitation as if written in the body of this License.
|
||||
|
||||
9. The Free Software Foundation may publish revised and/or new versions
|
||||
of the General Public License from time to time. Such new versions will
|
||||
be similar in spirit to the present version, but may differ in detail to
|
||||
address new problems or concerns.
|
||||
|
||||
Each version is given a distinguishing version number. If the Program
|
||||
specifies a version number of this License which applies to it and "any
|
||||
later version", you have the option of following the terms and conditions
|
||||
either of that version or of any later version published by the Free
|
||||
Software Foundation. If the Program does not specify a version number of
|
||||
this License, you may choose any version ever published by the Free Software
|
||||
Foundation.
|
||||
|
||||
10. If you wish to incorporate parts of the Program into other free
|
||||
programs whose distribution conditions are different, write to the author
|
||||
to ask for permission. For software which is copyrighted by the Free
|
||||
Software Foundation, write to the Free Software Foundation; we sometimes
|
||||
make exceptions for this. Our decision will be guided by the two goals
|
||||
of preserving the free status of all derivatives of our free software and
|
||||
of promoting the sharing and reuse of software generally.
|
||||
|
||||
NO WARRANTY
|
||||
|
||||
11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
|
||||
FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
|
||||
OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
|
||||
PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
|
||||
OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
|
||||
TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
|
||||
PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
|
||||
REPAIR OR CORRECTION.
|
||||
|
||||
12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
|
||||
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
|
||||
REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
|
||||
INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
|
||||
OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
|
||||
TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
|
||||
YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
|
||||
PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
|
||||
POSSIBILITY OF SUCH DAMAGES.
|
||||
|
||||
END OF TERMS AND CONDITIONS
|
||||
|
||||
How to Apply These Terms to Your New Programs
|
||||
|
||||
If you develop a new program, and you want it to be of the greatest
|
||||
possible use to the public, the best way to achieve this is to make it
|
||||
free software which everyone can redistribute and change under these terms.
|
||||
|
||||
To do so, attach the following notices to the program. It is safest
|
||||
to attach them to the start of each source file to most effectively
|
||||
convey the exclusion of warranty; and each file should have at least
|
||||
the "copyright" line and a pointer to where the full notice is found.
|
||||
|
||||
<one line to give the program's name and a brief idea of what it does.>
|
||||
Copyright (C) <year> <name of author>
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program; if not, write to the Free Software
|
||||
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
|
||||
|
||||
Also add information on how to contact you by electronic and paper mail.
|
||||
|
||||
If the program is interactive, make it output a short notice like this
|
||||
when it starts in an interactive mode:
|
||||
|
||||
Gnomovision version 69, Copyright (C) year name of author
|
||||
Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
|
||||
This is free software, and you are welcome to redistribute it
|
||||
under certain conditions; type `show c' for details.
|
||||
|
||||
The hypothetical commands `show w' and `show c' should show the appropriate
|
||||
parts of the General Public License. Of course, the commands you use may
|
||||
be called something other than `show w' and `show c'; they could even be
|
||||
mouse-clicks or menu items--whatever suits your program.
|
||||
|
||||
You should also get your employer (if you work as a programmer) or your
|
||||
school, if any, to sign a "copyright disclaimer" for the program, if
|
||||
necessary. Here is a sample; alter the names:
|
||||
|
||||
Yoyodyne, Inc., hereby disclaims all copyright interest in the program
|
||||
`Gnomovision' (which makes passes at compilers) written by James Hacker.
|
||||
|
||||
<signature of Ty Coon>, 1 April 1989
|
||||
Ty Coon, President of Vice
|
||||
|
||||
This General Public License does not permit incorporating your program into
|
||||
proprietary programs. If your program is a subroutine library, you may
|
||||
consider it more useful to permit linking proprietary applications with the
|
||||
library. If this is what you want to do, use the GNU Library General
|
||||
Public License instead of this License.
|
5008
external/gpl2/texinfo/dist/ChangeLog
vendored
Normal file
5008
external/gpl2/texinfo/dist/ChangeLog
vendored
Normal file
File diff suppressed because it is too large
Load Diff
12516
external/gpl2/texinfo/dist/ChangeLog.46
vendored
Normal file
12516
external/gpl2/texinfo/dist/ChangeLog.46
vendored
Normal file
File diff suppressed because it is too large
Load Diff
45
external/gpl2/texinfo/dist/INSTALL
vendored
Normal file
45
external/gpl2/texinfo/dist/INSTALL
vendored
Normal file
@ -0,0 +1,45 @@
|
||||
Id: INSTALL,v 1.5 2004/11/19 13:08:47 karl Exp
|
||||
|
||||
Copying and distribution of this file, with or without modification,
|
||||
are permitted in any medium without royalty provided the copyright
|
||||
notice and this notice are preserved.
|
||||
|
||||
For generic installation instructions on compiling and installing this
|
||||
Automake-based distribution, please read the file `INSTALL.generic'.
|
||||
|
||||
Installation notes specific to Texinfo:
|
||||
|
||||
* texinfo.tex and the other *.tex files are not installed by `make
|
||||
install'. This is because there is no reliable way to know where to
|
||||
install them. Instead, you have to run an additional make command
|
||||
after the normal make install:
|
||||
make TEXMF=/your/texmf install-tex
|
||||
texinfo.tex is installed in ${TEXMF}/tex/texinfo/texinfo.tex, etc.
|
||||
|
||||
* On the other hand, if you're maintaining a TeX distribution, you don't
|
||||
want your users to see the installation warnings, because you already
|
||||
have the files installed. (And you're keeping them up to date, right?)
|
||||
In this case, run configure --disable-install-warnings, or set
|
||||
enable_install_warnings=no in the environment.
|
||||
|
||||
* On MacOSX, if configure fails with the error:
|
||||
ac_cv_build='config.sub: invalid option -apple-darwin7.2.0
|
||||
this is probably because your uname -p is returning "unknown". Use
|
||||
/usr/bin/uname instead.
|
||||
|
||||
* For instructions on compiling this distribution with DJGPP tools
|
||||
for MS-DOS and MS-Windows, see the file djgpp/README.
|
||||
|
||||
* The Info tree uses a file `dir' as its root node; the `dir-example'
|
||||
file in this distribution is included as a possible starting point.
|
||||
Use it, modify it, or ignore it just as you like.
|
||||
|
||||
* You can create a file texinfo.cnf to be read by TeX when
|
||||
processing Texinfo manuals. For example, you might like to use
|
||||
@afourpaper by default. See the `Preparing for TeX' node in
|
||||
texinfo.txi for more details. You don't have to create the file if
|
||||
you have nothing to put in it.
|
||||
|
||||
* If your info files are not in $prefix/info, you may wish to add a line
|
||||
#define DEFAULT_INFOPATH "/mydir1:/mydir2:..."
|
||||
to config.h after running configure.
|
231
external/gpl2/texinfo/dist/INSTALL.generic
vendored
Normal file
231
external/gpl2/texinfo/dist/INSTALL.generic
vendored
Normal file
@ -0,0 +1,231 @@
|
||||
Installation Instructions
|
||||
*************************
|
||||
|
||||
Copyright (C) 1994, 1995, 1996, 1999, 2000, 2001, 2002, 2004 Free
|
||||
Software Foundation, Inc.
|
||||
|
||||
This file is free documentation; the Free Software Foundation gives
|
||||
unlimited permission to copy, distribute and modify it.
|
||||
|
||||
Basic Installation
|
||||
==================
|
||||
|
||||
These are generic installation instructions.
|
||||
|
||||
The `configure' shell script attempts to guess correct values for
|
||||
various system-dependent variables used during compilation. It uses
|
||||
those values to create a `Makefile' in each directory of the package.
|
||||
It may also create one or more `.h' files containing system-dependent
|
||||
definitions. Finally, it creates a shell script `config.status' that
|
||||
you can run in the future to recreate the current configuration, and a
|
||||
file `config.log' containing compiler output (useful mainly for
|
||||
debugging `configure').
|
||||
|
||||
It can also use an optional file (typically called `config.cache'
|
||||
and enabled with `--cache-file=config.cache' or simply `-C') that saves
|
||||
the results of its tests to speed up reconfiguring. (Caching is
|
||||
disabled by default to prevent problems with accidental use of stale
|
||||
cache files.)
|
||||
|
||||
If you need to do unusual things to compile the package, please try
|
||||
to figure out how `configure' could check whether to do them, and mail
|
||||
diffs or instructions to the address given in the `README' so they can
|
||||
be considered for the next release. If you are using the cache, and at
|
||||
some point `config.cache' contains results you don't want to keep, you
|
||||
may remove or edit it.
|
||||
|
||||
The file `configure.ac' (or `configure.in') is used to create
|
||||
`configure' by a program called `autoconf'. You only need
|
||||
`configure.ac' if you want to change it or regenerate `configure' using
|
||||
a newer version of `autoconf'.
|
||||
|
||||
The simplest way to compile this package is:
|
||||
|
||||
1. `cd' to the directory containing the package's source code and type
|
||||
`./configure' to configure the package for your system. If you're
|
||||
using `csh' on an old version of System V, you might need to type
|
||||
`sh ./configure' instead to prevent `csh' from trying to execute
|
||||
`configure' itself.
|
||||
|
||||
Running `configure' takes awhile. While running, it prints some
|
||||
messages telling which features it is checking for.
|
||||
|
||||
2. Type `make' to compile the package.
|
||||
|
||||
3. Optionally, type `make check' to run any self-tests that come with
|
||||
the package.
|
||||
|
||||
4. Type `make install' to install the programs and any data files and
|
||||
documentation.
|
||||
|
||||
5. You can remove the program binaries and object files from the
|
||||
source code directory by typing `make clean'. To also remove the
|
||||
files that `configure' created (so you can compile the package for
|
||||
a different kind of computer), type `make distclean'. There is
|
||||
also a `make maintainer-clean' target, but that is intended mainly
|
||||
for the package's developers. If you use it, you may have to get
|
||||
all sorts of other programs in order to regenerate files that came
|
||||
with the distribution.
|
||||
|
||||
Compilers and Options
|
||||
=====================
|
||||
|
||||
Some systems require unusual options for compilation or linking that the
|
||||
`configure' script does not know about. Run `./configure --help' for
|
||||
details on some of the pertinent environment variables.
|
||||
|
||||
You can give `configure' initial values for configuration parameters
|
||||
by setting variables in the command line or in the environment. Here
|
||||
is an example:
|
||||
|
||||
./configure CC=c89 CFLAGS=-O2 LIBS=-lposix
|
||||
|
||||
*Note Defining Variables::, for more details.
|
||||
|
||||
Compiling For Multiple Architectures
|
||||
====================================
|
||||
|
||||
You can compile the package for more than one kind of computer at the
|
||||
same time, by placing the object files for each architecture in their
|
||||
own directory. To do this, you must use a version of `make' that
|
||||
supports the `VPATH' variable, such as GNU `make'. `cd' to the
|
||||
directory where you want the object files and executables to go and run
|
||||
the `configure' script. `configure' automatically checks for the
|
||||
source code in the directory that `configure' is in and in `..'.
|
||||
|
||||
If you have to use a `make' that does not support the `VPATH'
|
||||
variable, you have to compile the package for one architecture at a
|
||||
time in the source code directory. After you have installed the
|
||||
package for one architecture, use `make distclean' before reconfiguring
|
||||
for another architecture.
|
||||
|
||||
Installation Names
|
||||
==================
|
||||
|
||||
By default, `make install' will install the package's files in
|
||||
`/usr/local/bin', `/usr/local/man', etc. You can specify an
|
||||
installation prefix other than `/usr/local' by giving `configure' the
|
||||
option `--prefix=PREFIX'.
|
||||
|
||||
You can specify separate installation prefixes for
|
||||
architecture-specific files and architecture-independent files. If you
|
||||
give `configure' the option `--exec-prefix=PREFIX', the package will
|
||||
use PREFIX as the prefix for installing programs and libraries.
|
||||
Documentation and other data files will still use the regular prefix.
|
||||
|
||||
In addition, if you use an unusual directory layout you can give
|
||||
options like `--bindir=DIR' to specify different values for particular
|
||||
kinds of files. Run `configure --help' for a list of the directories
|
||||
you can set and what kinds of files go in them.
|
||||
|
||||
If the package supports it, you can cause programs to be installed
|
||||
with an extra prefix or suffix on their names by giving `configure' the
|
||||
option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'.
|
||||
|
||||
Optional Features
|
||||
=================
|
||||
|
||||
Some packages pay attention to `--enable-FEATURE' options to
|
||||
`configure', where FEATURE indicates an optional part of the package.
|
||||
They may also pay attention to `--with-PACKAGE' options, where PACKAGE
|
||||
is something like `gnu-as' or `x' (for the X Window System). The
|
||||
`README' should mention any `--enable-' and `--with-' options that the
|
||||
package recognizes.
|
||||
|
||||
For packages that use the X Window System, `configure' can usually
|
||||
find the X include and library files automatically, but if it doesn't,
|
||||
you can use the `configure' options `--x-includes=DIR' and
|
||||
`--x-libraries=DIR' to specify their locations.
|
||||
|
||||
Specifying the System Type
|
||||
==========================
|
||||
|
||||
There may be some features `configure' cannot figure out automatically,
|
||||
but needs to determine by the type of machine the package will run on.
|
||||
Usually, assuming the package is built to be run on the _same_
|
||||
architectures, `configure' can figure that out, but if it prints a
|
||||
message saying it cannot guess the machine type, give it the
|
||||
`--build=TYPE' option. TYPE can either be a short name for the system
|
||||
type, such as `sun4', or a canonical name which has the form:
|
||||
|
||||
CPU-COMPANY-SYSTEM
|
||||
|
||||
where SYSTEM can have one of these forms:
|
||||
|
||||
OS KERNEL-OS
|
||||
|
||||
See the file `config.sub' for the possible values of each field. If
|
||||
`config.sub' isn't included in this package, then this package doesn't
|
||||
need to know the machine type.
|
||||
|
||||
If you are _building_ compiler tools for cross-compiling, you should
|
||||
use the `--target=TYPE' option to select the type of system they will
|
||||
produce code for.
|
||||
|
||||
If you want to _use_ a cross compiler, that generates code for a
|
||||
platform different from the build platform, you should specify the
|
||||
"host" platform (i.e., that on which the generated programs will
|
||||
eventually be run) with `--host=TYPE'.
|
||||
|
||||
Sharing Defaults
|
||||
================
|
||||
|
||||
If you want to set default values for `configure' scripts to share, you
|
||||
can create a site shell script called `config.site' that gives default
|
||||
values for variables like `CC', `cache_file', and `prefix'.
|
||||
`configure' looks for `PREFIX/share/config.site' if it exists, then
|
||||
`PREFIX/etc/config.site' if it exists. Or, you can set the
|
||||
`CONFIG_SITE' environment variable to the location of the site script.
|
||||
A warning: not all `configure' scripts look for a site script.
|
||||
|
||||
Defining Variables
|
||||
==================
|
||||
|
||||
Variables not defined in a site shell script can be set in the
|
||||
environment passed to `configure'. However, some packages may run
|
||||
configure again during the build, and the customized values of these
|
||||
variables may be lost. In order to avoid this problem, you should set
|
||||
them in the `configure' command line, using `VAR=value'. For example:
|
||||
|
||||
./configure CC=/usr/local2/bin/gcc
|
||||
|
||||
will cause the specified gcc to be used as the C compiler (unless it is
|
||||
overridden in the site shell script).
|
||||
|
||||
`configure' Invocation
|
||||
======================
|
||||
|
||||
`configure' recognizes the following options to control how it operates.
|
||||
|
||||
`--help'
|
||||
`-h'
|
||||
Print a summary of the options to `configure', and exit.
|
||||
|
||||
`--version'
|
||||
`-V'
|
||||
Print the version of Autoconf used to generate the `configure'
|
||||
script, and exit.
|
||||
|
||||
`--cache-file=FILE'
|
||||
Enable the cache: use and save the results of the tests in FILE,
|
||||
traditionally `config.cache'. FILE defaults to `/dev/null' to
|
||||
disable caching.
|
||||
|
||||
`--config-cache'
|
||||
`-C'
|
||||
Alias for `--cache-file=config.cache'.
|
||||
|
||||
`--quiet'
|
||||
`--silent'
|
||||
`-q'
|
||||
Do not print messages saying which checks are being made. To
|
||||
suppress all normal output, redirect it to `/dev/null' (any error
|
||||
messages will still be shown).
|
||||
|
||||
`--srcdir=DIR'
|
||||
Look for the package's source code in directory DIR. Usually
|
||||
`configure' can determine that directory automatically.
|
||||
|
||||
`configure' also accepts some other, not widely useful, options. Run
|
||||
`configure --help' for more details.
|
||||
|
108
external/gpl2/texinfo/dist/INTRODUCTION
vendored
Normal file
108
external/gpl2/texinfo/dist/INTRODUCTION
vendored
Normal file
@ -0,0 +1,108 @@
|
||||
Id: INTRODUCTION,v 1.3 2004/04/11 17:56:45 karl Exp
|
||||
Getting started with Texinfo.
|
||||
|
||||
Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001
|
||||
Free Software Foundation, Inc.
|
||||
|
||||
Copying and distribution of this file, with or without modification,
|
||||
are permitted in any medium without royalty provided the copyright
|
||||
notice and this notice are preserved.
|
||||
|
||||
|
||||
|
||||
Getting Started with Texinfo
|
||||
============================
|
||||
|
||||
"Texinfo" is a documentation system that uses a single source file to
|
||||
produce both on-line information and printed output. Using Texinfo,
|
||||
you can create a printed document with the normal features of a book,
|
||||
including chapters, sections, cross references, and indices. From the
|
||||
same Texinfo source file, you can create a menu-driven, on-line Info
|
||||
file with nodes, menus, cross references, and indices.
|
||||
|
||||
The name of the Texinfo source documentation file is `texinfo.txi'.
|
||||
You can produce both on-line information and printed output from this
|
||||
source file. The documentation describes Texinfo in detail, including
|
||||
how to write Texinfo files, how to format them for both hard copy and
|
||||
Info, and how to install Info files.
|
||||
|
||||
To get started, you need to create either a printed manual or an
|
||||
on-line Info file from the `texinfo.txi' file. You do not need to
|
||||
create both, although you will probably want both eventually.
|
||||
|
||||
To learn how to use Info, read the info documentation. You can do this in
|
||||
one of two ways: using the standalone `info' program, or using Info mode in
|
||||
GNU Emacs.
|
||||
|
||||
* If you want to use the `info' program, run
|
||||
|
||||
info -f info-stnd
|
||||
|
||||
* If you want to use Emacs, start up emacs and type `C-h i' [M-x info].
|
||||
Follow the instructions to learn how to use Info.
|
||||
|
||||
After learning how to use Info, you can read the Texinfo documentation.
|
||||
Using the standalone `info', type the following at the shell prompt:
|
||||
|
||||
info -f texinfo
|
||||
|
||||
To use read this manual in Emacs, you first need to edit the Info-directory
|
||||
menu (the file `dir' in the system info directory) to contain the
|
||||
appropriate node. To learn how to do this, see node: Add in the Info
|
||||
documentation.
|
||||
|
||||
The Texinfo documentation describes Texinfo in detail; among other things,
|
||||
it tells how to install Info files in the usual manner. (See node: Install
|
||||
an Info File.)
|
||||
|
||||
The `info-stnd.info' file describes the standalone Info reader in detail. To
|
||||
read this file, type
|
||||
|
||||
$ info -f info-stnd
|
||||
|
||||
|
||||
To create a printed manual
|
||||
==========================
|
||||
|
||||
You need:
|
||||
|
||||
* The `tex' program, which typesets the manual using TeX.
|
||||
* The `texinfo.tex' definition file that tells TeX how to typeset
|
||||
a Texinfo file.
|
||||
* The `texindex' program, which sorts the unsorted index files
|
||||
created by TeX.
|
||||
* A printing program such as `lp' or `lpr',
|
||||
* A printer.
|
||||
|
||||
This Texinfo distribution package contains `texinfo.tex', the C source
|
||||
for `texindex', and the handy shell script `texi2dvi'. The `tex'
|
||||
program is not part of this distribution, but is available separately.
|
||||
(See `How to Obtain TeX' in the Texinfo documentation.)
|
||||
|
||||
* Install `tex'. (`texindex' is installed automagically by
|
||||
`make install' in this distribution.)
|
||||
|
||||
* Move the `texinfo.tex' file to an appropriate directory; the current
|
||||
directory will do. (`/usr/local/lib/tex/inputs' might be a good place.
|
||||
See ``Preparing to Use TeX'' in the Texinfo manual, for more
|
||||
information.)
|
||||
|
||||
After following those instructions, type the following to make the .dvi
|
||||
files:
|
||||
|
||||
$ (cd doc; make dvi)
|
||||
|
||||
You can then print the resulting .dvi files with the `lpr' or `lp'
|
||||
commands, or maybe `dvips'.
|
||||
|
||||
For example, the command to print the texinfo.dvi file might be:
|
||||
|
||||
$ lpr -d texinfo.dvi
|
||||
|
||||
The name of the printing command depends on the system; `lpr -d' is
|
||||
common, and is illustrated here. You may use a different name for the
|
||||
printing command.
|
||||
|
||||
Please report bugs to bug-texinfo@gnu.org.
|
||||
|
||||
Happy formatting.
|
55
external/gpl2/texinfo/dist/Makefile.am
vendored
Normal file
55
external/gpl2/texinfo/dist/Makefile.am
vendored
Normal file
@ -0,0 +1,55 @@
|
||||
# Makefile.am for texinfo.
|
||||
# Id: Makefile.am,v 1.13 2004/12/15 16:53:59 kasal Exp
|
||||
# Process this file with automake to produce Makefile.in in all directories.
|
||||
#
|
||||
# This file is free software; as a special exception the author gives
|
||||
# unlimited permission to copy and/or distribute it, with or without
|
||||
# modifications, as long as this notice is preserved.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful, but
|
||||
# WITHOUT ANY WARRANTY, to the extent permitted by law; without even the
|
||||
# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||
|
||||
# Be sure we're using the right version of Automake.
|
||||
AUTOMAKE_OPTIONS = 1.8 readme-alpha
|
||||
|
||||
# Additional files to distribute.
|
||||
EXTRA_DIST = ChangeLog.46 INSTALL.generic INTRODUCTION README.dev \
|
||||
config.rpath \
|
||||
djgpp/README djgpp/config.bat djgpp/config.sed djgpp/config.site
|
||||
|
||||
# This is to prevent texinfo.tex from being included in the top-level
|
||||
# distribution directory.
|
||||
TEXINFO_TEX = doc/texinfo.tex
|
||||
|
||||
if TOOLS_ONLY
|
||||
# Build native tools only.
|
||||
SUBDIRS = lib info makeinfo util
|
||||
else
|
||||
# All subdirectories.
|
||||
# Do intl, m4, and lib first since the C programs depend on them.
|
||||
# Do doc last so makeinfo will be built when we get there.
|
||||
# Others are alphabetical.
|
||||
SUBDIRS = $(native_tools) intl m4 lib info makeinfo po util doc
|
||||
endif
|
||||
|
||||
# for gettext.
|
||||
ACLOCAL_AMFLAGS = -I m4
|
||||
|
||||
# In case TEXINFO_MAINT is set during make distcheck; in this case, the
|
||||
# simple doc-related files generated in info/ make distcleancheck fail.
|
||||
distcleancheck_listfiles = \
|
||||
find -type f -exec sh -c 'test -f $(srcdir)/{} || echo {}' ';'
|
||||
|
||||
# One special target for installers to use by hand if desired.
|
||||
install-tex:
|
||||
cd doc && $(MAKE) TEXMF=$(TEXMF) install-tex
|
||||
|
||||
distclean-local:
|
||||
-test -d "$(native_tools)" && rm -rf "$(native_tools)"
|
||||
|
||||
# Don't install native tools for cross compile.
|
||||
if TOOLS_ONLY
|
||||
install:
|
||||
|
||||
endif
|
679
external/gpl2/texinfo/dist/Makefile.in
vendored
Normal file
679
external/gpl2/texinfo/dist/Makefile.in
vendored
Normal file
@ -0,0 +1,679 @@
|
||||
# Makefile.in generated by automake 1.9.4 from Makefile.am.
|
||||
# @configure_input@
|
||||
|
||||
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
|
||||
# 2003, 2004 Free Software Foundation, Inc.
|
||||
# This Makefile.in is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
# with or without modifications, as long as this notice is preserved.
|
||||
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
|
||||
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
|
||||
# PARTICULAR PURPOSE.
|
||||
|
||||
@SET_MAKE@
|
||||
|
||||
# Makefile.am for texinfo.
|
||||
# Id: Makefile.am,v 1.13 2004/12/15 16:53:59 kasal Exp
|
||||
# Process this file with automake to produce Makefile.in in all directories.
|
||||
#
|
||||
# This file is free software; as a special exception the author gives
|
||||
# unlimited permission to copy and/or distribute it, with or without
|
||||
# modifications, as long as this notice is preserved.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful, but
|
||||
# WITHOUT ANY WARRANTY, to the extent permitted by law; without even the
|
||||
# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||
srcdir = @srcdir@
|
||||
top_srcdir = @top_srcdir@
|
||||
VPATH = @srcdir@
|
||||
pkgdatadir = $(datadir)/@PACKAGE@
|
||||
pkglibdir = $(libdir)/@PACKAGE@
|
||||
pkgincludedir = $(includedir)/@PACKAGE@
|
||||
top_builddir = .
|
||||
am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
|
||||
INSTALL = @INSTALL@
|
||||
install_sh_DATA = $(install_sh) -c -m 644
|
||||
install_sh_PROGRAM = $(install_sh) -c
|
||||
install_sh_SCRIPT = $(install_sh) -c
|
||||
INSTALL_HEADER = $(INSTALL_DATA)
|
||||
transform = $(program_transform_name)
|
||||
NORMAL_INSTALL = :
|
||||
PRE_INSTALL = :
|
||||
POST_INSTALL = :
|
||||
NORMAL_UNINSTALL = :
|
||||
PRE_UNINSTALL = :
|
||||
POST_UNINSTALL = :
|
||||
build_triplet = @build@
|
||||
host_triplet = @host@
|
||||
DIST_COMMON = README $(am__configure_deps) $(srcdir)/Makefile.am \
|
||||
$(srcdir)/Makefile.in $(srcdir)/config.in \
|
||||
$(top_srcdir)/configure $(top_srcdir)/intl/Makefile.in \
|
||||
ABOUT-NLS AUTHORS COPYING ChangeLog INSTALL NEWS TODO \
|
||||
config.guess config.rpath config.sub depcomp install-sh \
|
||||
missing mkinstalldirs
|
||||
subdir = .
|
||||
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
|
||||
am__aclocal_m4_deps = $(top_srcdir)/m4/codeset.m4 \
|
||||
$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/glibc21.m4 \
|
||||
$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intdiv0.m4 \
|
||||
$(top_srcdir)/m4/intmax.m4 $(top_srcdir)/m4/inttypes-pri.m4 \
|
||||
$(top_srcdir)/m4/inttypes.m4 $(top_srcdir)/m4/inttypes_h.m4 \
|
||||
$(top_srcdir)/m4/lcmessage.m4 $(top_srcdir)/m4/lib-ld.m4 \
|
||||
$(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
|
||||
$(top_srcdir)/m4/longdouble.m4 $(top_srcdir)/m4/longlong.m4 \
|
||||
$(top_srcdir)/m4/mkstemp.m4 $(top_srcdir)/m4/nls.m4 \
|
||||
$(top_srcdir)/m4/onceonly_2_57.m4 $(top_srcdir)/m4/po.m4 \
|
||||
$(top_srcdir)/m4/printf-posix.m4 $(top_srcdir)/m4/progtest.m4 \
|
||||
$(top_srcdir)/m4/signed.m4 $(top_srcdir)/m4/size_max.m4 \
|
||||
$(top_srcdir)/m4/stdint_h.m4 $(top_srcdir)/m4/strcase.m4 \
|
||||
$(top_srcdir)/m4/uintmax_t.m4 $(top_srcdir)/m4/ulonglong.m4 \
|
||||
$(top_srcdir)/m4/wchar_t.m4 $(top_srcdir)/m4/wint_t.m4 \
|
||||
$(top_srcdir)/m4/xsize.m4 $(top_srcdir)/configure.ac
|
||||
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
|
||||
$(ACLOCAL_M4)
|
||||
am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \
|
||||
configure.lineno configure.status.lineno
|
||||
mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
|
||||
CONFIG_HEADER = config.h
|
||||
CONFIG_CLEAN_FILES = intl/Makefile
|
||||
SOURCES =
|
||||
DIST_SOURCES =
|
||||
RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
|
||||
html-recursive info-recursive install-data-recursive \
|
||||
install-exec-recursive install-info-recursive \
|
||||
install-recursive installcheck-recursive installdirs-recursive \
|
||||
pdf-recursive ps-recursive uninstall-info-recursive \
|
||||
uninstall-recursive
|
||||
ETAGS = etags
|
||||
CTAGS = ctags
|
||||
DIST_SUBDIRS = @native_tools@ intl m4 lib info makeinfo po util doc
|
||||
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
|
||||
distdir = $(PACKAGE)-$(VERSION)
|
||||
top_distdir = $(distdir)
|
||||
am__remove_distdir = \
|
||||
{ test ! -d $(distdir) \
|
||||
|| { find $(distdir) -type d ! -perm -200 -exec chmod u+w {} ';' \
|
||||
&& rm -fr $(distdir); }; }
|
||||
DIST_ARCHIVES = $(distdir).tar.gz $(distdir).tar.bz2
|
||||
GZIP_ENV = --best
|
||||
distuninstallcheck_listfiles = find . -type f -print
|
||||
ACLOCAL = @ACLOCAL@
|
||||
ALLOCA = @ALLOCA@
|
||||
AMDEP_FALSE = @AMDEP_FALSE@
|
||||
AMDEP_TRUE = @AMDEP_TRUE@
|
||||
AMTAR = @AMTAR@
|
||||
AUTOCONF = @AUTOCONF@
|
||||
AUTOHEADER = @AUTOHEADER@
|
||||
AUTOMAKE = @AUTOMAKE@
|
||||
AWK = @AWK@
|
||||
BUILD_INCLUDED_LIBINTL = @BUILD_INCLUDED_LIBINTL@
|
||||
CATOBJEXT = @CATOBJEXT@
|
||||
CC = @CC@
|
||||
CCDEPMODE = @CCDEPMODE@
|
||||
CFLAGS = @CFLAGS@
|
||||
CPP = @CPP@
|
||||
CPPFLAGS = @CPPFLAGS@
|
||||
CYGPATH_W = @CYGPATH_W@
|
||||
DATADIRNAME = @DATADIRNAME@
|
||||
DEFS = @DEFS@
|
||||
DEPDIR = @DEPDIR@
|
||||
ECHO_C = @ECHO_C@
|
||||
ECHO_N = @ECHO_N@
|
||||
ECHO_T = @ECHO_T@
|
||||
EGREP = @EGREP@
|
||||
EXEEXT = @EXEEXT@
|
||||
GENCAT = @GENCAT@
|
||||
GLIBC21 = @GLIBC21@
|
||||
GMSGFMT = @GMSGFMT@
|
||||
HAVE_ASPRINTF = @HAVE_ASPRINTF@
|
||||
HAVE_POSIX_PRINTF = @HAVE_POSIX_PRINTF@
|
||||
HAVE_SNPRINTF = @HAVE_SNPRINTF@
|
||||
HAVE_WPRINTF = @HAVE_WPRINTF@
|
||||
HELP2MAN = @HELP2MAN@
|
||||
INSTALL_DATA = @INSTALL_DATA@
|
||||
INSTALL_PROGRAM = @INSTALL_PROGRAM@
|
||||
INSTALL_SCRIPT = @INSTALL_SCRIPT@
|
||||
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
|
||||
INSTALL_WARNINGS_FALSE = @INSTALL_WARNINGS_FALSE@
|
||||
INSTALL_WARNINGS_TRUE = @INSTALL_WARNINGS_TRUE@
|
||||
INSTOBJEXT = @INSTOBJEXT@
|
||||
INTLBISON = @INTLBISON@
|
||||
INTLLIBS = @INTLLIBS@
|
||||
INTLOBJS = @INTLOBJS@
|
||||
INTL_LIBTOOL_SUFFIX_PREFIX = @INTL_LIBTOOL_SUFFIX_PREFIX@
|
||||
LDFLAGS = @LDFLAGS@
|
||||
LIBICONV = @LIBICONV@
|
||||
LIBINTL = @LIBINTL@
|
||||
LIBOBJS = @LIBOBJS@
|
||||
LIBS = @LIBS@
|
||||
LTLIBICONV = @LTLIBICONV@
|
||||
LTLIBINTL = @LTLIBINTL@
|
||||
LTLIBOBJS = @LTLIBOBJS@
|
||||
MAINT = @MAINT@
|
||||
MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@
|
||||
MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@
|
||||
MAKEINFO = @MAKEINFO@
|
||||
MKINSTALLDIRS = @MKINSTALLDIRS@
|
||||
MSGFMT = @MSGFMT@
|
||||
MSGMERGE = @MSGMERGE@
|
||||
OBJEXT = @OBJEXT@
|
||||
PACKAGE = @PACKAGE@
|
||||
PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
|
||||
PACKAGE_NAME = @PACKAGE_NAME@
|
||||
PACKAGE_STRING = @PACKAGE_STRING@
|
||||
PACKAGE_TARNAME = @PACKAGE_TARNAME@
|
||||
PACKAGE_VERSION = @PACKAGE_VERSION@
|
||||
PATH_SEPARATOR = @PATH_SEPARATOR@
|
||||
POSUB = @POSUB@
|
||||
RANLIB = @RANLIB@
|
||||
SET_MAKE = @SET_MAKE@
|
||||
SHELL = @SHELL@
|
||||
STRIP = @STRIP@
|
||||
TERMLIBS = @TERMLIBS@
|
||||
TOOLS_ONLY_FALSE = @TOOLS_ONLY_FALSE@
|
||||
TOOLS_ONLY_TRUE = @TOOLS_ONLY_TRUE@
|
||||
USE_INCLUDED_LIBINTL = @USE_INCLUDED_LIBINTL@
|
||||
USE_NLS = @USE_NLS@
|
||||
VERSION = @VERSION@
|
||||
XGETTEXT = @XGETTEXT@
|
||||
ac_ct_CC = @ac_ct_CC@
|
||||
ac_ct_RANLIB = @ac_ct_RANLIB@
|
||||
ac_ct_STRIP = @ac_ct_STRIP@
|
||||
am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
|
||||
am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
|
||||
am__include = @am__include@
|
||||
am__leading_dot = @am__leading_dot@
|
||||
am__quote = @am__quote@
|
||||
am__tar = @am__tar@
|
||||
am__untar = @am__untar@
|
||||
bindir = @bindir@
|
||||
build = @build@
|
||||
build_alias = @build_alias@
|
||||
build_cpu = @build_cpu@
|
||||
build_os = @build_os@
|
||||
build_vendor = @build_vendor@
|
||||
datadir = @datadir@
|
||||
exec_prefix = @exec_prefix@
|
||||
host = @host@
|
||||
host_alias = @host_alias@
|
||||
host_cpu = @host_cpu@
|
||||
host_os = @host_os@
|
||||
host_vendor = @host_vendor@
|
||||
includedir = @includedir@
|
||||
infodir = @infodir@
|
||||
install_sh = @install_sh@
|
||||
libdir = @libdir@
|
||||
libexecdir = @libexecdir@
|
||||
localstatedir = @localstatedir@
|
||||
mandir = @mandir@
|
||||
mkdir_p = @mkdir_p@
|
||||
native_tools = @native_tools@
|
||||
oldincludedir = @oldincludedir@
|
||||
prefix = @prefix@
|
||||
program_transform_name = @program_transform_name@
|
||||
sbindir = @sbindir@
|
||||
sharedstatedir = @sharedstatedir@
|
||||
sysconfdir = @sysconfdir@
|
||||
target_alias = @target_alias@
|
||||
|
||||
# Be sure we're using the right version of Automake.
|
||||
AUTOMAKE_OPTIONS = 1.8 readme-alpha
|
||||
|
||||
# Additional files to distribute.
|
||||
EXTRA_DIST = ChangeLog.46 INSTALL.generic INTRODUCTION README.dev \
|
||||
config.rpath \
|
||||
djgpp/README djgpp/config.bat djgpp/config.sed djgpp/config.site
|
||||
|
||||
|
||||
# This is to prevent texinfo.tex from being included in the top-level
|
||||
# distribution directory.
|
||||
TEXINFO_TEX = doc/texinfo.tex
|
||||
@TOOLS_ONLY_FALSE@SUBDIRS = $(native_tools) intl m4 lib info makeinfo po util doc
|
||||
@TOOLS_ONLY_TRUE@SUBDIRS = lib info makeinfo util
|
||||
|
||||
# for gettext.
|
||||
ACLOCAL_AMFLAGS = -I m4
|
||||
|
||||
# In case TEXINFO_MAINT is set during make distcheck; in this case, the
|
||||
# simple doc-related files generated in info/ make distcleancheck fail.
|
||||
distcleancheck_listfiles = \
|
||||
find -type f -exec sh -c 'test -f $(srcdir)/{} || echo {}' ';'
|
||||
|
||||
all: config.h
|
||||
$(MAKE) $(AM_MAKEFLAGS) all-recursive
|
||||
|
||||
.SUFFIXES:
|
||||
am--refresh:
|
||||
@:
|
||||
$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps)
|
||||
@for dep in $?; do \
|
||||
case '$(am__configure_deps)' in \
|
||||
*$$dep*) \
|
||||
echo ' cd $(srcdir) && $(AUTOMAKE) --gnu '; \
|
||||
cd $(srcdir) && $(AUTOMAKE) --gnu \
|
||||
&& exit 0; \
|
||||
exit 1;; \
|
||||
esac; \
|
||||
done; \
|
||||
echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu Makefile'; \
|
||||
cd $(top_srcdir) && \
|
||||
$(AUTOMAKE) --gnu Makefile
|
||||
.PRECIOUS: Makefile
|
||||
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
|
||||
@case '$?' in \
|
||||
*config.status*) \
|
||||
echo ' $(SHELL) ./config.status'; \
|
||||
$(SHELL) ./config.status;; \
|
||||
*) \
|
||||
echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)'; \
|
||||
cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe);; \
|
||||
esac;
|
||||
|
||||
$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
|
||||
$(SHELL) ./config.status --recheck
|
||||
|
||||
$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
|
||||
cd $(srcdir) && $(AUTOCONF)
|
||||
$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
|
||||
cd $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS)
|
||||
|
||||
config.h: stamp-h1
|
||||
@if test ! -f $@; then \
|
||||
rm -f stamp-h1; \
|
||||
$(MAKE) stamp-h1; \
|
||||
else :; fi
|
||||
|
||||
stamp-h1: $(srcdir)/config.in $(top_builddir)/config.status
|
||||
@rm -f stamp-h1
|
||||
cd $(top_builddir) && $(SHELL) ./config.status config.h
|
||||
$(srcdir)/config.in: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
|
||||
cd $(top_srcdir) && $(AUTOHEADER)
|
||||
rm -f stamp-h1
|
||||
touch $@
|
||||
|
||||
distclean-hdr:
|
||||
-rm -f config.h stamp-h1
|
||||
intl/Makefile: $(top_builddir)/config.status $(top_srcdir)/intl/Makefile.in
|
||||
cd $(top_builddir) && $(SHELL) ./config.status $@
|
||||
uninstall-info-am:
|
||||
|
||||
# This directory's subdirectories are mostly independent; you can cd
|
||||
# into them and run `make' without going through this Makefile.
|
||||
# To change the values of `make' variables: instead of editing Makefiles,
|
||||
# (1) if the variable is set in `config.status', edit `config.status'
|
||||
# (which will cause the Makefiles to be regenerated when you run `make');
|
||||
# (2) otherwise, pass the desired values on the `make' command line.
|
||||
$(RECURSIVE_TARGETS):
|
||||
@set fnord $$MAKEFLAGS; amf=$$2; \
|
||||
dot_seen=no; \
|
||||
target=`echo $@ | sed s/-recursive//`; \
|
||||
list='$(SUBDIRS)'; for subdir in $$list; do \
|
||||
echo "Making $$target in $$subdir"; \
|
||||
if test "$$subdir" = "."; then \
|
||||
dot_seen=yes; \
|
||||
local_target="$$target-am"; \
|
||||
else \
|
||||
local_target="$$target"; \
|
||||
fi; \
|
||||
(cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
|
||||
|| case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \
|
||||
done; \
|
||||
if test "$$dot_seen" = "no"; then \
|
||||
$(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
|
||||
fi; test -z "$$fail"
|
||||
|
||||
mostlyclean-recursive clean-recursive distclean-recursive \
|
||||
maintainer-clean-recursive:
|
||||
@set fnord $$MAKEFLAGS; amf=$$2; \
|
||||
dot_seen=no; \
|
||||
case "$@" in \
|
||||
distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
|
||||
*) list='$(SUBDIRS)' ;; \
|
||||
esac; \
|
||||
rev=''; for subdir in $$list; do \
|
||||
if test "$$subdir" = "."; then :; else \
|
||||
rev="$$subdir $$rev"; \
|
||||
fi; \
|
||||
done; \
|
||||
rev="$$rev ."; \
|
||||
target=`echo $@ | sed s/-recursive//`; \
|
||||
for subdir in $$rev; do \
|
||||
echo "Making $$target in $$subdir"; \
|
||||
if test "$$subdir" = "."; then \
|
||||
local_target="$$target-am"; \
|
||||
else \
|
||||
local_target="$$target"; \
|
||||
fi; \
|
||||
(cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
|
||||
|| case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \
|
||||
done && test -z "$$fail"
|
||||
tags-recursive:
|
||||
list='$(SUBDIRS)'; for subdir in $$list; do \
|
||||
test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
|
||||
done
|
||||
ctags-recursive:
|
||||
list='$(SUBDIRS)'; for subdir in $$list; do \
|
||||
test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
|
||||
done
|
||||
|
||||
ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
|
||||
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
|
||||
unique=`for i in $$list; do \
|
||||
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
|
||||
done | \
|
||||
$(AWK) ' { files[$$0] = 1; } \
|
||||
END { for (i in files) print i; }'`; \
|
||||
mkid -fID $$unique
|
||||
tags: TAGS
|
||||
|
||||
TAGS: tags-recursive $(HEADERS) $(SOURCES) config.in $(TAGS_DEPENDENCIES) \
|
||||
$(TAGS_FILES) $(LISP)
|
||||
tags=; \
|
||||
here=`pwd`; \
|
||||
if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
|
||||
include_option=--etags-include; \
|
||||
empty_fix=.; \
|
||||
else \
|
||||
include_option=--include; \
|
||||
empty_fix=; \
|
||||
fi; \
|
||||
list='$(SUBDIRS)'; for subdir in $$list; do \
|
||||
if test "$$subdir" = .; then :; else \
|
||||
test ! -f $$subdir/TAGS || \
|
||||
tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \
|
||||
fi; \
|
||||
done; \
|
||||
list='$(SOURCES) $(HEADERS) config.in $(LISP) $(TAGS_FILES)'; \
|
||||
unique=`for i in $$list; do \
|
||||
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
|
||||
done | \
|
||||
$(AWK) ' { files[$$0] = 1; } \
|
||||
END { for (i in files) print i; }'`; \
|
||||
if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
|
||||
test -n "$$unique" || unique=$$empty_fix; \
|
||||
$(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
|
||||
$$tags $$unique; \
|
||||
fi
|
||||
ctags: CTAGS
|
||||
CTAGS: ctags-recursive $(HEADERS) $(SOURCES) config.in $(TAGS_DEPENDENCIES) \
|
||||
$(TAGS_FILES) $(LISP)
|
||||
tags=; \
|
||||
here=`pwd`; \
|
||||
list='$(SOURCES) $(HEADERS) config.in $(LISP) $(TAGS_FILES)'; \
|
||||
unique=`for i in $$list; do \
|
||||
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
|
||||
done | \
|
||||
$(AWK) ' { files[$$0] = 1; } \
|
||||
END { for (i in files) print i; }'`; \
|
||||
test -z "$(CTAGS_ARGS)$$tags$$unique" \
|
||||
|| $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
|
||||
$$tags $$unique
|
||||
|
||||
GTAGS:
|
||||
here=`$(am__cd) $(top_builddir) && pwd` \
|
||||
&& cd $(top_srcdir) \
|
||||
&& gtags -i $(GTAGS_ARGS) $$here
|
||||
|
||||
distclean-tags:
|
||||
-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
|
||||
|
||||
distdir: $(DISTFILES)
|
||||
$(am__remove_distdir)
|
||||
mkdir $(distdir)
|
||||
$(mkdir_p) $(distdir)/djgpp $(distdir)/intl $(distdir)/m4 $(distdir)/po
|
||||
@srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
|
||||
topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
|
||||
list='$(DISTFILES)'; for file in $$list; do \
|
||||
case $$file in \
|
||||
$(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
|
||||
$(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
|
||||
esac; \
|
||||
if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
|
||||
dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
|
||||
if test "$$dir" != "$$file" && test "$$dir" != "."; then \
|
||||
dir="/$$dir"; \
|
||||
$(mkdir_p) "$(distdir)$$dir"; \
|
||||
else \
|
||||
dir=''; \
|
||||
fi; \
|
||||
if test -d $$d/$$file; then \
|
||||
if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
|
||||
cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
|
||||
fi; \
|
||||
cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
|
||||
else \
|
||||
test -f $(distdir)/$$file \
|
||||
|| cp -p $$d/$$file $(distdir)/$$file \
|
||||
|| exit 1; \
|
||||
fi; \
|
||||
done
|
||||
list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
|
||||
if test "$$subdir" = .; then :; else \
|
||||
test -d "$(distdir)/$$subdir" \
|
||||
|| $(mkdir_p) "$(distdir)/$$subdir" \
|
||||
|| exit 1; \
|
||||
distdir=`$(am__cd) $(distdir) && pwd`; \
|
||||
top_distdir=`$(am__cd) $(top_distdir) && pwd`; \
|
||||
(cd $$subdir && \
|
||||
$(MAKE) $(AM_MAKEFLAGS) \
|
||||
top_distdir="$$top_distdir" \
|
||||
distdir="$$distdir/$$subdir" \
|
||||
distdir) \
|
||||
|| exit 1; \
|
||||
fi; \
|
||||
done
|
||||
-find $(distdir) -type d ! -perm -777 -exec chmod a+rwx {} \; -o \
|
||||
! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \
|
||||
! -type d ! -perm -400 -exec chmod a+r {} \; -o \
|
||||
! -type d ! -perm -444 -exec $(SHELL) $(install_sh) -c -m a+r {} {} \; \
|
||||
|| chmod -R a+r $(distdir)
|
||||
dist-gzip: distdir
|
||||
tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz
|
||||
$(am__remove_distdir)
|
||||
dist-bzip2: distdir
|
||||
tardir=$(distdir) && $(am__tar) | bzip2 -9 -c >$(distdir).tar.bz2
|
||||
$(am__remove_distdir)
|
||||
|
||||
dist-tarZ: distdir
|
||||
tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z
|
||||
$(am__remove_distdir)
|
||||
|
||||
dist-shar: distdir
|
||||
shar $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).shar.gz
|
||||
$(am__remove_distdir)
|
||||
|
||||
dist-zip: distdir
|
||||
-rm -f $(distdir).zip
|
||||
zip -rq $(distdir).zip $(distdir)
|
||||
$(am__remove_distdir)
|
||||
|
||||
dist dist-all: distdir
|
||||
tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz
|
||||
tardir=$(distdir) && $(am__tar) | bzip2 -9 -c >$(distdir).tar.bz2
|
||||
$(am__remove_distdir)
|
||||
|
||||
# This target untars the dist file and tries a VPATH configuration. Then
|
||||
# it guarantees that the distribution is self-contained by making another
|
||||
# tarfile.
|
||||
distcheck: dist
|
||||
case '$(DIST_ARCHIVES)' in \
|
||||
*.tar.gz*) \
|
||||
GZIP=$(GZIP_ENV) gunzip -c $(distdir).tar.gz | $(am__untar) ;;\
|
||||
*.tar.bz2*) \
|
||||
bunzip2 -c $(distdir).tar.bz2 | $(am__untar) ;;\
|
||||
*.tar.Z*) \
|
||||
uncompress -c $(distdir).tar.Z | $(am__untar) ;;\
|
||||
*.shar.gz*) \
|
||||
GZIP=$(GZIP_ENV) gunzip -c $(distdir).shar.gz | unshar ;;\
|
||||
*.zip*) \
|
||||
unzip $(distdir).zip ;;\
|
||||
esac
|
||||
chmod -R a-w $(distdir); chmod a+w $(distdir)
|
||||
mkdir $(distdir)/_build
|
||||
mkdir $(distdir)/_inst
|
||||
chmod a-w $(distdir)
|
||||
dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \
|
||||
&& dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \
|
||||
&& cd $(distdir)/_build \
|
||||
&& ../configure --srcdir=.. --prefix="$$dc_install_base" \
|
||||
--with-included-gettext \
|
||||
$(DISTCHECK_CONFIGURE_FLAGS) \
|
||||
&& $(MAKE) $(AM_MAKEFLAGS) \
|
||||
&& $(MAKE) $(AM_MAKEFLAGS) dvi \
|
||||
&& $(MAKE) $(AM_MAKEFLAGS) check \
|
||||
&& $(MAKE) $(AM_MAKEFLAGS) install \
|
||||
&& $(MAKE) $(AM_MAKEFLAGS) installcheck \
|
||||
&& $(MAKE) $(AM_MAKEFLAGS) uninstall \
|
||||
&& $(MAKE) $(AM_MAKEFLAGS) distuninstallcheck_dir="$$dc_install_base" \
|
||||
distuninstallcheck \
|
||||
&& chmod -R a-w "$$dc_install_base" \
|
||||
&& ({ \
|
||||
(cd ../.. && umask 077 && mkdir "$$dc_destdir") \
|
||||
&& $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" install \
|
||||
&& $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" uninstall \
|
||||
&& $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" \
|
||||
distuninstallcheck_dir="$$dc_destdir" distuninstallcheck; \
|
||||
} || { rm -rf "$$dc_destdir"; exit 1; }) \
|
||||
&& rm -rf "$$dc_destdir" \
|
||||
&& $(MAKE) $(AM_MAKEFLAGS) dist \
|
||||
&& rm -rf $(DIST_ARCHIVES) \
|
||||
&& $(MAKE) $(AM_MAKEFLAGS) distcleancheck
|
||||
$(am__remove_distdir)
|
||||
@(echo "$(distdir) archives ready for distribution: "; \
|
||||
list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \
|
||||
sed -e '1{h;s/./=/g;p;x;}' -e '$${p;x;}'
|
||||
distuninstallcheck:
|
||||
@cd $(distuninstallcheck_dir) \
|
||||
&& test `$(distuninstallcheck_listfiles) | wc -l` -le 1 \
|
||||
|| { echo "ERROR: files left after uninstall:" ; \
|
||||
if test -n "$(DESTDIR)"; then \
|
||||
echo " (check DESTDIR support)"; \
|
||||
fi ; \
|
||||
$(distuninstallcheck_listfiles) ; \
|
||||
exit 1; } >&2
|
||||
distcleancheck: distclean
|
||||
@if test '$(srcdir)' = . ; then \
|
||||
echo "ERROR: distcleancheck can only run from a VPATH build" ; \
|
||||
exit 1 ; \
|
||||
fi
|
||||
@test `$(distcleancheck_listfiles) | wc -l` -eq 0 \
|
||||
|| { echo "ERROR: files left in build directory after distclean:" ; \
|
||||
$(distcleancheck_listfiles) ; \
|
||||
exit 1; } >&2
|
||||
check-am: all-am
|
||||
check: check-recursive
|
||||
all-am: Makefile config.h
|
||||
installdirs: installdirs-recursive
|
||||
installdirs-am:
|
||||
@TOOLS_ONLY_FALSE@install: install-recursive
|
||||
install-exec: install-exec-recursive
|
||||
install-data: install-data-recursive
|
||||
uninstall: uninstall-recursive
|
||||
|
||||
install-am: all-am
|
||||
@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
|
||||
|
||||
installcheck: installcheck-recursive
|
||||
install-strip:
|
||||
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
|
||||
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
|
||||
`test -z '$(STRIP)' || \
|
||||
echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
|
||||
mostlyclean-generic:
|
||||
|
||||
clean-generic:
|
||||
|
||||
distclean-generic:
|
||||
-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
|
||||
|
||||
maintainer-clean-generic:
|
||||
@echo "This command is intended for maintainers to use"
|
||||
@echo "it deletes files that may require special tools to rebuild."
|
||||
clean: clean-recursive
|
||||
|
||||
clean-am: clean-generic mostlyclean-am
|
||||
|
||||
distclean: distclean-recursive
|
||||
-rm -f $(am__CONFIG_DISTCLEAN_FILES)
|
||||
-rm -f Makefile
|
||||
distclean-am: clean-am distclean-generic distclean-hdr distclean-local \
|
||||
distclean-tags
|
||||
|
||||
dvi: dvi-recursive
|
||||
|
||||
dvi-am:
|
||||
|
||||
html: html-recursive
|
||||
|
||||
info: info-recursive
|
||||
|
||||
info-am:
|
||||
|
||||
install-data-am:
|
||||
|
||||
install-exec-am:
|
||||
|
||||
install-info: install-info-recursive
|
||||
|
||||
install-man:
|
||||
|
||||
installcheck-am:
|
||||
|
||||
maintainer-clean: maintainer-clean-recursive
|
||||
-rm -f $(am__CONFIG_DISTCLEAN_FILES)
|
||||
-rm -rf $(top_srcdir)/autom4te.cache
|
||||
-rm -f Makefile
|
||||
maintainer-clean-am: distclean-am maintainer-clean-generic
|
||||
|
||||
mostlyclean: mostlyclean-recursive
|
||||
|
||||
mostlyclean-am: mostlyclean-generic
|
||||
|
||||
pdf: pdf-recursive
|
||||
|
||||
pdf-am:
|
||||
|
||||
ps: ps-recursive
|
||||
|
||||
ps-am:
|
||||
|
||||
uninstall-am: uninstall-info-am
|
||||
|
||||
uninstall-info: uninstall-info-recursive
|
||||
|
||||
.PHONY: $(RECURSIVE_TARGETS) CTAGS GTAGS all all-am am--refresh check \
|
||||
check-am clean clean-generic clean-recursive ctags \
|
||||
ctags-recursive dist dist-all dist-bzip2 dist-gzip dist-shar \
|
||||
dist-tarZ dist-zip distcheck distclean distclean-generic \
|
||||
distclean-hdr distclean-local distclean-recursive \
|
||||
distclean-tags distcleancheck distdir distuninstallcheck dvi \
|
||||
dvi-am html html-am info info-am install install-am \
|
||||
install-data install-data-am install-exec install-exec-am \
|
||||
install-info install-info-am install-man install-strip \
|
||||
installcheck installcheck-am installdirs installdirs-am \
|
||||
maintainer-clean maintainer-clean-generic \
|
||||
maintainer-clean-recursive mostlyclean mostlyclean-generic \
|
||||
mostlyclean-recursive pdf pdf-am ps ps-am tags tags-recursive \
|
||||
uninstall uninstall-am uninstall-info-am
|
||||
|
||||
|
||||
@TOOLS_ONLY_TRUE@ # Build native tools only.
|
||||
@TOOLS_ONLY_FALSE@ # All subdirectories.
|
||||
@TOOLS_ONLY_FALSE@ # Do intl, m4, and lib first since the C programs depend on them.
|
||||
@TOOLS_ONLY_FALSE@ # Do doc last so makeinfo will be built when we get there.
|
||||
@TOOLS_ONLY_FALSE@ # Others are alphabetical.
|
||||
|
||||
# One special target for installers to use by hand if desired.
|
||||
install-tex:
|
||||
cd doc && $(MAKE) TEXMF=$(TEXMF) install-tex
|
||||
|
||||
distclean-local:
|
||||
-test -d "$(native_tools)" && rm -rf "$(native_tools)"
|
||||
|
||||
# Don't install native tools for cross compile.
|
||||
@TOOLS_ONLY_TRUE@install:
|
||||
# Tell versions [3.59,3.63) of GNU make to not export all variables.
|
||||
# Otherwise a system limit (for SysV at least) may be exceeded.
|
||||
.NOEXPORT:
|
728
external/gpl2/texinfo/dist/NEWS
vendored
Normal file
728
external/gpl2/texinfo/dist/NEWS
vendored
Normal file
@ -0,0 +1,728 @@
|
||||
Id: NEWS,v 1.103 2004/12/24 16:43:58 karl Exp
|
||||
This file records noteworthy changes, very tersely.
|
||||
See the manual for detailed information.
|
||||
|
||||
Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000,
|
||||
2001, 2002, 2003, 2004 Free Software Foundation, Inc.
|
||||
|
||||
Copying and distribution of this file, with or without modification,
|
||||
are permitted in any medium without royalty provided the copyright
|
||||
notice and this notice are preserved.
|
||||
|
||||
|
||||
*** IMPORTANT NEWS FOR ALL AUTHORS OF TEXINFO MANUALS ***
|
||||
|
||||
As of version 4.2, Texinfo has a new command @copying to define the
|
||||
copyright and copying permissions for a manual. It's important to
|
||||
switch to using it as soon as possible (as in your next release),
|
||||
because the historical method of doing copyright permissions using
|
||||
@ifinfo failed to output copyright information in the HTML (or XML)
|
||||
formats. The manual has detailed explanations and examples. For
|
||||
convenience, here's a url to one of the relevant sections:
|
||||
http://www.gnu.org/software/texinfo/manual/texinfo/html_node/Document-Permissions.html
|
||||
|
||||
-------------------------------------------------------------------------------
|
||||
|
||||
4.8 (31 December 2004)
|
||||
* Language:
|
||||
. new command @euro for the Euro currency symbol, and
|
||||
@documentencoding has some support for ISO-8859-15.
|
||||
. new command @abbr for general abbreviations.
|
||||
. new command @slanted to typeset text in a slanted font,
|
||||
and @sansserif to typeset in a sans serif font.
|
||||
* makeinfo:
|
||||
. An empty first argument to cross-reference commands, such as @xref,
|
||||
causes an error. This change was made in 4.1, but not mentioned in NEWS.
|
||||
. HTML output:
|
||||
- <a name="..."> constructs are added for the old-style
|
||||
conversion of node names to HTML names, so that external references
|
||||
to them can continue to work.
|
||||
- "g_t" prefixed to targets for node names beginning with a
|
||||
nonletter, for XHTML compatibility.
|
||||
. Docbook output: recognize more image formats.
|
||||
* texi2dvi:
|
||||
. new option --recode, to call recode for input character translation.
|
||||
* Distribution:
|
||||
. new convenience script texi2pdf, equivalent to texi2dvi --pdf (from tetex).
|
||||
. some cross-compiling support in configure && make.
|
||||
. new configure option --disable-install-warnings, for TeX.
|
||||
distributions which do have the files installed.
|
||||
. automake 1.9.4.
|
||||
|
||||
|
||||
4.7 (9 April 2004)
|
||||
* Language:
|
||||
. new commands @float, @caption, @shortcaption, @listoffloats for
|
||||
initial implementation of floating material (figures, tables, etc).
|
||||
Ironically, they do not yet actually float anywhere.
|
||||
. new commands @docbook, @ifdocbook, @ifnotdocbook for conditional Docbook.
|
||||
. new commands @ordf{} and @ordm{} for Spanish feminine/masculine ordinals.
|
||||
. new commands @deftypecv[x] for class variables in typed OO languages.
|
||||
. new command @registeredsymbol for the r-in-a-circle symbol.
|
||||
. new command @headitem to make a heading row in @multitable.
|
||||
. new command @LaTeX{} for the LaTeX logo.
|
||||
. new command @comma{} to avoid comma-parsing problems.
|
||||
. @url is now a synonym for @uref; new command @indicateurl has the
|
||||
old meaning of just displaying a url as text.
|
||||
. @quotation now accepts an optional argument for labelling the text
|
||||
as a `Note', `Tip', etc.
|
||||
. @defun (et al.) heading lines can now be continued with a lone @.
|
||||
. @acronym accepts an optional argument for the meaning of the acronym.
|
||||
* makeinfo:
|
||||
. New environment variable TEXINFO_OUTPUT_FORMAT determines the output
|
||||
format at runtime, if no options are specified.
|
||||
. New option --plaintext, equivalent to --no-headers with Info output.
|
||||
. All outputs:
|
||||
- sections are numbered by default.
|
||||
. Info output:
|
||||
- punctuation is inserted after @pxref and @ref, if needed to make
|
||||
cross-references valid.
|
||||
- line numbers included in index menus, so Info readers can go to
|
||||
the exact line of an entry, not just a node. Also in plaintext output.
|
||||
- ^@^H[index^@^H] cookie included in index menus, so Info readers
|
||||
can handle the ] etc. commands better.
|
||||
. HTML output:
|
||||
- new algorithm for cross-references to other manuals, for maximum
|
||||
portability and stability.
|
||||
- include node name in <title> with split output.
|
||||
- @multicolumn fractions become percentages.
|
||||
- entities used for bullets, quotes, dashes, and others.
|
||||
- index entries are links to the exact locations.
|
||||
- <h4> and <h5> used for @sub and @subsubsections again.
|
||||
- accented dotless i supported.
|
||||
. XML output: many new tags and structure to preserve more source features.
|
||||
. Docbook output:
|
||||
- upgraded DTD to Docbook XML 4.2, no longer using Docbook SGML.
|
||||
- improved translation in general, for instance:
|
||||
- line annotations and marked quotations.
|
||||
* texi2dvi:
|
||||
. if available, use etex (pdfetex if --pdf) by default.
|
||||
. if the input file includes thumbpdf.sty (for LaTeX), then run thumbpdf.
|
||||
. more output if --debug.
|
||||
* texinfo.tex:
|
||||
. @defun names are now printed in typewriter (instead of bold), and
|
||||
within the arguments, @var text is printed in slanted typewriter.
|
||||
. @tex code is executed inside a TeX group, so that any changes must
|
||||
be prefixed with \global (or the equivalent) to be effective. (This
|
||||
change was actually made years ago, but never made it into the NEWS.)
|
||||
* info:
|
||||
. new option --where (aka --location, -w) to report where an Info file
|
||||
would be found, instead of reading it.
|
||||
. by default, output ANSI terminal escape sequences as-is; new option
|
||||
--no-raw-escapes overrides this.
|
||||
. use the newly-generated index line numbers.
|
||||
* Distribution:
|
||||
. new script gendocs.sh (not installed), for use by GNU maintainers in
|
||||
getting their manuals on the GNU web site. Documented in
|
||||
maintain.texi (http://www.gnu.org/prep/maintain/).
|
||||
. Most code uses ANSI C prototypes, to some extent.
|
||||
. New translation: nb.
|
||||
. automake 1.8.3, autoconf 2.59, gettext 0.14.1.
|
||||
|
||||
|
||||
4.6 (10 June 2003)
|
||||
* Language:
|
||||
. new command @/ specifies an allowable breakpoint within a line.
|
||||
. new command @dofirstparagraphindent to control whether the first
|
||||
paragraph following a section heading is indented. Default is to
|
||||
omit this indentation, unlike the output up to now.
|
||||
. new command @indent for explicitly indenting a paragraph.
|
||||
. makeinfo writes a new construct for @image in Info output, so that
|
||||
graphical Info browsers (such as Emacs Info under X) can display an
|
||||
actual image. (Standalone Info ignores this, since it runs in a tty.)
|
||||
* makeinfo:
|
||||
. Common:
|
||||
- search for image files in the include file search path.
|
||||
- warns if @value is used on an undefined variable.
|
||||
. Info output:
|
||||
- default --split-size now 300,000 bytes, up from 50,000.
|
||||
- with --enable-encoding and a given @documentencoding,
|
||||
output a Local Variables section specifying that encoding, for use
|
||||
with Emacs.
|
||||
. HTML output:
|
||||
- uses <h3> at the smallest.
|
||||
- a few css <style> definitions are included to better
|
||||
implement @format, @display, @small..., etc.
|
||||
- new option --css-include=FILE includes FILE in the <style>.
|
||||
- @cartouche now outputs a <table> with a border.
|
||||
* texinfo.tex:
|
||||
. new Polish translation txi-pl.tex.
|
||||
* texi2dvi:
|
||||
. --command=CMD replaces --texinfo=CMD; it inserts CMD at the first
|
||||
line of LaTeX files now, or after the @setfilename for Texinfo files.
|
||||
* info:
|
||||
. RET now goes to the nearest xref (rather like Emacs Info),
|
||||
instead of the next xref starting on the current line.
|
||||
* Distribution:
|
||||
. new Romanian (ro) translation.
|
||||
. variables now declared const where appropriate.
|
||||
. gettext 0.12.1, automake 1.7.5.
|
||||
|
||||
|
||||
4.5 (4 February 2003)
|
||||
* info:
|
||||
. a bug in 4.4 prevented compressed info files from being found.
|
||||
* Distribution:
|
||||
. detect sys/ptem.h on Solaris.
|
||||
|
||||
|
||||
4.4 (31 January 2003)
|
||||
* Language:
|
||||
. The ' (ASCII apostrophe/right quote) character is finally allowed in
|
||||
node and anchor names. Thus, after installing this texinfo.tex,
|
||||
existing .aux files will cause errors! Remove them and rerun TeX to
|
||||
generate good ones.
|
||||
. @value constructs are now expanded in the filename arguments to
|
||||
@include and @verbatiminclude.
|
||||
* makeinfo:
|
||||
. @macro names may no longer include ^ or _, for the sake of math mode.
|
||||
. bug fix: @copying text is now reflected in tag table positions;
|
||||
before, nodes may not have been found with a long-enough @copying.
|
||||
. bug fix: html @verb arg is quoted properly, and does not imply
|
||||
a paragraph break.
|
||||
* texinfo.tex:
|
||||
. @smallexample and the like now output in a smaller font (9pt) in all
|
||||
paper formats, not just @smallbook and @afourpaper.
|
||||
. new translation txi-tr.tex.
|
||||
. bug fix: <>| and other characters do not disappear when they are
|
||||
first on a line in @verbatim.
|
||||
* install-info:
|
||||
. bug fix: don't translate the `* Menu' info keyword.
|
||||
* info:
|
||||
. CTRL-H is treated like DEL in incremental search.
|
||||
. arrow keys once again work in isearch contexts under Solaris.
|
||||
* infokey:
|
||||
. use .info key bindings before defaults.
|
||||
. allow prefix keys to be disabled.
|
||||
* Distribution:
|
||||
. update to GNU FDL 1.2 (http://www.gnu.org/licenses/fdl.html).
|
||||
. getopt and other common library files updated from gnulib
|
||||
(http://savannah.gnu.org/projects/gnulib/).
|
||||
. autoconf 2.57, automake 1.7.2.
|
||||
|
||||
|
||||
4.3 (14 November 2002)
|
||||
* Language:
|
||||
. new command @tie{} to do a real tie (unbreakable interword space).
|
||||
* makeinfo:
|
||||
. html output for @defun and friends now has font changes.
|
||||
. html output has some class attributes.
|
||||
. xml and docbook output improved in many details.
|
||||
* texinfo.tex:
|
||||
. new Italian translations, txi-it.tex.
|
||||
. pdf bookmarks for unnumbered sections work.
|
||||
. type name for @defun and friends no longer extends into margin.
|
||||
* info:
|
||||
. automatic-footnotes now off by default, for emacs compatibility.
|
||||
. crash when MALLOC_CHECK_=2 fixed.
|
||||
* install-info:
|
||||
. new option --infodir synonym for --info-dir, for compatibility with
|
||||
the Debian install-info.
|
||||
. support for bzip2-compressed files.
|
||||
* texindex:
|
||||
. omit initial if the entire index is under one character.
|
||||
* Distribution:
|
||||
. development sources now available under CVS, see
|
||||
http://savannah.gnu.org/projects/texinfo/
|
||||
. Turkish message translation.
|
||||
. gettext 0.11.5, autoconf 2.54, automake 1.7.1.
|
||||
|
||||
|
||||
4.2 (1 April 2002)
|
||||
* Language:
|
||||
. new command @copying to define copying permissions. See above.
|
||||
. new conditionals @ifplaintext, @ifnotplaintext for the plain text
|
||||
(--no-headers) output format.
|
||||
. new command @\ to produce literal \ inside @math, since \ by itself
|
||||
no longer works.
|
||||
* makeinfo:
|
||||
. emit accesskey attributes for keyboard shortcuts to menu items.
|
||||
. @{even,every,odd}{footing,header} are ignored by makeinfo now, so
|
||||
they no longer need to be enclosed in @iftex.
|
||||
* texinfo.tex:
|
||||
. bug fix for pdf-format table of contents.
|
||||
* info:
|
||||
. bug fixes for -R (--raw-escapes).
|
||||
. --help shows short option names.
|
||||
* Distribution:
|
||||
. the doc.c, funs.h, and key.c files in info/ are no longer generated
|
||||
at make time, to appease Automake's make distcheck.
|
||||
. gettext 0.11.1, autoconf 2.53, automake 1.6 (with install-info kludge).
|
||||
|
||||
|
||||
4.1 (4 March 2002)
|
||||
* Language:
|
||||
. new commands @verbatim and @verb for printing verbatim inserts.
|
||||
. new command @verbatiminclude for verbatim include of files.
|
||||
. new environment @documentdescription for defining the HTML description.
|
||||
. new command @afivepaper for the A5 paper size.
|
||||
* makeinfo:
|
||||
. supports xml and docbook output.
|
||||
. supports HTML splitting by node, which is now the default.
|
||||
. new option --split-size to control maximum size of split info files.
|
||||
. new option --enable-encoding to enable
|
||||
* info:
|
||||
. user-specified key bindings supported.
|
||||
. ANSI escape sequences (as produced by groff) removed from man output
|
||||
by default; use --raw-escapes to let them through if your terminal
|
||||
supports them.
|
||||
. RET terminates incremental search normally.
|
||||
* texinfo.tex:
|
||||
. @math implies @tex, so all the usual plain TeX math is supported.
|
||||
. smaller fonts for @smallexample, in all page sizes.
|
||||
. improvements in the PDF support.
|
||||
* texi2dvi:
|
||||
. new option -o to explicitly specify output filename.
|
||||
* Distribution:
|
||||
. switch to GNU Free Documentation License (http://www.gnu.org/copyleft/).
|
||||
. update to GNU gettext 0.11, autoconf 2.52, and automake 1.5.
|
||||
. Danish, Swedish, and Hebrew message translations.
|
||||
|
||||
|
||||
4.0 (28 September 1999)
|
||||
* Language:
|
||||
. New command @anchor for cross references to arbitrary points.
|
||||
. New commands @documentlanguage sets the main document language,
|
||||
and @documentencoding sets the document input encoding (although not
|
||||
much is done yet with either).
|
||||
. New command @pagesizes allows limited control of text area for typesetting.
|
||||
. New command @acronym for abbreviations in all caps, such as `NASA'.
|
||||
. New command @alias for simple command aliases.
|
||||
. New command @definfoenclose for better control of info output.
|
||||
. New commands @deftypeivar for typed instance variables of a class
|
||||
and @deftypeop for typed operations of a class.
|
||||
. New command @novalidate suppresses cross-reference checking and (in
|
||||
TeX) auxiliary file creation.
|
||||
. New commands @setcontentsaftertitlepage and
|
||||
@setshortcontentsaftertitlepage to force printing the table of
|
||||
contents after @end titlepage. Also, @contents and @shortcontents
|
||||
themselves can now appear at the beginning of the document as
|
||||
well as the end.
|
||||
. New markup commands: @env (for environment variables), @command (for
|
||||
command names), @option (for command-line options).
|
||||
. New commands @smallformat and @smalldisplay, a la @smallexample.
|
||||
. New command @exampleindent to set indentation of example-like
|
||||
environments a la @paragraphindent.
|
||||
. @uref takes an optional third argument of text to show instead of
|
||||
(rather than in addition to) the url for info and dvi output.
|
||||
. @footnote works in an @item for a @table.
|
||||
* texinfo.tex:
|
||||
. latest version always at ftp://ftp.gnu.org/gnu/texinfo/texinfo.tex
|
||||
(and mirrors).
|
||||
. implements @macro.
|
||||
. implements @paragraphindent (except asis).
|
||||
. @emph and @i use true italic type (cmti) instead of slanted (cmsl).
|
||||
. implements pdf output when run with pdftex.
|
||||
. better support for internationalization via txi-??.tex files.
|
||||
. footnotes now set in a smaller point size.
|
||||
* makeinfo:
|
||||
. supports HTML output with the --html option.
|
||||
. implication of --html: @top nodes should be wrapped in @ifnottex
|
||||
rather than @ifinfo. @ifinfo conditionals are not expanded with --html.
|
||||
. new option --number-sections to output chapter/section numbers.
|
||||
. dashes and quotes are not treated specially in node names.
|
||||
. new option --commands-in-node-names to allow @-commands in node names.
|
||||
(Not implemented in TeX, and most likely never will be.)
|
||||
. @emph output uses _underscores_.
|
||||
. @image looks for .png files before .jpg.
|
||||
. only output `Making ... file' line when verbose.
|
||||
. allow -v as synonym for --verbose.
|
||||
. new command line options to specify which conditionals to process
|
||||
(but --iftex is not fully implemented).
|
||||
. warns if @var contains any of ,[]().
|
||||
. @quote-arg implicitly done for all one-argument macros, so commas in
|
||||
the argument text are allowed.
|
||||
. \\ required in macro body to get single \, no other `escapes' defined.
|
||||
* info:
|
||||
. ISO Latin 1 characters are displayed and input as-is by default.
|
||||
. new option --vi-keys to enable vi-like and less-like key bindings.
|
||||
. new command S does case-sensitive searching.
|
||||
. new commands C-x n and C-x N repeat last search, respectively, in the
|
||||
same and in reverse direction, without prompting for the string. These
|
||||
commands are bound to n and N under --vi-keys, like in Less.
|
||||
. new command G menu1 menu2 ... searches for menu items from (dir),
|
||||
as allowed on the command line.
|
||||
. new command O (capital o, not zero) goes directly to the node that
|
||||
describes command-line options.
|
||||
. new command-line option --show-options causes the node which
|
||||
describes command-line options to be the first node displayed.
|
||||
. M-prior and M-DEL do new command info-scroll-other-window-backward.
|
||||
. / searches like s does.
|
||||
. If the search string includes upper-case letters, in both incremental
|
||||
and non-incremental search, the search is case-sensitive.
|
||||
. S searches case-sensitively even if the search string is all
|
||||
lower-case.
|
||||
. - makes the argument negative (so e.g. `- /' searches backward).
|
||||
. l restores point in the window returned to.
|
||||
. SPC/DEL do not move outside the current document.
|
||||
. foo.info is found before foo.
|
||||
. `info foo --index-search=bar' now searches for bar in foo's index.
|
||||
. support for files compressed with bzip2.
|
||||
* install-info:
|
||||
. handles gzipped dir files.
|
||||
. sort entries into alphabetical order.
|
||||
. install direntries only in preceding dircategory, not in all.
|
||||
. --delete does not require the info file to exist.
|
||||
. --delete can handle XEmacs-style dir entries.
|
||||
* texi2dvi:
|
||||
. bug fixed: now uses only the @iftex and @tex parts of the source.
|
||||
. process LaTeX source as well as Texinfo source.
|
||||
. output PDF (using pdftex) with new option --pdf.
|
||||
. handles --OPTION=ARG style of command line arguments.
|
||||
. new option --batch for progress reports but no interaction.
|
||||
. new option --clean to remove all auxiliary files.
|
||||
. new option --quiet for silence (unless there are errors).
|
||||
. new option -I for specifying directories for @include to search.
|
||||
. handles LaTeX files (running BibTeX etc.).
|
||||
* Fixes to util/gen-dir-node and util/fix-info-dir (formerly util/update-info).
|
||||
* Distribution:
|
||||
. Man pages included.
|
||||
. Czech and Norwegian message translations.
|
||||
. Various translations for texinfo.tex fixed words included.
|
||||
. DJGPP support.
|
||||
|
||||
|
||||
3.12 (3 March 1998)
|
||||
* Elisp files removed, since they are only usefully distributed with Emacs.
|
||||
* Restore inclusion of compile-time $(infodir) to INFOPATH.
|
||||
* install-info creates a proper dir file.
|
||||
* Various portability fixes.
|
||||
|
||||
|
||||
3.11 (31 July 1997)
|
||||
* New commands:
|
||||
- @uref to make a reference to a url; @url now only indicates such.
|
||||
- @image to include graphics (epsf for TeX).
|
||||
- @deftypemethod and @deftypemethodx to document methods in strongly
|
||||
typed object-oriented languages, such as C++.
|
||||
- @html for raw HTML.
|
||||
- @ifnothtml @ifnotinfo @ifnottex for more precise conditionals.
|
||||
- @kbdinputstyle to control when @kbd uses the slanted typewriter font.
|
||||
- @email takes second optional argument.
|
||||
* texinfo.tex reads texinfo.cnf (if present) for site-wide TeX
|
||||
configuration; for example, A4 paper sizes.
|
||||
* info:
|
||||
- arrow keys supported.
|
||||
- trailing : in INFOPATH appends default path.
|
||||
- new option --index-search for online help support.
|
||||
* makeinfo:
|
||||
- output files removed if errors unless (new option) --force.
|
||||
- new option -P to prepend to search path.
|
||||
- macro expansion file can be standard output.
|
||||
* install-info creates a new dir file if necessary.
|
||||
* update-info script to create a dir file from all info files.
|
||||
* Elisp: texnfo-tex.el and detexinfo.el removed from the distribution;
|
||||
- texnfo-tex features are now part of standard TeX & Texinfo packages;
|
||||
- makeinfo --no-headers does a better job than detexinfo.el.
|
||||
* Documentation:
|
||||
- Updates, revisions, corrections in the manual.
|
||||
- makeinfo.texi removed, as it was a copy of what was in texinfo.texi.
|
||||
* gettext support in sources, French and German translations included.
|
||||
* info man page removed; use the Texinfo manual.
|
||||
* Automake used, other portability fixes.
|
||||
|
||||
3.10 (nonexistent)
|
||||
|
||||
|
||||
3.9 (4 October 1996)
|
||||
* makeinfo:
|
||||
- Give a suppressible (with --no-validate) error for references
|
||||
outside of any node.
|
||||
- Keep track of multitable output correctly for split files; this
|
||||
caused nodes after the first multitable to be ``undefined''.
|
||||
* install-info:
|
||||
- Rename --infodir option to --info-dir.
|
||||
- More robust error checking to avoid various crashes.
|
||||
* configure: Include replacements for memcpy and memmove functions in
|
||||
the distribution, in case they are missing.
|
||||
|
||||
|
||||
3.8 (30 September 1996)
|
||||
* Define and/or document new and/or previously existing commands:
|
||||
Accents: @" @' @, @" @= @^ @` @~ @H @d @dotaccent @dotless @ringaccent
|
||||
@tieaccent @u @ubaraccent @v
|
||||
Special characters: @AA @AE @L @O @OE @aa @ae @exclamdown @l @o @oe
|
||||
@pounds @questiondown @ss
|
||||
Special punctuation: @! @? @enddots
|
||||
dir file maintenance: @dircategory @direntry; also new program, install-info
|
||||
HTML support: @email @url @ifhtml...@end ifhtml
|
||||
Macros: @macro @unmacro
|
||||
Tables: @multitable @tab
|
||||
Hyphenation: @- @hyphenation
|
||||
Spacing: @ @<TAB> @<NEWLINE>
|
||||
Sectioning:
|
||||
@headings singleafter/doubleafter (change heading style after current page)
|
||||
@centerchap
|
||||
@setchapterstyle
|
||||
Other:
|
||||
@shorttitlepage (simple title pages)
|
||||
@detailmenu...@end detailmenu (help makeinfo parse master menus)
|
||||
* Makeinfo prefers an input file named `foo.texinfo' or `foo.texi' or
|
||||
`foo.txinfo' to just `foo' (the latter most likely being an executable).
|
||||
* Makeinfo implements @. @! @? correctly, as end-of-sentence punctuation.
|
||||
* @key marks its argument with a lozenge in TeX and <...> in Info.
|
||||
* TeX output has substantially decreased interline spacing and other
|
||||
formatting changes.
|
||||
* Remove these obsolete and never-documented commands:
|
||||
@infotop
|
||||
@infoappendix @infoappendixsec @infoappendixsubsec @infoappendixsubsubsec
|
||||
@infochapter @infosection @infosubsection @infosubsubsection
|
||||
@infounnumbered @infounnumberedsec @infounnumberedsubsec
|
||||
@infounnumberedsubsubsec
|
||||
@input
|
||||
@smallbreak @medbreak
|
||||
@overfullrule
|
||||
@br
|
||||
* Deprecate these obsolete commands, to be removed in the next release:
|
||||
@ctrl
|
||||
@infoinclude
|
||||
@iappendix @iappendixsection @iappendixsec @iappendixsubsec
|
||||
@iappendixsubsubsec
|
||||
@ichapter @isection @isubsection @isubsubsection
|
||||
@iunnumbered @iunnumberedsec @iunnumberedsubsec @iunnumberedsubsubsec
|
||||
@setchapterstyle
|
||||
@titlespec
|
||||
|
||||
|
||||
3.7 (24 December 1995)
|
||||
* Have --version print texinfo release number as well as the individual
|
||||
program version.
|
||||
* Better man page cleaning.
|
||||
* Update Elisp files from current Emacs release.
|
||||
|
||||
|
||||
3.6 (21 June 1995)
|
||||
* Unmatched brace error reporting improved.
|
||||
* Missing comment terminator prevented compilation.
|
||||
|
||||
|
||||
3.5 (20 June 1995)
|
||||
* Autoconf update.
|
||||
* Support for parallel makes.
|
||||
* make install does not install Elisp files.
|
||||
|
||||
|
||||
3.4 (19 June 1995)
|
||||
* Handle @ifhtml in Elisp.
|
||||
* Update FSF address.
|
||||
|
||||
|
||||
3.3 (15 June 1995)
|
||||
* Portability changes.
|
||||
* Compile Elisp files.
|
||||
* Don't distribute .info* files.
|
||||
|
||||
|
||||
3.2 (9 June 1995)
|
||||
* Standalone Info can read Unix man pages.
|
||||
* New commands: @! @? @^ @" @enddots.
|
||||
* makeinfo -E does macro expansion (and nothing else).
|
||||
|
||||
|
||||
3.1 (23 May 1993)
|
||||
Just bug fixes, see ChangeLog for full details.
|
||||
|
||||
|
||||
3.0: first release of Texinfo version 2, with many new commands.
|
||||
|
||||
|
||||
|
||||
Here is the separate NEWS for old releases of Info:
|
||||
|
||||
Version 2.11, Sat Apr 1 09:15:21 1995
|
||||
|
||||
Changes since 2.7 beta:
|
||||
|
||||
Although the basic code remains the same, there are numerous nits
|
||||
fixed, including some display bugs, and a memory leak. Some changes
|
||||
that have taken place with larger impact include the way in which the
|
||||
(dir) node is built; I have added in support for "localdir"
|
||||
directories among other things. Info files may be stored in
|
||||
compressed formats, and in their own subdirectories; menu items which
|
||||
do not explicitly name the node to which they are attached have the
|
||||
menu item name looked up as an Info file if it is not found within the
|
||||
current document. This means that the menu item:
|
||||
|
||||
* Info:: The Info documentation reader.
|
||||
|
||||
in (dir) refers to the info node "(info)Top".
|
||||
|
||||
Please see the ChangeLog and documentation for details on other
|
||||
changes.
|
||||
|
||||
Version 2.7 beta, Wed Dec 30 02:02:38 1992
|
||||
Version 2.6 beta, Tue Dec 22 03:58:07 1992
|
||||
Version 2.5 beta, Tue Dec 8 14:50:35 1992
|
||||
Version 2.4 beta, Sat Nov 28 14:34:02 1992
|
||||
Version 2.3 beta, Fri Nov 27 01:04:13 1992
|
||||
Version 2.2 beta, Tue Nov 24 09:36:08 1992
|
||||
Version 2.1 beta, Tue Nov 17 23:29:36 1992
|
||||
|
||||
Changes since 2.5 beta:
|
||||
|
||||
Note that versions 2.6 and 2.7 Beta were only released to a select group.
|
||||
|
||||
* "info-" removed from the front of M-x commands.
|
||||
|
||||
* Automatic footnote display. When you enter a node which contains
|
||||
footnotes, and the variable "automatic-footnotes" is "On", Info pops
|
||||
up a window containing the footnotes. Likewise, when you leave that
|
||||
node, the window containing the footnotes goes away.
|
||||
|
||||
* Cleaner built in documentation, and documentation functions.
|
||||
|
||||
Use:
|
||||
o `M-x describe-variable' to read a variable's documenation
|
||||
o `M-x describe-key' to find out what a particular keystroke does.
|
||||
o `M-x describe-function' to read a function's documentation.
|
||||
o `M-x where-is' to find out what keys invoke a particular function.
|
||||
|
||||
* Info can "tile" the displayed windows (via "M-x tile-windows"). If
|
||||
the variable "automatic-tiling" is "On", then splitting a window or
|
||||
deleting a window causes the remaining windows to be retiled.
|
||||
|
||||
* You can save every keystroke you type in a "dribble file" by using the
|
||||
`--dribble FILENAME' option. You can initially read keystrokes from an
|
||||
alternate input stream with `--restore FILENAME', or by redirecting
|
||||
input on the command line `info < old-dribble'.
|
||||
|
||||
* New behaviour of menu items. If the label is the same as the
|
||||
target node name, and the node couldn't be found in the current file,
|
||||
treat the label as a file name. For example, a menu entry in "DIR"
|
||||
might contain:
|
||||
|
||||
* Emacs:: Cool text-editor.
|
||||
|
||||
Info would not find the node "(dir)Emacs", so just plain "(emacs)"
|
||||
would be tried.
|
||||
|
||||
* New variable "ISO-Latin" allows you to use European machines with
|
||||
8-bit character sets.
|
||||
|
||||
* Cleanups in echo area reading, and redisplay. Cleanups in handling the
|
||||
window which shows possible completions.
|
||||
|
||||
* Info can now read files that have been compressed. An array in filesys.c
|
||||
maps extensions to programs that can decompress stdin, and write the results
|
||||
to stdout. Currently, ".Z"/uncompress, ".z"/gunzip, and ".Y"/unyabba are
|
||||
supported. The modeline for a compressed file shows "zz" in it.
|
||||
|
||||
* There is a new variable "gc-compressed-files" which, if non-zero, says
|
||||
it is okay to reclaim the file buffer space allocated to a file which
|
||||
was compressed, if, and only if, that file's contents do not appear in
|
||||
any history node.
|
||||
|
||||
* New file `nodemenu.c' implements a few functions for manipulating
|
||||
previously visited nodes. `C-x C-b' (list-visited-nodes) produces a
|
||||
menu of the nodes that could be reached by info-history-node in some
|
||||
window. `C-x b' (select-visited-node) is similar, but reads one of
|
||||
the node names with completion.
|
||||
|
||||
* Keystroke `M-r' (move_to_screen_line) allows the user to place the cursor at
|
||||
the start of a specific screen line. Without a numeric argument, place the
|
||||
cursor on the center line; with an arg, place the cursor on that line.
|
||||
|
||||
* Interruptible display implemented. Basic display speedups and hacks.
|
||||
* The message "*** Tags Out of Date ***" now means what it says.
|
||||
* Index searching with `,' (info-index-next) has been improved.
|
||||
* When scrolling with C-v, C-M-v, or M-v, only "Page Only" scrolling
|
||||
will happen.
|
||||
|
||||
* Continous scrolling (along with `]' (info-global-next) and `['
|
||||
(info-global-prev) works better. `]' and `[' accept numeric
|
||||
arguments, moving that many nodes in that case.
|
||||
|
||||
* `C-x w' (info-toggle-wrap) controls how lines wider than the width
|
||||
of the screen are displayed. If a line is too long, a `$' is
|
||||
displayed in the rightmost column of the window.
|
||||
|
||||
* There are some new variables for controlling the behaviour of Info
|
||||
interactively. The current list of variables is as follows:
|
||||
|
||||
Variable Name Default Value Description
|
||||
------------- ------------- -----------
|
||||
`automatic-footnotes' On When "On", footnotes appear and
|
||||
disappear automatically.
|
||||
|
||||
`automatic-tiling' Off When "On", creating of deleting a
|
||||
window resizes other windows.
|
||||
|
||||
`visible-bell' Off If non-zero, try to use a visible bell.
|
||||
|
||||
`errors-ring-bell' On If non-zero, errors cause a ring.
|
||||
|
||||
`show-index-match' On If non-zero, the portion of the string
|
||||
matched is highlighted by changing its
|
||||
case.
|
||||
|
||||
`scroll-behaviour' Continuous One of "Continuous", "Next Only", or
|
||||
"Page Only". "Page Only" prevents you from
|
||||
scrolling past the bottom or top of a node.
|
||||
"Next Only" causes the Next or Prev node to
|
||||
be selected when you scroll past the bottom
|
||||
or top of a node. "Continous" moves
|
||||
linearly through the files hierchichal
|
||||
structure.
|
||||
|
||||
`scroll-step' 0 Controls how scrolling is done for you when
|
||||
the cursor moves out of the current window.
|
||||
Non-zero means it is the number of lines
|
||||
you would like the screen to shift. A
|
||||
value of 0 means to center the line
|
||||
containing the cursor in the window.
|
||||
|
||||
`gc-compressed-files' Off If non-zero means it is okay to reclaim the
|
||||
file buffer space allocated to a file which
|
||||
was compressed, if, and only if, that
|
||||
file's contents do not appear in the node
|
||||
list of any window.
|
||||
|
||||
`ISO-Latin' Off Non-zero means that you are using an ISO
|
||||
Latin character set. By default, standard
|
||||
ASCII characters are assumed.
|
||||
________________________________________
|
||||
This release of Info is version 2.5 beta.
|
||||
|
||||
Changes since 2.4 beta:
|
||||
|
||||
* Index (i) and (,) commands fully implemented.
|
||||
* "configure" script now shipped with Info.
|
||||
* New function "set-variable" allows users to set various variables.
|
||||
* User-settable behaviour on end or beginning of node scrolling. This
|
||||
supercedes the SPC and DEL changes in 2.3 beta.
|
||||
|
||||
________________________________________
|
||||
This release of Info is version 2.4 beta.
|
||||
|
||||
Changes since 2.3 beta:
|
||||
|
||||
* info-last-node now means move to the last node of this info file.
|
||||
* info-history-node means move backwards through this window's node history.
|
||||
* info-first-node moves to the first node in the Info file. This node is
|
||||
not necessarily "Top"!
|
||||
* SPC and DEL can select the Next or Prev node after printing an informative
|
||||
message when pressed at the end/beg of a node.
|
||||
|
||||
----------------------------------------
|
||||
This release of Info is version 2.3 beta.
|
||||
|
||||
Changes since 2.2 beta:
|
||||
|
||||
* M-x command lines if NAMED_COMMANDS is #defined. Variable in Makefile.
|
||||
* Screen height changes made quite robust.
|
||||
* Interactive function "set-screen-height" implements user height changes.
|
||||
* Scrolling on some terminals is faster now.
|
||||
* C-l with numeric arguement is fixed.
|
||||
|
||||
----------------------------------------
|
||||
This release of Info is version 2.2 beta.
|
||||
|
||||
Changes since 2.0:
|
||||
|
||||
* C-g can now interrupt multi-file searches.
|
||||
* Incremental search is fully implemented.
|
||||
* Loading large tag tables is much faster now.
|
||||
* makedoc.c replaces shell script, speeding incremental builds.
|
||||
* Scrolling in redisplay is implemented.
|
||||
* Recursive uses of the echo area made more robust.
|
||||
* Garbage collection of unreferenced nodes.
|
112
external/gpl2/texinfo/dist/README
vendored
Normal file
112
external/gpl2/texinfo/dist/README
vendored
Normal file
@ -0,0 +1,112 @@
|
||||
Id: README,v 1.16 2004/12/13 13:36:32 karl Exp
|
||||
This is the README file for the GNU Texinfo distribution. Texinfo is
|
||||
the preferred documentation format for GNU software.
|
||||
|
||||
Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000,
|
||||
2001, 2002, 2003, 2004 Free Software Foundation, Inc.
|
||||
|
||||
Copying and distribution of this file, with or without modification,
|
||||
are permitted in any medium without royalty provided the copyright
|
||||
notice and this notice are preserved.
|
||||
|
||||
See ./INSTALL* for installation instructions.
|
||||
|
||||
Primary distribution point: ftp://ftp.gnu.org/gnu/texinfo/
|
||||
(list of mirrors at: http://www.gnu.org/prep/ftp.html)
|
||||
|
||||
Home page: http://www.gnu.org/software/texinfo/
|
||||
(list of mirrors at: http://www.gnu.org/server/list-mirrors.html)
|
||||
This page includes links to other Texinfo-related programs.
|
||||
|
||||
Mailing lists and archives:
|
||||
- bug-texinfo@gnu.org for bug reports or enhancement suggestions,
|
||||
archive: http://mail.gnu.org/pipermail/bug-texinfo
|
||||
- help-texinfo@gnu.org for authoring questions and general discussion,
|
||||
archive: http://mail.gnu.org/pipermail/help-texinfo
|
||||
- texinfo-pretest@texinfo.org for pretests of new releases,
|
||||
archive: http://texinfo.org/ftp/texinfo-pretest-archive
|
||||
There are no corresponding newsgroups.
|
||||
|
||||
Bug reports:
|
||||
please include enough information for the maintainers to reproduce the
|
||||
problem. Generally speaking, that means:
|
||||
- the contents of any input files necessary to reproduce the bug (crucial!).
|
||||
- a description of the problem and any samples of the erroneous output.
|
||||
- the version number of Texinfo and the program(s) involved (use --version).
|
||||
- hardware, operating system, and compiler versions (uname -a).
|
||||
- unusual options you gave to configure, if any (see config.status).
|
||||
- anything else that you think would be helpful.
|
||||
|
||||
Patches are most welcome; if possible, please make them with diff -c and
|
||||
include ChangeLog entries.
|
||||
|
||||
When sending email, please do not encode or split the messages in any
|
||||
way if at all possible; it's easier to deal with one large message than
|
||||
many small ones. GNU shar (http://www.gnu.org/software/sharutils/) is a
|
||||
convenient way of packaging multiple and/or binary files for email.
|
||||
|
||||
See README.dev for information on the Texinfo development environment --
|
||||
any interested parties are welcome. If you're a programmer and wish to
|
||||
contribute, this should get you started. And if you're not a
|
||||
programmer, you can still make significant contributions by writing test
|
||||
cases, checking the documentation against the implementation, etc.
|
||||
|
||||
This distribution includes the following files, among others:
|
||||
README This file.
|
||||
README.dev Texinfo developer information.
|
||||
|
||||
INSTALL Texinfo-specific installation notes.
|
||||
NEWS Summary of new features by release.
|
||||
INTRODUCTION Brief introduction to the system, and
|
||||
how to create readable files from the
|
||||
Texinfo source files in this distribution.
|
||||
|
||||
Texinfo documentation files (in ./doc):
|
||||
texinfo.txi Describes the Texinfo language and many
|
||||
of the associated tools. It tells how
|
||||
to use Texinfo to write documentation,
|
||||
how to use Texinfo mode in GNU Emacs,
|
||||
TeX, makeinfo, and the Emacs Lisp
|
||||
Texinfo formatting commands.
|
||||
|
||||
info.texi This manual tells you how to use
|
||||
Info. This document also comes as part of
|
||||
GNU Emacs. If you do not have Emacs,
|
||||
you can format this Texinfo source
|
||||
file with makeinfo or TeX and then
|
||||
read the resulting Info file with the
|
||||
standalone Info reader that is part of
|
||||
this distribution.
|
||||
|
||||
info-stnd.texi This manual tells you how to use
|
||||
the standalone GNU Info reader that is
|
||||
included in this distribution as C
|
||||
source (./info).
|
||||
|
||||
Printing related files:
|
||||
doc/texinfo.tex This TeX definitions file tells
|
||||
the TeX program how to typeset a
|
||||
Texinfo file into a DVI file ready for
|
||||
printing.
|
||||
|
||||
util/texindex.c This file contains the source for
|
||||
the `texindex' program that generates
|
||||
sorted indices used by TeX when
|
||||
typesetting a file for printing.
|
||||
|
||||
util/texi2dvi This is a shell script for
|
||||
producing an indexed DVI file using
|
||||
TeX and texindex.
|
||||
|
||||
Source files for standalone C programs:
|
||||
./lib
|
||||
./makeinfo
|
||||
./info
|
||||
|
||||
Installation files:
|
||||
Makefile.am What Automake uses to make a Makefile.in.
|
||||
Makefile.in What `configure' uses to make a Makefile,
|
||||
created by Automake.
|
||||
configure.ac What Autoconf uses to create `configure'.
|
||||
configure Configuration script for local conditions,
|
||||
created by Autoconf.
|
44
external/gpl2/texinfo/dist/README.dev
vendored
Normal file
44
external/gpl2/texinfo/dist/README.dev
vendored
Normal file
@ -0,0 +1,44 @@
|
||||
Id: README.dev,v 1.7 2003/11/24 15:11:06 karl Exp
|
||||
README.dev - Texinfo developer information.
|
||||
|
||||
Copyright (C) 2002, 2003 Free Software Foundation, Inc.
|
||||
|
||||
Copying and distribution of this file, with or without modification,
|
||||
are permitted in any medium without royalty provided the copyright
|
||||
notice and this notice are preserved.
|
||||
|
||||
The development sources for Texinfo is available through anonymous cvs
|
||||
at Savannah, see
|
||||
http://savannah.gnu.org/cvs/?group=texinfo
|
||||
|
||||
This distribution uses whatever versions of automake, autoconf, and
|
||||
gettext are listed in NEWS; usually the latest ones released. If you
|
||||
are getting the Texinfo sources from cvs, or change the Texinfo
|
||||
configure.ac, you'll need to have these tools installed to (re)build.
|
||||
You'll also need help2man. (All of these are available from
|
||||
ftp://ftp.gnu.org/gnu.)
|
||||
|
||||
Here's the order in which to run the tools for a fresh build:
|
||||
|
||||
autoheader # creates config.in, not necessarily needed every time
|
||||
aclocal -I m4 # for a new version of automake
|
||||
automake
|
||||
autoconf
|
||||
configure CFLAGS=-g --enable-maintainer-mode
|
||||
make
|
||||
|
||||
(with arguments to taste, of course.) Or you can run
|
||||
|
||||
./bootstrap
|
||||
|
||||
instead of the various auto* tools.
|
||||
|
||||
|
||||
One final note: If you would like to contribute to the GNU project by
|
||||
implementing additional documentation output formats for Texinfo, that
|
||||
would be great. But please do not write a separate translator texi2foo
|
||||
for your favorite format foo! That is the hard way to do the job, and
|
||||
makes extra work in subsequent maintenance, since the Texinfo language
|
||||
is continually being enhanced and updated. Instead, the best approach
|
||||
is modify Makeinfo to generate the new format, as it does now for Info,
|
||||
HTML, XML, and DocBook.
|
181
external/gpl2/texinfo/dist/TODO
vendored
Normal file
181
external/gpl2/texinfo/dist/TODO
vendored
Normal file
@ -0,0 +1,181 @@
|
||||
Id: TODO,v 1.26 2004/11/22 23:57:32 karl Exp
|
||||
This is the todo list for GNU Texinfo.
|
||||
If you are interested in working on any of these, email bug-texinfo@gnu.org.
|
||||
|
||||
Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2003,
|
||||
2001, 2002, 2003, 2004 Free Software Foundation.
|
||||
|
||||
Copying and distribution of this file, with or without modification,
|
||||
are permitted in any medium without royalty provided the copyright
|
||||
notice and this notice are preserved.
|
||||
|
||||
* General:
|
||||
- @euro{}.
|
||||
- Support installation of manuals in different languages, along these lines:
|
||||
. support a LINGUAS file or variable saying which subdirs LL in the
|
||||
source to descend into (under doc/).
|
||||
. within each subdir LL, install the info files into $infodir/LL,
|
||||
and run install-info on $infodir/LL/dir.
|
||||
. info (both emacs and standalone) should read $infodir/$LANG/dir
|
||||
as the first dir file, and likewise read info files first from
|
||||
$infodir/$LANG, before falling back to $infodir.
|
||||
. consider ways to avoid installing images in both places.
|
||||
In fact, images probably need to be installed in a subdir
|
||||
$infodir/MANUAL/ in the first place, to avoid conflicts of having
|
||||
the same image name in different manuals.
|
||||
For a test case, see texinfo cvs, with its one translated manual
|
||||
(info-fr.texi).
|
||||
From Wojciech Polak.
|
||||
- Monitor and improve the dir categories in existing manuals,
|
||||
following the Free Software Directory categories. Much mail to
|
||||
developers has already been sent, what's needed now is to check new
|
||||
releases and make sure they are using the right categories.
|
||||
See the util/dir-example in the Texinfo distribution for our current
|
||||
recommended categories.
|
||||
For background, see the thread (which discusses a lot of other
|
||||
issues too) at
|
||||
http://mail.gnu.org/pipermail/emacs-devel/2002-10/msg00011.html,
|
||||
especially
|
||||
http://mail.gnu.org/archive/html/emacs-devel/2002-10/msg00090.html
|
||||
http://mail.gnu.org/archive/html/emacs-devel/2002-10/msg00137.html
|
||||
- Get Info declared as a MIME Content-Type.
|
||||
- Likewise the `info:' URI scheme; a library consortium has proposed a
|
||||
completely different purpose for the URI scheme, but I don't know
|
||||
how to send comments, despite it being a "request for comments". Sigh.
|
||||
There is mail about this in the bug-texinfo archives:
|
||||
http://mail.gnu.org/archive/html/bug-texinfo/2003-09/msg00086.html
|
||||
- Support compressed image files.
|
||||
- Support reference card creation, perhaps by only paying attention to
|
||||
sectioning and @def... commands.
|
||||
- Allow @end (and other?) commands to be indented in the source.
|
||||
- Test for memory leaks, e.g., with valgrind:
|
||||
http://developer.kde.org/~sewardj/
|
||||
- Extend and improve the tests.
|
||||
|
||||
* Language:
|
||||
- @else for the @if... conditionals.
|
||||
- @xindexterm [def] primary [,secondary [,tertiary]] or some such?
|
||||
- Allow subitems and `see' and `see also' in indices.
|
||||
- multicolumn * width to take up `the rest'.
|
||||
- another table command to take N succeeding items and split them
|
||||
into M columns (see eplain).
|
||||
- support bibliographies with BibTeX (see web2c/doc for kludge prototype).
|
||||
- @flushboth to combine @flushleft and @flushright, for RFC's.
|
||||
- @part sectioning command.
|
||||
- @exercise/@answer command for, e.g., gawk.
|
||||
- Allow @hsep/@vsep at @item, instead of just in template.
|
||||
- Support automatic line numbering of examples.
|
||||
- Better macro syntax.
|
||||
- Better def... command syntax.
|
||||
- Allow : in node names for info files, for names like
|
||||
`class::method'. Likewise index entries. A quoting mechanism such
|
||||
as surrounding node names with SPACE BACKSPACE is probably the best
|
||||
solution, although this is an incompatible change to Info format, sigh.
|
||||
- Glossary/general definition support (dumas msg 28 Nov 2003 17:09:57 +0100).
|
||||
- Add support for other Latin 9 (and Latin 2 and Latin 1) characters.
|
||||
|
||||
* Makeinfo:
|
||||
- Translation of "Appendix" etc. should depend on @doclang not $LANG.
|
||||
- Try directory of main source file.
|
||||
- Make makeinfo -E just do macro expansion, avoiding all error checks.
|
||||
That way, texi2dvi could run makeinfo --iftex -E.
|
||||
- A detexinfo program, like detex or delatex. This command would
|
||||
strip all the texinfo commands out, and would be used as a filter on
|
||||
the way to a speller. An option would be to NOT strip comments out.
|
||||
makeinfo --no-headers comes close.
|
||||
- If node name contains an @ command, complain explicitly.
|
||||
- Use @documentlanguage instead of LANG for many translations.
|
||||
- HTML: split output by chapter to improve context, per Akim.
|
||||
Generate dummy files for all nodes for the sake of cross-references.
|
||||
- HTML: support thumbnails.
|
||||
- HTML: make images of math, maybe.
|
||||
- HTML: allow settable background color, table colors and spacing,
|
||||
<head> meta tags, etc. A la http://texi2html.cvshome.org. In fact:
|
||||
- HTML: have a library of different CSS styles.
|
||||
http://mail.gnu.org/archive/html/bug-texinfo/2004-01/msg00025.html
|
||||
- XML: cannot be loaded directly in a browser; why not?
|
||||
- Docbook: € and other entities do not work; does anything work?
|
||||
- Rewrite completely to simplify generation of different formats.
|
||||
|
||||
* TeX:
|
||||
- Use @ as the escape character, and Texinfo syntax generally, in the
|
||||
table of contents and index files. Eliminate all the crazy
|
||||
multiple redefinitions of every Texinfo command in different contexts.
|
||||
- Support input in any encoding and language, via ec or Latin Modern fonts.
|
||||
- Reasonable way to change fonts from the default (some work has been
|
||||
done), to allow for PostScript fonts, for example.
|
||||
- @multitable: handle @hsep and @vsep.
|
||||
- @multitable: repeat table headings if multiple pages long.
|
||||
- @multitable: support a heading line concept (<thead> in HTML).
|
||||
- Introduce new command to change \bindingoffset.
|
||||
- How about using latex2html to produce HTML?
|
||||
- Table of contents gets misaligned if there are 10 or more [sub]sections.
|
||||
- Use url.sty (or something) to allow linebreak of url's.
|
||||
- Include hyperlink \special's in the DVI output for xdvi, etc.
|
||||
- PDF: make each letter of the index (A, B, ...) a section in the TOC.
|
||||
From Carsten Dominik <dominik@astro.uva.nl>.
|
||||
|
||||
* Doc:
|
||||
- Include a complete functional summary, as in a reference card, in
|
||||
the manual.
|
||||
- Improve the manuals, especially for makeinfo, standalone info, etc.
|
||||
- new section on doing dedication pages. See gawk.texi
|
||||
for an example of doing it in both the tex and info versions.
|
||||
|
||||
* Info:
|
||||
- Regular expression search.
|
||||
- Full-text search across all info files installed on the system.
|
||||
- Support character sets other than ISO Latin 1.
|
||||
- Perhaps comply with LANGUAGE setting on a per-node basis, to allow
|
||||
incremental translation of Texinfo files.
|
||||
- Search all nodes of dir file at startup, then can have
|
||||
INFO-DIR-SEPARATE-GROUPS and other such.
|
||||
- Better dir file merging.
|
||||
- Global dir file (as in /etc/conf/dir) and texinfo config file
|
||||
specifying which info directories to search. From Dale Mellor.
|
||||
http://mail.gnu.org/mailman/private/gnu-prog-discuss/2003q4/000439.html
|
||||
- Steal interface ideas from Lynx: number links, use color, etc.
|
||||
Perhaps code from the pinfo viewer can be reused:
|
||||
http://zeus.polsl.gliwice.pl/~pborys/.
|
||||
- More sample .infokey files, so people can choose without writing their own.
|
||||
- q within help should quit help like C-x 0.
|
||||
- Incorporate an X-based viewer, perhaps saxinfo or tkinfo
|
||||
http://www.math.ucsb.edu/~boldt/tkinfo/
|
||||
- Make "info foo bar" search for bar in foo's index(es) if no menu match.
|
||||
- Handle M-n, C-u m, and C-u g like Emacs Info (opening new windows).
|
||||
- Write technical definition of Info format.
|
||||
|
||||
* install-info:
|
||||
- be able to copy the info file to compile-time $infodir, to
|
||||
simplify by-hand installation.
|
||||
- also support installing HTML files, etc., along with subsidiary
|
||||
@image (or other) files. In subdirs. Or something.
|
||||
- support info dir entries for other than the current info file name;
|
||||
see comments in menu_item_equal.
|
||||
- merge features with Debian install-info, so we can have one program.
|
||||
|
||||
* texindex:
|
||||
- read source file (specified by new option) for @documentlanguage
|
||||
and/or @documentencoding, and change the sorting appropriately.
|
||||
From: Wojciech Polak, 26 Apr 2003 11:30:59 +0200.
|
||||
|
||||
* Distribution:
|
||||
- generate txi-??.tex from .po's to make translators' jobs easier.
|
||||
From Akim and Karl E.
|
||||
|
||||
Ideas that will not be implemented:
|
||||
- Process Texinfo files directly instead of converting to Info:
|
||||
ftp://ftp.cs.berkeley.edu/ucb/people/phelps/tcltk/tkman.tar.Z, which
|
||||
uses Tcl/Tk 8.0 from ftp.smli.com in the /pub/tcl directory.
|
||||
From: phelps@ecstasy.CS.Berkeley.EDU (Tom Phelps)
|
||||
[This has the disadvantage of needing to be updated when the
|
||||
Texinfo language changes, so don't.]
|
||||
|
||||
- Call Ghostscript to get ASCII/jpg output for the @image command.
|
||||
[makeinfo should not try to be make, or assume it knows how the user
|
||||
wants to generate images. Too many different methods are possible.]
|
||||
|
||||
- Change bars. This is difficult or impossible in TeX,
|
||||
unfortunately. To do it right requires device driver support.
|
||||
wdiff or ediff may be all we can do. Merely specifying what should be
|
||||
changed is not obvious.
|
1090
external/gpl2/texinfo/dist/aclocal.m4
vendored
Normal file
1090
external/gpl2/texinfo/dist/aclocal.m4
vendored
Normal file
File diff suppressed because it is too large
Load Diff
1453
external/gpl2/texinfo/dist/config.guess
vendored
Normal file
1453
external/gpl2/texinfo/dist/config.guess
vendored
Normal file
File diff suppressed because it is too large
Load Diff
420
external/gpl2/texinfo/dist/config.in
vendored
Normal file
420
external/gpl2/texinfo/dist/config.in
vendored
Normal file
@ -0,0 +1,420 @@
|
||||
/* config.in. Generated from configure.ac by autoheader. */
|
||||
|
||||
/* Define to one of `_getb67', `GETB67', `getb67' for Cray-2 and Cray-YMP
|
||||
systems. This function is required for `alloca.c' support on those systems.
|
||||
*/
|
||||
#undef CRAY_STACKSEG_END
|
||||
|
||||
/* Define to 1 if using `alloca.c'. */
|
||||
#undef C_ALLOCA
|
||||
|
||||
/* Define to 1 if translation of program messages to the user's native
|
||||
language is requested. */
|
||||
#undef ENABLE_NLS
|
||||
|
||||
/* Define to 1 if `TIOCGWINSZ' requires <sys/ioctl.h>. */
|
||||
#undef GWINSZ_IN_SYS_IOCTL
|
||||
|
||||
/* Define to 1 if you have `alloca', as a function or macro. */
|
||||
#undef HAVE_ALLOCA
|
||||
|
||||
/* Define to 1 if you have <alloca.h> and it should be used (not on Ultrix).
|
||||
*/
|
||||
#undef HAVE_ALLOCA_H
|
||||
|
||||
/* Define to 1 if you have the <argz.h> header file. */
|
||||
#undef HAVE_ARGZ_H
|
||||
|
||||
/* Define to 1 if you have the `asprintf' function. */
|
||||
#undef HAVE_ASPRINTF
|
||||
|
||||
/* Define to 1 if you have the `bzero' function. */
|
||||
#undef HAVE_BZERO
|
||||
|
||||
/* Define if the GNU dcgettext() function is already present or preinstalled.
|
||||
*/
|
||||
#undef HAVE_DCGETTEXT
|
||||
|
||||
/* Define to 1 if you have the declaration of `feof_unlocked', and to 0 if you
|
||||
don't. */
|
||||
#undef HAVE_DECL_FEOF_UNLOCKED
|
||||
|
||||
/* Define to 1 if you have the declaration of `fgets_unlocked', and to 0 if
|
||||
you don't. */
|
||||
#undef HAVE_DECL_FGETS_UNLOCKED
|
||||
|
||||
/* Define to 1 if you have the declaration of `getc_unlocked', and to 0 if you
|
||||
don't. */
|
||||
#undef HAVE_DECL_GETC_UNLOCKED
|
||||
|
||||
/* Define to 1 if you have the declaration of `getenv', and to 0 if you don't.
|
||||
*/
|
||||
#undef HAVE_DECL_GETENV
|
||||
|
||||
/* Define to 1 if you have the declaration of `memchr', and to 0 if you don't.
|
||||
*/
|
||||
#undef HAVE_DECL_MEMCHR
|
||||
|
||||
/* Define to 1 if you have the declaration of `strcoll', and to 0 if you
|
||||
don't. */
|
||||
#undef HAVE_DECL_STRCOLL
|
||||
|
||||
/* Define to 1 if you have the declaration of `strerror', and to 0 if you
|
||||
don't. */
|
||||
#undef HAVE_DECL_STRERROR
|
||||
|
||||
/* Define to 1 if you have the declaration of `_snprintf', and to 0 if you
|
||||
don't. */
|
||||
#undef HAVE_DECL__SNPRINTF
|
||||
|
||||
/* Define to 1 if you have the declaration of `_snwprintf', and to 0 if you
|
||||
don't. */
|
||||
#undef HAVE_DECL__SNWPRINTF
|
||||
|
||||
/* Define to 1 if you don't have `vprintf' but do have `_doprnt.' */
|
||||
#undef HAVE_DOPRNT
|
||||
|
||||
/* Define to 1 if you have the <fcntl.h> header file. */
|
||||
#undef HAVE_FCNTL_H
|
||||
|
||||
/* Define to 1 if you have the `fwprintf' function. */
|
||||
#undef HAVE_FWPRINTF
|
||||
|
||||
/* Define to 1 if you have the `getcwd' function. */
|
||||
#undef HAVE_GETCWD
|
||||
|
||||
/* Define to 1 if you have the `getegid' function. */
|
||||
#undef HAVE_GETEGID
|
||||
|
||||
/* Define to 1 if you have the `geteuid' function. */
|
||||
#undef HAVE_GETEUID
|
||||
|
||||
/* Define to 1 if you have the `getgid' function. */
|
||||
#undef HAVE_GETGID
|
||||
|
||||
/* Define to 1 if you have the `getpagesize' function. */
|
||||
#undef HAVE_GETPAGESIZE
|
||||
|
||||
/* Define if the GNU gettext() function is already present or preinstalled. */
|
||||
#undef HAVE_GETTEXT
|
||||
|
||||
/* Define to 1 if you have the `gettimeofday' function. */
|
||||
#undef HAVE_GETTIMEOFDAY
|
||||
|
||||
/* Define to 1 if you have the `getuid' function. */
|
||||
#undef HAVE_GETUID
|
||||
|
||||
/* Define if you have the iconv() function. */
|
||||
#undef HAVE_ICONV
|
||||
|
||||
/* Define if you have the 'intmax_t' type in <stdint.h> or <inttypes.h>. */
|
||||
#undef HAVE_INTMAX_T
|
||||
|
||||
/* Define if <inttypes.h> exists and doesn't clash with <sys/types.h>. */
|
||||
#undef HAVE_INTTYPES_H
|
||||
|
||||
/* Define if <inttypes.h> exists, doesn't clash with <sys/types.h>, and
|
||||
declares uintmax_t. */
|
||||
#undef HAVE_INTTYPES_H_WITH_UINTMAX
|
||||
|
||||
/* Define to 1 if you have the <io.h> header file. */
|
||||
#undef HAVE_IO_H
|
||||
|
||||
/* Define if you have <langinfo.h> and nl_langinfo(CODESET). */
|
||||
#undef HAVE_LANGINFO_CODESET
|
||||
|
||||
/* Define if your <locale.h> file defines LC_MESSAGES. */
|
||||
#undef HAVE_LC_MESSAGES
|
||||
|
||||
/* Define to 1 if you have the `bsd' library (-lbsd). */
|
||||
#undef HAVE_LIBBSD
|
||||
|
||||
/* Define to 1 if you have the <limits.h> header file. */
|
||||
#undef HAVE_LIMITS_H
|
||||
|
||||
/* Define to 1 if you have the <locale.h> header file. */
|
||||
#undef HAVE_LOCALE_H
|
||||
|
||||
/* Define if you have the 'long double' type. */
|
||||
#undef HAVE_LONG_DOUBLE
|
||||
|
||||
/* Define if you have the 'long long' type. */
|
||||
#undef HAVE_LONG_LONG
|
||||
|
||||
/* Define to 1 if you have the <malloc.h> header file. */
|
||||
#undef HAVE_MALLOC_H
|
||||
|
||||
/* Define to 1 if you have the `memcpy' function. */
|
||||
#undef HAVE_MEMCPY
|
||||
|
||||
/* Define to 1 if you have the `memmove' function. */
|
||||
#undef HAVE_MEMMOVE
|
||||
|
||||
/* Define to 1 if you have the <memory.h> header file. */
|
||||
#undef HAVE_MEMORY_H
|
||||
|
||||
/* Define to 1 if you have the `mempcpy' function. */
|
||||
#undef HAVE_MEMPCPY
|
||||
|
||||
/* Define to 1 if you have the `memset' function. */
|
||||
#undef HAVE_MEMSET
|
||||
|
||||
/* Define to 1 if you have the `mkstemp' function. */
|
||||
#undef HAVE_MKSTEMP
|
||||
|
||||
/* Define to 1 if you have a working `mmap' system call. */
|
||||
#undef HAVE_MMAP
|
||||
|
||||
/* Define to 1 if you have the `munmap' function. */
|
||||
#undef HAVE_MUNMAP
|
||||
|
||||
/* Define to 1 if you have the <ncurses/termcap.h> header file. */
|
||||
#undef HAVE_NCURSES_TERMCAP_H
|
||||
|
||||
/* Define to 1 if you have the <nl_types.h> header file. */
|
||||
#undef HAVE_NL_TYPES_H
|
||||
|
||||
/* Define if your printf() function supports format strings with positions. */
|
||||
#undef HAVE_POSIX_PRINTF
|
||||
|
||||
/* Define to 1 if you have the `putenv' function. */
|
||||
#undef HAVE_PUTENV
|
||||
|
||||
/* Define to 1 if you have the <pwd.h> header file. */
|
||||
#undef HAVE_PWD_H
|
||||
|
||||
/* Define to 1 if you have the `setenv' function. */
|
||||
#undef HAVE_SETENV
|
||||
|
||||
/* Define to 1 if you have the `setlocale' function. */
|
||||
#undef HAVE_SETLOCALE
|
||||
|
||||
/* Define to 1 if you have the `setvbuf' function. */
|
||||
#undef HAVE_SETVBUF
|
||||
|
||||
/* Define to 1 if you have the `sigaction' function. */
|
||||
#undef HAVE_SIGACTION
|
||||
|
||||
/* Define to 1 if you have the `sigprocmask' function. */
|
||||
#undef HAVE_SIGPROCMASK
|
||||
|
||||
/* Define to 1 if you have the `sigsetmask' function. */
|
||||
#undef HAVE_SIGSETMASK
|
||||
|
||||
/* Define to 1 if you have the `snprintf' function. */
|
||||
#undef HAVE_SNPRINTF
|
||||
|
||||
/* Define to 1 if you have the <stddef.h> header file. */
|
||||
#undef HAVE_STDDEF_H
|
||||
|
||||
/* Define to 1 if you have the <stdint.h> header file. */
|
||||
#undef HAVE_STDINT_H
|
||||
|
||||
/* Define if <stdint.h> exists, doesn't clash with <sys/types.h>, and declares
|
||||
uintmax_t. */
|
||||
#undef HAVE_STDINT_H_WITH_UINTMAX
|
||||
|
||||
/* Define to 1 if you have the <stdlib.h> header file. */
|
||||
#undef HAVE_STDLIB_H
|
||||
|
||||
/* Define to 1 if you have the `stpcpy' function. */
|
||||
#undef HAVE_STPCPY
|
||||
|
||||
/* Define to 1 if you have the `strcasecmp' function. */
|
||||
#undef HAVE_STRCASECMP
|
||||
|
||||
/* Define to 1 if you have the `strchr' function. */
|
||||
#undef HAVE_STRCHR
|
||||
|
||||
/* Define to 1 if you have the `strcoll' function and it is properly defined.
|
||||
*/
|
||||
#undef HAVE_STRCOLL
|
||||
|
||||
/* Define to 1 if you have the `strdup' function. */
|
||||
#undef HAVE_STRDUP
|
||||
|
||||
/* Define to 1 if you have the `strerror' function. */
|
||||
#undef HAVE_STRERROR
|
||||
|
||||
/* Define to 1 if you have the <strings.h> header file. */
|
||||
#undef HAVE_STRINGS_H
|
||||
|
||||
/* Define to 1 if you have the <string.h> header file. */
|
||||
#undef HAVE_STRING_H
|
||||
|
||||
/* Define to 1 if you have the `strncasecmp' function. */
|
||||
#undef HAVE_STRNCASECMP
|
||||
|
||||
/* Define to 1 if you have the `strtoul' function. */
|
||||
#undef HAVE_STRTOUL
|
||||
|
||||
/* Define to 1 if you have the <sys/fcntl.h> header file. */
|
||||
#undef HAVE_SYS_FCNTL_H
|
||||
|
||||
/* Define to 1 if you have the <sys/file.h> header file. */
|
||||
#undef HAVE_SYS_FILE_H
|
||||
|
||||
/* Define to 1 if you have the <sys/param.h> header file. */
|
||||
#undef HAVE_SYS_PARAM_H
|
||||
|
||||
/* Define to 1 if you have the <sys/ptem.h> header file. */
|
||||
#undef HAVE_SYS_PTEM_H
|
||||
|
||||
/* Define to 1 if you have the <sys/stat.h> header file. */
|
||||
#undef HAVE_SYS_STAT_H
|
||||
|
||||
/* Define to 1 if you have the <sys/stream.h> header file. */
|
||||
#undef HAVE_SYS_STREAM_H
|
||||
|
||||
/* Define to 1 if you have the <sys/time.h> header file. */
|
||||
#undef HAVE_SYS_TIME_H
|
||||
|
||||
/* Define to 1 if you have the <sys/ttold.h> header file. */
|
||||
#undef HAVE_SYS_TTOLD_H
|
||||
|
||||
/* Define to 1 if you have the <sys/types.h> header file. */
|
||||
#undef HAVE_SYS_TYPES_H
|
||||
|
||||
/* Define to 1 if you have the <sys/wait.h> header file. */
|
||||
#undef HAVE_SYS_WAIT_H
|
||||
|
||||
/* Define to 1 if you have the <termcap.h> header file. */
|
||||
#undef HAVE_TERMCAP_H
|
||||
|
||||
/* Define to 1 if you have the <termios.h> header file. */
|
||||
#undef HAVE_TERMIOS_H
|
||||
|
||||
/* Define to 1 if you have the <termio.h> header file. */
|
||||
#undef HAVE_TERMIO_H
|
||||
|
||||
/* Define to 1 if you have the `tsearch' function. */
|
||||
#undef HAVE_TSEARCH
|
||||
|
||||
/* Define if you have the 'uintmax_t' type in <stdint.h> or <inttypes.h>. */
|
||||
#undef HAVE_UINTMAX_T
|
||||
|
||||
/* Define to 1 if you have the <unistd.h> header file. */
|
||||
#undef HAVE_UNISTD_H
|
||||
|
||||
/* Define if you have the 'unsigned long long' type. */
|
||||
#undef HAVE_UNSIGNED_LONG_LONG
|
||||
|
||||
/* Define to 1 if you have the `vprintf' function. */
|
||||
#undef HAVE_VPRINTF
|
||||
|
||||
/* Define if you have the 'wchar_t' type. */
|
||||
#undef HAVE_WCHAR_T
|
||||
|
||||
/* Define to 1 if you have the `wcslen' function. */
|
||||
#undef HAVE_WCSLEN
|
||||
|
||||
/* Define if you have the 'wint_t' type. */
|
||||
#undef HAVE_WINT_T
|
||||
|
||||
/* Define to 1 if you have the `__argz_count' function. */
|
||||
#undef HAVE___ARGZ_COUNT
|
||||
|
||||
/* Define to 1 if you have the `__argz_next' function. */
|
||||
#undef HAVE___ARGZ_NEXT
|
||||
|
||||
/* Define to 1 if you have the `__argz_stringify' function. */
|
||||
#undef HAVE___ARGZ_STRINGIFY
|
||||
|
||||
/* Define to 1 if you have the `__fsetlocking' function. */
|
||||
#undef HAVE___FSETLOCKING
|
||||
|
||||
/* Define to 1 if you have the `__secure_getenv' function. */
|
||||
#undef HAVE___SECURE_GETENV
|
||||
|
||||
/* Define as const if the declaration of iconv() needs const. */
|
||||
#undef ICONV_CONST
|
||||
|
||||
/* Define if integer division by zero raises signal SIGFPE. */
|
||||
#undef INTDIV0_RAISES_SIGFPE
|
||||
|
||||
/* Name of package */
|
||||
#undef PACKAGE
|
||||
|
||||
/* Define to the address where bug reports for this package should be sent. */
|
||||
#undef PACKAGE_BUGREPORT
|
||||
|
||||
/* Define to the full name of this package. */
|
||||
#undef PACKAGE_NAME
|
||||
|
||||
/* Define to the full name and version of this package. */
|
||||
#undef PACKAGE_STRING
|
||||
|
||||
/* Define to the one symbol short name of this package. */
|
||||
#undef PACKAGE_TARNAME
|
||||
|
||||
/* Define to the version of this package. */
|
||||
#undef PACKAGE_VERSION
|
||||
|
||||
/* Define if <inttypes.h> exists and defines unusable PRI* macros. */
|
||||
#undef PRI_MACROS_BROKEN
|
||||
|
||||
/* Define as the return type of signal handlers (`int' or `void'). */
|
||||
#undef RETSIGTYPE
|
||||
|
||||
/* Define as the maximum value of type 'size_t', if the system doesn't define
|
||||
it. */
|
||||
#undef SIZE_MAX
|
||||
|
||||
/* If using the C implementation of alloca, define if you know the
|
||||
direction of stack growth for your system; otherwise it will be
|
||||
automatically deduced at run-time.
|
||||
STACK_DIRECTION > 0 => grows toward higher addresses
|
||||
STACK_DIRECTION < 0 => grows toward lower addresses
|
||||
STACK_DIRECTION = 0 => direction of growth unknown */
|
||||
#undef STACK_DIRECTION
|
||||
|
||||
/* Define to 1 if the `S_IS*' macros in <sys/stat.h> do not work properly. */
|
||||
#undef STAT_MACROS_BROKEN
|
||||
|
||||
/* Define to 1 if you have the ANSI C header files. */
|
||||
#undef STDC_HEADERS
|
||||
|
||||
/* Define to 1 if your <sys/time.h> declares `struct tm'. */
|
||||
#undef TM_IN_SYS_TIME
|
||||
|
||||
/* Version number of package */
|
||||
#undef VERSION
|
||||
|
||||
/* Define to 1 if on MINIX. */
|
||||
#undef _MINIX
|
||||
|
||||
/* Define to 2 if the system does not provide POSIX.1 features except with
|
||||
this defined. */
|
||||
#undef _POSIX_1_SOURCE
|
||||
|
||||
/* Define to 1 if you need to in order for `stat' and other things to work. */
|
||||
#undef _POSIX_SOURCE
|
||||
|
||||
/* Define to empty if `const' does not conform to ANSI C. */
|
||||
#undef const
|
||||
|
||||
/* Define to `__inline__' or `__inline' if that's what the C compiler
|
||||
calls it, or to nothing if 'inline' is not supported under any name. */
|
||||
#ifndef __cplusplus
|
||||
#undef inline
|
||||
#endif
|
||||
|
||||
/* Define to rpl_mkstemp if the replacement function should be used. */
|
||||
#undef mkstemp
|
||||
|
||||
/* Define to `long' if <sys/types.h> does not define. */
|
||||
#undef off_t
|
||||
|
||||
/* Define as the type of the result of subtracting two pointers, if the system
|
||||
doesn't define it. */
|
||||
#undef ptrdiff_t
|
||||
|
||||
/* Define to empty if the C compiler doesn't support this keyword. */
|
||||
#undef signed
|
||||
|
||||
/* Define to `unsigned' if <sys/types.h> does not define. */
|
||||
#undef size_t
|
||||
|
||||
/* Define to unsigned long or unsigned long long if <stdint.h> and
|
||||
<inttypes.h> don't define. */
|
||||
#undef uintmax_t
|
548
external/gpl2/texinfo/dist/config.rpath
vendored
Executable file
548
external/gpl2/texinfo/dist/config.rpath
vendored
Executable file
@ -0,0 +1,548 @@
|
||||
#! /bin/sh
|
||||
# Output a system dependent set of variables, describing how to set the
|
||||
# run time search path of shared libraries in an executable.
|
||||
#
|
||||
# Copyright 1996-2003 Free Software Foundation, Inc.
|
||||
# Taken from GNU libtool, 2001
|
||||
# Originally by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation; either version 2 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful, but
|
||||
# WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
# General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
#
|
||||
# As a special exception to the GNU General Public License, if you
|
||||
# distribute this file as part of a program that contains a
|
||||
# configuration script generated by Autoconf, you may include it under
|
||||
# the same distribution terms that you use for the rest of that program.
|
||||
#
|
||||
# The first argument passed to this file is the canonical host specification,
|
||||
# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM
|
||||
# or
|
||||
# CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM
|
||||
# The environment variables CC, GCC, LDFLAGS, LD, with_gnu_ld
|
||||
# should be set by the caller.
|
||||
#
|
||||
# The set of defined variables is at the end of this script.
|
||||
|
||||
# Known limitations:
|
||||
# - On IRIX 6.5 with CC="cc", the run time search patch must not be longer
|
||||
# than 256 bytes, otherwise the compiler driver will dump core. The only
|
||||
# known workaround is to choose shorter directory names for the build
|
||||
# directory and/or the installation directory.
|
||||
|
||||
# All known linkers require a `.a' archive for static linking (except M$VC,
|
||||
# which needs '.lib').
|
||||
libext=a
|
||||
shrext=.so
|
||||
|
||||
host="$1"
|
||||
host_cpu=`echo "$host" | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'`
|
||||
host_vendor=`echo "$host" | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'`
|
||||
host_os=`echo "$host" | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'`
|
||||
|
||||
# Code taken from libtool.m4's AC_LIBTOOL_PROG_COMPILER_PIC.
|
||||
|
||||
wl=
|
||||
if test "$GCC" = yes; then
|
||||
wl='-Wl,'
|
||||
else
|
||||
case "$host_os" in
|
||||
aix*)
|
||||
wl='-Wl,'
|
||||
;;
|
||||
mingw* | pw32* | os2*)
|
||||
;;
|
||||
hpux9* | hpux10* | hpux11*)
|
||||
wl='-Wl,'
|
||||
;;
|
||||
irix5* | irix6* | nonstopux*)
|
||||
wl='-Wl,'
|
||||
;;
|
||||
newsos6)
|
||||
;;
|
||||
linux*)
|
||||
case $CC in
|
||||
icc|ecc)
|
||||
wl='-Wl,'
|
||||
;;
|
||||
ccc)
|
||||
wl='-Wl,'
|
||||
;;
|
||||
esac
|
||||
;;
|
||||
osf3* | osf4* | osf5*)
|
||||
wl='-Wl,'
|
||||
;;
|
||||
sco3.2v5*)
|
||||
;;
|
||||
solaris*)
|
||||
wl='-Wl,'
|
||||
;;
|
||||
sunos4*)
|
||||
wl='-Qoption ld '
|
||||
;;
|
||||
sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
|
||||
wl='-Wl,'
|
||||
;;
|
||||
sysv4*MP*)
|
||||
;;
|
||||
uts4*)
|
||||
;;
|
||||
esac
|
||||
fi
|
||||
|
||||
# Code taken from libtool.m4's AC_LIBTOOL_PROG_LD_SHLIBS.
|
||||
|
||||
hardcode_libdir_flag_spec=
|
||||
hardcode_libdir_separator=
|
||||
hardcode_direct=no
|
||||
hardcode_minus_L=no
|
||||
|
||||
case "$host_os" in
|
||||
cygwin* | mingw* | pw32*)
|
||||
# FIXME: the MSVC++ port hasn't been tested in a loooong time
|
||||
# When not using gcc, we currently assume that we are using
|
||||
# Microsoft Visual C++.
|
||||
if test "$GCC" != yes; then
|
||||
with_gnu_ld=no
|
||||
fi
|
||||
;;
|
||||
openbsd*)
|
||||
with_gnu_ld=no
|
||||
;;
|
||||
esac
|
||||
|
||||
ld_shlibs=yes
|
||||
if test "$with_gnu_ld" = yes; then
|
||||
case "$host_os" in
|
||||
aix3* | aix4* | aix5*)
|
||||
# On AIX/PPC, the GNU linker is very broken
|
||||
if test "$host_cpu" != ia64; then
|
||||
ld_shlibs=no
|
||||
fi
|
||||
;;
|
||||
amigaos*)
|
||||
hardcode_libdir_flag_spec='-L$libdir'
|
||||
hardcode_minus_L=yes
|
||||
# Samuel A. Falvo II <kc5tja@dolphin.openprojects.net> reports
|
||||
# that the semantics of dynamic libraries on AmigaOS, at least up
|
||||
# to version 4, is to share data among multiple programs linked
|
||||
# with the same dynamic library. Since this doesn't match the
|
||||
# behavior of shared libraries on other platforms, we can use
|
||||
# them.
|
||||
ld_shlibs=no
|
||||
;;
|
||||
beos*)
|
||||
if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
|
||||
:
|
||||
else
|
||||
ld_shlibs=no
|
||||
fi
|
||||
;;
|
||||
cygwin* | mingw* | pw32*)
|
||||
# hardcode_libdir_flag_spec is actually meaningless, as there is
|
||||
# no search path for DLLs.
|
||||
hardcode_libdir_flag_spec='-L$libdir'
|
||||
if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then
|
||||
:
|
||||
else
|
||||
ld_shlibs=no
|
||||
fi
|
||||
;;
|
||||
netbsd*)
|
||||
;;
|
||||
solaris* | sysv5*)
|
||||
if $LD -v 2>&1 | grep 'BFD 2\.8' > /dev/null; then
|
||||
ld_shlibs=no
|
||||
elif $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
|
||||
:
|
||||
else
|
||||
ld_shlibs=no
|
||||
fi
|
||||
;;
|
||||
sunos4*)
|
||||
hardcode_direct=yes
|
||||
;;
|
||||
*)
|
||||
if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
|
||||
:
|
||||
else
|
||||
ld_shlibs=no
|
||||
fi
|
||||
;;
|
||||
esac
|
||||
if test "$ld_shlibs" = yes; then
|
||||
# Unlike libtool, we use -rpath here, not --rpath, since the documented
|
||||
# option of GNU ld is called -rpath, not --rpath.
|
||||
hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
|
||||
fi
|
||||
else
|
||||
case "$host_os" in
|
||||
aix3*)
|
||||
# Note: this linker hardcodes the directories in LIBPATH if there
|
||||
# are no directories specified by -L.
|
||||
hardcode_minus_L=yes
|
||||
if test "$GCC" = yes; then
|
||||
# Neither direct hardcoding nor static linking is supported with a
|
||||
# broken collect2.
|
||||
hardcode_direct=unsupported
|
||||
fi
|
||||
;;
|
||||
aix4* | aix5*)
|
||||
if test "$host_cpu" = ia64; then
|
||||
# On IA64, the linker does run time linking by default, so we don't
|
||||
# have to do anything special.
|
||||
aix_use_runtimelinking=no
|
||||
else
|
||||
aix_use_runtimelinking=no
|
||||
# Test if we are trying to use run time linking or normal
|
||||
# AIX style linking. If -brtl is somewhere in LDFLAGS, we
|
||||
# need to do runtime linking.
|
||||
case $host_os in aix4.[23]|aix4.[23].*|aix5*)
|
||||
for ld_flag in $LDFLAGS; do
|
||||
if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then
|
||||
aix_use_runtimelinking=yes
|
||||
break
|
||||
fi
|
||||
done
|
||||
esac
|
||||
fi
|
||||
hardcode_direct=yes
|
||||
hardcode_libdir_separator=':'
|
||||
if test "$GCC" = yes; then
|
||||
case $host_os in aix4.[012]|aix4.[012].*)
|
||||
collect2name=`${CC} -print-prog-name=collect2`
|
||||
if test -f "$collect2name" && \
|
||||
strings "$collect2name" | grep resolve_lib_name >/dev/null
|
||||
then
|
||||
# We have reworked collect2
|
||||
hardcode_direct=yes
|
||||
else
|
||||
# We have old collect2
|
||||
hardcode_direct=unsupported
|
||||
hardcode_minus_L=yes
|
||||
hardcode_libdir_flag_spec='-L$libdir'
|
||||
hardcode_libdir_separator=
|
||||
fi
|
||||
esac
|
||||
fi
|
||||
# Begin _LT_AC_SYS_LIBPATH_AIX.
|
||||
echo 'int main () { return 0; }' > conftest.c
|
||||
${CC} ${LDFLAGS} conftest.c -o conftest
|
||||
aix_libpath=`dump -H conftest 2>/dev/null | sed -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; }
|
||||
}'`
|
||||
if test -z "$aix_libpath"; then
|
||||
aix_libpath=`dump -HX64 conftest 2>/dev/null | sed -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; }
|
||||
}'`
|
||||
fi
|
||||
if test -z "$aix_libpath"; then
|
||||
aix_libpath="/usr/lib:/lib"
|
||||
fi
|
||||
rm -f conftest.c conftest
|
||||
# End _LT_AC_SYS_LIBPATH_AIX.
|
||||
if test "$aix_use_runtimelinking" = yes; then
|
||||
hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath"
|
||||
else
|
||||
if test "$host_cpu" = ia64; then
|
||||
hardcode_libdir_flag_spec='${wl}-R $libdir:/usr/lib:/lib'
|
||||
else
|
||||
hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath"
|
||||
fi
|
||||
fi
|
||||
;;
|
||||
amigaos*)
|
||||
hardcode_libdir_flag_spec='-L$libdir'
|
||||
hardcode_minus_L=yes
|
||||
# see comment about different semantics on the GNU ld section
|
||||
ld_shlibs=no
|
||||
;;
|
||||
bsdi4*)
|
||||
;;
|
||||
cygwin* | mingw* | pw32*)
|
||||
# When not using gcc, we currently assume that we are using
|
||||
# Microsoft Visual C++.
|
||||
# hardcode_libdir_flag_spec is actually meaningless, as there is
|
||||
# no search path for DLLs.
|
||||
hardcode_libdir_flag_spec=' '
|
||||
libext=lib
|
||||
;;
|
||||
darwin* | rhapsody*)
|
||||
if $CC -v 2>&1 | grep 'Apple' >/dev/null ; then
|
||||
hardcode_direct=no
|
||||
fi
|
||||
;;
|
||||
dgux*)
|
||||
hardcode_libdir_flag_spec='-L$libdir'
|
||||
;;
|
||||
freebsd1*)
|
||||
ld_shlibs=no
|
||||
;;
|
||||
freebsd2.2*)
|
||||
hardcode_libdir_flag_spec='-R$libdir'
|
||||
hardcode_direct=yes
|
||||
;;
|
||||
freebsd2*)
|
||||
hardcode_direct=yes
|
||||
hardcode_minus_L=yes
|
||||
;;
|
||||
freebsd*)
|
||||
hardcode_libdir_flag_spec='-R$libdir'
|
||||
hardcode_direct=yes
|
||||
;;
|
||||
hpux9*)
|
||||
hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir'
|
||||
hardcode_libdir_separator=:
|
||||
hardcode_direct=yes
|
||||
# hardcode_minus_L: Not really in the search PATH,
|
||||
# but as the default location of the library.
|
||||
hardcode_minus_L=yes
|
||||
;;
|
||||
hpux10* | hpux11*)
|
||||
if test "$with_gnu_ld" = no; then
|
||||
case "$host_cpu" in
|
||||
hppa*64*)
|
||||
hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir'
|
||||
hardcode_libdir_separator=:
|
||||
hardcode_direct=no
|
||||
;;
|
||||
ia64*)
|
||||
hardcode_libdir_flag_spec='-L$libdir'
|
||||
hardcode_direct=no
|
||||
# hardcode_minus_L: Not really in the search PATH,
|
||||
# but as the default location of the library.
|
||||
hardcode_minus_L=yes
|
||||
;;
|
||||
*)
|
||||
hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir'
|
||||
hardcode_libdir_separator=:
|
||||
hardcode_direct=yes
|
||||
# hardcode_minus_L: Not really in the search PATH,
|
||||
# but as the default location of the library.
|
||||
hardcode_minus_L=yes
|
||||
;;
|
||||
esac
|
||||
fi
|
||||
;;
|
||||
irix5* | irix6* | nonstopux*)
|
||||
hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
|
||||
hardcode_libdir_separator=:
|
||||
;;
|
||||
netbsd*)
|
||||
hardcode_libdir_flag_spec='-R$libdir'
|
||||
hardcode_direct=yes
|
||||
;;
|
||||
newsos6)
|
||||
hardcode_direct=yes
|
||||
hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
|
||||
hardcode_libdir_separator=:
|
||||
;;
|
||||
openbsd*)
|
||||
hardcode_direct=yes
|
||||
if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
|
||||
hardcode_libdir_flag_spec='${wl}-rpath,$libdir'
|
||||
else
|
||||
case "$host_os" in
|
||||
openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*)
|
||||
hardcode_libdir_flag_spec='-R$libdir'
|
||||
;;
|
||||
*)
|
||||
hardcode_libdir_flag_spec='${wl}-rpath,$libdir'
|
||||
;;
|
||||
esac
|
||||
fi
|
||||
;;
|
||||
os2*)
|
||||
hardcode_libdir_flag_spec='-L$libdir'
|
||||
hardcode_minus_L=yes
|
||||
;;
|
||||
osf3*)
|
||||
hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
|
||||
hardcode_libdir_separator=:
|
||||
;;
|
||||
osf4* | osf5*)
|
||||
if test "$GCC" = yes; then
|
||||
hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
|
||||
else
|
||||
# Both cc and cxx compiler support -rpath directly
|
||||
hardcode_libdir_flag_spec='-rpath $libdir'
|
||||
fi
|
||||
hardcode_libdir_separator=:
|
||||
;;
|
||||
sco3.2v5*)
|
||||
;;
|
||||
solaris*)
|
||||
hardcode_libdir_flag_spec='-R$libdir'
|
||||
;;
|
||||
sunos4*)
|
||||
hardcode_libdir_flag_spec='-L$libdir'
|
||||
hardcode_direct=yes
|
||||
hardcode_minus_L=yes
|
||||
;;
|
||||
sysv4)
|
||||
case $host_vendor in
|
||||
sni)
|
||||
hardcode_direct=yes # is this really true???
|
||||
;;
|
||||
siemens)
|
||||
hardcode_direct=no
|
||||
;;
|
||||
motorola)
|
||||
hardcode_direct=no #Motorola manual says yes, but my tests say they lie
|
||||
;;
|
||||
esac
|
||||
;;
|
||||
sysv4.3*)
|
||||
;;
|
||||
sysv4*MP*)
|
||||
if test -d /usr/nec; then
|
||||
ld_shlibs=yes
|
||||
fi
|
||||
;;
|
||||
sysv4.2uw2*)
|
||||
hardcode_direct=yes
|
||||
hardcode_minus_L=no
|
||||
;;
|
||||
sysv5OpenUNIX8* | sysv5UnixWare7* | sysv5uw[78]* | unixware7*)
|
||||
;;
|
||||
sysv5*)
|
||||
hardcode_libdir_flag_spec=
|
||||
;;
|
||||
uts4*)
|
||||
hardcode_libdir_flag_spec='-L$libdir'
|
||||
;;
|
||||
*)
|
||||
ld_shlibs=no
|
||||
;;
|
||||
esac
|
||||
fi
|
||||
|
||||
# Check dynamic linker characteristics
|
||||
# Code taken from libtool.m4's AC_LIBTOOL_SYS_DYNAMIC_LINKER.
|
||||
libname_spec='lib$name'
|
||||
case "$host_os" in
|
||||
aix3*)
|
||||
;;
|
||||
aix4* | aix5*)
|
||||
;;
|
||||
amigaos*)
|
||||
;;
|
||||
beos*)
|
||||
;;
|
||||
bsdi4*)
|
||||
;;
|
||||
cygwin* | mingw* | pw32*)
|
||||
shrext=.dll
|
||||
;;
|
||||
darwin* | rhapsody*)
|
||||
shrext=.dylib
|
||||
;;
|
||||
dgux*)
|
||||
;;
|
||||
freebsd1*)
|
||||
;;
|
||||
freebsd*)
|
||||
;;
|
||||
gnu*)
|
||||
;;
|
||||
hpux9* | hpux10* | hpux11*)
|
||||
case "$host_cpu" in
|
||||
ia64*)
|
||||
shrext=.so
|
||||
;;
|
||||
hppa*64*)
|
||||
shrext=.sl
|
||||
;;
|
||||
*)
|
||||
shrext=.sl
|
||||
;;
|
||||
esac
|
||||
;;
|
||||
irix5* | irix6* | nonstopux*)
|
||||
case "$host_os" in
|
||||
irix5* | nonstopux*)
|
||||
libsuff= shlibsuff=
|
||||
;;
|
||||
*)
|
||||
case $LD in
|
||||
*-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") libsuff= shlibsuff= ;;
|
||||
*-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") libsuff=32 shlibsuff=N32 ;;
|
||||
*-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") libsuff=64 shlibsuff=64 ;;
|
||||
*) libsuff= shlibsuff= ;;
|
||||
esac
|
||||
;;
|
||||
esac
|
||||
;;
|
||||
linux*oldld* | linux*aout* | linux*coff*)
|
||||
;;
|
||||
linux*)
|
||||
;;
|
||||
netbsd*)
|
||||
;;
|
||||
newsos6)
|
||||
;;
|
||||
nto-qnx)
|
||||
;;
|
||||
openbsd*)
|
||||
;;
|
||||
os2*)
|
||||
libname_spec='$name'
|
||||
shrext=.dll
|
||||
;;
|
||||
osf3* | osf4* | osf5*)
|
||||
;;
|
||||
sco3.2v5*)
|
||||
;;
|
||||
solaris*)
|
||||
;;
|
||||
sunos4*)
|
||||
;;
|
||||
sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
|
||||
;;
|
||||
sysv4*MP*)
|
||||
;;
|
||||
uts4*)
|
||||
;;
|
||||
esac
|
||||
|
||||
sed_quote_subst='s/\(["`$\\]\)/\\\1/g'
|
||||
escaped_wl=`echo "X$wl" | sed -e 's/^X//' -e "$sed_quote_subst"`
|
||||
shlibext=`echo "$shrext" | sed -e 's,^\.,,'`
|
||||
escaped_hardcode_libdir_flag_spec=`echo "X$hardcode_libdir_flag_spec" | sed -e 's/^X//' -e "$sed_quote_subst"`
|
||||
|
||||
sed -e 's/^\([a-zA-Z0-9_]*\)=/acl_cv_\1=/' <<EOF
|
||||
|
||||
# How to pass a linker flag through the compiler.
|
||||
wl="$escaped_wl"
|
||||
|
||||
# Static library suffix (normally "a").
|
||||
libext="$libext"
|
||||
|
||||
# Shared library suffix (normally "so").
|
||||
shlibext="$shlibext"
|
||||
|
||||
# Flag to hardcode \$libdir into a binary during linking.
|
||||
# This must work even if \$libdir does not exist.
|
||||
hardcode_libdir_flag_spec="$escaped_hardcode_libdir_flag_spec"
|
||||
|
||||
# Whether we need a single -rpath flag with a separated argument.
|
||||
hardcode_libdir_separator="$hardcode_libdir_separator"
|
||||
|
||||
# Set to yes if using DIR/libNAME.so during linking hardcodes DIR into the
|
||||
# resulting binary.
|
||||
hardcode_direct="$hardcode_direct"
|
||||
|
||||
# Set to yes if using the -LDIR flag during linking hardcodes DIR into the
|
||||
# resulting binary.
|
||||
hardcode_minus_L="$hardcode_minus_L"
|
||||
|
||||
EOF
|
1566
external/gpl2/texinfo/dist/config.sub
vendored
Normal file
1566
external/gpl2/texinfo/dist/config.sub
vendored
Normal file
File diff suppressed because it is too large
Load Diff
14795
external/gpl2/texinfo/dist/configure
vendored
Executable file
14795
external/gpl2/texinfo/dist/configure
vendored
Executable file
File diff suppressed because it is too large
Load Diff
224
external/gpl2/texinfo/dist/configure.ac
vendored
Normal file
224
external/gpl2/texinfo/dist/configure.ac
vendored
Normal file
@ -0,0 +1,224 @@
|
||||
# Process this file with autoconf to produce a configure script.
|
||||
# Id: configure.ac,v 1.50 2004/12/22 13:29:44 karl Exp
|
||||
#
|
||||
# This file is free software; as a special exception the author gives
|
||||
# unlimited permission to copy and/or distribute it, with or without
|
||||
# modifications, as long as this notice is preserved.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful, but
|
||||
# WITHOUT ANY WARRANTY, to the extent permitted by law; without even the
|
||||
# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||
#
|
||||
AC_PREREQ(2.59)# Minimum Autoconf version required.
|
||||
#
|
||||
AC_INIT([GNU Texinfo], [4.8])
|
||||
AC_CONFIG_HEADERS(config.h:config.in)# Keep filename to 8.3 for MS-DOS.
|
||||
AC_CONFIG_SRCDIR([makeinfo/makeinfo.c])
|
||||
AM_INIT_AUTOMAKE([dist-bzip2])
|
||||
|
||||
# When the Texinfo source is imported into other repositories
|
||||
# (NetBSD and TeX Live), timestamps are generally not preserved. This
|
||||
# causes lots of annoyance, so --enable-maintainer-mode. Sorry.
|
||||
AM_MAINTAINER_MODE
|
||||
|
||||
# Checks for programs.
|
||||
AC_PROG_CC
|
||||
AC_PROG_GCC_TRADITIONAL
|
||||
AC_PROG_INSTALL
|
||||
AC_PROG_MAKE_SET
|
||||
AC_PROG_RANLIB
|
||||
AM_MISSING_PROG(HELP2MAN, help2man)
|
||||
|
||||
AC_ISC_POSIX
|
||||
AC_MINIX
|
||||
|
||||
# Needed on sysV68 for sigblock, sigsetmask. But check for it in libc first.
|
||||
AC_CHECK_FUNC(sigblock, , AC_CHECK_LIB(bsd, sigblock))
|
||||
|
||||
# Checks for header files.
|
||||
AC_HEADER_STAT
|
||||
AC_HEADER_STDC
|
||||
AC_CHECK_HEADERS(fcntl.h io.h limits.h pwd.h string.h strings.h \
|
||||
termcap.h termio.h termios.h unistd.h \
|
||||
sys/fcntl.h sys/file.h sys/stream.h sys/time.h sys/ttold.h sys/wait.h)
|
||||
|
||||
# sys/ptem.h requires sys/stream.h for mblk_t on Solaris.
|
||||
AC_CHECK_HEADERS([sys/ptem.h],,,
|
||||
[#if HAVE_SYS_STREAM_H
|
||||
#include <sys/stream.h>
|
||||
#endif
|
||||
])
|
||||
|
||||
AC_SYS_POSIX_TERMIOS
|
||||
AC_HEADER_TIOCGWINSZ
|
||||
|
||||
# Checks for typedefs, structures, and compiler characteristics.
|
||||
AC_TYPE_OFF_T
|
||||
AC_TYPE_SIGNAL
|
||||
AC_C_CONST
|
||||
AC_STRUCT_TM
|
||||
|
||||
# Checks for function declarations.
|
||||
AC_CHECK_DECLS([memchr, strcoll, strerror])
|
||||
|
||||
# Checks for library functions.
|
||||
AC_FUNC_ALLOCA
|
||||
AC_FUNC_STRCOLL
|
||||
AC_FUNC_VPRINTF
|
||||
# in theory only pre-sysvr3 systems needed this and it's not likely
|
||||
# that anyone compiling new texinfo still has such a thing? we'll see.
|
||||
# AC_FUNC_SETVBUF_REVERSED
|
||||
AC_CHECK_FUNCS(bzero getcwd memset setvbuf sigaction sigprocmask \
|
||||
sigsetmask strchr)
|
||||
AC_REPLACE_FUNCS(memcpy memmove strdup strerror)
|
||||
|
||||
# strcasecmp and strncasecmp, gnulib-style.
|
||||
gl_STRCASE
|
||||
|
||||
# We want to recognize djgpp to avoid the useless warning about no
|
||||
# term library.
|
||||
AC_CANONICAL_BUILD
|
||||
|
||||
# We need to run some of our own binaries, most notably makedoc, but as
|
||||
# long as we have this process, we also use our own makeinfo and
|
||||
# install-info.
|
||||
#
|
||||
# This means that if we are cross compiling, we have to configure the
|
||||
# package twice: once with the native compiler (this is done in a
|
||||
# subdirectory $native_tools), and once with the cross compiler.
|
||||
# The former is invoked automatically here, with --host=$build.
|
||||
# $native_tools is also added to SUBDIRS in the main Makefile.am,
|
||||
# so that make compiles the native tools first.
|
||||
#
|
||||
if test "$cross_compiling" = no; then
|
||||
native_tools=
|
||||
else
|
||||
native_tools=tools
|
||||
test -d "$native_tools" || mkdir "$native_tools"
|
||||
confdir=`(cd "$srcdir";pwd)`
|
||||
# Make sure the secondary configure won't fail with
|
||||
# "error: source directory already configured".
|
||||
rm -f config.status
|
||||
AC_MSG_NOTICE([[Doing configure of native tools (${build}).]])
|
||||
cd "$native_tools" || exit 1
|
||||
# Run secondary configure in alternate environment or
|
||||
# it gets the wrong CC etc. env -i gives this build host configure
|
||||
# a clean environment.
|
||||
env -i CC="${BUILD_CC}" AR="${BUILD_AR}" RANLIB="${BUILD_RANLIB}" \
|
||||
PATH="${PATH}" \
|
||||
tools_only=1 \
|
||||
${confdir}/configure --build=${build} --host=${build} \
|
||||
--disable-rpath --disable-nls
|
||||
cd .. || exit 1
|
||||
AC_MSG_NOTICE([[Continuing with main configure (${host}).]])
|
||||
fi
|
||||
AC_SUBST(native_tools)
|
||||
AM_CONDITIONAL(TOOLS_ONLY, [[test "x$tools_only" = x1]])
|
||||
|
||||
# Some GNU/Linux systems (e.g., SuSE 4.3, 1996) don't have curses, but
|
||||
# rather ncurses. So we check for it.
|
||||
TERMLIBS=
|
||||
# Check for termlib before termcap because Solaris termcap needs libucb.
|
||||
TERMLIB_VARIANTS="ncurses curses termlib termcap terminfo"
|
||||
for termlib in ${TERMLIB_VARIANTS}; do
|
||||
AC_CHECK_LIB(${termlib}, tgetent,
|
||||
[TERMLIBS="${TERMLIBS} -l${termlib}"; break])
|
||||
done
|
||||
# don't bother warning on djgpp, it doesn't have a term library, it
|
||||
# ports each termcap-needing program separately according to its needs.
|
||||
if test -z "$TERMLIBS" && echo "$build" | grep -v djgpp >/dev/null; then
|
||||
AC_MSG_WARN([probably need a terminal library, one of: ${TERMLIB_VARIANTS}])
|
||||
fi
|
||||
|
||||
# Checks for variables.
|
||||
# HP-UX 9 (at least) needs -lncurses which defines termcap variables PC etc.
|
||||
AC_MSG_CHECKING(for library with termcap variables)
|
||||
AC_CACHE_VAL(ac_cv_var_ospeed,
|
||||
oldLIBS=$LIBS
|
||||
for trylib in $termlib ${TERMLIB_VARIANTS}; do
|
||||
if test "x$trylib" != "x$termlib"; then
|
||||
LIBS="$oldLIBS -l$termlib -l$trylib"
|
||||
else
|
||||
LIBS="$oldLIBS -l$termlib"
|
||||
fi
|
||||
AC_TRY_LINK(,
|
||||
[#ifdef HAVE_NCURSES_TERMCAP_H
|
||||
#include <ncurses/termcap.h>
|
||||
#else
|
||||
#ifdef HAVE_TERMCAP_H
|
||||
#include <termcap.h>
|
||||
#else
|
||||
#undef PC
|
||||
char *BC;
|
||||
char **UP;
|
||||
char PC;
|
||||
short ospeed;
|
||||
#endif
|
||||
#endif
|
||||
/* Make sure all variables actually exist. AIX 4.3 has ospeed but no BC.
|
||||
--Andreas Ley <andy@rz.uni-karlsruhe.de> 24 Aug 2000. */
|
||||
BC++;
|
||||
UP++;
|
||||
PC++;
|
||||
return ospeed != 0;
|
||||
], ac_cv_var_ospeed=$trylib; break)
|
||||
done
|
||||
LIBS=$oldLIBS
|
||||
)
|
||||
AC_MSG_RESULT($ac_cv_var_ospeed)
|
||||
if test -n "$ac_cv_var_ospeed" \
|
||||
&& test "x$termlib" != "x$ac_cv_var_ospeed"; then
|
||||
TERMLIBS="${TERMLIBS} -l${ac_cv_var_ospeed}"
|
||||
fi
|
||||
AC_SUBST(TERMLIBS)#
|
||||
|
||||
# Do not use <ncurses/termcap.h> unless we're linking with ncurses.
|
||||
# Must come after the termlib tests.
|
||||
if test "x$termlib" = xncurses; then
|
||||
# Use AC_CHECK_HEADERS so the HAVE_*_H symbol gets defined.
|
||||
AC_CHECK_HEADERS(ncurses/termcap.h)
|
||||
fi
|
||||
|
||||
# gnulib.
|
||||
gl_FUNC_MKSTEMP
|
||||
|
||||
# For teTeX and TeX Live.
|
||||
AC_CANONICAL_HOST
|
||||
AC_ARG_ENABLE(multiplatform,
|
||||
[ --enable-multiplatform put executables in bin/PLATFORM])
|
||||
# if enable_multiplatform is set in the environment, use that.
|
||||
test "x$enable_multiplatform" = xyes \
|
||||
&& test "x$bindir" = 'x${exec_prefix}/bin' \
|
||||
&& bindir="$bindir/$host"
|
||||
|
||||
# Taken from the example in
|
||||
# http://www.gnu.org/software/automake/manual/html_node/Conditionals.html.
|
||||
AC_ARG_ENABLE(install-warnings,
|
||||
[ --disable-install-warnings omit make install warnings about TeX files],
|
||||
[case "${enableval}" in
|
||||
yes) install_warnings=true ;;
|
||||
no) install_warnings=false ;;
|
||||
*) AC_MSG_ERROR(bad value ${enableval} for --enable-install-warnings) ;;
|
||||
esac],
|
||||
[install_warnings=true])
|
||||
AM_CONDITIONAL(INSTALL_WARNINGS,
|
||||
test x"$install_warnings" = xtrue || test x"$install_warnings" = xyes)
|
||||
|
||||
# i18n support. To update to a new version of gettext, run:
|
||||
# gettextize -f -c --intl
|
||||
AM_GNU_GETTEXT_VERSION(0.14.1)
|
||||
AM_GNU_GETTEXT()
|
||||
|
||||
AC_CONFIG_FILES([
|
||||
Makefile
|
||||
doc/Makefile
|
||||
info/Makefile
|
||||
intl/Makefile
|
||||
lib/Makefile
|
||||
m4/Makefile
|
||||
makeinfo/Makefile
|
||||
makeinfo/tests/Makefile
|
||||
po/Makefile.in
|
||||
util/Makefile
|
||||
])
|
||||
AC_OUTPUT
|
522
external/gpl2/texinfo/dist/depcomp
vendored
Normal file
522
external/gpl2/texinfo/dist/depcomp
vendored
Normal file
@ -0,0 +1,522 @@
|
||||
#! /bin/sh
|
||||
# depcomp - compile a program generating dependencies as side-effects
|
||||
|
||||
scriptversion=2004-05-31.23
|
||||
|
||||
# Copyright (C) 1999, 2000, 2003, 2004 Free Software Foundation, Inc.
|
||||
|
||||
# This program is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation; either version 2, or (at your option)
|
||||
# any later version.
|
||||
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
|
||||
# 02111-1307, USA.
|
||||
|
||||
# As a special exception to the GNU General Public License, if you
|
||||
# distribute this file as part of a program that contains a
|
||||
# configuration script generated by Autoconf, you may include it under
|
||||
# the same distribution terms that you use for the rest of that program.
|
||||
|
||||
# Originally written by Alexandre Oliva <oliva@dcc.unicamp.br>.
|
||||
|
||||
case $1 in
|
||||
'')
|
||||
echo "$0: No command. Try \`$0 --help' for more information." 1>&2
|
||||
exit 1;
|
||||
;;
|
||||
-h | --h*)
|
||||
cat <<\EOF
|
||||
Usage: depcomp [--help] [--version] PROGRAM [ARGS]
|
||||
|
||||
Run PROGRAMS ARGS to compile a file, generating dependencies
|
||||
as side-effects.
|
||||
|
||||
Environment variables:
|
||||
depmode Dependency tracking mode.
|
||||
source Source file read by `PROGRAMS ARGS'.
|
||||
object Object file output by `PROGRAMS ARGS'.
|
||||
DEPDIR directory where to store dependencies.
|
||||
depfile Dependency file to output.
|
||||
tmpdepfile Temporary file to use when outputing dependencies.
|
||||
libtool Whether libtool is used (yes/no).
|
||||
|
||||
Report bugs to <bug-automake@gnu.org>.
|
||||
EOF
|
||||
exit 0
|
||||
;;
|
||||
-v | --v*)
|
||||
echo "depcomp $scriptversion"
|
||||
exit 0
|
||||
;;
|
||||
esac
|
||||
|
||||
if test -z "$depmode" || test -z "$source" || test -z "$object"; then
|
||||
echo "depcomp: Variables source, object and depmode must be set" 1>&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Dependencies for sub/bar.o or sub/bar.obj go into sub/.deps/bar.Po.
|
||||
depfile=${depfile-`echo "$object" |
|
||||
sed 's|[^\\/]*$|'${DEPDIR-.deps}'/&|;s|\.\([^.]*\)$|.P\1|;s|Pobj$|Po|'`}
|
||||
tmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`}
|
||||
|
||||
rm -f "$tmpdepfile"
|
||||
|
||||
# Some modes work just like other modes, but use different flags. We
|
||||
# parameterize here, but still list the modes in the big case below,
|
||||
# to make depend.m4 easier to write. Note that we *cannot* use a case
|
||||
# here, because this file can only contain one case statement.
|
||||
if test "$depmode" = hp; then
|
||||
# HP compiler uses -M and no extra arg.
|
||||
gccflag=-M
|
||||
depmode=gcc
|
||||
fi
|
||||
|
||||
if test "$depmode" = dashXmstdout; then
|
||||
# This is just like dashmstdout with a different argument.
|
||||
dashmflag=-xM
|
||||
depmode=dashmstdout
|
||||
fi
|
||||
|
||||
case "$depmode" in
|
||||
gcc3)
|
||||
## gcc 3 implements dependency tracking that does exactly what
|
||||
## we want. Yay! Note: for some reason libtool 1.4 doesn't like
|
||||
## it if -MD -MP comes after the -MF stuff. Hmm.
|
||||
"$@" -MT "$object" -MD -MP -MF "$tmpdepfile"
|
||||
stat=$?
|
||||
if test $stat -eq 0; then :
|
||||
else
|
||||
rm -f "$tmpdepfile"
|
||||
exit $stat
|
||||
fi
|
||||
mv "$tmpdepfile" "$depfile"
|
||||
;;
|
||||
|
||||
gcc)
|
||||
## There are various ways to get dependency output from gcc. Here's
|
||||
## why we pick this rather obscure method:
|
||||
## - Don't want to use -MD because we'd like the dependencies to end
|
||||
## up in a subdir. Having to rename by hand is ugly.
|
||||
## (We might end up doing this anyway to support other compilers.)
|
||||
## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like
|
||||
## -MM, not -M (despite what the docs say).
|
||||
## - Using -M directly means running the compiler twice (even worse
|
||||
## than renaming).
|
||||
if test -z "$gccflag"; then
|
||||
gccflag=-MD,
|
||||
fi
|
||||
"$@" -Wp,"$gccflag$tmpdepfile"
|
||||
stat=$?
|
||||
if test $stat -eq 0; then :
|
||||
else
|
||||
rm -f "$tmpdepfile"
|
||||
exit $stat
|
||||
fi
|
||||
rm -f "$depfile"
|
||||
echo "$object : \\" > "$depfile"
|
||||
alpha=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
|
||||
## The second -e expression handles DOS-style file names with drive letters.
|
||||
sed -e 's/^[^:]*: / /' \
|
||||
-e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile"
|
||||
## This next piece of magic avoids the `deleted header file' problem.
|
||||
## The problem is that when a header file which appears in a .P file
|
||||
## is deleted, the dependency causes make to die (because there is
|
||||
## typically no way to rebuild the header). We avoid this by adding
|
||||
## dummy dependencies for each header file. Too bad gcc doesn't do
|
||||
## this for us directly.
|
||||
tr ' ' '
|
||||
' < "$tmpdepfile" |
|
||||
## Some versions of gcc put a space before the `:'. On the theory
|
||||
## that the space means something, we add a space to the output as
|
||||
## well.
|
||||
## Some versions of the HPUX 10.20 sed can't process this invocation
|
||||
## correctly. Breaking it into two sed invocations is a workaround.
|
||||
sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
|
||||
rm -f "$tmpdepfile"
|
||||
;;
|
||||
|
||||
hp)
|
||||
# This case exists only to let depend.m4 do its work. It works by
|
||||
# looking at the text of this script. This case will never be run,
|
||||
# since it is checked for above.
|
||||
exit 1
|
||||
;;
|
||||
|
||||
sgi)
|
||||
if test "$libtool" = yes; then
|
||||
"$@" "-Wp,-MDupdate,$tmpdepfile"
|
||||
else
|
||||
"$@" -MDupdate "$tmpdepfile"
|
||||
fi
|
||||
stat=$?
|
||||
if test $stat -eq 0; then :
|
||||
else
|
||||
rm -f "$tmpdepfile"
|
||||
exit $stat
|
||||
fi
|
||||
rm -f "$depfile"
|
||||
|
||||
if test -f "$tmpdepfile"; then # yes, the sourcefile depend on other files
|
||||
echo "$object : \\" > "$depfile"
|
||||
|
||||
# Clip off the initial element (the dependent). Don't try to be
|
||||
# clever and replace this with sed code, as IRIX sed won't handle
|
||||
# lines with more than a fixed number of characters (4096 in
|
||||
# IRIX 6.2 sed, 8192 in IRIX 6.5). We also remove comment lines;
|
||||
# the IRIX cc adds comments like `#:fec' to the end of the
|
||||
# dependency line.
|
||||
tr ' ' '
|
||||
' < "$tmpdepfile" \
|
||||
| sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' | \
|
||||
tr '
|
||||
' ' ' >> $depfile
|
||||
echo >> $depfile
|
||||
|
||||
# The second pass generates a dummy entry for each header file.
|
||||
tr ' ' '
|
||||
' < "$tmpdepfile" \
|
||||
| sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \
|
||||
>> $depfile
|
||||
else
|
||||
# The sourcefile does not contain any dependencies, so just
|
||||
# store a dummy comment line, to avoid errors with the Makefile
|
||||
# "include basename.Plo" scheme.
|
||||
echo "#dummy" > "$depfile"
|
||||
fi
|
||||
rm -f "$tmpdepfile"
|
||||
;;
|
||||
|
||||
aix)
|
||||
# The C for AIX Compiler uses -M and outputs the dependencies
|
||||
# in a .u file. In older versions, this file always lives in the
|
||||
# current directory. Also, the AIX compiler puts `$object:' at the
|
||||
# start of each line; $object doesn't have directory information.
|
||||
# Version 6 uses the directory in both cases.
|
||||
stripped=`echo "$object" | sed 's/\(.*\)\..*$/\1/'`
|
||||
tmpdepfile="$stripped.u"
|
||||
if test "$libtool" = yes; then
|
||||
"$@" -Wc,-M
|
||||
else
|
||||
"$@" -M
|
||||
fi
|
||||
stat=$?
|
||||
|
||||
if test -f "$tmpdepfile"; then :
|
||||
else
|
||||
stripped=`echo "$stripped" | sed 's,^.*/,,'`
|
||||
tmpdepfile="$stripped.u"
|
||||
fi
|
||||
|
||||
if test $stat -eq 0; then :
|
||||
else
|
||||
rm -f "$tmpdepfile"
|
||||
exit $stat
|
||||
fi
|
||||
|
||||
if test -f "$tmpdepfile"; then
|
||||
outname="$stripped.o"
|
||||
# Each line is of the form `foo.o: dependent.h'.
|
||||
# Do two passes, one to just change these to
|
||||
# `$object: dependent.h' and one to simply `dependent.h:'.
|
||||
sed -e "s,^$outname:,$object :," < "$tmpdepfile" > "$depfile"
|
||||
sed -e "s,^$outname: \(.*\)$,\1:," < "$tmpdepfile" >> "$depfile"
|
||||
else
|
||||
# The sourcefile does not contain any dependencies, so just
|
||||
# store a dummy comment line, to avoid errors with the Makefile
|
||||
# "include basename.Plo" scheme.
|
||||
echo "#dummy" > "$depfile"
|
||||
fi
|
||||
rm -f "$tmpdepfile"
|
||||
;;
|
||||
|
||||
icc)
|
||||
# Intel's C compiler understands `-MD -MF file'. However on
|
||||
# icc -MD -MF foo.d -c -o sub/foo.o sub/foo.c
|
||||
# ICC 7.0 will fill foo.d with something like
|
||||
# foo.o: sub/foo.c
|
||||
# foo.o: sub/foo.h
|
||||
# which is wrong. We want:
|
||||
# sub/foo.o: sub/foo.c
|
||||
# sub/foo.o: sub/foo.h
|
||||
# sub/foo.c:
|
||||
# sub/foo.h:
|
||||
# ICC 7.1 will output
|
||||
# foo.o: sub/foo.c sub/foo.h
|
||||
# and will wrap long lines using \ :
|
||||
# foo.o: sub/foo.c ... \
|
||||
# sub/foo.h ... \
|
||||
# ...
|
||||
|
||||
"$@" -MD -MF "$tmpdepfile"
|
||||
stat=$?
|
||||
if test $stat -eq 0; then :
|
||||
else
|
||||
rm -f "$tmpdepfile"
|
||||
exit $stat
|
||||
fi
|
||||
rm -f "$depfile"
|
||||
# Each line is of the form `foo.o: dependent.h',
|
||||
# or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'.
|
||||
# Do two passes, one to just change these to
|
||||
# `$object: dependent.h' and one to simply `dependent.h:'.
|
||||
sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile"
|
||||
# Some versions of the HPUX 10.20 sed can't process this invocation
|
||||
# correctly. Breaking it into two sed invocations is a workaround.
|
||||
sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" |
|
||||
sed -e 's/$/ :/' >> "$depfile"
|
||||
rm -f "$tmpdepfile"
|
||||
;;
|
||||
|
||||
tru64)
|
||||
# The Tru64 compiler uses -MD to generate dependencies as a side
|
||||
# effect. `cc -MD -o foo.o ...' puts the dependencies into `foo.o.d'.
|
||||
# At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put
|
||||
# dependencies in `foo.d' instead, so we check for that too.
|
||||
# Subdirectories are respected.
|
||||
dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
|
||||
test "x$dir" = "x$object" && dir=
|
||||
base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
|
||||
|
||||
if test "$libtool" = yes; then
|
||||
# Dependencies are output in .lo.d with libtool 1.4.
|
||||
# With libtool 1.5 they are output both in $dir.libs/$base.o.d
|
||||
# and in $dir.libs/$base.o.d and $dir$base.o.d. We process the
|
||||
# latter, because the former will be cleaned when $dir.libs is
|
||||
# erased.
|
||||
tmpdepfile1="$dir.libs/$base.lo.d"
|
||||
tmpdepfile2="$dir$base.o.d"
|
||||
tmpdepfile3="$dir.libs/$base.d"
|
||||
"$@" -Wc,-MD
|
||||
else
|
||||
tmpdepfile1="$dir$base.o.d"
|
||||
tmpdepfile2="$dir$base.d"
|
||||
tmpdepfile3="$dir$base.d"
|
||||
"$@" -MD
|
||||
fi
|
||||
|
||||
stat=$?
|
||||
if test $stat -eq 0; then :
|
||||
else
|
||||
rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
|
||||
exit $stat
|
||||
fi
|
||||
|
||||
if test -f "$tmpdepfile1"; then
|
||||
tmpdepfile="$tmpdepfile1"
|
||||
elif test -f "$tmpdepfile2"; then
|
||||
tmpdepfile="$tmpdepfile2"
|
||||
else
|
||||
tmpdepfile="$tmpdepfile3"
|
||||
fi
|
||||
if test -f "$tmpdepfile"; then
|
||||
sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile"
|
||||
# That's a tab and a space in the [].
|
||||
sed -e 's,^.*\.[a-z]*:[ ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile"
|
||||
else
|
||||
echo "#dummy" > "$depfile"
|
||||
fi
|
||||
rm -f "$tmpdepfile"
|
||||
;;
|
||||
|
||||
#nosideeffect)
|
||||
# This comment above is used by automake to tell side-effect
|
||||
# dependency tracking mechanisms from slower ones.
|
||||
|
||||
dashmstdout)
|
||||
# Important note: in order to support this mode, a compiler *must*
|
||||
# always write the preprocessed file to stdout, regardless of -o.
|
||||
"$@" || exit $?
|
||||
|
||||
# Remove the call to Libtool.
|
||||
if test "$libtool" = yes; then
|
||||
while test $1 != '--mode=compile'; do
|
||||
shift
|
||||
done
|
||||
shift
|
||||
fi
|
||||
|
||||
# Remove `-o $object'.
|
||||
IFS=" "
|
||||
for arg
|
||||
do
|
||||
case $arg in
|
||||
-o)
|
||||
shift
|
||||
;;
|
||||
$object)
|
||||
shift
|
||||
;;
|
||||
*)
|
||||
set fnord "$@" "$arg"
|
||||
shift # fnord
|
||||
shift # $arg
|
||||
;;
|
||||
esac
|
||||
done
|
||||
|
||||
test -z "$dashmflag" && dashmflag=-M
|
||||
# Require at least two characters before searching for `:'
|
||||
# in the target name. This is to cope with DOS-style filenames:
|
||||
# a dependency such as `c:/foo/bar' could be seen as target `c' otherwise.
|
||||
"$@" $dashmflag |
|
||||
sed 's:^[ ]*[^: ][^:][^:]*\:[ ]*:'"$object"'\: :' > "$tmpdepfile"
|
||||
rm -f "$depfile"
|
||||
cat < "$tmpdepfile" > "$depfile"
|
||||
tr ' ' '
|
||||
' < "$tmpdepfile" | \
|
||||
## Some versions of the HPUX 10.20 sed can't process this invocation
|
||||
## correctly. Breaking it into two sed invocations is a workaround.
|
||||
sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
|
||||
rm -f "$tmpdepfile"
|
||||
;;
|
||||
|
||||
dashXmstdout)
|
||||
# This case only exists to satisfy depend.m4. It is never actually
|
||||
# run, as this mode is specially recognized in the preamble.
|
||||
exit 1
|
||||
;;
|
||||
|
||||
makedepend)
|
||||
"$@" || exit $?
|
||||
# Remove any Libtool call
|
||||
if test "$libtool" = yes; then
|
||||
while test $1 != '--mode=compile'; do
|
||||
shift
|
||||
done
|
||||
shift
|
||||
fi
|
||||
# X makedepend
|
||||
shift
|
||||
cleared=no
|
||||
for arg in "$@"; do
|
||||
case $cleared in
|
||||
no)
|
||||
set ""; shift
|
||||
cleared=yes ;;
|
||||
esac
|
||||
case "$arg" in
|
||||
-D*|-I*)
|
||||
set fnord "$@" "$arg"; shift ;;
|
||||
# Strip any option that makedepend may not understand. Remove
|
||||
# the object too, otherwise makedepend will parse it as a source file.
|
||||
-*|$object)
|
||||
;;
|
||||
*)
|
||||
set fnord "$@" "$arg"; shift ;;
|
||||
esac
|
||||
done
|
||||
obj_suffix="`echo $object | sed 's/^.*\././'`"
|
||||
touch "$tmpdepfile"
|
||||
${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@"
|
||||
rm -f "$depfile"
|
||||
cat < "$tmpdepfile" > "$depfile"
|
||||
sed '1,2d' "$tmpdepfile" | tr ' ' '
|
||||
' | \
|
||||
## Some versions of the HPUX 10.20 sed can't process this invocation
|
||||
## correctly. Breaking it into two sed invocations is a workaround.
|
||||
sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
|
||||
rm -f "$tmpdepfile" "$tmpdepfile".bak
|
||||
;;
|
||||
|
||||
cpp)
|
||||
# Important note: in order to support this mode, a compiler *must*
|
||||
# always write the preprocessed file to stdout.
|
||||
"$@" || exit $?
|
||||
|
||||
# Remove the call to Libtool.
|
||||
if test "$libtool" = yes; then
|
||||
while test $1 != '--mode=compile'; do
|
||||
shift
|
||||
done
|
||||
shift
|
||||
fi
|
||||
|
||||
# Remove `-o $object'.
|
||||
IFS=" "
|
||||
for arg
|
||||
do
|
||||
case $arg in
|
||||
-o)
|
||||
shift
|
||||
;;
|
||||
$object)
|
||||
shift
|
||||
;;
|
||||
*)
|
||||
set fnord "$@" "$arg"
|
||||
shift # fnord
|
||||
shift # $arg
|
||||
;;
|
||||
esac
|
||||
done
|
||||
|
||||
"$@" -E |
|
||||
sed -n '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' |
|
||||
sed '$ s: \\$::' > "$tmpdepfile"
|
||||
rm -f "$depfile"
|
||||
echo "$object : \\" > "$depfile"
|
||||
cat < "$tmpdepfile" >> "$depfile"
|
||||
sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile"
|
||||
rm -f "$tmpdepfile"
|
||||
;;
|
||||
|
||||
msvisualcpp)
|
||||
# Important note: in order to support this mode, a compiler *must*
|
||||
# always write the preprocessed file to stdout, regardless of -o,
|
||||
# because we must use -o when running libtool.
|
||||
"$@" || exit $?
|
||||
IFS=" "
|
||||
for arg
|
||||
do
|
||||
case "$arg" in
|
||||
"-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI")
|
||||
set fnord "$@"
|
||||
shift
|
||||
shift
|
||||
;;
|
||||
*)
|
||||
set fnord "$@" "$arg"
|
||||
shift
|
||||
shift
|
||||
;;
|
||||
esac
|
||||
done
|
||||
"$@" -E |
|
||||
sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::echo "`cygpath -u \\"\1\\"`":p' | sort | uniq > "$tmpdepfile"
|
||||
rm -f "$depfile"
|
||||
echo "$object : \\" > "$depfile"
|
||||
. "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s:: \1 \\:p' >> "$depfile"
|
||||
echo " " >> "$depfile"
|
||||
. "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s::\1\::p' >> "$depfile"
|
||||
rm -f "$tmpdepfile"
|
||||
;;
|
||||
|
||||
none)
|
||||
exec "$@"
|
||||
;;
|
||||
|
||||
*)
|
||||
echo "Unknown depmode $depmode" 1>&2
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
|
||||
exit 0
|
||||
|
||||
# Local Variables:
|
||||
# mode: shell-script
|
||||
# sh-indentation: 2
|
||||
# eval: (add-hook 'write-file-hooks 'time-stamp)
|
||||
# time-stamp-start: "scriptversion="
|
||||
# time-stamp-format: "%:y-%02m-%02d.%02H"
|
||||
# time-stamp-end: "$"
|
||||
# End:
|
80
external/gpl2/texinfo/dist/doc/Makefile.am
vendored
Normal file
80
external/gpl2/texinfo/dist/doc/Makefile.am
vendored
Normal file
@ -0,0 +1,80 @@
|
||||
# Id: Makefile.am,v 1.20 2004/11/18 01:10:59 karl Exp
|
||||
# Makefile.am for texinfo/doc.
|
||||
# Run automake in .. to produce Makefile.in from this.
|
||||
#
|
||||
# This file is free software; as a special exception the author gives
|
||||
# unlimited permission to copy and/or distribute it, with or without
|
||||
# modifications, as long as this notice is preserved.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful, but
|
||||
# WITHOUT ANY WARRANTY, to the extent permitted by law; without even the
|
||||
# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||
|
||||
# Put texinfo.txi first because that's the most important.
|
||||
info_TEXINFOS = texinfo.txi info-stnd.texi info.texi
|
||||
DISTCLEANFILES = texinfo texinfo-* info*.info*
|
||||
|
||||
man_MANS = info.1 infokey.1 install-info.1 makeinfo.1 texindex.1 texi2dvi.1 \
|
||||
info.5 texinfo.5
|
||||
|
||||
# Use the programs built in our distribution, taking account of possible
|
||||
# cross-compiling.
|
||||
MAKEINFO = $(top_builddir)/$(native_tools)/makeinfo/makeinfo
|
||||
INSTALL_INFO = $(top_builddir)/$(native_tools)/util/install-info
|
||||
|
||||
TXI_XLATE = txi-cs.tex txi-de.tex txi-en.tex txi-es.tex txi-fr.tex \
|
||||
txi-it.tex txi-nl.tex txi-no.tex txi-pl.tex txi-pt.tex txi-tr.tex
|
||||
|
||||
# Include our texinfo.tex, not Automake's.
|
||||
EXTRA_DIST = epsf.tex pdfcolor.tex texinfo.tex \
|
||||
fdl.texi \
|
||||
$(man_MANS) $(TXI_XLATE)
|
||||
|
||||
if INSTALL_WARNINGS
|
||||
install-data-local:
|
||||
@echo
|
||||
@echo "WARNING: If your texmf tree does not already contain"
|
||||
@echo " up-to-date versions, you must install"
|
||||
@echo " texinfo.tex and txi-??.tex manually,"
|
||||
@echo " perhaps in TEXMF/tex/texinfo/,"
|
||||
@echo " where TEXMF is a root of your TeX tree."
|
||||
@echo " See doc/README for some considerations."
|
||||
@echo " You can run make TEXMF=/your/texmf install-tex to do this."
|
||||
@echo
|
||||
@echo " You may also need to install epsf.tex and (if you"
|
||||
@echo " use pdftex) pdfcolor.tex in TEXMF/tex/generic/dvips"
|
||||
@echo " and TEXMF/pdftex/plain/misc/pdfcolor.tex respectively,"
|
||||
@echo " if your TeX installation did not include them."
|
||||
endif
|
||||
|
||||
texmf_texinfo = $(TEXMF)/tex/texinfo
|
||||
texmf_dvips = $(TEXMF)/tex/generic/dvips
|
||||
texmf_pdftex_misc = $(TEXMF)/pdftex/plain/misc
|
||||
install-tex:
|
||||
test -n "$(TEXMF)" || (echo "TEXMF must be set." >&2; exit 1)
|
||||
$(mkinstalldirs) $(DESTDIR)$(texmf_texinfo) $(DESTDIR)$(texmf_dvips) $(DESTDIR)$(texmf_pdftex_misc)
|
||||
$(INSTALL_DATA) $(srcdir)/texinfo.tex $(DESTDIR)$(texmf_texinfo)/texinfo.tex
|
||||
$(INSTALL_DATA) $(srcdir)/epsf.tex $(DESTDIR)$(texmf_dvips)/epsf.tex
|
||||
$(INSTALL_DATA) $(srcdir)/pdfcolor.tex $(DESTDIR)$(texmf_pdftex_misc)/pdfcolor.tex
|
||||
for f in $(TXI_XLATE); do \
|
||||
$(INSTALL_DATA) $(srcdir)/$$f $(DESTDIR)$(texmf_texinfo)/$$f; done
|
||||
|
||||
# The man pages depend on the --help strings and the version number.
|
||||
if MAINTAINER_MODE
|
||||
common_mandeps = $(top_srcdir)/configure.ac
|
||||
info.1: $(top_srcdir)/info/info.c $(common_mandeps)
|
||||
$(HELP2MAN) --name="read Info documents" `basename $@ .1` >$@
|
||||
infokey.1: $(top_srcdir)/info/infokey.c $(common_mandeps)
|
||||
$(HELP2MAN) --name="compile customizations for Info" `basename $@ .1` >$@
|
||||
install-info.1: $(top_srcdir)/util/install-info.c $(common_mandeps)
|
||||
$(HELP2MAN) --name="update info/dir entries" `basename $@ .1` >$@
|
||||
makeinfo.1: $(top_srcdir)/makeinfo/makeinfo.c $(common_mandeps)
|
||||
$(HELP2MAN) --name="translate Texinfo documents" `basename $@ .1` >$@
|
||||
texi2dvi.1: $(top_srcdir)/util/texi2dvi $(common_mandeps)
|
||||
$(HELP2MAN) --name="print Texinfo documents" `basename $@ .1` >$@
|
||||
texindex.1: $(top_srcdir)/util/texindex.c $(common_mandeps)
|
||||
$(HELP2MAN) --name="sort Texinfo index files" `basename $@ .1` >$@
|
||||
endif
|
||||
|
||||
# Do not create info files for distribution.
|
||||
dist-info:
|
772
external/gpl2/texinfo/dist/doc/Makefile.in
vendored
Normal file
772
external/gpl2/texinfo/dist/doc/Makefile.in
vendored
Normal file
@ -0,0 +1,772 @@
|
||||
# Makefile.in generated by automake 1.9.4 from Makefile.am.
|
||||
# @configure_input@
|
||||
|
||||
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
|
||||
# 2003, 2004 Free Software Foundation, Inc.
|
||||
# This Makefile.in is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
# with or without modifications, as long as this notice is preserved.
|
||||
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
|
||||
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
|
||||
# PARTICULAR PURPOSE.
|
||||
|
||||
@SET_MAKE@
|
||||
|
||||
# Id: Makefile.am,v 1.20 2004/11/18 01:10:59 karl Exp
|
||||
# Makefile.am for texinfo/doc.
|
||||
# Run automake in .. to produce Makefile.in from this.
|
||||
#
|
||||
# This file is free software; as a special exception the author gives
|
||||
# unlimited permission to copy and/or distribute it, with or without
|
||||
# modifications, as long as this notice is preserved.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful, but
|
||||
# WITHOUT ANY WARRANTY, to the extent permitted by law; without even the
|
||||
# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||
srcdir = @srcdir@
|
||||
top_srcdir = @top_srcdir@
|
||||
VPATH = @srcdir@
|
||||
pkgdatadir = $(datadir)/@PACKAGE@
|
||||
pkglibdir = $(libdir)/@PACKAGE@
|
||||
pkgincludedir = $(includedir)/@PACKAGE@
|
||||
top_builddir = ..
|
||||
am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
|
||||
INSTALL = @INSTALL@
|
||||
install_sh_DATA = $(install_sh) -c -m 644
|
||||
install_sh_PROGRAM = $(install_sh) -c
|
||||
install_sh_SCRIPT = $(install_sh) -c
|
||||
INSTALL_HEADER = $(INSTALL_DATA)
|
||||
transform = $(program_transform_name)
|
||||
NORMAL_INSTALL = :
|
||||
PRE_INSTALL = :
|
||||
POST_INSTALL = :
|
||||
NORMAL_UNINSTALL = :
|
||||
PRE_UNINSTALL = :
|
||||
POST_UNINSTALL = :
|
||||
build_triplet = @build@
|
||||
host_triplet = @host@
|
||||
subdir = doc
|
||||
DIST_COMMON = README $(info_TEXINFOS) $(srcdir)/Makefile.am \
|
||||
$(srcdir)/Makefile.in $(srcdir)/stamp-1 $(srcdir)/stamp-vti \
|
||||
$(srcdir)/version-stnd.texi $(srcdir)/version.texi mdate-sh \
|
||||
texinfo.tex
|
||||
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
|
||||
am__aclocal_m4_deps = $(top_srcdir)/m4/codeset.m4 \
|
||||
$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/glibc21.m4 \
|
||||
$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intdiv0.m4 \
|
||||
$(top_srcdir)/m4/intmax.m4 $(top_srcdir)/m4/inttypes-pri.m4 \
|
||||
$(top_srcdir)/m4/inttypes.m4 $(top_srcdir)/m4/inttypes_h.m4 \
|
||||
$(top_srcdir)/m4/lcmessage.m4 $(top_srcdir)/m4/lib-ld.m4 \
|
||||
$(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
|
||||
$(top_srcdir)/m4/longdouble.m4 $(top_srcdir)/m4/longlong.m4 \
|
||||
$(top_srcdir)/m4/mkstemp.m4 $(top_srcdir)/m4/nls.m4 \
|
||||
$(top_srcdir)/m4/onceonly_2_57.m4 $(top_srcdir)/m4/po.m4 \
|
||||
$(top_srcdir)/m4/printf-posix.m4 $(top_srcdir)/m4/progtest.m4 \
|
||||
$(top_srcdir)/m4/signed.m4 $(top_srcdir)/m4/size_max.m4 \
|
||||
$(top_srcdir)/m4/stdint_h.m4 $(top_srcdir)/m4/strcase.m4 \
|
||||
$(top_srcdir)/m4/uintmax_t.m4 $(top_srcdir)/m4/ulonglong.m4 \
|
||||
$(top_srcdir)/m4/wchar_t.m4 $(top_srcdir)/m4/wint_t.m4 \
|
||||
$(top_srcdir)/m4/xsize.m4 $(top_srcdir)/configure.ac
|
||||
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
|
||||
$(ACLOCAL_M4)
|
||||
mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
|
||||
CONFIG_HEADER = $(top_builddir)/config.h
|
||||
CONFIG_CLEAN_FILES =
|
||||
SOURCES =
|
||||
DIST_SOURCES =
|
||||
INFO_DEPS = texinfo info-stnd.info info.info
|
||||
am__TEXINFO_TEX_DIR = $(srcdir)
|
||||
DVIS = texinfo.dvi info-stnd.dvi info.dvi
|
||||
PDFS = texinfo.pdf info-stnd.pdf info.pdf
|
||||
PSS = texinfo.ps info-stnd.ps info.ps
|
||||
HTMLS = texinfo.html info-stnd.html info.html
|
||||
TEXINFOS = texinfo.txi info-stnd.texi info.texi
|
||||
TEXI2DVI = texi2dvi
|
||||
TEXI2PDF = $(TEXI2DVI) --pdf --batch
|
||||
MAKEINFOHTML = $(MAKEINFO) --html
|
||||
AM_MAKEINFOHTMLFLAGS = $(AM_MAKEINFOFLAGS)
|
||||
DVIPS = dvips
|
||||
am__installdirs = "$(DESTDIR)$(infodir)" "$(DESTDIR)$(man1dir)" \
|
||||
"$(DESTDIR)$(man5dir)"
|
||||
man1dir = $(mandir)/man1
|
||||
man5dir = $(mandir)/man5
|
||||
NROFF = nroff
|
||||
MANS = $(man_MANS)
|
||||
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
|
||||
ACLOCAL = @ACLOCAL@
|
||||
ALLOCA = @ALLOCA@
|
||||
AMDEP_FALSE = @AMDEP_FALSE@
|
||||
AMDEP_TRUE = @AMDEP_TRUE@
|
||||
AMTAR = @AMTAR@
|
||||
AUTOCONF = @AUTOCONF@
|
||||
AUTOHEADER = @AUTOHEADER@
|
||||
AUTOMAKE = @AUTOMAKE@
|
||||
AWK = @AWK@
|
||||
BUILD_INCLUDED_LIBINTL = @BUILD_INCLUDED_LIBINTL@
|
||||
CATOBJEXT = @CATOBJEXT@
|
||||
CC = @CC@
|
||||
CCDEPMODE = @CCDEPMODE@
|
||||
CFLAGS = @CFLAGS@
|
||||
CPP = @CPP@
|
||||
CPPFLAGS = @CPPFLAGS@
|
||||
CYGPATH_W = @CYGPATH_W@
|
||||
DATADIRNAME = @DATADIRNAME@
|
||||
DEFS = @DEFS@
|
||||
DEPDIR = @DEPDIR@
|
||||
ECHO_C = @ECHO_C@
|
||||
ECHO_N = @ECHO_N@
|
||||
ECHO_T = @ECHO_T@
|
||||
EGREP = @EGREP@
|
||||
EXEEXT = @EXEEXT@
|
||||
GENCAT = @GENCAT@
|
||||
GLIBC21 = @GLIBC21@
|
||||
GMSGFMT = @GMSGFMT@
|
||||
HAVE_ASPRINTF = @HAVE_ASPRINTF@
|
||||
HAVE_POSIX_PRINTF = @HAVE_POSIX_PRINTF@
|
||||
HAVE_SNPRINTF = @HAVE_SNPRINTF@
|
||||
HAVE_WPRINTF = @HAVE_WPRINTF@
|
||||
HELP2MAN = @HELP2MAN@
|
||||
INSTALL_DATA = @INSTALL_DATA@
|
||||
INSTALL_PROGRAM = @INSTALL_PROGRAM@
|
||||
INSTALL_SCRIPT = @INSTALL_SCRIPT@
|
||||
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
|
||||
INSTALL_WARNINGS_FALSE = @INSTALL_WARNINGS_FALSE@
|
||||
INSTALL_WARNINGS_TRUE = @INSTALL_WARNINGS_TRUE@
|
||||
INSTOBJEXT = @INSTOBJEXT@
|
||||
INTLBISON = @INTLBISON@
|
||||
INTLLIBS = @INTLLIBS@
|
||||
INTLOBJS = @INTLOBJS@
|
||||
INTL_LIBTOOL_SUFFIX_PREFIX = @INTL_LIBTOOL_SUFFIX_PREFIX@
|
||||
LDFLAGS = @LDFLAGS@
|
||||
LIBICONV = @LIBICONV@
|
||||
LIBINTL = @LIBINTL@
|
||||
LIBOBJS = @LIBOBJS@
|
||||
LIBS = @LIBS@
|
||||
LTLIBICONV = @LTLIBICONV@
|
||||
LTLIBINTL = @LTLIBINTL@
|
||||
LTLIBOBJS = @LTLIBOBJS@
|
||||
MAINT = @MAINT@
|
||||
MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@
|
||||
MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@
|
||||
|
||||
# Use the programs built in our distribution, taking account of possible
|
||||
# cross-compiling.
|
||||
MAKEINFO = $(top_builddir)/$(native_tools)/makeinfo/makeinfo
|
||||
MKINSTALLDIRS = @MKINSTALLDIRS@
|
||||
MSGFMT = @MSGFMT@
|
||||
MSGMERGE = @MSGMERGE@
|
||||
OBJEXT = @OBJEXT@
|
||||
PACKAGE = @PACKAGE@
|
||||
PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
|
||||
PACKAGE_NAME = @PACKAGE_NAME@
|
||||
PACKAGE_STRING = @PACKAGE_STRING@
|
||||
PACKAGE_TARNAME = @PACKAGE_TARNAME@
|
||||
PACKAGE_VERSION = @PACKAGE_VERSION@
|
||||
PATH_SEPARATOR = @PATH_SEPARATOR@
|
||||
POSUB = @POSUB@
|
||||
RANLIB = @RANLIB@
|
||||
SET_MAKE = @SET_MAKE@
|
||||
SHELL = @SHELL@
|
||||
STRIP = @STRIP@
|
||||
TERMLIBS = @TERMLIBS@
|
||||
TOOLS_ONLY_FALSE = @TOOLS_ONLY_FALSE@
|
||||
TOOLS_ONLY_TRUE = @TOOLS_ONLY_TRUE@
|
||||
USE_INCLUDED_LIBINTL = @USE_INCLUDED_LIBINTL@
|
||||
USE_NLS = @USE_NLS@
|
||||
VERSION = @VERSION@
|
||||
XGETTEXT = @XGETTEXT@
|
||||
ac_ct_CC = @ac_ct_CC@
|
||||
ac_ct_RANLIB = @ac_ct_RANLIB@
|
||||
ac_ct_STRIP = @ac_ct_STRIP@
|
||||
am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
|
||||
am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
|
||||
am__include = @am__include@
|
||||
am__leading_dot = @am__leading_dot@
|
||||
am__quote = @am__quote@
|
||||
am__tar = @am__tar@
|
||||
am__untar = @am__untar@
|
||||
bindir = @bindir@
|
||||
build = @build@
|
||||
build_alias = @build_alias@
|
||||
build_cpu = @build_cpu@
|
||||
build_os = @build_os@
|
||||
build_vendor = @build_vendor@
|
||||
datadir = @datadir@
|
||||
exec_prefix = @exec_prefix@
|
||||
host = @host@
|
||||
host_alias = @host_alias@
|
||||
host_cpu = @host_cpu@
|
||||
host_os = @host_os@
|
||||
host_vendor = @host_vendor@
|
||||
includedir = @includedir@
|
||||
infodir = @infodir@
|
||||
install_sh = @install_sh@
|
||||
libdir = @libdir@
|
||||
libexecdir = @libexecdir@
|
||||
localstatedir = @localstatedir@
|
||||
mandir = @mandir@
|
||||
mkdir_p = @mkdir_p@
|
||||
native_tools = @native_tools@
|
||||
oldincludedir = @oldincludedir@
|
||||
prefix = @prefix@
|
||||
program_transform_name = @program_transform_name@
|
||||
sbindir = @sbindir@
|
||||
sharedstatedir = @sharedstatedir@
|
||||
sysconfdir = @sysconfdir@
|
||||
target_alias = @target_alias@
|
||||
|
||||
# Put texinfo.txi first because that's the most important.
|
||||
info_TEXINFOS = texinfo.txi info-stnd.texi info.texi
|
||||
DISTCLEANFILES = texinfo texinfo-* info*.info*
|
||||
man_MANS = info.1 infokey.1 install-info.1 makeinfo.1 texindex.1 texi2dvi.1 \
|
||||
info.5 texinfo.5
|
||||
|
||||
INSTALL_INFO = $(top_builddir)/$(native_tools)/util/install-info
|
||||
TXI_XLATE = txi-cs.tex txi-de.tex txi-en.tex txi-es.tex txi-fr.tex \
|
||||
txi-it.tex txi-nl.tex txi-no.tex txi-pl.tex txi-pt.tex txi-tr.tex
|
||||
|
||||
|
||||
# Include our texinfo.tex, not Automake's.
|
||||
EXTRA_DIST = epsf.tex pdfcolor.tex texinfo.tex \
|
||||
fdl.texi \
|
||||
$(man_MANS) $(TXI_XLATE)
|
||||
|
||||
texmf_texinfo = $(TEXMF)/tex/texinfo
|
||||
texmf_dvips = $(TEXMF)/tex/generic/dvips
|
||||
texmf_pdftex_misc = $(TEXMF)/pdftex/plain/misc
|
||||
|
||||
# The man pages depend on the --help strings and the version number.
|
||||
@MAINTAINER_MODE_TRUE@common_mandeps = $(top_srcdir)/configure.ac
|
||||
all: all-am
|
||||
|
||||
.SUFFIXES:
|
||||
.SUFFIXES: .dvi .ps
|
||||
$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps)
|
||||
@for dep in $?; do \
|
||||
case '$(am__configure_deps)' in \
|
||||
*$$dep*) \
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
|
||||
&& exit 0; \
|
||||
exit 1;; \
|
||||
esac; \
|
||||
done; \
|
||||
echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu doc/Makefile'; \
|
||||
cd $(top_srcdir) && \
|
||||
$(AUTOMAKE) --gnu doc/Makefile
|
||||
.PRECIOUS: Makefile
|
||||
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
|
||||
@case '$?' in \
|
||||
*config.status*) \
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
|
||||
*) \
|
||||
echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
|
||||
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
|
||||
esac;
|
||||
|
||||
$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
||||
|
||||
$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
||||
$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
||||
|
||||
texinfo: texinfo.txi $(srcdir)/version.texi
|
||||
restore=: && backupdir="$(am__leading_dot)am$$$$" && \
|
||||
rm -rf $$backupdir && mkdir $$backupdir && \
|
||||
for f in $@ $@-[0-9] $@-[0-9][0-9] $(@:.info=).i[0-9] $(@:.info=).i[0-9][0-9]; do \
|
||||
if test -f $$f; then mv $$f $$backupdir; restore=mv; else :; fi; \
|
||||
done; \
|
||||
if $(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) -I $(srcdir) \
|
||||
-o $@ `test -f 'texinfo.txi' || echo '$(srcdir)/'`texinfo.txi; \
|
||||
then \
|
||||
rc=0; \
|
||||
else \
|
||||
rc=$$?; \
|
||||
$$restore $$backupdir/* `echo "./$@" | sed 's|[^/]*$$||'`; \
|
||||
fi; \
|
||||
rm -rf $$backupdir; exit $$rc
|
||||
|
||||
texinfo.dvi: texinfo.txi $(srcdir)/version.texi
|
||||
TEXINPUTS="$(am__TEXINFO_TEX_DIR)$(PATH_SEPARATOR)$$TEXINPUTS" \
|
||||
MAKEINFO='$(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) -I $(srcdir)' \
|
||||
$(TEXI2DVI) -o $@ `test -f 'texinfo.txi' || echo '$(srcdir)/'`texinfo.txi
|
||||
|
||||
texinfo.pdf: texinfo.txi $(srcdir)/version.texi
|
||||
TEXINPUTS="$(am__TEXINFO_TEX_DIR)$(PATH_SEPARATOR)$$TEXINPUTS" \
|
||||
MAKEINFO='$(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) -I $(srcdir)' \
|
||||
$(TEXI2PDF) -o $@ `test -f 'texinfo.txi' || echo '$(srcdir)/'`texinfo.txi
|
||||
|
||||
texinfo.html: texinfo.txi $(srcdir)/version.texi
|
||||
rm -rf $(@:.html=.htp)
|
||||
if $(MAKEINFOHTML) $(AM_MAKEINFOHTMLFLAGS) $(MAKEINFOFLAGS) -I $(srcdir) \
|
||||
-o $(@:.html=.htp) `test -f 'texinfo.txi' || echo '$(srcdir)/'`texinfo.txi; \
|
||||
then \
|
||||
rm -rf $@; \
|
||||
if test ! -d $(@:.html=.htp) && test -d $(@:.html=); then \
|
||||
mv $(@:.html=) $@; else mv $(@:.html=.htp) $@; fi; \
|
||||
else \
|
||||
if test ! -d $(@:.html=.htp) && test -d $(@:.html=); then \
|
||||
rm -rf $(@:.html=); else rm -Rf $(@:.html=.htp) $@; fi; \
|
||||
exit 1; \
|
||||
fi
|
||||
$(srcdir)/version.texi: @MAINTAINER_MODE_TRUE@ $(srcdir)/stamp-vti
|
||||
$(srcdir)/stamp-vti: texinfo.txi $(top_srcdir)/configure
|
||||
@(dir=.; test -f ./texinfo.txi || dir=$(srcdir); \
|
||||
set `$(SHELL) $(srcdir)/mdate-sh $$dir/texinfo.txi`; \
|
||||
echo "@set UPDATED $$1 $$2 $$3"; \
|
||||
echo "@set UPDATED-MONTH $$2 $$3"; \
|
||||
echo "@set EDITION $(VERSION)"; \
|
||||
echo "@set VERSION $(VERSION)") > vti.tmp
|
||||
@cmp -s vti.tmp $(srcdir)/version.texi \
|
||||
|| (echo "Updating $(srcdir)/version.texi"; \
|
||||
cp vti.tmp $(srcdir)/version.texi)
|
||||
-@rm -f vti.tmp
|
||||
@cp $(srcdir)/version.texi $@
|
||||
|
||||
mostlyclean-vti:
|
||||
-rm -f vti.tmp
|
||||
|
||||
maintainer-clean-vti:
|
||||
@MAINTAINER_MODE_TRUE@ -rm -f $(srcdir)/stamp-vti $(srcdir)/version.texi
|
||||
|
||||
info-stnd.info: info-stnd.texi $(srcdir)/version-stnd.texi
|
||||
restore=: && backupdir="$(am__leading_dot)am$$$$" && \
|
||||
rm -rf $$backupdir && mkdir $$backupdir && \
|
||||
for f in $@ $@-[0-9] $@-[0-9][0-9] $(@:.info=).i[0-9] $(@:.info=).i[0-9][0-9]; do \
|
||||
if test -f $$f; then mv $$f $$backupdir; restore=mv; else :; fi; \
|
||||
done; \
|
||||
if $(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) -I $(srcdir) \
|
||||
-o $@ `test -f 'info-stnd.texi' || echo '$(srcdir)/'`info-stnd.texi; \
|
||||
then \
|
||||
rc=0; \
|
||||
else \
|
||||
rc=$$?; \
|
||||
$$restore $$backupdir/* `echo "./$@" | sed 's|[^/]*$$||'`; \
|
||||
fi; \
|
||||
rm -rf $$backupdir; exit $$rc
|
||||
|
||||
info-stnd.dvi: info-stnd.texi $(srcdir)/version-stnd.texi
|
||||
TEXINPUTS="$(am__TEXINFO_TEX_DIR)$(PATH_SEPARATOR)$$TEXINPUTS" \
|
||||
MAKEINFO='$(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) -I $(srcdir)' \
|
||||
$(TEXI2DVI) -o $@ `test -f 'info-stnd.texi' || echo '$(srcdir)/'`info-stnd.texi
|
||||
|
||||
info-stnd.pdf: info-stnd.texi $(srcdir)/version-stnd.texi
|
||||
TEXINPUTS="$(am__TEXINFO_TEX_DIR)$(PATH_SEPARATOR)$$TEXINPUTS" \
|
||||
MAKEINFO='$(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) -I $(srcdir)' \
|
||||
$(TEXI2PDF) -o $@ `test -f 'info-stnd.texi' || echo '$(srcdir)/'`info-stnd.texi
|
||||
|
||||
info-stnd.html: info-stnd.texi $(srcdir)/version-stnd.texi
|
||||
rm -rf $(@:.html=.htp)
|
||||
if $(MAKEINFOHTML) $(AM_MAKEINFOHTMLFLAGS) $(MAKEINFOFLAGS) -I $(srcdir) \
|
||||
-o $(@:.html=.htp) `test -f 'info-stnd.texi' || echo '$(srcdir)/'`info-stnd.texi; \
|
||||
then \
|
||||
rm -rf $@; \
|
||||
if test ! -d $(@:.html=.htp) && test -d $(@:.html=); then \
|
||||
mv $(@:.html=) $@; else mv $(@:.html=.htp) $@; fi; \
|
||||
else \
|
||||
if test ! -d $(@:.html=.htp) && test -d $(@:.html=); then \
|
||||
rm -rf $(@:.html=); else rm -Rf $(@:.html=.htp) $@; fi; \
|
||||
exit 1; \
|
||||
fi
|
||||
$(srcdir)/version-stnd.texi: @MAINTAINER_MODE_TRUE@ $(srcdir)/stamp-1
|
||||
$(srcdir)/stamp-1: info-stnd.texi $(top_srcdir)/configure
|
||||
@(dir=.; test -f ./info-stnd.texi || dir=$(srcdir); \
|
||||
set `$(SHELL) $(srcdir)/mdate-sh $$dir/info-stnd.texi`; \
|
||||
echo "@set UPDATED $$1 $$2 $$3"; \
|
||||
echo "@set UPDATED-MONTH $$2 $$3"; \
|
||||
echo "@set EDITION $(VERSION)"; \
|
||||
echo "@set VERSION $(VERSION)") > 1.tmp
|
||||
@cmp -s 1.tmp $(srcdir)/version-stnd.texi \
|
||||
|| (echo "Updating $(srcdir)/version-stnd.texi"; \
|
||||
cp 1.tmp $(srcdir)/version-stnd.texi)
|
||||
-@rm -f 1.tmp
|
||||
@cp $(srcdir)/version-stnd.texi $@
|
||||
|
||||
mostlyclean-1:
|
||||
-rm -f 1.tmp
|
||||
|
||||
maintainer-clean-1:
|
||||
@MAINTAINER_MODE_TRUE@ -rm -f $(srcdir)/stamp-1 $(srcdir)/version-stnd.texi
|
||||
|
||||
info.info: info.texi $(info_TEXINFOS)
|
||||
restore=: && backupdir="$(am__leading_dot)am$$$$" && \
|
||||
rm -rf $$backupdir && mkdir $$backupdir && \
|
||||
for f in $@ $@-[0-9] $@-[0-9][0-9] $(@:.info=).i[0-9] $(@:.info=).i[0-9][0-9]; do \
|
||||
if test -f $$f; then mv $$f $$backupdir; restore=mv; else :; fi; \
|
||||
done; \
|
||||
if $(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) -I $(srcdir) \
|
||||
-o $@ `test -f 'info.texi' || echo '$(srcdir)/'`info.texi; \
|
||||
then \
|
||||
rc=0; \
|
||||
else \
|
||||
rc=$$?; \
|
||||
$$restore $$backupdir/* `echo "./$@" | sed 's|[^/]*$$||'`; \
|
||||
fi; \
|
||||
rm -rf $$backupdir; exit $$rc
|
||||
|
||||
info.dvi: info.texi $(info_TEXINFOS)
|
||||
TEXINPUTS="$(am__TEXINFO_TEX_DIR)$(PATH_SEPARATOR)$$TEXINPUTS" \
|
||||
MAKEINFO='$(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) -I $(srcdir)' \
|
||||
$(TEXI2DVI) -o $@ `test -f 'info.texi' || echo '$(srcdir)/'`info.texi
|
||||
|
||||
info.pdf: info.texi $(info_TEXINFOS)
|
||||
TEXINPUTS="$(am__TEXINFO_TEX_DIR)$(PATH_SEPARATOR)$$TEXINPUTS" \
|
||||
MAKEINFO='$(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) -I $(srcdir)' \
|
||||
$(TEXI2PDF) -o $@ `test -f 'info.texi' || echo '$(srcdir)/'`info.texi
|
||||
|
||||
info.html: info.texi $(info_TEXINFOS)
|
||||
rm -rf $(@:.html=.htp)
|
||||
if $(MAKEINFOHTML) $(AM_MAKEINFOHTMLFLAGS) $(MAKEINFOFLAGS) -I $(srcdir) \
|
||||
-o $(@:.html=.htp) `test -f 'info.texi' || echo '$(srcdir)/'`info.texi; \
|
||||
then \
|
||||
rm -rf $@; \
|
||||
if test ! -d $(@:.html=.htp) && test -d $(@:.html=); then \
|
||||
mv $(@:.html=) $@; else mv $(@:.html=.htp) $@; fi; \
|
||||
else \
|
||||
if test ! -d $(@:.html=.htp) && test -d $(@:.html=); then \
|
||||
rm -rf $(@:.html=); else rm -Rf $(@:.html=.htp) $@; fi; \
|
||||
exit 1; \
|
||||
fi
|
||||
.dvi.ps:
|
||||
$(DVIPS) -o $@ $<
|
||||
|
||||
uninstall-info-am:
|
||||
$(PRE_UNINSTALL)
|
||||
@if (install-info --version && \
|
||||
install-info --version 2>&1 | sed 1q | grep -i -v debian) >/dev/null 2>&1; then \
|
||||
list='$(INFO_DEPS)'; \
|
||||
for file in $$list; do \
|
||||
relfile=`echo "$$file" | sed 's|^.*/||'`; \
|
||||
echo " install-info --info-dir='$(DESTDIR)$(infodir)' --remove '$(DESTDIR)$(infodir)/$$relfile'"; \
|
||||
install-info --info-dir="$(DESTDIR)$(infodir)" --remove "$(DESTDIR)$(infodir)/$$relfile"; \
|
||||
done; \
|
||||
else :; fi
|
||||
@$(NORMAL_UNINSTALL)
|
||||
@list='$(INFO_DEPS)'; \
|
||||
for file in $$list; do \
|
||||
relfile=`echo "$$file" | sed 's|^.*/||'`; \
|
||||
relfile_i=`echo "$$relfile" | sed 's|\.info$$||;s|$$|.i|'`; \
|
||||
(if cd "$(DESTDIR)$(infodir)"; then \
|
||||
echo " rm -f $$relfile $$relfile-[0-9] $$relfile-[0-9][0-9] $$relfile_i[0-9] $$relfile_i[0-9][0-9])"; \
|
||||
rm -f $$relfile $$relfile-[0-9] $$relfile-[0-9][0-9] $$relfile_i[0-9] $$relfile_i[0-9][0-9]; \
|
||||
else :; fi); \
|
||||
done
|
||||
|
||||
mostlyclean-aminfo:
|
||||
-rm -rf texinfo.aux texinfo.cp texinfo.cps texinfo.fn texinfo.fns texinfo.ky \
|
||||
texinfo.kys texinfo.log texinfo.op texinfo.pg texinfo.tmp \
|
||||
texinfo.toc texinfo.tp texinfo.tps texinfo.vr texinfo.dvi \
|
||||
texinfo.pdf texinfo.ps texinfo.html info-stnd.aux \
|
||||
info-stnd.cp info-stnd.cps info-stnd.fn info-stnd.ky \
|
||||
info-stnd.log info-stnd.pg info-stnd.pgs info-stnd.tmp \
|
||||
info-stnd.toc info-stnd.tp info-stnd.tps info-stnd.vr \
|
||||
info-stnd.dvi info-stnd.pdf info-stnd.ps info-stnd.html \
|
||||
info.aux info.cp info.cps info.fn info.ky info.log info.pg \
|
||||
info.pgs info.tmp info.toc info.tp info.tps info.vr info.dvi \
|
||||
info.pdf info.ps info.html
|
||||
|
||||
maintainer-clean-aminfo:
|
||||
@list='$(INFO_DEPS)'; for i in $$list; do \
|
||||
i_i=`echo "$$i" | sed 's|\.info$$||;s|$$|.i|'`; \
|
||||
echo " rm -f $$i $$i-[0-9] $$i-[0-9][0-9] $$i_i[0-9] $$i_i[0-9][0-9]"; \
|
||||
rm -f $$i $$i-[0-9] $$i-[0-9][0-9] $$i_i[0-9] $$i_i[0-9][0-9]; \
|
||||
done
|
||||
install-man1: $(man1_MANS) $(man_MANS)
|
||||
@$(NORMAL_INSTALL)
|
||||
test -z "$(man1dir)" || $(mkdir_p) "$(DESTDIR)$(man1dir)"
|
||||
@list='$(man1_MANS) $(dist_man1_MANS) $(nodist_man1_MANS)'; \
|
||||
l2='$(man_MANS) $(dist_man_MANS) $(nodist_man_MANS)'; \
|
||||
for i in $$l2; do \
|
||||
case "$$i" in \
|
||||
*.1*) list="$$list $$i" ;; \
|
||||
esac; \
|
||||
done; \
|
||||
for i in $$list; do \
|
||||
if test -f $(srcdir)/$$i; then file=$(srcdir)/$$i; \
|
||||
else file=$$i; fi; \
|
||||
ext=`echo $$i | sed -e 's/^.*\\.//'`; \
|
||||
case "$$ext" in \
|
||||
1*) ;; \
|
||||
*) ext='1' ;; \
|
||||
esac; \
|
||||
inst=`echo $$i | sed -e 's/\\.[0-9a-z]*$$//'`; \
|
||||
inst=`echo $$inst | sed -e 's/^.*\///'`; \
|
||||
inst=`echo $$inst | sed '$(transform)'`.$$ext; \
|
||||
echo " $(INSTALL_DATA) '$$file' '$(DESTDIR)$(man1dir)/$$inst'"; \
|
||||
$(INSTALL_DATA) "$$file" "$(DESTDIR)$(man1dir)/$$inst"; \
|
||||
done
|
||||
uninstall-man1:
|
||||
@$(NORMAL_UNINSTALL)
|
||||
@list='$(man1_MANS) $(dist_man1_MANS) $(nodist_man1_MANS)'; \
|
||||
l2='$(man_MANS) $(dist_man_MANS) $(nodist_man_MANS)'; \
|
||||
for i in $$l2; do \
|
||||
case "$$i" in \
|
||||
*.1*) list="$$list $$i" ;; \
|
||||
esac; \
|
||||
done; \
|
||||
for i in $$list; do \
|
||||
ext=`echo $$i | sed -e 's/^.*\\.//'`; \
|
||||
case "$$ext" in \
|
||||
1*) ;; \
|
||||
*) ext='1' ;; \
|
||||
esac; \
|
||||
inst=`echo $$i | sed -e 's/\\.[0-9a-z]*$$//'`; \
|
||||
inst=`echo $$inst | sed -e 's/^.*\///'`; \
|
||||
inst=`echo $$inst | sed '$(transform)'`.$$ext; \
|
||||
echo " rm -f '$(DESTDIR)$(man1dir)/$$inst'"; \
|
||||
rm -f "$(DESTDIR)$(man1dir)/$$inst"; \
|
||||
done
|
||||
install-man5: $(man5_MANS) $(man_MANS)
|
||||
@$(NORMAL_INSTALL)
|
||||
test -z "$(man5dir)" || $(mkdir_p) "$(DESTDIR)$(man5dir)"
|
||||
@list='$(man5_MANS) $(dist_man5_MANS) $(nodist_man5_MANS)'; \
|
||||
l2='$(man_MANS) $(dist_man_MANS) $(nodist_man_MANS)'; \
|
||||
for i in $$l2; do \
|
||||
case "$$i" in \
|
||||
*.5*) list="$$list $$i" ;; \
|
||||
esac; \
|
||||
done; \
|
||||
for i in $$list; do \
|
||||
if test -f $(srcdir)/$$i; then file=$(srcdir)/$$i; \
|
||||
else file=$$i; fi; \
|
||||
ext=`echo $$i | sed -e 's/^.*\\.//'`; \
|
||||
case "$$ext" in \
|
||||
5*) ;; \
|
||||
*) ext='5' ;; \
|
||||
esac; \
|
||||
inst=`echo $$i | sed -e 's/\\.[0-9a-z]*$$//'`; \
|
||||
inst=`echo $$inst | sed -e 's/^.*\///'`; \
|
||||
inst=`echo $$inst | sed '$(transform)'`.$$ext; \
|
||||
echo " $(INSTALL_DATA) '$$file' '$(DESTDIR)$(man5dir)/$$inst'"; \
|
||||
$(INSTALL_DATA) "$$file" "$(DESTDIR)$(man5dir)/$$inst"; \
|
||||
done
|
||||
uninstall-man5:
|
||||
@$(NORMAL_UNINSTALL)
|
||||
@list='$(man5_MANS) $(dist_man5_MANS) $(nodist_man5_MANS)'; \
|
||||
l2='$(man_MANS) $(dist_man_MANS) $(nodist_man_MANS)'; \
|
||||
for i in $$l2; do \
|
||||
case "$$i" in \
|
||||
*.5*) list="$$list $$i" ;; \
|
||||
esac; \
|
||||
done; \
|
||||
for i in $$list; do \
|
||||
ext=`echo $$i | sed -e 's/^.*\\.//'`; \
|
||||
case "$$ext" in \
|
||||
5*) ;; \
|
||||
*) ext='5' ;; \
|
||||
esac; \
|
||||
inst=`echo $$i | sed -e 's/\\.[0-9a-z]*$$//'`; \
|
||||
inst=`echo $$inst | sed -e 's/^.*\///'`; \
|
||||
inst=`echo $$inst | sed '$(transform)'`.$$ext; \
|
||||
echo " rm -f '$(DESTDIR)$(man5dir)/$$inst'"; \
|
||||
rm -f "$(DESTDIR)$(man5dir)/$$inst"; \
|
||||
done
|
||||
tags: TAGS
|
||||
TAGS:
|
||||
|
||||
ctags: CTAGS
|
||||
CTAGS:
|
||||
|
||||
|
||||
distdir: $(DISTFILES)
|
||||
@srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
|
||||
topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
|
||||
list='$(DISTFILES)'; for file in $$list; do \
|
||||
case $$file in \
|
||||
$(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
|
||||
$(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
|
||||
esac; \
|
||||
if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
|
||||
dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
|
||||
if test "$$dir" != "$$file" && test "$$dir" != "."; then \
|
||||
dir="/$$dir"; \
|
||||
$(mkdir_p) "$(distdir)$$dir"; \
|
||||
else \
|
||||
dir=''; \
|
||||
fi; \
|
||||
if test -d $$d/$$file; then \
|
||||
if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
|
||||
cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
|
||||
fi; \
|
||||
cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
|
||||
else \
|
||||
test -f $(distdir)/$$file \
|
||||
|| cp -p $$d/$$file $(distdir)/$$file \
|
||||
|| exit 1; \
|
||||
fi; \
|
||||
done
|
||||
$(MAKE) $(AM_MAKEFLAGS) \
|
||||
top_distdir="$(top_distdir)" distdir="$(distdir)" \
|
||||
dist-info
|
||||
check-am: all-am
|
||||
check: check-am
|
||||
all-am: Makefile $(INFO_DEPS) $(MANS)
|
||||
installdirs:
|
||||
for dir in "$(DESTDIR)$(infodir)" "$(DESTDIR)$(man1dir)" "$(DESTDIR)$(man5dir)"; do \
|
||||
test -z "$$dir" || $(mkdir_p) "$$dir"; \
|
||||
done
|
||||
install: install-am
|
||||
install-exec: install-exec-am
|
||||
install-data: install-data-am
|
||||
uninstall: uninstall-am
|
||||
|
||||
install-am: all-am
|
||||
@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
|
||||
|
||||
installcheck: installcheck-am
|
||||
install-strip:
|
||||
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
|
||||
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
|
||||
`test -z '$(STRIP)' || \
|
||||
echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
|
||||
mostlyclean-generic:
|
||||
|
||||
clean-generic:
|
||||
|
||||
distclean-generic:
|
||||
-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
|
||||
-test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES)
|
||||
|
||||
maintainer-clean-generic:
|
||||
@echo "This command is intended for maintainers to use"
|
||||
@echo "it deletes files that may require special tools to rebuild."
|
||||
@INSTALL_WARNINGS_FALSE@install-data-local:
|
||||
clean: clean-am
|
||||
|
||||
clean-am: clean-generic mostlyclean-am
|
||||
|
||||
distclean: distclean-am
|
||||
-rm -f Makefile
|
||||
distclean-am: clean-am distclean-generic
|
||||
|
||||
dvi: dvi-am
|
||||
|
||||
dvi-am: $(DVIS)
|
||||
|
||||
html: html-am
|
||||
|
||||
html-am: $(HTMLS)
|
||||
|
||||
info: info-am
|
||||
|
||||
info-am: $(INFO_DEPS)
|
||||
|
||||
install-data-am: install-data-local install-info-am install-man
|
||||
|
||||
install-exec-am:
|
||||
|
||||
install-info: install-info-am
|
||||
|
||||
install-info-am: $(INFO_DEPS)
|
||||
@$(NORMAL_INSTALL)
|
||||
test -z "$(infodir)" || $(mkdir_p) "$(DESTDIR)$(infodir)"
|
||||
@srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
|
||||
list='$(INFO_DEPS)'; \
|
||||
for file in $$list; do \
|
||||
case $$file in \
|
||||
$(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
|
||||
esac; \
|
||||
if test -f $$file; then d=.; else d=$(srcdir); fi; \
|
||||
file_i=`echo "$$file" | sed 's|\.info$$||;s|$$|.i|'`; \
|
||||
for ifile in $$d/$$file $$d/$$file-[0-9] $$d/$$file-[0-9][0-9] \
|
||||
$$d/$$file_i[0-9] $$d/$$file_i[0-9][0-9] ; do \
|
||||
if test -f $$ifile; then \
|
||||
relfile=`echo "$$ifile" | sed 's|^.*/||'`; \
|
||||
echo " $(INSTALL_DATA) '$$ifile' '$(DESTDIR)$(infodir)/$$relfile'"; \
|
||||
$(INSTALL_DATA) "$$ifile" "$(DESTDIR)$(infodir)/$$relfile"; \
|
||||
else : ; fi; \
|
||||
done; \
|
||||
done
|
||||
@$(POST_INSTALL)
|
||||
@if (install-info --version && \
|
||||
install-info --version 2>&1 | sed 1q | grep -i -v debian) >/dev/null 2>&1; then \
|
||||
list='$(INFO_DEPS)'; \
|
||||
for file in $$list; do \
|
||||
relfile=`echo "$$file" | sed 's|^.*/||'`; \
|
||||
echo " install-info --info-dir='$(DESTDIR)$(infodir)' '$(DESTDIR)$(infodir)/$$relfile'";\
|
||||
install-info --info-dir="$(DESTDIR)$(infodir)" "$(DESTDIR)$(infodir)/$$relfile" || :;\
|
||||
done; \
|
||||
else : ; fi
|
||||
install-man: install-man1 install-man5
|
||||
|
||||
installcheck-am:
|
||||
|
||||
maintainer-clean: maintainer-clean-am
|
||||
-rm -f Makefile
|
||||
maintainer-clean-am: distclean-am maintainer-clean-1 \
|
||||
maintainer-clean-aminfo maintainer-clean-generic \
|
||||
maintainer-clean-vti
|
||||
|
||||
mostlyclean: mostlyclean-am
|
||||
|
||||
mostlyclean-am: mostlyclean-1 mostlyclean-aminfo mostlyclean-generic \
|
||||
mostlyclean-vti
|
||||
|
||||
pdf: pdf-am
|
||||
|
||||
pdf-am: $(PDFS)
|
||||
|
||||
ps: ps-am
|
||||
|
||||
ps-am: $(PSS)
|
||||
|
||||
uninstall-am: uninstall-info-am uninstall-man
|
||||
|
||||
uninstall-man: uninstall-man1 uninstall-man5
|
||||
|
||||
.PHONY: all all-am check check-am clean clean-generic dist-info \
|
||||
distclean distclean-generic distdir dvi dvi-am html html-am \
|
||||
info info-am install install-am install-data install-data-am \
|
||||
install-data-local install-exec install-exec-am install-info \
|
||||
install-info-am install-man install-man1 install-man5 \
|
||||
install-strip installcheck installcheck-am installdirs \
|
||||
maintainer-clean maintainer-clean-1 maintainer-clean-aminfo \
|
||||
maintainer-clean-generic maintainer-clean-vti mostlyclean \
|
||||
mostlyclean-1 mostlyclean-aminfo mostlyclean-generic \
|
||||
mostlyclean-vti pdf pdf-am ps ps-am uninstall uninstall-am \
|
||||
uninstall-info-am uninstall-man uninstall-man1 uninstall-man5
|
||||
|
||||
|
||||
@INSTALL_WARNINGS_TRUE@install-data-local:
|
||||
@INSTALL_WARNINGS_TRUE@ @echo
|
||||
@INSTALL_WARNINGS_TRUE@ @echo "WARNING: If your texmf tree does not already contain"
|
||||
@INSTALL_WARNINGS_TRUE@ @echo " up-to-date versions, you must install"
|
||||
@INSTALL_WARNINGS_TRUE@ @echo " texinfo.tex and txi-??.tex manually,"
|
||||
@INSTALL_WARNINGS_TRUE@ @echo " perhaps in TEXMF/tex/texinfo/,"
|
||||
@INSTALL_WARNINGS_TRUE@ @echo " where TEXMF is a root of your TeX tree."
|
||||
@INSTALL_WARNINGS_TRUE@ @echo " See doc/README for some considerations."
|
||||
@INSTALL_WARNINGS_TRUE@ @echo " You can run make TEXMF=/your/texmf install-tex to do this."
|
||||
@INSTALL_WARNINGS_TRUE@ @echo
|
||||
@INSTALL_WARNINGS_TRUE@ @echo " You may also need to install epsf.tex and (if you"
|
||||
@INSTALL_WARNINGS_TRUE@ @echo " use pdftex) pdfcolor.tex in TEXMF/tex/generic/dvips"
|
||||
@INSTALL_WARNINGS_TRUE@ @echo " and TEXMF/pdftex/plain/misc/pdfcolor.tex respectively,"
|
||||
@INSTALL_WARNINGS_TRUE@ @echo " if your TeX installation did not include them."
|
||||
install-tex:
|
||||
test -n "$(TEXMF)" || (echo "TEXMF must be set." >&2; exit 1)
|
||||
$(mkinstalldirs) $(DESTDIR)$(texmf_texinfo) $(DESTDIR)$(texmf_dvips) $(DESTDIR)$(texmf_pdftex_misc)
|
||||
$(INSTALL_DATA) $(srcdir)/texinfo.tex $(DESTDIR)$(texmf_texinfo)/texinfo.tex
|
||||
$(INSTALL_DATA) $(srcdir)/epsf.tex $(DESTDIR)$(texmf_dvips)/epsf.tex
|
||||
$(INSTALL_DATA) $(srcdir)/pdfcolor.tex $(DESTDIR)$(texmf_pdftex_misc)/pdfcolor.tex
|
||||
for f in $(TXI_XLATE); do \
|
||||
$(INSTALL_DATA) $(srcdir)/$$f $(DESTDIR)$(texmf_texinfo)/$$f; done
|
||||
@MAINTAINER_MODE_TRUE@info.1: $(top_srcdir)/info/info.c $(common_mandeps)
|
||||
@MAINTAINER_MODE_TRUE@ $(HELP2MAN) --name="read Info documents" `basename $@ .1` >$@
|
||||
@MAINTAINER_MODE_TRUE@infokey.1: $(top_srcdir)/info/infokey.c $(common_mandeps)
|
||||
@MAINTAINER_MODE_TRUE@ $(HELP2MAN) --name="compile customizations for Info" `basename $@ .1` >$@
|
||||
@MAINTAINER_MODE_TRUE@install-info.1: $(top_srcdir)/util/install-info.c $(common_mandeps)
|
||||
@MAINTAINER_MODE_TRUE@ $(HELP2MAN) --name="update info/dir entries" `basename $@ .1` >$@
|
||||
@MAINTAINER_MODE_TRUE@makeinfo.1: $(top_srcdir)/makeinfo/makeinfo.c $(common_mandeps)
|
||||
@MAINTAINER_MODE_TRUE@ $(HELP2MAN) --name="translate Texinfo documents" `basename $@ .1` >$@
|
||||
@MAINTAINER_MODE_TRUE@texi2dvi.1: $(top_srcdir)/util/texi2dvi $(common_mandeps)
|
||||
@MAINTAINER_MODE_TRUE@ $(HELP2MAN) --name="print Texinfo documents" `basename $@ .1` >$@
|
||||
@MAINTAINER_MODE_TRUE@texindex.1: $(top_srcdir)/util/texindex.c $(common_mandeps)
|
||||
@MAINTAINER_MODE_TRUE@ $(HELP2MAN) --name="sort Texinfo index files" `basename $@ .1` >$@
|
||||
|
||||
# Do not create info files for distribution.
|
||||
dist-info:
|
||||
# Tell versions [3.59,3.63) of GNU make to not export all variables.
|
||||
# Otherwise a system limit (for SysV at least) may be exceeded.
|
||||
.NOEXPORT:
|
44
external/gpl2/texinfo/dist/doc/README
vendored
Normal file
44
external/gpl2/texinfo/dist/doc/README
vendored
Normal file
@ -0,0 +1,44 @@
|
||||
Id: README,v 1.4 2004/04/11 17:56:45 karl Exp
|
||||
texinfo/doc/README
|
||||
|
||||
Copyright (C) 2002 Free Software Foundation, Inc.
|
||||
|
||||
Copying and distribution of this file, with or without modification,
|
||||
are permitted in any medium without royalty provided the copyright
|
||||
notice and this notice are preserved.
|
||||
|
||||
This directory contains documentation on the Texinfo system and the TeX
|
||||
sources needed to process Texinfo sources. We recommend using the
|
||||
texi2dvi included in this distribution to run a Texinfo manual through
|
||||
TeX to produce a DVI file.
|
||||
|
||||
The .tex files are not installed automatically because TeX installations
|
||||
vary so widely. Installing them in the wrong place would give a false
|
||||
sense of security. So, you should simply cp *.tex to the appropriate
|
||||
place. If your installation follows the TeX Directory Structure
|
||||
standard (http://tug.org/tds/), this will be the directory
|
||||
TEXMF/tex/texinfo/ for texinfo.tex, TEXMF/tex/generic/dvips/ for epsf.tex,
|
||||
and TEXMF/pdftex/plain/misc for pdfcolor.tex. If you use the default
|
||||
installation paths, TEXMF will be /usr/local/share/texmf. On systems
|
||||
with TeX preinstalled, as most GNU/Linux distributions offer, TEXMF
|
||||
will often be something like /usr/share/texmf.
|
||||
|
||||
It is also possible to put these .tex files in a `local' place instead
|
||||
of overwriting existing ones, but this is more complicated. See your TeX
|
||||
documentation in general and the texmf.cnf file in particular for information.
|
||||
|
||||
If you add files to your TeX installations, not just replace existing
|
||||
ones, you very likely have to update your ls-R file; do this with the
|
||||
mktexlsr command. In older versions, this was named MakeTeXls-R.
|
||||
|
||||
You can get the latest texinfo.tex from
|
||||
ftp://ftp.gnu.org/gnu/texinfo/texinfo.tex (and all GNU mirrors)
|
||||
ftp://tug.org/tex/texinfo.tex (and all CTAN mirrors)
|
||||
or on the FSF machines in /home/gd/gnu/doc/texinfo.tex.
|
||||
If you have problems with the version in this distribution, please check
|
||||
for a newer version.
|
||||
|
||||
epsf.tex comes with dvips distributions, and you may already have it
|
||||
installed. The version here is functionally identical but slightly
|
||||
nicer than the one in dvips574. The changes have been sent to the
|
||||
epsf.tex maintainer.
|
547
external/gpl2/texinfo/dist/doc/epsf.tex
vendored
Normal file
547
external/gpl2/texinfo/dist/doc/epsf.tex
vendored
Normal file
@ -0,0 +1,547 @@
|
||||
%%% ====================================================================
|
||||
%%% This file is freely redistributable and placed into the
|
||||
%%% public domain by Tomas Rokicki.
|
||||
%%% @TeX-file{
|
||||
%%% author = "Tom Rokicki",
|
||||
%%% version = "2.7k",
|
||||
%%% date = "19 July 1997",
|
||||
%%% time = "10:00:05 MDT",
|
||||
%%% filename = "epsf.tex",
|
||||
%%% address = "Tom Rokicki
|
||||
%%% Box 2081
|
||||
%%% Stanford, CA 94309
|
||||
%%% USA",
|
||||
%%% telephone = "+1 415 855 9989",
|
||||
%%% email = "rokicki@cs.stanford.edu (Internet)",
|
||||
%%% codetable = "ISO/ASCII",
|
||||
%%% keywords = "PostScript, TeX",
|
||||
%%% supported = "yes",
|
||||
%%% abstract = "This file contains macros to support the inclusion
|
||||
%%% of Encapsulated PostScript files in TeX documents.",
|
||||
%%% docstring = "This file contains TeX macros to include an
|
||||
%%% Encapsulated PostScript graphic. It works
|
||||
%%% by finding the bounding box comment,
|
||||
%%% calculating the correct scale values, and
|
||||
%%% inserting a vbox of the appropriate size at
|
||||
%%% the current position in the TeX document.
|
||||
%%%
|
||||
%%% To use, simply say
|
||||
%%%
|
||||
%%% \input epsf % somewhere early on in your TeX file
|
||||
%%%
|
||||
%%% % then where you want to insert a vbox for a figure:
|
||||
%%% \epsfbox{filename.ps}
|
||||
%%%
|
||||
%%% Alternatively, you can supply your own
|
||||
%%% bounding box by
|
||||
%%%
|
||||
%%% \epsfbox[0 0 30 50]{filename.ps}
|
||||
%%%
|
||||
%%% This will not read in the file, and will
|
||||
%%% instead use the bounding box you specify.
|
||||
%%%
|
||||
%%% The effect will be to typeset the figure as
|
||||
%%% a TeX box, at the point of your \epsfbox
|
||||
%%% command. By default, the graphic will have
|
||||
%%% its `natural' width (namely the width of
|
||||
%%% its bounding box, as described in
|
||||
%%% filename.ps). The TeX box will have depth
|
||||
%%% zero.
|
||||
%%%
|
||||
%%% You can enlarge or reduce the figure by
|
||||
%%% saying
|
||||
%%%
|
||||
%%% \epsfxsize=<dimen> \epsfbox{filename.ps}
|
||||
%%% or
|
||||
%%% \epsfysize=<dimen> \epsfbox{filename.ps}
|
||||
%%%
|
||||
%%% instead. Then the width of the TeX box will
|
||||
%%% be \epsfxsize and its height will be scaled
|
||||
%%% proportionately (or the height will be
|
||||
%%% \epsfysize and its width will be scaled
|
||||
%%% proportionately).
|
||||
%%%
|
||||
%%% The width (and height) is restored to zero
|
||||
%%% after each use, so \epsfxsize or \epsfysize
|
||||
%%% must be specified before EACH use of
|
||||
%%% \epsfbox.
|
||||
%%%
|
||||
%%% A more general facility for sizing is
|
||||
%%% available by defining the \epsfsize macro.
|
||||
%%% Normally you can redefine this macro to do
|
||||
%%% almost anything. The first parameter is
|
||||
%%% the natural x size of the PostScript
|
||||
%%% graphic, the second parameter is the
|
||||
%%% natural y size of the PostScript graphic.
|
||||
%%% It must return the xsize to use, or 0 if
|
||||
%%% natural scaling is to be used. Common uses
|
||||
%%% include:
|
||||
%%%
|
||||
%%% \epsfxsize % just leave the old value alone
|
||||
%%% 0pt % use the natural sizes
|
||||
%%% #1 % use the natural sizes
|
||||
%%% \hsize % scale to full width
|
||||
%%% 0.5#1 % scale to 50% of natural size
|
||||
%%% \ifnum #1>\hsize\hsize\else#1\fi
|
||||
%%% % smaller of natural, hsize
|
||||
%%%
|
||||
%%% If you want TeX to report the size of the
|
||||
%%% figure (as a message on your terminal when
|
||||
%%% it processes each figure), say
|
||||
%%% `\epsfverbosetrue'.
|
||||
%%%
|
||||
%%% If you only want to get the bounding box
|
||||
%%% extents, without producing any output boxes
|
||||
%%% or \special{}, then say
|
||||
%%% \epsfgetbb{filename}. The extents will be
|
||||
%%% saved in the macros \epsfllx \epsflly
|
||||
%%% \epsfurx \epsfury in PostScript units of
|
||||
%%% big points.
|
||||
%%%
|
||||
%%% Revision history:
|
||||
%%%
|
||||
%%% ---------------------------------------------
|
||||
%%% epsf.tex macro file:
|
||||
%%% Originally written by Tomas Rokicki of
|
||||
%%% Radical Eye Software, 29 Mar 1989.
|
||||
%%%
|
||||
%%% ---------------------------------------------
|
||||
%%% Revised by Don Knuth, 3 Jan 1990.
|
||||
%%%
|
||||
%%% ---------------------------------------------
|
||||
%%% Revised by Tomas Rokicki, 18 Jul 1990.
|
||||
%%% Accept bounding boxes with no space after
|
||||
%%% the colon.
|
||||
%%%
|
||||
%%% ---------------------------------------------
|
||||
%%% Revised by Nelson H. F. Beebe
|
||||
%%% <beebe@math.utah.edu>, 03 Dec 1991 [2.0].
|
||||
%%% Add version number and date typeout.
|
||||
%%%
|
||||
%%% Use \immediate\write16 instead of \message
|
||||
%%% to ensure output on new line.
|
||||
%%%
|
||||
%%% Handle nested EPS files.
|
||||
%%%
|
||||
%%% Handle %%BoundingBox: (atend) lines.
|
||||
%%%
|
||||
%%% Do not quit when blank lines are found.
|
||||
%%%
|
||||
%%% Add a few percents to remove generation of
|
||||
%%% spurious blank space.
|
||||
%%%
|
||||
%%% Move \special output to
|
||||
%%% \epsfspecial{filename} so that other macro
|
||||
%%% packages can input this one, then change
|
||||
%%% the definition of \epsfspecial to match
|
||||
%%% another DVI driver.
|
||||
%%%
|
||||
%%% Move size computation to \epsfsetsize which
|
||||
%%% can be called by the user; the verbose
|
||||
%%% output of the bounding box and scaled width
|
||||
%%% and height happens here.
|
||||
%%%
|
||||
%%% ---------------------------------------------
|
||||
%%% Revised by Nelson H. F. Beebe
|
||||
%%% <beebe@math.utah.edu>, 05 May 1992 [2.1].
|
||||
%%% Wrap \leavevmode\hbox{} around \vbox{} with
|
||||
%%% the \special so that \epsffile{} can be
|
||||
%%% used inside \begin{center}...\end{center}
|
||||
%%%
|
||||
%%% ---------------------------------------------
|
||||
%%% Revised by Nelson H. F. Beebe
|
||||
%%% <beebe@math.utah.edu>, 09 Dec 1992 [2.2].
|
||||
%%% Introduce \epsfshow{true,false} and
|
||||
%%% \epsfframe{true,false} macros; the latter
|
||||
%%% suppresses the insertion of the PostScript,
|
||||
%%% and instead just creates an empty box,
|
||||
%%% which may be handy for rapid prototyping.
|
||||
%%%
|
||||
%%% ---------------------------------------------
|
||||
%%% Revised by Nelson H. F. Beebe
|
||||
%%% <beebe@math.utah.edu>, 14 Dec 1992 [2.3].
|
||||
%%% Add \epsfshowfilename{true,false}. When
|
||||
%%% true, and \epsfshowfalse is specified, the
|
||||
%%% PostScript file name will be displayed
|
||||
%%% centered in the figure box.
|
||||
%%%
|
||||
%%% ---------------------------------------------
|
||||
%%% Revised by Nelson H. F. Beebe
|
||||
%%% <beebe@math.utah.edu>, 20 June 1993 [2.4].
|
||||
%%% Remove non-zero debug setting of \epsfframemargin,
|
||||
%%% and change margin handling to preserve EPS image
|
||||
%%% size and aspect ratio, so that the actual
|
||||
%%% box is \epsfxsize+\epsfframemargin wide by
|
||||
%%% \epsfysize+\epsfframemargin high.
|
||||
%%% Reduce output of \epsfshowfilenametrue to
|
||||
%%% just the bare file name.
|
||||
%%%
|
||||
%%% ---------------------------------------------
|
||||
%%% Revised by Nelson H. F. Beebe
|
||||
%%% <beebe@math.utah.edu>, 13 July 1993 [2.5].
|
||||
%%% Add \epsfframethickness for control of
|
||||
%%% \epsfframe frame lines.
|
||||
%%%
|
||||
%%% ---------------------------------------------
|
||||
%%% Revised by Nelson H. F. Beebe
|
||||
%%% <beebe@math.utah.edu>, 02 July 1996 [2.6]
|
||||
%%% Add missing initialization \epsfatendfalse;
|
||||
%%% the lack of this resulted in the wrong
|
||||
%%% BoundingBox being picked up, mea culpa, sigh...
|
||||
%%% ---------------------------------------------
|
||||
%%%
|
||||
%%% ---------------------------------------------
|
||||
%%% Revised by Nelson H. F. Beebe
|
||||
%%% <beebe@math.utah.edu>, 25 October 1996 [2.7]
|
||||
%%% Update to match changes in from dvips 5-600
|
||||
%%% distribution: new user-accessible macros:
|
||||
%%% \epsfclipon, \epsfclipoff, \epsfdrafton,
|
||||
%%% \epsfdraftoff, change \empty to \epsfempty.
|
||||
%%% ---------------------------------------------
|
||||
%%%
|
||||
%%% Modified to avoid verbosity, give help.
|
||||
%%% --kb@cs.umb.edu, for Texinfo.
|
||||
%%% }
|
||||
%%% ====================================================================
|
||||
%
|
||||
\ifx\epsfannounce\undefined \def\epsfannounce{\immediate\write16}\fi
|
||||
\epsfannounce{This is `epsf.tex' v2.7k <10 July 1997>}%
|
||||
%
|
||||
\newread\epsffilein % file to \read
|
||||
\newif\ifepsfatend % need to scan to LAST %%BoundingBox comment?
|
||||
\newif\ifepsfbbfound % success?
|
||||
\newif\ifepsfdraft % use draft mode?
|
||||
\newif\ifepsffileok % continue looking for the bounding box?
|
||||
\newif\ifepsfframe % frame the bounding box?
|
||||
\newif\ifepsfshow % show PostScript file, or just bounding box?
|
||||
\epsfshowtrue % default is to display PostScript file
|
||||
\newif\ifepsfshowfilename % show the file name if \epsfshowfalse specified?
|
||||
\newif\ifepsfverbose % report what you're making?
|
||||
\newdimen\epsfframemargin % margin between box and frame
|
||||
\newdimen\epsfframethickness % thickness of frame rules
|
||||
\newdimen\epsfrsize % vertical size before scaling
|
||||
\newdimen\epsftmp % register for arithmetic manipulation
|
||||
\newdimen\epsftsize % horizontal size before scaling
|
||||
\newdimen\epsfxsize % horizontal size after scaling
|
||||
\newdimen\epsfysize % vertical size after scaling
|
||||
\newdimen\pspoints % conversion factor
|
||||
%
|
||||
\pspoints = 1bp % Adobe points are `big'
|
||||
\epsfxsize = 0pt % default value, means `use natural size'
|
||||
\epsfysize = 0pt % ditto
|
||||
\epsfframemargin = 0pt % default value: frame box flush around picture
|
||||
\epsfframethickness = 0.4pt % TeX's default rule thickness
|
||||
%
|
||||
\def\epsfbox#1{\global\def\epsfllx{72}\global\def\epsflly{72}%
|
||||
\global\def\epsfurx{540}\global\def\epsfury{720}%
|
||||
\def\lbracket{[}\def\testit{#1}\ifx\testit\lbracket
|
||||
\let\next=\epsfgetlitbb\else\let\next=\epsfnormal\fi\next{#1}}%
|
||||
%
|
||||
% We use \epsfgetlitbb if the user specified an explicit bounding box,
|
||||
% and \epsfnormal otherwise. Because \epsfgetbb can be called
|
||||
% separately to retrieve the bounding box, we move the verbose
|
||||
% printing the bounding box extents and size on the terminal to
|
||||
% \epsfstatus. Therefore, when the user provided the bounding box,
|
||||
% \epsfgetbb will not be called, so we must call \epsfsetsize and
|
||||
% \epsfstatus ourselves.
|
||||
%
|
||||
\def\epsfgetlitbb#1#2 #3 #4 #5]#6{%
|
||||
\epsfgrab #2 #3 #4 #5 .\\%
|
||||
\epsfsetsize
|
||||
\epsfstatus{#6}%
|
||||
\epsfsetgraph{#6}%
|
||||
}%
|
||||
%
|
||||
\def\epsfnormal#1{%
|
||||
\epsfgetbb{#1}%
|
||||
\epsfsetgraph{#1}%
|
||||
}%
|
||||
%
|
||||
\newhelp\epsfnoopenhelp{The PostScript image file must be findable by
|
||||
TeX, i.e., somewhere in the TEXINPUTS (or equivalent) path.}%
|
||||
%
|
||||
\def\epsfgetbb#1{%
|
||||
%
|
||||
% The first thing we need to do is to open the
|
||||
% PostScript file, if possible.
|
||||
%
|
||||
\openin\epsffilein=#1
|
||||
\ifeof\epsffilein
|
||||
\errhelp = \epsfnoopenhelp
|
||||
\errmessage{Could not open file #1, ignoring it}%
|
||||
\else %process the file
|
||||
{% %start a group to contain catcode changes
|
||||
% Make all special characters, except space, to be of type
|
||||
% `other' so we process the file in almost verbatim mode
|
||||
% (TeXbook, p. 344).
|
||||
\chardef\other=12
|
||||
\def\do##1{\catcode`##1=\other}%
|
||||
\dospecials
|
||||
\catcode`\ =10
|
||||
\epsffileoktrue %true while we are looping
|
||||
\epsfatendfalse %[02-Jul-1996]: add forgotten initialization
|
||||
\loop %reading lines from the EPS file
|
||||
\read\epsffilein to \epsffileline
|
||||
\ifeof\epsffilein %then no more input
|
||||
\epsffileokfalse %so set completion flag
|
||||
\else %otherwise process one line
|
||||
\expandafter\epsfaux\epsffileline:. \\%
|
||||
\fi
|
||||
\ifepsffileok
|
||||
\repeat
|
||||
\ifepsfbbfound
|
||||
\else
|
||||
\ifepsfverbose
|
||||
\immediate\write16{No BoundingBox comment found in %
|
||||
file #1; using defaults}%
|
||||
\fi
|
||||
\fi
|
||||
}% %end catcode changes
|
||||
\closein\epsffilein
|
||||
\fi %end of file processing
|
||||
\epsfsetsize %compute size parameters
|
||||
\epsfstatus{#1}%
|
||||
}%
|
||||
%
|
||||
% Clipping control:
|
||||
\def\epsfclipon{\def\epsfclipstring{ clip}}%
|
||||
\def\epsfclipoff{\def\epsfclipstring{\ifepsfdraft\space clip\fi}}%
|
||||
\epsfclipoff % default for dvips is OFF
|
||||
%
|
||||
% The special that is emitted by \epsfsetgraph comes from this macro.
|
||||
% It is defined separately to allow easy customization by other
|
||||
% packages that first \input epsf.tex, then redefine \epsfspecial.
|
||||
% This macro is invoked in the lower-left corner of a box of the
|
||||
% width and height determined from the arguments to \epsffile, or
|
||||
% from the %%BoundingBox in the EPS file itself.
|
||||
%
|
||||
% This version is for dvips:
|
||||
\def\epsfspecial#1{%
|
||||
\epsftmp=10\epsfxsize
|
||||
\divide\epsftmp\pspoints
|
||||
\ifnum\epsfrsize=0\relax
|
||||
\special{PSfile=\ifepsfdraft psdraft.ps\else#1\fi\space
|
||||
llx=\epsfllx\space
|
||||
lly=\epsflly\space
|
||||
urx=\epsfurx\space
|
||||
ury=\epsfury\space
|
||||
rwi=\number\epsftmp
|
||||
\epsfclipstring
|
||||
}%
|
||||
\else
|
||||
\epsfrsize=10\epsfysize
|
||||
\divide\epsfrsize\pspoints
|
||||
\special{PSfile=\ifepsfdraft psdraft.ps\else#1\fi\space
|
||||
llx=\epsfllx\space
|
||||
lly=\epsflly\space
|
||||
urx=\epsfurx\space
|
||||
ury=\epsfury\space
|
||||
rwi=\number\epsftmp\space
|
||||
rhi=\number\epsfrsize
|
||||
\epsfclipstring
|
||||
}%
|
||||
\fi
|
||||
}%
|
||||
%
|
||||
% \epsfframe macro adapted from the TeXbook, exercise 21.3, p. 223, 331.
|
||||
% but modified to set the box width to the natural width, rather
|
||||
% than the line width, and to include space for margins and rules
|
||||
\def\epsfframe#1%
|
||||
{%
|
||||
\leavevmode % so we can put this inside
|
||||
% a centered environment
|
||||
\setbox0 = \hbox{#1}%
|
||||
\dimen0 = \wd0 % natural width of argument
|
||||
\advance \dimen0 by 2\epsfframemargin % plus width of 2 margins
|
||||
\advance \dimen0 by 2\epsfframethickness % plus width of 2 rule lines
|
||||
\vbox
|
||||
{%
|
||||
\hrule height \epsfframethickness depth 0pt
|
||||
\hbox to \dimen0
|
||||
{%
|
||||
\hss
|
||||
\vrule width \epsfframethickness
|
||||
\kern \epsfframemargin
|
||||
\vbox {\kern \epsfframemargin \box0 \kern \epsfframemargin }%
|
||||
\kern \epsfframemargin
|
||||
\vrule width \epsfframethickness
|
||||
\hss
|
||||
}% end hbox
|
||||
\hrule height 0pt depth \epsfframethickness
|
||||
}% end vbox
|
||||
}%
|
||||
%
|
||||
\def\epsfsetgraph#1%
|
||||
{%
|
||||
%
|
||||
% Make the vbox and stick in a \special that the DVI driver can
|
||||
% parse. \vfil and \hfil are used to place the \special origin at
|
||||
% the lower-left corner of the vbox. \epsfspecial can be redefined
|
||||
% to produce alternate \special syntaxes.
|
||||
%
|
||||
\leavevmode
|
||||
\hbox{% so we can put this in \begin{center}...\end{center}
|
||||
\ifepsfframe\expandafter\epsfframe\fi
|
||||
{\vbox to\epsfysize
|
||||
{%
|
||||
\ifepsfshow
|
||||
% output \special{} at lower-left corner of figure box
|
||||
\vfil
|
||||
\hbox to \epsfxsize{\epsfspecial{#1}\hfil}%
|
||||
\else
|
||||
\vfil
|
||||
\hbox to\epsfxsize{%
|
||||
\hss
|
||||
\ifepsfshowfilename
|
||||
{%
|
||||
\epsfframemargin=3pt % local change of margin
|
||||
\epsfframe{{\tt #1}}%
|
||||
}%
|
||||
\fi
|
||||
\hss
|
||||
}%
|
||||
\vfil
|
||||
\fi
|
||||
}%
|
||||
}}%
|
||||
%
|
||||
% Reset \epsfxsize and \epsfysize, as documented above.
|
||||
%
|
||||
\global\epsfxsize=0pt
|
||||
\global\epsfysize=0pt
|
||||
}%
|
||||
%
|
||||
% Now we have to calculate the scale and offset values to use.
|
||||
% First we compute the natural sizes.
|
||||
%
|
||||
\def\epsfsetsize
|
||||
{%
|
||||
\epsfrsize=\epsfury\pspoints
|
||||
\advance\epsfrsize by-\epsflly\pspoints
|
||||
\epsftsize=\epsfurx\pspoints
|
||||
\advance\epsftsize by-\epsfllx\pspoints
|
||||
%
|
||||
% If `epsfxsize' is 0, we default to the natural size of the picture.
|
||||
% Otherwise we scale the graph to be \epsfxsize wide.
|
||||
%
|
||||
\epsfxsize=\epsfsize{\epsftsize}{\epsfrsize}%
|
||||
\ifnum \epsfxsize=0
|
||||
\ifnum \epsfysize=0
|
||||
\epsfxsize=\epsftsize
|
||||
\epsfysize=\epsfrsize
|
||||
\epsfrsize=0pt
|
||||
%
|
||||
% We have a sticky problem here: TeX doesn't do floating point arithmetic!
|
||||
% Our goal is to compute y = rx/t. The following loop does this reasonably
|
||||
% fast, with an error of at most about 16 sp (about 1/4000 pt).
|
||||
%
|
||||
\else
|
||||
\epsftmp=\epsftsize \divide\epsftmp\epsfrsize
|
||||
\epsfxsize=\epsfysize \multiply\epsfxsize\epsftmp
|
||||
\multiply\epsftmp\epsfrsize \advance\epsftsize-\epsftmp
|
||||
\epsftmp=\epsfysize
|
||||
\loop \advance\epsftsize\epsftsize \divide\epsftmp 2
|
||||
\ifnum \epsftmp>0
|
||||
\ifnum \epsftsize<\epsfrsize
|
||||
\else
|
||||
\advance\epsftsize-\epsfrsize \advance\epsfxsize\epsftmp
|
||||
\fi
|
||||
\repeat
|
||||
\epsfrsize=0pt
|
||||
\fi
|
||||
\else
|
||||
\ifnum \epsfysize=0
|
||||
\epsftmp=\epsfrsize \divide\epsftmp\epsftsize
|
||||
\epsfysize=\epsfxsize \multiply\epsfysize\epsftmp
|
||||
\multiply\epsftmp\epsftsize \advance\epsfrsize-\epsftmp
|
||||
\epsftmp=\epsfxsize
|
||||
\loop \advance\epsfrsize\epsfrsize \divide\epsftmp 2
|
||||
\ifnum \epsftmp>0
|
||||
\ifnum \epsfrsize<\epsftsize
|
||||
\else
|
||||
\advance\epsfrsize-\epsftsize \advance\epsfysize\epsftmp
|
||||
\fi
|
||||
\repeat
|
||||
\epsfrsize=0pt
|
||||
\else
|
||||
\epsfrsize=\epsfysize
|
||||
\fi
|
||||
\fi
|
||||
}%
|
||||
%
|
||||
% Issue some status messages if the user requested them
|
||||
%
|
||||
\def\epsfstatus#1{% arg = filename
|
||||
\ifepsfverbose
|
||||
\immediate\write16{#1: BoundingBox:
|
||||
llx = \epsfllx\space lly = \epsflly\space
|
||||
urx = \epsfurx\space ury = \epsfury\space}%
|
||||
\immediate\write16{#1: scaled width = \the\epsfxsize\space
|
||||
scaled height = \the\epsfysize}%
|
||||
\fi
|
||||
}%
|
||||
%
|
||||
% We still need to define the tricky \epsfaux macro. This requires
|
||||
% a couple of magic constants for comparison purposes.
|
||||
%
|
||||
{\catcode`\%=12 \global\let\epsfpercent=%\global\def\epsfbblit{%BoundingBox}}%
|
||||
\global\def\epsfatend{(atend)}%
|
||||
%
|
||||
% So we're ready to check for `%BoundingBox:' and to grab the
|
||||
% values if they are found.
|
||||
%
|
||||
% If we find a line
|
||||
%
|
||||
% %%BoundingBox: (atend)
|
||||
%
|
||||
% then we ignore it, but set a flag to force parsing all of the
|
||||
% file, so the last %%BoundingBox parsed will be the one used. This
|
||||
% is necessary, because EPS files can themselves contain other EPS
|
||||
% files with their own %%BoundingBox comments.
|
||||
%
|
||||
% If we find a line
|
||||
%
|
||||
% %%BoundingBox: llx lly urx ury
|
||||
%
|
||||
% then we save the 4 values in \epsfllx, \epsflly, \epsfurx, \epsfury.
|
||||
% Then, if we have not previously parsed an (atend), we flag completion
|
||||
% and can stop reading the file. Otherwise, we must keep on reading
|
||||
% to end of file so that we find the values on the LAST %%BoundingBox.
|
||||
\long\def\epsfaux#1#2:#3\\%
|
||||
{%
|
||||
\def\testit{#2}% % save second character up to just before colon
|
||||
\ifx#1\epsfpercent % then first char is percent (quick test)
|
||||
\ifx\testit\epsfbblit % then (slow test) we have %%BoundingBox
|
||||
\epsfgrab #3 . . . \\%
|
||||
\ifx\epsfllx\epsfatend % then ignore %%BoundingBox: (atend)
|
||||
\global\epsfatendtrue
|
||||
\else % else found %%BoundingBox: llx lly urx ury
|
||||
\ifepsfatend % then keep parsing ALL %%BoundingBox lines
|
||||
\else % else stop after first one parsed
|
||||
\epsffileokfalse
|
||||
\fi
|
||||
\global\epsfbbfoundtrue
|
||||
\fi
|
||||
\fi
|
||||
\fi
|
||||
}%
|
||||
%
|
||||
% Here we grab the values and stuff them in the appropriate definitions.
|
||||
%
|
||||
\def\epsfempty{}%
|
||||
\def\epsfgrab #1 #2 #3 #4 #5\\{%
|
||||
\global\def\epsfllx{#1}\ifx\epsfllx\epsfempty
|
||||
\epsfgrab #2 #3 #4 #5 .\\\else
|
||||
\global\def\epsflly{#2}%
|
||||
\global\def\epsfurx{#3}\global\def\epsfury{#4}\fi
|
||||
}%
|
||||
%
|
||||
% We default the epsfsize macro.
|
||||
%
|
||||
\def\epsfsize#1#2{\epsfxsize}%
|
||||
%
|
||||
% Finally, another definition for compatibility with older macros.
|
||||
%
|
||||
\let\epsffile=\epsfbox
|
||||
\endinput
|
||||
|
453
external/gpl2/texinfo/dist/doc/fdl.texi
vendored
Normal file
453
external/gpl2/texinfo/dist/doc/fdl.texi
vendored
Normal file
@ -0,0 +1,453 @@
|
||||
|
||||
@c $NetBSD: fdl.texi,v 1.1.1.1 2016/01/14 00:11:30 christos Exp $
|
||||
@node GNU Free Documentation License
|
||||
@appendixsec GNU Free Documentation License
|
||||
|
||||
@cindex FDL, GNU Free Documentation License
|
||||
@center Version 1.2, November 2002
|
||||
|
||||
@display
|
||||
Copyright @copyright{} 2000,2001,2002 Free Software Foundation, Inc.
|
||||
51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
|
||||
|
||||
Everyone is permitted to copy and distribute verbatim copies
|
||||
of this license document, but changing it is not allowed.
|
||||
@end display
|
||||
|
||||
@enumerate 0
|
||||
@item
|
||||
PREAMBLE
|
||||
|
||||
The purpose of this License is to make a manual, textbook, or other
|
||||
functional and useful document @dfn{free} in the sense of freedom: to
|
||||
assure everyone the effective freedom to copy and redistribute it,
|
||||
with or without modifying it, either commercially or noncommercially.
|
||||
Secondarily, this License preserves for the author and publisher a way
|
||||
to get credit for their work, while not being considered responsible
|
||||
for modifications made by others.
|
||||
|
||||
This License is a kind of ``copyleft'', which means that derivative
|
||||
works of the document must themselves be free in the same sense. It
|
||||
complements the GNU General Public License, which is a copyleft
|
||||
license designed for free software.
|
||||
|
||||
We have designed this License in order to use it for manuals for free
|
||||
software, because free software needs free documentation: a free
|
||||
program should come with manuals providing the same freedoms that the
|
||||
software does. But this License is not limited to software manuals;
|
||||
it can be used for any textual work, regardless of subject matter or
|
||||
whether it is published as a printed book. We recommend this License
|
||||
principally for works whose purpose is instruction or reference.
|
||||
|
||||
@item
|
||||
APPLICABILITY AND DEFINITIONS
|
||||
|
||||
This License applies to any manual or other work, in any medium, that
|
||||
contains a notice placed by the copyright holder saying it can be
|
||||
distributed under the terms of this License. Such a notice grants a
|
||||
world-wide, royalty-free license, unlimited in duration, to use that
|
||||
work under the conditions stated herein. The ``Document'', below,
|
||||
refers to any such manual or work. Any member of the public is a
|
||||
licensee, and is addressed as ``you''. You accept the license if you
|
||||
copy, modify or distribute the work in a way requiring permission
|
||||
under copyright law.
|
||||
|
||||
A ``Modified Version'' of the Document means any work containing the
|
||||
Document or a portion of it, either copied verbatim, or with
|
||||
modifications and/or translated into another language.
|
||||
|
||||
A ``Secondary Section'' is a named appendix or a front-matter section
|
||||
of the Document that deals exclusively with the relationship of the
|
||||
publishers or authors of the Document to the Document's overall
|
||||
subject (or to related matters) and contains nothing that could fall
|
||||
directly within that overall subject. (Thus, if the Document is in
|
||||
part a textbook of mathematics, a Secondary Section may not explain
|
||||
any mathematics.) The relationship could be a matter of historical
|
||||
connection with the subject or with related matters, or of legal,
|
||||
commercial, philosophical, ethical or political position regarding
|
||||
them.
|
||||
|
||||
The ``Invariant Sections'' are certain Secondary Sections whose titles
|
||||
are designated, as being those of Invariant Sections, in the notice
|
||||
that says that the Document is released under this License. If a
|
||||
section does not fit the above definition of Secondary then it is not
|
||||
allowed to be designated as Invariant. The Document may contain zero
|
||||
Invariant Sections. If the Document does not identify any Invariant
|
||||
Sections then there are none.
|
||||
|
||||
The ``Cover Texts'' are certain short passages of text that are listed,
|
||||
as Front-Cover Texts or Back-Cover Texts, in the notice that says that
|
||||
the Document is released under this License. A Front-Cover Text may
|
||||
be at most 5 words, and a Back-Cover Text may be at most 25 words.
|
||||
|
||||
A ``Transparent'' copy of the Document means a machine-readable copy,
|
||||
represented in a format whose specification is available to the
|
||||
general public, that is suitable for revising the document
|
||||
straightforwardly with generic text editors or (for images composed of
|
||||
pixels) generic paint programs or (for drawings) some widely available
|
||||
drawing editor, and that is suitable for input to text formatters or
|
||||
for automatic translation to a variety of formats suitable for input
|
||||
to text formatters. A copy made in an otherwise Transparent file
|
||||
format whose markup, or absence of markup, has been arranged to thwart
|
||||
or discourage subsequent modification by readers is not Transparent.
|
||||
An image format is not Transparent if used for any substantial amount
|
||||
of text. A copy that is not ``Transparent'' is called ``Opaque''.
|
||||
|
||||
Examples of suitable formats for Transparent copies include plain
|
||||
@sc{ascii} without markup, Texinfo input format, La@TeX{} input
|
||||
format, @acronym{SGML} or @acronym{XML} using a publicly available
|
||||
@acronym{DTD}, and standard-conforming simple @acronym{HTML},
|
||||
PostScript or @acronym{PDF} designed for human modification. Examples
|
||||
of transparent image formats include @acronym{PNG}, @acronym{XCF} and
|
||||
@acronym{JPG}. Opaque formats include proprietary formats that can be
|
||||
read and edited only by proprietary word processors, @acronym{SGML} or
|
||||
@acronym{XML} for which the @acronym{DTD} and/or processing tools are
|
||||
not generally available, and the machine-generated @acronym{HTML},
|
||||
PostScript or @acronym{PDF} produced by some word processors for
|
||||
output purposes only.
|
||||
|
||||
The ``Title Page'' means, for a printed book, the title page itself,
|
||||
plus such following pages as are needed to hold, legibly, the material
|
||||
this License requires to appear in the title page. For works in
|
||||
formats which do not have any title page as such, ``Title Page'' means
|
||||
the text near the most prominent appearance of the work's title,
|
||||
preceding the beginning of the body of the text.
|
||||
|
||||
A section ``Entitled XYZ'' means a named subunit of the Document whose
|
||||
title either is precisely XYZ or contains XYZ in parentheses following
|
||||
text that translates XYZ in another language. (Here XYZ stands for a
|
||||
specific section name mentioned below, such as ``Acknowledgements'',
|
||||
``Dedications'', ``Endorsements'', or ``History''.) To ``Preserve the Title''
|
||||
of such a section when you modify the Document means that it remains a
|
||||
section ``Entitled XYZ'' according to this definition.
|
||||
|
||||
The Document may include Warranty Disclaimers next to the notice which
|
||||
states that this License applies to the Document. These Warranty
|
||||
Disclaimers are considered to be included by reference in this
|
||||
License, but only as regards disclaiming warranties: any other
|
||||
implication that these Warranty Disclaimers may have is void and has
|
||||
no effect on the meaning of this License.
|
||||
|
||||
@item
|
||||
VERBATIM COPYING
|
||||
|
||||
You may copy and distribute the Document in any medium, either
|
||||
commercially or noncommercially, provided that this License, the
|
||||
copyright notices, and the license notice saying this License applies
|
||||
to the Document are reproduced in all copies, and that you add no other
|
||||
conditions whatsoever to those of this License. You may not use
|
||||
technical measures to obstruct or control the reading or further
|
||||
copying of the copies you make or distribute. However, you may accept
|
||||
compensation in exchange for copies. If you distribute a large enough
|
||||
number of copies you must also follow the conditions in section 3.
|
||||
|
||||
You may also lend copies, under the same conditions stated above, and
|
||||
you may publicly display copies.
|
||||
|
||||
@item
|
||||
COPYING IN QUANTITY
|
||||
|
||||
If you publish printed copies (or copies in media that commonly have
|
||||
printed covers) of the Document, numbering more than 100, and the
|
||||
Document's license notice requires Cover Texts, you must enclose the
|
||||
copies in covers that carry, clearly and legibly, all these Cover
|
||||
Texts: Front-Cover Texts on the front cover, and Back-Cover Texts on
|
||||
the back cover. Both covers must also clearly and legibly identify
|
||||
you as the publisher of these copies. The front cover must present
|
||||
the full title with all words of the title equally prominent and
|
||||
visible. You may add other material on the covers in addition.
|
||||
Copying with changes limited to the covers, as long as they preserve
|
||||
the title of the Document and satisfy these conditions, can be treated
|
||||
as verbatim copying in other respects.
|
||||
|
||||
If the required texts for either cover are too voluminous to fit
|
||||
legibly, you should put the first ones listed (as many as fit
|
||||
reasonably) on the actual cover, and continue the rest onto adjacent
|
||||
pages.
|
||||
|
||||
If you publish or distribute Opaque copies of the Document numbering
|
||||
more than 100, you must either include a machine-readable Transparent
|
||||
copy along with each Opaque copy, or state in or with each Opaque copy
|
||||
a computer-network location from which the general network-using
|
||||
public has access to download using public-standard network protocols
|
||||
a complete Transparent copy of the Document, free of added material.
|
||||
If you use the latter option, you must take reasonably prudent steps,
|
||||
when you begin distribution of Opaque copies in quantity, to ensure
|
||||
that this Transparent copy will remain thus accessible at the stated
|
||||
location until at least one year after the last time you distribute an
|
||||
Opaque copy (directly or through your agents or retailers) of that
|
||||
edition to the public.
|
||||
|
||||
It is requested, but not required, that you contact the authors of the
|
||||
Document well before redistributing any large number of copies, to give
|
||||
them a chance to provide you with an updated version of the Document.
|
||||
|
||||
@item
|
||||
MODIFICATIONS
|
||||
|
||||
You may copy and distribute a Modified Version of the Document under
|
||||
the conditions of sections 2 and 3 above, provided that you release
|
||||
the Modified Version under precisely this License, with the Modified
|
||||
Version filling the role of the Document, thus licensing distribution
|
||||
and modification of the Modified Version to whoever possesses a copy
|
||||
of it. In addition, you must do these things in the Modified Version:
|
||||
|
||||
@enumerate A
|
||||
@item
|
||||
Use in the Title Page (and on the covers, if any) a title distinct
|
||||
from that of the Document, and from those of previous versions
|
||||
(which should, if there were any, be listed in the History section
|
||||
of the Document). You may use the same title as a previous version
|
||||
if the original publisher of that version gives permission.
|
||||
|
||||
@item
|
||||
List on the Title Page, as authors, one or more persons or entities
|
||||
responsible for authorship of the modifications in the Modified
|
||||
Version, together with at least five of the principal authors of the
|
||||
Document (all of its principal authors, if it has fewer than five),
|
||||
unless they release you from this requirement.
|
||||
|
||||
@item
|
||||
State on the Title page the name of the publisher of the
|
||||
Modified Version, as the publisher.
|
||||
|
||||
@item
|
||||
Preserve all the copyright notices of the Document.
|
||||
|
||||
@item
|
||||
Add an appropriate copyright notice for your modifications
|
||||
adjacent to the other copyright notices.
|
||||
|
||||
@item
|
||||
Include, immediately after the copyright notices, a license notice
|
||||
giving the public permission to use the Modified Version under the
|
||||
terms of this License, in the form shown in the Addendum below.
|
||||
|
||||
@item
|
||||
Preserve in that license notice the full lists of Invariant Sections
|
||||
and required Cover Texts given in the Document's license notice.
|
||||
|
||||
@item
|
||||
Include an unaltered copy of this License.
|
||||
|
||||
@item
|
||||
Preserve the section Entitled ``History'', Preserve its Title, and add
|
||||
to it an item stating at least the title, year, new authors, and
|
||||
publisher of the Modified Version as given on the Title Page. If
|
||||
there is no section Entitled ``History'' in the Document, create one
|
||||
stating the title, year, authors, and publisher of the Document as
|
||||
given on its Title Page, then add an item describing the Modified
|
||||
Version as stated in the previous sentence.
|
||||
|
||||
@item
|
||||
Preserve the network location, if any, given in the Document for
|
||||
public access to a Transparent copy of the Document, and likewise
|
||||
the network locations given in the Document for previous versions
|
||||
it was based on. These may be placed in the ``History'' section.
|
||||
You may omit a network location for a work that was published at
|
||||
least four years before the Document itself, or if the original
|
||||
publisher of the version it refers to gives permission.
|
||||
|
||||
@item
|
||||
For any section Entitled ``Acknowledgements'' or ``Dedications'', Preserve
|
||||
the Title of the section, and preserve in the section all the
|
||||
substance and tone of each of the contributor acknowledgements and/or
|
||||
dedications given therein.
|
||||
|
||||
@item
|
||||
Preserve all the Invariant Sections of the Document,
|
||||
unaltered in their text and in their titles. Section numbers
|
||||
or the equivalent are not considered part of the section titles.
|
||||
|
||||
@item
|
||||
Delete any section Entitled ``Endorsements''. Such a section
|
||||
may not be included in the Modified Version.
|
||||
|
||||
@item
|
||||
Do not retitle any existing section to be Entitled ``Endorsements'' or
|
||||
to conflict in title with any Invariant Section.
|
||||
|
||||
@item
|
||||
Preserve any Warranty Disclaimers.
|
||||
@end enumerate
|
||||
|
||||
If the Modified Version includes new front-matter sections or
|
||||
appendices that qualify as Secondary Sections and contain no material
|
||||
copied from the Document, you may at your option designate some or all
|
||||
of these sections as invariant. To do this, add their titles to the
|
||||
list of Invariant Sections in the Modified Version's license notice.
|
||||
These titles must be distinct from any other section titles.
|
||||
|
||||
You may add a section Entitled ``Endorsements'', provided it contains
|
||||
nothing but endorsements of your Modified Version by various
|
||||
parties---for example, statements of peer review or that the text has
|
||||
been approved by an organization as the authoritative definition of a
|
||||
standard.
|
||||
|
||||
You may add a passage of up to five words as a Front-Cover Text, and a
|
||||
passage of up to 25 words as a Back-Cover Text, to the end of the list
|
||||
of Cover Texts in the Modified Version. Only one passage of
|
||||
Front-Cover Text and one of Back-Cover Text may be added by (or
|
||||
through arrangements made by) any one entity. If the Document already
|
||||
includes a cover text for the same cover, previously added by you or
|
||||
by arrangement made by the same entity you are acting on behalf of,
|
||||
you may not add another; but you may replace the old one, on explicit
|
||||
permission from the previous publisher that added the old one.
|
||||
|
||||
The author(s) and publisher(s) of the Document do not by this License
|
||||
give permission to use their names for publicity for or to assert or
|
||||
imply endorsement of any Modified Version.
|
||||
|
||||
@item
|
||||
COMBINING DOCUMENTS
|
||||
|
||||
You may combine the Document with other documents released under this
|
||||
License, under the terms defined in section 4 above for modified
|
||||
versions, provided that you include in the combination all of the
|
||||
Invariant Sections of all of the original documents, unmodified, and
|
||||
list them all as Invariant Sections of your combined work in its
|
||||
license notice, and that you preserve all their Warranty Disclaimers.
|
||||
|
||||
The combined work need only contain one copy of this License, and
|
||||
multiple identical Invariant Sections may be replaced with a single
|
||||
copy. If there are multiple Invariant Sections with the same name but
|
||||
different contents, make the title of each such section unique by
|
||||
adding at the end of it, in parentheses, the name of the original
|
||||
author or publisher of that section if known, or else a unique number.
|
||||
Make the same adjustment to the section titles in the list of
|
||||
Invariant Sections in the license notice of the combined work.
|
||||
|
||||
In the combination, you must combine any sections Entitled ``History''
|
||||
in the various original documents, forming one section Entitled
|
||||
``History''; likewise combine any sections Entitled ``Acknowledgements'',
|
||||
and any sections Entitled ``Dedications''. You must delete all
|
||||
sections Entitled ``Endorsements.''
|
||||
|
||||
@item
|
||||
COLLECTIONS OF DOCUMENTS
|
||||
|
||||
You may make a collection consisting of the Document and other documents
|
||||
released under this License, and replace the individual copies of this
|
||||
License in the various documents with a single copy that is included in
|
||||
the collection, provided that you follow the rules of this License for
|
||||
verbatim copying of each of the documents in all other respects.
|
||||
|
||||
You may extract a single document from such a collection, and distribute
|
||||
it individually under this License, provided you insert a copy of this
|
||||
License into the extracted document, and follow this License in all
|
||||
other respects regarding verbatim copying of that document.
|
||||
|
||||
@item
|
||||
AGGREGATION WITH INDEPENDENT WORKS
|
||||
|
||||
A compilation of the Document or its derivatives with other separate
|
||||
and independent documents or works, in or on a volume of a storage or
|
||||
distribution medium, is called an ``aggregate'' if the copyright
|
||||
resulting from the compilation is not used to limit the legal rights
|
||||
of the compilation's users beyond what the individual works permit.
|
||||
When the Document is included in an aggregate, this License does not
|
||||
apply to the other works in the aggregate which are not themselves
|
||||
derivative works of the Document.
|
||||
|
||||
If the Cover Text requirement of section 3 is applicable to these
|
||||
copies of the Document, then if the Document is less than one half of
|
||||
the entire aggregate, the Document's Cover Texts may be placed on
|
||||
covers that bracket the Document within the aggregate, or the
|
||||
electronic equivalent of covers if the Document is in electronic form.
|
||||
Otherwise they must appear on printed covers that bracket the whole
|
||||
aggregate.
|
||||
|
||||
@item
|
||||
TRANSLATION
|
||||
|
||||
Translation is considered a kind of modification, so you may
|
||||
distribute translations of the Document under the terms of section 4.
|
||||
Replacing Invariant Sections with translations requires special
|
||||
permission from their copyright holders, but you may include
|
||||
translations of some or all Invariant Sections in addition to the
|
||||
original versions of these Invariant Sections. You may include a
|
||||
translation of this License, and all the license notices in the
|
||||
Document, and any Warranty Disclaimers, provided that you also include
|
||||
the original English version of this License and the original versions
|
||||
of those notices and disclaimers. In case of a disagreement between
|
||||
the translation and the original version of this License or a notice
|
||||
or disclaimer, the original version will prevail.
|
||||
|
||||
If a section in the Document is Entitled ``Acknowledgements'',
|
||||
``Dedications'', or ``History'', the requirement (section 4) to Preserve
|
||||
its Title (section 1) will typically require changing the actual
|
||||
title.
|
||||
|
||||
@item
|
||||
TERMINATION
|
||||
|
||||
You may not copy, modify, sublicense, or distribute the Document except
|
||||
as expressly provided for under this License. Any other attempt to
|
||||
copy, modify, sublicense or distribute the Document is void, and will
|
||||
automatically terminate your rights under this License. However,
|
||||
parties who have received copies, or rights, from you under this
|
||||
License will not have their licenses terminated so long as such
|
||||
parties remain in full compliance.
|
||||
|
||||
@item
|
||||
FUTURE REVISIONS OF THIS LICENSE
|
||||
|
||||
The Free Software Foundation may publish new, revised versions
|
||||
of the GNU Free Documentation License from time to time. Such new
|
||||
versions will be similar in spirit to the present version, but may
|
||||
differ in detail to address new problems or concerns. See
|
||||
@uref{http://www.gnu.org/copyleft/}.
|
||||
|
||||
Each version of the License is given a distinguishing version number.
|
||||
If the Document specifies that a particular numbered version of this
|
||||
License ``or any later version'' applies to it, you have the option of
|
||||
following the terms and conditions either of that specified version or
|
||||
of any later version that has been published (not as a draft) by the
|
||||
Free Software Foundation. If the Document does not specify a version
|
||||
number of this License, you may choose any version ever published (not
|
||||
as a draft) by the Free Software Foundation.
|
||||
@end enumerate
|
||||
|
||||
@page
|
||||
@heading ADDENDUM: How to use this License for your documents
|
||||
|
||||
To use this License in a document you have written, include a copy of
|
||||
the License in the document and put the following copyright and
|
||||
license notices just after the title page:
|
||||
|
||||
@smallexample
|
||||
@group
|
||||
Copyright (C) @var{year} @var{your name}.
|
||||
Permission is granted to copy, distribute and/or modify this document
|
||||
under the terms of the GNU Free Documentation License, Version 1.2
|
||||
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 group
|
||||
@end smallexample
|
||||
|
||||
If you have Invariant Sections, Front-Cover Texts and Back-Cover Texts,
|
||||
replace the ``with...Texts.'' line with this:
|
||||
|
||||
@smallexample
|
||||
@group
|
||||
with the Invariant Sections being @var{list their titles}, with
|
||||
the Front-Cover Texts being @var{list}, and with the Back-Cover Texts
|
||||
being @var{list}.
|
||||
@end group
|
||||
@end smallexample
|
||||
|
||||
If you have Invariant Sections without Cover Texts, or some other
|
||||
combination of the three, merge those two alternatives to suit the
|
||||
situation.
|
||||
|
||||
If your document contains nontrivial examples of program code, we
|
||||
recommend releasing these examples in parallel under your choice of
|
||||
free software license, such as the GNU General Public License,
|
||||
to permit their use in free software.
|
||||
|
||||
@c Local Variables:
|
||||
@c ispell-local-pdict: "ispell-dict"
|
||||
@c End:
|
||||
|
2204
external/gpl2/texinfo/dist/doc/info-stnd.texi
vendored
Normal file
2204
external/gpl2/texinfo/dist/doc/info-stnd.texi
vendored
Normal file
File diff suppressed because it is too large
Load Diff
91
external/gpl2/texinfo/dist/doc/info.1
vendored
Normal file
91
external/gpl2/texinfo/dist/doc/info.1
vendored
Normal file
@ -0,0 +1,91 @@
|
||||
.\" $NetBSD: info.1,v 1.1.1.1 2016/01/14 00:11:30 christos Exp $
|
||||
.\"
|
||||
.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.34.
|
||||
.TH INFO "1" "December 2004" "info 4.8" "User Commands"
|
||||
.SH NAME
|
||||
info \- read Info documents
|
||||
.SH SYNOPSIS
|
||||
.B info
|
||||
[\fIOPTION\fR]... [\fIMENU-ITEM\fR...]
|
||||
.SH DESCRIPTION
|
||||
Read documentation in Info format.
|
||||
.SH OPTIONS
|
||||
.TP
|
||||
\fB\-\-apropos\fR=\fISTRING\fR
|
||||
look up STRING in all indices of all manuals.
|
||||
.TP
|
||||
\fB\-d\fR, \fB\-\-directory\fR=\fIDIR\fR
|
||||
add DIR to INFOPATH.
|
||||
.TP
|
||||
\fB\-\-dribble\fR=\fIFILENAME\fR
|
||||
remember user keystrokes in FILENAME.
|
||||
.TP
|
||||
\fB\-f\fR, \fB\-\-file\fR=\fIFILENAME\fR
|
||||
specify Info file to visit.
|
||||
.TP
|
||||
\fB\-h\fR, \fB\-\-help\fR
|
||||
display this help and exit.
|
||||
.TP
|
||||
\fB\-\-index\-search\fR=\fISTRING\fR
|
||||
go to node pointed by index entry STRING.
|
||||
.TP
|
||||
\fB\-n\fR, \fB\-\-node\fR=\fINODENAME\fR
|
||||
specify nodes in first visited Info file.
|
||||
.TP
|
||||
\fB\-o\fR, \fB\-\-output\fR=\fIFILENAME\fR
|
||||
output selected nodes to FILENAME.
|
||||
.TP
|
||||
\fB\-R\fR, \fB\-\-raw\-escapes\fR
|
||||
output "raw" ANSI escapes (default).
|
||||
.TP
|
||||
\fB\-\-no\-raw\-escapes\fR
|
||||
output escapes as literal text.
|
||||
.TP
|
||||
\fB\-\-restore\fR=\fIFILENAME\fR
|
||||
read initial keystrokes from FILENAME.
|
||||
.TP
|
||||
\fB\-O\fR, \fB\-\-show\-options\fR, \fB\-\-usage\fR
|
||||
go to command\-line options node.
|
||||
.TP
|
||||
\fB\-\-subnodes\fR
|
||||
recursively output menu items.
|
||||
.TP
|
||||
\fB\-w\fR, \fB\-\-where\fR, \fB\-\-location\fR
|
||||
print physical location of Info file.
|
||||
.TP
|
||||
\fB\-\-vi\-keys\fR
|
||||
use vi\-like and less\-like key bindings.
|
||||
.TP
|
||||
\fB\-\-version\fR
|
||||
display version information and exit.
|
||||
.PP
|
||||
The first non\-option argument, if present, is the menu entry to start from;
|
||||
it is searched for in all `dir' files along INFOPATH.
|
||||
If it is not present, info merges all `dir' files and shows the result.
|
||||
Any remaining arguments are treated as the names of menu
|
||||
items relative to the initial node visited.
|
||||
.SH EXAMPLES
|
||||
.TP
|
||||
info
|
||||
show top\-level dir menu
|
||||
.TP
|
||||
info emacs
|
||||
start at emacs node from top\-level dir
|
||||
.TP
|
||||
info emacs buffers
|
||||
start at buffers node within emacs manual
|
||||
.TP
|
||||
info \fB\-\-show\-options\fR emacs
|
||||
start at node with emacs' command line options
|
||||
.TP
|
||||
info \fB\-f\fR ./foo.info
|
||||
show file ./foo.info, not searching dir
|
||||
.SH "REPORTING BUGS"
|
||||
Email bug reports to bug\-texinfo@gnu.org,
|
||||
general questions and discussion to help\-texinfo@gnu.org.
|
||||
Texinfo home page: http://www.gnu.org/software/texinfo/
|
||||
.SH COPYRIGHT
|
||||
Copyright \(co 2004 Free Software Foundation, Inc.
|
||||
There is NO warranty. You may redistribute this software
|
||||
under the terms of the GNU General Public License.
|
||||
For more information about these matters, see the files named COPYING.
|
64
external/gpl2/texinfo/dist/doc/info.5
vendored
Normal file
64
external/gpl2/texinfo/dist/doc/info.5
vendored
Normal file
@ -0,0 +1,64 @@
|
||||
.\" $NetBSD: info.5,v 1.1.1.1 2016/01/14 00:11:30 christos Exp $
|
||||
.\"
|
||||
.\" info(5)
|
||||
.\" Id: info.5,v 1.2 2004/04/11 17:56:45 karl Exp
|
||||
.\"
|
||||
.\" Copyright (C) 1998 Free Software Foundation, Inc.
|
||||
.\"
|
||||
.\" Permission is granted to make and distribute verbatim copies of this
|
||||
.\" manual provided the copyright notice and this permission notice are
|
||||
.\" preserved on all copies.
|
||||
.\"
|
||||
.\" Permission is granted to copy and distribute modified versions of
|
||||
.\" this manual under the conditions for verbatim copying, provided that
|
||||
.\" the entire resulting derived work is distributed under the terms of a
|
||||
.\" permission notice identical to this one.
|
||||
.\"
|
||||
.\" Permission is granted to copy and distribute translations of this
|
||||
.\" manual into another language, under the above conditions for modified
|
||||
.\" versions, except that this permission notice may be stated in a
|
||||
.\" translation approved by the Foundation.
|
||||
.\"
|
||||
.TH INFO 5 "GNU Info" "FSF"
|
||||
.SH NAME
|
||||
info \- readable online documentation
|
||||
.SH DESCRIPTION
|
||||
The Info file format is an easily-parsable representation for online
|
||||
documents. It can be read by
|
||||
.I emacs(1)
|
||||
and
|
||||
.I info(1)
|
||||
among other programs.
|
||||
.PP
|
||||
Info files are usually created from
|
||||
.I texinfo(5)
|
||||
sources by
|
||||
.IR makeinfo(1) ,
|
||||
but can be created from scratch if so desired.
|
||||
.PP
|
||||
For a full description of the Texinfo language and associated tools,
|
||||
please see the Texinfo manual (written in Texinfo itself). Most likely,
|
||||
running this command from your shell:
|
||||
.RS
|
||||
.I info texinfo
|
||||
.RE
|
||||
or this key sequence from inside Emacs:
|
||||
.RS
|
||||
.I M-x info RET m texinfo RET
|
||||
.RE
|
||||
will get you there.
|
||||
.SH AVAILABILITY
|
||||
ftp://ftp.gnu.org/pub/gnu/texinfo-<version>.tar.gz
|
||||
.br
|
||||
or any GNU mirror site.
|
||||
.SH "REPORTING BUGS"
|
||||
Please send bug reports to bug-texinfo@gnu.org,
|
||||
general questions and discussion to help-texinfo@gnu.org.
|
||||
.SH "SEE ALSO"
|
||||
info(1), install-info(1), makeinfo(1), texi2dvi(1),
|
||||
.br
|
||||
texindex(1).
|
||||
.br
|
||||
emacs(1), tex(1).
|
||||
.br
|
||||
texinfo(5).
|
1499
external/gpl2/texinfo/dist/doc/info.texi
vendored
Normal file
1499
external/gpl2/texinfo/dist/doc/info.texi
vendored
Normal file
File diff suppressed because it is too large
Load Diff
43
external/gpl2/texinfo/dist/doc/infokey.1
vendored
Normal file
43
external/gpl2/texinfo/dist/doc/infokey.1
vendored
Normal file
@ -0,0 +1,43 @@
|
||||
.\" $NetBSD: infokey.1,v 1.1.1.1 2016/01/14 00:11:30 christos Exp $
|
||||
.\"
|
||||
.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.34.
|
||||
.TH INFOKEY "1" "December 2004" "infokey 4.8" "User Commands"
|
||||
.SH NAME
|
||||
infokey \- compile customizations for Info
|
||||
.SH SYNOPSIS
|
||||
.B infokey
|
||||
[\fIOPTION\fR]... [\fIINPUT-FILE\fR]
|
||||
.SH DESCRIPTION
|
||||
Compile infokey source file to infokey file. Reads INPUT\-FILE (default
|
||||
$HOME/.infokey) and writes compiled key file to (by default) $HOME/.info.
|
||||
.SH OPTIONS
|
||||
.TP
|
||||
\fB\-\-output\fR FILE
|
||||
output to FILE instead of $HOME/.info
|
||||
.TP
|
||||
\fB\-\-help\fR
|
||||
display this help and exit.
|
||||
.TP
|
||||
\fB\-\-version\fR
|
||||
display version information and exit.
|
||||
.SH "REPORTING BUGS"
|
||||
Email bug reports to bug\-texinfo@gnu.org,
|
||||
general questions and discussion to help\-texinfo@gnu.org.
|
||||
Texinfo home page: http://www.gnu.org/software/texinfo/
|
||||
.SH COPYRIGHT
|
||||
Copyright \(co 2003 Free Software Foundation, Inc.
|
||||
There is NO warranty. You may redistribute this software
|
||||
under the terms of the GNU General Public License.
|
||||
For more information about these matters, see the files named COPYING.
|
||||
.SH "SEE ALSO"
|
||||
The full documentation for
|
||||
.B infokey
|
||||
is maintained as a Texinfo manual. If the
|
||||
.B info
|
||||
and
|
||||
.B infokey
|
||||
programs are properly installed at your site, the command
|
||||
.IP
|
||||
.B info infokey
|
||||
.PP
|
||||
should give you access to the complete manual.
|
80
external/gpl2/texinfo/dist/doc/install-info.1
vendored
Normal file
80
external/gpl2/texinfo/dist/doc/install-info.1
vendored
Normal file
@ -0,0 +1,80 @@
|
||||
.\" $NetBSD: install-info.1,v 1.1.1.1 2016/01/14 00:11:30 christos Exp $
|
||||
.\"
|
||||
.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.34.
|
||||
.TH INSTALL-INFO "1" "December 2004" "install-info 4.8" "User Commands"
|
||||
.SH NAME
|
||||
install-info \- update info/dir entries
|
||||
.SH SYNOPSIS
|
||||
.B install-info
|
||||
[\fIOPTION\fR]... [\fIINFO-FILE \fR[\fIDIR-FILE\fR]]
|
||||
.SH DESCRIPTION
|
||||
Install or delete dir entries from INFO\-FILE in the Info directory file
|
||||
DIR\-FILE.
|
||||
.SH OPTIONS
|
||||
.TP
|
||||
\fB\-\-delete\fR
|
||||
delete existing entries for INFO\-FILE from DIR\-FILE;
|
||||
don't insert any new entries.
|
||||
.TP
|
||||
\fB\-\-dir\-file\fR=\fINAME\fR
|
||||
specify file name of Info directory file.
|
||||
This is equivalent to using the DIR\-FILE argument.
|
||||
.TP
|
||||
\fB\-\-entry\fR=\fITEXT\fR
|
||||
insert TEXT as an Info directory entry.
|
||||
TEXT should have the form of an Info menu item line
|
||||
plus zero or more extra lines starting with whitespace.
|
||||
If you specify more than one entry, they are all added.
|
||||
If you don't specify any entries, they are determined
|
||||
from information in the Info file itself.
|
||||
.TP
|
||||
\fB\-\-help\fR
|
||||
display this help and exit.
|
||||
.TP
|
||||
\fB\-\-info\-file\fR=\fIFILE\fR
|
||||
specify Info file to install in the directory.
|
||||
This is equivalent to using the INFO\-FILE argument.
|
||||
.TP
|
||||
\fB\-\-info\-dir\fR=\fIDIR\fR
|
||||
same as \fB\-\-dir\-file\fR=\fIDIR\fR/dir.
|
||||
.TP
|
||||
\fB\-\-item\fR=\fITEXT\fR
|
||||
same as \fB\-\-entry\fR TEXT.
|
||||
An Info directory entry is actually a menu item.
|
||||
.TP
|
||||
\fB\-\-quiet\fR
|
||||
suppress warnings.
|
||||
.TP
|
||||
\fB\-\-remove\fR
|
||||
same as \fB\-\-delete\fR.
|
||||
.TP
|
||||
\fB\-\-section\fR=\fISEC\fR
|
||||
put this file's entries in section SEC of the directory.
|
||||
If you specify more than one section, all the entries
|
||||
are added in each of the sections.
|
||||
If you don't specify any sections, they are determined
|
||||
from information in the Info file itself.
|
||||
.TP
|
||||
\fB\-\-version\fR
|
||||
display version information and exit.
|
||||
.SH "REPORTING BUGS"
|
||||
Email bug reports to bug\-texinfo@gnu.org,
|
||||
general questions and discussion to help\-texinfo@gnu.org.
|
||||
Texinfo home page: http://www.gnu.org/software/texinfo/
|
||||
.SH COPYRIGHT
|
||||
Copyright \(co 2004 Free Software Foundation, Inc.
|
||||
There is NO warranty. You may redistribute this software
|
||||
under the terms of the GNU General Public License.
|
||||
For more information about these matters, see the files named COPYING.
|
||||
.SH "SEE ALSO"
|
||||
The full documentation for
|
||||
.B install-info
|
||||
is maintained as a Texinfo manual. If the
|
||||
.B info
|
||||
and
|
||||
.B install-info
|
||||
programs are properly installed at your site, the command
|
||||
.IP
|
||||
.B info install-info
|
||||
.PP
|
||||
should give you access to the complete manual.
|
207
external/gpl2/texinfo/dist/doc/makeinfo.1
vendored
Normal file
207
external/gpl2/texinfo/dist/doc/makeinfo.1
vendored
Normal file
@ -0,0 +1,207 @@
|
||||
.\" $NetBSD: makeinfo.1,v 1.1.1.1 2016/01/14 00:11:30 christos Exp $
|
||||
.\"
|
||||
.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.34.
|
||||
.TH MAKEINFO "1" "December 2004" "makeinfo 4.8" "User Commands"
|
||||
.SH NAME
|
||||
makeinfo \- translate Texinfo documents
|
||||
.SH SYNOPSIS
|
||||
.B makeinfo
|
||||
[\fIOPTION\fR]... \fITEXINFO-FILE\fR...
|
||||
.SH DESCRIPTION
|
||||
Translate Texinfo source documentation to various other formats, by default
|
||||
Info files suitable for reading online with Emacs or standalone GNU Info.
|
||||
.SS "General options:"
|
||||
.TP
|
||||
\fB\-\-error\-limit\fR=\fINUM\fR
|
||||
quit after NUM errors (default 100).
|
||||
.TP
|
||||
\fB\-\-force\fR
|
||||
preserve output even if errors.
|
||||
.TP
|
||||
\fB\-\-help\fR
|
||||
display this help and exit.
|
||||
.TP
|
||||
\fB\-\-no\-validate\fR
|
||||
suppress node cross\-reference validation.
|
||||
.TP
|
||||
\fB\-\-no\-warn\fR
|
||||
suppress warnings (but not errors).
|
||||
.TP
|
||||
\fB\-\-reference\-limit\fR=\fINUM\fR
|
||||
warn about at most NUM references (default 1000).
|
||||
.TP
|
||||
\fB\-v\fR, \fB\-\-verbose\fR
|
||||
explain what is being done.
|
||||
.TP
|
||||
\fB\-\-version\fR
|
||||
display version information and exit.
|
||||
.SS "Output format selection (default is to produce Info):"
|
||||
.TP
|
||||
\fB\-\-docbook\fR
|
||||
output Docbook XML rather than Info.
|
||||
.TP
|
||||
\fB\-\-html\fR
|
||||
output HTML rather than Info.
|
||||
.TP
|
||||
\fB\-\-xml\fR
|
||||
output Texinfo XML rather than Info.
|
||||
.TP
|
||||
\fB\-\-plaintext\fR
|
||||
output plain text rather than Info.
|
||||
.SS "General output options:"
|
||||
.TP
|
||||
\fB\-E\fR, \fB\-\-macro\-expand\fR FILE
|
||||
output macro\-expanded source to FILE.
|
||||
ignoring any @setfilename.
|
||||
.TP
|
||||
\fB\-\-no\-headers\fR
|
||||
suppress node separators, Node: lines, and menus
|
||||
from Info output (thus producing plain text)
|
||||
or from HTML (thus producing shorter output);
|
||||
also, write to standard output by default.
|
||||
.TP
|
||||
\fB\-\-no\-split\fR
|
||||
suppress splitting of Info or HTML output,
|
||||
generate only one output file.
|
||||
.TP
|
||||
\fB\-\-number\-sections\fR
|
||||
output chapter and sectioning numbers.
|
||||
.TP
|
||||
\fB\-o\fR, \fB\-\-output\fR=\fIFILE\fR
|
||||
output to FILE (directory if split HTML),
|
||||
.SS "Options for Info and plain text:"
|
||||
.TP
|
||||
\fB\-\-enable\-encoding\fR
|
||||
output accented and special characters in
|
||||
Info output based on @documentencoding.
|
||||
.TP
|
||||
\fB\-\-fill\-column\fR=\fINUM\fR
|
||||
break Info lines at NUM characters (default 72).
|
||||
.TP
|
||||
\fB\-\-footnote\-style\fR=\fISTYLE\fR
|
||||
output footnotes in Info according to STYLE:
|
||||
`separate' to put them in their own node;
|
||||
`end' to put them at the end of the node
|
||||
.IP
|
||||
in which they are defined (default).
|
||||
.TP
|
||||
\fB\-\-paragraph\-indent\fR=\fIVAL\fR
|
||||
indent Info paragraphs by VAL spaces (default 3).
|
||||
If VAL is `none', do not indent; if VAL is
|
||||
`asis', preserve existing indentation.
|
||||
.TP
|
||||
\fB\-\-split\-size\fR=\fINUM\fR
|
||||
split Info files at size NUM (default 300000).
|
||||
.SS "Options for HTML:"
|
||||
.TP
|
||||
\fB\-\-css\-include\fR=\fIFILE\fR
|
||||
include FILE in HTML <style> output;
|
||||
read stdin if FILE is \-.
|
||||
.SS "Options for XML and Docbook:"
|
||||
.TP
|
||||
\fB\-\-output\-indent\fR=\fIVAL\fR
|
||||
indent XML elements by VAL spaces (default 2).
|
||||
If VAL is 0, ignorable whitespace is dropped.
|
||||
.SS "Input file options:"
|
||||
.TP
|
||||
\fB\-\-commands\-in\-node\-names\fR
|
||||
allow @ commands in node names.
|
||||
.TP
|
||||
\fB\-D\fR VAR
|
||||
define the variable VAR, as with @set.
|
||||
.TP
|
||||
\fB\-I\fR DIR
|
||||
append DIR to the @include search path.
|
||||
.TP
|
||||
\fB\-P\fR DIR
|
||||
prepend DIR to the @include search path.
|
||||
.TP
|
||||
\fB\-U\fR VAR
|
||||
undefine the variable VAR, as with @clear.
|
||||
.SS "Conditional processing in input:"
|
||||
.TP
|
||||
\fB\-\-ifdocbook\fR
|
||||
process @ifdocbook and @docbook even if
|
||||
not generating Docbook.
|
||||
.TP
|
||||
\fB\-\-ifhtml\fR
|
||||
process @ifhtml and @html even if not generating HTML.
|
||||
.TP
|
||||
\fB\-\-ifinfo\fR
|
||||
process @ifinfo even if not generating Info.
|
||||
.TP
|
||||
\fB\-\-ifplaintext\fR
|
||||
process @ifplaintext even if not generating plain text.
|
||||
.TP
|
||||
\fB\-\-iftex\fR
|
||||
process @iftex and @tex; implies \fB\-\-no\-split\fR.
|
||||
.TP
|
||||
\fB\-\-ifxml\fR
|
||||
process @ifxml and @xml.
|
||||
.TP
|
||||
\fB\-\-no\-ifdocbook\fR
|
||||
do not process @ifdocbook and @docbook text.
|
||||
.TP
|
||||
\fB\-\-no\-ifhtml\fR
|
||||
do not process @ifhtml and @html text.
|
||||
.TP
|
||||
\fB\-\-no\-ifinfo\fR
|
||||
do not process @ifinfo text.
|
||||
.TP
|
||||
\fB\-\-no\-ifplaintext\fR
|
||||
do not process @ifplaintext text.
|
||||
.TP
|
||||
\fB\-\-no\-iftex\fR
|
||||
do not process @iftex and @tex text.
|
||||
.TP
|
||||
\fB\-\-no\-ifxml\fR
|
||||
do not process @ifxml and @xml text.
|
||||
.IP
|
||||
Also, for the \fB\-\-no\-ifFORMAT\fR options, do process @ifnotFORMAT text.
|
||||
.IP
|
||||
The defaults for the @if... conditionals depend on the output format:
|
||||
if generating HTML, \fB\-\-ifhtml\fR is on and the others are off;
|
||||
if generating Info, \fB\-\-ifinfo\fR is on and the others are off;
|
||||
if generating plain text, \fB\-\-ifplaintext\fR is on and the others are off;
|
||||
if generating XML, \fB\-\-ifxml\fR is on and the others are off.
|
||||
.SH EXAMPLES
|
||||
.TP
|
||||
makeinfo foo.texi
|
||||
write Info to foo's @setfilename
|
||||
.TP
|
||||
makeinfo \fB\-\-html\fR foo.texi
|
||||
write HTML to @setfilename
|
||||
.TP
|
||||
makeinfo \fB\-\-xml\fR foo.texi
|
||||
write Texinfo XML to @setfilename
|
||||
.TP
|
||||
makeinfo \fB\-\-docbook\fR foo.texi
|
||||
write DocBook XML to @setfilename
|
||||
.TP
|
||||
makeinfo \fB\-\-no\-headers\fR foo.texi
|
||||
write plain text to standard output
|
||||
.IP
|
||||
makeinfo \fB\-\-html\fR \fB\-\-no\-headers\fR foo.texi write html without node lines, menus
|
||||
makeinfo \fB\-\-number\-sections\fR foo.texi write Info with numbered sections
|
||||
makeinfo \fB\-\-no\-split\fR foo.texi write one Info file however big
|
||||
.SH "REPORTING BUGS"
|
||||
Email bug reports to bug\-texinfo@gnu.org,
|
||||
general questions and discussion to help\-texinfo@gnu.org.
|
||||
Texinfo home page: http://www.gnu.org/software/texinfo/
|
||||
.SH COPYRIGHT
|
||||
Copyright \(co 2004 Free Software Foundation, Inc.
|
||||
There is NO warranty. You may redistribute this software
|
||||
under the terms of the GNU General Public License.
|
||||
For more information about these matters, see the files named COPYING.
|
||||
.SH "SEE ALSO"
|
||||
The full documentation for
|
||||
.B makeinfo
|
||||
is maintained as a Texinfo manual. If the
|
||||
.B info
|
||||
and
|
||||
.B makeinfo
|
||||
programs are properly installed at your site, the command
|
||||
.IP
|
||||
.B info makeinfo
|
||||
.PP
|
||||
should give you access to the complete manual.
|
170
external/gpl2/texinfo/dist/doc/mdate-sh
vendored
Normal file
170
external/gpl2/texinfo/dist/doc/mdate-sh
vendored
Normal file
@ -0,0 +1,170 @@
|
||||
#!/bin/sh
|
||||
# Get modification time of a file or directory and pretty-print it.
|
||||
|
||||
scriptversion=2004-12-08.12
|
||||
|
||||
# Copyright (C) 1995, 1996, 1997, 2003, 2004 Free Software Foundation, Inc.
|
||||
# written by Ulrich Drepper <drepper@gnu.ai.mit.edu>, June 1995
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation; either version 2, or (at your option)
|
||||
# any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software Foundation,
|
||||
# Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
|
||||
# As a special exception to the GNU General Public License, if you
|
||||
# distribute this file as part of a program that contains a
|
||||
# configuration script generated by Autoconf, you may include it under
|
||||
# the same distribution terms that you use for the rest of that program.
|
||||
|
||||
# This file is maintained in Automake, please report
|
||||
# bugs to <bug-automake@gnu.org> or send patches to
|
||||
# <automake-patches@gnu.org>.
|
||||
|
||||
case $1 in
|
||||
'')
|
||||
echo "$0: No file. Try \`$0 --help' for more information." 1>&2
|
||||
exit 1;
|
||||
;;
|
||||
-h | --h*)
|
||||
cat <<\EOF
|
||||
Usage: mdate-sh [--help] [--version] FILE
|
||||
|
||||
Pretty-print the modification time of FILE.
|
||||
|
||||
Report bugs to <bug-automake@gnu.org>.
|
||||
EOF
|
||||
exit 0
|
||||
;;
|
||||
-v | --v*)
|
||||
echo "mdate-sh $scriptversion"
|
||||
exit 0
|
||||
;;
|
||||
esac
|
||||
|
||||
# Prevent date giving response in another language.
|
||||
LANG=C
|
||||
export LANG
|
||||
LC_ALL=C
|
||||
export LC_ALL
|
||||
LC_TIME=C
|
||||
export LC_TIME
|
||||
|
||||
save_arg1="$1"
|
||||
|
||||
# Find out how to get the extended ls output of a file or directory.
|
||||
if ls -L /dev/null 1>/dev/null 2>&1; then
|
||||
ls_command='ls -L -l -d'
|
||||
else
|
||||
ls_command='ls -l -d'
|
||||
fi
|
||||
|
||||
# A `ls -l' line looks as follows on OS/2.
|
||||
# drwxrwx--- 0 Aug 11 2001 foo
|
||||
# This differs from Unix, which adds ownership information.
|
||||
# drwxrwx--- 2 root root 4096 Aug 11 2001 foo
|
||||
#
|
||||
# To find the date, we split the line on spaces and iterate on words
|
||||
# until we find a month. This cannot work with files whose owner is a
|
||||
# user named `Jan', or `Feb', etc. However, it's unlikely that `/'
|
||||
# will be owned by a user whose name is a month. So we first look at
|
||||
# the extended ls output of the root directory to decide how many
|
||||
# words should be skipped to get the date.
|
||||
|
||||
# On HPUX /bin/sh, "set" interprets "-rw-r--r--" as options, so the "x" below.
|
||||
set x`ls -l -d /`
|
||||
|
||||
# Find which argument is the month.
|
||||
month=
|
||||
command=
|
||||
until test $month
|
||||
do
|
||||
shift
|
||||
# Add another shift to the command.
|
||||
command="$command shift;"
|
||||
case $1 in
|
||||
Jan) month=January; nummonth=1;;
|
||||
Feb) month=February; nummonth=2;;
|
||||
Mar) month=March; nummonth=3;;
|
||||
Apr) month=April; nummonth=4;;
|
||||
May) month=May; nummonth=5;;
|
||||
Jun) month=June; nummonth=6;;
|
||||
Jul) month=July; nummonth=7;;
|
||||
Aug) month=August; nummonth=8;;
|
||||
Sep) month=September; nummonth=9;;
|
||||
Oct) month=October; nummonth=10;;
|
||||
Nov) month=November; nummonth=11;;
|
||||
Dec) month=December; nummonth=12;;
|
||||
esac
|
||||
done
|
||||
|
||||
# Get the extended ls output of the file or directory.
|
||||
set x`eval "$ls_command \"\$save_arg1\""`
|
||||
|
||||
# Remove all preceding arguments
|
||||
eval $command
|
||||
|
||||
# Get the month. Next argument is day, followed by the year or time.
|
||||
case $1 in
|
||||
Jan) month=January; nummonth=1;;
|
||||
Feb) month=February; nummonth=2;;
|
||||
Mar) month=March; nummonth=3;;
|
||||
Apr) month=April; nummonth=4;;
|
||||
May) month=May; nummonth=5;;
|
||||
Jun) month=June; nummonth=6;;
|
||||
Jul) month=July; nummonth=7;;
|
||||
Aug) month=August; nummonth=8;;
|
||||
Sep) month=September; nummonth=9;;
|
||||
Oct) month=October; nummonth=10;;
|
||||
Nov) month=November; nummonth=11;;
|
||||
Dec) month=December; nummonth=12;;
|
||||
esac
|
||||
|
||||
day=$2
|
||||
|
||||
# Here we have to deal with the problem that the ls output gives either
|
||||
# the time of day or the year.
|
||||
case $3 in
|
||||
*:*) set `date`; eval year=\$$#
|
||||
case $2 in
|
||||
Jan) nummonthtod=1;;
|
||||
Feb) nummonthtod=2;;
|
||||
Mar) nummonthtod=3;;
|
||||
Apr) nummonthtod=4;;
|
||||
May) nummonthtod=5;;
|
||||
Jun) nummonthtod=6;;
|
||||
Jul) nummonthtod=7;;
|
||||
Aug) nummonthtod=8;;
|
||||
Sep) nummonthtod=9;;
|
||||
Oct) nummonthtod=10;;
|
||||
Nov) nummonthtod=11;;
|
||||
Dec) nummonthtod=12;;
|
||||
esac
|
||||
# For the first six month of the year the time notation can also
|
||||
# be used for files modified in the last year.
|
||||
if (expr $nummonth \> $nummonthtod) > /dev/null;
|
||||
then
|
||||
year=`expr $year - 1`
|
||||
fi;;
|
||||
*) year=$3;;
|
||||
esac
|
||||
|
||||
# The result.
|
||||
echo $day $month $year
|
||||
|
||||
# Local Variables:
|
||||
# mode: shell-script
|
||||
# sh-indentation: 2
|
||||
# eval: (add-hook 'write-file-hooks 'time-stamp)
|
||||
# time-stamp-start: "scriptversion="
|
||||
# time-stamp-format: "%:y-%02m-%02d.%02H"
|
||||
# time-stamp-end: "$"
|
||||
# End:
|
158
external/gpl2/texinfo/dist/doc/pdfcolor.tex
vendored
Normal file
158
external/gpl2/texinfo/dist/doc/pdfcolor.tex
vendored
Normal file
@ -0,0 +1,158 @@
|
||||
% Very simple macros to show how to use colors with pdftex
|
||||
|
||||
\def\cmykGreenYellow{0.15 0 0.69 0}
|
||||
\def\cmykYellow{0 0 1 0}
|
||||
\def\cmykGoldenrod{0 0.10 0.84 0}
|
||||
\def\cmykDandelion{0 0.29 0.84 0}
|
||||
\def\cmykApricot{0 0.32 0.52 0}
|
||||
\def\cmykPeach{0 0.50 0.70 0}
|
||||
\def\cmykMelon{0 0.46 0.50 0}
|
||||
\def\cmykYellowOrange{0 0.42 1 0}
|
||||
\def\cmykOrange{0 0.61 0.87 0}
|
||||
\def\cmykBurntOrange{0 0.51 1 0}
|
||||
\def\cmykBittersweet{0 0.75 1 0.24}
|
||||
\def\cmykRedOrange{0 0.77 0.87 0}
|
||||
\def\cmykMahogany{0 0.85 0.87 0.35}
|
||||
\def\cmykMaroon{0 0.87 0.68 0.32}
|
||||
\def\cmykBrickRed{0 0.89 0.94 0.28}
|
||||
\def\cmykRed{0 1 1 0}
|
||||
\def\cmykOrangeRed{0 1 0.50 0}
|
||||
\def\cmykRubineRed{0 1 0.13 0}
|
||||
\def\cmykWildStrawberry{0 0.96 0.39 0}
|
||||
\def\cmykSalmon{0 0.53 0.38 0}
|
||||
\def\cmykCarnationPink{0 0.63 0 0}
|
||||
\def\cmykMagenta{0 1 0 0}
|
||||
\def\cmykVioletRed{0 0.81 0 0}
|
||||
\def\cmykRhodamine{0 0.82 0 0}
|
||||
\def\cmykMulberry{0.34 0.90 0 0.02}
|
||||
\def\cmykRedViolet{0.07 0.90 0 0.34}
|
||||
\def\cmykFuchsia{0.47 0.91 0 0.08}
|
||||
\def\cmykLavender{0 0.48 0 0}
|
||||
\def\cmykThistle{0.12 0.59 0 0}
|
||||
\def\cmykOrchid{0.32 0.64 0 0}
|
||||
\def\cmykDarkOrchid{0.40 0.80 0.20 0}
|
||||
\def\cmykPurple{0.45 0.86 0 0}
|
||||
\def\cmykPlum{0.50 1 0 0}
|
||||
\def\cmykViolet{0.79 0.88 0 0}
|
||||
\def\cmykRoyalPurple{0.75 0.90 0 0}
|
||||
\def\cmykBlueViolet{0.86 0.91 0 0.04}
|
||||
\def\cmykPeriwinkle{0.57 0.55 0 0}
|
||||
\def\cmykCadetBlue{0.62 0.57 0.23 0}
|
||||
\def\cmykCornflowerBlue{0.65 0.13 0 0}
|
||||
\def\cmykMidnightBlue{0.98 0.13 0 0.43}
|
||||
\def\cmykNavyBlue{0.94 0.54 0 0}
|
||||
\def\cmykRoyalBlue{1 0.50 0 0}
|
||||
\def\cmykBlue{1 1 0 0}
|
||||
\def\cmykCerulean{0.94 0.11 0 0}
|
||||
\def\cmykCyan{1 0 0 0}
|
||||
\def\cmykProcessBlue{0.96 0 0 0}
|
||||
\def\cmykSkyBlue{0.62 0 0.12 0}
|
||||
\def\cmykTurquoise{0.85 0 0.20 0}
|
||||
\def\cmykTealBlue{0.86 0 0.34 0.02}
|
||||
\def\cmykAquamarine{0.82 0 0.30 0}
|
||||
\def\cmykBlueGreen{0.85 0 0.33 0}
|
||||
\def\cmykEmerald{1 0 0.50 0}
|
||||
\def\cmykJungleGreen{0.99 0 0.52 0}
|
||||
\def\cmykSeaGreen{0.69 0 0.50 0}
|
||||
\def\cmykGreen{1 0 1 0}
|
||||
\def\cmykForestGreen{0.91 0 0.88 0.12}
|
||||
\def\cmykPineGreen{0.92 0 0.59 0.25}
|
||||
\def\cmykLimeGreen{0.50 0 1 0}
|
||||
\def\cmykYellowGreen{0.44 0 0.74 0}
|
||||
\def\cmykSpringGreen{0.26 0 0.76 0}
|
||||
\def\cmykOliveGreen{0.64 0 0.95 0.40}
|
||||
\def\cmykRawSienna{0 0.72 1 0.45}
|
||||
\def\cmykSepia{0 0.83 1 0.70}
|
||||
\def\cmykBrown{0 0.81 1 0.60}
|
||||
\def\cmykTan{0.14 0.42 0.56 0}
|
||||
\def\cmykGray{0 0 0 0.50}
|
||||
\def\cmykBlack{0 0 0 1}
|
||||
\def\cmykWhite{0 0 0 0}
|
||||
|
||||
\def\GreenYellow{\pdfsetcolor{\cmykGreenYellow}}
|
||||
\def\Yellow{\pdfsetcolor{\cmykYellow}}
|
||||
\def\Goldenrod{\pdfsetcolor{\cmykGoldenrod}}
|
||||
\def\Dandelion{\pdfsetcolor{\cmykDandelion}}
|
||||
\def\Apricot{\pdfsetcolor{\cmykApricot}}
|
||||
\def\Peach{\pdfsetcolor{\cmykPeach}}
|
||||
\def\Melon{\pdfsetcolor{\cmykMelon}}
|
||||
\def\YellowOrange{\pdfsetcolor{\cmykYellowOrange}}
|
||||
\def\Orange{\pdfsetcolor{\cmykOrange}}
|
||||
\def\BurntOrange{\pdfsetcolor{\cmykBurntOrange}}
|
||||
\def\Bittersweet{\pdfsetcolor{\cmykBittersweet}}
|
||||
\def\RedOrange{\pdfsetcolor{\cmykRedOrange}}
|
||||
\def\Mahogany{\pdfsetcolor{\cmykMahogany}}
|
||||
\def\Maroon{\pdfsetcolor{\cmykMaroon}}
|
||||
\def\BrickRed{\pdfsetcolor{\cmykBrickRed}}
|
||||
\def\Red{\pdfsetcolor{\cmykRed}}
|
||||
\def\OrangeRed{\pdfsetcolor{\cmykOrangeRed}}
|
||||
\def\RubineRed{\pdfsetcolor{\cmykRubineRed}}
|
||||
\def\WildStrawberry{\pdfsetcolor{\cmykWildStrawberry}}
|
||||
\def\Salmon{\pdfsetcolor{\cmykSalmon}}
|
||||
\def\CarnationPink{\pdfsetcolor{\cmykCarnationPink}}
|
||||
\def\Magenta{\pdfsetcolor{\cmykMagenta}}
|
||||
\def\VioletRed{\pdfsetcolor{\cmykVioletRed}}
|
||||
\def\Rhodamine{\pdfsetcolor{\cmykRhodamine}}
|
||||
\def\Mulberry{\pdfsetcolor{\cmykMulberry}}
|
||||
\def\RedViolet{\pdfsetcolor{\cmykRedViolet}}
|
||||
\def\Fuchsia{\pdfsetcolor{\cmykFuchsia}}
|
||||
\def\Lavender{\pdfsetcolor{\cmykLavender}}
|
||||
\def\Thistle{\pdfsetcolor{\cmykThistle}}
|
||||
\def\Orchid{\pdfsetcolor{\cmykOrchid}}
|
||||
\def\DarkOrchid{\pdfsetcolor{\cmykDarkOrchid}}
|
||||
\def\Purple{\pdfsetcolor{\cmykPurple}}
|
||||
\def\Plum{\pdfsetcolor{\cmykPlum}}
|
||||
\def\Violet{\pdfsetcolor{\cmykViolet}}
|
||||
\def\RoyalPurple{\pdfsetcolor{\cmykRoyalPurple}}
|
||||
\def\BlueViolet{\pdfsetcolor{\cmykBlueViolet}}
|
||||
\def\Periwinkle{\pdfsetcolor{\cmykPeriwinkle}}
|
||||
\def\CadetBlue{\pdfsetcolor{\cmykCadetBlue}}
|
||||
\def\CornflowerBlue{\pdfsetcolor{\cmykCornflowerBlue}}
|
||||
\def\MidnightBlue{\pdfsetcolor{\cmykMidnightBlue}}
|
||||
\def\NavyBlue{\pdfsetcolor{\cmykNavyBlue}}
|
||||
\def\RoyalBlue{\pdfsetcolor{\cmykRoyalBlue}}
|
||||
\def\Blue{\pdfsetcolor{\cmykBlue}}
|
||||
\def\Cerulean{\pdfsetcolor{\cmykCerulean}}
|
||||
\def\Cyan{\pdfsetcolor{\cmykCyan}}
|
||||
\def\ProcessBlue{\pdfsetcolor{\cmykProcessBlue}}
|
||||
\def\SkyBlue{\pdfsetcolor{\cmykSkyBlue}}
|
||||
\def\Turquoise{\pdfsetcolor{\cmykTurquoise}}
|
||||
\def\TealBlue{\pdfsetcolor{\cmykTealBlue}}
|
||||
\def\Aquamarine{\pdfsetcolor{\cmykAquamarine}}
|
||||
\def\BlueGreen{\pdfsetcolor{\cmykBlueGreen}}
|
||||
\def\Emerald{\pdfsetcolor{\cmykEmerald}}
|
||||
\def\JungleGreen{\pdfsetcolor{\cmykJungleGreen}}
|
||||
\def\SeaGreen{\pdfsetcolor{\cmykSeaGreen}}
|
||||
\def\Green{\pdfsetcolor{\cmykGreen}}
|
||||
\def\ForestGreen{\pdfsetcolor{\cmykForestGreen}}
|
||||
\def\PineGreen{\pdfsetcolor{\cmykPineGreen}}
|
||||
\def\LimeGreen{\pdfsetcolor{\cmykLimeGreen}}
|
||||
\def\YellowGreen{\pdfsetcolor{\cmykYellowGreen}}
|
||||
\def\SpringGreen{\pdfsetcolor{\cmykSpringGreen}}
|
||||
\def\OliveGreen{\pdfsetcolor{\cmykOliveGreen}}
|
||||
\def\RawSienna{\pdfsetcolor{\cmykRawSienna}}
|
||||
\def\Sepia{\pdfsetcolor{\cmykSepia}}
|
||||
\def\Brown{\pdfsetcolor{\cmykBrown}}
|
||||
\def\Tan{\pdfsetcolor{\cmykTan}}
|
||||
\def\Gray{\pdfsetcolor{\cmykGray}}
|
||||
\def\Black{\pdfsetcolor{\cmykBlack}}
|
||||
\def\White{\pdfsetcolor{\cmykWhite}}
|
||||
|
||||
\def\pdfsetcolor#1{\pdfliteral{#1 k}}
|
||||
\def\setcolor#1{\mark{#1}\pdfsetcolor{#1}}
|
||||
|
||||
\pdfoutput=1
|
||||
\def\maincolor{\cmykBlack}
|
||||
\pdfsetcolor{\maincolor}
|
||||
|
||||
\def\makefootline{
|
||||
\baselineskip24pt
|
||||
\line{\pdfsetcolor{\maincolor}\the\footline}}
|
||||
|
||||
\def\makeheadline{%
|
||||
\edef\M{\topmark}
|
||||
\ifx\M\empty\let\M=\maincolor\fi
|
||||
\vbox to 0pt{\vskip-22.5pt
|
||||
\line{\vbox to8.5pt{}%
|
||||
\pdfsetcolor{\maincolor}\the\headline\pdfsetcolor{\M}}\vss}%
|
||||
\nointerlineskip}
|
4
external/gpl2/texinfo/dist/doc/stamp-1
vendored
Normal file
4
external/gpl2/texinfo/dist/doc/stamp-1
vendored
Normal file
@ -0,0 +1,4 @@
|
||||
@set UPDATED 14 December 2004
|
||||
@set UPDATED-MONTH December 2004
|
||||
@set EDITION 4.8
|
||||
@set VERSION 4.8
|
4
external/gpl2/texinfo/dist/doc/stamp-vti
vendored
Normal file
4
external/gpl2/texinfo/dist/doc/stamp-vti
vendored
Normal file
@ -0,0 +1,4 @@
|
||||
@set UPDATED 29 December 2004
|
||||
@set UPDATED-MONTH December 2004
|
||||
@set EDITION 4.8
|
||||
@set VERSION 4.8
|
97
external/gpl2/texinfo/dist/doc/texi2dvi.1
vendored
Normal file
97
external/gpl2/texinfo/dist/doc/texi2dvi.1
vendored
Normal file
@ -0,0 +1,97 @@
|
||||
.\" $NetBSD: texi2dvi.1,v 1.1.1.1 2016/01/14 00:11:30 christos Exp $
|
||||
.\"
|
||||
.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.34.
|
||||
.TH TEXI2DVI "1" "December 2004" "texi2dvi 1.34" "User Commands"
|
||||
.SH NAME
|
||||
texi2dvi \- print Texinfo documents
|
||||
.SH SYNOPSIS
|
||||
.B texi2dvi
|
||||
[\fIOPTION\fR]... \fIFILE\fR...
|
||||
.SH DESCRIPTION
|
||||
Run each Texinfo or LaTeX FILE through TeX in turn until all
|
||||
cross\-references are resolved, building all indices. The directory
|
||||
containing each FILE is searched for included files. The suffix of FILE
|
||||
is used to determine its language (LaTeX or Texinfo).
|
||||
.PP
|
||||
Makeinfo is used to perform Texinfo macro expansion before running TeX
|
||||
when needed.
|
||||
.SS "Operation modes:"
|
||||
.TP
|
||||
\fB\-b\fR, \fB\-\-batch\fR
|
||||
no interaction
|
||||
.TP
|
||||
\fB\-c\fR, \fB\-\-clean\fR
|
||||
remove all auxiliary files
|
||||
.TP
|
||||
\fB\-D\fR, \fB\-\-debug\fR
|
||||
turn on shell debugging (set \fB\-x\fR)
|
||||
.TP
|
||||
\fB\-h\fR, \fB\-\-help\fR
|
||||
display this help and exit successfully
|
||||
.TP
|
||||
\fB\-o\fR, \fB\-\-output\fR=\fIOFILE\fR
|
||||
leave output in OFILE (implies \fB\-\-clean\fR);
|
||||
Only one input FILE may be specified in this case
|
||||
.TP
|
||||
\fB\-q\fR, \fB\-\-quiet\fR
|
||||
no output unless errors (implies \fB\-\-batch\fR)
|
||||
.TP
|
||||
\fB\-s\fR, \fB\-\-silent\fR
|
||||
same as \fB\-\-quiet\fR
|
||||
.TP
|
||||
\fB\-v\fR, \fB\-\-version\fR
|
||||
display version information and exit successfully
|
||||
.TP
|
||||
\fB\-V\fR, \fB\-\-verbose\fR
|
||||
report on what is done
|
||||
.SS "TeX tuning:"
|
||||
.TP
|
||||
\-@
|
||||
use @input instead of \einput; for preloaded Texinfo
|
||||
.TP
|
||||
\fB\-e\fR, \fB\-E\fR, \fB\-\-expand\fR
|
||||
force macro expansion using makeinfo
|
||||
.TP
|
||||
\fB\-I\fR DIR
|
||||
search DIR for Texinfo files
|
||||
.TP
|
||||
\fB\-l\fR, \fB\-\-language\fR=\fILANG\fR
|
||||
specify the LANG of FILE (LaTeX or Texinfo)
|
||||
.TP
|
||||
\fB\-p\fR, \fB\-\-pdf\fR
|
||||
use pdftex or pdflatex for processing
|
||||
.TP
|
||||
\fB\-r\fR, \fB\-\-recode\fR
|
||||
call recode before TeX to translate input characters
|
||||
.TP
|
||||
\fB\-t\fR, \fB\-\-command\fR=\fICMD\fR
|
||||
insert CMD in copy of input file
|
||||
.TP
|
||||
or \fB\-\-texinfo\fR=\fICMD\fR
|
||||
multiple values accumulate
|
||||
.PP
|
||||
The values of the BIBTEX, LATEX (or PDFLATEX), MAKEINDEX, MAKEINFO,
|
||||
TEX (or PDFTEX), TEXINDEX, and THUMBPDF environment variables are used
|
||||
to run those commands, if they are set. Any CMD strings are added
|
||||
after @setfilename for Texinfo input, in the first line for LaTeX input.
|
||||
.SH "REPORTING BUGS"
|
||||
Email bug reports to <bug\-texinfo@gnu.org>,
|
||||
general questions and discussion to <help\-texinfo@gnu.org>.
|
||||
Texinfo home page: http://www.gnu.org/software/texinfo/
|
||||
.SH COPYRIGHT
|
||||
Copyright \(co 2004 Free Software Foundation, Inc.
|
||||
There is NO warranty. You may redistribute this software
|
||||
under the terms of the GNU General Public License.
|
||||
For more information about these matters, see the files named COPYING.
|
||||
.SH "SEE ALSO"
|
||||
The full documentation for
|
||||
.B texi2dvi
|
||||
is maintained as a Texinfo manual. If the
|
||||
.B info
|
||||
and
|
||||
.B texi2dvi
|
||||
programs are properly installed at your site, the command
|
||||
.IP
|
||||
.B info texi2dvi
|
||||
.PP
|
||||
should give you access to the complete manual.
|
49
external/gpl2/texinfo/dist/doc/texindex.1
vendored
Normal file
49
external/gpl2/texinfo/dist/doc/texindex.1
vendored
Normal file
@ -0,0 +1,49 @@
|
||||
.\" $NetBSD: texindex.1,v 1.1.1.1 2016/01/14 00:11:30 christos Exp $
|
||||
.\"
|
||||
.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.34.
|
||||
.TH TEXINDEX "1" "December 2004" "texindex 4.8" "User Commands"
|
||||
.SH NAME
|
||||
texindex \- sort Texinfo index files
|
||||
.SH SYNOPSIS
|
||||
.B texindex
|
||||
[\fIOPTION\fR]... \fIFILE\fR...
|
||||
.SH DESCRIPTION
|
||||
Generate a sorted index for each TeX output FILE.
|
||||
Usually FILE... is specified as `foo.??' for a document `foo.texi'.
|
||||
.SH OPTIONS
|
||||
.TP
|
||||
\fB\-h\fR, \fB\-\-help\fR
|
||||
display this help and exit
|
||||
.TP
|
||||
\fB\-k\fR, \fB\-\-keep\fR
|
||||
keep temporary files around after processing
|
||||
.TP
|
||||
\fB\-\-no\-keep\fR
|
||||
do not keep temporary files around after processing (default)
|
||||
.TP
|
||||
\fB\-o\fR, \fB\-\-output\fR FILE
|
||||
send output to FILE
|
||||
.TP
|
||||
\fB\-\-version\fR
|
||||
display version information and exit
|
||||
.SH "REPORTING BUGS"
|
||||
Email bug reports to bug\-texinfo@gnu.org,
|
||||
general questions and discussion to help\-texinfo@gnu.org.
|
||||
Texinfo home page: http://www.gnu.org/software/texinfo/
|
||||
.SH COPYRIGHT
|
||||
Copyright \(co 2004 Free Software Foundation, Inc.
|
||||
There is NO warranty. You may redistribute this software
|
||||
under the terms of the GNU General Public License.
|
||||
For more information about these matters, see the files named COPYING.
|
||||
.SH "SEE ALSO"
|
||||
The full documentation for
|
||||
.B texindex
|
||||
is maintained as a Texinfo manual. If the
|
||||
.B info
|
||||
and
|
||||
.B texindex
|
||||
programs are properly installed at your site, the command
|
||||
.IP
|
||||
.B info texindex
|
||||
.PP
|
||||
should give you access to the complete manual.
|
53
external/gpl2/texinfo/dist/doc/texinfo.5
vendored
Normal file
53
external/gpl2/texinfo/dist/doc/texinfo.5
vendored
Normal file
@ -0,0 +1,53 @@
|
||||
.\" $NetBSD: texinfo.5,v 1.1.1.1 2016/01/14 00:11:30 christos Exp $
|
||||
.\"
|
||||
.\" texinfo(5)
|
||||
.\" Id: texinfo.5,v 1.2 2004/04/11 17:56:45 karl Exp
|
||||
.\"
|
||||
.\" Copyright (C) 1998, 1999, 2002 Free Software Foundation, Inc.
|
||||
.\"
|
||||
.\" Permission is granted to make and distribute verbatim copies of this
|
||||
.\" manual provided the copyright notice and this permission notice are
|
||||
.\" preserved on all copies.
|
||||
.\"
|
||||
.\" Permission is granted to copy and distribute modified versions of
|
||||
.\" this manual under the conditions for verbatim copying, provided that
|
||||
.\" the entire resulting derived work is distributed under the terms of a
|
||||
.\" permission notice identical to this one.
|
||||
.\"
|
||||
.\" Permission is granted to copy and distribute translations of this
|
||||
.\" manual into another language, under the above conditions for modified
|
||||
.\" versions, except that this permission notice may be stated in a
|
||||
.\" translation approved by the Foundation.
|
||||
.\"
|
||||
.TH TEXINFO 5 "GNU Texinfo" "FSF"
|
||||
.SH NAME
|
||||
texinfo \- software documentation system
|
||||
.SH DESCRIPTION
|
||||
Texinfo is a documentation system that uses a single source file to
|
||||
produce both online information and printed output. It is primarily
|
||||
designed for writing software manuals.
|
||||
.PP
|
||||
For a full description of the Texinfo language and associated tools,
|
||||
please see the Texinfo manual (written in Texinfo itself). Most likely,
|
||||
running this command from your shell:
|
||||
.RS
|
||||
.I info texinfo
|
||||
.RE
|
||||
or this key sequence from inside Emacs:
|
||||
.RS
|
||||
.I M-x info RET m texinfo RET
|
||||
.RE
|
||||
will get you there.
|
||||
.SH AVAILABILITY
|
||||
ftp://ftp.gnu.org/gnu/texinfo/
|
||||
.br
|
||||
or any GNU mirror site.
|
||||
.SH "REPORTING BUGS"
|
||||
Please send bug reports to bug-texinfo@gnu.org,
|
||||
general questions and discussion to help-texinfo@gnu.org.
|
||||
.SH "SEE ALSO"
|
||||
info(1), install-info(1), makeinfo(1), texi2dvi(1), texindex(1).
|
||||
.br
|
||||
emacs(1), tex(1).
|
||||
.br
|
||||
info(5).
|
7086
external/gpl2/texinfo/dist/doc/texinfo.tex
vendored
Normal file
7086
external/gpl2/texinfo/dist/doc/texinfo.tex
vendored
Normal file
File diff suppressed because it is too large
Load Diff
20513
external/gpl2/texinfo/dist/doc/texinfo.txi
vendored
Normal file
20513
external/gpl2/texinfo/dist/doc/texinfo.txi
vendored
Normal file
File diff suppressed because it is too large
Load Diff
74
external/gpl2/texinfo/dist/doc/txi-cs.tex
vendored
Normal file
74
external/gpl2/texinfo/dist/doc/txi-cs.tex
vendored
Normal file
@ -0,0 +1,74 @@
|
||||
% Id: txi-cs.tex,v 1.3 2004/04/11 17:56:45 karl Exp
|
||||
% Czech translation for texinfo.tex.
|
||||
%
|
||||
% Copyright (C) 1999, 2000 Free Software Foundation.
|
||||
%
|
||||
% Authors:
|
||||
% Vladimir Michl <Vladimir.Michl@mujweb.cz>
|
||||
% Stepan Kasal <kasal@ucw.cz>
|
||||
%
|
||||
% This program is free software; you can redistribute it and/or modify
|
||||
% it under the terms of the GNU General Public License as published by
|
||||
% the Free Software Foundation; either version 2 of the License, or
|
||||
% (at your option) any later version.
|
||||
%
|
||||
% This program is distributed in the hope that it will be useful,
|
||||
% but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
% GNU General Public License for more details.
|
||||
%
|
||||
% You should have received a copy of the GNU General Public License
|
||||
% along with this program; if not, write to the Free Software
|
||||
% Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
%
|
||||
\gdef\putwordAppendix{Pøílohy}
|
||||
\gdef\putwordChapter{Kapitola}
|
||||
\gdef\putwordfile{soubor}
|
||||
\gdef\putwordin{v~knize}
|
||||
\gdef\putwordIndexIsEmpty{(Rejstøík je prázdný.)}
|
||||
\gdef\putwordIndexNonexistent{(Rejstøík neexistuje.)}
|
||||
\gdef\putwordInfo{Info}
|
||||
\gdef\putwordInstanceVariableof{Promìnná pro instance tøídy}
|
||||
\gdef\putwordMethodon{Metoda tøídy}
|
||||
\gdef\putwordNoTitle{Bez nadpisu}
|
||||
\gdef\putwordof{tøídy}
|
||||
\global\let\putwordon\putwordof
|
||||
\gdef\putwordpage{stránka}
|
||||
\gdef\putwordsection{oddíl}
|
||||
\gdef\putwordSection{Oddíl}
|
||||
\gdef\putwordsee{viz}
|
||||
\gdef\putwordSee{Viz}
|
||||
\gdef\putwordShortTOC{Struèný obsah}
|
||||
\gdef\putwordTOC{Obsah}
|
||||
%
|
||||
\gdef\putwordMJan{ledna}
|
||||
\gdef\putwordMFeb{února}
|
||||
\gdef\putwordMMar{bøezna}
|
||||
\gdef\putwordMApr{dubna}
|
||||
\gdef\putwordMMai{kvìtna}
|
||||
\gdef\putwordMJun{èervna}
|
||||
\gdef\putwordMJul{èervence}
|
||||
\gdef\putwordMAug{srpna}
|
||||
\gdef\putwordMSep{záøí}
|
||||
\gdef\putwordMOct{øíjna}
|
||||
\gdef\putwordMNov{listopadu}
|
||||
\gdef\putwordMDec{prosince}
|
||||
%
|
||||
\gdef\putwordDefmac{Makro}
|
||||
\gdef\putwordDefspec{Speciální forma}
|
||||
\gdef\putwordDefvar{Promìnná}
|
||||
\gdef\putwordDefopt{Volby}
|
||||
\gdef\putwordDeffunc{Funkce}
|
||||
%
|
||||
% Redefine \today to produce Czech
|
||||
% preferred dates such as 28. januar 1999.
|
||||
%
|
||||
\gdef\today{%
|
||||
\number\day.\nobreak\space
|
||||
\ifcase\month
|
||||
\or\putwordMJan\or\putwordMFeb\or\putwordMMar\or\putwordMApr
|
||||
\or\putwordMMai\or\putwordMJun\or\putwordMJul\or\putwordMAug
|
||||
\or\putwordMSep\or\putwordMOct\or\putwordMNov\or\putwordMDec
|
||||
\fi
|
||||
\penalty3000\relax\space\number\year}
|
||||
%
|
79
external/gpl2/texinfo/dist/doc/txi-de.tex
vendored
Normal file
79
external/gpl2/texinfo/dist/doc/txi-de.tex
vendored
Normal file
@ -0,0 +1,79 @@
|
||||
% txi-de.tex -- adaptation to German for texinfo.tex.
|
||||
% Id: txi-de.tex,v 1.3 2004/04/11 17:56:45 karl Exp
|
||||
%
|
||||
% Copyright (C) 1999 Free Software Foundation, Inc.
|
||||
%
|
||||
% This program is free software; you can redistribute it and/or modify
|
||||
% it under the terms of the GNU General Public License as published by
|
||||
% the Free Software Foundation; either version 2, or (at your option)
|
||||
% any later version.
|
||||
%
|
||||
% This program is distributed in the hope that it will be useful,
|
||||
% but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
% GNU General Public License for more details.
|
||||
%
|
||||
% You should have received a copy of the GNU General Public License
|
||||
% along with this program; if not, write to the Free Software
|
||||
% Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
%
|
||||
% Written by Karl Heinz Marbaise, 18. January 1999, <kama@hippo.fido.de>
|
||||
%%
|
||||
%% german translation of the used words.
|
||||
%% Don't use checking because if it is our turn they have
|
||||
%% been defined.
|
||||
\gdef\putwordAppendix{Anhang}
|
||||
\gdef\putwordChapter{Kapitel}
|
||||
\gdef\putwordfile{Datei}
|
||||
\gdef\putwordin{in}
|
||||
\gdef\putwordInfo{Info}
|
||||
\gdef\putwordMethodon{Methode von}
|
||||
\gdef\putwordon{auf}
|
||||
\gdef\putwordof{von}
|
||||
\gdef\putwordpage{Seite}
|
||||
\gdef\putwordsection{Abschnitt}
|
||||
\gdef\putwordSection{Abschnitt}
|
||||
\gdef\putwordsee{siehe}
|
||||
\gdef\putwordSee{Siehe}
|
||||
\gdef\putwordShortTOC{Kurzverzeichnis}
|
||||
\gdef\putwordTOC{Inhaltsverzeichnis}
|
||||
%%
|
||||
\gdef\putwordNoTitle{Kein Titel}
|
||||
%%
|
||||
%% New defintion for the output of months.
|
||||
\gdef\putwordMJan{Januar}
|
||||
\gdef\putwordMFeb{Februar}
|
||||
\gdef\putwordMMar{M\"arz}
|
||||
\gdef\putwordMApr{April}
|
||||
\gdef\putwordMMai{Mai}
|
||||
\gdef\putwordMJun{Juni}
|
||||
\gdef\putwordMJul{Juli}
|
||||
\gdef\putwordMAug{August}
|
||||
\gdef\putwordMSep{September}
|
||||
\gdef\putwordMOct{Oktober}
|
||||
\gdef\putwordMNov{November}
|
||||
\gdef\putwordMDec{Dezember}
|
||||
%%
|
||||
%% some hyphenation for german language. Might be changed.
|
||||
\hyphenation{An-hang}
|
||||
%%\hyphenation{mini-buf-fer mini-buf-fers}
|
||||
%%\hyphenation{eshell}
|
||||
%%\hyphenation{white-space}
|
||||
%%
|
||||
%% Index handling should also work correct in german
|
||||
\gdef\putwordIndexNonexistent{(Index ist nicht vorhanden)}
|
||||
\gdef\putwordIndexIsEmpty{(Der Index ist leer)}
|
||||
%%
|
||||
%% \defmac
|
||||
\gdef\putwordDefmac{Makro}
|
||||
%% \defspec
|
||||
\gdef\putwordDefspec{Spezial Form}
|
||||
%% \defivar
|
||||
\gdef\putwordDefivar{exemplar Variable}
|
||||
%% \defvar leave unchanged because no difference in
|
||||
%% writing but in phonectics.
|
||||
\gdef\putwordDefvar{Variable}
|
||||
%% \defopt
|
||||
\gdef\putwordDefopt{Benutzer Option}
|
||||
%% \deffun
|
||||
\gdef\putwordDeffunc{Funktion}
|
69
external/gpl2/texinfo/dist/doc/txi-en.tex
vendored
Normal file
69
external/gpl2/texinfo/dist/doc/txi-en.tex
vendored
Normal file
@ -0,0 +1,69 @@
|
||||
% English non-translation for texinfo.tex. This is read when a source
|
||||
% document says @documentlanguage en (which might happen after another
|
||||
% @documentlanguage). The actual values are the same as defaults.
|
||||
% Id: txi-en.tex,v 1.3 2004/04/11 17:56:45 karl Exp
|
||||
%
|
||||
% Copyright (C) 1999 Free Software Foundation.
|
||||
%
|
||||
% This program is free software; you can redistribute it and/or modify
|
||||
% it under the terms of the GNU General Public License as published by
|
||||
% the Free Software Foundation; either version 2 of the License, or
|
||||
% (at your option) any later version.
|
||||
%
|
||||
% This program is distributed in the hope that it will be useful,
|
||||
% but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
% GNU General Public License for more details.
|
||||
%
|
||||
% You should have received a copy of the GNU General Public License
|
||||
% along with this program; if not, write to the Free Software
|
||||
% Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
|
||||
\gdef\putwordAppendix{Appendix}
|
||||
\gdef\putwordChapter{Chapter}
|
||||
\gdef\putwordfile{file}
|
||||
\gdef\putwordin{in}
|
||||
\gdef\putwordIndexIsEmpty{(Index is empty)}
|
||||
\gdef\putwordIndexNonexistent{(Index is nonexistent)}
|
||||
\gdef\putwordInfo{Info}
|
||||
\gdef\putwordInstanceVariableof{Instance Variable of}
|
||||
\gdef\putwordMethodon{Method on}
|
||||
\gdef\putwordNoTitle{No Title}
|
||||
\gdef\putwordof{of}
|
||||
\gdef\putwordon{on}
|
||||
\gdef\putwordpage{page}
|
||||
\gdef\putwordsection{section}
|
||||
\gdef\putwordSection{Section}
|
||||
\gdef\putwordsee{see}
|
||||
\gdef\putwordSee{See}
|
||||
\gdef\putwordShortTOC{Short Contents}
|
||||
\gdef\putwordTOC{Table of Contents}
|
||||
%
|
||||
\gdef\putwordMJan{January}
|
||||
\gdef\putwordMFeb{February}
|
||||
\gdef\putwordMMar{March}
|
||||
\gdef\putwordMApr{April}
|
||||
\gdef\putwordMMay{May}
|
||||
\gdef\putwordMJun{June}
|
||||
\gdef\putwordMJul{July}
|
||||
\gdef\putwordMAug{August}
|
||||
\gdef\putwordMSep{September}
|
||||
\gdef\putwordMOct{October}
|
||||
\gdef\putwordMNov{November}
|
||||
\gdef\putwordMDec{December}
|
||||
%
|
||||
\gdef\putwordDefmac{Macro}
|
||||
\gdef\putwordDefspec{Special Form}
|
||||
\gdef\putwordDefvar{Variable}
|
||||
\gdef\putwordDefopt{User Option}
|
||||
\gdef\putwordDeffunc{Function}
|
||||
|
||||
% Produces Day Month Year style of output.
|
||||
\def\today{%
|
||||
\number\day\space
|
||||
\ifcase\month
|
||||
\or\putwordMJan\or\putwordMFeb\or\putwordMMar\or\putwordMApr
|
||||
\or\putwordMMay\or\putwordMJun\or\putwordMJul\or\putwordMAug
|
||||
\or\putwordMSep\or\putwordMOct\or\putwordMNov\or\putwordMDec
|
||||
\fi
|
||||
\space\number\year}
|
58
external/gpl2/texinfo/dist/doc/txi-es.tex
vendored
Normal file
58
external/gpl2/texinfo/dist/doc/txi-es.tex
vendored
Normal file
@ -0,0 +1,58 @@
|
||||
% txi-es.tex -- TeX macros to handle Spanish language documents.
|
||||
%
|
||||
% Copyright (C) 1999 by Adrian Perez Jorge
|
||||
%
|
||||
% This txi-es.tex file is free software; you can redistribute it and/or
|
||||
% modify it under the terms of the GNU General Public License as
|
||||
% published by the Free Software Foundation; either version 2, or (at
|
||||
% your option) any later version.
|
||||
%
|
||||
% This txi-es.tex file is distributed in the hope that it will be
|
||||
% useful, but WITHOUT ANY WARRANTY; without even the implied warranty
|
||||
% of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
% General Public License for more details.
|
||||
%
|
||||
|
||||
%
|
||||
% Set up fixed words for Spanish.
|
||||
%
|
||||
|
||||
\gdef\putwordAppendix{Ap\'endice}
|
||||
\gdef\putwordChapter{Cap\'{\char16{}}tulo}
|
||||
\gdef\putwordfile{archivo}
|
||||
\gdef\putwordIndexIsEmpty{(El \'Indice est\'a vac\'{\char16{}}o)}
|
||||
\gdef\putwordIndexNonexistent{(No existe el \'Indice)}
|
||||
\gdef\putwordInfo{Info}
|
||||
\gdef\putwordMethodon{M\'etodo de}
|
||||
\gdef\putwordNoTitle{Sin T\'{\char{16}}tulo}
|
||||
\gdef\putwordof{de}
|
||||
\gdef\putwordon{de}
|
||||
\gdef\putwordpage{p\'agina}
|
||||
\gdef\putwordsection{secci\'on}
|
||||
\gdef\putwordSection{Secci\'on}
|
||||
\gdef\putwordsee{v\'ease}
|
||||
\gdef\putwordSee{V\'ease}
|
||||
\gdef\putwordShortTOC{Resumen del Contenido}
|
||||
\gdef\putwordTOC{\'Indice General}
|
||||
%
|
||||
\gdef\putwordMJan{enero}
|
||||
\gdef\putwordMFeb{febrero}
|
||||
\gdef\putwordMMar{marzo}
|
||||
\gdef\putwordMApr{abril}
|
||||
\gdef\putwordMMay{mayo}
|
||||
\gdef\putwordMJun{junio}
|
||||
\gdef\putwordMJul{julio}
|
||||
\gdef\putwordMAug{agosto}
|
||||
\gdef\putwordMSep{septiembre}
|
||||
\gdef\putwordMOct{octubre}
|
||||
\gdef\putwordMNov{noviembre}
|
||||
\gdef\putwordMDec{diciembre}
|
||||
%
|
||||
\gdef\putwordDefmac{Macro}
|
||||
\gdef\putwordDefspec{Forma Especial}
|
||||
\gdef\putwordDefivar{Variable de Instancia}
|
||||
\gdef\putwordDefvar{Variable}
|
||||
\gdef\putwordDefopt{Opci\'on de Usuario}
|
||||
\gdef\putwordDeffunc{Funci\'on}
|
||||
|
||||
\endinput
|
73
external/gpl2/texinfo/dist/doc/txi-fr.tex
vendored
Normal file
73
external/gpl2/texinfo/dist/doc/txi-fr.tex
vendored
Normal file
@ -0,0 +1,73 @@
|
||||
% txi-fr.tex -- TeX macros to handle French language for texinfo.tex documents.
|
||||
% Id: txi-fr.tex,v 1.3 2004/04/11 17:56:45 karl Exp
|
||||
%
|
||||
% Copyright (C) 1999 Free Software Foundation.
|
||||
%
|
||||
% This program is free software; you can redistribute it and/or modify
|
||||
% it under the terms of the GNU General Public License as published by
|
||||
% the Free Software Foundation; either version 2 of the License, or
|
||||
% (at your option) any later version.
|
||||
%
|
||||
% This program is distributed in the hope that it will be useful,
|
||||
% but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
% GNU General Public License for more details.
|
||||
%
|
||||
% You should have received a copy of the GNU General Public License
|
||||
% along with this program; if not, write to the Free Software
|
||||
% Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
|
||||
% Set up fixed words for French.
|
||||
% Translated by Laurent Bourbeau <bourbeau@progiciels-bpi.ca>
|
||||
% Translation date: le 10 décembre 1999.
|
||||
% Transmitted to: Karl Berry <karl@cs.umb.edu>
|
||||
|
||||
\gdef\putwordAppendix{Annexe}
|
||||
\gdef\putwordChapter{Chapitre}
|
||||
\gdef\putwordfile{fichier}
|
||||
\gdef\putwordin{dans}
|
||||
\gdef\putwordIndexIsEmpty{(Index est vide)}
|
||||
\gdef\putwordIndexNonexistent{(Index n'existe pas)}
|
||||
\gdef\putwordInfo{Info}
|
||||
\gdef\putwordInstanceVariableof{Variable d'instance de}
|
||||
\gdef\putwordMethodon{M\'ethode sur}
|
||||
\gdef\putwordNoTitle{Sans Titre}
|
||||
\gdef\putwordof{de}
|
||||
\gdef\putwordon{sur}
|
||||
\gdef\putwordpage{page}
|
||||
\gdef\putwordsection{section}
|
||||
\gdef\putwordSection{Section}
|
||||
\gdef\putwordsee{voir}
|
||||
\gdef\putwordSee{Voir}
|
||||
\gdef\putwordShortTOC{Sommaire}
|
||||
\gdef\putwordTOC{Table des mati\`eres}
|
||||
%
|
||||
\gdef\putwordMJan{janvier}
|
||||
\gdef\putwordMFeb{f\'evrier}
|
||||
\gdef\putwordMMar{mars}
|
||||
\gdef\putwordMApr{avril}
|
||||
\gdef\putwordMMay{mai}
|
||||
\gdef\putwordMJun{juin}
|
||||
\gdef\putwordMJul{juillet}
|
||||
\gdef\putwordMAug{ao\^ut}
|
||||
\gdef\putwordMSep{septembre}
|
||||
\gdef\putwordMOct{octobre}
|
||||
\gdef\putwordMNov{novembre}
|
||||
\gdef\putwordMDec{d\'ecembre}
|
||||
%
|
||||
\gdef\putwordDefmac{Macro}
|
||||
\gdef\putwordDefspec{Forme Sp\'eciale}
|
||||
\gdef\putwordDefvar{Variable}
|
||||
\gdef\putwordDefopt{Option de l'usager}
|
||||
\gdef\putwordDeffunc{Fonction}
|
||||
|
||||
% Produces Day Month Year style of output.
|
||||
% French datation - for instance: 10 janvier 2000.
|
||||
\def\today{%
|
||||
\number\day\space
|
||||
\ifcase\month
|
||||
\or\putwordMJan\or\putwordMFeb\or\putwordMMar\or\putwordMApr
|
||||
\or\putwordMMay\or\putwordMJun\or\putwordMJul\or\putwordMAug
|
||||
\or\putwordMSep\or\putwordMOct\or\putwordMNov\or\putwordMDec
|
||||
\fi
|
||||
\space\number\year}
|
69
external/gpl2/texinfo/dist/doc/txi-it.tex
vendored
Normal file
69
external/gpl2/texinfo/dist/doc/txi-it.tex
vendored
Normal file
@ -0,0 +1,69 @@
|
||||
% English non-translation for texinfo.tex. This is read when a source
|
||||
% document says @documentlanguage en (which might happen after another
|
||||
% @documentlanguage). The actual values are the same as defaults.
|
||||
% Id: txi-it.tex,v 1.3 2004/04/11 17:56:45 karl Exp
|
||||
%
|
||||
% Copyright (C) 1999 Free Software Foundation.
|
||||
%
|
||||
% This program is free software; you can redistribute it and/or modify
|
||||
% it under the terms of the GNU General Public License as published by
|
||||
% the Free Software Foundation; either version 2 of the License, or
|
||||
% (at your option) any later version.
|
||||
%
|
||||
% This program is distributed in the hope that it will be useful,
|
||||
% but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
% GNU General Public License for more details.
|
||||
%
|
||||
% You should have received a copy of the GNU General Public License
|
||||
% along with this program; if not, write to the Free Software
|
||||
% Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
|
||||
\gdef\putwordAppendix{Appendice}
|
||||
\gdef\putwordChapter{Capitolo}
|
||||
\gdef\putwordfile{file}
|
||||
\gdef\putwordin{in}
|
||||
\gdef\putwordIndexIsEmpty{(L'indice \'e vuoto)}
|
||||
\gdef\putwordIndexNonexistent{(L'indice non esiste)}
|
||||
\gdef\putwordInfo{Info}
|
||||
\gdef\putwordInstanceVariableof{Variabile di istanza di}
|
||||
\gdef\putwordMethodon{Metodo di}
|
||||
\gdef\putwordNoTitle{Nessun titolo}
|
||||
\gdef\putwordof{di}
|
||||
\gdef\putwordon{su}
|
||||
\gdef\putwordpage{pagina}
|
||||
\gdef\putwordsection{sezione}
|
||||
\gdef\putwordSection{Sezione}
|
||||
\gdef\putwordsee{vedi}
|
||||
\gdef\putwordSee{Vedi}
|
||||
\gdef\putwordShortTOC{Sommario abbreviato}
|
||||
\gdef\putwordTOC{Sommario}
|
||||
%
|
||||
\gdef\putwordMJan{Gennaio}
|
||||
\gdef\putwordMFeb{Febbraio}
|
||||
\gdef\putwordMMar{Marzo}
|
||||
\gdef\putwordMApr{Aprile}
|
||||
\gdef\putwordMMay{Maggio}
|
||||
\gdef\putwordMJun{Giugno}
|
||||
\gdef\putwordMJul{Luglio}
|
||||
\gdef\putwordMAug{Agosto}
|
||||
\gdef\putwordMSep{Settembre}
|
||||
\gdef\putwordMOct{Ottobre}
|
||||
\gdef\putwordMNov{Novembre}
|
||||
\gdef\putwordMDec{Dicembre}
|
||||
%
|
||||
\gdef\putwordDefmac{Macro}
|
||||
\gdef\putwordDefspec{Forma speciale}
|
||||
\gdef\putwordDefvar{Variabile}
|
||||
\gdef\putwordDefopt{Opzione}
|
||||
\gdef\putwordDeffunc{Funzione}
|
||||
|
||||
% Produces Day Month Year style of output.
|
||||
\def\today{%
|
||||
\number\day\space
|
||||
\ifcase\month
|
||||
\or\putwordMJan\or\putwordMFeb\or\putwordMMar\or\putwordMApr
|
||||
\or\putwordMMay\or\putwordMJun\or\putwordMJul\or\putwordMAug
|
||||
\or\putwordMSep\or\putwordMOct\or\putwordMNov\or\putwordMDec
|
||||
\fi
|
||||
\space\number\year}
|
68
external/gpl2/texinfo/dist/doc/txi-nl.tex
vendored
Normal file
68
external/gpl2/texinfo/dist/doc/txi-nl.tex
vendored
Normal file
@ -0,0 +1,68 @@
|
||||
% Dutch translation for texinfo.tex.
|
||||
% Id: txi-nl.tex,v 1.3 2004/04/11 17:56:45 karl Exp
|
||||
%
|
||||
% Copyright (C) 1999 Free Software Foundation.
|
||||
%
|
||||
% This program is free software; you can redistribute it and/or modify
|
||||
% it under the terms of the GNU General Public License as published by
|
||||
% the Free Software Foundation; either version 2 of the License, or
|
||||
% (at your option) any later version.
|
||||
%
|
||||
% This program is distributed in the hope that it will be useful,
|
||||
% but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
% GNU General Public License for more details.
|
||||
%
|
||||
% You should have received a copy of the GNU General Public License
|
||||
% along with this program; if not, write to the Free Software
|
||||
% Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
|
||||
% Set up fixed words if not already set.
|
||||
\gdef\putwordAppendix{Appendix}
|
||||
\gdef\putwordChapter{Hoofdstuk}
|
||||
\gdef\putwordfile{bestand}
|
||||
\gdef\putwordin{in}
|
||||
\gdef\putwordIndexIsEmpty{(Index is leeg)}
|
||||
\gdef\putwordIndexNonexistent{(Index bestaat niet)}
|
||||
\gdef\putwordInfo{Info}
|
||||
\gdef\putwordInstanceVariableof{Instantie Variabele van}
|
||||
\gdef\putwordMethodon{Methode van}
|
||||
\gdef\putwordNoTitle{Geen titel}
|
||||
\gdef\putwordof{van}
|
||||
\gdef\putwordon{op}
|
||||
\gdef\putwordpage{pagina}
|
||||
\gdef\putwordsection{sectie}
|
||||
\gdef\putwordSection{Sectie}
|
||||
\gdef\putwordsee{zie}
|
||||
\gdef\putwordSee{Zie}
|
||||
\gdef\putwordShortTOC{Korte inhoudsopgave}
|
||||
\gdef\putwordTOC{Inhoudsopgave}
|
||||
%
|
||||
\gdef\putwordMJan{Januari}
|
||||
\gdef\putwordMFeb{Februari}
|
||||
\gdef\putwordMMar{Maart}
|
||||
\gdef\putwordMApr{April}
|
||||
\gdef\putwordMMay{Mei}
|
||||
\gdef\putwordMJun{Juni}
|
||||
\gdef\putwordMJul{Juli}
|
||||
\gdef\putwordMAug{Augustus}
|
||||
\gdef\putwordMSep{September}
|
||||
\gdef\putwordMOct{Oktober}
|
||||
\gdef\putwordMNov{November}
|
||||
\gdef\putwordMDec{December}
|
||||
%
|
||||
\gdef\putwordDefmac{Macro}
|
||||
\gdef\putwordDefspec{Speciale Vorm}
|
||||
\gdef\putwordDefvar{Variabele}
|
||||
\gdef\putwordDefopt{Gebruikers optie}
|
||||
\gdef\putwordDeffunc{Functie}
|
||||
|
||||
% Produces Day Month Year style of output.
|
||||
\def\today{%
|
||||
\number\day\space
|
||||
\ifcase\month
|
||||
\or\putwordMJan\or\putwordMFeb\or\putwordMMar\or\putwordMApr
|
||||
\or\putwordMMay\or\putwordMJun\or\putwordMJul\or\putwordMAug
|
||||
\or\putwordMSep\or\putwordMOct\or\putwordMNov\or\putwordMDec
|
||||
\fi
|
||||
\space\number\year}
|
69
external/gpl2/texinfo/dist/doc/txi-no.tex
vendored
Normal file
69
external/gpl2/texinfo/dist/doc/txi-no.tex
vendored
Normal file
@ -0,0 +1,69 @@
|
||||
% Norwegian translation for texinfo.tex (1999-10-29, GNU Texinfo 4.0).
|
||||
% Enables the use of words like Kapittel instead of Chapter, etc.
|
||||
%
|
||||
% Copyright (C) 1999 Trond Endrest=F8l <endrestol@hotmail.com>
|
||||
%
|
||||
% This program is free software; you can redistribute it and/or modify
|
||||
% it under the terms of the GNU General Public License as published by
|
||||
% the Free Software Foundation; either version 2 of the License, or
|
||||
% (at your option) any later version.
|
||||
%
|
||||
% This program is distributed in the hope that it will be useful,
|
||||
% but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
% GNU General Public License for more details.
|
||||
%
|
||||
% You should have received a copy of the GNU General Public License
|
||||
% along with this program; if not, write to the Free Software
|
||||
% Foundation, Inc., 59 Temple Place - Suite 330, Boston,
|
||||
% MA 02111-1307, USA.
|
||||
%
|
||||
\gdef\putwordAppendix{Vedlegg}
|
||||
\gdef\putwordChapter{Kapittel}
|
||||
\gdef\putwordfile{fil}
|
||||
\gdef\putwordIndexIsEmpty{(Indeks er tom)}
|
||||
\gdef\putwordIndexNonexistent{(Indeks eksisterer ikke)}
|
||||
\gdef\putwordInfo{Info}
|
||||
\gdef\putwordMethodon{Metode p\aa}
|
||||
\gdef\putwordNoTitle{Ingen tittel}
|
||||
\gdef\putwordof{av}
|
||||
\gdef\putwordon{p\aa}
|
||||
\gdef\putwordpage{side}
|
||||
\gdef\putwordsection{avsnitt}
|
||||
\gdef\putwordSection{Avsnitt}
|
||||
\gdef\putwordsee{se}
|
||||
\gdef\putwordSee{Se}
|
||||
\gdef\putwordShortTOC{Kort innholdsfortegnelse}
|
||||
\gdef\putwordTOC{Innholdsfortegnelse}
|
||||
%
|
||||
\gdef\putwordMJan{januar}
|
||||
\gdef\putwordMFeb{februar}
|
||||
\gdef\putwordMMar{mars}
|
||||
\gdef\putwordMApr{april}
|
||||
\gdef\putwordMMay{mai}
|
||||
\gdef\putwordMJun{juni}
|
||||
\gdef\putwordMJul{juli}
|
||||
\gdef\putwordMAug{august}
|
||||
\gdef\putwordMSep{september}
|
||||
\gdef\putwordMOct{oktober}
|
||||
\gdef\putwordMNov{november}
|
||||
\gdef\putwordMDec{desember}
|
||||
%
|
||||
\gdef\putwordDefmac{Makro}
|
||||
\gdef\putwordDefspec{Spesiell form}
|
||||
\gdef\putwordDefivar{Forekomstvariabel}
|
||||
\gdef\putwordDefvar{Variabel}
|
||||
\gdef\putwordDefopt{Brukervalg}
|
||||
\gdef\putwordDeffunc{Funksjon}
|
||||
%
|
||||
% Redefine \today to produce Norwegian
|
||||
% preferred dates such as 28. januar 1999.
|
||||
%
|
||||
\gdef\today{%
|
||||
\number\day.\space
|
||||
\ifcase\month
|
||||
\or\putwordMJan\or\putwordMFeb\or\putwordMMar\or\putwordMApr
|
||||
\or\putwordMMay\or\putwordMJun\or\putwordMJul\or\putwordMAug
|
||||
\or\putwordMSep\or\putwordMOct\or\putwordMNov\or\putwordMDec
|
||||
\fi
|
||||
\space\number\year}
|
73
external/gpl2/texinfo/dist/doc/txi-pl.tex
vendored
Normal file
73
external/gpl2/texinfo/dist/doc/txi-pl.tex
vendored
Normal file
@ -0,0 +1,73 @@
|
||||
% txi-pl.tex -- adaptation to Polish for texinfo.tex.
|
||||
% Id: txi-pl.tex,v 1.3 2004/04/11 17:56:45 karl Exp
|
||||
%
|
||||
% Copyright (C) 2003 Free Software Foundation.
|
||||
%
|
||||
% This program is free software; you can redistribute it and/or modify
|
||||
% it under the terms of the GNU General Public License as published by
|
||||
% the Free Software Foundation; either version 2 of the License, or
|
||||
% (at your option) any later version.
|
||||
%
|
||||
% This program is distributed in the hope that it will be useful,
|
||||
% but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
% GNU General Public License for more details.
|
||||
%
|
||||
% You should have received a copy of the GNU General Public License
|
||||
% along with this program; if not, write to the Free Software
|
||||
% Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
%
|
||||
% Written by Wojciech Polak <polak@gnu.org> on 29-03-2003.
|
||||
% Modified by Staszek Wawrykiewicz <staw@gust.org.pl> on 01-04-2003.
|
||||
%
|
||||
\prefixing
|
||||
\gdef\putwordAppendix{Suplement}
|
||||
\gdef\putwordChapter{Rozdzia/l}
|
||||
\gdef\putwordfile{plik}
|
||||
\gdef\putwordin{w}
|
||||
\gdef\putwordIndexIsEmpty{(Skorowidz jest pusty)}
|
||||
\gdef\putwordIndexNonexistent{(Brak skorowidza)}
|
||||
\gdef\putwordInfo{Info}
|
||||
\gdef\putwordInstanceVariableof{Przyk/ladowa zmienna}
|
||||
\gdef\putwordMethodon{Metoda}
|
||||
\gdef\putwordNoTitle{Brak tytu/lu}
|
||||
\gdef\putwordof{z}
|
||||
\gdef\putwordon{na}
|
||||
\gdef\putwordpage{strona}
|
||||
\gdef\putwordsection{cz/e/s/c}
|
||||
\gdef\putwordSection{Cz/e/s/c}
|
||||
\gdef\putwordsee{zobacz}
|
||||
\gdef\putwordSee{Zobacz}
|
||||
\gdef\putwordShortTOC{Kr/otka zawarto/s/c}
|
||||
\gdef\putwordTOC{Spis tre/sci}
|
||||
%
|
||||
\gdef\putwordMJan{stycznia}
|
||||
\gdef\putwordMFeb{lutego}
|
||||
\gdef\putwordMMar{marca}
|
||||
\gdef\putwordMApr{kwietnia}
|
||||
\gdef\putwordMMay{maja}
|
||||
\gdef\putwordMJun{czerwca}
|
||||
\gdef\putwordMJul{lipca}
|
||||
\gdef\putwordMAug{sierpnia}
|
||||
\gdef\putwordMSep{wrze/snia}
|
||||
\gdef\putwordMOct{pa/xdziernika}
|
||||
\gdef\putwordMNov{listopada}
|
||||
\gdef\putwordMDec{grudnia}
|
||||
%
|
||||
\gdef\putwordDefmac{Makro}
|
||||
\gdef\putwordDefspec{Specjalna forma}
|
||||
\gdef\putwordDefvar{Zmienna}
|
||||
\gdef\putwordDefopt{Opcja u/zytkownika}
|
||||
\gdef\putwordDeffunc{Funkcja}
|
||||
\nonprefixing
|
||||
%
|
||||
% Produces Day Month Year style of output.
|
||||
%
|
||||
\def\today{%
|
||||
\number\day\space
|
||||
\ifcase\month
|
||||
\or\putwordMJan\or\putwordMFeb\or\putwordMMar\or\putwordMApr
|
||||
\or\putwordMMay\or\putwordMJun\or\putwordMJul\or\putwordMAug
|
||||
\or\putwordMSep\or\putwordMOct\or\putwordMNov\or\putwordMDec
|
||||
\fi
|
||||
\space\number\year}
|
69
external/gpl2/texinfo/dist/doc/txi-pt.tex
vendored
Normal file
69
external/gpl2/texinfo/dist/doc/txi-pt.tex
vendored
Normal file
@ -0,0 +1,69 @@
|
||||
% txi-pt.tex -- adaptation to Portuguese for texinfo.tex.
|
||||
%
|
||||
% Copyright (C) 1999 Free Software Foundation, Inc.
|
||||
%
|
||||
% This program is free software; you can redistribute it and/or modify
|
||||
% it under the terms of the GNU General Public License as published by
|
||||
% the Free Software Foundation; either version 2, or (at your option)
|
||||
% any later version.
|
||||
%
|
||||
% This program is distributed in the hope that it will be useful,
|
||||
% but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
% GNU General Public License for more details.
|
||||
%
|
||||
% You should have received a copy of the GNU General Public License
|
||||
% along with this program; if not, write to the Free Software
|
||||
% Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
%
|
||||
% Written by Lalo Martins <lalo@webcom.com> at 05 August 1999
|
||||
%%
|
||||
%% Portuguese translation of the used words.
|
||||
\gdef\putwordAppendix{Ap\^endice}
|
||||
\gdef\putwordChapter{Cap\'\ptexi tulo}
|
||||
\gdef\putwordfile{Data}
|
||||
\gdef\putwordin{em}
|
||||
\gdef\putwordInfo{Info}
|
||||
\gdef\putwordMethodon{M\'etodo de}
|
||||
\gdef\putwordon{em}
|
||||
\gdef\putwordof{de}
|
||||
\gdef\putwordpage{P\'agina}
|
||||
\gdef\putwordsection{se\,c\~ao}
|
||||
\gdef\putwordSection{Se\,c\~ao}
|
||||
\gdef\putwordsee{veja}
|
||||
\gdef\putwordSee{Veja}
|
||||
\gdef\putwordShortTOC{Breve Sum\'ario}
|
||||
\gdef\putwordTOC{Sum\'ario}
|
||||
%%
|
||||
\gdef\putwordNoTitle{Sem T\'\ptexi tulo}
|
||||
%%
|
||||
%% New defintion for the output of months.
|
||||
\gdef\putwordMJan{Janeiro}
|
||||
\gdef\putwordMFeb{Fevereiro}
|
||||
\gdef\putwordMMar{Mar\,co}
|
||||
\gdef\putwordMApr{Abril}
|
||||
\gdef\putwordMMai{Maio}
|
||||
\gdef\putwordMJun{Junho}
|
||||
\gdef\putwordMJul{Julho}
|
||||
\gdef\putwordMAug{Agosto}
|
||||
\gdef\putwordMSep{Setembro}
|
||||
\gdef\putwordMOct{Outubro}
|
||||
\gdef\putwordMNov{Novembro}
|
||||
\gdef\putwordMDec{Dezembro}
|
||||
%%
|
||||
%% Index handling should also work correct in german
|
||||
\gdef\putwordIndexNonexistent{(\'Indice inexistente)}
|
||||
\gdef\putwordIndexIsEmpty{(\'Indice vazio)}
|
||||
%%
|
||||
%% \defmac
|
||||
\gdef\putwordDefmac{Macro}
|
||||
%% \defspec
|
||||
\gdef\putwordDefspec{Forma Especial}
|
||||
%% \defivar
|
||||
\gdef\putwordDefivar{Vari\'avel de Inst\^ancia}
|
||||
%% \defvar
|
||||
\gdef\putwordDefvar{Vari\'avel}
|
||||
%% \defopt
|
||||
\gdef\putwordDefopt{Op\,c\~ao de Usu\'ario}
|
||||
%% \deffun
|
||||
\gdef\putwordDeffunc{Fun\,c\~ao}
|
82
external/gpl2/texinfo/dist/doc/txi-tr.tex
vendored
Normal file
82
external/gpl2/texinfo/dist/doc/txi-tr.tex
vendored
Normal file
@ -0,0 +1,82 @@
|
||||
% txi-en.tex -- adaptation to Turkish for texinfo.tex.
|
||||
% Id: txi-tr.tex,v 1.3 2004/04/11 17:56:45 karl Exp
|
||||
%
|
||||
% Copyright (C) 2003 Free Software Foundation, Inc.
|
||||
%
|
||||
% This program is free software; you can redistribute it and/or modify
|
||||
% it under the terms of the GNU General Public License as published by
|
||||
% the Free Software Foundation; either version 2, or (at your option)
|
||||
% any later version.
|
||||
%
|
||||
% This program is distributed in the hope that it will be useful,
|
||||
% but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
% GNU General Public License for more details.
|
||||
%
|
||||
% You should have received a copy of the GNU General Public License
|
||||
% along with this program; if not, write to the Free Software
|
||||
% Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
%
|
||||
% Written by Alper Ersoy, 5 January 2003, <aersoy@tfz.net>
|
||||
%
|
||||
%%
|
||||
%% Turkish translations of the used words.
|
||||
%%
|
||||
%%
|
||||
\gdef\putwordAppendix{Ek}
|
||||
\gdef\putwordChapter{Kesim}
|
||||
\gdef\putwordfile{dosya}
|
||||
\gdef\putwordInfo{Bilgi}
|
||||
\gdef\putwordpage{Sayfa}
|
||||
\gdef\putwordsection{b\"ol\"um}
|
||||
\gdef\putwordSection{B\"ol\"um}
|
||||
\gdef\putwordsee{bkz.}
|
||||
\gdef\putwordSee{Bkz.}
|
||||
\gdef\putwordShortTOC{\dotaccent{I}\,cindekiler (K\dotless{i}saca)}
|
||||
\gdef\putwordTOC{\dotaccent{I}\,cindekiler}
|
||||
%%
|
||||
%% This one really sucks :\
|
||||
\gdef\putwordMethodon{S\dotless{i}n\dotless{i}f:}
|
||||
%%
|
||||
%% I could not translate these ones, need examples :\
|
||||
%% If anybody out there is using these in turkish, please
|
||||
%% don't hesitate to send me patches ;)
|
||||
\gdef\putwordin{in}
|
||||
\gdef\putwordon{on}
|
||||
\gdef\putwordof{of}
|
||||
%%
|
||||
%%
|
||||
\gdef\putwordNoTitle{Ba\,sl\dotless{i}s\dotless{i}z}
|
||||
\gdef\putwordIndexNonexistent{(Dizin bulunmamakta)}
|
||||
\gdef\putwordIndexIsEmpty{(Dizin bo\,s)}
|
||||
%%
|
||||
%% Months
|
||||
\gdef\putwordMJan{Ocak}
|
||||
\gdef\putwordMFeb{\,Subat}
|
||||
\gdef\putwordMMar{Mart}
|
||||
\gdef\putwordMApr{Nisan}
|
||||
\gdef\putwordMMai{May\dotless{i}s}
|
||||
\gdef\putwordMJun{Haziran}
|
||||
\gdef\putwordMJul{Temmuz}
|
||||
\gdef\putwordMAug{A\u{g}ustos}
|
||||
\gdef\putwordMSep{Eyl\"ul}
|
||||
\gdef\putwordMOct{Ekim}
|
||||
\gdef\putwordMNov{Kas\dotless{i}m}
|
||||
\gdef\putwordMDec{Aral\dotless{i}k}
|
||||
%%
|
||||
%% Definitions
|
||||
\gdef\putwordDefmac{Makro}
|
||||
\gdef\putwordDefspec{\"Ozel Yap\dotless{i}}
|
||||
\gdef\putwordDefopt{Se\,cenek}
|
||||
\gdef\putwordDefvar{De\u{g}i\,sken}
|
||||
\gdef\putwordDeffunc{Fonksiyon}
|
||||
%%
|
||||
% Produces Day Month Year style of output.
|
||||
\def\today{%
|
||||
\number\day\space
|
||||
\ifcase\month
|
||||
\or\putwordMJan\or\putwordMFeb\or\putwordMMar\or\putwordMApr
|
||||
\or\putwordMMay\or\putwordMJun\or\putwordMJul\or\putwordMAug
|
||||
\or\putwordMSep\or\putwordMOct\or\putwordMNov\or\putwordMDec
|
||||
\fi
|
||||
\space\number\year}
|
5
external/gpl2/texinfo/dist/doc/version-stnd.texi
vendored
Normal file
5
external/gpl2/texinfo/dist/doc/version-stnd.texi
vendored
Normal file
@ -0,0 +1,5 @@
|
||||
@set UPDATED 14 December 2004
|
||||
@c $NetBSD: version-stnd.texi,v 1.1.1.1 2016/01/14 00:11:30 christos Exp $
|
||||
@set UPDATED-MONTH December 2004
|
||||
@set EDITION 4.8
|
||||
@set VERSION 4.8
|
5
external/gpl2/texinfo/dist/doc/version.texi
vendored
Normal file
5
external/gpl2/texinfo/dist/doc/version.texi
vendored
Normal file
@ -0,0 +1,5 @@
|
||||
@set UPDATED 29 December 2004
|
||||
@c $NetBSD: version.texi,v 1.1.1.1 2016/01/14 00:11:30 christos Exp $
|
||||
@set UPDATED-MONTH December 2004
|
||||
@set EDITION 4.8
|
||||
@set VERSION 4.8
|
74
external/gpl2/texinfo/dist/info/Makefile.am
vendored
Normal file
74
external/gpl2/texinfo/dist/info/Makefile.am
vendored
Normal file
@ -0,0 +1,74 @@
|
||||
# Id: Makefile.am,v 1.8 2004/10/28 14:03:27 karl Exp
|
||||
# Makefile.am for texinfo/info.
|
||||
# Run automake in .. to produce Makefile.in from this.
|
||||
#
|
||||
# This file is free software; as a special exception the author gives
|
||||
# unlimited permission to copy and/or distribute it, with or without
|
||||
# modifications, as long as this notice is preserved.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful, but
|
||||
# WITHOUT ANY WARRANTY, to the extent permitted by law; without even the
|
||||
# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||
|
||||
# Use `ginfo' for building to avoid confusion with the standard `info'
|
||||
# target. Removes the `g' in the install rule before applying any
|
||||
# user-specified name transformations.
|
||||
bin_PROGRAMS = ginfo infokey
|
||||
transform = s/ginfo/info/; $(program_transform_name)
|
||||
|
||||
localedir = $(datadir)/locale
|
||||
infodir2 = $(datadir)/info
|
||||
|
||||
# -I. for funs.h.
|
||||
# Automake puts -I.. and -I$(srcdir) into DEFS by default, but
|
||||
# we need to override it, so include them ourselves.
|
||||
INCLUDES = -I. -I$(top_srcdir)/lib -I../intl -I.. -I$(srcdir)
|
||||
DEFS += -DLOCALEDIR=\"$(localedir)\" -DINFODIR=\"$(infodir)\" \
|
||||
-DINFODIR2=\"$(infodir2)\"
|
||||
LDADD = ../lib/libtxi.a $(TERMLIBS) $(LIBINTL)
|
||||
|
||||
EXTRA_DIST = README pcterm.c
|
||||
|
||||
ginfo_SOURCES = dir.c display.c display.h doc.h dribble.c dribble.h \
|
||||
echo-area.c echo-area.h \
|
||||
filesys.c filesys.h footnotes.c footnotes.h gc.c gc.h \
|
||||
indices.c indices.h info-utils.c info-utils.h info.c info.h infodoc.c \
|
||||
infomap.c infomap.h m-x.c man.c man.h nodemenu.c nodes.c nodes.h \
|
||||
search.c search.h session.c session.h signals.c signals.h \
|
||||
termdep.h terminal.c terminal.h tilde.c tilde.h \
|
||||
variables.c variables.h window.c window.h
|
||||
nodist_ginfo_SOURCES = doc.c funs.h
|
||||
infokey_SOURCES = infokey.c infokey.h key.h
|
||||
nodist_infokey_SOURCES = key.c funs.h
|
||||
|
||||
# The files `doc.c', `key.c' and `funs.h' are created by ./makedoc run over the
|
||||
# source files which contain DECLARE_INFO_COMMAND. `funs.h' is a header file
|
||||
# listing the functions found. `doc.c' is a structure containing pointers
|
||||
# to those functions along with completable names and documentation strings.
|
||||
#
|
||||
generated_sources = doc.c key.c funs.h
|
||||
|
||||
# We need a linear ordering to prevent race condition in parallel make.
|
||||
# See the node ``(automake)Multiple Outputs'' for an explanation.
|
||||
doc.c: key.c
|
||||
key.c: funs.h
|
||||
|
||||
# These files are not distributed.
|
||||
DISTCLEANFILES = $(generated_sources)
|
||||
|
||||
noinst_PROGRAMS = makedoc
|
||||
makedoc_SOURCES = makedoc.c
|
||||
|
||||
# Files with Info commands defined that makedoc should read.
|
||||
cmd_sources = $(srcdir)/session.c $(srcdir)/echo-area.c $(srcdir)/infodoc.c \
|
||||
$(srcdir)/m-x.c $(srcdir)/indices.c $(srcdir)/nodemenu.c \
|
||||
$(srcdir)/footnotes.c $(srcdir)/variables.c
|
||||
|
||||
# The $(EXEEXT) should be added by Automake, but isn't. Fine.
|
||||
$(generated_sources): makedoc$(EXEEXT) $(cmd_sources)
|
||||
rm -f $(generated_sources)
|
||||
$(top_builddir)/$(native_tools)/info/makedoc $(cmd_sources)
|
||||
|
||||
# The following hack is necessary to hint make before the automatic
|
||||
# dependencies are built.
|
||||
BUILT_SOURCES = funs.h
|
584
external/gpl2/texinfo/dist/info/Makefile.in
vendored
Normal file
584
external/gpl2/texinfo/dist/info/Makefile.in
vendored
Normal file
@ -0,0 +1,584 @@
|
||||
# Makefile.in generated by automake 1.9.4 from Makefile.am.
|
||||
# @configure_input@
|
||||
|
||||
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
|
||||
# 2003, 2004 Free Software Foundation, Inc.
|
||||
# This Makefile.in is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
# with or without modifications, as long as this notice is preserved.
|
||||
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
|
||||
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
|
||||
# PARTICULAR PURPOSE.
|
||||
|
||||
@SET_MAKE@
|
||||
|
||||
# Id: Makefile.am,v 1.8 2004/10/28 14:03:27 karl Exp
|
||||
# Makefile.am for texinfo/info.
|
||||
# Run automake in .. to produce Makefile.in from this.
|
||||
#
|
||||
# This file is free software; as a special exception the author gives
|
||||
# unlimited permission to copy and/or distribute it, with or without
|
||||
# modifications, as long as this notice is preserved.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful, but
|
||||
# WITHOUT ANY WARRANTY, to the extent permitted by law; without even the
|
||||
# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||
|
||||
SOURCES = $(ginfo_SOURCES) $(nodist_ginfo_SOURCES) $(infokey_SOURCES) $(nodist_infokey_SOURCES) $(makedoc_SOURCES)
|
||||
|
||||
srcdir = @srcdir@
|
||||
top_srcdir = @top_srcdir@
|
||||
VPATH = @srcdir@
|
||||
pkgdatadir = $(datadir)/@PACKAGE@
|
||||
pkglibdir = $(libdir)/@PACKAGE@
|
||||
pkgincludedir = $(includedir)/@PACKAGE@
|
||||
top_builddir = ..
|
||||
am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
|
||||
INSTALL = @INSTALL@
|
||||
install_sh_DATA = $(install_sh) -c -m 644
|
||||
install_sh_PROGRAM = $(install_sh) -c
|
||||
install_sh_SCRIPT = $(install_sh) -c
|
||||
INSTALL_HEADER = $(INSTALL_DATA)
|
||||
NORMAL_INSTALL = :
|
||||
PRE_INSTALL = :
|
||||
POST_INSTALL = :
|
||||
NORMAL_UNINSTALL = :
|
||||
PRE_UNINSTALL = :
|
||||
POST_UNINSTALL = :
|
||||
build_triplet = @build@
|
||||
host_triplet = @host@
|
||||
bin_PROGRAMS = ginfo$(EXEEXT) infokey$(EXEEXT)
|
||||
noinst_PROGRAMS = makedoc$(EXEEXT)
|
||||
subdir = info
|
||||
DIST_COMMON = README $(srcdir)/Makefile.am $(srcdir)/Makefile.in
|
||||
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
|
||||
am__aclocal_m4_deps = $(top_srcdir)/m4/codeset.m4 \
|
||||
$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/glibc21.m4 \
|
||||
$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intdiv0.m4 \
|
||||
$(top_srcdir)/m4/intmax.m4 $(top_srcdir)/m4/inttypes-pri.m4 \
|
||||
$(top_srcdir)/m4/inttypes.m4 $(top_srcdir)/m4/inttypes_h.m4 \
|
||||
$(top_srcdir)/m4/lcmessage.m4 $(top_srcdir)/m4/lib-ld.m4 \
|
||||
$(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
|
||||
$(top_srcdir)/m4/longdouble.m4 $(top_srcdir)/m4/longlong.m4 \
|
||||
$(top_srcdir)/m4/mkstemp.m4 $(top_srcdir)/m4/nls.m4 \
|
||||
$(top_srcdir)/m4/onceonly_2_57.m4 $(top_srcdir)/m4/po.m4 \
|
||||
$(top_srcdir)/m4/printf-posix.m4 $(top_srcdir)/m4/progtest.m4 \
|
||||
$(top_srcdir)/m4/signed.m4 $(top_srcdir)/m4/size_max.m4 \
|
||||
$(top_srcdir)/m4/stdint_h.m4 $(top_srcdir)/m4/strcase.m4 \
|
||||
$(top_srcdir)/m4/uintmax_t.m4 $(top_srcdir)/m4/ulonglong.m4 \
|
||||
$(top_srcdir)/m4/wchar_t.m4 $(top_srcdir)/m4/wint_t.m4 \
|
||||
$(top_srcdir)/m4/xsize.m4 $(top_srcdir)/configure.ac
|
||||
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
|
||||
$(ACLOCAL_M4)
|
||||
mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
|
||||
CONFIG_HEADER = $(top_builddir)/config.h
|
||||
CONFIG_CLEAN_FILES =
|
||||
am__installdirs = "$(DESTDIR)$(bindir)"
|
||||
binPROGRAMS_INSTALL = $(INSTALL_PROGRAM)
|
||||
PROGRAMS = $(bin_PROGRAMS) $(noinst_PROGRAMS)
|
||||
am_ginfo_OBJECTS = dir.$(OBJEXT) display.$(OBJEXT) dribble.$(OBJEXT) \
|
||||
echo-area.$(OBJEXT) filesys.$(OBJEXT) footnotes.$(OBJEXT) \
|
||||
gc.$(OBJEXT) indices.$(OBJEXT) info-utils.$(OBJEXT) \
|
||||
info.$(OBJEXT) infodoc.$(OBJEXT) infomap.$(OBJEXT) \
|
||||
m-x.$(OBJEXT) man.$(OBJEXT) nodemenu.$(OBJEXT) nodes.$(OBJEXT) \
|
||||
search.$(OBJEXT) session.$(OBJEXT) signals.$(OBJEXT) \
|
||||
terminal.$(OBJEXT) tilde.$(OBJEXT) variables.$(OBJEXT) \
|
||||
window.$(OBJEXT)
|
||||
nodist_ginfo_OBJECTS = doc.$(OBJEXT)
|
||||
ginfo_OBJECTS = $(am_ginfo_OBJECTS) $(nodist_ginfo_OBJECTS)
|
||||
ginfo_LDADD = $(LDADD)
|
||||
am__DEPENDENCIES_1 =
|
||||
ginfo_DEPENDENCIES = ../lib/libtxi.a $(am__DEPENDENCIES_1) \
|
||||
$(am__DEPENDENCIES_1)
|
||||
am_infokey_OBJECTS = infokey.$(OBJEXT)
|
||||
nodist_infokey_OBJECTS = key.$(OBJEXT)
|
||||
infokey_OBJECTS = $(am_infokey_OBJECTS) $(nodist_infokey_OBJECTS)
|
||||
infokey_LDADD = $(LDADD)
|
||||
infokey_DEPENDENCIES = ../lib/libtxi.a $(am__DEPENDENCIES_1) \
|
||||
$(am__DEPENDENCIES_1)
|
||||
am_makedoc_OBJECTS = makedoc.$(OBJEXT)
|
||||
makedoc_OBJECTS = $(am_makedoc_OBJECTS)
|
||||
makedoc_LDADD = $(LDADD)
|
||||
makedoc_DEPENDENCIES = ../lib/libtxi.a $(am__DEPENDENCIES_1) \
|
||||
$(am__DEPENDENCIES_1)
|
||||
DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir)
|
||||
depcomp = $(SHELL) $(top_srcdir)/depcomp
|
||||
am__depfiles_maybe = depfiles
|
||||
COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
|
||||
$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
|
||||
CCLD = $(CC)
|
||||
LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
|
||||
SOURCES = $(ginfo_SOURCES) $(nodist_ginfo_SOURCES) $(infokey_SOURCES) \
|
||||
$(nodist_infokey_SOURCES) $(makedoc_SOURCES)
|
||||
DIST_SOURCES = $(ginfo_SOURCES) $(infokey_SOURCES) $(makedoc_SOURCES)
|
||||
ETAGS = etags
|
||||
CTAGS = ctags
|
||||
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
|
||||
transform = s/ginfo/info/; $(program_transform_name)
|
||||
ACLOCAL = @ACLOCAL@
|
||||
ALLOCA = @ALLOCA@
|
||||
AMDEP_FALSE = @AMDEP_FALSE@
|
||||
AMDEP_TRUE = @AMDEP_TRUE@
|
||||
AMTAR = @AMTAR@
|
||||
AUTOCONF = @AUTOCONF@
|
||||
AUTOHEADER = @AUTOHEADER@
|
||||
AUTOMAKE = @AUTOMAKE@
|
||||
AWK = @AWK@
|
||||
BUILD_INCLUDED_LIBINTL = @BUILD_INCLUDED_LIBINTL@
|
||||
CATOBJEXT = @CATOBJEXT@
|
||||
CC = @CC@
|
||||
CCDEPMODE = @CCDEPMODE@
|
||||
CFLAGS = @CFLAGS@
|
||||
CPP = @CPP@
|
||||
CPPFLAGS = @CPPFLAGS@
|
||||
CYGPATH_W = @CYGPATH_W@
|
||||
DATADIRNAME = @DATADIRNAME@
|
||||
DEFS = @DEFS@ -DLOCALEDIR=\"$(localedir)\" -DINFODIR=\"$(infodir)\" \
|
||||
-DINFODIR2=\"$(infodir2)\"
|
||||
DEPDIR = @DEPDIR@
|
||||
ECHO_C = @ECHO_C@
|
||||
ECHO_N = @ECHO_N@
|
||||
ECHO_T = @ECHO_T@
|
||||
EGREP = @EGREP@
|
||||
EXEEXT = @EXEEXT@
|
||||
GENCAT = @GENCAT@
|
||||
GLIBC21 = @GLIBC21@
|
||||
GMSGFMT = @GMSGFMT@
|
||||
HAVE_ASPRINTF = @HAVE_ASPRINTF@
|
||||
HAVE_POSIX_PRINTF = @HAVE_POSIX_PRINTF@
|
||||
HAVE_SNPRINTF = @HAVE_SNPRINTF@
|
||||
HAVE_WPRINTF = @HAVE_WPRINTF@
|
||||
HELP2MAN = @HELP2MAN@
|
||||
INSTALL_DATA = @INSTALL_DATA@
|
||||
INSTALL_PROGRAM = @INSTALL_PROGRAM@
|
||||
INSTALL_SCRIPT = @INSTALL_SCRIPT@
|
||||
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
|
||||
INSTALL_WARNINGS_FALSE = @INSTALL_WARNINGS_FALSE@
|
||||
INSTALL_WARNINGS_TRUE = @INSTALL_WARNINGS_TRUE@
|
||||
INSTOBJEXT = @INSTOBJEXT@
|
||||
INTLBISON = @INTLBISON@
|
||||
INTLLIBS = @INTLLIBS@
|
||||
INTLOBJS = @INTLOBJS@
|
||||
INTL_LIBTOOL_SUFFIX_PREFIX = @INTL_LIBTOOL_SUFFIX_PREFIX@
|
||||
LDFLAGS = @LDFLAGS@
|
||||
LIBICONV = @LIBICONV@
|
||||
LIBINTL = @LIBINTL@
|
||||
LIBOBJS = @LIBOBJS@
|
||||
LIBS = @LIBS@
|
||||
LTLIBICONV = @LTLIBICONV@
|
||||
LTLIBINTL = @LTLIBINTL@
|
||||
LTLIBOBJS = @LTLIBOBJS@
|
||||
MAINT = @MAINT@
|
||||
MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@
|
||||
MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@
|
||||
MAKEINFO = @MAKEINFO@
|
||||
MKINSTALLDIRS = @MKINSTALLDIRS@
|
||||
MSGFMT = @MSGFMT@
|
||||
MSGMERGE = @MSGMERGE@
|
||||
OBJEXT = @OBJEXT@
|
||||
PACKAGE = @PACKAGE@
|
||||
PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
|
||||
PACKAGE_NAME = @PACKAGE_NAME@
|
||||
PACKAGE_STRING = @PACKAGE_STRING@
|
||||
PACKAGE_TARNAME = @PACKAGE_TARNAME@
|
||||
PACKAGE_VERSION = @PACKAGE_VERSION@
|
||||
PATH_SEPARATOR = @PATH_SEPARATOR@
|
||||
POSUB = @POSUB@
|
||||
RANLIB = @RANLIB@
|
||||
SET_MAKE = @SET_MAKE@
|
||||
SHELL = @SHELL@
|
||||
STRIP = @STRIP@
|
||||
TERMLIBS = @TERMLIBS@
|
||||
TOOLS_ONLY_FALSE = @TOOLS_ONLY_FALSE@
|
||||
TOOLS_ONLY_TRUE = @TOOLS_ONLY_TRUE@
|
||||
USE_INCLUDED_LIBINTL = @USE_INCLUDED_LIBINTL@
|
||||
USE_NLS = @USE_NLS@
|
||||
VERSION = @VERSION@
|
||||
XGETTEXT = @XGETTEXT@
|
||||
ac_ct_CC = @ac_ct_CC@
|
||||
ac_ct_RANLIB = @ac_ct_RANLIB@
|
||||
ac_ct_STRIP = @ac_ct_STRIP@
|
||||
am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
|
||||
am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
|
||||
am__include = @am__include@
|
||||
am__leading_dot = @am__leading_dot@
|
||||
am__quote = @am__quote@
|
||||
am__tar = @am__tar@
|
||||
am__untar = @am__untar@
|
||||
bindir = @bindir@
|
||||
build = @build@
|
||||
build_alias = @build_alias@
|
||||
build_cpu = @build_cpu@
|
||||
build_os = @build_os@
|
||||
build_vendor = @build_vendor@
|
||||
datadir = @datadir@
|
||||
exec_prefix = @exec_prefix@
|
||||
host = @host@
|
||||
host_alias = @host_alias@
|
||||
host_cpu = @host_cpu@
|
||||
host_os = @host_os@
|
||||
host_vendor = @host_vendor@
|
||||
includedir = @includedir@
|
||||
infodir = @infodir@
|
||||
install_sh = @install_sh@
|
||||
libdir = @libdir@
|
||||
libexecdir = @libexecdir@
|
||||
localstatedir = @localstatedir@
|
||||
mandir = @mandir@
|
||||
mkdir_p = @mkdir_p@
|
||||
native_tools = @native_tools@
|
||||
oldincludedir = @oldincludedir@
|
||||
prefix = @prefix@
|
||||
program_transform_name = @program_transform_name@
|
||||
sbindir = @sbindir@
|
||||
sharedstatedir = @sharedstatedir@
|
||||
sysconfdir = @sysconfdir@
|
||||
target_alias = @target_alias@
|
||||
localedir = $(datadir)/locale
|
||||
infodir2 = $(datadir)/info
|
||||
|
||||
# -I. for funs.h.
|
||||
# Automake puts -I.. and -I$(srcdir) into DEFS by default, but
|
||||
# we need to override it, so include them ourselves.
|
||||
INCLUDES = -I. -I$(top_srcdir)/lib -I../intl -I.. -I$(srcdir)
|
||||
LDADD = ../lib/libtxi.a $(TERMLIBS) $(LIBINTL)
|
||||
EXTRA_DIST = README pcterm.c
|
||||
ginfo_SOURCES = dir.c display.c display.h doc.h dribble.c dribble.h \
|
||||
echo-area.c echo-area.h \
|
||||
filesys.c filesys.h footnotes.c footnotes.h gc.c gc.h \
|
||||
indices.c indices.h info-utils.c info-utils.h info.c info.h infodoc.c \
|
||||
infomap.c infomap.h m-x.c man.c man.h nodemenu.c nodes.c nodes.h \
|
||||
search.c search.h session.c session.h signals.c signals.h \
|
||||
termdep.h terminal.c terminal.h tilde.c tilde.h \
|
||||
variables.c variables.h window.c window.h
|
||||
|
||||
nodist_ginfo_SOURCES = doc.c funs.h
|
||||
infokey_SOURCES = infokey.c infokey.h key.h
|
||||
nodist_infokey_SOURCES = key.c funs.h
|
||||
|
||||
# The files `doc.c', `key.c' and `funs.h' are created by ./makedoc run over the
|
||||
# source files which contain DECLARE_INFO_COMMAND. `funs.h' is a header file
|
||||
# listing the functions found. `doc.c' is a structure containing pointers
|
||||
# to those functions along with completable names and documentation strings.
|
||||
#
|
||||
generated_sources = doc.c key.c funs.h
|
||||
|
||||
# These files are not distributed.
|
||||
DISTCLEANFILES = $(generated_sources)
|
||||
makedoc_SOURCES = makedoc.c
|
||||
|
||||
# Files with Info commands defined that makedoc should read.
|
||||
cmd_sources = $(srcdir)/session.c $(srcdir)/echo-area.c $(srcdir)/infodoc.c \
|
||||
$(srcdir)/m-x.c $(srcdir)/indices.c $(srcdir)/nodemenu.c \
|
||||
$(srcdir)/footnotes.c $(srcdir)/variables.c
|
||||
|
||||
|
||||
# The following hack is necessary to hint make before the automatic
|
||||
# dependencies are built.
|
||||
BUILT_SOURCES = funs.h
|
||||
all: $(BUILT_SOURCES)
|
||||
$(MAKE) $(AM_MAKEFLAGS) all-am
|
||||
|
||||
.SUFFIXES:
|
||||
.SUFFIXES: .c .o .obj
|
||||
$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps)
|
||||
@for dep in $?; do \
|
||||
case '$(am__configure_deps)' in \
|
||||
*$$dep*) \
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
|
||||
&& exit 0; \
|
||||
exit 1;; \
|
||||
esac; \
|
||||
done; \
|
||||
echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu info/Makefile'; \
|
||||
cd $(top_srcdir) && \
|
||||
$(AUTOMAKE) --gnu info/Makefile
|
||||
.PRECIOUS: Makefile
|
||||
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
|
||||
@case '$?' in \
|
||||
*config.status*) \
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
|
||||
*) \
|
||||
echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
|
||||
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
|
||||
esac;
|
||||
|
||||
$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
||||
|
||||
$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
||||
$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
||||
install-binPROGRAMS: $(bin_PROGRAMS)
|
||||
@$(NORMAL_INSTALL)
|
||||
test -z "$(bindir)" || $(mkdir_p) "$(DESTDIR)$(bindir)"
|
||||
@list='$(bin_PROGRAMS)'; for p in $$list; do \
|
||||
p1=`echo $$p|sed 's/$(EXEEXT)$$//'`; \
|
||||
if test -f $$p \
|
||||
; then \
|
||||
f=`echo "$$p1" | sed 's,^.*/,,;$(transform);s/$$/$(EXEEXT)/'`; \
|
||||
echo " $(INSTALL_PROGRAM_ENV) $(binPROGRAMS_INSTALL) '$$p' '$(DESTDIR)$(bindir)/$$f'"; \
|
||||
$(INSTALL_PROGRAM_ENV) $(binPROGRAMS_INSTALL) "$$p" "$(DESTDIR)$(bindir)/$$f" || exit 1; \
|
||||
else :; fi; \
|
||||
done
|
||||
|
||||
uninstall-binPROGRAMS:
|
||||
@$(NORMAL_UNINSTALL)
|
||||
@list='$(bin_PROGRAMS)'; for p in $$list; do \
|
||||
f=`echo "$$p" | sed 's,^.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/'`; \
|
||||
echo " rm -f '$(DESTDIR)$(bindir)/$$f'"; \
|
||||
rm -f "$(DESTDIR)$(bindir)/$$f"; \
|
||||
done
|
||||
|
||||
clean-binPROGRAMS:
|
||||
-test -z "$(bin_PROGRAMS)" || rm -f $(bin_PROGRAMS)
|
||||
|
||||
clean-noinstPROGRAMS:
|
||||
-test -z "$(noinst_PROGRAMS)" || rm -f $(noinst_PROGRAMS)
|
||||
ginfo$(EXEEXT): $(ginfo_OBJECTS) $(ginfo_DEPENDENCIES)
|
||||
@rm -f ginfo$(EXEEXT)
|
||||
$(LINK) $(ginfo_LDFLAGS) $(ginfo_OBJECTS) $(ginfo_LDADD) $(LIBS)
|
||||
infokey$(EXEEXT): $(infokey_OBJECTS) $(infokey_DEPENDENCIES)
|
||||
@rm -f infokey$(EXEEXT)
|
||||
$(LINK) $(infokey_LDFLAGS) $(infokey_OBJECTS) $(infokey_LDADD) $(LIBS)
|
||||
makedoc$(EXEEXT): $(makedoc_OBJECTS) $(makedoc_DEPENDENCIES)
|
||||
@rm -f makedoc$(EXEEXT)
|
||||
$(LINK) $(makedoc_LDFLAGS) $(makedoc_OBJECTS) $(makedoc_LDADD) $(LIBS)
|
||||
|
||||
mostlyclean-compile:
|
||||
-rm -f *.$(OBJEXT)
|
||||
|
||||
distclean-compile:
|
||||
-rm -f *.tab.c
|
||||
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dir.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/display.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/doc.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dribble.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/echo-area.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/filesys.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/footnotes.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gc.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/indices.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/info-utils.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/info.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/infodoc.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/infokey.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/infomap.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/key.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/m-x.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/makedoc.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/man.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nodemenu.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nodes.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/search.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/session.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/signals.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/terminal.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tilde.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/variables.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/window.Po@am__quote@
|
||||
|
||||
.c.o:
|
||||
@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \
|
||||
@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||
@am__fastdepCC_FALSE@ $(COMPILE) -c $<
|
||||
|
||||
.c.obj:
|
||||
@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ `$(CYGPATH_W) '$<'`; \
|
||||
@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||
@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'`
|
||||
uninstall-info-am:
|
||||
|
||||
ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
|
||||
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
|
||||
unique=`for i in $$list; do \
|
||||
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
|
||||
done | \
|
||||
$(AWK) ' { files[$$0] = 1; } \
|
||||
END { for (i in files) print i; }'`; \
|
||||
mkid -fID $$unique
|
||||
tags: TAGS
|
||||
|
||||
TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
|
||||
$(TAGS_FILES) $(LISP)
|
||||
tags=; \
|
||||
here=`pwd`; \
|
||||
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
|
||||
unique=`for i in $$list; do \
|
||||
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
|
||||
done | \
|
||||
$(AWK) ' { files[$$0] = 1; } \
|
||||
END { for (i in files) print i; }'`; \
|
||||
if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
|
||||
test -n "$$unique" || unique=$$empty_fix; \
|
||||
$(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
|
||||
$$tags $$unique; \
|
||||
fi
|
||||
ctags: CTAGS
|
||||
CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
|
||||
$(TAGS_FILES) $(LISP)
|
||||
tags=; \
|
||||
here=`pwd`; \
|
||||
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
|
||||
unique=`for i in $$list; do \
|
||||
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
|
||||
done | \
|
||||
$(AWK) ' { files[$$0] = 1; } \
|
||||
END { for (i in files) print i; }'`; \
|
||||
test -z "$(CTAGS_ARGS)$$tags$$unique" \
|
||||
|| $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
|
||||
$$tags $$unique
|
||||
|
||||
GTAGS:
|
||||
here=`$(am__cd) $(top_builddir) && pwd` \
|
||||
&& cd $(top_srcdir) \
|
||||
&& gtags -i $(GTAGS_ARGS) $$here
|
||||
|
||||
distclean-tags:
|
||||
-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
|
||||
|
||||
distdir: $(DISTFILES)
|
||||
@srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
|
||||
topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
|
||||
list='$(DISTFILES)'; for file in $$list; do \
|
||||
case $$file in \
|
||||
$(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
|
||||
$(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
|
||||
esac; \
|
||||
if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
|
||||
dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
|
||||
if test "$$dir" != "$$file" && test "$$dir" != "."; then \
|
||||
dir="/$$dir"; \
|
||||
$(mkdir_p) "$(distdir)$$dir"; \
|
||||
else \
|
||||
dir=''; \
|
||||
fi; \
|
||||
if test -d $$d/$$file; then \
|
||||
if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
|
||||
cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
|
||||
fi; \
|
||||
cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
|
||||
else \
|
||||
test -f $(distdir)/$$file \
|
||||
|| cp -p $$d/$$file $(distdir)/$$file \
|
||||
|| exit 1; \
|
||||
fi; \
|
||||
done
|
||||
check-am: all-am
|
||||
check: $(BUILT_SOURCES)
|
||||
$(MAKE) $(AM_MAKEFLAGS) check-am
|
||||
all-am: Makefile $(PROGRAMS)
|
||||
installdirs:
|
||||
for dir in "$(DESTDIR)$(bindir)"; do \
|
||||
test -z "$$dir" || $(mkdir_p) "$$dir"; \
|
||||
done
|
||||
install: $(BUILT_SOURCES)
|
||||
$(MAKE) $(AM_MAKEFLAGS) install-am
|
||||
install-exec: install-exec-am
|
||||
install-data: install-data-am
|
||||
uninstall: uninstall-am
|
||||
|
||||
install-am: all-am
|
||||
@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
|
||||
|
||||
installcheck: installcheck-am
|
||||
install-strip:
|
||||
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
|
||||
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
|
||||
`test -z '$(STRIP)' || \
|
||||
echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
|
||||
mostlyclean-generic:
|
||||
|
||||
clean-generic:
|
||||
|
||||
distclean-generic:
|
||||
-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
|
||||
-test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES)
|
||||
|
||||
maintainer-clean-generic:
|
||||
@echo "This command is intended for maintainers to use"
|
||||
@echo "it deletes files that may require special tools to rebuild."
|
||||
-test -z "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES)
|
||||
clean: clean-am
|
||||
|
||||
clean-am: clean-binPROGRAMS clean-generic clean-noinstPROGRAMS \
|
||||
mostlyclean-am
|
||||
|
||||
distclean: distclean-am
|
||||
-rm -rf ./$(DEPDIR)
|
||||
-rm -f Makefile
|
||||
distclean-am: clean-am distclean-compile distclean-generic \
|
||||
distclean-tags
|
||||
|
||||
dvi: dvi-am
|
||||
|
||||
dvi-am:
|
||||
|
||||
html: html-am
|
||||
|
||||
info: info-am
|
||||
|
||||
info-am:
|
||||
|
||||
install-data-am:
|
||||
|
||||
install-exec-am: install-binPROGRAMS
|
||||
|
||||
install-info: install-info-am
|
||||
|
||||
install-man:
|
||||
|
||||
installcheck-am:
|
||||
|
||||
maintainer-clean: maintainer-clean-am
|
||||
-rm -rf ./$(DEPDIR)
|
||||
-rm -f Makefile
|
||||
maintainer-clean-am: distclean-am maintainer-clean-generic
|
||||
|
||||
mostlyclean: mostlyclean-am
|
||||
|
||||
mostlyclean-am: mostlyclean-compile mostlyclean-generic
|
||||
|
||||
pdf: pdf-am
|
||||
|
||||
pdf-am:
|
||||
|
||||
ps: ps-am
|
||||
|
||||
ps-am:
|
||||
|
||||
uninstall-am: uninstall-binPROGRAMS uninstall-info-am
|
||||
|
||||
.PHONY: CTAGS GTAGS all all-am check check-am clean clean-binPROGRAMS \
|
||||
clean-generic clean-noinstPROGRAMS ctags distclean \
|
||||
distclean-compile distclean-generic distclean-tags distdir dvi \
|
||||
dvi-am html html-am info info-am install install-am \
|
||||
install-binPROGRAMS install-data install-data-am install-exec \
|
||||
install-exec-am install-info install-info-am install-man \
|
||||
install-strip installcheck installcheck-am installdirs \
|
||||
maintainer-clean maintainer-clean-generic mostlyclean \
|
||||
mostlyclean-compile mostlyclean-generic pdf pdf-am ps ps-am \
|
||||
tags uninstall uninstall-am uninstall-binPROGRAMS \
|
||||
uninstall-info-am
|
||||
|
||||
|
||||
# We need a linear ordering to prevent race condition in parallel make.
|
||||
# See the node ``(automake)Multiple Outputs'' for an explanation.
|
||||
doc.c: key.c
|
||||
key.c: funs.h
|
||||
|
||||
# The $(EXEEXT) should be added by Automake, but isn't. Fine.
|
||||
$(generated_sources): makedoc$(EXEEXT) $(cmd_sources)
|
||||
rm -f $(generated_sources)
|
||||
$(top_builddir)/$(native_tools)/info/makedoc $(cmd_sources)
|
||||
# Tell versions [3.59,3.63) of GNU make to not export all variables.
|
||||
# Otherwise a system limit (for SysV at least) may be exceeded.
|
||||
.NOEXPORT:
|
30
external/gpl2/texinfo/dist/info/README
vendored
Normal file
30
external/gpl2/texinfo/dist/info/README
vendored
Normal file
@ -0,0 +1,30 @@
|
||||
Id: README,v 1.3 2004/04/11 17:56:45 karl Exp
|
||||
texinfo/info/README
|
||||
|
||||
Copyright (C) 2002 Free Software Foundation, Inc.
|
||||
|
||||
Copying and distribution of this file, with or without modification,
|
||||
are permitted in any medium without royalty provided the copyright
|
||||
notice and this notice are preserved.
|
||||
|
||||
Info 2.0 is a complete rewrite of the original standalone Info I wrote in
|
||||
1987, the first program I wrote for rms. That program was something like
|
||||
my second Unix program ever, and my die-hard machine language coding habits
|
||||
tended to show through. I found the original Info hard to read and
|
||||
maintain, and thus decided to write this one.
|
||||
|
||||
The rewrite consists of about 12,000 lines of code written in about 12
|
||||
days. I believe this version of Info to be in much better shape than the
|
||||
original Info.
|
||||
|
||||
Info 2.0 is substantially different from its original standalone
|
||||
predecessor. It appears almost identical to the GNU Emacs version, but has
|
||||
the advantages of smaller size, ease of portability, and a built in library
|
||||
which can be used in other programs (to get or display documentation from
|
||||
Info files, for example).
|
||||
|
||||
A full listing of the commands available in Info can be gotten by typing
|
||||
`?' while within an Info window. This produces a node in a window which
|
||||
can be viewed just like any Info node.
|
||||
|
||||
--Brian Fox <bfox@gnu.org>
|
292
external/gpl2/texinfo/dist/info/dir.c
vendored
Normal file
292
external/gpl2/texinfo/dist/info/dir.c
vendored
Normal file
@ -0,0 +1,292 @@
|
||||
/* $NetBSD: dir.c,v 1.1.1.1 2016/01/14 00:11:29 christos Exp $ */
|
||||
|
||||
/* dir.c -- how to build a special "dir" node from "localdir" files.
|
||||
Id: dir.c,v 1.3 2004/04/11 17:56:45 karl Exp
|
||||
|
||||
Copyright (C) 1993, 1997, 1998, 2004 Free Software Foundation, Inc.
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2, or (at your option)
|
||||
any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program; if not, write to the Free Software
|
||||
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
|
||||
Written by Brian Fox (bfox@ai.mit.edu). */
|
||||
|
||||
#include "info.h"
|
||||
#include "info-utils.h"
|
||||
#include "filesys.h"
|
||||
#include "tilde.h"
|
||||
|
||||
/* The "dir" node can be built from the contents of a file called "dir",
|
||||
with the addition of the menus of every file named in the array
|
||||
dirs_to_add which are found in INFOPATH. */
|
||||
|
||||
static void add_menu_to_file_buffer (char *contents, long int size,
|
||||
FILE_BUFFER *fb);
|
||||
static void insert_text_into_fb_at_binding (FILE_BUFFER *fb,
|
||||
SEARCH_BINDING *binding, char *text, int textlen);
|
||||
void maybe_build_dir_node (char *dirname);
|
||||
|
||||
static char *dirs_to_add[] = {
|
||||
"dir", "localdir", (char *)NULL
|
||||
};
|
||||
|
||||
|
||||
/* Return zero if the file represented in the stat structure TEST has
|
||||
already been seen, nonzero else. */
|
||||
|
||||
typedef struct
|
||||
{
|
||||
unsigned long device;
|
||||
unsigned long inode;
|
||||
} dir_file_list_entry_type;
|
||||
|
||||
static int
|
||||
new_dir_file_p (struct stat *test)
|
||||
{
|
||||
static unsigned dir_file_list_len = 0;
|
||||
static dir_file_list_entry_type *dir_file_list = NULL;
|
||||
unsigned i;
|
||||
|
||||
for (i = 0; i < dir_file_list_len; i++)
|
||||
{
|
||||
dir_file_list_entry_type entry;
|
||||
entry = dir_file_list[i];
|
||||
if (entry.device == test->st_dev && entry.inode == test->st_ino)
|
||||
return 0;
|
||||
}
|
||||
|
||||
dir_file_list_len++;
|
||||
dir_file_list = xrealloc (dir_file_list,
|
||||
dir_file_list_len * sizeof (dir_file_list_entry_type));
|
||||
dir_file_list[dir_file_list_len - 1].device = test->st_dev;
|
||||
dir_file_list[dir_file_list_len - 1].inode = test->st_ino;
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
||||
void
|
||||
maybe_build_dir_node (char *dirname)
|
||||
{
|
||||
int path_index, update_tags;
|
||||
char *this_dir;
|
||||
FILE_BUFFER *dir_buffer = info_find_file (dirname);
|
||||
|
||||
/* If there is no "dir" in the current info path, we cannot build one
|
||||
from nothing. */
|
||||
if (!dir_buffer)
|
||||
return;
|
||||
|
||||
/* If this directory has already been built, return now. */
|
||||
if (dir_buffer->flags & N_CannotGC)
|
||||
return;
|
||||
|
||||
/* Initialize the list we use to avoid reading the same dir file twice
|
||||
with the dir file just found. */
|
||||
new_dir_file_p (&dir_buffer->finfo);
|
||||
|
||||
path_index = update_tags = 0;
|
||||
|
||||
/* Using each element of the path, check for one of the files in
|
||||
DIRS_TO_ADD. Do not check for "localdir.info.Z" or anything else.
|
||||
Only files explictly named are eligible. This is a design decision.
|
||||
There can be an info file name "localdir.info" which contains
|
||||
information on the setting up of "localdir" files. */
|
||||
while ((this_dir = extract_colon_unit (infopath, &path_index)))
|
||||
{
|
||||
register int da_index;
|
||||
char *from_file;
|
||||
|
||||
/* Expand a leading tilde if one is present. */
|
||||
if (*this_dir == '~')
|
||||
{
|
||||
char *tilde_expanded_dirname;
|
||||
|
||||
tilde_expanded_dirname = tilde_expand_word (this_dir);
|
||||
if (tilde_expanded_dirname != this_dir)
|
||||
{
|
||||
free (this_dir);
|
||||
this_dir = tilde_expanded_dirname;
|
||||
}
|
||||
}
|
||||
|
||||
/* For every different file named in DIRS_TO_ADD found in the
|
||||
search path, add that file's menu to our "dir" node. */
|
||||
for (da_index = 0; (from_file = dirs_to_add[da_index]); da_index++)
|
||||
{
|
||||
struct stat finfo;
|
||||
int statable;
|
||||
int namelen = strlen (from_file);
|
||||
char *fullpath = xmalloc (3 + strlen (this_dir) + namelen);
|
||||
|
||||
strcpy (fullpath, this_dir);
|
||||
if (!IS_SLASH (fullpath[strlen (fullpath) - 1]))
|
||||
strcat (fullpath, "/");
|
||||
strcat (fullpath, from_file);
|
||||
|
||||
statable = (stat (fullpath, &finfo) == 0);
|
||||
|
||||
/* Only add this file if we have not seen it before. */
|
||||
if (statable && S_ISREG (finfo.st_mode) && new_dir_file_p (&finfo))
|
||||
{
|
||||
long filesize;
|
||||
int compressed;
|
||||
char *contents = filesys_read_info_file (fullpath, &filesize,
|
||||
&finfo, &compressed);
|
||||
if (contents)
|
||||
{
|
||||
update_tags++;
|
||||
add_menu_to_file_buffer (contents, filesize, dir_buffer);
|
||||
free (contents);
|
||||
}
|
||||
}
|
||||
|
||||
free (fullpath);
|
||||
}
|
||||
free (this_dir);
|
||||
}
|
||||
|
||||
if (update_tags)
|
||||
build_tags_and_nodes (dir_buffer);
|
||||
|
||||
/* Flag that the dir buffer has been built. */
|
||||
dir_buffer->flags |= N_CannotGC;
|
||||
}
|
||||
|
||||
/* Given CONTENTS and FB (a file buffer), add the menu found in CONTENTS
|
||||
to the menu found in FB->contents. Second argument SIZE is the total
|
||||
size of CONTENTS. */
|
||||
static void
|
||||
add_menu_to_file_buffer (char *contents, long int size, FILE_BUFFER *fb)
|
||||
{
|
||||
SEARCH_BINDING contents_binding, fb_binding;
|
||||
long contents_offset, fb_offset;
|
||||
|
||||
contents_binding.buffer = contents;
|
||||
contents_binding.start = 0;
|
||||
contents_binding.end = size;
|
||||
contents_binding.flags = S_FoldCase | S_SkipDest;
|
||||
|
||||
fb_binding.buffer = fb->contents;
|
||||
fb_binding.start = 0;
|
||||
fb_binding.end = fb->filesize;
|
||||
fb_binding.flags = S_FoldCase | S_SkipDest;
|
||||
|
||||
/* Move to the start of the menus in CONTENTS and FB. */
|
||||
contents_offset = search_forward (INFO_MENU_LABEL, &contents_binding);
|
||||
fb_offset = search_forward (INFO_MENU_LABEL, &fb_binding);
|
||||
|
||||
/* If there is no menu in CONTENTS, quit now. */
|
||||
if (contents_offset == -1)
|
||||
return;
|
||||
|
||||
/* There is a menu in CONTENTS, and contents_offset points to the first
|
||||
character following the menu starter string. Skip all whitespace
|
||||
and newline characters. */
|
||||
contents_offset += skip_whitespace_and_newlines (contents + contents_offset);
|
||||
|
||||
/* If there is no menu in FB, make one. */
|
||||
if (fb_offset == -1)
|
||||
{
|
||||
/* Find the start of the second node in this file buffer. If there
|
||||
is only one node, we will be adding the contents to the end of
|
||||
this node. */
|
||||
fb_offset = find_node_separator (&fb_binding);
|
||||
|
||||
/* If not even a single node separator, give up. */
|
||||
if (fb_offset == -1)
|
||||
return;
|
||||
|
||||
fb_binding.start = fb_offset;
|
||||
fb_binding.start +=
|
||||
skip_node_separator (fb_binding.buffer + fb_binding.start);
|
||||
|
||||
/* Try to find the next node separator. */
|
||||
fb_offset = find_node_separator (&fb_binding);
|
||||
|
||||
/* If found one, consider that the start of the menu. Otherwise, the
|
||||
start of this menu is the end of the file buffer (i.e., fb->size). */
|
||||
if (fb_offset != -1)
|
||||
fb_binding.start = fb_offset;
|
||||
else
|
||||
fb_binding.start = fb_binding.end;
|
||||
|
||||
insert_text_into_fb_at_binding
|
||||
(fb, &fb_binding, INFO_MENU_LABEL, strlen (INFO_MENU_LABEL));
|
||||
|
||||
fb_binding.buffer = fb->contents;
|
||||
fb_binding.start = 0;
|
||||
fb_binding.end = fb->filesize;
|
||||
fb_offset = search_forward (INFO_MENU_LABEL, &fb_binding);
|
||||
if (fb_offset == -1)
|
||||
abort ();
|
||||
}
|
||||
|
||||
/* CONTENTS_OFFSET and FB_OFFSET point to the starts of the menus that
|
||||
appear in their respective buffers. Add the remainder of CONTENTS
|
||||
to the end of FB's menu. */
|
||||
fb_binding.start = fb_offset;
|
||||
fb_offset = find_node_separator (&fb_binding);
|
||||
if (fb_offset != -1)
|
||||
fb_binding.start = fb_offset;
|
||||
else
|
||||
fb_binding.start = fb_binding.end;
|
||||
|
||||
/* Leave exactly one blank line between directory entries. */
|
||||
{
|
||||
int num_found = 0;
|
||||
|
||||
while ((fb_binding.start > 0) &&
|
||||
(whitespace_or_newline (fb_binding.buffer[fb_binding.start - 1])))
|
||||
{
|
||||
num_found++;
|
||||
fb_binding.start--;
|
||||
}
|
||||
|
||||
/* Optimize if possible. */
|
||||
if (num_found >= 2)
|
||||
{
|
||||
fb_binding.buffer[fb_binding.start++] = '\n';
|
||||
fb_binding.buffer[fb_binding.start++] = '\n';
|
||||
}
|
||||
else
|
||||
{
|
||||
/* Do it the hard way. */
|
||||
insert_text_into_fb_at_binding (fb, &fb_binding, "\n\n", 2);
|
||||
fb_binding.start += 2;
|
||||
}
|
||||
}
|
||||
|
||||
/* Insert the new menu. */
|
||||
insert_text_into_fb_at_binding
|
||||
(fb, &fb_binding, contents + contents_offset, size - contents_offset);
|
||||
}
|
||||
|
||||
static void
|
||||
insert_text_into_fb_at_binding (FILE_BUFFER *fb,
|
||||
SEARCH_BINDING *binding, char *text, int textlen)
|
||||
{
|
||||
char *contents;
|
||||
long start, end;
|
||||
|
||||
start = binding->start;
|
||||
end = fb->filesize;
|
||||
|
||||
contents = (char *)xmalloc (fb->filesize + textlen + 1);
|
||||
memcpy (contents, fb->contents, start);
|
||||
memcpy (contents + start, text, textlen);
|
||||
memcpy (contents + start + textlen, fb->contents + start, end - start);
|
||||
free (fb->contents);
|
||||
fb->contents = contents;
|
||||
fb->filesize += textlen;
|
||||
fb->finfo.st_size = fb->filesize;
|
||||
}
|
648
external/gpl2/texinfo/dist/info/display.c
vendored
Normal file
648
external/gpl2/texinfo/dist/info/display.c
vendored
Normal file
@ -0,0 +1,648 @@
|
||||
/* $NetBSD: display.c,v 1.1.1.1 2016/01/14 00:11:29 christos Exp $ */
|
||||
|
||||
/* display.c -- How to display Info windows.
|
||||
Id: display.c,v 1.7 2004/04/11 17:56:45 karl Exp
|
||||
|
||||
Copyright (C) 1993, 1997, 2003, 2004 Free Software Foundation, Inc.
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2, or (at your option)
|
||||
any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program; if not, write to the Free Software
|
||||
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
|
||||
Originally written by Brian Fox (bfox@ai.mit.edu). */
|
||||
|
||||
#include "info.h"
|
||||
#include "display.h"
|
||||
|
||||
extern int info_any_buffered_input_p (void); /* Found in session.c. */
|
||||
|
||||
static void free_display (DISPLAY_LINE **display);
|
||||
static DISPLAY_LINE **make_display (int width, int height);
|
||||
|
||||
void handle_tag (char *tag);
|
||||
void handle_tag_start (char *tag);
|
||||
void handle_tag_end (char *tag);
|
||||
|
||||
/* An array of display lines which tell us what is currently visible on
|
||||
the display. */
|
||||
DISPLAY_LINE **the_display = (DISPLAY_LINE **)NULL;
|
||||
|
||||
/* Non-zero means do no output. */
|
||||
int display_inhibited = 0;
|
||||
|
||||
/* Initialize THE_DISPLAY to WIDTH and HEIGHT, with nothing in it. */
|
||||
void
|
||||
display_initialize_display (int width, int height)
|
||||
{
|
||||
free_display (the_display);
|
||||
the_display = make_display (width, height);
|
||||
display_clear_display (the_display);
|
||||
}
|
||||
|
||||
/* Clear all of the lines in DISPLAY making the screen blank. */
|
||||
void
|
||||
display_clear_display (DISPLAY_LINE **display)
|
||||
{
|
||||
register int i;
|
||||
|
||||
for (i = 0; display[i]; i++)
|
||||
{
|
||||
display[i]->text[0] = '\0';
|
||||
display[i]->textlen = 0;
|
||||
display[i]->inverse = 0;
|
||||
}
|
||||
}
|
||||
|
||||
/* Non-zero if we didn't completely redisplay a window. */
|
||||
int display_was_interrupted_p = 0;
|
||||
|
||||
/* Update the windows pointed to by WINDOW in the_display. This actually
|
||||
writes the text on the screen. */
|
||||
void
|
||||
display_update_display (WINDOW *window)
|
||||
{
|
||||
register WINDOW *win;
|
||||
|
||||
display_was_interrupted_p = 0;
|
||||
|
||||
/* For every window in the list, check contents against the display. */
|
||||
for (win = window; win; win = win->next)
|
||||
{
|
||||
/* Only re-display visible windows which need updating. */
|
||||
if (((win->flags & W_WindowVisible) == 0) ||
|
||||
((win->flags & W_UpdateWindow) == 0) ||
|
||||
(win->height == 0))
|
||||
continue;
|
||||
|
||||
display_update_one_window (win);
|
||||
if (display_was_interrupted_p)
|
||||
break;
|
||||
}
|
||||
|
||||
/* Always update the echo area. */
|
||||
display_update_one_window (the_echo_area);
|
||||
}
|
||||
|
||||
void
|
||||
handle_tag_start (char *tag)
|
||||
{
|
||||
/* TODO really handle this tag. */
|
||||
return;
|
||||
}
|
||||
|
||||
void
|
||||
handle_tag_end (char *tag)
|
||||
{
|
||||
/* TODO really handle this tag. */
|
||||
return;
|
||||
}
|
||||
|
||||
void
|
||||
handle_tag (char *tag)
|
||||
{
|
||||
if (tag[0] == '/')
|
||||
{
|
||||
tag++;
|
||||
handle_tag_end (tag);
|
||||
}
|
||||
else
|
||||
handle_tag_start (tag);
|
||||
}
|
||||
|
||||
/* Display WIN on the_display. Unlike display_update_display (), this
|
||||
function only does one window. */
|
||||
void
|
||||
display_update_one_window (WINDOW *win)
|
||||
{
|
||||
register char *nodetext; /* Current character to display. */
|
||||
register char *last_node_char; /* Position of the last character in node. */
|
||||
register int i; /* General use index. */
|
||||
char *printed_line; /* Buffer for a printed line. */
|
||||
int pl_index = 0; /* Index into PRINTED_LINE. */
|
||||
int line_index = 0; /* Number of lines done so far. */
|
||||
int pl_ignore = 0; /* How many chars use zero width on screen. */
|
||||
int allocated_win_width;
|
||||
DISPLAY_LINE **display = the_display;
|
||||
|
||||
/* If display is inhibited, that counts as an interrupted display. */
|
||||
if (display_inhibited)
|
||||
display_was_interrupted_p = 1;
|
||||
|
||||
/* If the window has no height, or display is inhibited, quit now. */
|
||||
if (!win->height || display_inhibited)
|
||||
return;
|
||||
|
||||
/* If the window's first row doesn't appear in the_screen, then it
|
||||
cannot be displayed. This can happen when the_echo_area is the
|
||||
window to be displayed, and the screen has shrunk to less than one
|
||||
line. */
|
||||
if ((win->first_row < 0) || (win->first_row > the_screen->height))
|
||||
return;
|
||||
|
||||
/* Print each line in the window into our local buffer, and then
|
||||
check the contents of that buffer against the display. If they
|
||||
differ, update the display. */
|
||||
allocated_win_width = win->width + 1;
|
||||
printed_line = (char *)xmalloc (allocated_win_width);
|
||||
|
||||
if (!win->node || !win->line_starts)
|
||||
goto done_with_node_display;
|
||||
|
||||
nodetext = win->line_starts[win->pagetop];
|
||||
last_node_char = win->node->contents + win->node->nodelen;
|
||||
|
||||
for (; nodetext < last_node_char; nodetext++)
|
||||
{
|
||||
char *rep = NULL, *rep_carried_over, rep_temp[2];
|
||||
int replen;
|
||||
|
||||
if (isprint (*nodetext))
|
||||
{
|
||||
rep_temp[0] = *nodetext;
|
||||
replen = 1;
|
||||
rep_temp[1] = '\0';
|
||||
rep = rep_temp;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (*nodetext == '\r' || *nodetext == '\n')
|
||||
{
|
||||
replen = win->width - pl_index + pl_ignore;
|
||||
}
|
||||
else if (*nodetext == '\0'
|
||||
&& (nodetext + 2) < last_node_char
|
||||
&& *(nodetext + 1) == '\b'
|
||||
&& *(nodetext + 2) == '[')
|
||||
{
|
||||
/* Found new style tag/cookie \0\b[
|
||||
Read until the closing tag \0\b] */
|
||||
int element_len = 0;
|
||||
char *element;
|
||||
|
||||
/* Skip the escapes. */
|
||||
nodetext += 3;
|
||||
|
||||
while (!(*nodetext == '\0'
|
||||
&& *(nodetext + 1) == '\b'
|
||||
&& *(nodetext + 2) == ']'))
|
||||
{
|
||||
nodetext++;
|
||||
element_len++;
|
||||
}
|
||||
|
||||
element = (char *) malloc (element_len + 1);
|
||||
strncpy (element, nodetext - element_len, element_len);
|
||||
|
||||
/* Skip the escapes. */
|
||||
nodetext += 2;
|
||||
pl_ignore += element_len + 5;
|
||||
/* Append string terminator. */
|
||||
element[element_len] = '\0';
|
||||
|
||||
handle_tag (element);
|
||||
|
||||
/* Over and out */
|
||||
free (element);
|
||||
|
||||
continue;
|
||||
}
|
||||
else
|
||||
{
|
||||
rep = printed_representation (*nodetext, pl_index);
|
||||
replen = strlen (rep);
|
||||
}
|
||||
}
|
||||
|
||||
/* Support ANSI escape sequences under -R. */
|
||||
if (raw_escapes_p
|
||||
&& *nodetext == '\033'
|
||||
&& nodetext[1] == '['
|
||||
&& isdigit (nodetext[2]))
|
||||
{
|
||||
if (nodetext[3] == 'm')
|
||||
pl_ignore += 4;
|
||||
else if (isdigit (nodetext[3]) && nodetext[4] == 'm')
|
||||
pl_ignore += 5;
|
||||
}
|
||||
while (pl_index + 2 >= allocated_win_width - 1)
|
||||
{
|
||||
allocated_win_width *= 2;
|
||||
printed_line = (char *)xrealloc (printed_line, allocated_win_width);
|
||||
}
|
||||
|
||||
/* If this character can be printed without passing the width of
|
||||
the line, then stuff it into the line. */
|
||||
if (replen + pl_index < win->width + pl_ignore)
|
||||
{
|
||||
/* Optimize if possible. */
|
||||
if (replen == 1)
|
||||
{
|
||||
printed_line[pl_index++] = *rep;
|
||||
}
|
||||
else
|
||||
{
|
||||
for (i = 0; i < replen; i++)
|
||||
printed_line[pl_index++] = rep[i];
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
DISPLAY_LINE *entry;
|
||||
|
||||
/* If this character cannot be printed in this line, we have
|
||||
found the end of this line as it would appear on the screen.
|
||||
Carefully print the end of the line, and then compare. */
|
||||
if (*nodetext == '\n' || *nodetext == '\r' || *nodetext == '\t')
|
||||
{
|
||||
printed_line[pl_index] = '\0';
|
||||
rep_carried_over = (char *)NULL;
|
||||
}
|
||||
else
|
||||
{
|
||||
/* The printed representation of this character extends into
|
||||
the next line. Remember the offset of the last character
|
||||
printed out of REP so that we can carry the character over
|
||||
to the next line. */
|
||||
for (i = 0; pl_index < (win->width + pl_ignore - 1);)
|
||||
printed_line[pl_index++] = rep[i++];
|
||||
|
||||
rep_carried_over = rep + i;
|
||||
|
||||
/* If printing the last character in this window couldn't
|
||||
possibly cause the screen to scroll, place a backslash
|
||||
in the rightmost column. */
|
||||
if (1 + line_index + win->first_row < the_screen->height)
|
||||
{
|
||||
if (win->flags & W_NoWrap)
|
||||
printed_line[pl_index++] = '$';
|
||||
else
|
||||
printed_line[pl_index++] = '\\';
|
||||
}
|
||||
printed_line[pl_index] = '\0';
|
||||
}
|
||||
|
||||
/* We have the exact line as it should appear on the screen.
|
||||
Check to see if this line matches the one already appearing
|
||||
on the screen. */
|
||||
entry = display[line_index + win->first_row];
|
||||
|
||||
/* If the screen line is inversed, then we have to clear
|
||||
the line from the screen first. Why, I don't know.
|
||||
(But don't do this if we have no visible entries, as can
|
||||
happen if the window is shrunk very small.) */
|
||||
if ((entry && entry->inverse)
|
||||
/* Need to erase the line if it has escape sequences. */
|
||||
|| (raw_escapes_p && strchr (entry->text, '\033') != 0))
|
||||
{
|
||||
terminal_goto_xy (0, line_index + win->first_row);
|
||||
terminal_clear_to_eol ();
|
||||
entry->inverse = 0;
|
||||
entry->text[0] = '\0';
|
||||
entry->textlen = 0;
|
||||
}
|
||||
|
||||
/* Find the offset where these lines differ. */
|
||||
for (i = 0; i < pl_index; i++)
|
||||
if (printed_line[i] != entry->text[i])
|
||||
break;
|
||||
|
||||
/* If the lines are not the same length, or if they differed
|
||||
at all, we must do some redrawing. */
|
||||
if ((i != pl_index) || (pl_index != entry->textlen))
|
||||
{
|
||||
/* Move to the proper point on the terminal. */
|
||||
terminal_goto_xy (i, line_index + win->first_row);
|
||||
|
||||
/* If there is any text to print, print it. */
|
||||
if (i != pl_index)
|
||||
terminal_put_text (printed_line + i);
|
||||
|
||||
/* If the printed text didn't extend all the way to the edge
|
||||
of the window, and text was appearing between here and the
|
||||
edge of the window, clear from here to the end of the line. */
|
||||
if ((pl_index < win->width + pl_ignore
|
||||
&& pl_index < entry->textlen)
|
||||
|| (entry->inverse))
|
||||
terminal_clear_to_eol ();
|
||||
|
||||
fflush (stdout);
|
||||
|
||||
/* Update the display text buffer. */
|
||||
if (strlen (printed_line) > (unsigned int) screenwidth)
|
||||
/* printed_line[] can include more than screenwidth
|
||||
characters if we are under -R and there are escape
|
||||
sequences in it. However, entry->text was
|
||||
allocated (in display_initialize_display) for
|
||||
screenwidth characters only. */
|
||||
entry->text = xrealloc (entry->text, strlen (printed_line)+1);
|
||||
strcpy (entry->text + i, printed_line + i);
|
||||
entry->textlen = pl_index;
|
||||
|
||||
/* Lines showing node text are not in inverse. Only modelines
|
||||
have that distinction. */
|
||||
entry->inverse = 0;
|
||||
}
|
||||
|
||||
/* We have done at least one line. Increment our screen line
|
||||
index, and check against the bottom of the window. */
|
||||
if (++line_index == win->height)
|
||||
break;
|
||||
|
||||
/* A line has been displayed, and the screen reflects that state.
|
||||
If there is typeahead pending, then let that typeahead be read
|
||||
now, instead of continuing with the display. */
|
||||
if (info_any_buffered_input_p ())
|
||||
{
|
||||
free (printed_line);
|
||||
display_was_interrupted_p = 1;
|
||||
return;
|
||||
}
|
||||
|
||||
/* Reset PL_INDEX to the start of the line. */
|
||||
pl_index = 0;
|
||||
pl_ignore = 0; /* this is computed per line */
|
||||
|
||||
/* If there are characters from REP left to print, stuff them
|
||||
into the buffer now. */
|
||||
if (rep_carried_over)
|
||||
for (; rep[pl_index]; pl_index++)
|
||||
printed_line[pl_index] = rep[pl_index];
|
||||
|
||||
/* If this window has chosen not to wrap lines, skip to the end
|
||||
of the physical line in the buffer, and start a new line here. */
|
||||
if (pl_index && (win->flags & W_NoWrap))
|
||||
{
|
||||
char *begin;
|
||||
|
||||
pl_index = 0;
|
||||
printed_line[0] = '\0';
|
||||
|
||||
begin = nodetext;
|
||||
|
||||
while ((nodetext < last_node_char) && (*nodetext != '\n'))
|
||||
nodetext++;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
done_with_node_display:
|
||||
/* We have reached the end of the node or the end of the window. If it
|
||||
is the end of the node, then clear the lines of the window from here
|
||||
to the end of the window. */
|
||||
for (; line_index < win->height; line_index++)
|
||||
{
|
||||
DISPLAY_LINE *entry = display[line_index + win->first_row];
|
||||
|
||||
/* If this line has text on it then make it go away. */
|
||||
if (entry && entry->textlen)
|
||||
{
|
||||
entry->textlen = 0;
|
||||
entry->text[0] = '\0';
|
||||
|
||||
terminal_goto_xy (0, line_index + win->first_row);
|
||||
terminal_clear_to_eol ();
|
||||
}
|
||||
}
|
||||
|
||||
/* Finally, if this window has a modeline it might need to be redisplayed.
|
||||
Check the window's modeline against the one in the display, and update
|
||||
if necessary. */
|
||||
if ((win->flags & W_InhibitMode) == 0)
|
||||
{
|
||||
window_make_modeline (win);
|
||||
line_index = win->first_row + win->height;
|
||||
|
||||
/* This display line must both be in inverse, and have the same
|
||||
contents. */
|
||||
if ((!display[line_index]->inverse) ||
|
||||
(strcmp (display[line_index]->text, win->modeline) != 0))
|
||||
{
|
||||
terminal_goto_xy (0, line_index);
|
||||
terminal_begin_inverse ();
|
||||
terminal_put_text (win->modeline);
|
||||
terminal_end_inverse ();
|
||||
strcpy (display[line_index]->text, win->modeline);
|
||||
display[line_index]->inverse = 1;
|
||||
display[line_index]->textlen = strlen (win->modeline);
|
||||
fflush (stdout);
|
||||
}
|
||||
}
|
||||
|
||||
/* Okay, this window doesn't need updating anymore. */
|
||||
win->flags &= ~W_UpdateWindow;
|
||||
free (printed_line);
|
||||
fflush (stdout);
|
||||
}
|
||||
|
||||
/* Scroll the region of the_display starting at START, ending at END, and
|
||||
moving the lines AMOUNT lines. If AMOUNT is less than zero, the lines
|
||||
are moved up in the screen, otherwise down. Actually, it is possible
|
||||
for no scrolling to take place in the case that the terminal doesn't
|
||||
support it. This doesn't matter to us. */
|
||||
void
|
||||
display_scroll_display (int start, int end, int amount)
|
||||
{
|
||||
register int i, last;
|
||||
DISPLAY_LINE *temp;
|
||||
|
||||
/* If this terminal cannot do scrolling, give up now. */
|
||||
if (!terminal_can_scroll)
|
||||
return;
|
||||
|
||||
/* If there isn't anything displayed on the screen because it is too
|
||||
small, quit now. */
|
||||
if (!the_display[0])
|
||||
return;
|
||||
|
||||
/* If there is typeahead pending, then don't actually do any scrolling. */
|
||||
if (info_any_buffered_input_p ())
|
||||
return;
|
||||
|
||||
/* Do it on the screen. */
|
||||
terminal_scroll_terminal (start, end, amount);
|
||||
|
||||
/* Now do it in the display buffer so our contents match the screen. */
|
||||
if (amount > 0)
|
||||
{
|
||||
last = end + amount;
|
||||
|
||||
/* Shift the lines to scroll right into place. */
|
||||
for (i = 0; i < (end - start); i++)
|
||||
{
|
||||
temp = the_display[last - i];
|
||||
the_display[last - i] = the_display[end - i];
|
||||
the_display[end - i] = temp;
|
||||
}
|
||||
|
||||
/* The lines have been shifted down in the buffer. Clear all of the
|
||||
lines that were vacated. */
|
||||
for (i = start; i != (start + amount); i++)
|
||||
{
|
||||
the_display[i]->text[0] = '\0';
|
||||
the_display[i]->textlen = 0;
|
||||
the_display[i]->inverse = 0;
|
||||
}
|
||||
}
|
||||
|
||||
if (amount < 0)
|
||||
{
|
||||
last = start + amount;
|
||||
for (i = 0; i < (end - start); i++)
|
||||
{
|
||||
temp = the_display[last + i];
|
||||
the_display[last + i] = the_display[start + i];
|
||||
the_display[start + i] = temp;
|
||||
}
|
||||
|
||||
/* The lines have been shifted up in the buffer. Clear all of the
|
||||
lines that are left over. */
|
||||
for (i = end + amount; i != end; i++)
|
||||
{
|
||||
the_display[i]->text[0] = '\0';
|
||||
the_display[i]->textlen = 0;
|
||||
the_display[i]->inverse = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* Try to scroll lines in WINDOW. OLD_PAGETOP is the pagetop of WINDOW before
|
||||
having had its line starts recalculated. OLD_STARTS is the list of line
|
||||
starts that used to appear in this window. OLD_COUNT is the number of lines
|
||||
that appear in the OLD_STARTS array. */
|
||||
void
|
||||
display_scroll_line_starts (WINDOW *window, int old_pagetop,
|
||||
char **old_starts, int old_count)
|
||||
{
|
||||
register int i, old, new; /* Indices into the line starts arrays. */
|
||||
int last_new, last_old; /* Index of the last visible line. */
|
||||
int old_first, new_first; /* Index of the first changed line. */
|
||||
int unchanged_at_top = 0;
|
||||
int already_scrolled = 0;
|
||||
|
||||
/* Locate the first line which was displayed on the old window. */
|
||||
old_first = old_pagetop;
|
||||
new_first = window->pagetop;
|
||||
|
||||
/* Find the last line currently visible in this window. */
|
||||
last_new = window->pagetop + (window->height - 1);
|
||||
if (last_new > window->line_count)
|
||||
last_new = window->line_count - 1;
|
||||
|
||||
/* Find the last line which used to be currently visible in this window. */
|
||||
last_old = old_pagetop + (window->height - 1);
|
||||
if (last_old > old_count)
|
||||
last_old = old_count - 1;
|
||||
|
||||
for (old = old_first, new = new_first;
|
||||
old < last_old && new < last_new;
|
||||
old++, new++)
|
||||
if (old_starts[old] != window->line_starts[new])
|
||||
break;
|
||||
else
|
||||
unchanged_at_top++;
|
||||
|
||||
/* Loop through the old lines looking for a match in the new lines. */
|
||||
for (old = old_first + unchanged_at_top; old < last_old; old++)
|
||||
{
|
||||
for (new = new_first; new < last_new; new++)
|
||||
if (old_starts[old] == window->line_starts[new])
|
||||
{
|
||||
/* Find the extent of the matching lines. */
|
||||
for (i = 0; (old + i) < last_old; i++)
|
||||
if (old_starts[old + i] != window->line_starts[new + i])
|
||||
break;
|
||||
|
||||
/* Scroll these lines if there are enough of them. */
|
||||
{
|
||||
int start, end, amount;
|
||||
|
||||
start = (window->first_row
|
||||
+ ((old + already_scrolled) - old_pagetop));
|
||||
amount = new - (old + already_scrolled);
|
||||
end = window->first_row + window->height;
|
||||
|
||||
/* If we are shifting the block of lines down, then the last
|
||||
AMOUNT lines will become invisible. Thus, don't bother
|
||||
scrolling them. */
|
||||
if (amount > 0)
|
||||
end -= amount;
|
||||
|
||||
if ((end - start) > 0)
|
||||
{
|
||||
display_scroll_display (start, end, amount);
|
||||
|
||||
/* Some lines have been scrolled. Simulate the scrolling
|
||||
by offsetting the value of the old index. */
|
||||
old += i;
|
||||
already_scrolled += amount;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* Move the screen cursor to directly over the current character in WINDOW. */
|
||||
void
|
||||
display_cursor_at_point (WINDOW *window)
|
||||
{
|
||||
int vpos, hpos;
|
||||
|
||||
vpos = window_line_of_point (window) - window->pagetop + window->first_row;
|
||||
hpos = window_get_cursor_column (window);
|
||||
terminal_goto_xy (hpos, vpos);
|
||||
fflush (stdout);
|
||||
}
|
||||
|
||||
/* **************************************************************** */
|
||||
/* */
|
||||
/* Functions Static to this File */
|
||||
/* */
|
||||
/* **************************************************************** */
|
||||
|
||||
/* Make a DISPLAY_LINE ** with width and height. */
|
||||
static DISPLAY_LINE **
|
||||
make_display (int width, int height)
|
||||
{
|
||||
register int i;
|
||||
DISPLAY_LINE **display;
|
||||
|
||||
display = (DISPLAY_LINE **)xmalloc ((1 + height) * sizeof (DISPLAY_LINE *));
|
||||
|
||||
for (i = 0; i < height; i++)
|
||||
{
|
||||
display[i] = (DISPLAY_LINE *)xmalloc (sizeof (DISPLAY_LINE));
|
||||
display[i]->text = (char *)xmalloc (1 + width);
|
||||
display[i]->textlen = 0;
|
||||
display[i]->inverse = 0;
|
||||
}
|
||||
display[i] = (DISPLAY_LINE *)NULL;
|
||||
return (display);
|
||||
}
|
||||
|
||||
/* Free the storage allocated to DISPLAY. */
|
||||
static void
|
||||
free_display (DISPLAY_LINE **display)
|
||||
{
|
||||
register int i;
|
||||
register DISPLAY_LINE *display_line;
|
||||
|
||||
if (!display)
|
||||
return;
|
||||
|
||||
for (i = 0; (display_line = display[i]); i++)
|
||||
{
|
||||
free (display_line->text);
|
||||
free (display_line);
|
||||
}
|
||||
free (display);
|
||||
}
|
80
external/gpl2/texinfo/dist/info/display.h
vendored
Normal file
80
external/gpl2/texinfo/dist/info/display.h
vendored
Normal file
@ -0,0 +1,80 @@
|
||||
/* $NetBSD: display.h,v 1.1.1.1 2016/01/14 00:11:29 christos Exp $ */
|
||||
|
||||
/* display.h -- How the display in Info is done.
|
||||
Id: display.h,v 1.3 2004/04/11 17:56:45 karl Exp
|
||||
|
||||
This file is part of GNU Info, a program for reading online documentation
|
||||
stored in Info format.
|
||||
|
||||
Copyright (C) 1993, 1997, 2004 Free Software Foundation, Inc.
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2, or (at your option)
|
||||
any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program; if not, write to the Free Software
|
||||
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
|
||||
Written by Brian Fox (bfox@ai.mit.edu). */
|
||||
|
||||
#ifndef INFO_DISPLAY_H
|
||||
#define INFO_DISPLAY_H
|
||||
|
||||
#include "info-utils.h"
|
||||
#include "terminal.h"
|
||||
|
||||
typedef struct {
|
||||
char *text; /* Text of the line as it appears. */
|
||||
int textlen; /* Printable Length of TEXT. */
|
||||
int inverse; /* Non-zero means this line is inverse. */
|
||||
} DISPLAY_LINE;
|
||||
|
||||
/* An array of display lines which tell us what is currently visible on
|
||||
the display. */
|
||||
extern DISPLAY_LINE **the_display;
|
||||
|
||||
/* Non-zero means do no output. */
|
||||
extern int display_inhibited;
|
||||
|
||||
/* Non-zero if we didn't completely redisplay a window. */
|
||||
extern int display_was_interrupted_p;
|
||||
|
||||
/* Initialize THE_DISPLAY to WIDTH and HEIGHT, with nothing in it. */
|
||||
extern void display_initialize_display (int width, int height);
|
||||
|
||||
/* Clear all of the lines in DISPLAY making the screen blank. */
|
||||
extern void display_clear_display (DISPLAY_LINE **display);
|
||||
|
||||
/* Update the windows pointed to by WINDOWS in THE_DISPLAY. This actually
|
||||
writes the text on the screen. */
|
||||
extern void display_update_display (WINDOW *window);
|
||||
|
||||
/* Display WIN on THE_DISPLAY. Unlike display_update_display (), this
|
||||
function only does one window. */
|
||||
extern void display_update_one_window (WINDOW *win);
|
||||
|
||||
/* Move the screen cursor to directly over the current character in WINDOW. */
|
||||
extern void display_cursor_at_point (WINDOW *window);
|
||||
|
||||
/* Scroll the region of the_display starting at START, ending at END, and
|
||||
moving the lines AMOUNT lines. If AMOUNT is less than zero, the lines
|
||||
are moved up in the screen, otherwise down. Actually, it is possible
|
||||
for no scrolling to take place in the case that the terminal doesn't
|
||||
support it. This doesn't matter to us. */
|
||||
extern void display_scroll_display (int start, int end, int amount);
|
||||
|
||||
/* Try to scroll lines in WINDOW. OLD_PAGETOP is the pagetop of WINDOW before
|
||||
having had its line starts recalculated. OLD_STARTS is the list of line
|
||||
starts that used to appear in this window. OLD_COUNT is the number of lines
|
||||
that appear in the OLD_STARTS array. */
|
||||
extern void display_scroll_line_starts (WINDOW *window, int old_pagetop,
|
||||
char **old_starts, int old_count);
|
||||
|
||||
#endif /* not INFO_DISPLAY_H */
|
105
external/gpl2/texinfo/dist/info/doc.h
vendored
Normal file
105
external/gpl2/texinfo/dist/info/doc.h
vendored
Normal file
@ -0,0 +1,105 @@
|
||||
/* $NetBSD: doc.h,v 1.1.1.1 2016/01/14 00:11:29 christos Exp $ */
|
||||
|
||||
/* doc.h -- Structures associating function pointers with documentation.
|
||||
Id: doc.h,v 1.3 2004/04/11 17:56:45 karl Exp
|
||||
|
||||
Copyright (C) 1993, 2001, 2004 Free Software Foundation, Inc.
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2, or (at your option)
|
||||
any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program; if not, write to the Free Software
|
||||
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
|
||||
Written by Brian Fox (bfox@ai.mit.edu). */
|
||||
|
||||
#if !defined (DOC_H)
|
||||
#define DOC_H
|
||||
|
||||
#include "info.h" /* for NAMED_FUNCTIONS, VFunction, etc. */
|
||||
|
||||
#if defined (INFOKEY)
|
||||
/* For each function, we keep track of the first defined key sequence
|
||||
which invokes that function, for each different map. This is so that
|
||||
the dynamic documentation generation in infodoc.c (a) doesn't have to
|
||||
search through copious KEYMAP_ENTRYs, and, more importantly, (b) the
|
||||
user and programmer can choose the preferred key sequence that is
|
||||
printed for any given function -- it's just the first one that
|
||||
appears in the user's infokey file or the default keymaps in
|
||||
infomap.c.
|
||||
|
||||
Each FUNCTION_DOC has a linked list of FUNCTION_KEYSEQ structs
|
||||
hanging off it, which are created on startup when the user and/or
|
||||
default keymaps are being parsed. */
|
||||
typedef struct function_keyseq
|
||||
{
|
||||
struct function_keyseq *next;
|
||||
struct keymap_entry *map;
|
||||
char *keyseq;
|
||||
} FUNCTION_KEYSEQ;
|
||||
|
||||
#endif /* INFOKEY */
|
||||
|
||||
|
||||
/* An array of FUNCTION_DOC structures is defined in doc.c, which is
|
||||
automagically generated by the makedoc utility, whose job is to scan
|
||||
through the source files for command function declarations and
|
||||
compile a list of all the ones it finds. This saves tedious
|
||||
housekeeping and avoids errors of omission. */
|
||||
typedef struct
|
||||
{
|
||||
VFunction *func;
|
||||
#if defined (NAMED_FUNCTIONS)
|
||||
char *func_name;
|
||||
#endif /* NAMED_FUNCTIONS */
|
||||
#if defined (INFOKEY)
|
||||
FUNCTION_KEYSEQ *keys;
|
||||
#endif /* INFOKEY */
|
||||
char *doc;
|
||||
} FUNCTION_DOC;
|
||||
|
||||
extern FUNCTION_DOC function_doc_array[];
|
||||
|
||||
/* Under the old key-binding system, an info command is specified by
|
||||
the pointer to its function. Under the new INFOKEY binding system,
|
||||
it is specified by a pointer to the command's FUNCTION_DOC structure,
|
||||
defined in doc.c, from which the pointer to the function can be
|
||||
easily divined using the InfoFunction() extractor. */
|
||||
#if defined(INFOKEY)
|
||||
typedef FUNCTION_DOC InfoCommand;
|
||||
/* The cast to VFunction * prevents pgcc from complaining about
|
||||
dereferencing a void *. */
|
||||
#define InfoFunction(ic) ((ic) ? (ic)->func : (VFunction *) NULL)
|
||||
#define InfoCmd(fn) (&function_doc_array[A_##fn])
|
||||
#define DocInfoCmd(fd) ((fd) && (fd)->func ? (fd) : NULL)
|
||||
#else /* !INFOKEY */
|
||||
typedef VFunction InfoCommand;
|
||||
#define InfoFunction(vf) ((vf))
|
||||
#define InfoCmd(fn) fn
|
||||
#define DocInfoCmd(fd) ((fd)->func)
|
||||
#endif /* !INFOKEY */
|
||||
|
||||
#include "infomap.h" /* for Keymap. */
|
||||
|
||||
#if defined (NAMED_FUNCTIONS)
|
||||
extern char *function_name (InfoCommand *cmd);
|
||||
extern InfoCommand *named_function (char *name);
|
||||
#endif /* NAMED_FUNCTIONS */
|
||||
|
||||
extern char *function_documentation (InfoCommand *cmd);
|
||||
extern char *key_documentation (char key, Keymap map);
|
||||
extern char *pretty_keyname (unsigned char key);
|
||||
extern char *pretty_keyseq (char *keyseq);
|
||||
extern char *where_is (Keymap map, InfoCommand *cmd);
|
||||
extern char *replace_in_documentation (char *string, int help_is_only_window_p);
|
||||
extern void dump_map_to_message_buffer (char *prefix, Keymap map);
|
||||
|
||||
#endif /* !DOC_H */
|
70
external/gpl2/texinfo/dist/info/dribble.c
vendored
Normal file
70
external/gpl2/texinfo/dist/info/dribble.c
vendored
Normal file
@ -0,0 +1,70 @@
|
||||
/* $NetBSD: dribble.c,v 1.1.1.1 2016/01/14 00:11:29 christos Exp $ */
|
||||
|
||||
/* dribble.c -- dribble files for Info.
|
||||
Id: dribble.c,v 1.3 2004/04/11 17:56:45 karl Exp
|
||||
|
||||
Copyright (C) 1993, 1998, 2004 Free Software Foundation, Inc.
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2, or (at your option)
|
||||
any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program; if not, write to the Free Software
|
||||
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
|
||||
Written by Brian Fox (bfox@ai.mit.edu). */
|
||||
|
||||
#include "info.h"
|
||||
#include "dribble.h"
|
||||
|
||||
/* When non-zero, it is a stream to write all input characters to for the
|
||||
duration of this info session. */
|
||||
FILE *info_dribble_file = (FILE *)NULL;
|
||||
|
||||
/* Open a dribble file named NAME, perhaps closing an already open one.
|
||||
This sets the global variable INFO_DRIBBLE_FILE to the open stream. */
|
||||
void
|
||||
open_dribble_file (char *name)
|
||||
{
|
||||
/* Perhaps close existing dribble file. */
|
||||
close_dribble_file ();
|
||||
|
||||
/* Keystrokes can be non-printable characters, so we need binary I/O. */
|
||||
info_dribble_file = fopen (name, FOPEN_WBIN);
|
||||
|
||||
#if defined (HAVE_SETVBUF)
|
||||
if (info_dribble_file)
|
||||
# if defined (SETVBUF_REVERSED)
|
||||
setvbuf (info_dribble_file, _IONBF, (char *)NULL, 1);
|
||||
# else
|
||||
setvbuf (info_dribble_file, (char *)NULL, _IONBF, 1);
|
||||
# endif /* !SETVBUF_REVERSED */
|
||||
#endif /* HAVE_SETVBUF */
|
||||
}
|
||||
|
||||
/* If there is a dribble file already open, close it. */
|
||||
void
|
||||
close_dribble_file (void)
|
||||
{
|
||||
if (info_dribble_file)
|
||||
{
|
||||
fflush (info_dribble_file);
|
||||
fclose (info_dribble_file);
|
||||
info_dribble_file = (FILE *)NULL;
|
||||
}
|
||||
}
|
||||
|
||||
/* Write some output to our existing dribble file. */
|
||||
void
|
||||
dribble (unsigned char byte)
|
||||
{
|
||||
if (info_dribble_file)
|
||||
fwrite (&byte, sizeof (unsigned char), 1, info_dribble_file);
|
||||
}
|
43
external/gpl2/texinfo/dist/info/dribble.h
vendored
Normal file
43
external/gpl2/texinfo/dist/info/dribble.h
vendored
Normal file
@ -0,0 +1,43 @@
|
||||
/* $NetBSD: dribble.h,v 1.1.1.1 2016/01/14 00:11:29 christos Exp $ */
|
||||
|
||||
/* dribble.h -- Functions and vars declared in dribble.c. */
|
||||
|
||||
/* This file is part of GNU Info, a program for reading online documentation
|
||||
stored in Info format.
|
||||
|
||||
Copyright (C) 1993, 2004 Free Software Foundation, Inc.
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2, or (at your option)
|
||||
any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program; if not, write to the Free Software
|
||||
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
|
||||
Written by Brian Fox (bfox@ai.mit.edu). */
|
||||
|
||||
#if !defined (_DRIBBLE_H_)
|
||||
#define _DRIBBLE_H_
|
||||
|
||||
/* When non-zero, it is a stream to write all input characters to for the
|
||||
duration of this info session. */
|
||||
extern FILE *info_dribble_file;
|
||||
|
||||
/* Open a dribble file named NAME, perhaps closing an already open one.
|
||||
This sets the global variable INFO_DRIBBLE_FILE to the open stream. */
|
||||
extern void open_dribble_file (char *name);
|
||||
|
||||
/* If there is a dribble file already open, close it. */
|
||||
extern void close_dribble_file (void);
|
||||
|
||||
/* Write some output to our existing dribble file. */
|
||||
extern void dribble (unsigned char byte);
|
||||
|
||||
#endif /* !_DRIBBLE_H_ */
|
1526
external/gpl2/texinfo/dist/info/echo-area.c
vendored
Normal file
1526
external/gpl2/texinfo/dist/info/echo-area.c
vendored
Normal file
File diff suppressed because it is too large
Load Diff
87
external/gpl2/texinfo/dist/info/echo-area.h
vendored
Normal file
87
external/gpl2/texinfo/dist/info/echo-area.h
vendored
Normal file
@ -0,0 +1,87 @@
|
||||
/* $NetBSD: echo-area.h,v 1.1.1.1 2016/01/14 00:11:29 christos Exp $ */
|
||||
|
||||
/* echo-area.h -- Functions used in reading information from the echo area.
|
||||
Id: echo-area.h,v 1.4 2004/08/07 22:03:08 karl Exp
|
||||
|
||||
This file is part of GNU Info, a program for reading online documentation
|
||||
stored in Info format.
|
||||
|
||||
Copyright (C) 1993, 1997, 2004 Free Software Foundation, Inc.
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2, or (at your option)
|
||||
any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program; if not, write to the Free Software
|
||||
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
|
||||
Written by Brian Fox (bfox@ai.mit.edu). */
|
||||
|
||||
#ifndef INFO_ECHO_AREA_H
|
||||
#define INFO_ECHO_AREA_H
|
||||
|
||||
#define EA_MAX_INPUT 256
|
||||
|
||||
extern int echo_area_is_active, info_aborted_echo_area;
|
||||
|
||||
/* Non-zero means that the last command executed while reading input
|
||||
killed some text. */
|
||||
extern int echo_area_last_command_was_kill;
|
||||
|
||||
extern void inform_in_echo_area (const char *message);
|
||||
extern void echo_area_inform_of_deleted_window (WINDOW *window);
|
||||
extern void echo_area_prep_read (void);
|
||||
extern VFunction *ea_last_executed_command;
|
||||
extern char * info_read_completing_internal (WINDOW *window, char *prompt,
|
||||
REFERENCE **completions, int force);
|
||||
|
||||
/* Read a line of text in the echo area. Return a malloc ()'ed string,
|
||||
or NULL if the user aborted out of this read. WINDOW is the currently
|
||||
active window, so that we can restore it when we need to. PROMPT, if
|
||||
non-null, is a prompt to print before reading the line. */
|
||||
extern char *info_read_in_echo_area (WINDOW *window, char *prompt);
|
||||
|
||||
/* Read a line in the echo area with completion over COMPLETIONS.
|
||||
Takes arguments of WINDOW, PROMPT, and COMPLETIONS, a REFERENCE **. */
|
||||
char *info_read_completing_in_echo_area (WINDOW *window,
|
||||
char *prompt, REFERENCE **completions);
|
||||
|
||||
/* Read a line in the echo area allowing completion over COMPLETIONS, but
|
||||
not requiring it. Takes arguments of WINDOW, PROMPT, and COMPLETIONS,
|
||||
a REFERENCE **. */
|
||||
extern char *info_read_maybe_completing (WINDOW *window,
|
||||
char *prompt, REFERENCE **completions);
|
||||
|
||||
extern void ea_insert (WINDOW *window, int count, unsigned char key);
|
||||
extern void ea_quoted_insert (WINDOW *window, int count, unsigned char key);
|
||||
extern void ea_beg_of_line (WINDOW *window, int count, unsigned char key);
|
||||
extern void ea_backward (WINDOW *window, int count, unsigned char key);
|
||||
extern void ea_delete (WINDOW *window, int count, unsigned char key);
|
||||
extern void ea_end_of_line (WINDOW *window, int count, unsigned char key);
|
||||
extern void ea_forward (WINDOW *window, int count, unsigned char key);
|
||||
extern void ea_abort (WINDOW *window, int count, unsigned char key);
|
||||
extern void ea_rubout (WINDOW *window, int count, unsigned char key);
|
||||
extern void ea_complete (WINDOW *window, int count, unsigned char key);
|
||||
extern void ea_newline (WINDOW *window, int count, unsigned char key);
|
||||
extern void ea_kill_line (WINDOW *window, int count, unsigned char key);
|
||||
extern void ea_backward_kill_line (WINDOW *window, int count, unsigned char key);
|
||||
extern void ea_transpose_chars (WINDOW *window, int count, unsigned char key);
|
||||
extern void ea_yank (WINDOW *window, int count, unsigned char key);
|
||||
extern void ea_tab_insert (WINDOW *window, int count, unsigned char key);
|
||||
extern void ea_possible_completions (WINDOW *window, int count, unsigned char key);
|
||||
extern void ea_backward_word (WINDOW *window, int count, unsigned char key);
|
||||
extern void ea_kill_word (WINDOW *window, int count, unsigned char key);
|
||||
extern void ea_forward_word (WINDOW *window, int count, unsigned char key);
|
||||
extern void ea_yank_pop (WINDOW *window, int count, unsigned char key);
|
||||
extern void ea_backward_kill_word (WINDOW *window, int count, unsigned char key);
|
||||
extern void ea_scroll_completions_window (WINDOW *window, int count,
|
||||
unsigned char key);
|
||||
|
||||
#endif /* not INFO_ECHO_AREA_H */
|
713
external/gpl2/texinfo/dist/info/filesys.c
vendored
Normal file
713
external/gpl2/texinfo/dist/info/filesys.c
vendored
Normal file
@ -0,0 +1,713 @@
|
||||
/* $NetBSD: filesys.c,v 1.1.1.1 2016/01/14 00:11:29 christos Exp $ */
|
||||
|
||||
/* filesys.c -- filesystem specific functions.
|
||||
Id: filesys.c,v 1.6 2004/07/30 17:17:40 karl Exp
|
||||
|
||||
Copyright (C) 1993, 1997, 1998, 2000, 2002, 2003, 2004 Free Software
|
||||
Foundation, Inc.
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2, or (at your option)
|
||||
any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program; if not, write to the Free Software
|
||||
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
|
||||
Written by Brian Fox (bfox@ai.mit.edu). */
|
||||
|
||||
#include "info.h"
|
||||
|
||||
#include "tilde.h"
|
||||
#include "filesys.h"
|
||||
|
||||
/* Local to this file. */
|
||||
static char *info_file_in_path (char *filename, char *path);
|
||||
static char *lookup_info_filename (char *filename);
|
||||
static char *info_absolute_file (char *fname);
|
||||
|
||||
static void remember_info_filename (char *filename, char *expansion);
|
||||
static void maybe_initialize_infopath (void);
|
||||
|
||||
typedef struct
|
||||
{
|
||||
char *suffix;
|
||||
char *decompressor;
|
||||
} COMPRESSION_ALIST;
|
||||
|
||||
static char *info_suffixes[] = {
|
||||
".info",
|
||||
"-info",
|
||||
"/index",
|
||||
".inf", /* 8+3 file on filesystem which supports long file names */
|
||||
#ifdef __MSDOS__
|
||||
/* 8+3 file names strike again... */
|
||||
".in", /* for .inz, .igz etc. */
|
||||
".i",
|
||||
#endif
|
||||
"",
|
||||
NULL
|
||||
};
|
||||
|
||||
static COMPRESSION_ALIST compress_suffixes[] = {
|
||||
{ ".gz", "gunzip" },
|
||||
{ ".bz2", "bunzip2" },
|
||||
{ ".z", "gunzip" },
|
||||
{ ".Z", "uncompress" },
|
||||
{ ".Y", "unyabba" },
|
||||
#ifdef __MSDOS__
|
||||
{ "gz", "gunzip" },
|
||||
{ "z", "gunzip" },
|
||||
#endif
|
||||
{ (char *)NULL, (char *)NULL }
|
||||
};
|
||||
|
||||
/* The path on which we look for info files. You can initialize this
|
||||
from the environment variable INFOPATH if there is one, or you can
|
||||
call info_add_path () to add paths to the beginning or end of it.
|
||||
You can call zap_infopath () to make the path go away. */
|
||||
char *infopath = (char *)NULL;
|
||||
static int infopath_size = 0;
|
||||
|
||||
/* Expand the filename in PARTIAL to make a real name for this operating
|
||||
system. This looks in INFO_PATHS in order to find the correct file.
|
||||
If it can't find the file, it returns NULL. */
|
||||
static char *local_temp_filename = (char *)NULL;
|
||||
static int local_temp_filename_size = 0;
|
||||
|
||||
char *
|
||||
info_find_fullpath (char *partial)
|
||||
{
|
||||
int initial_character;
|
||||
char *temp;
|
||||
|
||||
filesys_error_number = 0;
|
||||
|
||||
maybe_initialize_infopath ();
|
||||
|
||||
if (partial && (initial_character = *partial))
|
||||
{
|
||||
char *expansion;
|
||||
|
||||
expansion = lookup_info_filename (partial);
|
||||
|
||||
if (expansion)
|
||||
return (expansion);
|
||||
|
||||
/* If we have the full path to this file, we still may have to add
|
||||
various extensions to it. I guess we have to stat this file
|
||||
after all. */
|
||||
if (IS_ABSOLUTE (partial))
|
||||
temp = info_absolute_file (partial);
|
||||
else if (initial_character == '~')
|
||||
{
|
||||
expansion = tilde_expand_word (partial);
|
||||
if (IS_ABSOLUTE (expansion))
|
||||
{
|
||||
temp = info_absolute_file (expansion);
|
||||
free (expansion);
|
||||
}
|
||||
else
|
||||
temp = expansion;
|
||||
}
|
||||
else if (initial_character == '.' &&
|
||||
(IS_SLASH (partial[1]) ||
|
||||
(partial[1] == '.' && IS_SLASH (partial[2]))))
|
||||
{
|
||||
if (local_temp_filename_size < 1024)
|
||||
local_temp_filename = (char *)xrealloc
|
||||
(local_temp_filename, (local_temp_filename_size = 1024));
|
||||
#if defined (HAVE_GETCWD)
|
||||
if (!getcwd (local_temp_filename, local_temp_filename_size))
|
||||
#else /* !HAVE_GETCWD */
|
||||
if (!getwd (local_temp_filename))
|
||||
#endif /* !HAVE_GETCWD */
|
||||
{
|
||||
filesys_error_number = errno;
|
||||
return (partial);
|
||||
}
|
||||
|
||||
strcat (local_temp_filename, "/");
|
||||
strcat (local_temp_filename, partial);
|
||||
temp = info_absolute_file (local_temp_filename); /* try extensions */
|
||||
if (!temp)
|
||||
partial = local_temp_filename;
|
||||
}
|
||||
else
|
||||
temp = info_file_in_path (partial, infopath);
|
||||
|
||||
if (temp)
|
||||
{
|
||||
remember_info_filename (partial, temp);
|
||||
if (strlen (temp) > (unsigned int) local_temp_filename_size)
|
||||
local_temp_filename = (char *) xrealloc
|
||||
(local_temp_filename,
|
||||
(local_temp_filename_size = (50 + strlen (temp))));
|
||||
strcpy (local_temp_filename, temp);
|
||||
free (temp);
|
||||
return (local_temp_filename);
|
||||
}
|
||||
}
|
||||
return (partial);
|
||||
}
|
||||
|
||||
/* Scan the list of directories in PATH looking for FILENAME. If we find
|
||||
one that is a regular file, return it as a new string. Otherwise, return
|
||||
a NULL pointer. */
|
||||
static char *
|
||||
info_file_in_path (char *filename, char *path)
|
||||
{
|
||||
struct stat finfo;
|
||||
char *temp_dirname;
|
||||
int statable, dirname_index;
|
||||
|
||||
/* Reject ridiculous cases up front, to prevent infinite recursion
|
||||
later on. E.g., someone might say "info '(.)foo'"... */
|
||||
if (!*filename || STREQ (filename, ".") || STREQ (filename, ".."))
|
||||
return NULL;
|
||||
|
||||
dirname_index = 0;
|
||||
|
||||
while ((temp_dirname = extract_colon_unit (path, &dirname_index)))
|
||||
{
|
||||
register int i, pre_suffix_length;
|
||||
char *temp;
|
||||
|
||||
/* Expand a leading tilde if one is present. */
|
||||
if (*temp_dirname == '~')
|
||||
{
|
||||
char *expanded_dirname;
|
||||
|
||||
expanded_dirname = tilde_expand_word (temp_dirname);
|
||||
free (temp_dirname);
|
||||
temp_dirname = expanded_dirname;
|
||||
}
|
||||
|
||||
temp = (char *)xmalloc (30 + strlen (temp_dirname) + strlen (filename));
|
||||
strcpy (temp, temp_dirname);
|
||||
if (!IS_SLASH (temp[(strlen (temp)) - 1]))
|
||||
strcat (temp, "/");
|
||||
strcat (temp, filename);
|
||||
|
||||
pre_suffix_length = strlen (temp);
|
||||
|
||||
free (temp_dirname);
|
||||
|
||||
for (i = 0; info_suffixes[i]; i++)
|
||||
{
|
||||
strcpy (temp + pre_suffix_length, info_suffixes[i]);
|
||||
|
||||
statable = (stat (temp, &finfo) == 0);
|
||||
|
||||
/* If we have found a regular file, then use that. Else, if we
|
||||
have found a directory, look in that directory for this file. */
|
||||
if (statable)
|
||||
{
|
||||
if (S_ISREG (finfo.st_mode))
|
||||
{
|
||||
return (temp);
|
||||
}
|
||||
else if (S_ISDIR (finfo.st_mode))
|
||||
{
|
||||
char *newpath, *filename_only, *newtemp;
|
||||
|
||||
newpath = xstrdup (temp);
|
||||
filename_only = filename_non_directory (filename);
|
||||
newtemp = info_file_in_path (filename_only, newpath);
|
||||
|
||||
free (newpath);
|
||||
if (newtemp)
|
||||
{
|
||||
free (temp);
|
||||
return (newtemp);
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
/* Add various compression suffixes to the name to see if
|
||||
the file is present in compressed format. */
|
||||
register int j, pre_compress_suffix_length;
|
||||
|
||||
pre_compress_suffix_length = strlen (temp);
|
||||
|
||||
for (j = 0; compress_suffixes[j].suffix; j++)
|
||||
{
|
||||
strcpy (temp + pre_compress_suffix_length,
|
||||
compress_suffixes[j].suffix);
|
||||
|
||||
statable = (stat (temp, &finfo) == 0);
|
||||
if (statable && (S_ISREG (finfo.st_mode)))
|
||||
return (temp);
|
||||
}
|
||||
}
|
||||
}
|
||||
free (temp);
|
||||
}
|
||||
return ((char *)NULL);
|
||||
}
|
||||
|
||||
/* Assume FNAME is an absolute file name, and check whether it is
|
||||
a regular file. If it is, return it as a new string; otherwise
|
||||
return a NULL pointer. We do it by taking the file name apart
|
||||
into its directory and basename parts, and calling info_file_in_path.*/
|
||||
static char *
|
||||
info_absolute_file (char *fname)
|
||||
{
|
||||
char *containing_dir = xstrdup (fname);
|
||||
char *base = filename_non_directory (containing_dir);
|
||||
|
||||
if (base > containing_dir)
|
||||
base[-1] = '\0';
|
||||
|
||||
return info_file_in_path (filename_non_directory (fname), containing_dir);
|
||||
}
|
||||
|
||||
|
||||
/* Given a string containing units of information separated by the
|
||||
PATH_SEP character, return the next one after IDX, or NULL if there
|
||||
are no more. Advance IDX to the character after the colon. */
|
||||
|
||||
char *
|
||||
extract_colon_unit (char *string, int *idx)
|
||||
{
|
||||
unsigned int i = (unsigned int) *idx;
|
||||
unsigned int start = i;
|
||||
|
||||
if (!string || i >= strlen (string))
|
||||
return NULL;
|
||||
|
||||
if (!string[i]) /* end of string */
|
||||
return NULL;
|
||||
|
||||
/* Advance to next PATH_SEP. */
|
||||
while (string[i] && string[i] != PATH_SEP[0])
|
||||
i++;
|
||||
|
||||
{
|
||||
char *value = xmalloc ((i - start) + 1);
|
||||
strncpy (value, &string[start], (i - start));
|
||||
value[i - start] = 0;
|
||||
|
||||
i++; /* move past PATH_SEP */
|
||||
*idx = i;
|
||||
return value;
|
||||
}
|
||||
}
|
||||
|
||||
/* A structure which associates a filename with its expansion. */
|
||||
typedef struct
|
||||
{
|
||||
char *filename;
|
||||
char *expansion;
|
||||
} FILENAME_LIST;
|
||||
|
||||
/* An array of remembered arguments and results. */
|
||||
static FILENAME_LIST **names_and_files = (FILENAME_LIST **)NULL;
|
||||
static int names_and_files_index = 0;
|
||||
static int names_and_files_slots = 0;
|
||||
|
||||
/* Find the result for having already called info_find_fullpath () with
|
||||
FILENAME. */
|
||||
static char *
|
||||
lookup_info_filename (char *filename)
|
||||
{
|
||||
if (filename && names_and_files)
|
||||
{
|
||||
register int i;
|
||||
for (i = 0; names_and_files[i]; i++)
|
||||
{
|
||||
if (FILENAME_CMP (names_and_files[i]->filename, filename) == 0)
|
||||
return (names_and_files[i]->expansion);
|
||||
}
|
||||
}
|
||||
return (char *)NULL;;
|
||||
}
|
||||
|
||||
/* Add a filename and its expansion to our list. */
|
||||
static void
|
||||
remember_info_filename (char *filename, char *expansion)
|
||||
{
|
||||
FILENAME_LIST *new;
|
||||
|
||||
if (names_and_files_index + 2 > names_and_files_slots)
|
||||
{
|
||||
int alloc_size;
|
||||
names_and_files_slots += 10;
|
||||
|
||||
alloc_size = names_and_files_slots * sizeof (FILENAME_LIST *);
|
||||
|
||||
names_and_files =
|
||||
(FILENAME_LIST **) xrealloc (names_and_files, alloc_size);
|
||||
}
|
||||
|
||||
new = (FILENAME_LIST *)xmalloc (sizeof (FILENAME_LIST));
|
||||
new->filename = xstrdup (filename);
|
||||
new->expansion = expansion ? xstrdup (expansion) : (char *)NULL;
|
||||
|
||||
names_and_files[names_and_files_index++] = new;
|
||||
names_and_files[names_and_files_index] = (FILENAME_LIST *)NULL;
|
||||
}
|
||||
|
||||
static void
|
||||
maybe_initialize_infopath (void)
|
||||
{
|
||||
if (!infopath_size)
|
||||
{
|
||||
infopath = (char *)
|
||||
xmalloc (infopath_size = (1 + strlen (DEFAULT_INFOPATH)));
|
||||
|
||||
strcpy (infopath, DEFAULT_INFOPATH);
|
||||
}
|
||||
}
|
||||
|
||||
/* Add PATH to the list of paths found in INFOPATH. 2nd argument says
|
||||
whether to put PATH at the front or end of INFOPATH. */
|
||||
void
|
||||
info_add_path (char *path, int where)
|
||||
{
|
||||
int len;
|
||||
|
||||
if (!infopath)
|
||||
{
|
||||
infopath = (char *)xmalloc (infopath_size = 200 + strlen (path));
|
||||
infopath[0] = '\0';
|
||||
}
|
||||
|
||||
len = strlen (path) + strlen (infopath);
|
||||
|
||||
if (len + 2 >= infopath_size)
|
||||
infopath = (char *)xrealloc (infopath, (infopath_size += (2 * len) + 2));
|
||||
|
||||
if (!*infopath)
|
||||
strcpy (infopath, path);
|
||||
else if (where == INFOPATH_APPEND)
|
||||
{
|
||||
strcat (infopath, PATH_SEP);
|
||||
strcat (infopath, path);
|
||||
}
|
||||
else if (where == INFOPATH_PREPEND)
|
||||
{
|
||||
char *temp = xstrdup (infopath);
|
||||
strcpy (infopath, path);
|
||||
strcat (infopath, PATH_SEP);
|
||||
strcat (infopath, temp);
|
||||
free (temp);
|
||||
}
|
||||
}
|
||||
|
||||
/* Make INFOPATH have absolutely nothing in it. */
|
||||
void
|
||||
zap_infopath (void)
|
||||
{
|
||||
if (infopath)
|
||||
free (infopath);
|
||||
|
||||
infopath = (char *)NULL;
|
||||
infopath_size = 0;
|
||||
}
|
||||
|
||||
/* Given a chunk of text and its length, convert all CRLF pairs at every
|
||||
end-of-line into a single Newline character. Return the length of
|
||||
produced text.
|
||||
|
||||
This is required because the rest of code is too entrenched in having
|
||||
a single newline at each EOL; in particular, searching for various
|
||||
Info headers and cookies can become extremely tricky if that assumption
|
||||
breaks.
|
||||
|
||||
FIXME: this could also support Mac-style text files with a single CR
|
||||
at the EOL, but what about random CR characters in non-Mac files? Can
|
||||
we afford converting them into newlines as well? Maybe implement some
|
||||
heuristics here, like in Emacs 20.
|
||||
|
||||
FIXME: is it a good idea to show the EOL type on the modeline? */
|
||||
long
|
||||
convert_eols (char *text, long int textlen)
|
||||
{
|
||||
register char *s = text;
|
||||
register char *d = text;
|
||||
|
||||
while (textlen--)
|
||||
{
|
||||
if (*s == '\r' && textlen && s[1] == '\n')
|
||||
{
|
||||
s++;
|
||||
textlen--;
|
||||
}
|
||||
*d++ = *s++;
|
||||
}
|
||||
|
||||
return (long)(d - text);
|
||||
}
|
||||
|
||||
/* Read the contents of PATHNAME, returning a buffer with the contents of
|
||||
that file in it, and returning the size of that buffer in FILESIZE.
|
||||
FINFO is a stat struct which has already been filled in by the caller.
|
||||
If the file turns out to be compressed, set IS_COMPRESSED to non-zero.
|
||||
If the file cannot be read, return a NULL pointer. */
|
||||
char *
|
||||
filesys_read_info_file (char *pathname, long int *filesize,
|
||||
struct stat *finfo, int *is_compressed)
|
||||
{
|
||||
long st_size;
|
||||
|
||||
*filesize = filesys_error_number = 0;
|
||||
|
||||
if (compressed_filename_p (pathname))
|
||||
{
|
||||
*is_compressed = 1;
|
||||
return (filesys_read_compressed (pathname, filesize));
|
||||
}
|
||||
else
|
||||
{
|
||||
int descriptor;
|
||||
char *contents;
|
||||
|
||||
*is_compressed = 0;
|
||||
descriptor = open (pathname, O_RDONLY | O_BINARY, 0666);
|
||||
|
||||
/* If the file couldn't be opened, give up. */
|
||||
if (descriptor < 0)
|
||||
{
|
||||
filesys_error_number = errno;
|
||||
return ((char *)NULL);
|
||||
}
|
||||
|
||||
/* Try to read the contents of this file. */
|
||||
st_size = (long) finfo->st_size;
|
||||
contents = (char *)xmalloc (1 + st_size);
|
||||
if ((read (descriptor, contents, st_size)) != st_size)
|
||||
{
|
||||
filesys_error_number = errno;
|
||||
close (descriptor);
|
||||
free (contents);
|
||||
return ((char *)NULL);
|
||||
}
|
||||
|
||||
close (descriptor);
|
||||
|
||||
/* Convert any DOS-style CRLF EOLs into Unix-style NL.
|
||||
Seems like a good idea to have even on Unix, in case the Info
|
||||
files are coming from some Windows system across a network. */
|
||||
*filesize = convert_eols (contents, st_size);
|
||||
|
||||
/* EOL conversion can shrink the text quite a bit. We don't
|
||||
want to waste storage. */
|
||||
if (*filesize < st_size)
|
||||
contents = (char *)xrealloc (contents, 1 + *filesize);
|
||||
contents[*filesize] = '\0';
|
||||
|
||||
return (contents);
|
||||
}
|
||||
}
|
||||
|
||||
/* Typically, pipe buffers are 4k. */
|
||||
#define BASIC_PIPE_BUFFER (4 * 1024)
|
||||
|
||||
/* We use some large multiple of that. */
|
||||
#define FILESYS_PIPE_BUFFER_SIZE (16 * BASIC_PIPE_BUFFER)
|
||||
|
||||
char *
|
||||
filesys_read_compressed (char *pathname, long int *filesize)
|
||||
{
|
||||
FILE *stream;
|
||||
char *command, *decompressor;
|
||||
char *contents = (char *)NULL;
|
||||
|
||||
*filesize = filesys_error_number = 0;
|
||||
|
||||
decompressor = filesys_decompressor_for_file (pathname);
|
||||
|
||||
if (!decompressor)
|
||||
return ((char *)NULL);
|
||||
|
||||
command = (char *)xmalloc (15 + strlen (pathname) + strlen (decompressor));
|
||||
/* Explicit .exe suffix makes the diagnostics of `popen'
|
||||
better on systems where COMMAND.COM is the stock shell. */
|
||||
sprintf (command, "%s%s < %s",
|
||||
decompressor, STRIP_DOT_EXE ? ".exe" : "", pathname);
|
||||
|
||||
#if !defined (BUILDING_LIBRARY)
|
||||
if (info_windows_initialized_p)
|
||||
{
|
||||
char *temp;
|
||||
|
||||
temp = (char *)xmalloc (5 + strlen (command));
|
||||
sprintf (temp, "%s...", command);
|
||||
message_in_echo_area ("%s", temp, NULL);
|
||||
free (temp);
|
||||
}
|
||||
#endif /* !BUILDING_LIBRARY */
|
||||
|
||||
stream = popen (command, FOPEN_RBIN);
|
||||
free (command);
|
||||
|
||||
/* Read chunks from this file until there are none left to read. */
|
||||
if (stream)
|
||||
{
|
||||
long offset, size;
|
||||
char *chunk;
|
||||
|
||||
offset = size = 0;
|
||||
chunk = (char *)xmalloc (FILESYS_PIPE_BUFFER_SIZE);
|
||||
|
||||
while (1)
|
||||
{
|
||||
int bytes_read;
|
||||
|
||||
bytes_read = fread (chunk, 1, FILESYS_PIPE_BUFFER_SIZE, stream);
|
||||
|
||||
if (bytes_read + offset >= size)
|
||||
contents = (char *)xrealloc
|
||||
(contents, size += (2 * FILESYS_PIPE_BUFFER_SIZE));
|
||||
|
||||
memcpy (contents + offset, chunk, bytes_read);
|
||||
offset += bytes_read;
|
||||
if (bytes_read != FILESYS_PIPE_BUFFER_SIZE)
|
||||
break;
|
||||
}
|
||||
|
||||
free (chunk);
|
||||
if (pclose (stream) == -1)
|
||||
{
|
||||
if (contents)
|
||||
free (contents);
|
||||
contents = (char *)NULL;
|
||||
filesys_error_number = errno;
|
||||
}
|
||||
else
|
||||
{
|
||||
*filesize = convert_eols (contents, offset);
|
||||
contents = (char *)xrealloc (contents, 1 + *filesize);
|
||||
contents[*filesize] = '\0';
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
filesys_error_number = errno;
|
||||
}
|
||||
|
||||
#if !defined (BUILDING_LIBARARY)
|
||||
if (info_windows_initialized_p)
|
||||
unmessage_in_echo_area ();
|
||||
#endif /* !BUILDING_LIBRARY */
|
||||
return (contents);
|
||||
}
|
||||
|
||||
/* Return non-zero if FILENAME belongs to a compressed file. */
|
||||
int
|
||||
compressed_filename_p (char *filename)
|
||||
{
|
||||
char *decompressor;
|
||||
|
||||
/* Find the final extension of this filename, and see if it matches one
|
||||
of our known ones. */
|
||||
decompressor = filesys_decompressor_for_file (filename);
|
||||
|
||||
if (decompressor)
|
||||
return (1);
|
||||
else
|
||||
return (0);
|
||||
}
|
||||
|
||||
/* Return the command string that would be used to decompress FILENAME. */
|
||||
char *
|
||||
filesys_decompressor_for_file (char *filename)
|
||||
{
|
||||
register int i;
|
||||
char *extension = (char *)NULL;
|
||||
|
||||
/* Find the final extension of FILENAME, and see if it appears in our
|
||||
list of known compression extensions. */
|
||||
for (i = strlen (filename) - 1; i > 0; i--)
|
||||
if (filename[i] == '.')
|
||||
{
|
||||
extension = filename + i;
|
||||
break;
|
||||
}
|
||||
|
||||
if (!extension)
|
||||
return ((char *)NULL);
|
||||
|
||||
for (i = 0; compress_suffixes[i].suffix; i++)
|
||||
if (FILENAME_CMP (extension, compress_suffixes[i].suffix) == 0)
|
||||
return (compress_suffixes[i].decompressor);
|
||||
|
||||
#if defined (__MSDOS__)
|
||||
/* If no other suffix matched, allow any extension which ends
|
||||
with `z' to be decompressed by gunzip. Due to limited 8+3 DOS
|
||||
file namespace, we can expect many such cases, and supporting
|
||||
every weird suffix thus produced would be a pain. */
|
||||
if (extension[strlen (extension) - 1] == 'z' ||
|
||||
extension[strlen (extension) - 1] == 'Z')
|
||||
return "gunzip";
|
||||
#endif
|
||||
|
||||
return ((char *)NULL);
|
||||
}
|
||||
|
||||
/* The number of the most recent file system error. */
|
||||
int filesys_error_number = 0;
|
||||
|
||||
/* A function which returns a pointer to a static buffer containing
|
||||
an error message for FILENAME and ERROR_NUM. */
|
||||
static char *errmsg_buf = (char *)NULL;
|
||||
static int errmsg_buf_size = 0;
|
||||
|
||||
char *
|
||||
filesys_error_string (char *filename, int error_num)
|
||||
{
|
||||
int len;
|
||||
char *result;
|
||||
|
||||
if (error_num == 0)
|
||||
return ((char *)NULL);
|
||||
|
||||
result = strerror (error_num);
|
||||
|
||||
len = 4 + strlen (filename) + strlen (result);
|
||||
if (len >= errmsg_buf_size)
|
||||
errmsg_buf = (char *)xrealloc (errmsg_buf, (errmsg_buf_size = 2 + len));
|
||||
|
||||
sprintf (errmsg_buf, "%s: %s", filename, result);
|
||||
return (errmsg_buf);
|
||||
}
|
||||
|
||||
|
||||
/* Check for "dir" with all the possible info and compression suffixes,
|
||||
in combination. */
|
||||
|
||||
int
|
||||
is_dir_name (char *filename)
|
||||
{
|
||||
unsigned i;
|
||||
|
||||
for (i = 0; info_suffixes[i]; i++)
|
||||
{
|
||||
unsigned c;
|
||||
char trydir[50];
|
||||
strcpy (trydir, "dir");
|
||||
strcat (trydir, info_suffixes[i]);
|
||||
|
||||
if (strcasecmp (filename, trydir) == 0)
|
||||
return 1;
|
||||
|
||||
for (c = 0; compress_suffixes[c].suffix; c++)
|
||||
{
|
||||
char dir_compressed[50]; /* can be short */
|
||||
strcpy (dir_compressed, trydir);
|
||||
strcat (dir_compressed, compress_suffixes[c].suffix);
|
||||
if (strcasecmp (filename, dir_compressed) == 0)
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
94
external/gpl2/texinfo/dist/info/filesys.h
vendored
Normal file
94
external/gpl2/texinfo/dist/info/filesys.h
vendored
Normal file
@ -0,0 +1,94 @@
|
||||
/* $NetBSD: filesys.h,v 1.1.1.1 2016/01/14 00:11:29 christos Exp $ */
|
||||
|
||||
/* filesys.h -- external declarations for filesys.c.
|
||||
Id: filesys.h,v 1.3 2004/04/11 17:56:45 karl Exp
|
||||
|
||||
Copyright (C) 1993, 1997, 1998, 2002, 2004 Free Software Foundation, Inc.
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2, or (at your option)
|
||||
any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program; if not, write to the Free Software
|
||||
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
|
||||
Written by Brian Fox (bfox@ai.mit.edu). */
|
||||
|
||||
#ifndef INFO_FILESYS_H
|
||||
#define INFO_FILESYS_H
|
||||
|
||||
/* The path on which we look for info files. You can initialize this
|
||||
from the environment variable INFOPATH if there is one, or you can
|
||||
call info_add_path () to add paths to the beginning or end of it. */
|
||||
extern char *infopath;
|
||||
|
||||
/* Make INFOPATH have absolutely nothing in it. */
|
||||
extern void zap_infopath (void);
|
||||
|
||||
/* Add PATH to the list of paths found in INFOPATH. 2nd argument says
|
||||
whether to put PATH at the front or end of INFOPATH. */
|
||||
extern void info_add_path (char *path, int where);
|
||||
|
||||
/* Defines that are passed along with the pathname to info_add_path (). */
|
||||
#define INFOPATH_PREPEND 0
|
||||
#define INFOPATH_APPEND 1
|
||||
|
||||
/* Expand the filename in PARTIAL to make a real name for this operating
|
||||
system. This looks in INFO_PATHS in order to find the correct file.
|
||||
If it can't find the file, it returns NULL. */
|
||||
extern char *info_find_fullpath (char *partial);
|
||||
|
||||
/* Given a chunk of text and its length, convert all CRLF pairs at the
|
||||
EOLs into a single Newline character. Return the length of produced
|
||||
text. */
|
||||
long convert_eols (char *text, long textlen);
|
||||
|
||||
/* Read the contents of PATHNAME, returning a buffer with the contents of
|
||||
that file in it, and returning the size of that buffer in FILESIZE.
|
||||
FINFO is a stat struct which has already been filled in by the caller.
|
||||
If the file cannot be read, return a NULL pointer. */
|
||||
extern char *filesys_read_info_file (char *pathname, long int *filesize,
|
||||
struct stat *finfo, int *is_compressed);
|
||||
|
||||
extern char *filesys_read_compressed (char *pathname, long int *filesize);
|
||||
|
||||
/* Return the command string that would be used to decompress FILENAME. */
|
||||
extern char *filesys_decompressor_for_file (char *filename);
|
||||
extern int compressed_filename_p (char *filename);
|
||||
|
||||
/* A function which returns a pointer to a static buffer containing
|
||||
an error message for FILENAME and ERROR_NUM. */
|
||||
extern char *filesys_error_string (char *filename, int error_num);
|
||||
|
||||
/* The number of the most recent file system error. */
|
||||
extern int filesys_error_number;
|
||||
|
||||
/* Given a string containing units of information separated by colons,
|
||||
return the next one pointed to by IDX, or NULL if there are no more.
|
||||
Advance IDX to the character after the colon. */
|
||||
extern char *extract_colon_unit (char *string, int *idx);
|
||||
|
||||
/* Return true if FILENAME is `dir', with a possible compression suffix. */
|
||||
extern int is_dir_name (char *filename);
|
||||
|
||||
/* The default value of INFOPATH. */
|
||||
#if !defined (DEFAULT_INFOPATH)
|
||||
# define DEFAULT_INFOPATH "/usr/local/info:/usr/info:/usr/local/lib/info:/usr/lib/info:/usr/local/gnu/info:/usr/local/gnu/lib/info:/usr/gnu/info:/usr/gnu/lib/info:/opt/gnu/info:/usr/share/info:/usr/share/lib/info:/usr/local/share/info:/usr/local/share/lib/info:/usr/gnu/lib/emacs/info:/usr/local/gnu/lib/emacs/info:/usr/local/lib/emacs/info:/usr/local/emacs/info:."
|
||||
#endif /* !DEFAULT_INFOPATH */
|
||||
|
||||
#if !defined (S_ISREG) && defined (S_IFREG)
|
||||
# define S_ISREG(m) (((m) & S_IFMT) == S_IFREG)
|
||||
#endif /* !S_ISREG && S_IFREG */
|
||||
|
||||
#if !defined (S_ISDIR) && defined (S_IFDIR)
|
||||
# define S_ISDIR(m) (((m) & S_IFMT) == S_IFDIR)
|
||||
#endif /* !S_ISDIR && S_IFDIR */
|
||||
|
||||
#endif /* not INFO_FILESYS_H */
|
270
external/gpl2/texinfo/dist/info/footnotes.c
vendored
Normal file
270
external/gpl2/texinfo/dist/info/footnotes.c
vendored
Normal file
@ -0,0 +1,270 @@
|
||||
/* $NetBSD: footnotes.c,v 1.1.1.1 2016/01/14 00:11:29 christos Exp $ */
|
||||
|
||||
/* footnotes.c -- Some functions for manipulating footnotes.
|
||||
Id: footnotes.c,v 1.4 2004/04/11 17:56:45 karl Exp
|
||||
|
||||
Copyright (C) 1993, 1997, 1998, 1999, 2002, 2004 Free Software
|
||||
Foundation, Inc.
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2, or (at your option)
|
||||
any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program; if not, write to the Free Software
|
||||
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
|
||||
Originally written by Brian Fox (bfox@ai.mit.edu). */
|
||||
|
||||
#include "info.h"
|
||||
|
||||
/* Nonzero means attempt to show footnotes when displaying a new window. */
|
||||
int auto_footnotes_p = 0;
|
||||
|
||||
static char *footnote_nodename = "*Footnotes*";
|
||||
|
||||
NODE * make_footnotes_node (NODE *node);
|
||||
|
||||
#define FOOTNOTE_HEADER_FORMAT \
|
||||
"*** Footnotes appearing in the node `%s' ***\n"
|
||||
|
||||
/* Find the window currently showing footnotes. */
|
||||
static WINDOW *
|
||||
find_footnotes_window (void)
|
||||
{
|
||||
WINDOW *win;
|
||||
|
||||
/* Try to find an existing window first. */
|
||||
for (win = windows; win; win = win->next)
|
||||
if (internal_info_node_p (win->node) &&
|
||||
(strcmp (win->node->nodename, footnote_nodename) == 0))
|
||||
break;
|
||||
|
||||
return (win);
|
||||
}
|
||||
|
||||
/* Manufacture a node containing the footnotes of this node, and
|
||||
return the manufactured node. If NODE has no footnotes, return a
|
||||
NULL pointer. */
|
||||
NODE *
|
||||
make_footnotes_node (NODE *node)
|
||||
{
|
||||
NODE *fn_node, *result = (NODE *)NULL;
|
||||
long fn_start;
|
||||
|
||||
/* Make the initial assumption that the footnotes appear as simple
|
||||
text within this windows node. */
|
||||
fn_node = node;
|
||||
|
||||
/* See if this node contains the magic footnote label. */
|
||||
fn_start =
|
||||
info_search_in_node (FOOTNOTE_LABEL, node, 0, (WINDOW *)NULL, 1, 0);
|
||||
|
||||
/* If it doesn't, check to see if it has an associated footnotes node. */
|
||||
if (fn_start == -1)
|
||||
{
|
||||
REFERENCE **refs;
|
||||
|
||||
refs = info_xrefs_of_node (node);
|
||||
|
||||
if (refs)
|
||||
{
|
||||
register int i;
|
||||
char *refname;
|
||||
int reflen = strlen ("-Footnotes") + strlen (node->nodename);
|
||||
|
||||
refname = (char *)xmalloc (reflen + 1);
|
||||
|
||||
strcpy (refname, node->nodename);
|
||||
strcat (refname, "-Footnotes");
|
||||
|
||||
for (i = 0; refs[i]; i++)
|
||||
if ((refs[i]->nodename != (char *)NULL) &&
|
||||
/* Support both the older "foo-Footnotes" and the new
|
||||
style "foo-Footnote-NN" references. */
|
||||
(strcmp (refs[i]->nodename, refname) == 0 ||
|
||||
(strncmp (refs[i]->nodename, refname, reflen - 1) == 0 &&
|
||||
refs[i]->nodename[reflen - 1] == '-' &&
|
||||
isdigit (refs[i]->nodename[reflen]))))
|
||||
{
|
||||
char *filename;
|
||||
|
||||
filename = node->parent;
|
||||
if (!filename)
|
||||
filename = node->filename;
|
||||
|
||||
fn_node = info_get_node (filename, refname);
|
||||
|
||||
if (fn_node)
|
||||
fn_start = 0;
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
free (refname);
|
||||
info_free_references (refs);
|
||||
}
|
||||
}
|
||||
|
||||
/* If we never found the start of a footnotes area, quit now. */
|
||||
if (fn_start == -1)
|
||||
return ((NODE *)NULL);
|
||||
|
||||
/* Make the new node. */
|
||||
result = (NODE *)xmalloc (sizeof (NODE));
|
||||
result->flags = 0;
|
||||
result->display_pos = 0;
|
||||
|
||||
/* Get the size of the footnotes appearing within this node. */
|
||||
{
|
||||
char *header;
|
||||
long text_start = fn_start;
|
||||
|
||||
header = (char *)xmalloc
|
||||
(1 + strlen (node->nodename) + strlen (FOOTNOTE_HEADER_FORMAT));
|
||||
sprintf (header, FOOTNOTE_HEADER_FORMAT, node->nodename);
|
||||
|
||||
/* Move the start of the displayed text to right after the first line.
|
||||
This effectively skips either "---- footno...", or "File: foo...". */
|
||||
while (text_start < fn_node->nodelen)
|
||||
if (fn_node->contents[text_start++] == '\n')
|
||||
break;
|
||||
|
||||
result->nodelen = strlen (header) + fn_node->nodelen - text_start;
|
||||
|
||||
/* Set the contents of this node. */
|
||||
result->contents = (char *)xmalloc (1 + result->nodelen);
|
||||
sprintf (result->contents, "%s", header);
|
||||
memcpy (result->contents + strlen (header),
|
||||
fn_node->contents + text_start, fn_node->nodelen - text_start);
|
||||
|
||||
name_internal_node (result, footnote_nodename);
|
||||
free (header);
|
||||
}
|
||||
|
||||
#if defined (NOTDEF)
|
||||
/* If the footnotes were gleaned from the node that we were called with,
|
||||
shorten the calling node's display length. */
|
||||
if (fn_node == node)
|
||||
narrow_node (node, 0, fn_start);
|
||||
#endif /* NOTDEF */
|
||||
|
||||
return (result);
|
||||
}
|
||||
|
||||
/* Create or delete the footnotes window depending on whether footnotes
|
||||
exist in WINDOW's node or not. Returns FN_FOUND if footnotes were found
|
||||
and displayed. Returns FN_UNFOUND if there were no footnotes found
|
||||
in WINDOW's node. Returns FN_UNABLE if there were footnotes, but the
|
||||
window to show them couldn't be made. */
|
||||
int
|
||||
info_get_or_remove_footnotes (WINDOW *window)
|
||||
{
|
||||
WINDOW *fn_win;
|
||||
NODE *new_footnotes;
|
||||
|
||||
fn_win = find_footnotes_window ();
|
||||
|
||||
/* If we are in the footnotes window, change nothing. */
|
||||
if (fn_win == window)
|
||||
return (FN_FOUND);
|
||||
|
||||
/* Try to find footnotes for this window's node. */
|
||||
new_footnotes = make_footnotes_node (window->node);
|
||||
|
||||
/* If there was a window showing footnotes, and there are no footnotes
|
||||
for the current window, delete the old footnote window. */
|
||||
if (fn_win && !new_footnotes)
|
||||
{
|
||||
if (windows->next)
|
||||
info_delete_window_internal (fn_win);
|
||||
}
|
||||
|
||||
/* If there are footnotes for this window's node, but no window around
|
||||
showing footnotes, try to make a new window. */
|
||||
if (new_footnotes && !fn_win)
|
||||
{
|
||||
WINDOW *old_active;
|
||||
WINDOW *last, *win;
|
||||
|
||||
/* Always make this window be the last one appearing in the list. Find
|
||||
the last window in the chain. */
|
||||
for (win = windows, last = windows; win; last = win, win = win->next);
|
||||
|
||||
/* Try to split this window, and make the split window the one to
|
||||
contain the footnotes. */
|
||||
old_active = active_window;
|
||||
active_window = last;
|
||||
fn_win = window_make_window (new_footnotes);
|
||||
active_window = old_active;
|
||||
|
||||
if (!fn_win)
|
||||
{
|
||||
free (new_footnotes->contents);
|
||||
free (new_footnotes);
|
||||
|
||||
/* If we are hacking automatic footnotes, and there are footnotes
|
||||
but we couldn't display them, print a message to that effect. */
|
||||
if (auto_footnotes_p)
|
||||
inform_in_echo_area ((char *) _("Footnotes could not be displayed"));
|
||||
return (FN_UNABLE);
|
||||
}
|
||||
}
|
||||
|
||||
/* If there are footnotes, and there is a window to display them,
|
||||
make that window be the number of lines appearing in the footnotes. */
|
||||
if (new_footnotes && fn_win)
|
||||
{
|
||||
window_set_node_of_window (fn_win, new_footnotes);
|
||||
|
||||
window_change_window_height
|
||||
(fn_win, fn_win->line_count - fn_win->height);
|
||||
|
||||
remember_window_and_node (fn_win, new_footnotes);
|
||||
add_gcable_pointer (new_footnotes->contents);
|
||||
}
|
||||
|
||||
if (!new_footnotes)
|
||||
return (FN_UNFOUND);
|
||||
else
|
||||
return (FN_FOUND);
|
||||
}
|
||||
|
||||
/* Show the footnotes associated with this node in another window. */
|
||||
DECLARE_INFO_COMMAND (info_show_footnotes,
|
||||
_("Show the footnotes associated with this node in another window"))
|
||||
{
|
||||
/* A negative argument means just make the window go away. */
|
||||
if (count < 0)
|
||||
{
|
||||
WINDOW *fn_win = find_footnotes_window ();
|
||||
|
||||
/* If there is an old footnotes window, and it isn't the only window
|
||||
on the screen, delete it. */
|
||||
if (fn_win && windows->next)
|
||||
info_delete_window_internal (fn_win);
|
||||
}
|
||||
else
|
||||
{
|
||||
int result;
|
||||
|
||||
result = info_get_or_remove_footnotes (window);
|
||||
|
||||
switch (result)
|
||||
{
|
||||
case FN_UNFOUND:
|
||||
info_error ((char *) msg_no_foot_node, NULL, NULL);
|
||||
break;
|
||||
|
||||
case FN_UNABLE:
|
||||
info_error ((char *) msg_win_too_small, NULL, NULL);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
45
external/gpl2/texinfo/dist/info/footnotes.h
vendored
Normal file
45
external/gpl2/texinfo/dist/info/footnotes.h
vendored
Normal file
@ -0,0 +1,45 @@
|
||||
/* $NetBSD: footnotes.h,v 1.1.1.1 2016/01/14 00:11:29 christos Exp $ */
|
||||
|
||||
/* footnotes.h -- Some functions for manipulating footnotes.
|
||||
Id: footnotes.h,v 1.3 2004/04/11 17:56:45 karl Exp
|
||||
|
||||
Copyright (C) 1993, 1997, 1998, 2002, 2004 Free Software Foundation, Inc.
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2, or (at your option)
|
||||
any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program; if not, write to the Free Software
|
||||
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
|
||||
Written by Brian Fox (bfox@ai.mit.edu). */
|
||||
|
||||
#ifndef INFO_FOOTNOTES_H
|
||||
#define INFO_FOOTNOTES_H
|
||||
|
||||
/* Magic string which indicates following text is footnotes. */
|
||||
#define FOOTNOTE_LABEL N_("---------- Footnotes ----------")
|
||||
|
||||
#define FN_FOUND 0
|
||||
#define FN_UNFOUND 1
|
||||
#define FN_UNABLE 2
|
||||
|
||||
|
||||
/* Create or delete the footnotes window depending on whether footnotes
|
||||
exist in WINDOW's node or not. Returns FN_FOUND if footnotes were found
|
||||
and displayed. Returns FN_UNFOUND if there were no footnotes found
|
||||
in WINDOW's node. Returns FN_UNABLE if there were footnotes, but the
|
||||
window to show them couldn't be made. */
|
||||
extern int info_get_or_remove_footnotes (WINDOW *window);
|
||||
|
||||
/* Non-zero means attempt to show footnotes when displaying a new window. */
|
||||
extern int auto_footnotes_p;
|
||||
|
||||
#endif /* not INFO_FOOTNOTES_H */
|
94
external/gpl2/texinfo/dist/info/gc.c
vendored
Normal file
94
external/gpl2/texinfo/dist/info/gc.c
vendored
Normal file
@ -0,0 +1,94 @@
|
||||
/* $NetBSD: gc.c,v 1.1.1.1 2016/01/14 00:11:29 christos Exp $ */
|
||||
|
||||
/* gc.c -- Functions to remember and garbage collect unused node contents.
|
||||
Id: gc.c,v 1.3 2004/04/11 17:56:45 karl Exp
|
||||
|
||||
Copyright (C) 1993, 2004 Free Software Foundation, Inc.
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2, or (at your option)
|
||||
any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program; if not, write to the Free Software
|
||||
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
|
||||
Written by Brian Fox (bfox@ai.mit.edu). */
|
||||
|
||||
#include "info.h"
|
||||
|
||||
/* Array of pointers to the contents of gc-able nodes. A pointer on this
|
||||
list can be garbage collected when no info window contains a node whose
|
||||
contents member match the pointer. */
|
||||
static char **gcable_pointers = (char **)NULL;
|
||||
static int gcable_pointers_index = 0;
|
||||
static int gcable_pointers_slots = 0;
|
||||
|
||||
/* Add POINTER to the list of garbage collectible pointers. A pointer
|
||||
is not actually garbage collected until no info window contains a node
|
||||
whose contents member is equal to the pointer. */
|
||||
void
|
||||
add_gcable_pointer (char *pointer)
|
||||
{
|
||||
gc_pointers ();
|
||||
add_pointer_to_array (pointer, gcable_pointers_index, gcable_pointers,
|
||||
gcable_pointers_slots, 10, char *);
|
||||
}
|
||||
|
||||
/* Grovel the list of info windows and gc-able pointers finding those
|
||||
node->contents which are collectible, and free them. */
|
||||
void
|
||||
gc_pointers (void)
|
||||
{
|
||||
register int i, j, k;
|
||||
INFO_WINDOW *iw;
|
||||
char **new = (char **)NULL;
|
||||
int new_index = 0;
|
||||
int new_slots = 0;
|
||||
|
||||
if (!info_windows || !gcable_pointers_index)
|
||||
return;
|
||||
|
||||
for (i = 0; (iw = info_windows[i]); i++)
|
||||
{
|
||||
for (j = 0; j < iw->nodes_index; j++)
|
||||
{
|
||||
NODE *node = iw->nodes[j];
|
||||
|
||||
/* If this node->contents appears in our list of gcable_pointers,
|
||||
it is not gc-able, so save it. */
|
||||
for (k = 0; k < gcable_pointers_index; k++)
|
||||
if (gcable_pointers[k] == node->contents)
|
||||
{
|
||||
add_pointer_to_array
|
||||
(node->contents, new_index, new, new_slots, 10, char *);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* We have gathered all of the pointers which need to be saved. Free any
|
||||
of the original pointers which do not appear in the new list. */
|
||||
for (i = 0; i < gcable_pointers_index; i++)
|
||||
{
|
||||
for (j = 0; j < new_index; j++)
|
||||
if (gcable_pointers[i] == new[j])
|
||||
break;
|
||||
|
||||
/* If we got all the way through the new list, then the old pointer
|
||||
can be garbage collected. */
|
||||
if (new && !new[j])
|
||||
free (gcable_pointers[i]);
|
||||
}
|
||||
|
||||
free (gcable_pointers);
|
||||
gcable_pointers = new;
|
||||
gcable_pointers_slots = new_slots;
|
||||
gcable_pointers_index = new_index;
|
||||
}
|
39
external/gpl2/texinfo/dist/info/gc.h
vendored
Normal file
39
external/gpl2/texinfo/dist/info/gc.h
vendored
Normal file
@ -0,0 +1,39 @@
|
||||
/* $NetBSD: gc.h,v 1.1.1.1 2016/01/14 00:11:29 christos Exp $ */
|
||||
|
||||
/* gc.h -- Functions for garbage collecting unused node contents.
|
||||
Id: gc.h,v 1.3 2004/04/11 17:56:45 karl Exp
|
||||
|
||||
This file is part of GNU Info, a program for reading online documentation
|
||||
stored in Info format.
|
||||
|
||||
Copyright (C) 1993, 1997, 2004 Free Software Foundation, Inc.
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2, or (at your option)
|
||||
any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program; if not, write to the Free Software
|
||||
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
|
||||
Written by Brian Fox (bfox@ai.mit.edu). */
|
||||
|
||||
#ifndef INFO_GC_H
|
||||
#define INFO_GC_H
|
||||
|
||||
/* Add POINTER to the list of garbage collectible pointers. A pointer
|
||||
is not actually garbage collected until no info window contains a node
|
||||
whose contents member is equal to the pointer. */
|
||||
extern void add_gcable_pointer (char *pointer);
|
||||
|
||||
/* Grovel the list of info windows and gc-able pointers finding those
|
||||
node->contents which are collectible, and free them. */
|
||||
extern void gc_pointers (void);
|
||||
|
||||
#endif /* not INFO_GC_H */
|
737
external/gpl2/texinfo/dist/info/indices.c
vendored
Normal file
737
external/gpl2/texinfo/dist/info/indices.c
vendored
Normal file
@ -0,0 +1,737 @@
|
||||
/* $NetBSD: indices.c,v 1.1.1.1 2016/01/14 00:11:29 christos Exp $ */
|
||||
|
||||
/* indices.c -- deal with an Info file index.
|
||||
Id: indices.c,v 1.5 2004/04/11 17:56:45 karl Exp
|
||||
|
||||
Copyright (C) 1993, 1997, 1998, 1999, 2002, 2003, 2004 Free Software
|
||||
Foundation, Inc.
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2, or (at your option)
|
||||
any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program; if not, write to the Free Software
|
||||
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
|
||||
Originally written by Brian Fox (bfox@ai.mit.edu). */
|
||||
|
||||
#include "info.h"
|
||||
#include "indices.h"
|
||||
|
||||
/* User-visible variable controls the output of info-index-next. */
|
||||
int show_index_match = 1;
|
||||
|
||||
/* In the Info sense, an index is a menu. This variable holds the last
|
||||
parsed index. */
|
||||
static REFERENCE **index_index = (REFERENCE **)NULL;
|
||||
|
||||
/* The offset of the most recently selected index element. */
|
||||
static int index_offset = 0;
|
||||
|
||||
/* Variable which holds the last string searched for. */
|
||||
static char *index_search = (char *)NULL;
|
||||
|
||||
/* A couple of "globals" describing where the initial index was found. */
|
||||
static char *initial_index_filename = (char *)NULL;
|
||||
static char *initial_index_nodename = (char *)NULL;
|
||||
|
||||
/* A structure associating index names with index offset ranges. */
|
||||
typedef struct {
|
||||
char *name; /* The nodename of this index. */
|
||||
int first; /* The index in our list of the first entry. */
|
||||
int last; /* The index in our list of the last entry. */
|
||||
} INDEX_NAME_ASSOC;
|
||||
|
||||
/* An array associating index nodenames with index offset ranges. */
|
||||
static INDEX_NAME_ASSOC **index_nodenames = (INDEX_NAME_ASSOC **)NULL;
|
||||
static int index_nodenames_index = 0;
|
||||
static int index_nodenames_slots = 0;
|
||||
|
||||
/* Add the name of NODE, and the range of the associated index elements
|
||||
(passed in ARRAY) to index_nodenames. */
|
||||
static void
|
||||
add_index_to_index_nodenames (REFERENCE **array, NODE *node)
|
||||
{
|
||||
register int i, last;
|
||||
INDEX_NAME_ASSOC *assoc;
|
||||
|
||||
for (last = 0; array[last + 1]; last++);
|
||||
assoc = (INDEX_NAME_ASSOC *)xmalloc (sizeof (INDEX_NAME_ASSOC));
|
||||
assoc->name = xstrdup (node->nodename);
|
||||
|
||||
if (!index_nodenames_index)
|
||||
{
|
||||
assoc->first = 0;
|
||||
assoc->last = last;
|
||||
}
|
||||
else
|
||||
{
|
||||
for (i = 0; index_nodenames[i + 1]; i++);
|
||||
assoc->first = 1 + index_nodenames[i]->last;
|
||||
assoc->last = assoc->first + last;
|
||||
}
|
||||
add_pointer_to_array
|
||||
(assoc, index_nodenames_index, index_nodenames, index_nodenames_slots,
|
||||
10, INDEX_NAME_ASSOC *);
|
||||
}
|
||||
|
||||
/* Find and return the indices of WINDOW's file. The indices are defined
|
||||
as the first node in the file containing the word "Index" and any
|
||||
immediately following nodes whose names also contain "Index". All such
|
||||
indices are concatenated and the result returned. If WINDOW's info file
|
||||
doesn't have any indices, a NULL pointer is returned. */
|
||||
REFERENCE **
|
||||
info_indices_of_window (WINDOW *window)
|
||||
{
|
||||
FILE_BUFFER *fb;
|
||||
|
||||
fb = file_buffer_of_window (window);
|
||||
|
||||
return (info_indices_of_file_buffer (fb));
|
||||
}
|
||||
|
||||
REFERENCE **
|
||||
info_indices_of_file_buffer (FILE_BUFFER *file_buffer)
|
||||
{
|
||||
register int i;
|
||||
REFERENCE **result = (REFERENCE **)NULL;
|
||||
|
||||
/* No file buffer, no indices. */
|
||||
if (!file_buffer)
|
||||
return ((REFERENCE **)NULL);
|
||||
|
||||
/* Reset globals describing where the index was found. */
|
||||
maybe_free (initial_index_filename);
|
||||
maybe_free (initial_index_nodename);
|
||||
initial_index_filename = (char *)NULL;
|
||||
initial_index_nodename = (char *)NULL;
|
||||
|
||||
if (index_nodenames)
|
||||
{
|
||||
for (i = 0; index_nodenames[i]; i++)
|
||||
{
|
||||
free (index_nodenames[i]->name);
|
||||
free (index_nodenames[i]);
|
||||
}
|
||||
|
||||
index_nodenames_index = 0;
|
||||
index_nodenames[0] = (INDEX_NAME_ASSOC *)NULL;
|
||||
}
|
||||
|
||||
/* Grovel the names of the nodes found in this file. */
|
||||
if (file_buffer->tags)
|
||||
{
|
||||
TAG *tag;
|
||||
|
||||
for (i = 0; (tag = file_buffer->tags[i]); i++)
|
||||
{
|
||||
if (string_in_line ("Index", tag->nodename) != -1)
|
||||
{
|
||||
NODE *node;
|
||||
REFERENCE **menu;
|
||||
|
||||
/* Found one. Get its menu. */
|
||||
node = info_get_node (tag->filename, tag->nodename);
|
||||
if (!node)
|
||||
continue;
|
||||
|
||||
/* Remember the filename and nodename of this index. */
|
||||
initial_index_filename = xstrdup (file_buffer->filename);
|
||||
initial_index_nodename = xstrdup (tag->nodename);
|
||||
|
||||
menu = info_menu_of_node (node);
|
||||
|
||||
/* If we have a menu, add this index's nodename and range
|
||||
to our list of index_nodenames. */
|
||||
if (menu)
|
||||
{
|
||||
add_index_to_index_nodenames (menu, node);
|
||||
|
||||
/* Concatenate the references found so far. */
|
||||
result = info_concatenate_references (result, menu);
|
||||
}
|
||||
free (node);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* If there is a result, clean it up so that every entry has a filename. */
|
||||
for (i = 0; result && result[i]; i++)
|
||||
if (!result[i]->filename)
|
||||
result[i]->filename = xstrdup (file_buffer->filename);
|
||||
|
||||
return (result);
|
||||
}
|
||||
|
||||
DECLARE_INFO_COMMAND (info_index_search,
|
||||
_("Look up a string in the index for this file"))
|
||||
{
|
||||
do_info_index_search (window, count, 0);
|
||||
}
|
||||
|
||||
/* Look up SEARCH_STRING in the index for this file. If SEARCH_STRING
|
||||
is NULL, prompt user for input. */
|
||||
void
|
||||
do_info_index_search (WINDOW *window, int count, char *search_string)
|
||||
{
|
||||
FILE_BUFFER *fb;
|
||||
char *line;
|
||||
|
||||
/* Reset the index offset, since this is not the info-index-next command. */
|
||||
index_offset = 0;
|
||||
|
||||
/* The user is selecting a new search string, so flush the old one. */
|
||||
maybe_free (index_search);
|
||||
index_search = (char *)NULL;
|
||||
|
||||
/* If this window's file is not the same as the one that we last built an
|
||||
index for, build and remember an index now. */
|
||||
fb = file_buffer_of_window (window);
|
||||
if (!initial_index_filename ||
|
||||
(FILENAME_CMP (initial_index_filename, fb->filename) != 0))
|
||||
{
|
||||
info_free_references (index_index);
|
||||
window_message_in_echo_area ((char *) _("Finding index entries..."),
|
||||
NULL, NULL);
|
||||
index_index = info_indices_of_file_buffer (fb);
|
||||
}
|
||||
|
||||
/* If there is no index, quit now. */
|
||||
if (!index_index)
|
||||
{
|
||||
info_error ((char *) _("No indices found."), NULL, NULL);
|
||||
return;
|
||||
}
|
||||
|
||||
/* Okay, there is an index. Look for SEARCH_STRING, or, if it is
|
||||
empty, prompt for one. */
|
||||
if (search_string && *search_string)
|
||||
line = xstrdup (search_string);
|
||||
else
|
||||
{
|
||||
line = info_read_maybe_completing (window, (char *) _("Index entry: "),
|
||||
index_index);
|
||||
window = active_window;
|
||||
|
||||
/* User aborted? */
|
||||
if (!line)
|
||||
{
|
||||
info_abort_key (active_window, 1, 0);
|
||||
return;
|
||||
}
|
||||
|
||||
/* Empty line means move to the Index node. */
|
||||
if (!*line)
|
||||
{
|
||||
free (line);
|
||||
|
||||
if (initial_index_filename && initial_index_nodename)
|
||||
{
|
||||
NODE *node;
|
||||
|
||||
node = info_get_node (initial_index_filename,
|
||||
initial_index_nodename);
|
||||
set_remembered_pagetop_and_point (window);
|
||||
window_set_node_of_window (window, node);
|
||||
remember_window_and_node (window, node);
|
||||
window_clear_echo_area ();
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* The user typed either a completed index label, or a partial string.
|
||||
Find an exact match, or, failing that, the first index entry containing
|
||||
the partial string. So, we just call info_next_index_match () with minor
|
||||
manipulation of INDEX_OFFSET. */
|
||||
{
|
||||
int old_offset;
|
||||
|
||||
/* Start the search right after/before this index. */
|
||||
if (count < 0)
|
||||
{
|
||||
register int i;
|
||||
for (i = 0; index_index[i]; i++);
|
||||
index_offset = i;
|
||||
}
|
||||
else
|
||||
index_offset = -1;
|
||||
|
||||
old_offset = index_offset;
|
||||
|
||||
/* The "last" string searched for is this one. */
|
||||
index_search = line;
|
||||
|
||||
/* Find it, or error. */
|
||||
info_next_index_match (window, count, 0);
|
||||
|
||||
/* If the search failed, return the index offset to where it belongs. */
|
||||
if (index_offset == old_offset)
|
||||
index_offset = 0;
|
||||
}
|
||||
}
|
||||
|
||||
int
|
||||
index_entry_exists (WINDOW *window, char *string)
|
||||
{
|
||||
register int i;
|
||||
FILE_BUFFER *fb;
|
||||
|
||||
/* If there is no previous search string, the user hasn't built an index
|
||||
yet. */
|
||||
if (!string)
|
||||
return 0;
|
||||
|
||||
fb = file_buffer_of_window (window);
|
||||
if (!initial_index_filename
|
||||
|| (FILENAME_CMP (initial_index_filename, fb->filename) != 0))
|
||||
{
|
||||
info_free_references (index_index);
|
||||
index_index = info_indices_of_file_buffer (fb);
|
||||
}
|
||||
|
||||
/* If there is no index, that is an error. */
|
||||
if (!index_index)
|
||||
return 0;
|
||||
|
||||
for (i = 0; (i > -1) && (index_index[i]); i++)
|
||||
if (strcmp (string, index_index[i]->label) == 0)
|
||||
break;
|
||||
|
||||
/* If that failed, look for the next substring match. */
|
||||
if ((i < 0) || (!index_index[i]))
|
||||
{
|
||||
for (i = 0; (i > -1) && (index_index[i]); i++)
|
||||
if (string_in_line (string, index_index[i]->label) != -1)
|
||||
break;
|
||||
|
||||
if ((i > -1) && (index_index[i]))
|
||||
string_in_line (string, index_index[i]->label);
|
||||
}
|
||||
|
||||
/* If that failed, return 0. */
|
||||
if ((i < 0) || (!index_index[i]))
|
||||
return 0;
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
DECLARE_INFO_COMMAND (info_next_index_match,
|
||||
_("Go to the next matching index item from the last `\\[index-search]' command"))
|
||||
{
|
||||
register int i;
|
||||
int partial, dir;
|
||||
NODE *node;
|
||||
|
||||
/* If there is no previous search string, the user hasn't built an index
|
||||
yet. */
|
||||
if (!index_search)
|
||||
{
|
||||
info_error ((char *) _("No previous index search string."), NULL, NULL);
|
||||
return;
|
||||
}
|
||||
|
||||
/* If there is no index, that is an error. */
|
||||
if (!index_index)
|
||||
{
|
||||
info_error ((char *) _("No index entries."), NULL, NULL);
|
||||
return;
|
||||
}
|
||||
|
||||
/* The direction of this search is controlled by the value of the
|
||||
numeric argument. */
|
||||
if (count < 0)
|
||||
dir = -1;
|
||||
else
|
||||
dir = 1;
|
||||
|
||||
/* Search for the next occurence of index_search. First try to find
|
||||
an exact match. */
|
||||
partial = 0;
|
||||
|
||||
for (i = index_offset + dir; (i > -1) && (index_index[i]); i += dir)
|
||||
if (strcmp (index_search, index_index[i]->label) == 0)
|
||||
break;
|
||||
|
||||
/* If that failed, look for the next substring match. */
|
||||
if ((i < 0) || (!index_index[i]))
|
||||
{
|
||||
for (i = index_offset + dir; (i > -1) && (index_index[i]); i += dir)
|
||||
if (string_in_line (index_search, index_index[i]->label) != -1)
|
||||
break;
|
||||
|
||||
if ((i > -1) && (index_index[i]))
|
||||
partial = string_in_line (index_search, index_index[i]->label);
|
||||
}
|
||||
|
||||
/* If that failed, print an error. */
|
||||
if ((i < 0) || (!index_index[i]))
|
||||
{
|
||||
info_error ((char *) _("No %sindex entries containing `%s'."),
|
||||
index_offset > 0 ? (char *) _("more ") : "", index_search);
|
||||
return;
|
||||
}
|
||||
|
||||
/* Okay, we found the next one. Move the offset to the current entry. */
|
||||
index_offset = i;
|
||||
|
||||
/* Report to the user on what we have found. */
|
||||
{
|
||||
register int j;
|
||||
const char *name = _("CAN'T SEE THIS");
|
||||
char *match;
|
||||
|
||||
for (j = 0; index_nodenames[j]; j++)
|
||||
{
|
||||
if ((i >= index_nodenames[j]->first) &&
|
||||
(i <= index_nodenames[j]->last))
|
||||
{
|
||||
name = index_nodenames[j]->name;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
/* If we had a partial match, indicate to the user which part of the
|
||||
string matched. */
|
||||
match = xstrdup (index_index[i]->label);
|
||||
|
||||
if (partial && show_index_match)
|
||||
{
|
||||
int k, ls, start, upper;
|
||||
|
||||
ls = strlen (index_search);
|
||||
start = partial - ls;
|
||||
upper = isupper (match[start]) ? 1 : 0;
|
||||
|
||||
for (k = 0; k < ls; k++)
|
||||
if (upper)
|
||||
match[k + start] = info_tolower (match[k + start]);
|
||||
else
|
||||
match[k + start] = info_toupper (match[k + start]);
|
||||
}
|
||||
|
||||
{
|
||||
char *format;
|
||||
|
||||
format = replace_in_documentation
|
||||
((char *) _("Found `%s' in %s. (`\\[next-index-match]' tries to find next.)"),
|
||||
0);
|
||||
|
||||
window_message_in_echo_area (format, match, (char *) name);
|
||||
}
|
||||
|
||||
free (match);
|
||||
}
|
||||
|
||||
/* Select the node corresponding to this index entry. */
|
||||
node = info_get_node (index_index[i]->filename, index_index[i]->nodename);
|
||||
|
||||
if (!node)
|
||||
{
|
||||
info_error ((char *) msg_cant_file_node,
|
||||
index_index[i]->filename, index_index[i]->nodename);
|
||||
return;
|
||||
}
|
||||
|
||||
info_set_node_of_window (1, window, node);
|
||||
|
||||
/* Try to find an occurence of LABEL in this node. */
|
||||
{
|
||||
long start, loc;
|
||||
|
||||
start = window->line_starts[1] - window->node->contents;
|
||||
loc = info_target_search_node (node, index_index[i]->label, start);
|
||||
|
||||
if (loc != -1)
|
||||
{
|
||||
window->point = loc;
|
||||
window_adjust_pagetop (window);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* **************************************************************** */
|
||||
/* */
|
||||
/* Info APROPOS: Search every known index. */
|
||||
/* */
|
||||
/* **************************************************************** */
|
||||
|
||||
/* For every menu item in DIR, search the indices of that file for
|
||||
SEARCH_STRING. */
|
||||
REFERENCE **
|
||||
apropos_in_all_indices (char *search_string, int inform)
|
||||
{
|
||||
register int i, dir_index;
|
||||
REFERENCE **all_indices = (REFERENCE **)NULL;
|
||||
REFERENCE **dir_menu = (REFERENCE **)NULL;
|
||||
NODE *dir_node;
|
||||
|
||||
dir_node = info_get_node ("dir", "Top");
|
||||
if (dir_node)
|
||||
dir_menu = info_menu_of_node (dir_node);
|
||||
|
||||
if (!dir_menu)
|
||||
return NULL;
|
||||
|
||||
/* For every menu item in DIR, get the associated node's file buffer and
|
||||
read the indices of that file buffer. Gather all of the indices into
|
||||
one large one. */
|
||||
for (dir_index = 0; dir_menu[dir_index]; dir_index++)
|
||||
{
|
||||
REFERENCE **this_index, *this_item;
|
||||
NODE *this_node;
|
||||
FILE_BUFFER *this_fb;
|
||||
int dir_node_duplicated = 0;
|
||||
|
||||
this_item = dir_menu[dir_index];
|
||||
|
||||
if (!this_item->filename)
|
||||
{
|
||||
dir_node_duplicated = 1;
|
||||
if (dir_node->parent)
|
||||
this_item->filename = xstrdup (dir_node->parent);
|
||||
else
|
||||
this_item->filename = xstrdup (dir_node->filename);
|
||||
}
|
||||
|
||||
/* Find this node. If we cannot find it, try using the label of the
|
||||
entry as a file (i.e., "(LABEL)Top"). */
|
||||
this_node = info_get_node (this_item->filename, this_item->nodename);
|
||||
|
||||
if (!this_node && this_item->nodename &&
|
||||
(strcmp (this_item->label, this_item->nodename) == 0))
|
||||
this_node = info_get_node (this_item->label, "Top");
|
||||
|
||||
if (!this_node)
|
||||
{
|
||||
if (dir_node_duplicated)
|
||||
free (this_item->filename);
|
||||
continue;
|
||||
}
|
||||
|
||||
/* Get the file buffer associated with this node. */
|
||||
{
|
||||
char *files_name;
|
||||
|
||||
files_name = this_node->parent;
|
||||
if (!files_name)
|
||||
files_name = this_node->filename;
|
||||
|
||||
this_fb = info_find_file (files_name);
|
||||
|
||||
/* If we already scanned this file, don't do that again.
|
||||
In addition to being faster, this also avoids having
|
||||
multiple identical entries in the *Apropos* menu. */
|
||||
for (i = 0; i < dir_index; i++)
|
||||
if (FILENAME_CMP (this_fb->filename, dir_menu[i]->filename) == 0)
|
||||
break;
|
||||
if (i < dir_index)
|
||||
{
|
||||
if (dir_node_duplicated)
|
||||
free (this_item->filename);
|
||||
continue;
|
||||
}
|
||||
|
||||
if (this_fb && inform)
|
||||
message_in_echo_area ((char *) _("Scanning indices of `%s'..."),
|
||||
files_name, NULL);
|
||||
|
||||
this_index = info_indices_of_file_buffer (this_fb);
|
||||
free (this_node);
|
||||
|
||||
if (this_fb && inform)
|
||||
unmessage_in_echo_area ();
|
||||
}
|
||||
|
||||
if (this_index)
|
||||
{
|
||||
/* Remember the filename which contains this set of references. */
|
||||
for (i = 0; this_index && this_index[i]; i++)
|
||||
if (!this_index[i]->filename)
|
||||
this_index[i]->filename = xstrdup (this_fb->filename);
|
||||
|
||||
/* Concatenate with the other indices. */
|
||||
all_indices = info_concatenate_references (all_indices, this_index);
|
||||
}
|
||||
}
|
||||
|
||||
info_free_references (dir_menu);
|
||||
|
||||
/* Build a list of the references which contain SEARCH_STRING. */
|
||||
if (all_indices)
|
||||
{
|
||||
REFERENCE *entry, **apropos_list = (REFERENCE **)NULL;
|
||||
int apropos_list_index = 0;
|
||||
int apropos_list_slots = 0;
|
||||
|
||||
for (i = 0; (entry = all_indices[i]); i++)
|
||||
{
|
||||
if (string_in_line (search_string, entry->label) != -1)
|
||||
{
|
||||
add_pointer_to_array
|
||||
(entry, apropos_list_index, apropos_list, apropos_list_slots,
|
||||
100, REFERENCE *);
|
||||
}
|
||||
else
|
||||
{
|
||||
maybe_free (entry->label);
|
||||
maybe_free (entry->filename);
|
||||
maybe_free (entry->nodename);
|
||||
free (entry);
|
||||
}
|
||||
}
|
||||
|
||||
free (all_indices);
|
||||
all_indices = apropos_list;
|
||||
}
|
||||
return (all_indices);
|
||||
}
|
||||
|
||||
#define APROPOS_NONE \
|
||||
N_("No available info files have `%s' in their indices.")
|
||||
|
||||
void
|
||||
info_apropos (char *string)
|
||||
{
|
||||
REFERENCE **apropos_list;
|
||||
|
||||
apropos_list = apropos_in_all_indices (string, 0);
|
||||
|
||||
if (!apropos_list)
|
||||
info_error ((char *) _(APROPOS_NONE), string, NULL);
|
||||
else
|
||||
{
|
||||
register int i;
|
||||
REFERENCE *entry;
|
||||
|
||||
for (i = 0; (entry = apropos_list[i]); i++)
|
||||
fprintf (stdout, "\"(%s)%s\" -- %s\n",
|
||||
entry->filename, entry->nodename, entry->label);
|
||||
}
|
||||
info_free_references (apropos_list);
|
||||
}
|
||||
|
||||
static char *apropos_list_nodename = "*Apropos*";
|
||||
|
||||
DECLARE_INFO_COMMAND (info_index_apropos,
|
||||
_("Grovel all known info file's indices for a string and build a menu"))
|
||||
{
|
||||
char *line;
|
||||
|
||||
line = info_read_in_echo_area (window, (char *) _("Index apropos: "));
|
||||
|
||||
window = active_window;
|
||||
|
||||
/* User aborted? */
|
||||
if (!line)
|
||||
{
|
||||
info_abort_key (window, 1, 1);
|
||||
return;
|
||||
}
|
||||
|
||||
/* User typed something? */
|
||||
if (*line)
|
||||
{
|
||||
REFERENCE **apropos_list;
|
||||
NODE *apropos_node;
|
||||
|
||||
apropos_list = apropos_in_all_indices (line, 1);
|
||||
|
||||
if (!apropos_list)
|
||||
info_error ((char *) _(APROPOS_NONE), line, NULL);
|
||||
else
|
||||
{
|
||||
register int i;
|
||||
char *line_buffer;
|
||||
|
||||
initialize_message_buffer ();
|
||||
printf_to_message_buffer
|
||||
((char *) _("\n* Menu: Nodes whose indices contain `%s':\n"),
|
||||
line, NULL, NULL);
|
||||
line_buffer = (char *)xmalloc (500);
|
||||
|
||||
for (i = 0; apropos_list[i]; i++)
|
||||
{
|
||||
int len;
|
||||
/* The label might be identical to that of another index
|
||||
entry in another Info file. Therefore, we make the file
|
||||
name part of the menu entry, to make them all distinct. */
|
||||
sprintf (line_buffer, "* %s [%s]: ",
|
||||
apropos_list[i]->label, apropos_list[i]->filename);
|
||||
len = pad_to (40, line_buffer);
|
||||
sprintf (line_buffer + len, "(%s)%s.",
|
||||
apropos_list[i]->filename, apropos_list[i]->nodename);
|
||||
printf_to_message_buffer ("%s\n", line_buffer, NULL, NULL);
|
||||
}
|
||||
free (line_buffer);
|
||||
}
|
||||
|
||||
apropos_node = message_buffer_to_node ();
|
||||
add_gcable_pointer (apropos_node->contents);
|
||||
name_internal_node (apropos_node, apropos_list_nodename);
|
||||
|
||||
/* Even though this is an internal node, we don't want the window
|
||||
system to treat it specially. So we turn off the internalness
|
||||
of it here. */
|
||||
apropos_node->flags &= ~N_IsInternal;
|
||||
|
||||
/* Find/Create a window to contain this node. */
|
||||
{
|
||||
WINDOW *new;
|
||||
NODE *node;
|
||||
|
||||
set_remembered_pagetop_and_point (window);
|
||||
|
||||
/* If a window is visible and showing an apropos list already,
|
||||
re-use it. */
|
||||
for (new = windows; new; new = new->next)
|
||||
{
|
||||
node = new->node;
|
||||
|
||||
if (internal_info_node_p (node) &&
|
||||
(strcmp (node->nodename, apropos_list_nodename) == 0))
|
||||
break;
|
||||
}
|
||||
|
||||
/* If we couldn't find an existing window, try to use the next window
|
||||
in the chain. */
|
||||
if (!new && window->next)
|
||||
new = window->next;
|
||||
|
||||
/* If we still don't have a window, make a new one to contain
|
||||
the list. */
|
||||
if (!new)
|
||||
{
|
||||
WINDOW *old_active;
|
||||
|
||||
old_active = active_window;
|
||||
active_window = window;
|
||||
new = window_make_window ((NODE *)NULL);
|
||||
active_window = old_active;
|
||||
}
|
||||
|
||||
/* If we couldn't make a new window, use this one. */
|
||||
if (!new)
|
||||
new = window;
|
||||
|
||||
/* Lines do not wrap in this window. */
|
||||
new->flags |= W_NoWrap;
|
||||
|
||||
window_set_node_of_window (new, apropos_node);
|
||||
remember_window_and_node (new, apropos_node);
|
||||
active_window = new;
|
||||
}
|
||||
info_free_references (apropos_list);
|
||||
}
|
||||
free (line);
|
||||
|
||||
if (!info_error_was_printed)
|
||||
window_clear_echo_area ();
|
||||
}
|
47
external/gpl2/texinfo/dist/info/indices.h
vendored
Normal file
47
external/gpl2/texinfo/dist/info/indices.h
vendored
Normal file
@ -0,0 +1,47 @@
|
||||
/* $NetBSD: indices.h,v 1.1.1.1 2016/01/14 00:11:29 christos Exp $ */
|
||||
|
||||
/* indices.h -- Functions defined in indices.c.
|
||||
Id: indices.h,v 1.3 2004/04/11 17:56:45 karl Exp
|
||||
|
||||
This file is part of GNU Info, a program for reading online documentation
|
||||
stored in Info format.
|
||||
|
||||
Copyright (C) 1993, 1997, 2004 Free Software Foundation, Inc.
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2, or (at your option)
|
||||
any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program; if not, write to the Free Software
|
||||
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
|
||||
Written by Brian Fox (bfox@ai.mit.edu). */
|
||||
|
||||
#ifndef INFO_INDICES_H
|
||||
#define INFO_INDICES_H
|
||||
|
||||
/* User-visible variable controls the output of info-index-next. */
|
||||
extern int show_index_match;
|
||||
|
||||
extern REFERENCE **info_indices_of_window (WINDOW *window);
|
||||
extern REFERENCE **info_indices_of_file_buffer (FILE_BUFFER *file_buffer);
|
||||
extern void info_apropos (char *string);
|
||||
|
||||
/* For every menu item in DIR, search the indices of that file for STRING. */
|
||||
REFERENCE **apropos_in_all_indices (char *search_string, int inform);
|
||||
|
||||
/* User visible functions declared in indices.c. */
|
||||
extern void info_index_search (WINDOW *window, int count, unsigned char key);
|
||||
extern void info_next_index_match (WINDOW *window, int count, unsigned char key);
|
||||
extern void info_index_apropos (WINDOW *window, int count, unsigned char key);
|
||||
extern void do_info_index_search (WINDOW *window, int count, char *search_string);
|
||||
extern int index_entry_exists (WINDOW *window, char *string);
|
||||
|
||||
#endif /* not INFO_INDICES_H */
|
703
external/gpl2/texinfo/dist/info/info-utils.c
vendored
Normal file
703
external/gpl2/texinfo/dist/info/info-utils.c
vendored
Normal file
@ -0,0 +1,703 @@
|
||||
/* $NetBSD: info-utils.c,v 1.1.1.1 2016/01/14 00:11:29 christos Exp $ */
|
||||
|
||||
/* info-utils.c -- miscellanous.
|
||||
Id: info-utils.c,v 1.4 2004/04/11 17:56:45 karl Exp
|
||||
|
||||
Copyright (C) 1993, 1998, 2003, 2004 Free Software Foundation, Inc.
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2, or (at your option)
|
||||
any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program; if not, write to the Free Software
|
||||
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
|
||||
Originally written by Brian Fox (bfox@ai.mit.edu). */
|
||||
|
||||
#include "info.h"
|
||||
#include "info-utils.h"
|
||||
#if defined (HANDLE_MAN_PAGES)
|
||||
# include "man.h"
|
||||
#endif /* HANDLE_MAN_PAGES */
|
||||
|
||||
/* When non-zero, various display and input functions handle ISO Latin
|
||||
character sets correctly. */
|
||||
int ISO_Latin_p = 1;
|
||||
|
||||
/* Variable which holds the most recent filename parsed as a result of
|
||||
calling info_parse_xxx (). */
|
||||
char *info_parsed_filename = (char *)NULL;
|
||||
|
||||
/* Variable which holds the most recent nodename parsed as a result of
|
||||
calling info_parse_xxx (). */
|
||||
char *info_parsed_nodename = (char *)NULL;
|
||||
|
||||
/* Variable which holds the most recent line number parsed as a result of
|
||||
calling info_parse_xxx (). */
|
||||
int info_parsed_line_number = 0;
|
||||
|
||||
/* Functions to remember a filename or nodename for later return. */
|
||||
static void save_filename (char *filename);
|
||||
static void saven_filename (char *filename, int len);
|
||||
static void save_nodename (char *nodename);
|
||||
static void saven_nodename (char *nodename, int len);
|
||||
|
||||
/* How to get a reference (either menu or cross). */
|
||||
static REFERENCE **info_references_internal (char *label,
|
||||
SEARCH_BINDING *binding);
|
||||
|
||||
/* Parse the filename and nodename out of STRING. If STRING doesn't
|
||||
contain a filename (i.e., it is NOT (FILENAME)NODENAME) then set
|
||||
INFO_PARSED_FILENAME to NULL. If second argument NEWLINES_OKAY is
|
||||
non-zero, it says to allow the nodename specification to cross a
|
||||
newline boundary (i.e., only `,', `.', or `TAB' can end the spec). */
|
||||
void
|
||||
info_parse_node (char *string, int newlines_okay)
|
||||
{
|
||||
register int i = 0;
|
||||
|
||||
/* Default the answer. */
|
||||
save_filename ((char *)NULL);
|
||||
save_nodename ((char *)NULL);
|
||||
|
||||
/* Special case of nothing passed. Return nothing. */
|
||||
if (!string || !*string)
|
||||
return;
|
||||
|
||||
string += skip_whitespace (string);
|
||||
|
||||
/* Check for (FILENAME)NODENAME. */
|
||||
if (*string == '(')
|
||||
{
|
||||
i = 0;
|
||||
/* Advance past the opening paren. */
|
||||
string++;
|
||||
|
||||
/* Find the closing paren. */
|
||||
while (string[i] && string[i] != ')')
|
||||
i++;
|
||||
|
||||
/* Remember parsed filename. */
|
||||
saven_filename (string, i);
|
||||
|
||||
/* Point directly at the nodename. */
|
||||
string += i;
|
||||
|
||||
if (*string)
|
||||
string++;
|
||||
}
|
||||
|
||||
/* Parse out nodename. */
|
||||
i = skip_node_characters (string, newlines_okay);
|
||||
saven_nodename (string, i);
|
||||
canonicalize_whitespace (info_parsed_nodename);
|
||||
if (info_parsed_nodename && !*info_parsed_nodename)
|
||||
{
|
||||
free (info_parsed_nodename);
|
||||
info_parsed_nodename = (char *)NULL;
|
||||
}
|
||||
|
||||
/* Parse ``(line ...)'' part of menus, if any. */
|
||||
{
|
||||
char *rest = string + i;
|
||||
|
||||
/* Advance only if it's not already at end of string. */
|
||||
if (*rest)
|
||||
rest++;
|
||||
|
||||
/* Skip any whitespace first, and then a newline in case the item
|
||||
was so long to contain the ``(line ...)'' string in the same
|
||||
physical line. */
|
||||
while (whitespace(*rest))
|
||||
rest++;
|
||||
if (*rest == '\n')
|
||||
{
|
||||
rest++;
|
||||
while (whitespace(*rest))
|
||||
rest++;
|
||||
}
|
||||
|
||||
/* Are we looking at an opening parenthesis? That can only mean
|
||||
we have a winner. :) */
|
||||
if (strncmp (rest, "(line ", strlen ("(line ")) == 0)
|
||||
{
|
||||
rest += strlen ("(line ");
|
||||
info_parsed_line_number = strtol (rest, NULL, 0);
|
||||
}
|
||||
else
|
||||
info_parsed_line_number = 0;
|
||||
}
|
||||
}
|
||||
|
||||
/* Return the node addressed by LABEL in NODE (usually one of "Prev:",
|
||||
"Next:", "Up:", "File:", or "Node:". After a call to this function,
|
||||
the global INFO_PARSED_NODENAME and INFO_PARSED_FILENAME contain
|
||||
the information. */
|
||||
void
|
||||
info_parse_label (char *label, NODE *node)
|
||||
{
|
||||
register int i;
|
||||
char *nodeline;
|
||||
|
||||
/* Default answer to failure. */
|
||||
save_nodename ((char *)NULL);
|
||||
save_filename ((char *)NULL);
|
||||
|
||||
/* Find the label in the first line of this node. */
|
||||
nodeline = node->contents;
|
||||
i = string_in_line (label, nodeline);
|
||||
|
||||
if (i == -1)
|
||||
return;
|
||||
|
||||
nodeline += i;
|
||||
nodeline += skip_whitespace (nodeline);
|
||||
info_parse_node (nodeline, DONT_SKIP_NEWLINES);
|
||||
}
|
||||
|
||||
/* **************************************************************** */
|
||||
/* */
|
||||
/* Finding and Building Menus */
|
||||
/* */
|
||||
/* **************************************************************** */
|
||||
|
||||
/* Return a NULL terminated array of REFERENCE * which represents the menu
|
||||
found in NODE. If there is no menu in NODE, just return a NULL pointer. */
|
||||
REFERENCE **
|
||||
info_menu_of_node (NODE *node)
|
||||
{
|
||||
long position;
|
||||
SEARCH_BINDING tmp_search;
|
||||
REFERENCE **menu = (REFERENCE **)NULL;
|
||||
|
||||
tmp_search.buffer = node->contents;
|
||||
tmp_search.start = 0;
|
||||
tmp_search.end = node->nodelen;
|
||||
tmp_search.flags = S_FoldCase;
|
||||
|
||||
/* Find the start of the menu. */
|
||||
position = search_forward (INFO_MENU_LABEL, &tmp_search);
|
||||
|
||||
if (position == -1)
|
||||
return ((REFERENCE **) NULL);
|
||||
|
||||
/* We have the start of the menu now. Glean menu items from the rest
|
||||
of the node. */
|
||||
tmp_search.start = position + strlen (INFO_MENU_LABEL);
|
||||
tmp_search.start += skip_line (tmp_search.buffer + tmp_search.start);
|
||||
tmp_search.start--;
|
||||
menu = info_menu_items (&tmp_search);
|
||||
return (menu);
|
||||
}
|
||||
|
||||
/* Return a NULL terminated array of REFERENCE * which represents the cross
|
||||
refrences found in NODE. If there are no cross references in NODE, just
|
||||
return a NULL pointer. */
|
||||
REFERENCE **
|
||||
info_xrefs_of_node (NODE *node)
|
||||
{
|
||||
SEARCH_BINDING tmp_search;
|
||||
|
||||
#if defined (HANDLE_MAN_PAGES)
|
||||
if (node->flags & N_IsManPage)
|
||||
return (xrefs_of_manpage (node));
|
||||
#endif
|
||||
|
||||
tmp_search.buffer = node->contents;
|
||||
tmp_search.start = 0;
|
||||
tmp_search.end = node->nodelen;
|
||||
tmp_search.flags = S_FoldCase;
|
||||
|
||||
return (info_xrefs (&tmp_search));
|
||||
}
|
||||
|
||||
/* Glean menu entries from BINDING->buffer + BINDING->start until we
|
||||
have looked at the entire contents of BINDING. Return an array
|
||||
of REFERENCE * that represents each menu item in this range. */
|
||||
REFERENCE **
|
||||
info_menu_items (SEARCH_BINDING *binding)
|
||||
{
|
||||
return (info_references_internal (INFO_MENU_ENTRY_LABEL, binding));
|
||||
}
|
||||
|
||||
/* Glean cross references from BINDING->buffer + BINDING->start until
|
||||
BINDING->end. Return an array of REFERENCE * that represents each
|
||||
cross reference in this range. */
|
||||
REFERENCE **
|
||||
info_xrefs (SEARCH_BINDING *binding)
|
||||
{
|
||||
return (info_references_internal (INFO_XREF_LABEL, binding));
|
||||
}
|
||||
|
||||
/* Glean cross references or menu items from BINDING. Return an array
|
||||
of REFERENCE * that represents the items found. */
|
||||
static REFERENCE **
|
||||
info_references_internal (char *label, SEARCH_BINDING *binding)
|
||||
{
|
||||
SEARCH_BINDING tmp_search;
|
||||
REFERENCE **refs = (REFERENCE **)NULL;
|
||||
int refs_index = 0, refs_slots = 0;
|
||||
int searching_for_menu_items = 0;
|
||||
long position;
|
||||
|
||||
tmp_search.buffer = binding->buffer;
|
||||
tmp_search.start = binding->start;
|
||||
tmp_search.end = binding->end;
|
||||
tmp_search.flags = S_FoldCase | S_SkipDest;
|
||||
|
||||
searching_for_menu_items = (strcasecmp (label, INFO_MENU_ENTRY_LABEL) == 0);
|
||||
|
||||
while ((position = search_forward (label, &tmp_search)) != -1)
|
||||
{
|
||||
int offset, start;
|
||||
char *refdef;
|
||||
REFERENCE *entry;
|
||||
|
||||
tmp_search.start = position;
|
||||
tmp_search.start += skip_whitespace (tmp_search.buffer + tmp_search.start);
|
||||
start = tmp_search.start - binding->start;
|
||||
refdef = tmp_search.buffer + tmp_search.start;
|
||||
offset = string_in_line (":", refdef);
|
||||
|
||||
/* When searching for menu items, if no colon, there is no
|
||||
menu item on this line. */
|
||||
if (offset == -1)
|
||||
{
|
||||
if (searching_for_menu_items)
|
||||
continue;
|
||||
else
|
||||
{
|
||||
int temp;
|
||||
|
||||
temp = skip_line (refdef);
|
||||
offset = string_in_line (":", refdef + temp);
|
||||
if (offset == -1)
|
||||
continue; /* Give up? */
|
||||
else
|
||||
offset += temp;
|
||||
}
|
||||
}
|
||||
|
||||
entry = (REFERENCE *)xmalloc (sizeof (REFERENCE));
|
||||
entry->filename = (char *)NULL;
|
||||
entry->nodename = (char *)NULL;
|
||||
entry->label = (char *)xmalloc (offset);
|
||||
strncpy (entry->label, refdef, offset - 1);
|
||||
entry->label[offset - 1] = '\0';
|
||||
canonicalize_whitespace (entry->label);
|
||||
|
||||
refdef += offset;
|
||||
entry->start = start;
|
||||
entry->end = refdef - binding->buffer;
|
||||
|
||||
/* If this reference entry continues with another ':' then the
|
||||
nodename is the same as the label. */
|
||||
if (*refdef == ':')
|
||||
{
|
||||
entry->nodename = xstrdup (entry->label);
|
||||
}
|
||||
else
|
||||
{
|
||||
/* This entry continues with a specific nodename. Parse the
|
||||
nodename from the specification. */
|
||||
|
||||
refdef += skip_whitespace_and_newlines (refdef);
|
||||
|
||||
if (searching_for_menu_items)
|
||||
info_parse_node (refdef, DONT_SKIP_NEWLINES);
|
||||
else
|
||||
info_parse_node (refdef, SKIP_NEWLINES);
|
||||
|
||||
if (info_parsed_filename)
|
||||
entry->filename = xstrdup (info_parsed_filename);
|
||||
|
||||
if (info_parsed_nodename)
|
||||
entry->nodename = xstrdup (info_parsed_nodename);
|
||||
|
||||
entry->line_number = info_parsed_line_number;
|
||||
}
|
||||
|
||||
add_pointer_to_array
|
||||
(entry, refs_index, refs, refs_slots, 50, REFERENCE *);
|
||||
}
|
||||
return (refs);
|
||||
}
|
||||
|
||||
/* Get the entry associated with LABEL in REFERENCES. Return a pointer
|
||||
to the ENTRY if found, or NULL. */
|
||||
REFERENCE *
|
||||
info_get_labeled_reference (char *label, REFERENCE **references)
|
||||
{
|
||||
register int i;
|
||||
REFERENCE *entry;
|
||||
|
||||
for (i = 0; references && (entry = references[i]); i++)
|
||||
{
|
||||
if (strcmp (label, entry->label) == 0)
|
||||
return (entry);
|
||||
}
|
||||
return ((REFERENCE *)NULL);
|
||||
}
|
||||
|
||||
/* A utility function for concatenating REFERENCE **. Returns a new
|
||||
REFERENCE ** which is the concatenation of REF1 and REF2. The REF1
|
||||
and REF2 arrays are freed, but their contents are not. */
|
||||
REFERENCE **
|
||||
info_concatenate_references (REFERENCE **ref1, REFERENCE **ref2)
|
||||
{
|
||||
register int i, j;
|
||||
REFERENCE **result;
|
||||
int size;
|
||||
|
||||
/* With one argument passed as NULL, simply return the other arg. */
|
||||
if (!ref1)
|
||||
return (ref2);
|
||||
else if (!ref2)
|
||||
return (ref1);
|
||||
|
||||
/* Get the total size of the slots that we will need. */
|
||||
for (i = 0; ref1[i]; i++);
|
||||
size = i;
|
||||
for (i = 0; ref2[i]; i++);
|
||||
size += i;
|
||||
|
||||
result = (REFERENCE **)xmalloc ((1 + size) * sizeof (REFERENCE *));
|
||||
|
||||
/* Copy the contents over. */
|
||||
for (i = 0; ref1[i]; i++)
|
||||
result[i] = ref1[i];
|
||||
|
||||
j = i;
|
||||
for (i = 0; ref2[i]; i++)
|
||||
result[j++] = ref2[i];
|
||||
|
||||
result[j] = (REFERENCE *)NULL;
|
||||
free (ref1);
|
||||
free (ref2);
|
||||
return (result);
|
||||
}
|
||||
|
||||
|
||||
|
||||
/* Copy a reference structure. Since we tend to free everything at
|
||||
every opportunity, we don't share any points, but copy everything into
|
||||
new memory. */
|
||||
REFERENCE *
|
||||
info_copy_reference (REFERENCE *src)
|
||||
{
|
||||
REFERENCE *dest = xmalloc (sizeof (REFERENCE));
|
||||
dest->label = src->label ? xstrdup (src->label) : NULL;
|
||||
dest->filename = src->filename ? xstrdup (src->filename) : NULL;
|
||||
dest->nodename = src->nodename ? xstrdup (src->nodename) : NULL;
|
||||
dest->start = src->start;
|
||||
dest->end = src->end;
|
||||
|
||||
return dest;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/* Free the data associated with REFERENCES. */
|
||||
void
|
||||
info_free_references (REFERENCE **references)
|
||||
{
|
||||
register int i;
|
||||
REFERENCE *entry;
|
||||
|
||||
if (references)
|
||||
{
|
||||
for (i = 0; references && (entry = references[i]); i++)
|
||||
{
|
||||
maybe_free (entry->label);
|
||||
maybe_free (entry->filename);
|
||||
maybe_free (entry->nodename);
|
||||
|
||||
free (entry);
|
||||
}
|
||||
|
||||
free (references);
|
||||
}
|
||||
}
|
||||
|
||||
/* Search for sequences of whitespace or newlines in STRING, replacing
|
||||
all such sequences with just a single space. Remove whitespace from
|
||||
start and end of string. */
|
||||
void
|
||||
canonicalize_whitespace (char *string)
|
||||
{
|
||||
register int i, j;
|
||||
int len, whitespace_found, whitespace_loc = 0;
|
||||
char *temp;
|
||||
|
||||
if (!string)
|
||||
return;
|
||||
|
||||
len = strlen (string);
|
||||
temp = (char *)xmalloc (1 + len);
|
||||
|
||||
/* Search for sequences of whitespace or newlines. Replace all such
|
||||
sequences in the string with just a single space. */
|
||||
|
||||
whitespace_found = 0;
|
||||
for (i = 0, j = 0; string[i]; i++)
|
||||
{
|
||||
if (whitespace_or_newline (string[i]))
|
||||
{
|
||||
whitespace_found++;
|
||||
whitespace_loc = i;
|
||||
continue;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (whitespace_found && whitespace_loc)
|
||||
{
|
||||
whitespace_found = 0;
|
||||
|
||||
/* Suppress whitespace at start of string. */
|
||||
if (j)
|
||||
temp[j++] = ' ';
|
||||
}
|
||||
|
||||
temp[j++] = string[i];
|
||||
}
|
||||
}
|
||||
|
||||
/* Kill trailing whitespace. */
|
||||
if (j && whitespace (temp[j - 1]))
|
||||
j--;
|
||||
|
||||
temp[j] = '\0';
|
||||
strcpy (string, temp);
|
||||
free (temp);
|
||||
}
|
||||
|
||||
/* String representation of a char returned by printed_representation (). */
|
||||
static char the_rep[10];
|
||||
|
||||
/* Return a pointer to a string which is the printed representation
|
||||
of CHARACTER if it were printed at HPOS. */
|
||||
char *
|
||||
printed_representation (unsigned char character, int hpos)
|
||||
{
|
||||
register int i = 0;
|
||||
int printable_limit = ISO_Latin_p ? 255 : 127;
|
||||
|
||||
if (raw_escapes_p && character == '\033')
|
||||
the_rep[i++] = character;
|
||||
/* Show CTRL-x as ^X. */
|
||||
else if (iscntrl (character) && character < 127)
|
||||
{
|
||||
switch (character)
|
||||
{
|
||||
case '\r':
|
||||
case '\n':
|
||||
the_rep[i++] = character;
|
||||
break;
|
||||
|
||||
case '\t':
|
||||
{
|
||||
int tw;
|
||||
|
||||
tw = ((hpos + 8) & 0xf8) - hpos;
|
||||
while (i < tw)
|
||||
the_rep[i++] = ' ';
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
the_rep[i++] = '^';
|
||||
the_rep[i++] = (character | 0x40);
|
||||
}
|
||||
}
|
||||
/* Show META-x as 0370. */
|
||||
else if (character > printable_limit)
|
||||
{
|
||||
sprintf (the_rep + i, "\\%0o", character);
|
||||
i = strlen (the_rep);
|
||||
}
|
||||
else if (character == DEL)
|
||||
{
|
||||
the_rep[i++] = '^';
|
||||
the_rep[i++] = '?';
|
||||
}
|
||||
else
|
||||
the_rep[i++] = character;
|
||||
|
||||
the_rep[i] = 0;
|
||||
|
||||
return the_rep;
|
||||
}
|
||||
|
||||
|
||||
/* **************************************************************** */
|
||||
/* */
|
||||
/* Functions Static To This File */
|
||||
/* */
|
||||
/* **************************************************************** */
|
||||
|
||||
/* Amount of space allocated to INFO_PARSED_FILENAME via xmalloc (). */
|
||||
static int parsed_filename_size = 0;
|
||||
|
||||
/* Amount of space allocated to INFO_PARSED_NODENAME via xmalloc (). */
|
||||
static int parsed_nodename_size = 0;
|
||||
|
||||
static void save_string (char *string, char **string_p, int *string_size_p);
|
||||
static void saven_string (char *string, int len, char **string_p,
|
||||
int *string_size_p);
|
||||
|
||||
/* Remember FILENAME in PARSED_FILENAME. An empty FILENAME is translated
|
||||
to a NULL pointer in PARSED_FILENAME. */
|
||||
static void
|
||||
save_filename (char *filename)
|
||||
{
|
||||
save_string (filename, &info_parsed_filename, &parsed_filename_size);
|
||||
}
|
||||
|
||||
/* Just like save_filename (), but you pass the length of the string. */
|
||||
static void
|
||||
saven_filename (char *filename, int len)
|
||||
{
|
||||
saven_string (filename, len,
|
||||
&info_parsed_filename, &parsed_filename_size);
|
||||
}
|
||||
|
||||
/* Remember NODENAME in PARSED_NODENAME. An empty NODENAME is translated
|
||||
to a NULL pointer in PARSED_NODENAME. */
|
||||
static void
|
||||
save_nodename (char *nodename)
|
||||
{
|
||||
save_string (nodename, &info_parsed_nodename, &parsed_nodename_size);
|
||||
}
|
||||
|
||||
/* Just like save_nodename (), but you pass the length of the string. */
|
||||
static void
|
||||
saven_nodename (char *nodename, int len)
|
||||
{
|
||||
saven_string (nodename, len,
|
||||
&info_parsed_nodename, &parsed_nodename_size);
|
||||
}
|
||||
|
||||
/* Remember STRING in STRING_P. STRING_P should currently have STRING_SIZE_P
|
||||
bytes allocated to it. An empty STRING is translated to a NULL pointer
|
||||
in STRING_P. */
|
||||
static void
|
||||
save_string (char *string, char **string_p, int *string_size_p)
|
||||
{
|
||||
if (!string || !*string)
|
||||
{
|
||||
if (*string_p)
|
||||
free (*string_p);
|
||||
|
||||
*string_p = (char *)NULL;
|
||||
*string_size_p = 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (strlen (string) >= (unsigned int) *string_size_p)
|
||||
*string_p = (char *)xrealloc
|
||||
(*string_p, (*string_size_p = 1 + strlen (string)));
|
||||
|
||||
strcpy (*string_p, string);
|
||||
}
|
||||
}
|
||||
|
||||
/* Just like save_string (), but you also pass the length of STRING. */
|
||||
static void
|
||||
saven_string (char *string, int len, char **string_p, int *string_size_p)
|
||||
{
|
||||
if (!string)
|
||||
{
|
||||
if (*string_p)
|
||||
free (*string_p);
|
||||
|
||||
*string_p = (char *)NULL;
|
||||
*string_size_p = 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (len >= *string_size_p)
|
||||
*string_p = (char *)xrealloc (*string_p, (*string_size_p = 1 + len));
|
||||
|
||||
strncpy (*string_p, string, len);
|
||||
(*string_p)[len] = '\0';
|
||||
}
|
||||
}
|
||||
|
||||
/* Return a pointer to the part of PATHNAME that simply defines the file. */
|
||||
char *
|
||||
filename_non_directory (char *pathname)
|
||||
{
|
||||
register char *filename = pathname + strlen (pathname);
|
||||
|
||||
if (HAVE_DRIVE (pathname))
|
||||
pathname += 2;
|
||||
|
||||
while (filename > pathname && !IS_SLASH (filename[-1]))
|
||||
filename--;
|
||||
|
||||
return (filename);
|
||||
}
|
||||
|
||||
/* Return non-zero if NODE is one especially created by Info. */
|
||||
int
|
||||
internal_info_node_p (NODE *node)
|
||||
{
|
||||
#if defined (NEVER)
|
||||
if (node &&
|
||||
(node->filename && !*node->filename) &&
|
||||
!node->parent && node->nodename)
|
||||
return (1);
|
||||
else
|
||||
return (0);
|
||||
#else
|
||||
return ((node != (NODE *)NULL) && ((node->flags & N_IsInternal) != 0));
|
||||
#endif /* !NEVER */
|
||||
}
|
||||
|
||||
/* Make NODE appear to be one especially created by Info. */
|
||||
void
|
||||
name_internal_node (NODE *node, char *name)
|
||||
{
|
||||
if (!node)
|
||||
return;
|
||||
|
||||
node->filename = "";
|
||||
node->parent = (char *)NULL;
|
||||
node->nodename = name;
|
||||
node->flags |= N_IsInternal;
|
||||
}
|
||||
|
||||
/* Return the window displaying NAME, the name of an internally created
|
||||
Info window. */
|
||||
WINDOW *
|
||||
get_internal_info_window (char *name)
|
||||
{
|
||||
WINDOW *win;
|
||||
|
||||
for (win = windows; win; win = win->next)
|
||||
if (internal_info_node_p (win->node) &&
|
||||
(strcmp (win->node->nodename, name) == 0))
|
||||
break;
|
||||
|
||||
return (win);
|
||||
}
|
||||
|
||||
/* Return a window displaying the node NODE. */
|
||||
WINDOW *
|
||||
get_window_of_node (NODE *node)
|
||||
{
|
||||
WINDOW *win = (WINDOW *)NULL;
|
||||
|
||||
for (win = windows; win; win = win->next)
|
||||
if (win->node == node)
|
||||
break;
|
||||
|
||||
return (win);
|
||||
}
|
138
external/gpl2/texinfo/dist/info/info-utils.h
vendored
Normal file
138
external/gpl2/texinfo/dist/info/info-utils.h
vendored
Normal file
@ -0,0 +1,138 @@
|
||||
/* $NetBSD: info-utils.h,v 1.1.1.1 2016/01/14 00:11:29 christos Exp $ */
|
||||
|
||||
/* info-utils.h -- Exported functions and variables from info-utils.c.
|
||||
Id: info-utils.h,v 1.4 2004/04/11 17:56:45 karl Exp
|
||||
|
||||
Copyright (C) 1993, 1996, 1998, 2002, 2003, 2004 Free Software
|
||||
Foundation, Inc.
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2, or (at your option)
|
||||
any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program; if not, write to the Free Software
|
||||
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
|
||||
Written by Brian Fox (bfox@ai.mit.edu). */
|
||||
|
||||
#ifndef INFO_UTILS_H
|
||||
#define INFO_UTILS_H
|
||||
|
||||
#include "nodes.h"
|
||||
#include "window.h"
|
||||
#include "search.h"
|
||||
|
||||
/* Structure which describes a node reference, such as a menu entry or
|
||||
cross reference. Arrays of such references can be built by calling
|
||||
info_menus_of_node () or info_xrefs_of_node (). */
|
||||
typedef struct {
|
||||
char *label; /* User Label. */
|
||||
char *filename; /* File where this node can be found. */
|
||||
char *nodename; /* Name of the node. */
|
||||
int start, end; /* Offsets within the containing node of LABEL. */
|
||||
int line_number; /* Specific line number a menu item points to. */
|
||||
} REFERENCE;
|
||||
|
||||
/* When non-zero, various display and input functions handle ISO Latin
|
||||
character sets correctly. */
|
||||
extern int ISO_Latin_p;
|
||||
|
||||
/* Variable which holds the most recent filename parsed as a result of
|
||||
calling info_parse_xxx (). */
|
||||
extern char *info_parsed_filename;
|
||||
|
||||
/* Variable which holds the most recent nodename parsed as a result of
|
||||
calling info_parse_xxx (). */
|
||||
extern char *info_parsed_nodename;
|
||||
|
||||
/* Parse the filename and nodename out of STRING. If STRING doesn't
|
||||
contain a filename (i.e., it is NOT (FILENAME)NODENAME) then set
|
||||
INFO_PARSED_FILENAME to NULL. If second argument NEWLINES_OKAY is
|
||||
non-zero, it says to allow the nodename specification to cross a
|
||||
newline boundary (i.e., only `,', `.', or `TAB' can end the spec). */
|
||||
void info_parse_node (char *string, int newlines_okay);
|
||||
|
||||
/* Return a NULL terminated array of REFERENCE * which represents the menu
|
||||
found in NODE. If there is no menu in NODE, just return a NULL pointer. */
|
||||
extern REFERENCE **info_menu_of_node (NODE *node);
|
||||
|
||||
/* Return a NULL terminated array of REFERENCE * which represents the cross
|
||||
refrences found in NODE. If there are no cross references in NODE, just
|
||||
return a NULL pointer. */
|
||||
extern REFERENCE **info_xrefs_of_node (NODE *node);
|
||||
|
||||
/* Glean cross references from BINDING->buffer + BINDING->start until
|
||||
BINDING->end. Return an array of REFERENCE * that represents each
|
||||
cross reference in this range. */
|
||||
extern REFERENCE **info_xrefs (SEARCH_BINDING *binding);
|
||||
|
||||
/* Get the entry associated with LABEL in REFERENCES. Return a pointer to
|
||||
the reference if found, or NULL. */
|
||||
extern REFERENCE *info_get_labeled_reference (char *label,
|
||||
REFERENCE **references);
|
||||
|
||||
/* Glean menu entries from BINDING->buffer + BINDING->start until we
|
||||
have looked at the entire contents of BINDING. Return an array
|
||||
of REFERENCE * that represents each menu item in this range. */
|
||||
extern REFERENCE **info_menu_items (SEARCH_BINDING *binding);
|
||||
|
||||
/* A utility function for concatenating REFERENCE **. Returns a new
|
||||
REFERENCE ** which is the concatenation of REF1 and REF2. The REF1
|
||||
and REF2 arrays are freed, but their contents are not. */
|
||||
REFERENCE **info_concatenate_references (REFERENCE **ref1, REFERENCE **ref2);
|
||||
|
||||
/* Copy an existing reference into new memory. */
|
||||
extern REFERENCE *info_copy_reference (REFERENCE *src);
|
||||
|
||||
/* Free the data associated with REFERENCES. */
|
||||
extern void info_free_references (REFERENCE **references);
|
||||
|
||||
/* Search for sequences of whitespace or newlines in STRING, replacing
|
||||
all such sequences with just a single space. Remove whitespace from
|
||||
start and end of string. */
|
||||
void canonicalize_whitespace (char *string);
|
||||
|
||||
/* Return a pointer to a string which is the printed representation
|
||||
of CHARACTER if it were printed at HPOS. */
|
||||
extern char *printed_representation (unsigned char character, int hpos);
|
||||
|
||||
/* Return a pointer to the part of PATHNAME that simply defines the file. */
|
||||
extern char *filename_non_directory (char *pathname);
|
||||
|
||||
/* Return non-zero if NODE is one especially created by Info. */
|
||||
extern int internal_info_node_p (NODE *node);
|
||||
|
||||
/* Make NODE appear to be one especially created by Info, and give it NAME. */
|
||||
extern void name_internal_node (NODE *node, char *name);
|
||||
|
||||
/* Return the window displaying NAME, the name of an internally created
|
||||
Info window. */
|
||||
extern WINDOW *get_internal_info_window (char *name);
|
||||
|
||||
/* Return a window displaying the node NODE. */
|
||||
extern WINDOW *get_window_of_node (NODE *node);
|
||||
|
||||
/* Return the node addressed by LABEL in NODE (usually one of "Prev:",
|
||||
"Next:", "Up:", "File:", or "Node:". After a call to this function,
|
||||
the globals `info_parsed_nodename' and `info_parsed_filename' contain
|
||||
the information. */
|
||||
extern void info_parse_label (char *label, NODE *node);
|
||||
|
||||
#define info_file_label_of_node(n) info_parse_label (INFO_FILE_LABEL, n)
|
||||
#define info_next_label_of_node(n) info_parse_label (INFO_NEXT_LABEL, n)
|
||||
#define info_up_label_of_node(n) info_parse_label (INFO_UP_LABEL, n)
|
||||
#define info_prev_label_of_node(n) \
|
||||
do { \
|
||||
info_parse_label (INFO_PREV_LABEL, n); \
|
||||
if (!info_parsed_nodename && !info_parsed_filename) \
|
||||
info_parse_label (INFO_ALTPREV_LABEL, n); \
|
||||
} while (0)
|
||||
|
||||
#endif /* not INFO_UTILS_H */
|
687
external/gpl2/texinfo/dist/info/info.c
vendored
Normal file
687
external/gpl2/texinfo/dist/info/info.c
vendored
Normal file
@ -0,0 +1,687 @@
|
||||
/* $NetBSD: info.c,v 1.1.1.1 2016/01/14 00:11:29 christos Exp $ */
|
||||
|
||||
/* info.c -- Display nodes of Info files in multiple windows.
|
||||
Id: info.c,v 1.11 2004/04/11 17:56:45 karl Exp
|
||||
|
||||
Copyright (C) 1993, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003,
|
||||
2004 Free Software Foundation, Inc.
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2, or (at your option)
|
||||
any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program; if not, write to the Free Software
|
||||
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
|
||||
Written by Brian Fox (bfox@ai.mit.edu). */
|
||||
|
||||
#include "info.h"
|
||||
#include "indices.h"
|
||||
#include "dribble.h"
|
||||
#include "getopt.h"
|
||||
#if defined (HANDLE_MAN_PAGES)
|
||||
# include "man.h"
|
||||
#endif /* HANDLE_MAN_PAGES */
|
||||
|
||||
static char *program_name = "info";
|
||||
|
||||
/* Non-zero means search all indices for APROPOS_SEARCH_STRING. */
|
||||
static int apropos_p = 0;
|
||||
|
||||
/* Variable containing the string to search for when apropos_p is non-zero. */
|
||||
static char *apropos_search_string = (char *)NULL;
|
||||
|
||||
/* Non-zero means search all indices for INDEX_SEARCH_STRING. Unlike
|
||||
apropos, this puts the user at the node, running info. */
|
||||
static int index_search_p = 0;
|
||||
|
||||
/* Non-zero means look for the node which describes the invocation
|
||||
and command-line options of the program, and start the info
|
||||
session at that node. */
|
||||
static int goto_invocation_p = 0;
|
||||
|
||||
/* Variable containing the string to search for when index_search_p is
|
||||
non-zero. */
|
||||
static char *index_search_string = (char *)NULL;
|
||||
|
||||
/* Non-zero means print version info only. */
|
||||
static int print_version_p = 0;
|
||||
|
||||
/* Non-zero means print a short description of the options. */
|
||||
static int print_help_p = 0;
|
||||
|
||||
/* Array of the names of nodes that the user specified with "--node" on the
|
||||
command line. */
|
||||
static char **user_nodenames = (char **)NULL;
|
||||
static int user_nodenames_index = 0;
|
||||
static int user_nodenames_slots = 0;
|
||||
|
||||
/* String specifying the first file to load. This string can only be set
|
||||
by the user specifying "--file" on the command line. */
|
||||
static char *user_filename = (char *)NULL;
|
||||
|
||||
/* String specifying the name of the file to dump nodes to. This value is
|
||||
filled if the user speficies "--output" on the command line. */
|
||||
static char *user_output_filename = (char *)NULL;
|
||||
|
||||
/* Non-zero indicates that when "--output" is specified, all of the menu
|
||||
items of the specified nodes (and their subnodes as well) should be
|
||||
dumped in the order encountered. This basically can print a book. */
|
||||
int dump_subnodes = 0;
|
||||
|
||||
/* Non-zero means make default keybindings be loosely modeled on vi(1). */
|
||||
int vi_keys_p = 0;
|
||||
|
||||
/* Non-zero means don't remove ANSI escape sequences. */
|
||||
int raw_escapes_p = 1;
|
||||
|
||||
/* Non-zero means print the absolute location of the file to be loaded. */
|
||||
static int print_where_p = 0;
|
||||
|
||||
#ifdef __MSDOS__
|
||||
/* Non-zero indicates that screen output should be made 'speech-friendly'.
|
||||
Since on MSDOS the usual behavior is to write directly to the video
|
||||
memory, speech synthesizer software cannot grab the output. Therefore,
|
||||
we provide a user option which tells us to avoid direct screen output
|
||||
and use stdout instead (which loses the color output). */
|
||||
int speech_friendly = 0;
|
||||
#endif
|
||||
|
||||
/* Structure describing the options that Info accepts. We pass this structure
|
||||
to getopt_long (). If you add or otherwise change this structure, you must
|
||||
also change the string which follows it. */
|
||||
#define APROPOS_OPTION 1
|
||||
#define DRIBBLE_OPTION 2
|
||||
#define RESTORE_OPTION 3
|
||||
#define IDXSRCH_OPTION 4
|
||||
static struct option long_options[] = {
|
||||
{ "apropos", 1, 0, APROPOS_OPTION },
|
||||
{ "directory", 1, 0, 'd' },
|
||||
{ "dribble", 1, 0, DRIBBLE_OPTION },
|
||||
{ "file", 1, 0, 'f' },
|
||||
{ "help", 0, &print_help_p, 1 },
|
||||
{ "index-search", 1, 0, IDXSRCH_OPTION },
|
||||
{ "location", 0, &print_where_p, 1 },
|
||||
{ "node", 1, 0, 'n' },
|
||||
{ "output", 1, 0, 'o' },
|
||||
{ "raw-escapes", 0, &raw_escapes_p, 1 },
|
||||
{ "no-raw-escapes", 0, &raw_escapes_p, 0 },
|
||||
{ "restore", 1, 0, RESTORE_OPTION },
|
||||
{ "show-options", 0, 0, 'O' },
|
||||
{ "subnodes", 0, &dump_subnodes, 1 },
|
||||
{ "usage", 0, 0, 'O' },
|
||||
{ "version", 0, &print_version_p, 1 },
|
||||
{ "vi-keys", 0, &vi_keys_p, 1 },
|
||||
{ "where", 0, &print_where_p, 1 },
|
||||
#ifdef __MSDOS__
|
||||
{ "speech-friendly", 0, &speech_friendly, 1 },
|
||||
#endif
|
||||
{NULL, 0, NULL, 0}
|
||||
};
|
||||
|
||||
/* String describing the shorthand versions of the long options found above. */
|
||||
#ifdef __MSDOS__
|
||||
static char *short_options = "d:n:f:ho:ORswb";
|
||||
#else
|
||||
static char *short_options = "d:n:f:ho:ORws";
|
||||
#endif
|
||||
|
||||
/* When non-zero, the Info window system has been initialized. */
|
||||
int info_windows_initialized_p = 0;
|
||||
|
||||
/* Some "forward" declarations. */
|
||||
static void info_short_help (void);
|
||||
static void init_messages (void);
|
||||
|
||||
|
||||
/* **************************************************************** */
|
||||
/* */
|
||||
/* Main Entry Point to the Info Program */
|
||||
/* */
|
||||
/* **************************************************************** */
|
||||
|
||||
int
|
||||
main (int argc, char **argv)
|
||||
{
|
||||
int getopt_long_index; /* Index returned by getopt_long (). */
|
||||
NODE *initial_node; /* First node loaded by Info. */
|
||||
|
||||
#ifdef HAVE_SETLOCALE
|
||||
/* Set locale via LC_ALL. */
|
||||
setlocale (LC_ALL, "");
|
||||
#endif
|
||||
|
||||
#ifdef ENABLE_NLS
|
||||
/* Set the text message domain. */
|
||||
bindtextdomain (PACKAGE, LOCALEDIR);
|
||||
textdomain (PACKAGE);
|
||||
#endif
|
||||
|
||||
init_messages ();
|
||||
|
||||
while (1)
|
||||
{
|
||||
int option_character;
|
||||
|
||||
option_character = getopt_long
|
||||
(argc, argv, short_options, long_options, &getopt_long_index);
|
||||
|
||||
/* getopt_long returns EOF when there are no more long options. */
|
||||
if (option_character == EOF)
|
||||
break;
|
||||
|
||||
/* If this is a long option, then get the short version of it. */
|
||||
if (option_character == 0 && long_options[getopt_long_index].flag == 0)
|
||||
option_character = long_options[getopt_long_index].val;
|
||||
|
||||
/* Case on the option that we have received. */
|
||||
switch (option_character)
|
||||
{
|
||||
case 0:
|
||||
break;
|
||||
|
||||
/* User wants to add a directory. */
|
||||
case 'd':
|
||||
info_add_path (optarg, INFOPATH_PREPEND);
|
||||
break;
|
||||
|
||||
/* User is specifying a particular node. */
|
||||
case 'n':
|
||||
add_pointer_to_array (optarg, user_nodenames_index, user_nodenames,
|
||||
user_nodenames_slots, 10, char *);
|
||||
break;
|
||||
|
||||
/* User is specifying a particular Info file. */
|
||||
case 'f':
|
||||
if (user_filename)
|
||||
free (user_filename);
|
||||
|
||||
user_filename = xstrdup (optarg);
|
||||
break;
|
||||
|
||||
/* Treat -h like --help. */
|
||||
case 'h':
|
||||
print_help_p = 1;
|
||||
break;
|
||||
|
||||
/* User is specifying the name of a file to output to. */
|
||||
case 'o':
|
||||
if (user_output_filename)
|
||||
free (user_output_filename);
|
||||
user_output_filename = xstrdup (optarg);
|
||||
break;
|
||||
|
||||
/* User has specified that she wants to find the "Options"
|
||||
or "Invocation" node for the program. */
|
||||
case 'O':
|
||||
goto_invocation_p = 1;
|
||||
break;
|
||||
|
||||
/* User has specified that she wants the escape sequences
|
||||
in man pages to be passed thru unaltered. */
|
||||
case 'R':
|
||||
raw_escapes_p = 1;
|
||||
break;
|
||||
|
||||
/* User is specifying that she wishes to dump the subnodes of
|
||||
the node that she is dumping. */
|
||||
case 's':
|
||||
dump_subnodes = 1;
|
||||
break;
|
||||
|
||||
/* For compatibility with man, -w is --where. */
|
||||
case 'w':
|
||||
print_where_p = 1;
|
||||
break;
|
||||
|
||||
#ifdef __MSDOS__
|
||||
/* User wants speech-friendly output. */
|
||||
case 'b':
|
||||
speech_friendly = 1;
|
||||
break;
|
||||
#endif /* __MSDOS__ */
|
||||
|
||||
/* User has specified a string to search all indices for. */
|
||||
case APROPOS_OPTION:
|
||||
apropos_p = 1;
|
||||
maybe_free (apropos_search_string);
|
||||
apropos_search_string = xstrdup (optarg);
|
||||
break;
|
||||
|
||||
/* User has specified a dribble file to receive keystrokes. */
|
||||
case DRIBBLE_OPTION:
|
||||
close_dribble_file ();
|
||||
open_dribble_file (optarg);
|
||||
break;
|
||||
|
||||
/* User has specified an alternate input stream. */
|
||||
case RESTORE_OPTION:
|
||||
info_set_input_from_file (optarg);
|
||||
break;
|
||||
|
||||
/* User has specified a string to search all indices for. */
|
||||
case IDXSRCH_OPTION:
|
||||
index_search_p = 1;
|
||||
maybe_free (index_search_string);
|
||||
index_search_string = xstrdup (optarg);
|
||||
break;
|
||||
|
||||
default:
|
||||
fprintf (stderr, _("Try --help for more information.\n"));
|
||||
xexit (1);
|
||||
}
|
||||
}
|
||||
|
||||
/* If the output device is not a terminal, and no output filename has been
|
||||
specified, make user_output_filename be "-", so that the info is written
|
||||
to stdout, and turn on the dumping of subnodes. */
|
||||
if ((!isatty (fileno (stdout))) && (user_output_filename == (char *)NULL))
|
||||
{
|
||||
user_output_filename = xstrdup ("-");
|
||||
dump_subnodes = 1;
|
||||
}
|
||||
|
||||
/* If the user specified --version, then show the version and exit. */
|
||||
if (print_version_p)
|
||||
{
|
||||
printf ("%s (GNU %s) %s\n", program_name, PACKAGE, VERSION);
|
||||
puts ("");
|
||||
puts ("Copyright (C) 2004 Free Software Foundation, Inc.");
|
||||
printf (_("There is NO warranty. You may redistribute this software\n\
|
||||
under the terms of the GNU General Public License.\n\
|
||||
For more information about these matters, see the files named COPYING.\n"));
|
||||
xexit (0);
|
||||
}
|
||||
|
||||
/* If the `--help' option was present, show the help and exit. */
|
||||
if (print_help_p)
|
||||
{
|
||||
info_short_help ();
|
||||
xexit (0);
|
||||
}
|
||||
|
||||
/* If the user hasn't specified a path for Info files, default it.
|
||||
Lowest priority is our messy hardwired list in filesys.h.
|
||||
Then comes the user's INFODIR from the Makefile.
|
||||
Highest priority is the environment variable, if set. */
|
||||
if (!infopath)
|
||||
{
|
||||
char *path_from_env = getenv ("INFOPATH");
|
||||
|
||||
if (path_from_env)
|
||||
{
|
||||
unsigned len = strlen (path_from_env);
|
||||
/* Trailing : on INFOPATH means insert the default path. */
|
||||
if (len && path_from_env[len - 1] == PATH_SEP[0])
|
||||
{
|
||||
path_from_env[len - 1] = 0;
|
||||
info_add_path (DEFAULT_INFOPATH, INFOPATH_PREPEND);
|
||||
}
|
||||
#ifdef INFODIR /* from the Makefile */
|
||||
info_add_path (INFODIR, INFOPATH_PREPEND);
|
||||
#endif
|
||||
info_add_path (path_from_env, INFOPATH_PREPEND);
|
||||
}
|
||||
else
|
||||
{
|
||||
info_add_path (DEFAULT_INFOPATH, INFOPATH_PREPEND);
|
||||
#ifdef INFODIR /* from the Makefile */
|
||||
info_add_path (INFODIR, INFOPATH_PREPEND);
|
||||
#endif
|
||||
#ifdef INFODIR2 /* from the Makefile, too */
|
||||
# ifdef INFODIR
|
||||
if (!STREQ (INFODIR, INFODIR2))
|
||||
# endif
|
||||
info_add_path (INFODIR2, INFOPATH_PREPEND);
|
||||
#endif
|
||||
}
|
||||
}
|
||||
|
||||
/* If the user specified a particular filename, add the path of that
|
||||
file to the contents of INFOPATH. */
|
||||
if (user_filename)
|
||||
add_file_directory_to_path (user_filename);
|
||||
|
||||
/* If the user wants to search every known index for a given string,
|
||||
do that now, and report the results. */
|
||||
if (apropos_p)
|
||||
{
|
||||
info_apropos (apropos_search_string);
|
||||
xexit (0);
|
||||
}
|
||||
|
||||
/* Get the initial Info node. It is either "(dir)Top", or what the user
|
||||
specifed with values in user_filename and user_nodenames. */
|
||||
initial_node = info_get_node (user_filename,
|
||||
user_nodenames ? user_nodenames[0] : 0);
|
||||
|
||||
/* If we couldn't get the initial node, this user is in trouble. */
|
||||
if (!initial_node)
|
||||
{
|
||||
if (info_recent_file_error)
|
||||
info_error (info_recent_file_error, NULL, NULL);
|
||||
else
|
||||
info_error ((char *) msg_cant_find_node,
|
||||
user_nodenames ? user_nodenames[0] : "Top", NULL);
|
||||
xexit (1);
|
||||
}
|
||||
|
||||
/* Special cases for when the user specifies multiple nodes. If we
|
||||
are dumping to an output file, dump all of the nodes specified.
|
||||
Otherwise, attempt to create enough windows to handle the nodes
|
||||
that this user wants displayed. */
|
||||
if (user_nodenames_index > 1)
|
||||
{
|
||||
free (initial_node);
|
||||
|
||||
if (print_where_p)
|
||||
printf ("%s\n", user_filename ? user_filename : "unknown?!");
|
||||
else if (user_output_filename)
|
||||
dump_nodes_to_file
|
||||
(user_filename, user_nodenames, user_output_filename, dump_subnodes);
|
||||
else
|
||||
begin_multiple_window_info_session (user_filename, user_nodenames);
|
||||
|
||||
xexit (0);
|
||||
}
|
||||
|
||||
/* If there are arguments remaining, they are the names of menu items
|
||||
in sequential info files starting from the first one loaded. That
|
||||
file name is either "dir", or the contents of user_filename if one
|
||||
was specified. */
|
||||
{
|
||||
const char *errstr;
|
||||
char *errarg1, *errarg2;
|
||||
|
||||
NODE *new_initial_node = info_follow_menus (initial_node, argv + optind,
|
||||
&errstr, &errarg1, &errarg2);
|
||||
|
||||
if (new_initial_node && new_initial_node != initial_node)
|
||||
initial_node = new_initial_node;
|
||||
|
||||
if (print_where_p)
|
||||
{
|
||||
if (initial_node->parent)
|
||||
printf ("%s\n", initial_node->parent);
|
||||
else if (initial_node->filename
|
||||
&& !is_dir_name (filename_non_directory (initial_node->filename)))
|
||||
printf ("%s\n", initial_node->filename);
|
||||
else
|
||||
xexit (1);
|
||||
xexit (0);
|
||||
}
|
||||
|
||||
/* If the user specified that this node should be output, then do that
|
||||
now. Otherwise, start the Info session with this node. Or act
|
||||
accordingly if the initial node was not found. */
|
||||
if (user_output_filename && !goto_invocation_p)
|
||||
{
|
||||
if (!errstr)
|
||||
dump_node_to_file (initial_node, user_output_filename,
|
||||
dump_subnodes);
|
||||
else
|
||||
info_error ((char *) errstr, errarg1, errarg2);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
if (errstr)
|
||||
begin_info_session_with_error (initial_node, (char *) errstr,
|
||||
errarg1, errarg2);
|
||||
/* If the user specified `--index-search=STRING' or
|
||||
--show-options, start the info session in the node
|
||||
corresponding to what they want. */
|
||||
else if (index_search_p || goto_invocation_p)
|
||||
{
|
||||
int status = 0;
|
||||
|
||||
initialize_info_session (initial_node, 0);
|
||||
|
||||
if (goto_invocation_p
|
||||
|| index_entry_exists (windows, index_search_string))
|
||||
{
|
||||
terminal_prep_terminal ();
|
||||
terminal_clear_screen ();
|
||||
info_last_executed_command = (VFunction *)NULL;
|
||||
|
||||
if (index_search_p)
|
||||
do_info_index_search (windows, 0, index_search_string);
|
||||
else
|
||||
{
|
||||
/* If they said "info --show-options foo bar baz",
|
||||
the last of the arguments is the program whose
|
||||
options they want to see. */
|
||||
char **p = argv + optind;
|
||||
char *program;
|
||||
|
||||
if (*p)
|
||||
{
|
||||
while (p[1])
|
||||
p++;
|
||||
program = xstrdup (*p);
|
||||
}
|
||||
else if (user_filename)
|
||||
/* If there's no command-line arguments to
|
||||
supply the program name, use the Info file
|
||||
name (sans extension and leading directories)
|
||||
instead. */
|
||||
program = program_name_from_file_name (user_filename);
|
||||
else
|
||||
program = xstrdup ("");
|
||||
|
||||
info_intuit_options_node (windows, initial_node, program);
|
||||
free (program);
|
||||
}
|
||||
|
||||
if (user_output_filename)
|
||||
{
|
||||
dump_node_to_file (windows->node, user_output_filename,
|
||||
dump_subnodes);
|
||||
}
|
||||
else
|
||||
info_read_and_dispatch ();
|
||||
|
||||
/* On program exit, leave the cursor at the bottom of the
|
||||
window, and restore the terminal IO. */
|
||||
terminal_goto_xy (0, screenheight - 1);
|
||||
terminal_clear_to_eol ();
|
||||
fflush (stdout);
|
||||
terminal_unprep_terminal ();
|
||||
}
|
||||
else
|
||||
{
|
||||
fprintf (stderr, _("no index entries found for `%s'\n"),
|
||||
index_search_string);
|
||||
status = 2;
|
||||
}
|
||||
|
||||
close_dribble_file ();
|
||||
xexit (status);
|
||||
}
|
||||
else
|
||||
begin_info_session (initial_node);
|
||||
}
|
||||
|
||||
xexit (0);
|
||||
}
|
||||
|
||||
return 0; /* Avoid bogus warnings. */
|
||||
}
|
||||
|
||||
void
|
||||
add_file_directory_to_path (char *filename)
|
||||
{
|
||||
char *directory_name = xstrdup (filename);
|
||||
char *temp = filename_non_directory (directory_name);
|
||||
|
||||
if (temp != directory_name)
|
||||
{
|
||||
if (HAVE_DRIVE (directory_name) && temp == directory_name + 2)
|
||||
{
|
||||
/* The directory of "d:foo" is stored as "d:.", to avoid
|
||||
mixing it with "d:/" when a slash is appended. */
|
||||
*temp = '.';
|
||||
temp += 2;
|
||||
}
|
||||
temp[-1] = 0;
|
||||
info_add_path (directory_name, INFOPATH_PREPEND);
|
||||
}
|
||||
|
||||
free (directory_name);
|
||||
}
|
||||
|
||||
|
||||
/* Error handling. */
|
||||
|
||||
/* Non-zero if an error has been signalled. */
|
||||
int info_error_was_printed = 0;
|
||||
|
||||
/* Non-zero means ring terminal bell on errors. */
|
||||
int info_error_rings_bell_p = 1;
|
||||
|
||||
/* Print FORMAT with ARG1 and ARG2. If the window system was initialized,
|
||||
then the message is printed in the echo area. Otherwise, a message is
|
||||
output to stderr. */
|
||||
void
|
||||
info_error (char *format, void *arg1, void *arg2)
|
||||
{
|
||||
info_error_was_printed = 1;
|
||||
|
||||
if (!info_windows_initialized_p || display_inhibited)
|
||||
{
|
||||
fprintf (stderr, "%s: ", program_name);
|
||||
fprintf (stderr, format, arg1, arg2);
|
||||
fprintf (stderr, "\n");
|
||||
fflush (stderr);
|
||||
}
|
||||
else
|
||||
{
|
||||
if (!echo_area_is_active)
|
||||
{
|
||||
if (info_error_rings_bell_p)
|
||||
terminal_ring_bell ();
|
||||
window_message_in_echo_area (format, arg1, arg2);
|
||||
}
|
||||
else
|
||||
{
|
||||
NODE *temp;
|
||||
|
||||
temp = build_message_node (format, arg1, arg2);
|
||||
if (info_error_rings_bell_p)
|
||||
terminal_ring_bell ();
|
||||
inform_in_echo_area (temp->contents);
|
||||
free (temp->contents);
|
||||
free (temp);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/* Produce a scaled down description of the available options to Info. */
|
||||
static void
|
||||
info_short_help (void)
|
||||
{
|
||||
#ifdef __MSDOS__
|
||||
static const char speech_friendly_string[] = N_("\
|
||||
-b, --speech-friendly be friendly to speech synthesizers.\n");
|
||||
#else
|
||||
static const char speech_friendly_string[] = "";
|
||||
#endif
|
||||
|
||||
|
||||
printf (_("\
|
||||
Usage: %s [OPTION]... [MENU-ITEM...]\n\
|
||||
\n\
|
||||
Read documentation in Info format.\n\
|
||||
\n\
|
||||
Options:\n\
|
||||
--apropos=STRING look up STRING in all indices of all manuals.\n\
|
||||
-d, --directory=DIR add DIR to INFOPATH.\n\
|
||||
--dribble=FILENAME remember user keystrokes in FILENAME.\n\
|
||||
-f, --file=FILENAME specify Info file to visit.\n\
|
||||
-h, --help display this help and exit.\n\
|
||||
--index-search=STRING go to node pointed by index entry STRING.\n\
|
||||
-n, --node=NODENAME specify nodes in first visited Info file.\n\
|
||||
-o, --output=FILENAME output selected nodes to FILENAME.\n\
|
||||
-R, --raw-escapes output \"raw\" ANSI escapes (default).\n\
|
||||
--no-raw-escapes output escapes as literal text.\n\
|
||||
--restore=FILENAME read initial keystrokes from FILENAME.\n\
|
||||
-O, --show-options, --usage go to command-line options node.\n%s\
|
||||
--subnodes recursively output menu items.\n\
|
||||
-w, --where, --location print physical location of Info file.\n\
|
||||
--vi-keys use vi-like and less-like key bindings.\n\
|
||||
--version display version information and exit.\n\
|
||||
\n\
|
||||
The first non-option argument, if present, is the menu entry to start from;\n\
|
||||
it is searched for in all `dir' files along INFOPATH.\n\
|
||||
If it is not present, info merges all `dir' files and shows the result.\n\
|
||||
Any remaining arguments are treated as the names of menu\n\
|
||||
items relative to the initial node visited.\n\
|
||||
\n\
|
||||
Examples:\n\
|
||||
info show top-level dir menu\n\
|
||||
info emacs start at emacs node from top-level dir\n\
|
||||
info emacs buffers start at buffers node within emacs manual\n\
|
||||
info --show-options emacs start at node with emacs' command line options\n\
|
||||
info -f ./foo.info show file ./foo.info, not searching dir\n\
|
||||
"),
|
||||
program_name, speech_friendly_string);
|
||||
|
||||
puts (_("\n\
|
||||
Email bug reports to bug-texinfo@gnu.org,\n\
|
||||
general questions and discussion to help-texinfo@gnu.org.\n\
|
||||
Texinfo home page: http://www.gnu.org/software/texinfo/"));
|
||||
|
||||
xexit (0);
|
||||
}
|
||||
|
||||
|
||||
/* Initialize strings for gettext. Because gettext doesn't handle N_ or
|
||||
_ within macro definitions, we put shared messages into variables and
|
||||
use them that way. This also has the advantage that there's only one
|
||||
copy of the strings. */
|
||||
|
||||
const char *msg_cant_find_node;
|
||||
const char *msg_cant_file_node;
|
||||
const char *msg_cant_find_window;
|
||||
const char *msg_cant_find_point;
|
||||
const char *msg_cant_kill_last;
|
||||
const char *msg_no_menu_node;
|
||||
const char *msg_no_foot_node;
|
||||
const char *msg_no_xref_node;
|
||||
const char *msg_no_pointer;
|
||||
const char *msg_unknown_command;
|
||||
const char *msg_term_too_dumb;
|
||||
const char *msg_at_node_bottom;
|
||||
const char *msg_at_node_top;
|
||||
const char *msg_one_window;
|
||||
const char *msg_win_too_small;
|
||||
const char *msg_cant_make_help;
|
||||
|
||||
static void
|
||||
init_messages (void)
|
||||
{
|
||||
msg_cant_find_node = _("Cannot find node `%s'.");
|
||||
msg_cant_file_node = _("Cannot find node `(%s)%s'.");
|
||||
msg_cant_find_window = _("Cannot find a window!");
|
||||
msg_cant_find_point = _("Point doesn't appear within this window's node!");
|
||||
msg_cant_kill_last = _("Cannot delete the last window.");
|
||||
msg_no_menu_node = _("No menu in this node.");
|
||||
msg_no_foot_node = _("No footnotes in this node.");
|
||||
msg_no_xref_node = _("No cross references in this node.");
|
||||
msg_no_pointer = _("No `%s' pointer for this node.");
|
||||
msg_unknown_command = _("Unknown Info command `%c'; try `?' for help.");
|
||||
msg_term_too_dumb = _("Terminal type `%s' is not smart enough to run Info.");
|
||||
msg_at_node_bottom = _("You are already at the last page of this node.");
|
||||
msg_at_node_top = _("You are already at the first page of this node.");
|
||||
msg_one_window = _("Only one window.");
|
||||
msg_win_too_small = _("Resulting window would be too small.");
|
||||
msg_cant_make_help = _("Not enough room for a help window, please delete a window.");
|
||||
}
|
162
external/gpl2/texinfo/dist/info/info.h
vendored
Normal file
162
external/gpl2/texinfo/dist/info/info.h
vendored
Normal file
@ -0,0 +1,162 @@
|
||||
/* $NetBSD: info.h,v 1.1.1.1 2016/01/14 00:11:29 christos Exp $ */
|
||||
|
||||
/* info.h -- Header file which includes all of the other headers.
|
||||
Id: info.h,v 1.4 2004/04/11 17:56:45 karl Exp
|
||||
|
||||
Copyright (C) 1993, 1997, 1998, 1999, 2001, 2002, 2003, 2004 Free Software
|
||||
Foundation, Inc.
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2, or (at your option)
|
||||
any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program; if not, write to the Free Software
|
||||
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
|
||||
Written by Brian Fox (bfox@ai.mit.edu). */
|
||||
|
||||
#ifndef INFO_H
|
||||
#define INFO_H
|
||||
|
||||
/* We always want these, so why clutter up the compile command? */
|
||||
#define HANDLE_MAN_PAGES
|
||||
#define NAMED_FUNCTIONS
|
||||
#define INFOKEY
|
||||
|
||||
/* System dependencies. */
|
||||
#include "system.h"
|
||||
|
||||
/* Some of our other include files use these. */
|
||||
typedef int Function ();
|
||||
typedef void VFunction ();
|
||||
typedef char *CFunction ();
|
||||
|
||||
#include "filesys.h"
|
||||
#include "doc.h"
|
||||
#include "display.h"
|
||||
#include "session.h"
|
||||
#include "echo-area.h"
|
||||
#include "footnotes.h"
|
||||
#include "gc.h"
|
||||
|
||||
#define info_toupper(x) (islower (x) ? toupper (x) : x)
|
||||
#define info_tolower(x) (isupper (x) ? tolower (x) : x)
|
||||
|
||||
#if !defined (whitespace)
|
||||
# define whitespace(c) ((c == ' ') || (c == '\t'))
|
||||
#endif /* !whitespace */
|
||||
|
||||
#if !defined (whitespace_or_newline)
|
||||
# define whitespace_or_newline(c) (whitespace (c) || (c == '\n'))
|
||||
#endif /* !whitespace_or_newline */
|
||||
|
||||
/* Add POINTER to the list of pointers found in ARRAY. SLOTS is the number
|
||||
of slots that have already been allocated. INDEX is the index into the
|
||||
array where POINTER should be added. GROW is the number of slots to grow
|
||||
ARRAY by, in the case that it needs growing. TYPE is a cast of the type
|
||||
of object stored in ARRAY (e.g., NODE_ENTRY *. */
|
||||
#define add_pointer_to_array(pointer, idx, array, slots, grow, type) \
|
||||
do { \
|
||||
if (idx + 2 >= slots) \
|
||||
array = (type *)(xrealloc (array, (slots += grow) * sizeof (type))); \
|
||||
array[idx++] = (type)pointer; \
|
||||
array[idx] = (type)NULL; \
|
||||
} while (0)
|
||||
|
||||
#define maybe_free(x) do { if (x) free (x); } while (0)
|
||||
|
||||
#if !defined (zero_mem) && defined (HAVE_MEMSET)
|
||||
# define zero_mem(mem, length) memset (mem, 0, length)
|
||||
#endif /* !zero_mem && HAVE_MEMSET */
|
||||
|
||||
#if !defined (zero_mem) && defined (HAVE_BZERO)
|
||||
# define zero_mem(mem, length) bzero (mem, length)
|
||||
#endif /* !zero_mem && HAVE_BZERO */
|
||||
|
||||
#if !defined (zero_mem)
|
||||
# define zero_mem(mem, length) \
|
||||
do { \
|
||||
register int zi; \
|
||||
register unsigned char *place; \
|
||||
\
|
||||
place = (unsigned char *)mem; \
|
||||
for (zi = 0; zi < length; zi++) \
|
||||
place[zi] = 0; \
|
||||
} while (0)
|
||||
#endif /* !zero_mem */
|
||||
|
||||
|
||||
/* A structure associating the nodes visited in a particular window. */
|
||||
typedef struct {
|
||||
WINDOW *window; /* The window that this list is attached to. */
|
||||
NODE **nodes; /* Array of nodes visited in this window. */
|
||||
int *pagetops; /* For each node in NODES, the pagetop. */
|
||||
long *points; /* For each node in NODES, the point. */
|
||||
int current; /* Index in NODES of the current node. */
|
||||
int nodes_index; /* Index where to add the next node. */
|
||||
int nodes_slots; /* Number of slots allocated to NODES. */
|
||||
} INFO_WINDOW;
|
||||
|
||||
/* Array of structures describing for each window which nodes have been
|
||||
visited in that window. */
|
||||
extern INFO_WINDOW **info_windows;
|
||||
|
||||
/* For handling errors. If you initialize the window system, you should
|
||||
also set info_windows_initialized_p to non-zero. It is used by the
|
||||
info_error () function to determine how to format and output errors. */
|
||||
extern int info_windows_initialized_p;
|
||||
|
||||
/* Non-zero if an error message has been printed. */
|
||||
extern int info_error_was_printed;
|
||||
|
||||
/* Non-zero means ring terminal bell on errors. */
|
||||
extern int info_error_rings_bell_p;
|
||||
|
||||
/* Non-zero means default keybindings are loosely modeled on vi(1). */
|
||||
extern int vi_keys_p;
|
||||
|
||||
/* Non-zero means don't remove ANSI escape sequences from man pages. */
|
||||
extern int raw_escapes_p;
|
||||
|
||||
/* Print FORMAT with ARG1 and ARG2. If the window system was initialized,
|
||||
then the message is printed in the echo area. Otherwise, a message is
|
||||
output to stderr. */
|
||||
extern void info_error (char *format, void *arg1, void *arg2);
|
||||
|
||||
extern void add_file_directory_to_path (char *filename);
|
||||
|
||||
/* Error message defines. */
|
||||
extern const char *msg_cant_find_node;
|
||||
extern const char *msg_cant_file_node;
|
||||
extern const char *msg_cant_find_window;
|
||||
extern const char *msg_cant_find_point;
|
||||
extern const char *msg_cant_kill_last;
|
||||
extern const char *msg_no_menu_node;
|
||||
extern const char *msg_no_foot_node;
|
||||
extern const char *msg_no_xref_node;
|
||||
extern const char *msg_no_pointer;
|
||||
extern const char *msg_unknown_command;
|
||||
extern const char *msg_term_too_dumb;
|
||||
extern const char *msg_at_node_bottom;
|
||||
extern const char *msg_at_node_top;
|
||||
extern const char *msg_one_window;
|
||||
extern const char *msg_win_too_small;
|
||||
extern const char *msg_cant_make_help;
|
||||
|
||||
|
||||
#if defined(INFOKEY)
|
||||
/* Found in variables.c. */
|
||||
extern void set_variable_to_value (char *name, char *value);
|
||||
#endif /* INFOKEY */
|
||||
|
||||
/* Found in m-x.c. */
|
||||
extern char *read_function_name (char *prompt, WINDOW *window);
|
||||
|
||||
#endif /* !INFO_H */
|
1202
external/gpl2/texinfo/dist/info/infodoc.c
vendored
Normal file
1202
external/gpl2/texinfo/dist/info/infodoc.c
vendored
Normal file
File diff suppressed because it is too large
Load Diff
926
external/gpl2/texinfo/dist/info/infokey.c
vendored
Normal file
926
external/gpl2/texinfo/dist/info/infokey.c
vendored
Normal file
@ -0,0 +1,926 @@
|
||||
/* $NetBSD: infokey.c,v 1.1.1.1 2016/01/14 00:11:29 christos Exp $ */
|
||||
|
||||
/* infokey.c -- compile ~/.infokey to ~/.info.
|
||||
Id: infokey.c,v 1.9 2004/12/14 00:15:36 karl Exp
|
||||
|
||||
Copyright (C) 1999, 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2, or (at your option)
|
||||
any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program; if not, write to the Free Software
|
||||
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
|
||||
Written by Andrew Bettison <andrewb@zip.com.au>. */
|
||||
|
||||
#include "info.h"
|
||||
#include "infomap.h"
|
||||
#include "infokey.h"
|
||||
#include "key.h"
|
||||
#include "getopt.h"
|
||||
|
||||
static char *program_name = "infokey";
|
||||
|
||||
/* Non-zero means print version info only. */
|
||||
static int print_version_p = 0;
|
||||
|
||||
/* Non-zero means print a short description of the options. */
|
||||
static int print_help_p = 0;
|
||||
|
||||
/* String specifying the source file. This is set by the user on the
|
||||
command line, or a default is used. */
|
||||
static char *input_filename = (char *) NULL;
|
||||
|
||||
/* String specifying the name of the file to output to. This is
|
||||
set by the user on the command line, or a default is used. */
|
||||
static char *output_filename = (char *) NULL;
|
||||
|
||||
/* Structure describing the options that Infokey accepts. We pass this
|
||||
structure to getopt_long (). If you add or otherwise change this
|
||||
structure, you must also change the string which follows it. */
|
||||
static struct option long_options[] =
|
||||
{
|
||||
{"output", 1, 0, 'o'},
|
||||
{"help", 0, &print_help_p, 1},
|
||||
{"version", 0, &print_version_p, 1},
|
||||
{NULL, 0, NULL, 0}
|
||||
};
|
||||
|
||||
/* String describing the shorthand versions of the long options found above. */
|
||||
static char *short_options = "o:";
|
||||
|
||||
/* Structure for holding the compiled sections. */
|
||||
enum sect_e
|
||||
{
|
||||
info = 0,
|
||||
ea = 1,
|
||||
var = 2
|
||||
};
|
||||
struct sect
|
||||
{
|
||||
unsigned int cur;
|
||||
unsigned char data[INFOKEY_MAX_SECTIONLEN];
|
||||
};
|
||||
|
||||
/* Some "forward" declarations. */
|
||||
static char *mkpath (const char *dir, const char *file);
|
||||
static int compile (FILE *fp, const char *filename, struct sect *sections);
|
||||
static int write_infokey_file (FILE *fp, struct sect *sections);
|
||||
static void syntax_error (const char *filename,
|
||||
unsigned int linenum, const char *fmt,
|
||||
const void *a1, const void *a2, const void *a3, const void *a4);
|
||||
static void error_message (int error_code, const char *fmt,
|
||||
const void *a1, const void *a2, const void *a3, const void *a4);
|
||||
static void suggest_help (void);
|
||||
static void short_help (void);
|
||||
|
||||
|
||||
/* **************************************************************** */
|
||||
/* */
|
||||
/* Main Entry Point to the Infokey Program */
|
||||
/* */
|
||||
/* **************************************************************** */
|
||||
|
||||
int
|
||||
main (int argc, char **argv)
|
||||
{
|
||||
int getopt_long_index; /* Index returned by getopt_long (). */
|
||||
|
||||
#ifdef HAVE_SETLOCALE
|
||||
/* Set locale via LC_ALL. */
|
||||
setlocale (LC_ALL, "");
|
||||
#endif
|
||||
|
||||
#ifdef ENABLE_NLS
|
||||
/* Set the text message domain. */
|
||||
bindtextdomain (PACKAGE, LOCALEDIR);
|
||||
textdomain (PACKAGE);
|
||||
#endif
|
||||
|
||||
while (1)
|
||||
{
|
||||
int option_character;
|
||||
|
||||
option_character = getopt_long
|
||||
(argc, argv, short_options, long_options, &getopt_long_index);
|
||||
|
||||
/* getopt_long () returns EOF when there are no more long options. */
|
||||
if (option_character == EOF)
|
||||
break;
|
||||
|
||||
/* If this is a long option, then get the short version of it. */
|
||||
if (option_character == 0 && long_options[getopt_long_index].flag == 0)
|
||||
option_character = long_options[getopt_long_index].val;
|
||||
|
||||
/* Case on the option that we have received. */
|
||||
switch (option_character)
|
||||
{
|
||||
case 0:
|
||||
break;
|
||||
|
||||
/* User is specifying the name of a file to output to. */
|
||||
case 'o':
|
||||
if (output_filename)
|
||||
free (output_filename);
|
||||
output_filename = xstrdup (optarg);
|
||||
break;
|
||||
|
||||
default:
|
||||
suggest_help ();
|
||||
xexit (1);
|
||||
}
|
||||
}
|
||||
|
||||
/* If the user specified --version, then show the version and exit. */
|
||||
if (print_version_p)
|
||||
{
|
||||
printf ("%s (GNU %s) %s\n", program_name, PACKAGE, VERSION);
|
||||
puts ("");
|
||||
printf (_ ("Copyright (C) %s Free Software Foundation, Inc.\n\
|
||||
There is NO warranty. You may redistribute this software\n\
|
||||
under the terms of the GNU General Public License.\n\
|
||||
For more information about these matters, see the files named COPYING.\n"),
|
||||
"2003");
|
||||
xexit (0);
|
||||
}
|
||||
|
||||
/* If the `--help' option was present, show the help and exit. */
|
||||
if (print_help_p)
|
||||
{
|
||||
short_help ();
|
||||
xexit (0);
|
||||
}
|
||||
|
||||
/* If there is one argument remaining, it is the name of the input
|
||||
file. */
|
||||
if (optind == argc - 1)
|
||||
{
|
||||
if (input_filename)
|
||||
free (input_filename);
|
||||
input_filename = xstrdup (argv[optind]);
|
||||
}
|
||||
else if (optind != argc)
|
||||
{
|
||||
error_message (0, _("incorrect number of arguments"),
|
||||
NULL, NULL, NULL, NULL);
|
||||
suggest_help ();
|
||||
xexit (1);
|
||||
}
|
||||
|
||||
/* Use default filenames where none given. */
|
||||
{
|
||||
char *homedir;
|
||||
|
||||
homedir = getenv ("HOME");
|
||||
#ifdef __MSDOS__
|
||||
if (!homedir)
|
||||
homedir = ".";
|
||||
#endif
|
||||
if (!input_filename)
|
||||
input_filename = mkpath (homedir, INFOKEY_SRCFILE);
|
||||
if (!output_filename)
|
||||
output_filename = mkpath (homedir, INFOKEY_FILE);
|
||||
}
|
||||
|
||||
{
|
||||
FILE *inf;
|
||||
FILE *outf;
|
||||
int write_error;
|
||||
static struct sect sections[3];
|
||||
|
||||
/* Open the input file. */
|
||||
inf = fopen (input_filename, "r");
|
||||
if (!inf)
|
||||
{
|
||||
error_message (errno, _("cannot open input file `%s'"),
|
||||
input_filename, NULL, NULL, NULL);
|
||||
xexit (1);
|
||||
}
|
||||
|
||||
/* Compile the input file to its verious sections, then write the
|
||||
section data to the output file. */
|
||||
|
||||
if (compile (inf, input_filename, sections))
|
||||
{
|
||||
/* Open the output file. */
|
||||
outf = fopen (output_filename, FOPEN_WBIN);
|
||||
if (!outf)
|
||||
{
|
||||
error_message (errno, _("cannot create output file `%s'"),
|
||||
output_filename, NULL, NULL, NULL);
|
||||
xexit (1);
|
||||
}
|
||||
|
||||
/* Write the contents of the output file and close it. If there is
|
||||
an error writing to the file, delete it and exit with a failure
|
||||
status. */
|
||||
write_error = 0;
|
||||
if (!write_infokey_file (outf, sections))
|
||||
{
|
||||
error_message (errno, _("error writing to `%s'"),
|
||||
output_filename, NULL, NULL, NULL);
|
||||
write_error = 1;
|
||||
}
|
||||
if (fclose (outf) == EOF)
|
||||
{
|
||||
error_message (errno, _("error closing output file `%s'"),
|
||||
output_filename, NULL, NULL, NULL);
|
||||
write_error = 1;
|
||||
}
|
||||
if (write_error)
|
||||
{
|
||||
unlink (output_filename);
|
||||
xexit (1);
|
||||
}
|
||||
}
|
||||
|
||||
/* Close the input file. */
|
||||
fclose (inf);
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static char *
|
||||
mkpath (const char *dir, const char *file)
|
||||
{
|
||||
char *p;
|
||||
|
||||
p = xmalloc (strlen (dir) + 1 + strlen (file) + 2);
|
||||
strcpy (p, dir);
|
||||
strcat (p, "/");
|
||||
strcat (p, file);
|
||||
return p;
|
||||
}
|
||||
|
||||
|
||||
/* Compilation - the real work.
|
||||
|
||||
Source file syntax
|
||||
------------------
|
||||
The source file is a line-based text file with the following
|
||||
structure:
|
||||
|
||||
# comments
|
||||
# more comments
|
||||
|
||||
#info
|
||||
u prev-line
|
||||
d next-line
|
||||
^a invalid # just beep
|
||||
\ku prev-line
|
||||
#stop
|
||||
\kd next-line
|
||||
q quit # of course!
|
||||
|
||||
#echo-area
|
||||
^a echo-area-beg-of-line
|
||||
^e echo-area-end-of-line
|
||||
\kr echo-area-forward
|
||||
\kl echo-area-backward
|
||||
\kh echo-area-beg-of-line
|
||||
\ke echo-area-end-of-line
|
||||
|
||||
#var
|
||||
scroll-step=1
|
||||
ISO-Latin=Off
|
||||
|
||||
Lines starting with '#' are comments, and are ignored. Blank
|
||||
lines are ignored. Each section is introduced by one of the
|
||||
following lines:
|
||||
|
||||
#info
|
||||
#echo-area
|
||||
#var
|
||||
|
||||
The sections may occur in any order. Each section may be
|
||||
omitted completely. If the 'info' section is the first in the
|
||||
file, its '#info' line may be omitted.
|
||||
|
||||
The 'info' and 'echo-area' sections
|
||||
-----------------------------------
|
||||
Each line in the 'info' or 'echo-area' sections has the
|
||||
following syntax:
|
||||
|
||||
key-sequence SPACE action-name [ SPACE [ # comment ] ] \n
|
||||
|
||||
Where SPACE is one or more white space characters excluding
|
||||
newline, "action-name" is the name of a GNU Info command,
|
||||
"comment" is any sequence of characters excluding newline, and
|
||||
"key-sequence" is a concatenation of one or more key definitions
|
||||
using the following syntax:
|
||||
|
||||
1. A carat ^ followed by one character indicates a single
|
||||
control character;
|
||||
|
||||
2. A backslash \ followed by one, two, or three octal
|
||||
digits indicates a single character having that ASCII
|
||||
code;
|
||||
|
||||
3. \n indicates a single NEWLINE;
|
||||
\e indicates a single ESC;
|
||||
\r indicates a single CR;
|
||||
\t indicates a single TAB;
|
||||
\b indicates a single BACKSPACE;
|
||||
|
||||
4. \ku indicates the Up Arrow key;
|
||||
\kd indicates the Down Arrow key;
|
||||
\kl indicates the Left Arrow key;
|
||||
\kr indicates the Right Arrow key;
|
||||
\kP indicates the Page Up (PRIOR) key;
|
||||
\kN indicates the Page Down (NEXT) key;
|
||||
\kh indicates the Home key;
|
||||
\ke indicates the End key;
|
||||
\kx indicates the DEL key;
|
||||
\k followed by any other character indicates a single
|
||||
control-K, and the following character is interpreted
|
||||
as in rules 1, 2, 3, 5 and 6.
|
||||
|
||||
5. \m followed by any sequence defined in rules 1, 2, 3, 4
|
||||
or 6 indicates the "Meta" modification of that key.
|
||||
|
||||
6. A backslash \ followed by any character not described
|
||||
above indicates that character itself. In particular:
|
||||
\\ indicates a single backslash \,
|
||||
\ (backslash-space) indicates a single space,
|
||||
\^ indicates a single caret ^,
|
||||
|
||||
If the following line:
|
||||
|
||||
#stop
|
||||
|
||||
occurs anywhere in an 'info' or 'echo-area' section, that
|
||||
indicates to GNU Info to suppress all of its default key
|
||||
bindings in that context.
|
||||
|
||||
The 'var' section
|
||||
-----------------
|
||||
Each line in the 'var' section has the following syntax:
|
||||
|
||||
variable-name = value \n
|
||||
|
||||
Where "variable-name" is the name of a GNU Info variable and
|
||||
"value" is the value that GNU Info will assign to that variable
|
||||
when commencing execution. There must be no white space in the
|
||||
variable name, nor between the variable name and the '='. All
|
||||
characters immediately following the '=', up to but not
|
||||
including the terminating newline, are considered to be the
|
||||
value that will be assigned. In other words, white space
|
||||
following the '=' is not ignored.
|
||||
*/
|
||||
|
||||
static int add_to_section (struct sect *s, const char *str, unsigned int len);
|
||||
static int lookup_action (const char *actname);
|
||||
|
||||
/* Compile the input file into its various sections. Return true if no
|
||||
error was encountered.
|
||||
*/
|
||||
static int
|
||||
compile (FILE *fp, const char *filename, struct sect *sections)
|
||||
{
|
||||
int error = 0;
|
||||
char rescan = 0;
|
||||
unsigned int lnum = 0;
|
||||
int c = 0;
|
||||
|
||||
/* This parser is a true state machine, with no sneaky fetching
|
||||
of input characters inside the main loop. In other words, all
|
||||
state is fully represented by the following variables:
|
||||
*/
|
||||
enum
|
||||
{
|
||||
start_of_line,
|
||||
start_of_comment,
|
||||
in_line_comment,
|
||||
in_trailing_comment,
|
||||
get_keyseq,
|
||||
got_keyseq,
|
||||
get_action,
|
||||
got_action,
|
||||
get_varname,
|
||||
got_varname,
|
||||
get_equals,
|
||||
got_equals,
|
||||
get_value
|
||||
}
|
||||
state = start_of_line;
|
||||
enum sect_e section = info;
|
||||
enum
|
||||
{
|
||||
normal,
|
||||
slosh,
|
||||
control,
|
||||
octal,
|
||||
special_key
|
||||
}
|
||||
seqstate; /* used if state == get_keyseq */
|
||||
char meta = 0;
|
||||
char ocnt = 0; /* used if state == get_keyseq && seqstate == octal */
|
||||
|
||||
/* Data is accumulated in the following variables. The code
|
||||
avoids overflowing these strings, and throws an error
|
||||
where appropriate if a string limit is exceeded. These string
|
||||
lengths are arbitrary (and should be large enough) and their
|
||||
lengths are not hard-coded anywhere else, so increasing them
|
||||
here will not break anything. */
|
||||
char oval = 0;
|
||||
char comment[10];
|
||||
unsigned int clen = 0;
|
||||
char seq[20];
|
||||
unsigned int slen = 0;
|
||||
char act[80];
|
||||
unsigned int alen = 0;
|
||||
char varn[80];
|
||||
unsigned int varlen = 0;
|
||||
char val[80];
|
||||
unsigned int vallen = 0;
|
||||
|
||||
#define To_seq(c) \
|
||||
do { \
|
||||
if (slen < sizeof seq) \
|
||||
seq[slen++] = meta ? Meta(c) : (c); \
|
||||
else \
|
||||
{ \
|
||||
syntax_error(filename, lnum, _("key sequence too long"), \
|
||||
NULL, NULL, NULL, NULL); \
|
||||
error = 1; \
|
||||
} \
|
||||
meta = 0; \
|
||||
} while (0)
|
||||
|
||||
sections[info].cur = 1;
|
||||
sections[info].data[0] = 0;
|
||||
sections[ea].cur = 1;
|
||||
sections[ea].data[0] = 0;
|
||||
sections[var].cur = 0;
|
||||
|
||||
while (!error && (rescan || (c = fgetc (fp)) != EOF))
|
||||
{
|
||||
rescan = 0;
|
||||
switch (state)
|
||||
{
|
||||
case start_of_line:
|
||||
lnum++;
|
||||
if (c == '#')
|
||||
state = start_of_comment;
|
||||
else if (c != '\n')
|
||||
{
|
||||
switch (section)
|
||||
{
|
||||
case info:
|
||||
case ea:
|
||||
state = get_keyseq;
|
||||
seqstate = normal;
|
||||
slen = 0;
|
||||
break;
|
||||
case var:
|
||||
state = get_varname;
|
||||
varlen = 0;
|
||||
break;
|
||||
}
|
||||
rescan = 1;
|
||||
}
|
||||
break;
|
||||
|
||||
case start_of_comment:
|
||||
clen = 0;
|
||||
state = in_line_comment;
|
||||
/* fall through */
|
||||
case in_line_comment:
|
||||
if (c == '\n')
|
||||
{
|
||||
state = start_of_line;
|
||||
comment[clen] = '\0';
|
||||
if (strcmp (comment, "info") == 0)
|
||||
section = info;
|
||||
else if (strcmp (comment, "echo-area") == 0)
|
||||
section = ea;
|
||||
else if (strcmp (comment, "var") == 0)
|
||||
section = var;
|
||||
else if (strcmp (comment, "stop") == 0
|
||||
&& (section == info || section == ea))
|
||||
sections[section].data[0] = 1;
|
||||
}
|
||||
else if (clen < sizeof comment - 1)
|
||||
comment[clen++] = c;
|
||||
break;
|
||||
|
||||
case in_trailing_comment:
|
||||
if (c == '\n')
|
||||
state = start_of_line;
|
||||
break;
|
||||
|
||||
case get_keyseq:
|
||||
switch (seqstate)
|
||||
{
|
||||
case normal:
|
||||
if (c == '\n' || isspace (c))
|
||||
{
|
||||
state = got_keyseq;
|
||||
rescan = 1;
|
||||
if (slen == 0)
|
||||
{
|
||||
syntax_error (filename, lnum, _("missing key sequence"),
|
||||
NULL, NULL, NULL, NULL);
|
||||
error = 1;
|
||||
}
|
||||
}
|
||||
else if (c == '\\')
|
||||
seqstate = slosh;
|
||||
else if (c == '^')
|
||||
seqstate = control;
|
||||
else
|
||||
To_seq (c);
|
||||
break;
|
||||
|
||||
case slosh:
|
||||
switch (c)
|
||||
{
|
||||
case '0': case '1': case '2': case '3':
|
||||
case '4': case '5': case '6': case '7':
|
||||
seqstate = octal;
|
||||
oval = c - '0';
|
||||
ocnt = 1;
|
||||
break;
|
||||
case 'b':
|
||||
To_seq ('\b');
|
||||
seqstate = normal;
|
||||
break;
|
||||
case 'e':
|
||||
To_seq ('\033');
|
||||
seqstate = normal;
|
||||
break;
|
||||
case 'n':
|
||||
To_seq ('\n');
|
||||
seqstate = normal;
|
||||
break;
|
||||
case 'r':
|
||||
To_seq ('\r');
|
||||
seqstate = normal;
|
||||
break;
|
||||
case 't':
|
||||
To_seq ('\t');
|
||||
seqstate = normal;
|
||||
break;
|
||||
case 'm':
|
||||
meta = 1;
|
||||
seqstate = normal;
|
||||
break;
|
||||
case 'k':
|
||||
seqstate = special_key;
|
||||
break;
|
||||
default:
|
||||
/* Backslash followed by any other char
|
||||
just means that char. */
|
||||
To_seq (c);
|
||||
seqstate = normal;
|
||||
break;
|
||||
}
|
||||
break;
|
||||
|
||||
case octal:
|
||||
switch (c)
|
||||
{
|
||||
case '0': case '1': case '2': case '3':
|
||||
case '4': case '5': case '6': case '7':
|
||||
if (++ocnt <= 3)
|
||||
oval = oval * 8 + c - '0';
|
||||
if (ocnt == 3)
|
||||
seqstate = normal;
|
||||
break;
|
||||
default:
|
||||
ocnt = 4;
|
||||
seqstate = normal;
|
||||
rescan = 1;
|
||||
break;
|
||||
}
|
||||
if (seqstate != octal)
|
||||
{
|
||||
if (oval)
|
||||
To_seq (oval);
|
||||
else
|
||||
{
|
||||
syntax_error (filename, lnum,
|
||||
_("NUL character (\\000) not permitted"),
|
||||
NULL, NULL, NULL, NULL);
|
||||
error = 1;
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
case special_key:
|
||||
To_seq (SK_ESCAPE);
|
||||
switch (c)
|
||||
{
|
||||
case 'u': To_seq (SK_UP_ARROW); break;
|
||||
case 'd': To_seq (SK_DOWN_ARROW); break;
|
||||
case 'r': To_seq (SK_RIGHT_ARROW); break;
|
||||
case 'l': To_seq (SK_LEFT_ARROW); break;
|
||||
case 'U': To_seq (SK_PAGE_UP); break;
|
||||
case 'D': To_seq (SK_PAGE_DOWN); break;
|
||||
case 'h': To_seq (SK_HOME); break;
|
||||
case 'e': To_seq (SK_END); break;
|
||||
case 'x': To_seq (SK_DELETE); break;
|
||||
default: To_seq (SK_LITERAL); rescan = 1; break;
|
||||
}
|
||||
seqstate = normal;
|
||||
break;
|
||||
|
||||
case control:
|
||||
if (CONTROL (c))
|
||||
To_seq (CONTROL (c));
|
||||
else
|
||||
{
|
||||
syntax_error (filename, lnum,
|
||||
(char *) _("NUL character (^%c) not permitted"),
|
||||
(void *) (long) c, NULL, NULL, NULL);
|
||||
error = 1;
|
||||
}
|
||||
seqstate = normal;
|
||||
break;
|
||||
}
|
||||
break;
|
||||
|
||||
case got_keyseq:
|
||||
if (isspace (c) && c != '\n')
|
||||
break;
|
||||
state = get_action;
|
||||
alen = 0;
|
||||
/* fall through */
|
||||
case get_action:
|
||||
if (c == '\n' || isspace (c))
|
||||
{
|
||||
int a;
|
||||
|
||||
state = got_action;
|
||||
rescan = 1;
|
||||
if (alen == 0)
|
||||
{
|
||||
syntax_error (filename, lnum, (char *) _("missing action name"),
|
||||
(void *) (long) c, NULL, NULL, NULL);
|
||||
error = 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
act[alen] = '\0';
|
||||
a = lookup_action (act);
|
||||
if (a != -1)
|
||||
{
|
||||
char av = a;
|
||||
|
||||
if (!(add_to_section (§ions[section], seq, slen)
|
||||
&& add_to_section (§ions[section], "", 1)
|
||||
&& add_to_section (§ions[section], &av, 1)))
|
||||
{
|
||||
syntax_error (filename, lnum, _("section too long"),
|
||||
NULL, NULL, NULL, NULL);
|
||||
error = 1;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
syntax_error (filename, lnum, _("unknown action `%s'"),
|
||||
act, NULL, NULL, NULL);
|
||||
error = 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (alen < sizeof act - 1)
|
||||
act[alen++] = c;
|
||||
else
|
||||
{
|
||||
syntax_error (filename, lnum, _("action name too long"),
|
||||
NULL, NULL, NULL, NULL);
|
||||
error = 1;
|
||||
}
|
||||
break;
|
||||
|
||||
case got_action:
|
||||
if (c == '#')
|
||||
state = in_trailing_comment;
|
||||
else if (c == '\n')
|
||||
state = start_of_line;
|
||||
else if (!isspace (c))
|
||||
{
|
||||
syntax_error (filename, lnum,
|
||||
_("extra characters following action `%s'"),
|
||||
act, NULL, NULL, NULL);
|
||||
error = 1;
|
||||
}
|
||||
break;
|
||||
|
||||
case get_varname:
|
||||
if (c == '=')
|
||||
{
|
||||
if (varlen == 0)
|
||||
{
|
||||
syntax_error (filename, lnum, _("missing variable name"),
|
||||
NULL, NULL, NULL, NULL);
|
||||
error = 1;
|
||||
}
|
||||
state = get_value;
|
||||
vallen = 0;
|
||||
}
|
||||
else if (c == '\n' || isspace (c))
|
||||
{
|
||||
syntax_error (filename, lnum,
|
||||
_("missing `=' immediately after variable name"),
|
||||
NULL, NULL, NULL, NULL);
|
||||
error = 1;
|
||||
}
|
||||
else if (varlen < sizeof varn)
|
||||
varn[varlen++] = c;
|
||||
else
|
||||
{
|
||||
syntax_error (filename, lnum, _("variable name too long"),
|
||||
NULL, NULL, NULL, NULL);
|
||||
error = 1;
|
||||
}
|
||||
break;
|
||||
|
||||
case get_value:
|
||||
if (c == '\n')
|
||||
{
|
||||
state = start_of_line;
|
||||
if (!(add_to_section (§ions[section], varn, varlen)
|
||||
&& add_to_section (§ions[section], "", 1)
|
||||
&& add_to_section (§ions[section], val, vallen)
|
||||
&& add_to_section (§ions[section], "", 1)))
|
||||
{
|
||||
syntax_error (filename, lnum, _("section too long"),
|
||||
NULL, NULL, NULL, NULL);
|
||||
error = 1;
|
||||
}
|
||||
}
|
||||
else if (vallen < sizeof val)
|
||||
val[vallen++] = c;
|
||||
else
|
||||
{
|
||||
syntax_error (filename, lnum, _("value too long"),
|
||||
NULL, NULL, NULL, NULL);
|
||||
error = 1;
|
||||
}
|
||||
break;
|
||||
|
||||
case get_equals:
|
||||
case got_equals:
|
||||
case got_varname:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
#undef To_seq
|
||||
|
||||
return !error;
|
||||
}
|
||||
|
||||
/* Add some characters to a section's data. Return true if all the
|
||||
characters fit, or false if the section's size limit was exceeded.
|
||||
*/
|
||||
static int
|
||||
add_to_section (struct sect *s, const char *str, unsigned int len)
|
||||
{
|
||||
if (s->cur + len > sizeof s->data)
|
||||
return 0;
|
||||
strncpy ((char *) s->data + s->cur, str, len);
|
||||
s->cur += len;
|
||||
return 1;
|
||||
}
|
||||
|
||||
/* Translate from an action name to its numeric code. This uses the
|
||||
auto-generated array in key.c.
|
||||
*/
|
||||
static int
|
||||
lookup_action (const char *actname)
|
||||
{
|
||||
int i;
|
||||
|
||||
if (strcmp ("invalid", actname) == 0)
|
||||
return A_INVALID;
|
||||
for (i = 0; function_key_array[i].name != NULL; i++)
|
||||
if (strcmp (function_key_array[i].name, actname) == 0)
|
||||
return function_key_array[i].code;
|
||||
return -1;
|
||||
}
|
||||
|
||||
/* Put an integer to an infokey file.
|
||||
Integers are stored as two bytes, low order first,
|
||||
in radix INFOKEY_RADIX.
|
||||
*/
|
||||
static int
|
||||
putint (int i, FILE *fp)
|
||||
{
|
||||
return fputc (i % INFOKEY_RADIX, fp) != EOF
|
||||
&& fputc ((i / INFOKEY_RADIX) % INFOKEY_RADIX, fp) != EOF;
|
||||
}
|
||||
|
||||
/* Write an entire section to an infokey file. If the section is
|
||||
empty, simply omit it.
|
||||
*/
|
||||
static int
|
||||
putsect (struct sect *s, int code, FILE *fp)
|
||||
{
|
||||
if (s->cur == 0)
|
||||
return 1;
|
||||
return fputc (code, fp) != EOF
|
||||
&& putint (s->cur, fp)
|
||||
&& fwrite (s->data, s->cur, 1, fp) == 1;
|
||||
}
|
||||
|
||||
/* Write an entire infokey file, given an array containing its sections.
|
||||
*/
|
||||
static int
|
||||
write_infokey_file (FILE *fp, struct sect *sections)
|
||||
{
|
||||
/* Get rid of sections with no effect. */
|
||||
if (sections[info].cur == 1 && sections[info].data[0] == 0)
|
||||
sections[info].cur = 0;
|
||||
if (sections[ea].cur == 1 && sections[ea].data[0] == 0)
|
||||
sections[ea].cur = 0;
|
||||
|
||||
/* Write all parts of the file out in order (no lseeks),
|
||||
checking for errors all the way. */
|
||||
return fputc (INFOKEY_MAGIC_S0, fp) != EOF
|
||||
&& fputc (INFOKEY_MAGIC_S1, fp) != EOF
|
||||
&& fputc (INFOKEY_MAGIC_S2, fp) != EOF
|
||||
&& fputc (INFOKEY_MAGIC_S3, fp) != EOF
|
||||
&& fputs (VERSION, fp) != EOF
|
||||
&& fputc ('\0', fp) != EOF
|
||||
&& putsect (§ions[info], INFOKEY_SECTION_INFO, fp)
|
||||
&& putsect (§ions[ea], INFOKEY_SECTION_EA, fp)
|
||||
&& putsect (§ions[var], INFOKEY_SECTION_VAR, fp)
|
||||
&& fputc (INFOKEY_MAGIC_E0, fp) != EOF
|
||||
&& fputc (INFOKEY_MAGIC_E1, fp) != EOF
|
||||
&& fputc (INFOKEY_MAGIC_E2, fp) != EOF
|
||||
&& fputc (INFOKEY_MAGIC_E3, fp) != EOF;
|
||||
}
|
||||
|
||||
|
||||
/* Error handling. */
|
||||
|
||||
/* Give the user a "syntax error" message in the form
|
||||
progname: "filename", line N: message
|
||||
*/
|
||||
static void
|
||||
error_message (int error_code, const char *fmt,
|
||||
const void *a1, const void *a2, const void *a3, const void *a4)
|
||||
{
|
||||
fprintf (stderr, "%s: ", program_name);
|
||||
fprintf (stderr, fmt, a1, a2, a3, a4);
|
||||
if (error_code)
|
||||
fprintf (stderr, " - %s", strerror (error_code));
|
||||
fprintf (stderr, "\n");
|
||||
}
|
||||
|
||||
/* Give the user a generic error message in the form
|
||||
progname: message
|
||||
*/
|
||||
static void
|
||||
syntax_error (const char *filename,
|
||||
unsigned int linenum, const char *fmt,
|
||||
const void *a1, const void *a2, const void *a3, const void *a4)
|
||||
{
|
||||
fprintf (stderr, "%s: ", program_name);
|
||||
fprintf (stderr, _("\"%s\", line %u: "), filename, linenum);
|
||||
fprintf (stderr, fmt, a1, a2, a3, a4);
|
||||
fprintf (stderr, "\n");
|
||||
}
|
||||
|
||||
/* Produce a gentle rtfm. */
|
||||
static void
|
||||
suggest_help (void)
|
||||
{
|
||||
fprintf (stderr, _("Try --help for more information.\n"));
|
||||
}
|
||||
|
||||
/* Produce a scaled down description of the available options to Info. */
|
||||
static void
|
||||
short_help (void)
|
||||
{
|
||||
printf (_("\
|
||||
Usage: %s [OPTION]... [INPUT-FILE]\n\
|
||||
\n\
|
||||
Compile infokey source file to infokey file. Reads INPUT-FILE (default\n\
|
||||
$HOME/.infokey) and writes compiled key file to (by default) $HOME/.info.\n\
|
||||
\n\
|
||||
Options:\n\
|
||||
--output FILE output to FILE instead of $HOME/.info\n\
|
||||
--help display this help and exit.\n\
|
||||
--version display version information and exit.\n\
|
||||
"), program_name);
|
||||
|
||||
puts (_("\n\
|
||||
Email bug reports to bug-texinfo@gnu.org,\n\
|
||||
general questions and discussion to help-texinfo@gnu.org.\n\
|
||||
Texinfo home page: http://www.gnu.org/software/texinfo/"));
|
||||
|
||||
xexit (0);
|
||||
}
|
130
external/gpl2/texinfo/dist/info/infokey.h
vendored
Normal file
130
external/gpl2/texinfo/dist/info/infokey.h
vendored
Normal file
@ -0,0 +1,130 @@
|
||||
/* $NetBSD: infokey.h,v 1.1.1.1 2016/01/14 00:11:29 christos Exp $ */
|
||||
|
||||
/* infokey.h -- Custom keystroke definition support.
|
||||
Id: infokey.h,v 1.2 2004/04/11 17:56:45 karl Exp
|
||||
|
||||
Copyright (C) 1999, 2002 Free Software Foundation, Inc.
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2, or (at your option)
|
||||
any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program; if not, write to the Free Software
|
||||
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
|
||||
Written by Andrew Bettison <andrewb@zip.com.au>.
|
||||
|
||||
This design was derived from the "lesskey" system in less 3.4.0. by
|
||||
Mark Nudelman.
|
||||
|
||||
The following terminology is confusing:
|
||||
source file = $HOME/.infokey
|
||||
infokey file = $HOME/.info
|
||||
Oh, well.
|
||||
*/
|
||||
|
||||
|
||||
/* Default source file, where user writes text definitions to be
|
||||
compiled to the infokey file. MS-DOS doesn't allow leading
|
||||
dots in file names. */
|
||||
#ifdef __MSDOS__
|
||||
#define INFOKEY_SRCFILE "_infokey"
|
||||
#else
|
||||
#define INFOKEY_SRCFILE ".infokey"
|
||||
#endif
|
||||
|
||||
/* Default "infokey file", where compiled user defs are kept and
|
||||
read by Info. MS-DOS doesn't allow leading dots in file names. */
|
||||
#ifdef __MSDOS__
|
||||
#define INFOKEY_FILE "_info"
|
||||
#else
|
||||
#define INFOKEY_FILE ".info"
|
||||
#endif
|
||||
|
||||
/*
|
||||
Format of entire infokey file:
|
||||
|
||||
4 bytes magic number S
|
||||
X bytes version string
|
||||
1 byte '\0' terminator
|
||||
|
||||
any number of sections:
|
||||
1 byte section id
|
||||
2 bytes section length (N)
|
||||
N bytes section definitions: format depends on section
|
||||
|
||||
4 bytes magic number E
|
||||
|
||||
Format of INFO and EA sections:
|
||||
|
||||
1 byte flag: 1 == suppress default key bindings
|
||||
Repeat:
|
||||
X bytes key sequence
|
||||
1 byte '\0' terminator
|
||||
1 byte action code (A_xxx)
|
||||
|
||||
Format of VAR section:
|
||||
|
||||
Repeat:
|
||||
X bytes variable name
|
||||
1 byte '\0' terminator
|
||||
Y bytes value
|
||||
1 byte '\0' terminator
|
||||
|
||||
*/
|
||||
|
||||
#define INFOKEY_NMAGIC 8
|
||||
|
||||
#define INFOKEY_MAGIC_S0 '\001'
|
||||
#define INFOKEY_MAGIC_S1 'I'
|
||||
#define INFOKEY_MAGIC_S2 'n'
|
||||
#define INFOKEY_MAGIC_S3 'f'
|
||||
|
||||
#define INFOKEY_SECTION_INFO 'i'
|
||||
#define INFOKEY_SECTION_EA 'e'
|
||||
#define INFOKEY_SECTION_VAR 'v'
|
||||
|
||||
#define INFOKEY_MAGIC_E0 'A'
|
||||
#define INFOKEY_MAGIC_E1 'l'
|
||||
#define INFOKEY_MAGIC_E2 'f'
|
||||
#define INFOKEY_MAGIC_E3 'n'
|
||||
|
||||
#define INFOKEY_RADIX 64
|
||||
#define INFOKEY_MAX_SECTIONLEN 500
|
||||
#define INFOKEY_MAX_DEFLEN 16
|
||||
|
||||
#define A_MAX_COMMAND 120
|
||||
#define A_INVALID 121
|
||||
|
||||
/* Character transformations (independent of info's own) */
|
||||
|
||||
#define CONTROL(c) ((c) & 0x1f)
|
||||
#define ISCONTROL(c) (((c) & ~0x1f) == 0)
|
||||
#define META(c) ((c) | 0x80)
|
||||
#define UNMETA(c) ((c) & ~0x80)
|
||||
#define ISMETA(c) (((c) & 0x80) != 0)
|
||||
|
||||
/* Special keys (keys which output different strings on different terminals) */
|
||||
|
||||
#define SK_ESCAPE CONTROL('k')
|
||||
#define SK_RIGHT_ARROW 1
|
||||
#define SK_LEFT_ARROW 2
|
||||
#define SK_UP_ARROW 3
|
||||
#define SK_DOWN_ARROW 4
|
||||
#define SK_PAGE_UP 5
|
||||
#define SK_PAGE_DOWN 6
|
||||
#define SK_HOME 7
|
||||
#define SK_END 8
|
||||
#define SK_DELETE 9
|
||||
#define SK_INSERT 10
|
||||
#define SK_CTL_LEFT_ARROW 11
|
||||
#define SK_CTL_RIGHT_ARROW 12
|
||||
#define SK_CTL_DELETE 13
|
||||
#define SK_LITERAL 40
|
1833
external/gpl2/texinfo/dist/info/infomap.c
vendored
Normal file
1833
external/gpl2/texinfo/dist/info/infomap.c
vendored
Normal file
File diff suppressed because it is too large
Load Diff
84
external/gpl2/texinfo/dist/info/infomap.h
vendored
Normal file
84
external/gpl2/texinfo/dist/info/infomap.h
vendored
Normal file
@ -0,0 +1,84 @@
|
||||
/* $NetBSD: infomap.h,v 1.1.1.1 2016/01/14 00:11:29 christos Exp $ */
|
||||
|
||||
/* infomap.h -- description of a keymap in Info and related functions.
|
||||
Id: infomap.h,v 1.3 2004/04/11 17:56:46 karl Exp
|
||||
|
||||
Copyright (C) 1993, 2001, 2004 Free Software Foundation, Inc.
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2, or (at your option)
|
||||
any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program; if not, write to the Free Software
|
||||
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
|
||||
Written by Brian Fox (bfox@ai.mit.edu). */
|
||||
|
||||
#ifndef INFOMAP_H
|
||||
#define INFOMAP_H
|
||||
|
||||
#include "info.h"
|
||||
|
||||
#define ESC '\033'
|
||||
#define DEL '\177'
|
||||
#define TAB '\011'
|
||||
#define RET '\r'
|
||||
#define LFD '\n'
|
||||
#define SPC ' '
|
||||
|
||||
#define meta_character_threshold (DEL + 1)
|
||||
#define control_character_threshold (SPC)
|
||||
|
||||
#define meta_character_bit 0x80
|
||||
#define control_character_bit 0x40
|
||||
|
||||
#define Meta_p(c) (((c) > meta_character_threshold))
|
||||
#define Control_p(c) ((c) < control_character_threshold)
|
||||
|
||||
#define Meta(c) ((c) | (meta_character_bit))
|
||||
#define UnMeta(c) ((c) & (~meta_character_bit))
|
||||
#define Control(c) ((toupper (c)) & (~control_character_bit))
|
||||
#define UnControl(c) (tolower ((c) | control_character_bit))
|
||||
|
||||
/* A keymap contains one entry for each key in the ASCII set.
|
||||
Each entry consists of a type and a pointer.
|
||||
FUNCTION is the address of a function to run, or the
|
||||
address of a keymap to indirect through.
|
||||
TYPE says which kind of thing FUNCTION is. */
|
||||
typedef struct keymap_entry
|
||||
{
|
||||
char type;
|
||||
InfoCommand *function;
|
||||
} KEYMAP_ENTRY;
|
||||
|
||||
typedef KEYMAP_ENTRY *Keymap;
|
||||
|
||||
/* The values that TYPE can have in a keymap entry. */
|
||||
#define ISFUNC 0
|
||||
#define ISKMAP 1
|
||||
|
||||
extern Keymap info_keymap;
|
||||
extern Keymap echo_area_keymap;
|
||||
|
||||
/* Return a new keymap which has all the uppercase letters mapped to run
|
||||
the function info_do_lowercase_version (). */
|
||||
extern Keymap keymap_make_keymap (void);
|
||||
|
||||
/* Return a new keymap which is a copy of MAP. */
|
||||
extern Keymap keymap_copy_keymap (Keymap map, Keymap rootmap,
|
||||
Keymap newroot);
|
||||
|
||||
/* Free MAP and it's descendents. */
|
||||
extern void keymap_discard_keymap (Keymap map, Keymap rootmap);
|
||||
|
||||
/* Initialize the info keymaps. */
|
||||
extern void initialize_info_keymaps (void);
|
||||
|
||||
#endif /* not INFOMAP_H */
|
37
external/gpl2/texinfo/dist/info/key.h
vendored
Normal file
37
external/gpl2/texinfo/dist/info/key.h
vendored
Normal file
@ -0,0 +1,37 @@
|
||||
/* $NetBSD: key.h,v 1.1.1.1 2016/01/14 00:11:29 christos Exp $ */
|
||||
|
||||
/* key.h -- Structure associating function names with numeric codes. */
|
||||
|
||||
/* This file is part of GNU Info, a program for reading online documentation
|
||||
stored in Info format.
|
||||
|
||||
Copyright (C) 1993 Free Software Foundation, Inc.
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2, or (at your option)
|
||||
any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program; if not, write to the Free Software
|
||||
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
|
||||
Written by Andrew Bettison <andrewb@zip.com.au> */
|
||||
|
||||
#if !defined (KEY_H)
|
||||
#define KEY_H
|
||||
|
||||
typedef struct {
|
||||
char *name;
|
||||
unsigned char code;
|
||||
}
|
||||
FUNCTION_KEY;
|
||||
|
||||
extern FUNCTION_KEY function_key_array[];
|
||||
|
||||
#endif /* !KEY_H */
|
216
external/gpl2/texinfo/dist/info/m-x.c
vendored
Normal file
216
external/gpl2/texinfo/dist/info/m-x.c
vendored
Normal file
@ -0,0 +1,216 @@
|
||||
/* $NetBSD: m-x.c,v 1.1.1.1 2016/01/14 00:11:29 christos Exp $ */
|
||||
|
||||
/* m-x.c -- Meta-x minibuffer reader.
|
||||
Id: m-x.c,v 1.3 2004/04/11 17:56:46 karl Exp
|
||||
|
||||
Copyright (C) 1993, 1997, 1998, 2001, 2002, 2004 Free Software
|
||||
Foundation, Inc.
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2, or (at your option)
|
||||
any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program; if not, write to the Free Software
|
||||
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
|
||||
Originally written by Brian Fox (bfox@ai.mit.edu). */
|
||||
|
||||
#include "info.h"
|
||||
#include "funs.h"
|
||||
|
||||
/* **************************************************************** */
|
||||
/* */
|
||||
/* Reading Named Commands */
|
||||
/* */
|
||||
/* **************************************************************** */
|
||||
|
||||
/* Read the name of an Info function in the echo area and return the
|
||||
name. A return value of NULL indicates that no function name could
|
||||
be read. */
|
||||
char *
|
||||
read_function_name (char *prompt, WINDOW *window)
|
||||
{
|
||||
register int i;
|
||||
char *line;
|
||||
REFERENCE **array = (REFERENCE **)NULL;
|
||||
int array_index = 0, array_slots = 0;
|
||||
|
||||
/* Make an array of REFERENCE which actually contains the names of
|
||||
the functions available in Info. */
|
||||
for (i = 0; function_doc_array[i].func; i++)
|
||||
{
|
||||
REFERENCE *entry;
|
||||
|
||||
entry = (REFERENCE *)xmalloc (sizeof (REFERENCE));
|
||||
entry->label = xstrdup (function_doc_array[i].func_name);
|
||||
entry->nodename = (char *)NULL;
|
||||
entry->filename = (char *)NULL;
|
||||
|
||||
add_pointer_to_array
|
||||
(entry, array_index, array, array_slots, 200, REFERENCE *);
|
||||
}
|
||||
|
||||
line = info_read_completing_in_echo_area (window, prompt, array);
|
||||
|
||||
info_free_references (array);
|
||||
|
||||
if (!echo_area_is_active)
|
||||
window_clear_echo_area ();
|
||||
|
||||
return (line);
|
||||
}
|
||||
|
||||
DECLARE_INFO_COMMAND (describe_command,
|
||||
_("Read the name of an Info command and describe it"))
|
||||
{
|
||||
char *line;
|
||||
|
||||
line = read_function_name ((char *) _("Describe command: "), window);
|
||||
|
||||
if (!line)
|
||||
{
|
||||
info_abort_key (active_window, count, key);
|
||||
return;
|
||||
}
|
||||
|
||||
/* Describe the function named in "LINE". */
|
||||
if (*line)
|
||||
{
|
||||
InfoCommand *cmd = named_function (line);
|
||||
|
||||
if (!cmd)
|
||||
return;
|
||||
|
||||
window_message_in_echo_area ("%s: %s.",
|
||||
line, function_documentation (cmd));
|
||||
}
|
||||
free (line);
|
||||
}
|
||||
|
||||
DECLARE_INFO_COMMAND (info_execute_command,
|
||||
_("Read a command name in the echo area and execute it"))
|
||||
{
|
||||
char *line;
|
||||
char *keys;
|
||||
char *prompt;
|
||||
|
||||
prompt = (char *)xmalloc (20);
|
||||
|
||||
keys = where_is (info_keymap, InfoCmd(info_execute_command));
|
||||
/* If the where_is () function thinks that this command doesn't exist,
|
||||
there's something very wrong! */
|
||||
if (!keys)
|
||||
abort();
|
||||
|
||||
if (info_explicit_arg || count != 1)
|
||||
sprintf (prompt, "%d %s ", count, keys);
|
||||
else
|
||||
sprintf (prompt, "%s ", keys);
|
||||
|
||||
/* Ask the completer to read a reference for us. */
|
||||
line = read_function_name (prompt, window);
|
||||
|
||||
/* User aborted? */
|
||||
if (!line)
|
||||
{
|
||||
info_abort_key (active_window, count, key);
|
||||
return;
|
||||
}
|
||||
|
||||
/* User accepted "default"? (There is none.) */
|
||||
if (!*line)
|
||||
{
|
||||
free (line);
|
||||
return;
|
||||
}
|
||||
|
||||
/* User wants to execute a named command. Do it. */
|
||||
{
|
||||
InfoCommand *command;
|
||||
|
||||
if ((active_window != the_echo_area) &&
|
||||
(strncmp (line, "echo-area-", 10) == 0))
|
||||
{
|
||||
free (line);
|
||||
info_error ((char *) _("Cannot execute an `echo-area' command here."),
|
||||
NULL, NULL);
|
||||
return;
|
||||
}
|
||||
|
||||
command = named_function (line);
|
||||
free (line);
|
||||
|
||||
if (!command)
|
||||
return;
|
||||
|
||||
if (InfoFunction(command))
|
||||
(*InfoFunction(command)) (active_window, count, 0);
|
||||
else
|
||||
info_error ((char *) _("Undefined command: %s"), line, NULL);
|
||||
}
|
||||
}
|
||||
|
||||
/* Okay, now that we have M-x, let the user set the screen height. */
|
||||
DECLARE_INFO_COMMAND (set_screen_height,
|
||||
_("Set the height of the displayed window"))
|
||||
{
|
||||
int new_height, old_height = screenheight;
|
||||
|
||||
if (info_explicit_arg || count != 1)
|
||||
new_height = count;
|
||||
else
|
||||
{
|
||||
char prompt[80];
|
||||
char *line;
|
||||
|
||||
new_height = screenheight;
|
||||
|
||||
sprintf (prompt, _("Set screen height to (%d): "), new_height);
|
||||
|
||||
line = info_read_in_echo_area (window, prompt);
|
||||
|
||||
/* If the user aborted, do that now. */
|
||||
if (!line)
|
||||
{
|
||||
info_abort_key (active_window, count, 0);
|
||||
return;
|
||||
}
|
||||
|
||||
/* Find out what the new height is supposed to be. */
|
||||
if (*line)
|
||||
new_height = atoi (line);
|
||||
|
||||
/* Clear the echo area if it isn't active. */
|
||||
if (!echo_area_is_active)
|
||||
window_clear_echo_area ();
|
||||
|
||||
free (line);
|
||||
}
|
||||
|
||||
terminal_clear_screen ();
|
||||
display_clear_display (the_display);
|
||||
screenheight = new_height;
|
||||
#ifdef SET_SCREEN_SIZE_HELPER
|
||||
SET_SCREEN_SIZE_HELPER;
|
||||
#endif
|
||||
if (screenheight == old_height)
|
||||
{
|
||||
/* Display dimensions didn't actually change, so
|
||||
window_new_screen_size won't do anything, but we've
|
||||
already cleared the display above. Undo the damage. */
|
||||
window_mark_chain (windows, W_UpdateWindow);
|
||||
display_update_display (windows);
|
||||
}
|
||||
else
|
||||
{
|
||||
display_initialize_display (screenwidth, screenheight);
|
||||
window_new_screen_size (screenwidth, screenheight);
|
||||
}
|
||||
}
|
580
external/gpl2/texinfo/dist/info/makedoc.c
vendored
Normal file
580
external/gpl2/texinfo/dist/info/makedoc.c
vendored
Normal file
@ -0,0 +1,580 @@
|
||||
/* $NetBSD: makedoc.c,v 1.1.1.1 2016/01/14 00:11:29 christos Exp $ */
|
||||
|
||||
/* makedoc.c -- make doc.c and funs.h from input files.
|
||||
Id: makedoc.c,v 1.4 2004/04/11 17:56:46 karl Exp
|
||||
|
||||
Copyright (C) 1993, 1997, 1998, 1999, 2001, 2002, 2003, 2004 Free Software
|
||||
Foundation, Inc.
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2, or (at your option)
|
||||
any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program; if not, write to the Free Software
|
||||
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
|
||||
Originally written by Brian Fox (bfox@ai.mit.edu). */
|
||||
|
||||
/* This program grovels the contents of the source files passed as arguments
|
||||
and writes out a file of function pointers and documentation strings, and
|
||||
a header file which describes the contents. This only does the functions
|
||||
declared with DECLARE_INFO_COMMAND. */
|
||||
|
||||
#include "info.h"
|
||||
#include "infokey.h"
|
||||
|
||||
static void fatal_file_error (char *filename);
|
||||
|
||||
/* Name of the header file which receives the declarations of functions. */
|
||||
static char *funs_filename = "funs.h";
|
||||
|
||||
/* Name of the documentation to function pointer file. */
|
||||
static char *doc_filename = "doc.c";
|
||||
static char *key_filename = "key.c";
|
||||
|
||||
static char *doc_header[] = {
|
||||
"/* doc.c -- Generated structure containing function names and doc strings.",
|
||||
"",
|
||||
" This file was automatically made from various source files with the",
|
||||
" command `%s'. DO NOT EDIT THIS FILE, only `%s.c'.",
|
||||
(char *)NULL
|
||||
};
|
||||
|
||||
static char *doc_header_1[] = {
|
||||
" An entry in the array FUNCTION_DOC_ARRAY is made for each command",
|
||||
" found in the above files; each entry consists of a function pointer,",
|
||||
#if defined (NAMED_FUNCTIONS)
|
||||
" a string which is the user-visible name of the function,",
|
||||
#endif /* NAMED_FUNCTIONS */
|
||||
" and a string which documents its purpose. */",
|
||||
"",
|
||||
"#include \"info.h\"",
|
||||
"#include \"funs.h\"",
|
||||
"",
|
||||
"FUNCTION_DOC function_doc_array[] = {",
|
||||
"",
|
||||
(char *)NULL
|
||||
};
|
||||
|
||||
static char *key_header[] = {
|
||||
"/* key.c -- Generated array containing function names.",
|
||||
"",
|
||||
" This file was automatically made from various source files with the",
|
||||
" command \"%s\". DO NOT EDIT THIS FILE, only \"%s.c\".",
|
||||
"",
|
||||
(char *)NULL
|
||||
};
|
||||
|
||||
static char *key_header_1[] = {
|
||||
" An entry in the array FUNCTION_KEY_ARRAY is made for each command",
|
||||
" found in the above files; each entry consists of",
|
||||
" a string which is the user-visible name of the function. */",
|
||||
"",
|
||||
"#include \"key.h\"",
|
||||
"#include \"funs.h\"",
|
||||
"",
|
||||
"FUNCTION_KEY function_key_array[] = {",
|
||||
"",
|
||||
(char *)NULL
|
||||
};
|
||||
|
||||
/* How to remember the locations of the functions found so that Emacs
|
||||
can use the information in a tag table. */
|
||||
typedef struct {
|
||||
char *name; /* Name of the tag. */
|
||||
int line; /* Line number at which it appears. */
|
||||
long char_offset; /* Character offset at which it appears. */
|
||||
} EMACS_TAG;
|
||||
|
||||
typedef struct {
|
||||
char *filename; /* Name of the file containing entries. */
|
||||
long entrylen; /* Total number of characters in tag block. */
|
||||
EMACS_TAG **entries; /* Entries found in FILENAME. */
|
||||
int entries_index;
|
||||
int entries_slots;
|
||||
} EMACS_TAG_BLOCK;
|
||||
|
||||
EMACS_TAG_BLOCK **emacs_tags = (EMACS_TAG_BLOCK **)NULL;
|
||||
int emacs_tags_index = 0;
|
||||
int emacs_tags_slots = 0;
|
||||
|
||||
#define DECLARATION_STRING "\nDECLARE_INFO_COMMAND"
|
||||
|
||||
static void process_one_file (char *filename, FILE *doc_stream,
|
||||
FILE *key_stream, FILE *funs_stream);
|
||||
static void maybe_dump_tags (FILE *stream);
|
||||
static FILE *must_fopen (char *filename, char *mode);
|
||||
static void init_func_key (unsigned int val);
|
||||
static unsigned int next_func_key (void);
|
||||
|
||||
int
|
||||
main (int argc, char **argv)
|
||||
{
|
||||
register int i;
|
||||
int tags_only = 0;
|
||||
FILE *funs_stream, *doc_stream;
|
||||
FILE *key_stream;
|
||||
|
||||
#if STRIP_DOT_EXE
|
||||
{
|
||||
char *dot = strrchr (argv[0], '.');
|
||||
|
||||
if (dot && FILENAME_CMP (dot, ".exe") == 0)
|
||||
*dot = 0;
|
||||
}
|
||||
#endif
|
||||
|
||||
for (i = 1; i < argc; i++)
|
||||
if (strcmp (argv[i], "-tags") == 0)
|
||||
{
|
||||
tags_only++;
|
||||
break;
|
||||
}
|
||||
|
||||
if (tags_only)
|
||||
{
|
||||
funs_filename = NULL_DEVICE;
|
||||
doc_filename = NULL_DEVICE;
|
||||
key_filename = NULL_DEVICE;
|
||||
}
|
||||
|
||||
funs_stream = must_fopen (funs_filename, "w");
|
||||
doc_stream = must_fopen (doc_filename, "w");
|
||||
key_stream = must_fopen (key_filename, "w");
|
||||
|
||||
fprintf (funs_stream,
|
||||
"/* %s -- Generated declarations for Info commands. */\n\n\
|
||||
#include \"info.h\"\n",
|
||||
funs_filename);
|
||||
|
||||
for (i = 0; doc_header[i]; i++)
|
||||
{
|
||||
fprintf (doc_stream, doc_header[i], argv[0], argv[0]);
|
||||
fprintf (doc_stream, "\n");
|
||||
}
|
||||
|
||||
fprintf (doc_stream,
|
||||
_(" Source files groveled to make this file include:\n\n"));
|
||||
|
||||
for (i = 0; key_header[i]; i++)
|
||||
{
|
||||
fprintf (key_stream, key_header[i], argv[0], argv[0]);
|
||||
fprintf (key_stream, "\n");
|
||||
}
|
||||
fprintf (key_stream,
|
||||
_(" Source files groveled to make this file include:\n\n"));
|
||||
|
||||
for (i = 1; i < argc; i++)
|
||||
{
|
||||
fprintf (doc_stream, "\t%s\n", argv[i]);
|
||||
fprintf (key_stream, "\t%s\n", argv[i]);
|
||||
}
|
||||
|
||||
fprintf (doc_stream, "\n");
|
||||
for (i = 0; doc_header_1[i]; i++)
|
||||
fprintf (doc_stream, "%s\n", doc_header_1[i]);
|
||||
|
||||
fprintf (key_stream, "\n");
|
||||
for (i = 0; key_header_1[i]; i++)
|
||||
fprintf (key_stream, "%s\n", key_header_1[i]);
|
||||
|
||||
init_func_key(0);
|
||||
|
||||
for (i = 1; i < argc; i++)
|
||||
{
|
||||
char *curfile;
|
||||
curfile = argv[i];
|
||||
|
||||
if (*curfile == '-')
|
||||
continue;
|
||||
|
||||
fprintf (doc_stream, "/* Commands found in \"%s\". */\n", curfile);
|
||||
fprintf (key_stream, "/* Commands found in \"%s\". */\n", curfile);
|
||||
fprintf (funs_stream, "\n/* Functions declared in \"%s\". */\n",
|
||||
curfile);
|
||||
|
||||
process_one_file (curfile, doc_stream, key_stream, funs_stream);
|
||||
}
|
||||
|
||||
#if defined (INFOKEY)
|
||||
|
||||
#if defined (NAMED_FUNCTIONS)
|
||||
fprintf (doc_stream,
|
||||
" { (VFunction *)NULL, (char *)NULL, (FUNCTION_KEYSEQ *)NULL, (char *)NULL }\n};\n");
|
||||
#else /* !NAMED_FUNCTIONS */
|
||||
fprintf (doc_stream, " { (VFunction *)NULL, (FUNCTION_KEYSEQ *)NULL, (char *)NULL }\n};\n");
|
||||
#endif /* !NAMED_FUNCTIONS */
|
||||
|
||||
#else /* !INFOKEY */
|
||||
|
||||
#if defined (NAMED_FUNCTIONS)
|
||||
fprintf (doc_stream,
|
||||
" { (VFunction *)NULL, (char *)NULL, (char *)NULL }\n};\n");
|
||||
#else /* !NAMED_FUNCTIONS */
|
||||
fprintf (doc_stream, " { (VFunction *)NULL, (char *)NULL }\n};\n");
|
||||
#endif /* !NAMED_FUNCTIONS */
|
||||
|
||||
#endif /* !INFOKEY */
|
||||
|
||||
fprintf (key_stream, " { (char *)NULL, 0 }\n};\n");
|
||||
fprintf (funs_stream, "\n#define A_NCOMMANDS %u\n", next_func_key());
|
||||
|
||||
fclose (funs_stream);
|
||||
fclose (doc_stream);
|
||||
fclose (key_stream);
|
||||
|
||||
if (tags_only)
|
||||
maybe_dump_tags (stdout);
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* Dumping out the contents of an Emacs tags table. */
|
||||
static void
|
||||
maybe_dump_tags (FILE *stream)
|
||||
{
|
||||
register int i;
|
||||
|
||||
/* Emacs needs its TAGS file to be in Unix text format (i.e., only
|
||||
newline at end of every line, no CR), so when we generate a
|
||||
TAGS table, we must switch the output stream to binary mode.
|
||||
(If the table is written to a terminal, this is obviously not needed.) */
|
||||
SET_BINARY (fileno (stream));
|
||||
|
||||
/* Print out the information for each block. */
|
||||
for (i = 0; i < emacs_tags_index; i++)
|
||||
{
|
||||
register int j;
|
||||
register EMACS_TAG_BLOCK *block;
|
||||
register EMACS_TAG *etag;
|
||||
long block_len;
|
||||
|
||||
block_len = 0;
|
||||
block = emacs_tags[i];
|
||||
|
||||
/* Calculate the length of the dumped block first. */
|
||||
for (j = 0; j < block->entries_index; j++)
|
||||
{
|
||||
char digits[30];
|
||||
etag = block->entries[j];
|
||||
block_len += 3 + strlen (etag->name);
|
||||
sprintf (digits, "%d,%ld", etag->line, etag->char_offset);
|
||||
block_len += strlen (digits);
|
||||
}
|
||||
|
||||
/* Print out the defining line. */
|
||||
fprintf (stream, "\f\n%s,%ld\n", block->filename, block_len);
|
||||
|
||||
/* Print out the individual tags. */
|
||||
for (j = 0; j < block->entries_index; j++)
|
||||
{
|
||||
etag = block->entries[j];
|
||||
|
||||
fprintf (stream, "%s,\177%d,%ld\n",
|
||||
etag->name, etag->line, etag->char_offset);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* Keeping track of names, line numbers and character offsets of functions
|
||||
found in source files. */
|
||||
static EMACS_TAG_BLOCK *
|
||||
make_emacs_tag_block (char *filename)
|
||||
{
|
||||
EMACS_TAG_BLOCK *block;
|
||||
|
||||
block = (EMACS_TAG_BLOCK *)xmalloc (sizeof (EMACS_TAG_BLOCK));
|
||||
block->filename = xstrdup (filename);
|
||||
block->entrylen = 0;
|
||||
block->entries = (EMACS_TAG **)NULL;
|
||||
block->entries_index = 0;
|
||||
block->entries_slots = 0;
|
||||
return (block);
|
||||
}
|
||||
|
||||
static void
|
||||
add_tag_to_block (EMACS_TAG_BLOCK *block,
|
||||
char *name, int line, long int char_offset)
|
||||
{
|
||||
EMACS_TAG *tag;
|
||||
|
||||
tag = (EMACS_TAG *)xmalloc (sizeof (EMACS_TAG));
|
||||
tag->name = name;
|
||||
tag->line = line;
|
||||
tag->char_offset = char_offset;
|
||||
add_pointer_to_array (tag, block->entries_index, block->entries,
|
||||
block->entries_slots, 50, EMACS_TAG *);
|
||||
}
|
||||
|
||||
/* Read the file represented by FILENAME into core, and search it for Info
|
||||
function declarations. Output the declarations in various forms to the
|
||||
DOC_STREAM, KEY_STREAM, and FUNS_STREAM. */
|
||||
static void
|
||||
process_one_file (char *filename, FILE *doc_stream,
|
||||
FILE *key_stream, FILE *funs_stream)
|
||||
{
|
||||
int descriptor, decl_len;
|
||||
char *buffer, *decl_str;
|
||||
struct stat finfo;
|
||||
long offset;
|
||||
long file_size;
|
||||
EMACS_TAG_BLOCK *block;
|
||||
|
||||
if (stat (filename, &finfo) == -1)
|
||||
fatal_file_error (filename);
|
||||
|
||||
descriptor = open (filename, O_RDONLY, 0666);
|
||||
|
||||
if (descriptor == -1)
|
||||
fatal_file_error (filename);
|
||||
|
||||
file_size = (long) finfo.st_size;
|
||||
buffer = (char *)xmalloc (1 + file_size);
|
||||
/* On some systems, the buffer will actually contain
|
||||
less characters than the full file's size, because
|
||||
the CR characters are removed from line endings. */
|
||||
file_size = read (descriptor, buffer, file_size);
|
||||
close (descriptor);
|
||||
|
||||
offset = 0;
|
||||
decl_str = DECLARATION_STRING;
|
||||
decl_len = strlen (decl_str);
|
||||
|
||||
block = make_emacs_tag_block (filename);
|
||||
|
||||
while (1)
|
||||
{
|
||||
long point = 0;
|
||||
long line_start = 0;
|
||||
int line_number = 0;
|
||||
|
||||
char *func, *doc;
|
||||
#if defined (INFOKEY) || defined (NAMED_FUNCTIONS)
|
||||
char *func_name;
|
||||
#endif /* INFOKEY || NAMED_FUNCTIONS */
|
||||
|
||||
for (; offset < (file_size - decl_len); offset++)
|
||||
{
|
||||
if (buffer[offset] == '\n')
|
||||
{
|
||||
line_number++;
|
||||
line_start = offset + 1;
|
||||
}
|
||||
|
||||
if (strncmp (buffer + offset, decl_str, decl_len) == 0)
|
||||
{
|
||||
offset += decl_len;
|
||||
point = offset;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (!point)
|
||||
break;
|
||||
|
||||
/* Skip forward until we find the open paren. */
|
||||
while (point < file_size)
|
||||
{
|
||||
if (buffer[point] == '\n')
|
||||
{
|
||||
line_number++;
|
||||
line_start = point + 1;
|
||||
}
|
||||
else if (buffer[point] == '(')
|
||||
break;
|
||||
|
||||
point++;
|
||||
}
|
||||
|
||||
while (point++ < file_size)
|
||||
{
|
||||
if (!whitespace_or_newline (buffer[point]))
|
||||
break;
|
||||
else if (buffer[point] == '\n')
|
||||
{
|
||||
line_number++;
|
||||
line_start = point + 1;
|
||||
}
|
||||
}
|
||||
|
||||
if (point >= file_size)
|
||||
break;
|
||||
|
||||
/* Now looking at name of function. Get it. */
|
||||
for (offset = point; buffer[offset] != ','; offset++);
|
||||
func = (char *)xmalloc (1 + (offset - point));
|
||||
strncpy (func, buffer + point, offset - point);
|
||||
func[offset - point] = '\0';
|
||||
|
||||
/* Remember this tag in the current block. */
|
||||
{
|
||||
char *tag_name;
|
||||
|
||||
tag_name = (char *)xmalloc (1 + (offset - line_start));
|
||||
strncpy (tag_name, buffer + line_start, offset - line_start);
|
||||
tag_name[offset - line_start] = '\0';
|
||||
add_tag_to_block (block, tag_name, line_number, point);
|
||||
}
|
||||
|
||||
#if defined (INFOKEY) || defined (NAMED_FUNCTIONS)
|
||||
/* Generate the user-visible function name from the function's name. */
|
||||
{
|
||||
register int i;
|
||||
char *name_start;
|
||||
|
||||
name_start = func;
|
||||
|
||||
if (strncmp (name_start, "info_", 5) == 0)
|
||||
name_start += 5;
|
||||
|
||||
func_name = xstrdup (name_start);
|
||||
|
||||
/* Fix up "ea" commands. */
|
||||
if (strncmp (func_name, "ea_", 3) == 0)
|
||||
{
|
||||
char *temp_func_name;
|
||||
|
||||
temp_func_name = (char *)xmalloc (10 + strlen (func_name));
|
||||
strcpy (temp_func_name, "echo_area_");
|
||||
strcat (temp_func_name, func_name + 3);
|
||||
free (func_name);
|
||||
func_name = temp_func_name;
|
||||
}
|
||||
|
||||
for (i = 0; func_name[i]; i++)
|
||||
if (func_name[i] == '_')
|
||||
func_name[i] = '-';
|
||||
}
|
||||
#endif /* INFOKEY || NAMED_FUNCTIONS */
|
||||
|
||||
/* Find doc string. */
|
||||
point = offset + 1;
|
||||
|
||||
while (point < file_size)
|
||||
{
|
||||
if (buffer[point] == '\n')
|
||||
{
|
||||
line_number++;
|
||||
line_start = point + 1;
|
||||
}
|
||||
|
||||
if (buffer[point] == '"')
|
||||
break;
|
||||
else
|
||||
point++;
|
||||
}
|
||||
|
||||
offset = point + 1;
|
||||
|
||||
while (offset < file_size)
|
||||
{
|
||||
if (buffer[offset] == '\n')
|
||||
{
|
||||
line_number++;
|
||||
line_start = offset + 1;
|
||||
}
|
||||
|
||||
if (buffer[offset] == '\\')
|
||||
offset += 2;
|
||||
else if (buffer[offset] == '"')
|
||||
break;
|
||||
else
|
||||
offset++;
|
||||
}
|
||||
|
||||
offset++;
|
||||
if (offset >= file_size)
|
||||
break;
|
||||
|
||||
doc = (char *)xmalloc (1 + (offset - point));
|
||||
strncpy (doc, buffer + point, offset - point);
|
||||
doc[offset - point] = '\0';
|
||||
|
||||
#if defined (INFOKEY)
|
||||
|
||||
#if defined (NAMED_FUNCTIONS)
|
||||
fprintf (doc_stream,
|
||||
" { (VFunction *)%s, \"%s\", (FUNCTION_KEYSEQ *)0, %s },\n",
|
||||
func, func_name, doc);
|
||||
#else /* !NAMED_FUNCTIONS */
|
||||
fprintf (doc_stream,
|
||||
" { (VFunction *) %s, (FUNCTION_KEYSEQ *)0, %s },\n", func, doc);
|
||||
#endif /* !NAMED_FUNCTIONS */
|
||||
|
||||
fprintf (key_stream, " { \"%s\", A_%s },\n", func_name, func);
|
||||
|
||||
#else /* !INFOKEY */
|
||||
|
||||
#if defined (NAMED_FUNCTIONS)
|
||||
fprintf (doc_stream, " { %s, \"%s\", %s },\n", func, func_name, doc);
|
||||
#else /* !NAMED_FUNCTIONS */
|
||||
fprintf (doc_stream, " { %s, %s },\n", func, doc);
|
||||
#endif /* !NAMED_FUNCTIONS */
|
||||
|
||||
#endif /* !INFOKEY */
|
||||
|
||||
#if defined (INFOKEY) || defined (NAMED_FUNCTIONS)
|
||||
free (func_name);
|
||||
#endif /* INFOKEY || NAMED_FUNCTIONS */
|
||||
|
||||
#if defined (INFOKEY)
|
||||
fprintf (funs_stream, "#define A_%s %u\n", func, next_func_key());
|
||||
#endif /* INFOKEY */
|
||||
fprintf (funs_stream,
|
||||
"extern void %s (WINDOW *window, int count, unsigned char key);\n",
|
||||
func);
|
||||
free (func);
|
||||
free (doc);
|
||||
}
|
||||
free (buffer);
|
||||
|
||||
/* If we created any tags, remember this file on our global list. Otherwise,
|
||||
free the memory already allocated to it. */
|
||||
if (block->entries)
|
||||
add_pointer_to_array (block, emacs_tags_index, emacs_tags,
|
||||
emacs_tags_slots, 10, EMACS_TAG_BLOCK *);
|
||||
else
|
||||
{
|
||||
free (block->filename);
|
||||
free (block);
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
fatal_file_error (char *filename)
|
||||
{
|
||||
fprintf (stderr, _("Couldn't manipulate the file %s.\n"), filename);
|
||||
xexit (2);
|
||||
}
|
||||
|
||||
static FILE *
|
||||
must_fopen (char *filename, char *mode)
|
||||
{
|
||||
FILE *stream;
|
||||
|
||||
stream = fopen (filename, mode);
|
||||
if (!stream)
|
||||
fatal_file_error (filename);
|
||||
|
||||
return (stream);
|
||||
}
|
||||
|
||||
static unsigned int func_key;
|
||||
|
||||
static void
|
||||
init_func_key(unsigned int val)
|
||||
{
|
||||
func_key = val;
|
||||
}
|
||||
|
||||
static unsigned int
|
||||
next_func_key(void)
|
||||
{
|
||||
return func_key++;
|
||||
}
|
736
external/gpl2/texinfo/dist/info/man.c
vendored
Normal file
736
external/gpl2/texinfo/dist/info/man.c
vendored
Normal file
@ -0,0 +1,736 @@
|
||||
/* $NetBSD: man.c,v 1.1.1.1 2016/01/14 00:11:29 christos Exp $ */
|
||||
|
||||
/* man.c: How to read and format man files.
|
||||
Id: man.c,v 1.4 2004/04/11 17:56:46 karl Exp
|
||||
|
||||
Copyright (C) 1995, 1997, 1998, 1999, 2000, 2002, 2003, 2004 Free Software
|
||||
Foundation, Inc.
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2, or (at your option)
|
||||
any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program; if not, write to the Free Software
|
||||
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
|
||||
Written by Brian Fox Thu May 4 09:17:52 1995 (bfox@ai.mit.edu). */
|
||||
|
||||
#include "info.h"
|
||||
#include <sys/ioctl.h>
|
||||
#include "signals.h"
|
||||
#if defined (HAVE_SYS_TIME_H)
|
||||
#include <sys/time.h>
|
||||
#endif
|
||||
#if defined (HAVE_SYS_WAIT_H)
|
||||
#include <sys/wait.h>
|
||||
#endif
|
||||
|
||||
#include "tilde.h"
|
||||
#include "man.h"
|
||||
|
||||
#if !defined (_POSIX_VERSION)
|
||||
#define pid_t int
|
||||
#endif
|
||||
|
||||
#if defined (FD_SET)
|
||||
# if defined (hpux)
|
||||
# define fd_set_cast(x) (int *)(x)
|
||||
# else
|
||||
# define fd_set_cast(x) (fd_set *)(x)
|
||||
# endif /* !hpux */
|
||||
#endif /* FD_SET */
|
||||
|
||||
#if STRIP_DOT_EXE
|
||||
static char const * const exec_extensions[] = {
|
||||
".exe", ".com", ".bat", ".btm", ".sh", ".ksh", ".pl", ".sed", "", NULL
|
||||
};
|
||||
#else
|
||||
static char const * const exec_extensions[] = { "", NULL };
|
||||
#endif
|
||||
|
||||
static char *read_from_fd (int fd);
|
||||
static void clean_manpage (char *manpage);
|
||||
static NODE *manpage_node_of_file_buffer (FILE_BUFFER *file_buffer,
|
||||
char *pagename);
|
||||
static char *get_manpage_contents (char *pagename);
|
||||
|
||||
NODE *
|
||||
make_manpage_node (char *pagename)
|
||||
{
|
||||
return (info_get_node (MANPAGE_FILE_BUFFER_NAME, pagename));
|
||||
}
|
||||
|
||||
NODE *
|
||||
get_manpage_node (FILE_BUFFER *file_buffer, char *pagename)
|
||||
{
|
||||
NODE *node;
|
||||
|
||||
node = manpage_node_of_file_buffer (file_buffer, pagename);
|
||||
|
||||
if (!node)
|
||||
{
|
||||
char *page;
|
||||
|
||||
page = get_manpage_contents (pagename);
|
||||
|
||||
if (page)
|
||||
{
|
||||
char header[1024];
|
||||
long oldsize, newsize;
|
||||
int hlen, plen;
|
||||
char *old_contents = file_buffer->contents;
|
||||
|
||||
sprintf (header, "\n\n%c\n%s %s, %s %s, %s (dir)\n\n",
|
||||
INFO_COOKIE,
|
||||
INFO_FILE_LABEL, file_buffer->filename,
|
||||
INFO_NODE_LABEL, pagename,
|
||||
INFO_UP_LABEL);
|
||||
oldsize = file_buffer->filesize;
|
||||
hlen = strlen (header);
|
||||
plen = strlen (page);
|
||||
newsize = (oldsize + hlen + plen);
|
||||
file_buffer->contents =
|
||||
(char *)xrealloc (file_buffer->contents, 1 + newsize);
|
||||
memcpy (file_buffer->contents + oldsize, header, hlen);
|
||||
memcpy (file_buffer->contents + oldsize + hlen, page, plen);
|
||||
file_buffer->contents[newsize] = '\0';
|
||||
file_buffer->filesize = newsize;
|
||||
file_buffer->finfo.st_size = newsize;
|
||||
build_tags_and_nodes (file_buffer);
|
||||
free (page);
|
||||
/* We have just relocated file_buffer->contents from under
|
||||
the feet of info_windows[] array. Therefore, all the
|
||||
nodes on that list which are showing man pages have their
|
||||
contents member pointing into the blue. Undo that harm. */
|
||||
if (old_contents && oldsize && old_contents != file_buffer->contents)
|
||||
{
|
||||
int iw;
|
||||
INFO_WINDOW *info_win;
|
||||
char *old_contents_end = old_contents + oldsize;
|
||||
|
||||
for (iw = 0; (info_win = info_windows[iw]); iw++)
|
||||
{
|
||||
int in;
|
||||
|
||||
for (in = 0; in < info_win->nodes_index; in++)
|
||||
{
|
||||
NODE *tmp_node = info_win->nodes[in];
|
||||
|
||||
/* It really only suffices to see that node->filename
|
||||
is "*manpages*". But after several hours of
|
||||
debugging this, would you blame me for being a bit
|
||||
paranoid? */
|
||||
if (tmp_node && tmp_node->filename
|
||||
&& tmp_node->contents
|
||||
&& strcmp (tmp_node->filename,
|
||||
MANPAGE_FILE_BUFFER_NAME) == 0
|
||||
&& tmp_node->contents >= old_contents
|
||||
&& tmp_node->contents + tmp_node->nodelen
|
||||
<= old_contents_end)
|
||||
{
|
||||
info_win->nodes[in] =
|
||||
manpage_node_of_file_buffer (file_buffer,
|
||||
tmp_node->nodename);
|
||||
free (tmp_node->nodename);
|
||||
free (tmp_node);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
node = manpage_node_of_file_buffer (file_buffer, pagename);
|
||||
}
|
||||
|
||||
return (node);
|
||||
}
|
||||
|
||||
FILE_BUFFER *
|
||||
create_manpage_file_buffer (void)
|
||||
{
|
||||
FILE_BUFFER *file_buffer = make_file_buffer ();
|
||||
file_buffer->filename = xstrdup (MANPAGE_FILE_BUFFER_NAME);
|
||||
file_buffer->fullpath = xstrdup (MANPAGE_FILE_BUFFER_NAME);
|
||||
file_buffer->finfo.st_size = 0;
|
||||
file_buffer->filesize = 0;
|
||||
file_buffer->contents = (char *)NULL;
|
||||
file_buffer->flags = (N_IsInternal | N_CannotGC | N_IsManPage);
|
||||
|
||||
return (file_buffer);
|
||||
}
|
||||
|
||||
/* Scan the list of directories in PATH looking for FILENAME. If we find
|
||||
one that is an executable file, return it as a new string. Otherwise,
|
||||
return a NULL pointer. */
|
||||
static char *
|
||||
executable_file_in_path (char *filename, char *path)
|
||||
{
|
||||
struct stat finfo;
|
||||
char *temp_dirname;
|
||||
int statable, dirname_index;
|
||||
|
||||
dirname_index = 0;
|
||||
|
||||
while ((temp_dirname = extract_colon_unit (path, &dirname_index)))
|
||||
{
|
||||
char *temp;
|
||||
char *temp_end;
|
||||
int i;
|
||||
|
||||
/* Expand a leading tilde if one is present. */
|
||||
if (*temp_dirname == '~')
|
||||
{
|
||||
char *expanded_dirname;
|
||||
|
||||
expanded_dirname = tilde_expand_word (temp_dirname);
|
||||
free (temp_dirname);
|
||||
temp_dirname = expanded_dirname;
|
||||
}
|
||||
|
||||
temp = (char *)xmalloc (34 + strlen (temp_dirname) + strlen (filename));
|
||||
strcpy (temp, temp_dirname);
|
||||
if (!IS_SLASH (temp[(strlen (temp)) - 1]))
|
||||
strcat (temp, "/");
|
||||
strcat (temp, filename);
|
||||
temp_end = temp + strlen (temp);
|
||||
|
||||
free (temp_dirname);
|
||||
|
||||
/* Look for FILENAME, possibly with any of the extensions
|
||||
in EXEC_EXTENSIONS[]. */
|
||||
for (i = 0; exec_extensions[i]; i++)
|
||||
{
|
||||
if (exec_extensions[i][0])
|
||||
strcpy (temp_end, exec_extensions[i]);
|
||||
statable = (stat (temp, &finfo) == 0);
|
||||
|
||||
/* If we have found a regular executable file, then use it. */
|
||||
if ((statable) && (S_ISREG (finfo.st_mode)) &&
|
||||
(access (temp, X_OK) == 0))
|
||||
return (temp);
|
||||
}
|
||||
|
||||
free (temp);
|
||||
}
|
||||
return ((char *)NULL);
|
||||
}
|
||||
|
||||
/* Return the full pathname of the system man page formatter. */
|
||||
static char *
|
||||
find_man_formatter (void)
|
||||
{
|
||||
return (executable_file_in_path ("man", (char *)getenv ("PATH")));
|
||||
}
|
||||
|
||||
static char *manpage_pagename = (char *)NULL;
|
||||
static char *manpage_section = (char *)NULL;
|
||||
|
||||
static void
|
||||
get_page_and_section (char *pagename)
|
||||
{
|
||||
register int i;
|
||||
|
||||
if (manpage_pagename)
|
||||
free (manpage_pagename);
|
||||
|
||||
if (manpage_section)
|
||||
free (manpage_section);
|
||||
|
||||
manpage_pagename = (char *)NULL;
|
||||
manpage_section = (char *)NULL;
|
||||
|
||||
for (i = 0; pagename[i] != '\0' && pagename[i] != '('; i++);
|
||||
|
||||
manpage_pagename = (char *)xmalloc (1 + i);
|
||||
strncpy (manpage_pagename, pagename, i);
|
||||
manpage_pagename[i] = '\0';
|
||||
|
||||
if (pagename[i] == '(')
|
||||
{
|
||||
int start;
|
||||
|
||||
start = i + 1;
|
||||
|
||||
for (i = start; pagename[i] != '\0' && pagename[i] != ')'; i++);
|
||||
|
||||
manpage_section = (char *)xmalloc (1 + (i - start));
|
||||
strncpy (manpage_section, pagename + start, (i - start));
|
||||
manpage_section[i - start] = '\0';
|
||||
}
|
||||
}
|
||||
|
||||
#if PIPE_USE_FORK
|
||||
static void
|
||||
reap_children (int sig)
|
||||
{
|
||||
wait (NULL);
|
||||
}
|
||||
#endif
|
||||
|
||||
static char *
|
||||
get_manpage_contents (char *pagename)
|
||||
{
|
||||
static char *formatter_args[4] = { (char *)NULL };
|
||||
int pipes[2];
|
||||
pid_t child;
|
||||
RETSIGTYPE (*sigsave) (int signum);
|
||||
char *formatted_page = NULL;
|
||||
int arg_index = 1;
|
||||
|
||||
if (formatter_args[0] == (char *)NULL)
|
||||
formatter_args[0] = find_man_formatter ();
|
||||
|
||||
if (formatter_args[0] == (char *)NULL)
|
||||
return ((char *)NULL);
|
||||
|
||||
get_page_and_section (pagename);
|
||||
|
||||
if (manpage_section != (char *)NULL)
|
||||
formatter_args[arg_index++] = manpage_section;
|
||||
|
||||
formatter_args[arg_index++] = manpage_pagename;
|
||||
formatter_args[arg_index] = (char *)NULL;
|
||||
|
||||
/* Open a pipe to this program, read the output, and save it away
|
||||
in FORMATTED_PAGE. The reader end of the pipe is pipes[0]; the
|
||||
writer end is pipes[1]. */
|
||||
#if PIPE_USE_FORK
|
||||
pipe (pipes);
|
||||
|
||||
sigsave = signal (SIGCHLD, reap_children);
|
||||
|
||||
child = fork ();
|
||||
if (child == -1)
|
||||
return ((char *)NULL);
|
||||
|
||||
if (child != 0)
|
||||
{
|
||||
/* In the parent, close the writing end of the pipe, and read from
|
||||
the exec'd child. */
|
||||
close (pipes[1]);
|
||||
formatted_page = read_from_fd (pipes[0]);
|
||||
close (pipes[0]);
|
||||
signal (SIGCHLD, sigsave);
|
||||
}
|
||||
else
|
||||
{ /* In the child, close the read end of the pipe, make the write end
|
||||
of the pipe be stdout, and execute the man page formatter. */
|
||||
close (pipes[0]);
|
||||
freopen (NULL_DEVICE, "w", stderr);
|
||||
freopen (NULL_DEVICE, "r", stdin);
|
||||
dup2 (pipes[1], fileno (stdout));
|
||||
|
||||
execv (formatter_args[0], formatter_args);
|
||||
|
||||
/* If we get here, we couldn't exec, so close out the pipe and
|
||||
exit. */
|
||||
close (pipes[1]);
|
||||
xexit (0);
|
||||
}
|
||||
#else /* !PIPE_USE_FORK */
|
||||
/* Cannot fork/exec, but can popen/pclose. */
|
||||
{
|
||||
FILE *fpipe;
|
||||
char *cmdline = xmalloc (strlen (formatter_args[0])
|
||||
+ strlen (manpage_pagename)
|
||||
+ (arg_index > 2 ? strlen (manpage_section) : 0)
|
||||
+ 3);
|
||||
int save_stderr = dup (fileno (stderr));
|
||||
int fd_err = open (NULL_DEVICE, O_WRONLY, 0666);
|
||||
|
||||
if (fd_err > 2)
|
||||
dup2 (fd_err, fileno (stderr)); /* Don't print errors. */
|
||||
sprintf (cmdline, "%s %s %s", formatter_args[0], manpage_pagename,
|
||||
arg_index > 2 ? manpage_section : "");
|
||||
fpipe = popen (cmdline, "r");
|
||||
free (cmdline);
|
||||
if (fd_err > 2)
|
||||
close (fd_err);
|
||||
dup2 (save_stderr, fileno (stderr));
|
||||
if (fpipe == 0)
|
||||
return ((char *)NULL);
|
||||
formatted_page = read_from_fd (fileno (fpipe));
|
||||
if (pclose (fpipe) == -1)
|
||||
{
|
||||
if (formatted_page)
|
||||
free (formatted_page);
|
||||
return ((char *)NULL);
|
||||
}
|
||||
}
|
||||
#endif /* !PIPE_USE_FORK */
|
||||
|
||||
/* If we have the page, then clean it up. */
|
||||
if (formatted_page)
|
||||
clean_manpage (formatted_page);
|
||||
|
||||
return (formatted_page);
|
||||
}
|
||||
|
||||
static void
|
||||
clean_manpage (char *manpage)
|
||||
{
|
||||
register int i, j;
|
||||
int newline_count = 0;
|
||||
char *newpage;
|
||||
|
||||
newpage = (char *)xmalloc (1 + strlen (manpage));
|
||||
|
||||
for (i = 0, j = 0; (newpage[j] = manpage[i]); i++, j++)
|
||||
{
|
||||
if (manpage[i] == '\n')
|
||||
newline_count++;
|
||||
else
|
||||
newline_count = 0;
|
||||
|
||||
if (newline_count == 3)
|
||||
{
|
||||
j--;
|
||||
newline_count--;
|
||||
}
|
||||
|
||||
/* A malformed man page could have a \b as its first character,
|
||||
in which case decrementing j by 2 will cause us to write into
|
||||
newpage[-1], smashing the hidden info stored there by malloc. */
|
||||
if (manpage[i] == '\b' || (manpage[i] == '\f' && j > 0))
|
||||
j -= 2;
|
||||
else if (!raw_escapes_p)
|
||||
{
|
||||
/* Remove the ANSI escape sequences for color, boldface,
|
||||
underlining, and italics, generated by some versions of
|
||||
Groff. */
|
||||
if (manpage[i] == '\033' && manpage[i + 1] == '['
|
||||
&& isdigit (manpage[i + 2]))
|
||||
{
|
||||
if (isdigit (manpage[i + 3]) && manpage[i + 4] == 'm')
|
||||
{
|
||||
i += 4;
|
||||
j--;
|
||||
}
|
||||
else if (manpage[i + 3] == 'm')
|
||||
{
|
||||
i += 3;
|
||||
j--;
|
||||
}
|
||||
/* Else do nothing: it's some unknown escape sequence,
|
||||
so let's leave it alone. */
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
newpage[j++] = 0;
|
||||
|
||||
strcpy (manpage, newpage);
|
||||
free (newpage);
|
||||
}
|
||||
|
||||
static NODE *
|
||||
manpage_node_of_file_buffer (FILE_BUFFER *file_buffer, char *pagename)
|
||||
{
|
||||
NODE *node = (NODE *)NULL;
|
||||
TAG *tag = (TAG *)NULL;
|
||||
|
||||
if (file_buffer->contents)
|
||||
{
|
||||
register int i;
|
||||
|
||||
for (i = 0; (tag = file_buffer->tags[i]); i++)
|
||||
{
|
||||
if (strcasecmp (pagename, tag->nodename) == 0)
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (tag)
|
||||
{
|
||||
node = (NODE *)xmalloc (sizeof (NODE));
|
||||
node->filename = file_buffer->filename;
|
||||
node->nodename = xstrdup (tag->nodename);
|
||||
node->contents = file_buffer->contents + tag->nodestart;
|
||||
node->nodelen = tag->nodelen;
|
||||
node->flags = 0;
|
||||
node->display_pos = 0;
|
||||
node->parent = (char *)NULL;
|
||||
node->flags = (N_HasTagsTable | N_IsManPage);
|
||||
node->contents += skip_node_separator (node->contents);
|
||||
}
|
||||
|
||||
return (node);
|
||||
}
|
||||
|
||||
static char *
|
||||
read_from_fd (int fd)
|
||||
{
|
||||
struct timeval timeout;
|
||||
char *buffer = (char *)NULL;
|
||||
int bsize = 0;
|
||||
int bindex = 0;
|
||||
int select_result;
|
||||
#if defined (FD_SET)
|
||||
fd_set read_fds;
|
||||
|
||||
timeout.tv_sec = 15;
|
||||
timeout.tv_usec = 0;
|
||||
|
||||
FD_ZERO (&read_fds);
|
||||
FD_SET (fd, &read_fds);
|
||||
|
||||
select_result = select (fd + 1, fd_set_cast (&read_fds), 0, 0, &timeout);
|
||||
#else /* !FD_SET */
|
||||
select_result = 1;
|
||||
#endif /* !FD_SET */
|
||||
|
||||
switch (select_result)
|
||||
{
|
||||
case 0:
|
||||
case -1:
|
||||
break;
|
||||
|
||||
default:
|
||||
{
|
||||
int amount_read;
|
||||
int done = 0;
|
||||
|
||||
while (!done)
|
||||
{
|
||||
while ((bindex + 1024) > (bsize))
|
||||
buffer = (char *)xrealloc (buffer, (bsize += 1024));
|
||||
buffer[bindex] = '\0';
|
||||
|
||||
amount_read = read (fd, buffer + bindex, 1023);
|
||||
|
||||
if (amount_read < 0)
|
||||
{
|
||||
done = 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
bindex += amount_read;
|
||||
buffer[bindex] = '\0';
|
||||
if (amount_read == 0)
|
||||
done = 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if ((buffer != (char *)NULL) && (*buffer == '\0'))
|
||||
{
|
||||
free (buffer);
|
||||
buffer = (char *)NULL;
|
||||
}
|
||||
|
||||
return (buffer);
|
||||
}
|
||||
|
||||
static char *reference_section_starters[] =
|
||||
{
|
||||
"\nRELATED INFORMATION",
|
||||
"\nRELATED\tINFORMATION",
|
||||
"RELATED INFORMATION\n",
|
||||
"RELATED\tINFORMATION\n",
|
||||
"\nSEE ALSO",
|
||||
"\nSEE\tALSO",
|
||||
"SEE ALSO\n",
|
||||
"SEE\tALSO\n",
|
||||
(char *)NULL
|
||||
};
|
||||
|
||||
static SEARCH_BINDING frs_binding;
|
||||
|
||||
static SEARCH_BINDING *
|
||||
find_reference_section (NODE *node)
|
||||
{
|
||||
register int i;
|
||||
long position = -1;
|
||||
|
||||
frs_binding.buffer = node->contents;
|
||||
frs_binding.start = 0;
|
||||
frs_binding.end = node->nodelen;
|
||||
frs_binding.flags = S_SkipDest;
|
||||
|
||||
for (i = 0; reference_section_starters[i] != (char *)NULL; i++)
|
||||
{
|
||||
position = search_forward (reference_section_starters[i], &frs_binding);
|
||||
if (position != -1)
|
||||
break;
|
||||
}
|
||||
|
||||
if (position == -1)
|
||||
return ((SEARCH_BINDING *)NULL);
|
||||
|
||||
/* We found the start of the reference section, and point is right after
|
||||
the string which starts it. The text from here to the next header
|
||||
(or end of buffer) contains the only references in this manpage. */
|
||||
frs_binding.start = position;
|
||||
|
||||
for (i = frs_binding.start; i < frs_binding.end - 2; i++)
|
||||
{
|
||||
if ((frs_binding.buffer[i] == '\n') &&
|
||||
(!whitespace (frs_binding.buffer[i + 1])))
|
||||
{
|
||||
frs_binding.end = i;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
return (&frs_binding);
|
||||
}
|
||||
|
||||
REFERENCE **
|
||||
xrefs_of_manpage (NODE *node)
|
||||
{
|
||||
SEARCH_BINDING *reference_section;
|
||||
REFERENCE **refs = (REFERENCE **)NULL;
|
||||
int refs_index = 0;
|
||||
int refs_slots = 0;
|
||||
long position;
|
||||
|
||||
reference_section = find_reference_section (node);
|
||||
|
||||
if (reference_section == (SEARCH_BINDING *)NULL)
|
||||
return ((REFERENCE **)NULL);
|
||||
|
||||
/* Grovel the reference section building a list of references found there.
|
||||
A reference is alphabetic characters followed by non-whitespace text
|
||||
within parenthesis. */
|
||||
reference_section->flags = 0;
|
||||
|
||||
while ((position = search_forward ("(", reference_section)) != -1)
|
||||
{
|
||||
register int start, end;
|
||||
|
||||
for (start = position; start > reference_section->start; start--)
|
||||
if (whitespace (reference_section->buffer[start]))
|
||||
break;
|
||||
|
||||
start++;
|
||||
|
||||
for (end = position; end < reference_section->end; end++)
|
||||
{
|
||||
if (whitespace (reference_section->buffer[end]))
|
||||
{
|
||||
end = start;
|
||||
break;
|
||||
}
|
||||
|
||||
if (reference_section->buffer[end] == ')')
|
||||
{
|
||||
end++;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (end != start)
|
||||
{
|
||||
REFERENCE *entry;
|
||||
int len = end - start;
|
||||
|
||||
entry = (REFERENCE *)xmalloc (sizeof (REFERENCE));
|
||||
entry->label = (char *)xmalloc (1 + len);
|
||||
strncpy (entry->label, (reference_section->buffer) + start, len);
|
||||
entry->label[len] = '\0';
|
||||
entry->filename = xstrdup (node->filename);
|
||||
entry->nodename = xstrdup (entry->label);
|
||||
entry->start = start;
|
||||
entry->end = end;
|
||||
|
||||
add_pointer_to_array
|
||||
(entry, refs_index, refs, refs_slots, 10, REFERENCE *);
|
||||
}
|
||||
|
||||
reference_section->start = position + 1;
|
||||
}
|
||||
|
||||
return (refs);
|
||||
}
|
||||
|
||||
long
|
||||
locate_manpage_xref (NODE *node, long int start, int dir)
|
||||
{
|
||||
REFERENCE **refs;
|
||||
long position = -1;
|
||||
|
||||
refs = xrefs_of_manpage (node);
|
||||
|
||||
if (refs)
|
||||
{
|
||||
register int i, count;
|
||||
REFERENCE *entry;
|
||||
|
||||
for (i = 0; refs[i]; i++);
|
||||
count = i;
|
||||
|
||||
if (dir > 0)
|
||||
{
|
||||
for (i = 0; (entry = refs[i]); i++)
|
||||
if (entry->start > start)
|
||||
{
|
||||
position = entry->start;
|
||||
break;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
for (i = count - 1; i > -1; i--)
|
||||
{
|
||||
entry = refs[i];
|
||||
|
||||
if (entry->start < start)
|
||||
{
|
||||
position = entry->start;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
info_free_references (refs);
|
||||
}
|
||||
return (position);
|
||||
}
|
||||
|
||||
/* This one was a little tricky. The binding buffer that is passed in has
|
||||
a START and END value of 0 -- strlen (window-line-containing-point).
|
||||
The BUFFER is a pointer to the start of that line. */
|
||||
REFERENCE **
|
||||
manpage_xrefs_in_binding (NODE *node, SEARCH_BINDING *binding)
|
||||
{
|
||||
register int i;
|
||||
REFERENCE **all_refs = xrefs_of_manpage (node);
|
||||
REFERENCE **brefs = (REFERENCE **)NULL;
|
||||
REFERENCE *entry;
|
||||
int brefs_index = 0;
|
||||
int brefs_slots = 0;
|
||||
int start, end;
|
||||
|
||||
if (!all_refs)
|
||||
return ((REFERENCE **)NULL);
|
||||
|
||||
start = binding->start + (binding->buffer - node->contents);
|
||||
end = binding->end + (binding->buffer - node->contents);
|
||||
|
||||
for (i = 0; (entry = all_refs[i]); i++)
|
||||
{
|
||||
if ((entry->start > start) && (entry->end < end))
|
||||
{
|
||||
add_pointer_to_array
|
||||
(entry, brefs_index, brefs, brefs_slots, 10, REFERENCE *);
|
||||
}
|
||||
else
|
||||
{
|
||||
maybe_free (entry->label);
|
||||
maybe_free (entry->filename);
|
||||
maybe_free (entry->nodename);
|
||||
free (entry);
|
||||
}
|
||||
}
|
||||
|
||||
free (all_refs);
|
||||
return (brefs);
|
||||
}
|
41
external/gpl2/texinfo/dist/info/man.h
vendored
Normal file
41
external/gpl2/texinfo/dist/info/man.h
vendored
Normal file
@ -0,0 +1,41 @@
|
||||
/* $NetBSD: man.h,v 1.1.1.1 2016/01/14 00:11:29 christos Exp $ */
|
||||
|
||||
/* man.h: Defines and external function declarations for man.c.
|
||||
Id: man.h,v 1.3 2004/04/11 17:56:46 karl Exp
|
||||
|
||||
This file is part of GNU Info, a program for reading online documentation
|
||||
stored in Info format.
|
||||
|
||||
Copyright (C) 1993, 1997, 2004 Free Software Foundation, Inc.
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2, or (at your option)
|
||||
any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program; if not, write to the Free Software
|
||||
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
|
||||
Author: Brian J. Fox (bfox@ai.mit.edu) Sat May 6 16:19:13 1995. */
|
||||
|
||||
#ifndef INFO_MAN_H
|
||||
#define INFO_MAN_H
|
||||
|
||||
#define MANPAGE_FILE_BUFFER_NAME "*manpages*"
|
||||
|
||||
extern NODE *make_manpage_node (char *pagename);
|
||||
extern NODE *get_manpage_node (FILE_BUFFER *file_buffer,
|
||||
char *pagename);
|
||||
extern FILE_BUFFER *create_manpage_file_buffer (void);
|
||||
extern long locate_manpage_xref (NODE *node, long int start, int dir);
|
||||
extern REFERENCE **xrefs_of_manpage (NODE *node);
|
||||
extern REFERENCE **manpage_xrefs_in_binding (NODE *node,
|
||||
SEARCH_BINDING *binding);
|
||||
|
||||
#endif /* INFO_MAN_H */
|
349
external/gpl2/texinfo/dist/info/nodemenu.c
vendored
Normal file
349
external/gpl2/texinfo/dist/info/nodemenu.c
vendored
Normal file
@ -0,0 +1,349 @@
|
||||
/* $NetBSD: nodemenu.c,v 1.1.1.1 2016/01/14 00:11:29 christos Exp $ */
|
||||
|
||||
/* nodemenu.c -- produce a menu of all visited nodes.
|
||||
Id: nodemenu.c,v 1.5 2004/04/11 17:56:46 karl Exp
|
||||
|
||||
Copyright (C) 1993, 1997, 1998, 2002, 2003, 2004 Free Software
|
||||
Foundation, Inc.
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2, or (at your option)
|
||||
any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program; if not, write to the Free Software
|
||||
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
|
||||
Written by Brian Fox (bfox@ai.mit.edu). */
|
||||
|
||||
#include "info.h"
|
||||
|
||||
NODE * get_visited_nodes (Function *filter_func);
|
||||
|
||||
/* Return a line describing the format of a node information line. */
|
||||
static const char *
|
||||
nodemenu_format_info (void)
|
||||
{
|
||||
return (_("\n\
|
||||
* Menu:\n\
|
||||
(File)Node Lines Size Containing File\n\
|
||||
---------- ----- ---- ---------------"));
|
||||
}
|
||||
|
||||
/* Produce a formatted line of information about NODE. Here is what we want
|
||||
the output listing to look like:
|
||||
|
||||
* Menu:
|
||||
(File)Node Lines Size Containing File
|
||||
---------- ----- ---- ---------------
|
||||
* (emacs)Buffers:: 48 2230 /usr/gnu/info/emacs/emacs-1
|
||||
* (autoconf)Writing configure.in:: 123 58789 /usr/gnu/info/autoconf/autoconf-1
|
||||
* (dir)Top:: 40 589 /usr/gnu/info/dir
|
||||
*/
|
||||
static char *
|
||||
format_node_info (NODE *node)
|
||||
{
|
||||
register int i, len;
|
||||
char *parent, *containing_file;
|
||||
static char *line_buffer = (char *)NULL;
|
||||
|
||||
if (!line_buffer)
|
||||
line_buffer = (char *)xmalloc (1000);
|
||||
|
||||
if (node->parent)
|
||||
{
|
||||
parent = filename_non_directory (node->parent);
|
||||
if (!parent)
|
||||
parent = node->parent;
|
||||
}
|
||||
else
|
||||
parent = (char *)NULL;
|
||||
|
||||
containing_file = node->filename;
|
||||
|
||||
if (!parent && !*containing_file)
|
||||
sprintf (line_buffer, "* %s::", node->nodename);
|
||||
else
|
||||
{
|
||||
char *file = (char *)NULL;
|
||||
|
||||
if (parent)
|
||||
file = parent;
|
||||
else
|
||||
file = filename_non_directory (containing_file);
|
||||
|
||||
if (!file)
|
||||
file = containing_file;
|
||||
|
||||
if (!*file)
|
||||
file = "dir";
|
||||
|
||||
sprintf (line_buffer, "* (%s)%s::", file, node->nodename);
|
||||
}
|
||||
|
||||
len = pad_to (36, line_buffer);
|
||||
|
||||
{
|
||||
int lines = 1;
|
||||
|
||||
for (i = 0; i < node->nodelen; i++)
|
||||
if (node->contents[i] == '\n')
|
||||
lines++;
|
||||
|
||||
sprintf (line_buffer + len, "%d", lines);
|
||||
}
|
||||
|
||||
len = pad_to (44, line_buffer);
|
||||
sprintf (line_buffer + len, "%ld", node->nodelen);
|
||||
|
||||
if (node->filename && *(node->filename))
|
||||
{
|
||||
len = pad_to (51, line_buffer);
|
||||
strcpy (line_buffer + len, node->filename);
|
||||
}
|
||||
|
||||
return xstrdup (line_buffer);
|
||||
}
|
||||
|
||||
/* Little string comparison routine for qsort (). */
|
||||
static int
|
||||
compare_strings (const void *entry1, const void *entry2)
|
||||
{
|
||||
char **e1 = (char **) entry1;
|
||||
char **e2 = (char **) entry2;
|
||||
|
||||
return (strcasecmp (*e1, *e2));
|
||||
}
|
||||
|
||||
/* The name of the nodemenu node. */
|
||||
static char *nodemenu_nodename = "*Node Menu*";
|
||||
|
||||
/* Produce an informative listing of all the visited nodes, and return it
|
||||
in a node. If FILTER_FUNC is non-null, it is a function which filters
|
||||
which nodes will appear in the listing. FILTER_FUNC takes an argument
|
||||
of NODE, and returns non-zero if the node should appear in the listing. */
|
||||
NODE *
|
||||
get_visited_nodes (Function *filter_func)
|
||||
{
|
||||
register int i, iw_index;
|
||||
INFO_WINDOW *info_win;
|
||||
NODE *node;
|
||||
char **lines = (char **)NULL;
|
||||
int lines_index = 0, lines_slots = 0;
|
||||
|
||||
if (!info_windows)
|
||||
return ((NODE *)NULL);
|
||||
|
||||
for (iw_index = 0; (info_win = info_windows[iw_index]); iw_index++)
|
||||
{
|
||||
for (i = 0; i < info_win->nodes_index; i++)
|
||||
{
|
||||
node = info_win->nodes[i];
|
||||
|
||||
/* We skip mentioning "*Node Menu*" nodes. */
|
||||
if (internal_info_node_p (node) &&
|
||||
(strcmp (node->nodename, nodemenu_nodename) == 0))
|
||||
continue;
|
||||
|
||||
if (node && (!filter_func || (*filter_func) (node)))
|
||||
{
|
||||
char *line;
|
||||
|
||||
line = format_node_info (node);
|
||||
add_pointer_to_array
|
||||
(line, lines_index, lines, lines_slots, 20, char *);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* Sort the array of information lines, if there are any. */
|
||||
if (lines)
|
||||
{
|
||||
register int j, newlen;
|
||||
char **temp;
|
||||
|
||||
qsort (lines, lines_index, sizeof (char *), compare_strings);
|
||||
|
||||
/* Delete duplicates. */
|
||||
for (i = 0, newlen = 1; i < lines_index - 1; i++)
|
||||
{
|
||||
/* Use FILENAME_CMP here, since the most important piece
|
||||
of info in each line is the file name of the node. */
|
||||
if (FILENAME_CMP (lines[i], lines[i + 1]) == 0)
|
||||
{
|
||||
free (lines[i]);
|
||||
lines[i] = (char *)NULL;
|
||||
}
|
||||
else
|
||||
newlen++;
|
||||
}
|
||||
|
||||
/* We have free ()'d and marked all of the duplicate slots.
|
||||
Copy the live slots rather than pruning the dead slots. */
|
||||
temp = (char **)xmalloc ((1 + newlen) * sizeof (char *));
|
||||
for (i = 0, j = 0; i < lines_index; i++)
|
||||
if (lines[i])
|
||||
temp[j++] = lines[i];
|
||||
|
||||
temp[j] = (char *)NULL;
|
||||
free (lines);
|
||||
lines = temp;
|
||||
lines_index = newlen;
|
||||
}
|
||||
|
||||
initialize_message_buffer ();
|
||||
|
||||
printf_to_message_buffer
|
||||
("%s", replace_in_documentation
|
||||
((char *) _("Here is the menu of nodes you have recently visited.\n\
|
||||
Select one from this menu, or use `\\[history-node]' in another window.\n"), 0),
|
||||
NULL, NULL);
|
||||
|
||||
printf_to_message_buffer ("%s\n", (char *) nodemenu_format_info (),
|
||||
NULL, NULL);
|
||||
|
||||
for (i = 0; (lines != (char **)NULL) && (i < lines_index); i++)
|
||||
{
|
||||
printf_to_message_buffer ("%s\n", lines[i], NULL, NULL);
|
||||
free (lines[i]);
|
||||
}
|
||||
|
||||
if (lines)
|
||||
free (lines);
|
||||
|
||||
node = message_buffer_to_node ();
|
||||
add_gcable_pointer (node->contents);
|
||||
return (node);
|
||||
}
|
||||
|
||||
DECLARE_INFO_COMMAND (list_visited_nodes,
|
||||
_("Make a window containing a menu of all of the currently visited nodes"))
|
||||
{
|
||||
WINDOW *new;
|
||||
NODE *node;
|
||||
|
||||
set_remembered_pagetop_and_point (window);
|
||||
|
||||
/* If a window is visible and showing the buffer list already, re-use it. */
|
||||
for (new = windows; new; new = new->next)
|
||||
{
|
||||
node = new->node;
|
||||
|
||||
if (internal_info_node_p (node) &&
|
||||
(strcmp (node->nodename, nodemenu_nodename) == 0))
|
||||
break;
|
||||
}
|
||||
|
||||
/* If we couldn't find an existing window, try to use the next window
|
||||
in the chain. */
|
||||
if (!new)
|
||||
{
|
||||
if (window->next)
|
||||
new = window->next;
|
||||
/* If there is more than one window, wrap around. */
|
||||
else if (window != windows)
|
||||
new = windows;
|
||||
}
|
||||
|
||||
/* If we still don't have a window, make a new one to contain the list. */
|
||||
if (!new)
|
||||
{
|
||||
WINDOW *old_active;
|
||||
|
||||
old_active = active_window;
|
||||
active_window = window;
|
||||
new = window_make_window ((NODE *)NULL);
|
||||
active_window = old_active;
|
||||
}
|
||||
|
||||
/* If we couldn't make a new window, use this one. */
|
||||
if (!new)
|
||||
new = window;
|
||||
|
||||
/* Lines do not wrap in this window. */
|
||||
new->flags |= W_NoWrap;
|
||||
node = get_visited_nodes ((Function *)NULL);
|
||||
name_internal_node (node, nodemenu_nodename);
|
||||
|
||||
#if 0
|
||||
/* Even if this is an internal node, we don't want the window
|
||||
system to treat it specially. So we turn off the internalness
|
||||
of it here. */
|
||||
/* Why? We depend on internal_info_node_p returning true, so we must
|
||||
not remove the flag. Otherwise, the *Node Menu* nodes themselves
|
||||
appear in the node menu. --Andreas Schwab
|
||||
<schwab@issan.informatik.uni-dortmund.de>. */
|
||||
node->flags &= ~N_IsInternal;
|
||||
#endif
|
||||
|
||||
/* If this window is already showing a node menu, reuse the existing node
|
||||
slot. */
|
||||
{
|
||||
int remember_me = 1;
|
||||
|
||||
#if defined (NOTDEF)
|
||||
if (internal_info_node_p (new->node) &&
|
||||
(strcmp (new->node->nodename, nodemenu_nodename) == 0))
|
||||
remember_me = 0;
|
||||
#endif /* NOTDEF */
|
||||
|
||||
window_set_node_of_window (new, node);
|
||||
|
||||
if (remember_me)
|
||||
remember_window_and_node (new, node);
|
||||
}
|
||||
|
||||
active_window = new;
|
||||
}
|
||||
|
||||
DECLARE_INFO_COMMAND (select_visited_node,
|
||||
_("Select a node which has been previously visited in a visible window"))
|
||||
{
|
||||
char *line;
|
||||
NODE *node;
|
||||
REFERENCE **menu;
|
||||
|
||||
node = get_visited_nodes ((Function *)NULL);
|
||||
|
||||
menu = info_menu_of_node (node);
|
||||
free (node);
|
||||
|
||||
line =
|
||||
info_read_completing_in_echo_area (window,
|
||||
(char *) _("Select visited node: "), menu);
|
||||
|
||||
window = active_window;
|
||||
|
||||
/* User aborts, just quit. */
|
||||
if (!line)
|
||||
{
|
||||
info_abort_key (window, 0, 0);
|
||||
info_free_references (menu);
|
||||
return;
|
||||
}
|
||||
|
||||
if (*line)
|
||||
{
|
||||
REFERENCE *entry;
|
||||
|
||||
/* Find the selected label in the references. */
|
||||
entry = info_get_labeled_reference (line, menu);
|
||||
|
||||
if (!entry)
|
||||
info_error ((char *) _("The reference disappeared! (%s)."), line, NULL);
|
||||
else
|
||||
info_select_reference (window, entry);
|
||||
}
|
||||
|
||||
free (line);
|
||||
info_free_references (menu);
|
||||
|
||||
if (!info_error_was_printed)
|
||||
window_clear_echo_area ();
|
||||
}
|
1265
external/gpl2/texinfo/dist/info/nodes.c
vendored
Normal file
1265
external/gpl2/texinfo/dist/info/nodes.c
vendored
Normal file
File diff suppressed because it is too large
Load Diff
158
external/gpl2/texinfo/dist/info/nodes.h
vendored
Normal file
158
external/gpl2/texinfo/dist/info/nodes.h
vendored
Normal file
@ -0,0 +1,158 @@
|
||||
/* $NetBSD: nodes.h,v 1.1.1.1 2016/01/14 00:11:29 christos Exp $ */
|
||||
|
||||
/* nodes.h -- How we represent nodes internally.
|
||||
Id: nodes.h,v 1.3 2004/04/11 17:56:46 karl Exp
|
||||
|
||||
Copyright (C) 1993, 1997, 1998, 2002, 2004 Free Software Foundation, Inc.
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2, or (at your option)
|
||||
any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program; if not, write to the Free Software
|
||||
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
|
||||
Written by Brian Fox (bfox@ai.mit.edu). */
|
||||
|
||||
#ifndef NODES_H
|
||||
#define NODES_H
|
||||
|
||||
#include "info.h"
|
||||
|
||||
/* User code interface. */
|
||||
|
||||
/* Callers generally only want the node itself. This structure is used
|
||||
to pass node information around. None of the information in this
|
||||
structure should ever be directly freed. The structure itself can
|
||||
be passed to free (). Note that NODE->parent is non-null if this
|
||||
node's file is a subfile. In that case, NODE->parent is the logical
|
||||
name of the file containing this node. Both names are given as full
|
||||
paths, so you might have: node->filename = "/usr/gnu/info/emacs-1",
|
||||
with node->parent = "/usr/gnu/info/emacs". */
|
||||
typedef struct {
|
||||
char *filename; /* The physical file containing this node. */
|
||||
char *parent; /* Non-null is the logical file name. */
|
||||
char *nodename; /* The name of this node. */
|
||||
char *contents; /* Characters appearing in this node. */
|
||||
long nodelen; /* The length of the CONTENTS member. */
|
||||
unsigned long display_pos; /* Where to display at, if nonzero. */
|
||||
int flags; /* See immediately below. */
|
||||
} NODE;
|
||||
|
||||
/* Defines that can appear in NODE->flags. All informative. */
|
||||
#define N_HasTagsTable 0x01 /* This node was found through a tags table. */
|
||||
#define N_TagsIndirect 0x02 /* The tags table was an indirect one. */
|
||||
#define N_UpdateTags 0x04 /* The tags table is out of date. */
|
||||
#define N_IsCompressed 0x08 /* The file is compressed on disk. */
|
||||
#define N_IsInternal 0x10 /* This node was made by Info. */
|
||||
#define N_CannotGC 0x20 /* File buffer cannot be gc'ed. */
|
||||
#define N_IsManPage 0x40 /* This node is a manpage. */
|
||||
#define N_FromAnchor 0x80 /* Synthesized for an anchor reference. */
|
||||
|
||||
/* Internal data structures. */
|
||||
|
||||
/* String constants. */
|
||||
#define INFO_FILE_LABEL "File:"
|
||||
#define INFO_REF_LABEL "Ref:"
|
||||
#define INFO_NODE_LABEL "Node:"
|
||||
#define INFO_PREV_LABEL "Prev:"
|
||||
#define INFO_ALTPREV_LABEL "Previous:"
|
||||
#define INFO_NEXT_LABEL "Next:"
|
||||
#define INFO_UP_LABEL "Up:"
|
||||
#define INFO_MENU_LABEL "\n* Menu:"
|
||||
#define INFO_MENU_ENTRY_LABEL "\n* "
|
||||
#define INFO_XREF_LABEL "*Note"
|
||||
#define TAGS_TABLE_END_LABEL "\nEnd Tag Table"
|
||||
#define TAGS_TABLE_BEG_LABEL "Tag Table:\n"
|
||||
#define INDIRECT_TAGS_TABLE_LABEL "Indirect:\n"
|
||||
#define TAGS_TABLE_IS_INDIRECT_LABEL "(Indirect)"
|
||||
|
||||
/* Character constants. */
|
||||
#define INFO_COOKIE '\037'
|
||||
#define INFO_FF '\014'
|
||||
#define INFO_TAGSEP '\177'
|
||||
|
||||
/* For each logical file that we have loaded, we keep a list of the names
|
||||
of the nodes that are found in that file. A pointer to a node in an
|
||||
info file is called a "tag". For split files, the tag pointer is
|
||||
"indirect"; that is, the pointer also contains the name of the split
|
||||
file where the node can be found. For non-split files, the filename
|
||||
member in the structure below simply contains the name of the current
|
||||
file. The following structure describes a single node within a file. */
|
||||
typedef struct {
|
||||
char *filename; /* The file where this node can be found. */
|
||||
char *nodename; /* The node pointed to by this tag. */
|
||||
long nodestart; /* The offset of the start of this node. */
|
||||
long nodelen; /* The length of this node. */
|
||||
} TAG;
|
||||
|
||||
/* The following structure is used to remember information about the contents
|
||||
of Info files that we have loaded at least once before. The FINFO member
|
||||
is present so that we can reload the file if it has been modified since
|
||||
last being loaded. All of the arrays appearing within this structure
|
||||
are NULL terminated, and each array which can change size has a
|
||||
corresponding SLOTS member which says how many slots have been allocated
|
||||
(with malloc ()) for this array. */
|
||||
typedef struct {
|
||||
char *filename; /* The filename used to find this file. */
|
||||
char *fullpath; /* The full pathname of this info file. */
|
||||
struct stat finfo; /* Information about this file. */
|
||||
char *contents; /* The contents of this particular file. */
|
||||
long filesize; /* The number of bytes this file expands to. */
|
||||
char **subfiles; /* If non-null, the list of subfiles. */
|
||||
TAG **tags; /* If non-null, the indirect tags table. */
|
||||
int tags_slots; /* Number of slots allocated for TAGS. */
|
||||
int flags; /* Various flags. Mimics of N_* flags. */
|
||||
} FILE_BUFFER;
|
||||
|
||||
/* Externally visible functions. */
|
||||
|
||||
/* Array of FILE_BUFFER * which represents the currently loaded info files. */
|
||||
extern FILE_BUFFER **info_loaded_files;
|
||||
|
||||
/* The number of slots currently allocated to INFO_LOADED_FILES. */
|
||||
extern int info_loaded_files_slots;
|
||||
|
||||
/* Locate the file named by FILENAME, and return the information structure
|
||||
describing this file. The file may appear in our list of loaded files
|
||||
already, or it may not. If it does not already appear, find the file,
|
||||
and add it to the list of loaded files. If the file cannot be found,
|
||||
return a NULL FILE_BUFFER *. */
|
||||
extern FILE_BUFFER *info_find_file (char *filename);
|
||||
|
||||
/* Force load the file named FILENAME, and return the information structure
|
||||
describing this file. Even if the file was already loaded, this loads
|
||||
a new buffer, rebuilds tags and nodes, and returns a new FILE_BUFFER *. */
|
||||
extern FILE_BUFFER *info_load_file (char *filename);
|
||||
|
||||
/* Return a pointer to a NODE structure for the Info node (FILENAME)NODENAME.
|
||||
FILENAME can be passed as NULL, in which case the filename of "dir" is used.
|
||||
NODENAME can be passed as NULL, in which case the nodename of "Top" is used.
|
||||
If the node cannot be found, return a NULL pointer. */
|
||||
extern NODE *info_get_node (char *filename, char *nodename);
|
||||
|
||||
/* Return a pointer to a NODE structure for the Info node NODENAME in
|
||||
FILE_BUFFER. NODENAME can be passed as NULL, in which case the
|
||||
nodename of "Top" is used. If the node cannot be found, return a
|
||||
NULL pointer. */
|
||||
extern NODE *info_get_node_of_file_buffer (char *nodename,
|
||||
FILE_BUFFER *file_buffer);
|
||||
|
||||
/* Grovel FILE_BUFFER->contents finding tags and nodes, and filling in the
|
||||
various slots. This can also be used to rebuild a tag or node table. */
|
||||
extern void build_tags_and_nodes (FILE_BUFFER *file_buffer);
|
||||
|
||||
/* When non-zero, this is a string describing the most recent file error. */
|
||||
extern char *info_recent_file_error;
|
||||
|
||||
/* Create a new, empty file buffer. */
|
||||
extern FILE_BUFFER *make_file_buffer (void);
|
||||
|
||||
#endif /* not NODES_H */
|
761
external/gpl2/texinfo/dist/info/pcterm.c
vendored
Normal file
761
external/gpl2/texinfo/dist/info/pcterm.c
vendored
Normal file
@ -0,0 +1,761 @@
|
||||
/* $NetBSD: pcterm.c,v 1.1.1.1 2016/01/14 00:11:29 christos Exp $ */
|
||||
|
||||
/* pcterm.c -- How to handle the PC terminal for Info under MS-DOS/MS-Windows.
|
||||
Id: pcterm.c,v 1.4 2004/04/11 17:56:46 karl Exp
|
||||
|
||||
Copyright (C) 1998, 1999, 2003, 2004 Free Software Foundation, Inc.
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2, or (at your option)
|
||||
any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License along
|
||||
with this program; if not, write to the Free Software Foundation, Inc.,
|
||||
59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
|
||||
|
||||
|
||||
/* WARNING WARNING WARNING!!!
|
||||
This probably won't work as is with anything but DJGPP! However, Borland
|
||||
should come close, and other PC compilers will need minor modifications. */
|
||||
|
||||
/* intl/libintl.h defines a macro `gettext' which
|
||||
conflicts with conio.h header. */
|
||||
#ifdef gettext
|
||||
# undef gettext
|
||||
# define gettext _gettext
|
||||
#endif
|
||||
|
||||
#include <pc.h>
|
||||
#include <keys.h>
|
||||
#include <conio.h>
|
||||
|
||||
#include "variables.h"
|
||||
|
||||
extern int speech_friendly; /* defined in info.c */
|
||||
|
||||
/* **************************************************************** */
|
||||
/* */
|
||||
/* PC Terminal Output Functions */
|
||||
/* */
|
||||
/* **************************************************************** */
|
||||
|
||||
static struct text_info outside_info; /* holds screen params outside Info */
|
||||
static unsigned char norm_attr, inv_attr;
|
||||
|
||||
static unsigned const char * find_sequence (int);
|
||||
|
||||
/* Turn on reverse video. */
|
||||
static void
|
||||
pc_begin_inverse (void)
|
||||
{
|
||||
textattr (inv_attr);
|
||||
}
|
||||
|
||||
/* Turn off reverse video. */
|
||||
static void
|
||||
pc_end_inverse (void)
|
||||
{
|
||||
textattr (norm_attr);
|
||||
}
|
||||
|
||||
/* Move the cursor up one line. */
|
||||
static void
|
||||
pc_up_line (void)
|
||||
{
|
||||
int x, y;
|
||||
ScreenGetCursor (&y, &x);
|
||||
ScreenSetCursor (MAX (y-1, 0), x);
|
||||
}
|
||||
|
||||
/* Move the cursor down one line. */
|
||||
static void
|
||||
pc_down_line (void)
|
||||
{
|
||||
int x, y;
|
||||
ScreenGetCursor (&y, &x);
|
||||
ScreenSetCursor (MIN (screenheight-1, y+1), x);
|
||||
}
|
||||
|
||||
/* Clear the entire terminal screen. */
|
||||
static void
|
||||
pc_clear_screen (void)
|
||||
{
|
||||
ScreenClear ();
|
||||
}
|
||||
|
||||
/* Clear from the current position of the cursor to the end of the line. */
|
||||
static void
|
||||
pc_clear_to_eol (void)
|
||||
{
|
||||
clreol (); /* perhaps to be replaced by a loop */
|
||||
}
|
||||
|
||||
/* Set the global variables SCREENWIDTH and SCREENHEIGHT. */
|
||||
static void
|
||||
pc_get_screen_size(void)
|
||||
{
|
||||
/* Current screen dimensions are the default. */
|
||||
if (!outside_info.screenheight) /* paranoia */
|
||||
gettextinfo (&outside_info);
|
||||
screenwidth = outside_info.screenwidth;
|
||||
screenheight = outside_info.screenheight;
|
||||
|
||||
/* Environment variable "LINES" overrides the default. */
|
||||
if (getenv ("LINES") != NULL)
|
||||
screenheight = atoi (getenv ("LINES"));
|
||||
|
||||
/* Environment variable "INFO_LINES" overrides "LINES". */
|
||||
if (getenv ("INFO_LINES") != NULL)
|
||||
screenheight = atoi (getenv ("INFO_LINES"));
|
||||
}
|
||||
|
||||
/* Move the cursor to the terminal location of X and Y. */
|
||||
static void
|
||||
pc_goto_xy (x, y)
|
||||
int x, y;
|
||||
{
|
||||
ScreenSetCursor (y, x); /* yes, pc.h says ScreenSetCursor (row, column) !! */
|
||||
}
|
||||
|
||||
/* Print STRING to the terminal at the current position. */
|
||||
static void
|
||||
pc_put_text (string)
|
||||
char *string;
|
||||
{
|
||||
if (speech_friendly)
|
||||
fputs (string, stdout);
|
||||
else
|
||||
cputs (string);
|
||||
}
|
||||
|
||||
/* Ring the terminal bell. The bell is rung visibly if the terminal is
|
||||
capable of doing that, and if terminal_use_visible_bell_p is non-zero. */
|
||||
static void
|
||||
pc_ring_bell(void)
|
||||
{
|
||||
if (terminal_has_visible_bell_p && terminal_use_visible_bell_p)
|
||||
ScreenVisualBell ();
|
||||
else
|
||||
{
|
||||
printf ("%c",'\a');
|
||||
fflush (stdout);
|
||||
}
|
||||
}
|
||||
|
||||
/* Print NCHARS from STRING to the terminal at the current position. */
|
||||
static void
|
||||
pc_write_chars (string, nchars)
|
||||
char *string;
|
||||
int nchars;
|
||||
{
|
||||
if (!nchars)
|
||||
return;
|
||||
|
||||
if (speech_friendly)
|
||||
printf ("%.*s",nchars, string);
|
||||
else
|
||||
cprintf ("%..*s",nchars, string);
|
||||
}
|
||||
|
||||
/* Scroll an area of the terminal from START to (and excluding) END,
|
||||
AMOUNT lines. If AMOUNT is negative, the lines are scrolled
|
||||
towards the top of the screen, else they are scrolled towards the
|
||||
bottom of the screen. The lines of the old region which do not
|
||||
overlap the new region are cleared, to mimic terminal operation. */
|
||||
static void
|
||||
pc_scroll_terminal (start, end, amount)
|
||||
int start, end, amount;
|
||||
{
|
||||
int line_to_clear = amount > 0 ? start : end + amount;
|
||||
|
||||
/* Move the text. Note that `movetext' expects 1-based coordinates. */
|
||||
movetext (1, start + 1, ScreenCols (), end, 1, start + amount + 1);
|
||||
|
||||
/* Now clear the lines which were left unoccupied. */
|
||||
if (amount < 0)
|
||||
amount = -amount;
|
||||
while (amount--)
|
||||
{
|
||||
ScreenSetCursor (line_to_clear++, 0);
|
||||
clreol ();
|
||||
}
|
||||
}
|
||||
|
||||
/* Put the screen in the video mode and colors which Info will use.
|
||||
Prepare to start using the terminal to read characters singly. */
|
||||
static void
|
||||
pc_prep_terminal (void)
|
||||
{
|
||||
int tty;
|
||||
|
||||
/* Do not set screen height if we already have it, because
|
||||
doing so erases the screen. */
|
||||
if (screenheight != ScreenRows ())
|
||||
_set_screen_lines (screenheight);
|
||||
|
||||
/* Don't fail if they asked for screen dimensions that their
|
||||
hardware cannot support. */
|
||||
screenheight = ScreenRows ();
|
||||
screenwidth = ScreenCols ();
|
||||
|
||||
/* Try setting the colors user asked for. */
|
||||
textattr (norm_attr);
|
||||
ScreenClear ();
|
||||
|
||||
/* Switch console reads to binary mode. */
|
||||
tty = fileno (stdin);
|
||||
#ifdef __DJGPP__
|
||||
setmode (tty, O_BINARY);
|
||||
__djgpp_set_ctrl_c (1); /* re-enable SIGINT generation by Ctrl-C */
|
||||
#endif
|
||||
}
|
||||
|
||||
/* Restore the tty settings back to what they were before we started using
|
||||
this terminal. */
|
||||
static void
|
||||
pc_unprep_terminal (void)
|
||||
{
|
||||
int tty;
|
||||
|
||||
textattr (outside_info.normattr);
|
||||
|
||||
/* Do not set screen height if we already have it, because
|
||||
doing so erases the screen. */
|
||||
if (outside_info.screenheight != ScreenRows ())
|
||||
{
|
||||
_set_screen_lines (outside_info.screenheight);
|
||||
textmode (LASTMODE);
|
||||
}
|
||||
else
|
||||
pc_clear_to_eol (); /* for text attributes to really take effect */
|
||||
|
||||
/* Switch back to text mode on stdin. */
|
||||
tty = fileno (stdin);
|
||||
#ifdef __DJGPP__
|
||||
setmode (tty, O_TEXT);
|
||||
#endif
|
||||
}
|
||||
|
||||
/* Initialize the terminal which is known as TERMINAL_NAME. If this
|
||||
terminal doesn't have cursor addressability, `terminal_is_dumb_p'
|
||||
becomes nonzero. The variables SCREENHEIGHT and SCREENWIDTH are set
|
||||
to the dimensions that this terminal actually has. The variable
|
||||
TERMINAL_HAS_META_P becomes nonzero if this terminal supports a Meta
|
||||
key. Finally, the terminal screen is cleared. */
|
||||
static void
|
||||
pc_initialize_terminal (term_name)
|
||||
char *term_name;
|
||||
{
|
||||
char *info_colors;
|
||||
|
||||
if (!term_name)
|
||||
{
|
||||
term_name = getenv ("TERM");
|
||||
if (!term_name)
|
||||
term_name = "pc-dos"; /* ``what's in a name?'' */
|
||||
}
|
||||
|
||||
/* Get current video information, to be restored later. */
|
||||
if (outside_info.screenwidth == 0)
|
||||
gettextinfo (&outside_info);
|
||||
|
||||
/* Current screen colors are the default. */
|
||||
norm_attr = outside_info.normattr;
|
||||
inv_attr = (((outside_info.normattr & 7) << 4) |
|
||||
((outside_info.normattr & 0x7f) >> 4));
|
||||
|
||||
/* Does the user want non-default colors? */
|
||||
info_colors = getenv ("INFO_COLORS");
|
||||
if ((info_colors != (char *)0) && !speech_friendly)
|
||||
{
|
||||
/* Decode a color from a string descriptor.
|
||||
The descriptor string is a sequence of color specifiers separated
|
||||
by a non-numeric character. Each color specifier should represent
|
||||
a small integer which fits into an unsigned char, and can be given
|
||||
in any base supported by strtoul. Examples of valid descriptors:
|
||||
|
||||
"10 31"
|
||||
"0x13/0x45"
|
||||
"007.077"
|
||||
|
||||
The separator between two color specifiers can be any character which
|
||||
cannot be used in a printed representation of an integer number. */
|
||||
char *endp;
|
||||
unsigned long color_desc = strtoul (info_colors, &endp, 0);
|
||||
|
||||
if (color_desc <= UCHAR_MAX)
|
||||
{
|
||||
norm_attr = (unsigned char)color_desc;
|
||||
color_desc = strtoul (endp + 1, &endp, 0);
|
||||
if (color_desc <= UCHAR_MAX)
|
||||
inv_attr = (unsigned char)color_desc;
|
||||
}
|
||||
}
|
||||
|
||||
/* We can scroll. */
|
||||
terminal_can_scroll = 1;
|
||||
|
||||
/* We know how to produce a visible bell, if somebody's looking... */
|
||||
if (!speech_friendly)
|
||||
terminal_has_visible_bell_p = 1;
|
||||
|
||||
/* We have a Meta key. */
|
||||
terminal_has_meta_p = 1;
|
||||
|
||||
/* We are *certainly* NOT dumb! */
|
||||
terminal_is_dumb_p = 0;
|
||||
|
||||
pc_get_screen_size ();
|
||||
|
||||
/* Store the arrow keys. */
|
||||
term_ku = (char *)find_sequence (K_Up);
|
||||
term_kd = (char *)find_sequence (K_Down);
|
||||
term_kr = (char *)find_sequence (K_Right);
|
||||
term_kl = (char *)find_sequence (K_Left);
|
||||
|
||||
term_kP = (char *)find_sequence (K_PageUp);
|
||||
term_kN = (char *)find_sequence (K_PageDown);
|
||||
|
||||
#if defined(INFOKEY)
|
||||
term_kh = (char *)find_sequence (K_Home);
|
||||
term_ke = (char *)find_sequence (K_End);
|
||||
term_ki = (char *)find_sequence (K_Insert);
|
||||
term_kx = (char *)find_sequence (K_Delete);
|
||||
#endif
|
||||
|
||||
/* Set all the hooks to our PC-specific functions. */
|
||||
terminal_begin_inverse_hook = pc_begin_inverse;
|
||||
terminal_end_inverse_hook = pc_end_inverse;
|
||||
terminal_prep_terminal_hook = pc_prep_terminal;
|
||||
terminal_unprep_terminal_hook = pc_unprep_terminal;
|
||||
terminal_up_line_hook = pc_up_line;
|
||||
terminal_down_line_hook = pc_down_line;
|
||||
terminal_clear_screen_hook = pc_clear_screen;
|
||||
terminal_clear_to_eol_hook = pc_clear_to_eol;
|
||||
terminal_get_screen_size_hook = pc_get_screen_size;
|
||||
terminal_goto_xy_hook = pc_goto_xy;
|
||||
terminal_put_text_hook = pc_put_text;
|
||||
terminal_ring_bell_hook = pc_ring_bell;
|
||||
terminal_write_chars_hook = pc_write_chars;
|
||||
terminal_scroll_terminal_hook = pc_scroll_terminal;
|
||||
}
|
||||
|
||||
/* **************************************************************** */
|
||||
/* */
|
||||
/* How to Read Characters From the PC Terminal */
|
||||
/* */
|
||||
/* **************************************************************** */
|
||||
|
||||
/* This will most certainly work ONLY with DJGPP. */
|
||||
#ifdef __DJGPP__
|
||||
|
||||
#include <errno.h>
|
||||
#include <sys/fsext.h>
|
||||
#include <dpmi.h>
|
||||
|
||||
/* Translation table for some special keys.
|
||||
Arrow keys which are standard on other keyboards are translated into
|
||||
standard ESC-sequences, in case somebody rebinds the simple keys
|
||||
(like C-f, C-b, C-n, etc.).
|
||||
|
||||
The strange "\033\061" prefix in some keys is a numeric argument of
|
||||
one, which means ``do the next command once''. It is here so that
|
||||
when the according PC key is pressed in the middle of an incremental
|
||||
search, Info doesn't see just an ASCII character like `n' or `B',
|
||||
and doesn't add it to the search string; instead, it will exit the
|
||||
incremental search and then perform the command. */
|
||||
static struct
|
||||
{
|
||||
int inkey;
|
||||
unsigned char const * const sequence;
|
||||
} DJGPP_keytab[] = { /* these are for moving between nodes... */
|
||||
{K_Control_PageDown, "\033\061n"},
|
||||
{K_Control_PageUp, "\033\061p"},
|
||||
{K_Control_Up, "\033\061u"},
|
||||
{K_Control_Down, "\033\061m"},
|
||||
{K_Control_Center, "\033\061l"},
|
||||
|
||||
#if defined(INFOKEY)
|
||||
{K_Home, "\033[H"}, /* ...and these are for moving IN a node */
|
||||
{K_End, "\033[F"}, /* they're Numeric-Keypad-Keys, so */
|
||||
#else
|
||||
{K_Home, "\001"},
|
||||
{K_End, "\005"},
|
||||
#endif
|
||||
{K_Left, "\033[D"}, /* NUMLOCK should be off !! */
|
||||
{K_Right, "\033[C"},
|
||||
{K_Down, "\033[B"},
|
||||
{K_Up, "\033[A"},
|
||||
{K_PageDown, "\033[G"},
|
||||
{K_PageUp, "\033[I"},
|
||||
{K_Control_Left, "\033b"},
|
||||
{K_Control_Right, "\033f"},
|
||||
{K_Control_Home, "\033<"},
|
||||
{K_Control_End, "\033>"},
|
||||
|
||||
#if defined(INFOKEY)
|
||||
{K_EHome, "\033[H"}, /* these are also for moving IN a node */
|
||||
{K_EEnd, "\033[F"}, /* they're the "extended" (Grey) keys */
|
||||
#else
|
||||
{K_EHome, "\001"},
|
||||
{K_EEnd, "\005"},
|
||||
#endif
|
||||
{K_ELeft, "\033[D"},
|
||||
{K_ERight, "\033[C"},
|
||||
{K_EDown, "\033[B"},
|
||||
{K_EUp, "\033[A"},
|
||||
{K_EPageDown, "\033[G"},
|
||||
{K_EPageUp, "\033[I"},
|
||||
{K_Control_ELeft, "\033b"},
|
||||
{K_Control_ERight, "\033f"},
|
||||
{K_Control_EHome, "\033<"},
|
||||
{K_Control_EEnd, "\033>"},
|
||||
|
||||
{K_BackTab, "\033\011"},
|
||||
{K_F1, "\10"}, /* YEAH, gimme that good old F-one-thing */
|
||||
{K_Delete, "\177"}, /* to make Kp-Del be DEL (0x7f) */
|
||||
{K_EDelete, "\177"}, /* to make Delete be DEL (0x7f) */
|
||||
#if defined(INFOKEY)
|
||||
{K_Insert, "\033[L"},
|
||||
{K_EInsert, "\033[L"},
|
||||
#endif
|
||||
|
||||
/* These are here to map more Alt-X keys to ESC X sequences. */
|
||||
{K_Alt_Q, "\033q"},
|
||||
{K_Alt_W, "\033w"},
|
||||
{K_Alt_E, "\033e"},
|
||||
{K_Alt_R, "\033r"},
|
||||
{K_Alt_T, "\033t"},
|
||||
{K_Alt_Y, "\033y"},
|
||||
{K_Alt_U, "\033u"},
|
||||
{K_Alt_I, "\033i"},
|
||||
{K_Alt_O, "\033o"},
|
||||
{K_Alt_P, "\033p"},
|
||||
{K_Alt_LBracket, "\033["},
|
||||
{K_Alt_RBracket, "\033]"},
|
||||
{K_Alt_Return, "\033\015"},
|
||||
{K_Alt_A, "\033a"},
|
||||
{K_Alt_S, "\033s"},
|
||||
{K_Alt_D, "\033d"},
|
||||
{K_Alt_F, "\033f"},
|
||||
{K_Alt_G, "\033g"},
|
||||
{K_Alt_H, "\033h"},
|
||||
{K_Alt_J, "\033j"},
|
||||
{K_Alt_K, "\033k"},
|
||||
{K_Alt_L, "\033l"},
|
||||
{K_Alt_Semicolon, "\033;"},
|
||||
{K_Alt_Quote, "\033'"},
|
||||
{K_Alt_Backquote, "\033`"},
|
||||
{K_Alt_Backslash, "\033\\"},
|
||||
{K_Alt_Z, "\033z"},
|
||||
{K_Alt_X, "\033x"},
|
||||
{K_Alt_C, "\033c"},
|
||||
{K_Alt_V, "\033v"},
|
||||
{K_Alt_B, "\033b"},
|
||||
{K_Alt_N, "\033n"},
|
||||
{K_Alt_M, "\033m"},
|
||||
{K_Alt_Comma, "\033<"}, /* our reader cannot distinguish between */
|
||||
{K_Alt_Period, "\033>"}, /* Alt-. and Alt->, so we cheat a little */
|
||||
{K_Alt_Slash, "\033?"}, /* ditto, to get Alt-? */
|
||||
{K_Alt_Backspace, "\033\177"}, /* M-DEL, to delete word backwards */
|
||||
{K_Alt_1, "\033\061"},
|
||||
{K_Alt_2, "\033\062"},
|
||||
{K_Alt_3, "\033\063"},
|
||||
{K_Alt_4, "\033\064"},
|
||||
{K_Alt_5, "\033\065"},
|
||||
{K_Alt_6, "\033\066"},
|
||||
{K_Alt_7, "\033\067"},
|
||||
{K_Alt_8, "\033\070"},
|
||||
{K_Alt_9, "\033\071"},
|
||||
{K_Alt_0, "\033\060"},
|
||||
{K_Alt_Dash, "\033\055"},
|
||||
{K_Alt_EPageUp, "\033\033[I"},
|
||||
{K_Alt_EPageDown, "\033\033[G"},
|
||||
{K_Alt_Equals, "\033\075"},
|
||||
{K_Alt_EDelete, "\033\177"},
|
||||
{K_Alt_Tab, "\033\011"},
|
||||
{0, 0}
|
||||
};
|
||||
|
||||
/* Given a key, return the sequence of characters which
|
||||
our keyboard driver generates. */
|
||||
static unsigned const char *
|
||||
find_sequence (int key)
|
||||
{
|
||||
int i;
|
||||
|
||||
for (i = 0; DJGPP_keytab[i].inkey; i++)
|
||||
if (key == DJGPP_keytab[i].inkey)
|
||||
return DJGPP_keytab[i].sequence;
|
||||
|
||||
return (unsigned const char *)NULL;
|
||||
}
|
||||
|
||||
/* Return zero if a key is pending in the
|
||||
keyboard buffer, non-zero otherwise. */
|
||||
static int
|
||||
kbd_buffer_empty (void)
|
||||
{
|
||||
__dpmi_regs r;
|
||||
int retval;
|
||||
|
||||
r.h.ah = 0x11; /* Get enhanced keyboard status */
|
||||
__dpmi_int (0x16, &r);
|
||||
|
||||
/* If the keyboard buffer is empty, the Zero Flag will be set. */
|
||||
return (r.x.flags & 0x40) == 0x40;
|
||||
}
|
||||
|
||||
/* The buffered characters pending to be read.
|
||||
Actually, Info usually reads a single character, but when we
|
||||
translate a key into a sequence of characters, we keep them here. */
|
||||
static unsigned char buffered[512];
|
||||
|
||||
/* Index of the next buffered character to be returned. */
|
||||
static int buf_idx;
|
||||
|
||||
/* Return the number of characters waiting to be read. */
|
||||
long
|
||||
pc_term_chars_avail (void)
|
||||
{
|
||||
if (buf_idx >= sizeof (buffered)) /* paranoia */
|
||||
{
|
||||
buf_idx = 0;
|
||||
buffered[buf_idx] = '\0';
|
||||
return 0;
|
||||
}
|
||||
else
|
||||
return (long)strlen (buffered + buf_idx);
|
||||
}
|
||||
|
||||
/* Our special terminal keyboard reader. It will be called by
|
||||
low-level libc functions when the application calls `read' or
|
||||
the ANSI-standard stream-oriented read functions. If the
|
||||
caller wants to read the terminal, we redirect the call to
|
||||
the BIOS keyboard functions, since that lets us recognize more
|
||||
keys than DOS does. */
|
||||
static int
|
||||
keyboard_read (__FSEXT_Fnumber func, int *retval, va_list rest_args)
|
||||
{
|
||||
/* When we are called, REST_ARGS are: file_descriptor, buf, nbytes. */
|
||||
unsigned char *buf;
|
||||
size_t nbytes, nread = 0;
|
||||
int fd = va_arg (rest_args, int);
|
||||
|
||||
/* Is this call for us? */
|
||||
if (func != __FSEXT_read || !isatty (fd))
|
||||
return 0; /* and the usual DOS call will be issued */
|
||||
|
||||
buf = va_arg (rest_args, unsigned char *);
|
||||
nbytes = va_arg (rest_args, size_t);
|
||||
|
||||
if (!buf)
|
||||
{
|
||||
errno = EINVAL;
|
||||
*retval = -1;
|
||||
return 1;
|
||||
}
|
||||
if (!nbytes)
|
||||
{
|
||||
*retval = 0;
|
||||
return 1;
|
||||
}
|
||||
|
||||
/* Loop here until enough bytes has been read. */
|
||||
do
|
||||
{
|
||||
int key;
|
||||
|
||||
/* If any ``buffered characters'' are left, return as much
|
||||
of them as the caller wanted. */
|
||||
while (buffered[buf_idx] && nbytes)
|
||||
{
|
||||
*buf++ = buffered[buf_idx++];
|
||||
nread++;
|
||||
nbytes--;
|
||||
}
|
||||
|
||||
if (nbytes <= 0)
|
||||
break;
|
||||
|
||||
/* Wait for another key.
|
||||
We do that in a busy-waiting loop so we don't get parked
|
||||
inside a BIOS call, which will effectively disable signals.
|
||||
While we wait for them to type something, we repeatedly
|
||||
release the rest of our time slice, so that other programs
|
||||
in a multitasking environment, such as Windows, get more cycles. */
|
||||
while (kbd_buffer_empty ())
|
||||
__dpmi_yield ();
|
||||
|
||||
key = getxkey ();
|
||||
|
||||
/* Translate the key if necessary.
|
||||
Untranslated non-ASCII keys are silently ignored. */
|
||||
if ((key & 0x300) != 0)
|
||||
{
|
||||
unsigned char const * key_sequence = find_sequence (key);
|
||||
|
||||
if (key_sequence != NULL)
|
||||
{
|
||||
strcpy (buffered, key_sequence);
|
||||
buf_idx = 0;
|
||||
}
|
||||
}
|
||||
else if (key == K_Control_Z)
|
||||
raise (SIGUSR1); /* we don't have SIGTSTP, so simulate it */
|
||||
else if (key <= 0xff)
|
||||
{
|
||||
*buf++ = key;
|
||||
nbytes--;
|
||||
nread++;
|
||||
}
|
||||
}
|
||||
while (nbytes > 0);
|
||||
|
||||
*retval = nread;
|
||||
return 1; /* meaning that we handled the call */
|
||||
}
|
||||
|
||||
/* Install our keyboard handler.
|
||||
This is called by the startup code before `main'. */
|
||||
static void __attribute__((constructor))
|
||||
install_keyboard_handler (void)
|
||||
{
|
||||
__FSEXT_set_function (fileno (stdin), keyboard_read);
|
||||
|
||||
/* We need to set this single hook here; the rest
|
||||
will be set by pc_initialize_terminal when it is called. */
|
||||
terminal_initialize_terminal_hook = pc_initialize_terminal;
|
||||
}
|
||||
|
||||
#endif /* __DJGPP__ */
|
||||
|
||||
/* **************************************************************** */
|
||||
/* */
|
||||
/* Emulation of SIGTSTP on Ctrl-Z */
|
||||
/* */
|
||||
/* **************************************************************** */
|
||||
|
||||
#include <limits.h>
|
||||
#include "signals.h"
|
||||
#include "session.h"
|
||||
|
||||
#ifndef PATH_MAX
|
||||
# define PATH_MAX 512
|
||||
#endif
|
||||
|
||||
/* Effectively disable signals which aren't defined
|
||||
(assuming no signal can ever be zero).
|
||||
SIGINT is ANSI, so we expect it to be always defined. */
|
||||
#ifndef SIGUSR1
|
||||
# define SIGUSR1 0
|
||||
#endif
|
||||
#ifndef SIGQUIT
|
||||
# define SIGQUIT 0
|
||||
#endif
|
||||
|
||||
int
|
||||
kill (pid_t pid, int sig)
|
||||
{
|
||||
static char interrupted_msg[] = "Interrupted\r\n";
|
||||
static char stopped_msg[] = "Stopped. Type `exit RET' to return.\r\n";
|
||||
char cwd[PATH_MAX + 1];
|
||||
|
||||
if (pid == getpid ()
|
||||
|| pid == 0
|
||||
|| pid == -1
|
||||
|| pid == -getpid ())
|
||||
{
|
||||
switch (sig)
|
||||
{
|
||||
RETSIGTYPE (*old_INT)(int), (*old_QUIT)(int);
|
||||
|
||||
case SIGINT:
|
||||
#ifdef __DJGPP__
|
||||
/* If SIGINT was generated by a readable key, we want to remove
|
||||
it from the PC keyboard buffer, so that DOS and other
|
||||
programs never see it. DJGPP signal-handling mechanism
|
||||
doesn't remove the INT key from the keyboard buffer. */
|
||||
if (!kbd_buffer_empty ())
|
||||
getxkey ();
|
||||
#endif
|
||||
pc_write_chars (interrupted_msg, sizeof (interrupted_msg) - 1);
|
||||
xexit (1);
|
||||
case SIGUSR1:
|
||||
/* Simulate SIGTSTP by invoking a subsidiary shell. */
|
||||
pc_goto_xy (0, outside_info.screenheight - 1);
|
||||
pc_clear_to_eol ();
|
||||
pc_write_chars (stopped_msg, sizeof (stopped_msg) - 1);
|
||||
|
||||
/* The child shell can change the working directory, so
|
||||
we need to save and restore it, since it is global. */
|
||||
if (!getcwd (cwd, PATH_MAX)) /* should never happen */
|
||||
cwd[0] = '\0';
|
||||
|
||||
/* We don't want to get fatal signals while the subshell runs. */
|
||||
old_INT = signal (SIGINT, SIG_IGN);
|
||||
old_QUIT = signal (SIGQUIT, SIG_IGN);
|
||||
system ("");
|
||||
if (*cwd)
|
||||
chdir (cwd);
|
||||
signal (SIGINT, old_INT);
|
||||
signal (SIGQUIT, old_QUIT);
|
||||
break;
|
||||
default:
|
||||
if (sig)
|
||||
raise (sig);
|
||||
break;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
else
|
||||
return -1;
|
||||
}
|
||||
|
||||
/* These should never be called, but they make the linker happy. */
|
||||
|
||||
void tputs (char *a, int b, int (*c)())
|
||||
{
|
||||
perror ("tputs");
|
||||
}
|
||||
|
||||
char* tgoto (char*a, int b, int c)
|
||||
{
|
||||
perror ("tgoto"); return 0; /* here and below, added dummy retvals */
|
||||
}
|
||||
|
||||
int tgetnum (char*a)
|
||||
{
|
||||
perror ("tgetnum"); return 0;
|
||||
}
|
||||
|
||||
int tgetflag (char*a)
|
||||
{
|
||||
perror ("tgetflag"); return 0;
|
||||
}
|
||||
|
||||
char* tgetstr (char *a, char **b)
|
||||
{
|
||||
perror ("tgetstr"); return 0;
|
||||
}
|
||||
|
||||
int tgetent (char*a, char*b)
|
||||
{
|
||||
perror ("tgetent"); return 0;
|
||||
}
|
||||
|
||||
int tcgetattr(int fildes, struct termios *termios_p)
|
||||
{
|
||||
perror ("tcgetattr"); return 0;
|
||||
}
|
||||
|
||||
int tcsetattr(int fd, int opt_actions, const struct termios *termios_p)
|
||||
{
|
||||
perror ("tcsetattr"); return 0;
|
||||
}
|
499
external/gpl2/texinfo/dist/info/search.c
vendored
Normal file
499
external/gpl2/texinfo/dist/info/search.c
vendored
Normal file
@ -0,0 +1,499 @@
|
||||
/* $NetBSD: search.c,v 1.1.1.1 2016/01/14 00:11:29 christos Exp $ */
|
||||
|
||||
/* search.c -- searching large bodies of text.
|
||||
Id: search.c,v 1.3 2004/04/11 17:56:46 karl Exp
|
||||
|
||||
Copyright (C) 1993, 1997, 1998, 2002, 2004 Free Software Foundation, Inc.
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2, or (at your option)
|
||||
any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program; if not, write to the Free Software
|
||||
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
|
||||
Written by Brian Fox (bfox@ai.mit.edu). */
|
||||
|
||||
#include "info.h"
|
||||
|
||||
#include "search.h"
|
||||
#include "nodes.h"
|
||||
|
||||
/* The search functions take two arguments:
|
||||
|
||||
1) a string to search for, and
|
||||
|
||||
2) a pointer to a SEARCH_BINDING which contains the buffer, start,
|
||||
and end of the search.
|
||||
|
||||
They return a long, which is the offset from the start of the buffer
|
||||
at which the match was found. An offset of -1 indicates failure. */
|
||||
|
||||
/* A function which makes a binding with buffer and bounds. */
|
||||
SEARCH_BINDING *
|
||||
make_binding (char *buffer, long int start, long int end)
|
||||
{
|
||||
SEARCH_BINDING *binding;
|
||||
|
||||
binding = (SEARCH_BINDING *)xmalloc (sizeof (SEARCH_BINDING));
|
||||
binding->buffer = buffer;
|
||||
binding->start = start;
|
||||
binding->end = end;
|
||||
binding->flags = 0;
|
||||
|
||||
return (binding);
|
||||
}
|
||||
|
||||
/* Make a copy of BINDING without duplicating the data. */
|
||||
SEARCH_BINDING *
|
||||
copy_binding (SEARCH_BINDING *binding)
|
||||
{
|
||||
SEARCH_BINDING *copy;
|
||||
|
||||
copy = make_binding (binding->buffer, binding->start, binding->end);
|
||||
copy->flags = binding->flags;
|
||||
return (copy);
|
||||
}
|
||||
|
||||
|
||||
/* **************************************************************** */
|
||||
/* */
|
||||
/* The Actual Searching Functions */
|
||||
/* */
|
||||
/* **************************************************************** */
|
||||
|
||||
/* Search forwards or backwards for the text delimited by BINDING.
|
||||
The search is forwards if BINDING->start is greater than BINDING->end. */
|
||||
long
|
||||
search (char *string, SEARCH_BINDING *binding)
|
||||
{
|
||||
long result;
|
||||
|
||||
/* If the search is backwards, then search backwards, otherwise forwards. */
|
||||
if (binding->start > binding->end)
|
||||
result = search_backward (string, binding);
|
||||
else
|
||||
result = search_forward (string, binding);
|
||||
|
||||
return (result);
|
||||
}
|
||||
|
||||
/* Search forwards for STRING through the text delimited in BINDING. */
|
||||
long
|
||||
search_forward (char *string, SEARCH_BINDING *binding)
|
||||
{
|
||||
register int c, i, len;
|
||||
register char *buff, *end;
|
||||
char *alternate = (char *)NULL;
|
||||
|
||||
len = strlen (string);
|
||||
|
||||
/* We match characters in the search buffer against STRING and ALTERNATE.
|
||||
ALTERNATE is a case reversed version of STRING; this is cheaper than
|
||||
case folding each character before comparison. Alternate is only
|
||||
used if the case folding bit is turned on in the passed BINDING. */
|
||||
|
||||
if (binding->flags & S_FoldCase)
|
||||
{
|
||||
alternate = xstrdup (string);
|
||||
|
||||
for (i = 0; i < len; i++)
|
||||
{
|
||||
if (islower (alternate[i]))
|
||||
alternate[i] = toupper (alternate[i]);
|
||||
else if (isupper (alternate[i]))
|
||||
alternate[i] = tolower (alternate[i]);
|
||||
}
|
||||
}
|
||||
|
||||
buff = binding->buffer + binding->start;
|
||||
end = binding->buffer + binding->end + 1;
|
||||
|
||||
while (buff < (end - len))
|
||||
{
|
||||
for (i = 0; i < len; i++)
|
||||
{
|
||||
c = buff[i];
|
||||
|
||||
if ((c != string[i]) && (!alternate || c != alternate[i]))
|
||||
break;
|
||||
}
|
||||
|
||||
if (!string[i])
|
||||
{
|
||||
if (alternate)
|
||||
free (alternate);
|
||||
if (binding->flags & S_SkipDest)
|
||||
buff += len;
|
||||
return ((long) (buff - binding->buffer));
|
||||
}
|
||||
|
||||
buff++;
|
||||
}
|
||||
|
||||
if (alternate)
|
||||
free (alternate);
|
||||
|
||||
return ((long) -1);
|
||||
}
|
||||
|
||||
/* Search for STRING backwards through the text delimited in BINDING. */
|
||||
long
|
||||
search_backward (char *input_string, SEARCH_BINDING *binding)
|
||||
{
|
||||
register int c, i, len;
|
||||
register char *buff, *end;
|
||||
char *string;
|
||||
char *alternate = (char *)NULL;
|
||||
|
||||
len = strlen (input_string);
|
||||
|
||||
/* Reverse the characters in the search string. */
|
||||
string = (char *)xmalloc (1 + len);
|
||||
for (c = 0, i = len - 1; input_string[c]; c++, i--)
|
||||
string[i] = input_string[c];
|
||||
|
||||
string[c] = '\0';
|
||||
|
||||
/* We match characters in the search buffer against STRING and ALTERNATE.
|
||||
ALTERNATE is a case reversed version of STRING; this is cheaper than
|
||||
case folding each character before comparison. ALTERNATE is only
|
||||
used if the case folding bit is turned on in the passed BINDING. */
|
||||
|
||||
if (binding->flags & S_FoldCase)
|
||||
{
|
||||
alternate = xstrdup (string);
|
||||
|
||||
for (i = 0; i < len; i++)
|
||||
{
|
||||
if (islower (alternate[i]))
|
||||
alternate[i] = toupper (alternate[i]);
|
||||
else if (isupper (alternate[i]))
|
||||
alternate[i] = tolower (alternate[i]);
|
||||
}
|
||||
}
|
||||
|
||||
buff = binding->buffer + binding->start - 1;
|
||||
end = binding->buffer + binding->end;
|
||||
|
||||
while (buff > (end + len))
|
||||
{
|
||||
for (i = 0; i < len; i++)
|
||||
{
|
||||
c = *(buff - i);
|
||||
|
||||
if (c != string[i] && (!alternate || c != alternate[i]))
|
||||
break;
|
||||
}
|
||||
|
||||
if (!string[i])
|
||||
{
|
||||
free (string);
|
||||
if (alternate)
|
||||
free (alternate);
|
||||
|
||||
if (binding->flags & S_SkipDest)
|
||||
buff -= len;
|
||||
return ((long) (1 + (buff - binding->buffer)));
|
||||
}
|
||||
|
||||
buff--;
|
||||
}
|
||||
|
||||
free (string);
|
||||
if (alternate)
|
||||
free (alternate);
|
||||
|
||||
return ((long) -1);
|
||||
}
|
||||
|
||||
/* Find STRING in LINE, returning the offset of the end of the string.
|
||||
Return an offset of -1 if STRING does not appear in LINE. The search
|
||||
is bound by the end of the line (i.e., either NEWLINE or 0). */
|
||||
int
|
||||
string_in_line (char *string, char *line)
|
||||
{
|
||||
register int end;
|
||||
SEARCH_BINDING binding;
|
||||
|
||||
/* Find the end of the line. */
|
||||
for (end = 0; line[end] && line[end] != '\n'; end++);
|
||||
|
||||
/* Search for STRING within these confines. */
|
||||
binding.buffer = line;
|
||||
binding.start = 0;
|
||||
binding.end = end;
|
||||
binding.flags = S_FoldCase | S_SkipDest;
|
||||
|
||||
return (search_forward (string, &binding));
|
||||
}
|
||||
|
||||
/* Return non-zero if STRING is the first text to appear at BINDING. */
|
||||
int
|
||||
looking_at (char *string, SEARCH_BINDING *binding)
|
||||
{
|
||||
long search_end;
|
||||
|
||||
search_end = search (string, binding);
|
||||
|
||||
/* If the string was not found, SEARCH_END is -1. If the string was found,
|
||||
but not right away, SEARCH_END is != binding->start. Otherwise, the
|
||||
string was found at binding->start. */
|
||||
return (search_end == binding->start);
|
||||
}
|
||||
|
||||
/* **************************************************************** */
|
||||
/* */
|
||||
/* Small String Searches */
|
||||
/* */
|
||||
/* **************************************************************** */
|
||||
|
||||
/* Function names that start with "skip" are passed a string, and return
|
||||
an offset from the start of that string. Function names that start
|
||||
with "find" are passed a SEARCH_BINDING, and return an absolute position
|
||||
marker of the item being searched for. "Find" functions return a value
|
||||
of -1 if the item being looked for couldn't be found. */
|
||||
|
||||
/* Return the index of the first non-whitespace character in STRING. */
|
||||
int
|
||||
skip_whitespace (char *string)
|
||||
{
|
||||
register int i;
|
||||
|
||||
for (i = 0; string && whitespace (string[i]); i++);
|
||||
return (i);
|
||||
}
|
||||
|
||||
/* Return the index of the first non-whitespace or newline character in
|
||||
STRING. */
|
||||
int
|
||||
skip_whitespace_and_newlines (char *string)
|
||||
{
|
||||
register int i;
|
||||
|
||||
for (i = 0; string && whitespace_or_newline (string[i]); i++);
|
||||
return (i);
|
||||
}
|
||||
|
||||
/* Return the index of the first whitespace character in STRING. */
|
||||
int
|
||||
skip_non_whitespace (char *string)
|
||||
{
|
||||
register int i;
|
||||
|
||||
for (i = 0; string && string[i] && !whitespace (string[i]); i++);
|
||||
return (i);
|
||||
}
|
||||
|
||||
/* Return the index of the first non-node character in STRING. Note that
|
||||
this function contains quite a bit of hair to ignore periods in some
|
||||
special cases. This is because we here at GNU ship some info files which
|
||||
contain nodenames that contain periods. No such nodename can start with
|
||||
a period, or continue with whitespace, newline, or ')' immediately following
|
||||
the period. If second argument NEWLINES_OKAY is non-zero, newlines should
|
||||
be skipped while parsing out the nodename specification. */
|
||||
int
|
||||
skip_node_characters (char *string, int newlines_okay)
|
||||
{
|
||||
register int c, i = 0;
|
||||
int paren_seen = 0;
|
||||
int paren = 0;
|
||||
|
||||
/* Handle special case. This is when another function has parsed out the
|
||||
filename component of the node name, and we just want to parse out the
|
||||
nodename proper. In that case, a period at the start of the nodename
|
||||
indicates an empty nodename. */
|
||||
if (string && *string == '.')
|
||||
return (0);
|
||||
|
||||
if (string && *string == '(')
|
||||
{
|
||||
paren++;
|
||||
paren_seen++;
|
||||
i++;
|
||||
}
|
||||
|
||||
for (; string && (c = string[i]); i++)
|
||||
{
|
||||
if (paren)
|
||||
{
|
||||
if (c == '(')
|
||||
paren++;
|
||||
else if (c == ')')
|
||||
paren--;
|
||||
|
||||
continue;
|
||||
}
|
||||
|
||||
/* If the character following the close paren is a space or period,
|
||||
then this node name has no more characters associated with it. */
|
||||
if (c == '\t' ||
|
||||
c == ',' ||
|
||||
c == INFO_TAGSEP ||
|
||||
((!newlines_okay) && (c == '\n')) ||
|
||||
((paren_seen && string[i - 1] == ')') &&
|
||||
(c == ' ' || c == '.')) ||
|
||||
(c == '.' &&
|
||||
(
|
||||
#if 0
|
||||
/* This test causes a node name ending in a period, like `This.', not to
|
||||
be found. The trailing . is stripped. This occurs in the jargon
|
||||
file (`I see no X here.' is a node name). */
|
||||
(!string[i + 1]) ||
|
||||
#endif
|
||||
(whitespace_or_newline (string[i + 1])) ||
|
||||
(string[i + 1] == ')'))))
|
||||
break;
|
||||
}
|
||||
return (i);
|
||||
}
|
||||
|
||||
|
||||
/* **************************************************************** */
|
||||
/* */
|
||||
/* Searching FILE_BUFFER's */
|
||||
/* */
|
||||
/* **************************************************************** */
|
||||
|
||||
/* Return the absolute position of the first occurence of a node separator in
|
||||
BINDING-buffer. The search starts at BINDING->start. Return -1 if no node
|
||||
separator was found. */
|
||||
long
|
||||
find_node_separator (SEARCH_BINDING *binding)
|
||||
{
|
||||
register long i;
|
||||
char *body;
|
||||
|
||||
body = binding->buffer;
|
||||
|
||||
/* A node is started by [^L]^_[^L]\n. That is to say, the C-l's are
|
||||
optional, but the DELETE and NEWLINE are not. This separator holds
|
||||
true for all separated elements in an Info file, including the tags
|
||||
table (if present) and the indirect tags table (if present). */
|
||||
for (i = binding->start; i < binding->end - 1; i++)
|
||||
if (((body[i] == INFO_FF && body[i + 1] == INFO_COOKIE) &&
|
||||
(body[i + 2] == '\n' ||
|
||||
(body[i + 2] == INFO_FF && body[i + 3] == '\n'))) ||
|
||||
((body[i] == INFO_COOKIE) &&
|
||||
(body[i + 1] == '\n' ||
|
||||
(body[i + 1] == INFO_FF && body[i + 2] == '\n'))))
|
||||
return (i);
|
||||
return (-1);
|
||||
}
|
||||
|
||||
/* Return the length of the node separator characters that BODY is
|
||||
currently pointing at. */
|
||||
int
|
||||
skip_node_separator (char *body)
|
||||
{
|
||||
register int i;
|
||||
|
||||
i = 0;
|
||||
|
||||
if (body[i] == INFO_FF)
|
||||
i++;
|
||||
|
||||
if (body[i++] != INFO_COOKIE)
|
||||
return (0);
|
||||
|
||||
if (body[i] == INFO_FF)
|
||||
i++;
|
||||
|
||||
if (body[i++] != '\n')
|
||||
return (0);
|
||||
|
||||
return (i);
|
||||
}
|
||||
|
||||
/* Return the number of characters from STRING to the start of
|
||||
the next line. */
|
||||
int
|
||||
skip_line (char *string)
|
||||
{
|
||||
register int i;
|
||||
|
||||
for (i = 0; string && string[i] && string[i] != '\n'; i++);
|
||||
|
||||
if (string[i] == '\n')
|
||||
i++;
|
||||
|
||||
return (i);
|
||||
}
|
||||
|
||||
/* Return the absolute position of the beginning of a tags table in this
|
||||
binding starting the search at binding->start. */
|
||||
long
|
||||
find_tags_table (SEARCH_BINDING *binding)
|
||||
{
|
||||
SEARCH_BINDING tmp_search;
|
||||
long position;
|
||||
|
||||
tmp_search.buffer = binding->buffer;
|
||||
tmp_search.start = binding->start;
|
||||
tmp_search.end = binding->end;
|
||||
tmp_search.flags = S_FoldCase;
|
||||
|
||||
while ((position = find_node_separator (&tmp_search)) != -1 )
|
||||
{
|
||||
tmp_search.start = position;
|
||||
tmp_search.start += skip_node_separator (tmp_search.buffer
|
||||
+ tmp_search.start);
|
||||
|
||||
if (looking_at (TAGS_TABLE_BEG_LABEL, &tmp_search))
|
||||
return (position);
|
||||
}
|
||||
return (-1);
|
||||
}
|
||||
|
||||
/* Return the absolute position of the node named NODENAME in BINDING.
|
||||
This is a brute force search, and we wish to avoid it when possible.
|
||||
This function is called when a tag (indirect or otherwise) doesn't
|
||||
really point to the right node. It returns the absolute position of
|
||||
the separator preceding the node. */
|
||||
long
|
||||
find_node_in_binding (char *nodename, SEARCH_BINDING *binding)
|
||||
{
|
||||
long position;
|
||||
int offset, namelen;
|
||||
SEARCH_BINDING tmp_search;
|
||||
|
||||
namelen = strlen (nodename);
|
||||
|
||||
tmp_search.buffer = binding->buffer;
|
||||
tmp_search.start = binding->start;
|
||||
tmp_search.end = binding->end;
|
||||
tmp_search.flags = 0;
|
||||
|
||||
while ((position = find_node_separator (&tmp_search)) != -1)
|
||||
{
|
||||
tmp_search.start = position;
|
||||
tmp_search.start += skip_node_separator
|
||||
(tmp_search.buffer + tmp_search.start);
|
||||
|
||||
offset = string_in_line
|
||||
(INFO_NODE_LABEL, tmp_search.buffer + tmp_search.start);
|
||||
|
||||
if (offset == -1)
|
||||
continue;
|
||||
|
||||
tmp_search.start += offset;
|
||||
tmp_search.start += skip_whitespace (tmp_search.buffer + tmp_search.start);
|
||||
offset = skip_node_characters
|
||||
(tmp_search.buffer + tmp_search.start, DONT_SKIP_NEWLINES);
|
||||
|
||||
/* Notice that this is an exact match. You cannot grovel through
|
||||
the buffer with this function looking for random nodes. */
|
||||
if ((offset == namelen) &&
|
||||
(tmp_search.buffer[tmp_search.start] == nodename[0]) &&
|
||||
(strncmp (tmp_search.buffer + tmp_search.start, nodename, offset) == 0))
|
||||
return (position);
|
||||
}
|
||||
return (-1);
|
||||
}
|
77
external/gpl2/texinfo/dist/info/search.h
vendored
Normal file
77
external/gpl2/texinfo/dist/info/search.h
vendored
Normal file
@ -0,0 +1,77 @@
|
||||
/* $NetBSD: search.h,v 1.1.1.1 2016/01/14 00:11:29 christos Exp $ */
|
||||
|
||||
/* search.h -- Structure used to search large bodies of text, with bounds.
|
||||
Id: search.h,v 1.3 2004/04/11 17:56:46 karl Exp
|
||||
|
||||
Copyright (C) 1993, 1997, 1998, 2002, 2004 Free Software Foundation, Inc.
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2, or (at your option)
|
||||
any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program; if not, write to the Free Software
|
||||
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
|
||||
Written by Brian Fox (bfox@ai.mit.edu). */
|
||||
|
||||
/* The search functions take two arguments:
|
||||
|
||||
1) a string to search for, and
|
||||
|
||||
2) a pointer to a SEARCH_BINDING which contains the buffer, start,
|
||||
and end of the search.
|
||||
|
||||
They return a long, which is the offset from the start of the buffer
|
||||
at which the match was found. An offset of -1 indicates failure. */
|
||||
|
||||
#ifndef INFO_SEARCH_H
|
||||
#define INFO_SEARCH_H
|
||||
|
||||
typedef struct {
|
||||
char *buffer; /* The buffer of text to search. */
|
||||
long start; /* Offset of the start of the search. */
|
||||
long end; /* Offset of the end of the searh. */
|
||||
int flags; /* Flags controlling the type of search. */
|
||||
} SEARCH_BINDING;
|
||||
|
||||
#define S_FoldCase 0x01 /* Set means fold case in searches. */
|
||||
#define S_SkipDest 0x02 /* Set means return pointing after the dest. */
|
||||
|
||||
SEARCH_BINDING *make_binding (char *buffer, long int start, long int end);
|
||||
SEARCH_BINDING *copy_binding (SEARCH_BINDING *binding);
|
||||
extern long search_forward (char *string, SEARCH_BINDING *binding);
|
||||
extern long search_backward (char *input_string, SEARCH_BINDING *binding);
|
||||
extern long search (char *string, SEARCH_BINDING *binding);
|
||||
extern int looking_at (char *string, SEARCH_BINDING *binding);
|
||||
|
||||
/* Note that STRING_IN_LINE () always returns the offset of the 1st character
|
||||
after the string. */
|
||||
extern int string_in_line (char *string, char *line);
|
||||
|
||||
/* Function names that start with "skip" are passed a string, and return
|
||||
an offset from the start of that string. Function names that start
|
||||
with "find" are passed a SEARCH_BINDING, and return an absolute position
|
||||
marker of the item being searched for. "Find" functions return a value
|
||||
of -1 if the item being looked for couldn't be found. */
|
||||
extern int skip_whitespace (char *string);
|
||||
extern int skip_non_whitespace (char *string);
|
||||
extern int skip_whitespace_and_newlines (char *string);
|
||||
extern int skip_line (char *string);
|
||||
extern int skip_node_characters (char *string, int newlines_okay);
|
||||
extern int skip_node_separator (char *body);
|
||||
|
||||
#define DONT_SKIP_NEWLINES 0
|
||||
#define SKIP_NEWLINES 1
|
||||
|
||||
extern long find_node_separator (SEARCH_BINDING *binding);
|
||||
extern long find_tags_table (SEARCH_BINDING *binding);
|
||||
extern long find_node_in_binding (char *nodename, SEARCH_BINDING *binding);
|
||||
|
||||
#endif /* not INFO_SEARCH_H */
|
5041
external/gpl2/texinfo/dist/info/session.c
vendored
Normal file
5041
external/gpl2/texinfo/dist/info/session.c
vendored
Normal file
File diff suppressed because it is too large
Load Diff
239
external/gpl2/texinfo/dist/info/session.h
vendored
Normal file
239
external/gpl2/texinfo/dist/info/session.h
vendored
Normal file
@ -0,0 +1,239 @@
|
||||
/* $NetBSD: session.h,v 1.1.1.1 2016/01/14 00:11:29 christos Exp $ */
|
||||
|
||||
/* session.h -- Functions found in session.c.
|
||||
Id: session.h,v 1.3 2004/04/11 17:56:46 karl Exp
|
||||
|
||||
Copyright (C) 1993, 1998, 1999, 2001, 2002, 2004 Free Software
|
||||
Foundation, Inc.
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2, or (at your option)
|
||||
any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program; if not, write to the Free Software
|
||||
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
|
||||
Written by Brian Fox (bfox@ai.mit.edu). */
|
||||
|
||||
#ifndef SESSION_H
|
||||
#define SESSION_H
|
||||
|
||||
#include "info.h"
|
||||
#include "dribble.h"
|
||||
|
||||
/* All commands that can be invoked from within info_session () receive
|
||||
arguments in the same way. This simple define declares the header
|
||||
of a function named NAME, with associated documentation DOC. The
|
||||
documentation string is groveled out of the source files by the
|
||||
utility program `makedoc', which is also responsible for making
|
||||
the documentation/function-pointer maps. */
|
||||
#define DECLARE_INFO_COMMAND(name, doc) \
|
||||
void name (WINDOW *window, int count, unsigned char key)
|
||||
|
||||
/* Variables found in session.h. */
|
||||
extern VFunction *info_last_executed_command;
|
||||
|
||||
/* Variable controlling the garbage collection of files briefly visited
|
||||
during searches. Such files are normally gc'ed, unless they were
|
||||
compressed to begin with. If this variable is non-zero, it says
|
||||
to gc even those file buffer contents which had to be uncompressed. */
|
||||
extern int gc_compressed_files;
|
||||
|
||||
/* When non-zero, tiling takes place automatically when info_split_window
|
||||
is called. */
|
||||
extern int auto_tiling_p;
|
||||
|
||||
/* Variable controlling the behaviour of default scrolling when you are
|
||||
already at the bottom of a node. */
|
||||
extern int info_scroll_behaviour;
|
||||
extern char *info_scroll_choices[];
|
||||
|
||||
/* Values for info_scroll_behaviour. */
|
||||
#define IS_Continuous 0 /* Try to get first menu item, or failing that, the
|
||||
"Next:" pointer, or failing that, the "Up:" and
|
||||
"Next:" of the up. */
|
||||
#define IS_NextOnly 1 /* Try to get "Next:" menu item. */
|
||||
#define IS_PageOnly 2 /* Simply give up at the bottom of a node. */
|
||||
|
||||
/* Utility functions found in session.c */
|
||||
extern void info_dispatch_on_key (unsigned char key, Keymap map);
|
||||
extern unsigned char info_get_input_char (void);
|
||||
extern unsigned char info_get_another_input_char (void);
|
||||
extern unsigned char info_input_pending_p (void);
|
||||
extern void remember_window_and_node (WINDOW *window, NODE *node);
|
||||
extern void set_remembered_pagetop_and_point (WINDOW *window);
|
||||
extern void set_window_pagetop (WINDOW *window, int desired_top);
|
||||
extern void info_set_node_of_window (int remember, WINDOW *window,
|
||||
NODE *node);
|
||||
extern void initialize_keyseq (void);
|
||||
extern void add_char_to_keyseq (char character);
|
||||
extern void info_gather_typeahead (void);
|
||||
extern FILE_BUFFER *file_buffer_of_window (WINDOW *window);
|
||||
extern long info_search_in_node (char *string, NODE *node,
|
||||
long int start, WINDOW *window, int dir, int case_sensitive);
|
||||
extern long info_target_search_node (NODE *node, char *string,
|
||||
long int start);
|
||||
extern void info_select_reference (WINDOW *window, REFERENCE *entry);
|
||||
extern int info_any_buffered_input_p (void);
|
||||
extern void print_node (NODE *node);
|
||||
extern void dump_node_to_file (NODE *node, char *filename,
|
||||
int dump_subnodes);
|
||||
extern void dump_nodes_to_file (char *filename, char **nodenames,
|
||||
char *output_filename, int dump_subnodes);
|
||||
extern char *program_name_from_file_name (char *file_name);
|
||||
|
||||
/* Do the physical deletion of WINDOW, and forget this window and
|
||||
associated nodes. */
|
||||
extern void info_delete_window_internal (WINDOW *window);
|
||||
|
||||
/* Tell Info that input is coming from the file FILENAME. */
|
||||
extern void info_set_input_from_file (char *filename);
|
||||
|
||||
#define return_if_control_g(val) \
|
||||
do { \
|
||||
info_gather_typeahead (); \
|
||||
if (info_input_pending_p () == Control ('g')) \
|
||||
return (val); \
|
||||
} while (0)
|
||||
|
||||
/* The names of the functions that run an info session. */
|
||||
|
||||
/* Starting an info session. */
|
||||
extern void begin_multiple_window_info_session (char *filename,
|
||||
char **nodenames);
|
||||
extern void begin_info_session (NODE *initial_node);
|
||||
extern void begin_info_session_with_error (NODE *initial_node,
|
||||
char *format, void *arg1, void *arg2);
|
||||
extern void info_session (void);
|
||||
extern void initialize_info_session (NODE *node, int clear_screen);
|
||||
extern void info_read_and_dispatch (void);
|
||||
extern void info_intuit_options_node (WINDOW *window,
|
||||
NODE *initial_node, char *program);
|
||||
|
||||
/* Moving the point within a node. */
|
||||
extern void info_next_line (WINDOW *window, int count, unsigned char key);
|
||||
extern void info_prev_line (WINDOW *window, int count, unsigned char key);
|
||||
extern void info_end_of_line (WINDOW *window, int count, unsigned char key);
|
||||
extern void info_beginning_of_line (WINDOW *window, int count, unsigned char key);
|
||||
extern void info_forward_char (WINDOW *window, int count, unsigned char key);
|
||||
extern void info_backward_char (WINDOW *window, int count, unsigned char key);
|
||||
extern void info_forward_word (WINDOW *window, int count, unsigned char key);
|
||||
extern void info_backward_word (WINDOW *window, int count, unsigned char key);
|
||||
extern void info_beginning_of_node (WINDOW *window, int count, unsigned char key);
|
||||
extern void info_end_of_node (WINDOW *window, int count, unsigned char key);
|
||||
extern void info_move_to_prev_xref (WINDOW *window, int count, unsigned char key);
|
||||
extern void info_move_to_next_xref (WINDOW *window, int count, unsigned char key);
|
||||
|
||||
/* Scrolling text within a window. */
|
||||
extern void info_scroll_forward (WINDOW *window, int count, unsigned char key);
|
||||
extern void info_scroll_backward (WINDOW *window, int count, unsigned char key);
|
||||
extern void info_redraw_display (WINDOW *window, int count, unsigned char key);
|
||||
extern void info_toggle_wrap (WINDOW *window, int count, unsigned char key);
|
||||
extern void info_move_to_window_line (WINDOW *window, int count,
|
||||
unsigned char key);
|
||||
extern void info_up_line (WINDOW *window, int count, unsigned char key);
|
||||
extern void info_down_line (WINDOW *window, int count, unsigned char key);
|
||||
extern void info_scroll_half_screen_down (WINDOW *window, int count,
|
||||
unsigned char key);
|
||||
extern void info_scroll_half_screen_up (WINDOW *window, int count,
|
||||
unsigned char key);
|
||||
extern void info_scroll_forward_set_window (WINDOW *window, int count,
|
||||
unsigned char key);
|
||||
extern void info_scroll_forward_page_only (WINDOW *window, int count,
|
||||
unsigned char key);
|
||||
extern void info_scroll_forward_page_only_set_window (WINDOW *window, int count,
|
||||
unsigned char key);
|
||||
extern void info_scroll_backward_set_window (WINDOW *window, int count,
|
||||
unsigned char key);
|
||||
extern void info_scroll_backward_page_only (WINDOW *window, int count,
|
||||
unsigned char key);
|
||||
extern void info_scroll_backward_page_only_set_window (WINDOW *window, int count,
|
||||
unsigned char key);
|
||||
extern void info_scroll_other_window_backward (WINDOW *window, int count,
|
||||
unsigned char key);
|
||||
|
||||
/* Manipulating multiple windows. */
|
||||
extern void info_split_window (WINDOW *window, int count, unsigned char key);
|
||||
extern void info_delete_window (WINDOW *window, int count, unsigned char key);
|
||||
extern void info_keep_one_window (WINDOW *window, int count, unsigned char key);
|
||||
extern void info_grow_window (WINDOW *window, int count, unsigned char key);
|
||||
extern void info_scroll_other_window (WINDOW *window, int count,
|
||||
unsigned char key);
|
||||
extern void info_tile_windows (WINDOW *window, int count, unsigned char key);
|
||||
extern void info_next_window (WINDOW *window, int count, unsigned char key);
|
||||
extern void info_prev_window (WINDOW *window, int count, unsigned char key);
|
||||
|
||||
/* Selecting nodes. */
|
||||
extern void info_next_node (WINDOW *window, int count, unsigned char key);
|
||||
extern void info_prev_node (WINDOW *window, int count, unsigned char key);
|
||||
extern void info_up_node (WINDOW *window, int count, unsigned char key);
|
||||
extern void info_last_node (WINDOW *window, int count, unsigned char key);
|
||||
extern void info_first_node (WINDOW *window, int count, unsigned char key);
|
||||
extern void info_history_node (WINDOW *window, int count, unsigned char key);
|
||||
extern void info_goto_node (WINDOW *window, int count, unsigned char key);
|
||||
extern void info_goto_invocation_node (WINDOW *window, int count,
|
||||
unsigned char key);
|
||||
extern void info_top_node (WINDOW *window, int count, unsigned char key);
|
||||
extern void info_dir_node (WINDOW *window, int count, unsigned char key);
|
||||
extern void info_global_next_node (WINDOW *window, int count, unsigned char key);
|
||||
extern void info_global_prev_node (WINDOW *window, int count, unsigned char key);
|
||||
extern void info_kill_node (WINDOW *window, int count, unsigned char key);
|
||||
extern void info_view_file (WINDOW *window, int count, unsigned char key);
|
||||
extern void info_menu_sequence (WINDOW *window, int count, unsigned char key);
|
||||
extern NODE *info_follow_menus (NODE *initial_node, char **menus,
|
||||
const char **errstr, char **errarg1, char **errarg2);
|
||||
extern void info_man (WINDOW *window, int count, unsigned char key);
|
||||
extern void list_visited_nodes (WINDOW *window, int count, unsigned char key);
|
||||
extern void select_visited_node (WINDOW *window, int count, unsigned char key);
|
||||
|
||||
/* Selecting cross references. */
|
||||
extern void info_menu_digit (WINDOW *window, int count, unsigned char key);
|
||||
extern void info_menu_item (WINDOW *window, int count, unsigned char key);
|
||||
extern void info_xref_item (WINDOW *window, int count, unsigned char key);
|
||||
extern void info_find_menu (WINDOW *window, int count, unsigned char key);
|
||||
extern void info_select_reference_this_line (WINDOW *window, int count,
|
||||
unsigned char key);
|
||||
extern void info_last_menu_item (WINDOW *window, int count, unsigned char key);
|
||||
extern void info_visit_menu (WINDOW *window, int count, unsigned char key);
|
||||
|
||||
/* Hacking numeric arguments. */
|
||||
extern int info_explicit_arg, info_numeric_arg, info_numeric_arg_sign;
|
||||
|
||||
extern void info_add_digit_to_numeric_arg (WINDOW *window, int count,
|
||||
unsigned char key);
|
||||
extern void info_universal_argument (WINDOW *window, int count,
|
||||
unsigned char key);
|
||||
extern void info_initialize_numeric_arg (void);
|
||||
extern void info_numeric_arg_digit_loop (WINDOW *window, int count,
|
||||
unsigned char key);
|
||||
|
||||
/* Searching commands. */
|
||||
extern void info_search (WINDOW *window, int count, unsigned char key);
|
||||
extern void isearch_forward (WINDOW *window, int count, unsigned char key);
|
||||
extern void isearch_backward (WINDOW *window, int count, unsigned char key);
|
||||
extern void info_search_case_sensitively (WINDOW *window, int count,
|
||||
unsigned char key);
|
||||
extern void info_search_backward (WINDOW *window, int count, unsigned char key);
|
||||
extern void info_search_next (WINDOW *window, int count, unsigned char key);
|
||||
extern void info_search_previous (WINDOW *window, int count, unsigned char key);
|
||||
|
||||
/* Dumping and printing nodes. */
|
||||
extern void info_print_node (WINDOW *window, int count, unsigned char key);
|
||||
|
||||
/* Footnotes. */
|
||||
extern void info_show_footnotes (WINDOW *window, int count, unsigned char key);
|
||||
|
||||
/* Miscellaneous commands. */
|
||||
extern void info_abort_key (WINDOW *window, int count, unsigned char key);
|
||||
extern void info_quit (WINDOW *window, int count, unsigned char key);
|
||||
extern void info_do_lowercase_version (WINDOW *window, int count,
|
||||
unsigned char key);
|
||||
|
||||
#endif /* not SESSION_H */
|
297
external/gpl2/texinfo/dist/info/signals.c
vendored
Normal file
297
external/gpl2/texinfo/dist/info/signals.c
vendored
Normal file
@ -0,0 +1,297 @@
|
||||
/* $NetBSD: signals.c,v 1.1.1.1 2016/01/14 00:11:29 christos Exp $ */
|
||||
|
||||
/* signals.c -- install and maintain signal handlers.
|
||||
Id: signals.c,v 1.7 2004/04/11 17:56:46 karl Exp
|
||||
|
||||
Copyright (C) 1993, 1994, 1995, 1998, 2002, 2003, 2004 Free Software
|
||||
Foundation, Inc.
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2, or (at your option)
|
||||
any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program; if not, write to the Free Software
|
||||
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
|
||||
Originally written by Brian Fox (bfox@ai.mit.edu). */
|
||||
|
||||
#include "info.h"
|
||||
#include "signals.h"
|
||||
|
||||
void initialize_info_signal_handler (void);
|
||||
|
||||
/* **************************************************************** */
|
||||
/* */
|
||||
/* Pretending That We Have POSIX Signals */
|
||||
/* */
|
||||
/* **************************************************************** */
|
||||
|
||||
#if !defined (HAVE_SIGPROCMASK) && defined (HAVE_SIGSETMASK)
|
||||
/* Perform OPERATION on NEWSET, perhaps leaving information in OLDSET. */
|
||||
static void
|
||||
sigprocmask (int operation, int *newset, int *oldset)
|
||||
{
|
||||
switch (operation)
|
||||
{
|
||||
case SIG_UNBLOCK:
|
||||
sigsetmask (sigblock (0) & ~(*newset));
|
||||
break;
|
||||
|
||||
case SIG_BLOCK:
|
||||
*oldset = sigblock (*newset);
|
||||
break;
|
||||
|
||||
case SIG_SETMASK:
|
||||
sigsetmask (*newset);
|
||||
break;
|
||||
|
||||
default:
|
||||
abort ();
|
||||
}
|
||||
}
|
||||
#endif /* !HAVE_SIGPROCMASK && HAVE_SIGSETMASK */
|
||||
|
||||
/* **************************************************************** */
|
||||
/* */
|
||||
/* Signal Handling for Info */
|
||||
/* */
|
||||
/* **************************************************************** */
|
||||
|
||||
#if defined (HAVE_SIGACTION) || defined (HAVE_SIGPROCMASK) ||\
|
||||
defined (HAVE_SIGSETMASK)
|
||||
static void
|
||||
mask_termsig (sigset_t *set)
|
||||
{
|
||||
# if defined (SIGTSTP)
|
||||
sigaddset (set, SIGTSTP);
|
||||
sigaddset (set, SIGTTOU);
|
||||
sigaddset (set, SIGTTIN);
|
||||
# endif
|
||||
# if defined (SIGWINCH)
|
||||
sigaddset (set, SIGWINCH);
|
||||
# endif
|
||||
#if defined (SIGQUIT)
|
||||
sigaddset (set, SIGQUIT);
|
||||
#endif
|
||||
#if defined (SIGINT)
|
||||
sigaddset (set, SIGINT);
|
||||
#endif
|
||||
# if defined (SIGUSR1)
|
||||
sigaddset (set, SIGUSR1);
|
||||
# endif
|
||||
}
|
||||
#endif /* HAVE_SIGACTION || HAVE_SIGPROCMASK || HAVE_SIGSETMASK */
|
||||
|
||||
static RETSIGTYPE info_signal_proc (int sig);
|
||||
#if defined (HAVE_SIGACTION)
|
||||
typedef struct sigaction signal_info;
|
||||
signal_info info_signal_handler;
|
||||
|
||||
static void
|
||||
set_termsig (int sig, signal_info *old)
|
||||
{
|
||||
sigaction (sig, &info_signal_handler, old);
|
||||
}
|
||||
|
||||
static void
|
||||
restore_termsig (int sig, const signal_info *saved)
|
||||
{
|
||||
sigaction (sig, saved, NULL);
|
||||
}
|
||||
#else /* !HAVE_SIGACTION */
|
||||
typedef RETSIGTYPE (*signal_info) ();
|
||||
#define set_termsig(sig, old) (void)(*(old) = signal (sig, info_signal_proc))
|
||||
#define restore_termsig(sig, saved) (void)signal (sig, *(saved))
|
||||
#define info_signal_handler info_signal_proc
|
||||
static int term_conf_busy = 0;
|
||||
#endif /* !HAVE_SIGACTION */
|
||||
|
||||
static signal_info old_TSTP, old_TTOU, old_TTIN;
|
||||
static signal_info old_WINCH, old_INT, old_USR1;
|
||||
static signal_info old_QUIT;
|
||||
|
||||
void
|
||||
initialize_info_signal_handler (void)
|
||||
{
|
||||
#ifdef SA_NOCLDSTOP
|
||||
/* (Based on info from Paul Eggert found in coreutils.) Don't use
|
||||
HAVE_SIGACTION to decide whether to use the sa_handler, sa_flags,
|
||||
sa_mask members, as some systems (Solaris 7+) don't define them. Use
|
||||
SA_NOCLDSTOP instead; it's been part of POSIX.1 since day 1 (in 1988). */
|
||||
info_signal_handler.sa_handler = info_signal_proc;
|
||||
info_signal_handler.sa_flags = 0;
|
||||
mask_termsig (&info_signal_handler.sa_mask);
|
||||
#endif /* SA_NOCLDSTOP */
|
||||
|
||||
#if defined (SIGTSTP)
|
||||
set_termsig (SIGTSTP, &old_TSTP);
|
||||
set_termsig (SIGTTOU, &old_TTOU);
|
||||
set_termsig (SIGTTIN, &old_TTIN);
|
||||
#endif /* SIGTSTP */
|
||||
|
||||
#if defined (SIGWINCH)
|
||||
set_termsig (SIGWINCH, &old_WINCH);
|
||||
#endif
|
||||
|
||||
#if defined (SIGQUIT)
|
||||
set_termsig (SIGQUIT, &old_QUIT);
|
||||
#endif
|
||||
|
||||
#if defined (SIGINT)
|
||||
set_termsig (SIGINT, &old_INT);
|
||||
#endif
|
||||
|
||||
#if defined (SIGUSR1)
|
||||
/* Used by DJGPP to simulate SIGTSTP on Ctrl-Z. */
|
||||
set_termsig (SIGUSR1, &old_USR1);
|
||||
#endif
|
||||
}
|
||||
|
||||
static void
|
||||
redisplay_after_signal (void)
|
||||
{
|
||||
terminal_clear_screen ();
|
||||
display_clear_display (the_display);
|
||||
window_mark_chain (windows, W_UpdateWindow);
|
||||
display_update_display (windows);
|
||||
display_cursor_at_point (active_window);
|
||||
fflush (stdout);
|
||||
}
|
||||
|
||||
static void
|
||||
reset_info_window_sizes (void)
|
||||
{
|
||||
terminal_goto_xy (0, 0);
|
||||
fflush (stdout);
|
||||
terminal_unprep_terminal ();
|
||||
terminal_get_screen_size ();
|
||||
terminal_prep_terminal ();
|
||||
display_initialize_display (screenwidth, screenheight);
|
||||
window_new_screen_size (screenwidth, screenheight);
|
||||
redisplay_after_signal ();
|
||||
}
|
||||
|
||||
static RETSIGTYPE
|
||||
info_signal_proc (int sig)
|
||||
{
|
||||
signal_info *old_signal_handler = NULL;
|
||||
|
||||
#if !defined (HAVE_SIGACTION)
|
||||
/* best effort: first increment this counter and later block signals */
|
||||
if (term_conf_busy)
|
||||
return;
|
||||
term_conf_busy++;
|
||||
#if defined (HAVE_SIGPROCMASK) || defined (HAVE_SIGSETMASK)
|
||||
{
|
||||
sigset_t nvar, ovar;
|
||||
sigemptyset (&nvar);
|
||||
mask_termsig (&nvar);
|
||||
sigprocmask (SIG_BLOCK, &nvar, &ovar);
|
||||
}
|
||||
#endif /* HAVE_SIGPROCMASK || HAVE_SIGSETMASK */
|
||||
#endif /* !HAVE_SIGACTION */
|
||||
switch (sig)
|
||||
{
|
||||
#if defined (SIGTSTP)
|
||||
case SIGTSTP:
|
||||
case SIGTTOU:
|
||||
case SIGTTIN:
|
||||
#endif
|
||||
#if defined (SIGQUIT)
|
||||
case SIGQUIT:
|
||||
#endif
|
||||
#if defined (SIGINT)
|
||||
case SIGINT:
|
||||
#endif
|
||||
{
|
||||
#if defined (SIGTSTP)
|
||||
if (sig == SIGTSTP)
|
||||
old_signal_handler = &old_TSTP;
|
||||
if (sig == SIGTTOU)
|
||||
old_signal_handler = &old_TTOU;
|
||||
if (sig == SIGTTIN)
|
||||
old_signal_handler = &old_TTIN;
|
||||
#endif /* SIGTSTP */
|
||||
#if defined (SIGQUIT)
|
||||
if (sig == SIGQUIT)
|
||||
old_signal_handler = &old_QUIT;
|
||||
#endif /* SIGQUIT */
|
||||
#if defined (SIGINT)
|
||||
if (sig == SIGINT)
|
||||
old_signal_handler = &old_INT;
|
||||
#endif /* SIGINT */
|
||||
|
||||
/* For stop signals, restore the terminal IO, leave the cursor
|
||||
at the bottom of the window, and stop us. */
|
||||
terminal_goto_xy (0, screenheight - 1);
|
||||
terminal_clear_to_eol ();
|
||||
fflush (stdout);
|
||||
terminal_unprep_terminal ();
|
||||
restore_termsig (sig, old_signal_handler);
|
||||
UNBLOCK_SIGNAL (sig);
|
||||
kill (getpid (), sig);
|
||||
|
||||
/* The program is returning now. Restore our signal handler,
|
||||
turn on terminal handling, redraw the screen, and place the
|
||||
cursor where it belongs. */
|
||||
terminal_prep_terminal ();
|
||||
set_termsig (sig, old_signal_handler);
|
||||
/* window size might be changed while sleeping */
|
||||
reset_info_window_sizes ();
|
||||
}
|
||||
break;
|
||||
|
||||
#if defined (SIGWINCH) || defined (SIGUSR1)
|
||||
#ifdef SIGWINCH
|
||||
case SIGWINCH:
|
||||
#endif
|
||||
#ifdef SIGUSR1
|
||||
case SIGUSR1:
|
||||
#endif
|
||||
{
|
||||
/* Turn off terminal IO, tell our parent that the window has changed,
|
||||
then reinitialize the terminal and rebuild our windows. */
|
||||
#ifdef SIGWINCH
|
||||
if (sig == SIGWINCH)
|
||||
old_signal_handler = &old_WINCH;
|
||||
#endif
|
||||
#ifdef SIGUSR1
|
||||
if (sig == SIGUSR1)
|
||||
old_signal_handler = &old_USR1;
|
||||
#endif
|
||||
terminal_goto_xy (0, 0);
|
||||
fflush (stdout);
|
||||
terminal_unprep_terminal (); /* needless? */
|
||||
restore_termsig (sig, old_signal_handler);
|
||||
UNBLOCK_SIGNAL (sig);
|
||||
kill (getpid (), sig);
|
||||
|
||||
/* After our old signal handler returns... */
|
||||
set_termsig (sig, old_signal_handler); /* needless? */
|
||||
terminal_prep_terminal ();
|
||||
reset_info_window_sizes ();
|
||||
}
|
||||
break;
|
||||
#endif /* SIGWINCH || SIGUSR1 */
|
||||
}
|
||||
#if !defined (HAVE_SIGACTION)
|
||||
/* at this time it is safer to perform unblock after decrement */
|
||||
term_conf_busy--;
|
||||
#if defined (HAVE_SIGPROCMASK) || defined (HAVE_SIGSETMASK)
|
||||
{
|
||||
sigset_t nvar, ovar;
|
||||
sigemptyset (&nvar);
|
||||
mask_termsig (&nvar);
|
||||
sigprocmask (SIG_UNBLOCK, &nvar, &ovar);
|
||||
}
|
||||
#endif /* HAVE_SIGPROCMASK || HAVE_SIGSETMASK */
|
||||
#endif /* !HAVE_SIGACTION */
|
||||
}
|
||||
/* vim: set sw=2 cino={1s>2sn-s^-se-s: */
|
98
external/gpl2/texinfo/dist/info/signals.h
vendored
Normal file
98
external/gpl2/texinfo/dist/info/signals.h
vendored
Normal file
@ -0,0 +1,98 @@
|
||||
/* $NetBSD: signals.h,v 1.1.1.1 2016/01/14 00:11:29 christos Exp $ */
|
||||
|
||||
/* signals.h -- header to include system dependent signal definitions.
|
||||
Id: signals.h,v 1.2 2004/04/11 17:56:46 karl Exp
|
||||
|
||||
Copyright (C) 1993, 1994, 1995, 1997, 2002, 2004 Free Software Foundation, Inc.
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2, or (at your option)
|
||||
any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program; if not, write to the Free Software
|
||||
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
|
||||
Originally written by Brian Fox (bfox@ai.mit.edu). */
|
||||
|
||||
#ifndef INFO_SIGNALS_H
|
||||
#define INFO_SIGNALS_H
|
||||
|
||||
#include <sys/types.h>
|
||||
#include <signal.h>
|
||||
|
||||
/* For sysV68 --phdm@info.ucl.ac.be. */
|
||||
#if !defined (SIGCHLD) && defined (SIGCLD)
|
||||
#define SIGCHLD SIGCLD
|
||||
#endif
|
||||
|
||||
#if !defined (HAVE_SIGPROCMASK) && !defined (sigmask)
|
||||
# define sigmask(x) (1 << ((x)-1))
|
||||
#endif /* !HAVE_SIGPROCMASK && !sigmask */
|
||||
|
||||
/* Without SA_NOCLDSTOP, sigset_t might end up being undefined even
|
||||
though we have sigprocmask, on older systems, according to Nelson
|
||||
Beebe. The test is from coreutils/sort.c, via Paul Eggert. */
|
||||
#if !defined (HAVE_SIGPROCMASK) || !defined (SA_NOCLDSTOP)
|
||||
# if !defined (SIG_BLOCK)
|
||||
# define SIG_UNBLOCK 1
|
||||
# define SIG_BLOCK 2
|
||||
# define SIG_SETMASK 3
|
||||
# endif /* SIG_BLOCK */
|
||||
|
||||
/* Type of a signal set. */
|
||||
# define sigset_t int
|
||||
|
||||
/* Make SET have no signals in it. */
|
||||
# define sigemptyset(set) (*(set) = (sigset_t)0x0)
|
||||
|
||||
/* Make SET have the full range of signal specifications possible. */
|
||||
# define sigfillset(set) (*(set) = (sigset_t)0xffffffffff)
|
||||
|
||||
/* Add SIG to the contents of SET. */
|
||||
# define sigaddset(set, sig) *(set) |= sigmask (sig)
|
||||
|
||||
/* Delete SIG from the contents of SET. */
|
||||
# define sigdelset(set, sig) *(set) &= ~(sigmask (sig))
|
||||
|
||||
/* Tell if SET contains SIG. */
|
||||
# define sigismember(set, sig) (*(set) & (sigmask (sig)))
|
||||
|
||||
/* Suspend the process until the reception of one of the signals
|
||||
not present in SET. */
|
||||
# define sigsuspend(set) sigpause (*(set))
|
||||
#endif /* !HAVE_SIGPROCMASK */
|
||||
|
||||
#if defined (HAVE_SIGPROCMASK) || defined (HAVE_SIGSETMASK)
|
||||
/* These definitions are used both in POSIX and non-POSIX implementations. */
|
||||
|
||||
#define BLOCK_SIGNAL(sig) \
|
||||
do { \
|
||||
sigset_t nvar, ovar; \
|
||||
sigemptyset (&nvar); \
|
||||
sigemptyset (&ovar); \
|
||||
sigaddset (&nvar, sig); \
|
||||
sigprocmask (SIG_BLOCK, &nvar, &ovar); \
|
||||
} while (0)
|
||||
|
||||
#define UNBLOCK_SIGNAL(sig) \
|
||||
do { \
|
||||
sigset_t nvar, ovar; \
|
||||
sigemptyset (&ovar); \
|
||||
sigemptyset (&nvar); \
|
||||
sigaddset (&nvar, sig); \
|
||||
sigprocmask (SIG_UNBLOCK, &nvar, &ovar); \
|
||||
} while (0)
|
||||
|
||||
#else /* !HAVE_SIGPROCMASK && !HAVE_SIGSETMASK */
|
||||
# define BLOCK_SIGNAL(sig)
|
||||
# define UNBLOCK_SIGNAL(sig)
|
||||
#endif /* !HAVE_SIGPROCMASK && !HAVE_SIGSETMASK */
|
||||
|
||||
#endif /* not INFO_SIGNALS_H */
|
61
external/gpl2/texinfo/dist/info/termdep.h
vendored
Normal file
61
external/gpl2/texinfo/dist/info/termdep.h
vendored
Normal file
@ -0,0 +1,61 @@
|
||||
/* $NetBSD: termdep.h,v 1.1.1.1 2016/01/14 00:11:29 christos Exp $ */
|
||||
|
||||
/* termdep.h -- system things that terminal.c depends on.
|
||||
Id: termdep.h,v 1.2 2004/04/11 17:56:46 karl Exp
|
||||
|
||||
Copyright (C) 1993, 1996, 1997, 1998, 2001, 2002 Free Software
|
||||
Foundation, Inc.
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2, or (at your option)
|
||||
any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program; if not, write to the Free Software
|
||||
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
|
||||
Written by Brian Fox (bfox@ai.mit.edu). */
|
||||
|
||||
#ifndef INFO_TERMDEP_H
|
||||
#define INFO_TERMDEP_H
|
||||
|
||||
/* NeXT supplies <termios.h> but it is broken. Probably Autoconf should
|
||||
have a separate test, but anyway ... */
|
||||
#ifdef NeXT
|
||||
#undef HAVE_TERMIOS_H
|
||||
#endif
|
||||
|
||||
#ifdef HAVE_TERMIOS_H
|
||||
# include <termios.h>
|
||||
#else
|
||||
# if defined (HAVE_TERMIO_H)
|
||||
# include <termio.h>
|
||||
# if defined (HAVE_SYS_PTEM_H)
|
||||
# if defined (M_UNIX) || !defined (M_XENIX)
|
||||
# include <sys/stream.h>
|
||||
# include <sys/ptem.h>
|
||||
# undef TIOCGETC
|
||||
# else /* M_XENIX */
|
||||
# define tchars tc
|
||||
# endif /* M_XENIX */
|
||||
# endif /* HAVE_SYS_PTEM_H */
|
||||
# else /* !HAVE_TERMIO_H */
|
||||
# include <sgtty.h>
|
||||
# endif /* !HAVE_TERMIO_H */
|
||||
#endif /* !HAVE_TERMIOS_H */
|
||||
|
||||
#ifdef GWINSZ_IN_SYS_IOCTL
|
||||
# include <sys/ioctl.h>
|
||||
#endif
|
||||
|
||||
#ifdef HAVE_SYS_TTOLD_H
|
||||
# include <sys/ttold.h>
|
||||
#endif /* HAVE_SYS_TTOLD_H */
|
||||
|
||||
#endif /* not INFO_TERMDEP_H */
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user