mirror of https://gitee.com/openkylin/hyphen.git
Import Upstream version 2.8.8
This commit is contained in:
commit
72acdbc34f
|
@ -0,0 +1,17 @@
|
||||||
|
Libhnj was written by Raph Levien <raph at acm dot org>.
|
||||||
|
|
||||||
|
Original Libhnj source with OOo's patches are managed by Rene Engelhard and
|
||||||
|
Chris Halls at Debian: http://packages.debian.org/stable/libdevel/libhnj-dev
|
||||||
|
and http://packages.debian.org/unstable/source/libhnj
|
||||||
|
|
||||||
|
This subset of Libhnj was extended by
|
||||||
|
Peter Novodvorsky <nidd at alt-linux dot org> (OOo integration),
|
||||||
|
László Németh <nemeth at numbertext dot org> (non-standard and compound
|
||||||
|
hyphenation with Unicode support),
|
||||||
|
Nanning Buitenhuis <nanning at elvenkind dot com> (substrings.c)
|
||||||
|
|
||||||
|
Write bug reports to László Németh or in the bug tracker of hunspell.sf.net.
|
||||||
|
|
||||||
|
---
|
||||||
|
Please contact Raph Levien for information about licensing for
|
||||||
|
proprietary applications.
|
|
@ -0,0 +1,17 @@
|
||||||
|
GPL 2.0/LGPL 2.1/MPL 1.1 tri-license
|
||||||
|
|
||||||
|
The contents of this software may be used under the terms of
|
||||||
|
the GNU General Public License Version 2 or later (the "GPL"), or
|
||||||
|
the GNU Lesser General Public License Version 2.1 or later (the "LGPL",
|
||||||
|
see COPYING.LGPL) or the Mozilla Public License Version 1.1 or later
|
||||||
|
(the "MPL", see COPYING.MPL).
|
||||||
|
|
||||||
|
The Plain TeX hyphenation tables "hyphen.tex" by Donald E. Knuth
|
||||||
|
has a non MPL/LGPL compatible license, but freely redistributable:
|
||||||
|
"Unlimited copying and redistribution of this file are permitted as long
|
||||||
|
as this file is not modified. Modifications are permitted, but only if
|
||||||
|
the resulting file is not named hyphen.tex."
|
||||||
|
|
||||||
|
Software distributed under these licenses is distributed on an "AS IS" basis,
|
||||||
|
WITHOUT WARRANTY OF ANY KIND, either express or implied. See the licences
|
||||||
|
for the specific language governing rights and limitations under the licenses.
|
|
@ -0,0 +1,515 @@
|
||||||
|
|
||||||
|
GNU LESSER GENERAL PUBLIC LICENSE
|
||||||
|
Version 2.1, February 1999
|
||||||
|
|
||||||
|
Copyright (C) 1991, 1999 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.
|
||||||
|
|
||||||
|
[This is the first released version of the Lesser GPL. It also counts
|
||||||
|
as the successor of the GNU Library Public License, version 2, hence
|
||||||
|
the version number 2.1.]
|
||||||
|
|
||||||
|
Preamble
|
||||||
|
|
||||||
|
The licenses for most software are designed to take away your
|
||||||
|
freedom to share and change it. By contrast, the GNU General Public
|
||||||
|
Licenses are intended to guarantee your freedom to share and change
|
||||||
|
free software--to make sure the software is free for all its users.
|
||||||
|
|
||||||
|
This license, the Lesser General Public License, applies to some
|
||||||
|
specially designated software packages--typically libraries--of the
|
||||||
|
Free Software Foundation and other authors who decide to use it. You
|
||||||
|
can use it too, but we suggest you first think carefully about whether
|
||||||
|
this license or the ordinary General Public License is the better
|
||||||
|
strategy to use in any particular case, based on the explanations
|
||||||
|
below.
|
||||||
|
|
||||||
|
When we speak of free software, we are referring to freedom of use,
|
||||||
|
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 and use pieces of
|
||||||
|
it in new free programs; and that you are informed that you can do
|
||||||
|
these things.
|
||||||
|
|
||||||
|
To protect your rights, we need to make restrictions that forbid
|
||||||
|
distributors to deny you these rights or to ask you to surrender these
|
||||||
|
rights. These restrictions translate to certain responsibilities for
|
||||||
|
you if you distribute copies of the library or if you modify it.
|
||||||
|
|
||||||
|
For example, if you distribute copies of the library, whether gratis
|
||||||
|
or for a fee, you must give the recipients all the rights that we gave
|
||||||
|
you. You must make sure that they, too, receive or can get the source
|
||||||
|
code. If you link other code with the library, you must provide
|
||||||
|
complete object files to the recipients, so that they can relink them
|
||||||
|
with the library after making changes to the library and recompiling
|
||||||
|
it. And you must show them these terms so they know their rights.
|
||||||
|
|
||||||
|
We protect your rights with a two-step method: (1) we copyright the
|
||||||
|
library, and (2) we offer you this license, which gives you legal
|
||||||
|
permission to copy, distribute and/or modify the library.
|
||||||
|
|
||||||
|
To protect each distributor, we want to make it very clear that
|
||||||
|
there is no warranty for the free library. Also, if the library is
|
||||||
|
modified by someone else and passed on, the recipients should know
|
||||||
|
that what they have is not the original version, so that the original
|
||||||
|
author's reputation will not be affected by problems that might be
|
||||||
|
introduced by others.
|
||||||
|
^L
|
||||||
|
Finally, software patents pose a constant threat to the existence of
|
||||||
|
any free program. We wish to make sure that a company cannot
|
||||||
|
effectively restrict the users of a free program by obtaining a
|
||||||
|
restrictive license from a patent holder. Therefore, we insist that
|
||||||
|
any patent license obtained for a version of the library must be
|
||||||
|
consistent with the full freedom of use specified in this license.
|
||||||
|
|
||||||
|
Most GNU software, including some libraries, is covered by the
|
||||||
|
ordinary GNU General Public License. This license, the GNU Lesser
|
||||||
|
General Public License, applies to certain designated libraries, and
|
||||||
|
is quite different from the ordinary General Public License. We use
|
||||||
|
this license for certain libraries in order to permit linking those
|
||||||
|
libraries into non-free programs.
|
||||||
|
|
||||||
|
When a program is linked with a library, whether statically or using
|
||||||
|
a shared library, the combination of the two is legally speaking a
|
||||||
|
combined work, a derivative of the original library. The ordinary
|
||||||
|
General Public License therefore permits such linking only if the
|
||||||
|
entire combination fits its criteria of freedom. The Lesser General
|
||||||
|
Public License permits more lax criteria for linking other code with
|
||||||
|
the library.
|
||||||
|
|
||||||
|
We call this license the "Lesser" General Public License because it
|
||||||
|
does Less to protect the user's freedom than the ordinary General
|
||||||
|
Public License. It also provides other free software developers Less
|
||||||
|
of an advantage over competing non-free programs. These disadvantages
|
||||||
|
are the reason we use the ordinary General Public License for many
|
||||||
|
libraries. However, the Lesser license provides advantages in certain
|
||||||
|
special circumstances.
|
||||||
|
|
||||||
|
For example, on rare occasions, there may be a special need to
|
||||||
|
encourage the widest possible use of a certain library, so that it
|
||||||
|
becomes
|
||||||
|
a de-facto standard. To achieve this, non-free programs must be
|
||||||
|
allowed to use the library. A more frequent case is that a free
|
||||||
|
library does the same job as widely used non-free libraries. In this
|
||||||
|
case, there is little to gain by limiting the free library to free
|
||||||
|
software only, so we use the Lesser General Public License.
|
||||||
|
|
||||||
|
In other cases, permission to use a particular library in non-free
|
||||||
|
programs enables a greater number of people to use a large body of
|
||||||
|
free software. For example, permission to use the GNU C Library in
|
||||||
|
non-free programs enables many more people to use the whole GNU
|
||||||
|
operating system, as well as its variant, the GNU/Linux operating
|
||||||
|
system.
|
||||||
|
|
||||||
|
Although the Lesser General Public License is Less protective of the
|
||||||
|
users' freedom, it does ensure that the user of a program that is
|
||||||
|
linked with the Library has the freedom and the wherewithal to run
|
||||||
|
that program using a modified version of the Library.
|
||||||
|
|
||||||
|
The precise terms and conditions for copying, distribution and
|
||||||
|
modification follow. Pay close attention to the difference between a
|
||||||
|
"work based on the library" and a "work that uses the library". The
|
||||||
|
former contains code derived from the library, whereas the latter must
|
||||||
|
be combined with the library in order to run.
|
||||||
|
^L
|
||||||
|
GNU LESSER GENERAL PUBLIC LICENSE
|
||||||
|
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
|
||||||
|
|
||||||
|
0. This License Agreement applies to any software library or other
|
||||||
|
program which contains a notice placed by the copyright holder or
|
||||||
|
other authorized party saying it may be distributed under the terms of
|
||||||
|
this Lesser General Public License (also called "this License").
|
||||||
|
Each licensee is addressed as "you".
|
||||||
|
|
||||||
|
A "library" means a collection of software functions and/or data
|
||||||
|
prepared so as to be conveniently linked with application programs
|
||||||
|
(which use some of those functions and data) to form executables.
|
||||||
|
|
||||||
|
The "Library", below, refers to any such software library or work
|
||||||
|
which has been distributed under these terms. A "work based on the
|
||||||
|
Library" means either the Library or any derivative work under
|
||||||
|
copyright law: that is to say, a work containing the Library or a
|
||||||
|
portion of it, either verbatim or with modifications and/or translated
|
||||||
|
straightforwardly into another language. (Hereinafter, translation is
|
||||||
|
included without limitation in the term "modification".)
|
||||||
|
|
||||||
|
"Source code" for a work means the preferred form of the work for
|
||||||
|
making modifications to it. For a library, 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 library.
|
||||||
|
|
||||||
|
Activities other than copying, distribution and modification are not
|
||||||
|
covered by this License; they are outside its scope. The act of
|
||||||
|
running a program using the Library is not restricted, and output from
|
||||||
|
such a program is covered only if its contents constitute a work based
|
||||||
|
on the Library (independent of the use of the Library in a tool for
|
||||||
|
writing it). Whether that is true depends on what the Library does
|
||||||
|
and what the program that uses the Library does.
|
||||||
|
|
||||||
|
1. You may copy and distribute verbatim copies of the Library's
|
||||||
|
complete 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 distribute a copy of this License along with the
|
||||||
|
Library.
|
||||||
|
|
||||||
|
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 Library or any portion
|
||||||
|
of it, thus forming a work based on the Library, 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) The modified work must itself be a software library.
|
||||||
|
|
||||||
|
b) You must cause the files modified to carry prominent notices
|
||||||
|
stating that you changed the files and the date of any change.
|
||||||
|
|
||||||
|
c) You must cause the whole of the work to be licensed at no
|
||||||
|
charge to all third parties under the terms of this License.
|
||||||
|
|
||||||
|
d) If a facility in the modified Library refers to a function or a
|
||||||
|
table of data to be supplied by an application program that uses
|
||||||
|
the facility, other than as an argument passed when the facility
|
||||||
|
is invoked, then you must make a good faith effort to ensure that,
|
||||||
|
in the event an application does not supply such function or
|
||||||
|
table, the facility still operates, and performs whatever part of
|
||||||
|
its purpose remains meaningful.
|
||||||
|
|
||||||
|
(For example, a function in a library to compute square roots has
|
||||||
|
a purpose that is entirely well-defined independent of the
|
||||||
|
application. Therefore, Subsection 2d requires that any
|
||||||
|
application-supplied function or table used by this function must
|
||||||
|
be optional: if the application does not supply it, the square
|
||||||
|
root function must still compute square roots.)
|
||||||
|
|
||||||
|
These requirements apply to the modified work as a whole. If
|
||||||
|
identifiable sections of that work are not derived from the Library,
|
||||||
|
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 Library, 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 Library.
|
||||||
|
|
||||||
|
In addition, mere aggregation of another work not based on the Library
|
||||||
|
with the Library (or with a work based on the Library) on a volume of
|
||||||
|
a storage or distribution medium does not bring the other work under
|
||||||
|
the scope of this License.
|
||||||
|
|
||||||
|
3. You may opt to apply the terms of the ordinary GNU General Public
|
||||||
|
License instead of this License to a given copy of the Library. To do
|
||||||
|
this, you must alter all the notices that refer to this License, so
|
||||||
|
that they refer to the ordinary GNU General Public License, version 2,
|
||||||
|
instead of to this License. (If a newer version than version 2 of the
|
||||||
|
ordinary GNU General Public License has appeared, then you can specify
|
||||||
|
that version instead if you wish.) Do not make any other change in
|
||||||
|
these notices.
|
||||||
|
^L
|
||||||
|
Once this change is made in a given copy, it is irreversible for
|
||||||
|
that copy, so the ordinary GNU General Public License applies to all
|
||||||
|
subsequent copies and derivative works made from that copy.
|
||||||
|
|
||||||
|
This option is useful when you wish to copy part of the code of
|
||||||
|
the Library into a program that is not a library.
|
||||||
|
|
||||||
|
4. You may copy and distribute the Library (or a portion or
|
||||||
|
derivative of it, under Section 2) in object code or executable form
|
||||||
|
under the terms of Sections 1 and 2 above provided that you 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.
|
||||||
|
|
||||||
|
If distribution of 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 satisfies the requirement to
|
||||||
|
distribute the source code, even though third parties are not
|
||||||
|
compelled to copy the source along with the object code.
|
||||||
|
|
||||||
|
5. A program that contains no derivative of any portion of the
|
||||||
|
Library, but is designed to work with the Library by being compiled or
|
||||||
|
linked with it, is called a "work that uses the Library". Such a
|
||||||
|
work, in isolation, is not a derivative work of the Library, and
|
||||||
|
therefore falls outside the scope of this License.
|
||||||
|
|
||||||
|
However, linking a "work that uses the Library" with the Library
|
||||||
|
creates an executable that is a derivative of the Library (because it
|
||||||
|
contains portions of the Library), rather than a "work that uses the
|
||||||
|
library". The executable is therefore covered by this License.
|
||||||
|
Section 6 states terms for distribution of such executables.
|
||||||
|
|
||||||
|
When a "work that uses the Library" uses material from a header file
|
||||||
|
that is part of the Library, the object code for the work may be a
|
||||||
|
derivative work of the Library even though the source code is not.
|
||||||
|
Whether this is true is especially significant if the work can be
|
||||||
|
linked without the Library, or if the work is itself a library. The
|
||||||
|
threshold for this to be true is not precisely defined by law.
|
||||||
|
|
||||||
|
If such an object file uses only numerical parameters, data
|
||||||
|
structure layouts and accessors, and small macros and small inline
|
||||||
|
functions (ten lines or less in length), then the use of the object
|
||||||
|
file is unrestricted, regardless of whether it is legally a derivative
|
||||||
|
work. (Executables containing this object code plus portions of the
|
||||||
|
Library will still fall under Section 6.)
|
||||||
|
|
||||||
|
Otherwise, if the work is a derivative of the Library, you may
|
||||||
|
distribute the object code for the work under the terms of Section 6.
|
||||||
|
Any executables containing that work also fall under Section 6,
|
||||||
|
whether or not they are linked directly with the Library itself.
|
||||||
|
^L
|
||||||
|
6. As an exception to the Sections above, you may also combine or
|
||||||
|
link a "work that uses the Library" with the Library to produce a
|
||||||
|
work containing portions of the Library, and distribute that work
|
||||||
|
under terms of your choice, provided that the terms permit
|
||||||
|
modification of the work for the customer's own use and reverse
|
||||||
|
engineering for debugging such modifications.
|
||||||
|
|
||||||
|
You must give prominent notice with each copy of the work that the
|
||||||
|
Library is used in it and that the Library and its use are covered by
|
||||||
|
this License. You must supply a copy of this License. If the work
|
||||||
|
during execution displays copyright notices, you must include the
|
||||||
|
copyright notice for the Library among them, as well as a reference
|
||||||
|
directing the user to the copy of this License. Also, you must do one
|
||||||
|
of these things:
|
||||||
|
|
||||||
|
a) Accompany the work with the complete corresponding
|
||||||
|
machine-readable source code for the Library including whatever
|
||||||
|
changes were used in the work (which must be distributed under
|
||||||
|
Sections 1 and 2 above); and, if the work is an executable linked
|
||||||
|
with the Library, with the complete machine-readable "work that
|
||||||
|
uses the Library", as object code and/or source code, so that the
|
||||||
|
user can modify the Library and then relink to produce a modified
|
||||||
|
executable containing the modified Library. (It is understood
|
||||||
|
that the user who changes the contents of definitions files in the
|
||||||
|
Library will not necessarily be able to recompile the application
|
||||||
|
to use the modified definitions.)
|
||||||
|
|
||||||
|
b) Use a suitable shared library mechanism for linking with the
|
||||||
|
Library. A suitable mechanism is one that (1) uses at run time a
|
||||||
|
copy of the library already present on the user's computer system,
|
||||||
|
rather than copying library functions into the executable, and (2)
|
||||||
|
will operate properly with a modified version of the library, if
|
||||||
|
the user installs one, as long as the modified version is
|
||||||
|
interface-compatible with the version that the work was made with.
|
||||||
|
|
||||||
|
c) Accompany the work with a written offer, valid for at
|
||||||
|
least three years, to give the same user the materials
|
||||||
|
specified in Subsection 6a, above, for a charge no more
|
||||||
|
than the cost of performing this distribution.
|
||||||
|
|
||||||
|
d) If distribution of the work is made by offering access to copy
|
||||||
|
from a designated place, offer equivalent access to copy the above
|
||||||
|
specified materials from the same place.
|
||||||
|
|
||||||
|
e) Verify that the user has already received a copy of these
|
||||||
|
materials or that you have already sent this user a copy.
|
||||||
|
|
||||||
|
For an executable, the required form of the "work that uses the
|
||||||
|
Library" must include any data and utility programs needed for
|
||||||
|
reproducing the executable from it. However, as a special exception,
|
||||||
|
the materials to be 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.
|
||||||
|
|
||||||
|
It may happen that this requirement contradicts the license
|
||||||
|
restrictions of other proprietary libraries that do not normally
|
||||||
|
accompany the operating system. Such a contradiction means you cannot
|
||||||
|
use both them and the Library together in an executable that you
|
||||||
|
distribute.
|
||||||
|
^L
|
||||||
|
7. You may place library facilities that are a work based on the
|
||||||
|
Library side-by-side in a single library together with other library
|
||||||
|
facilities not covered by this License, and distribute such a combined
|
||||||
|
library, provided that the separate distribution of the work based on
|
||||||
|
the Library and of the other library facilities is otherwise
|
||||||
|
permitted, and provided that you do these two things:
|
||||||
|
|
||||||
|
a) Accompany the combined library with a copy of the same work
|
||||||
|
based on the Library, uncombined with any other library
|
||||||
|
facilities. This must be distributed under the terms of the
|
||||||
|
Sections above.
|
||||||
|
|
||||||
|
b) Give prominent notice with the combined library of the fact
|
||||||
|
that part of it is a work based on the Library, and explaining
|
||||||
|
where to find the accompanying uncombined form of the same work.
|
||||||
|
|
||||||
|
8. You may not copy, modify, sublicense, link with, or distribute
|
||||||
|
the Library except as expressly provided under this License. Any
|
||||||
|
attempt otherwise to copy, modify, sublicense, link with, or
|
||||||
|
distribute the Library 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.
|
||||||
|
|
||||||
|
9. 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 Library or its derivative works. These actions are
|
||||||
|
prohibited by law if you do not accept this License. Therefore, by
|
||||||
|
modifying or distributing the Library (or any work based on the
|
||||||
|
Library), you indicate your acceptance of this License to do so, and
|
||||||
|
all its terms and conditions for copying, distributing or modifying
|
||||||
|
the Library or works based on it.
|
||||||
|
|
||||||
|
10. Each time you redistribute the Library (or any work based on the
|
||||||
|
Library), the recipient automatically receives a license from the
|
||||||
|
original licensor to copy, distribute, link with or modify the Library
|
||||||
|
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 with
|
||||||
|
this License.
|
||||||
|
^L
|
||||||
|
11. 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 Library at all. For example, if a patent
|
||||||
|
license would not permit royalty-free redistribution of the Library 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 Library.
|
||||||
|
|
||||||
|
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.
|
||||||
|
|
||||||
|
12. If the distribution and/or use of the Library is restricted in
|
||||||
|
certain countries either by patents or by copyrighted interfaces, the
|
||||||
|
original copyright holder who places the Library 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.
|
||||||
|
|
||||||
|
13. The Free Software Foundation may publish revised and/or new
|
||||||
|
versions of the Lesser 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 Library
|
||||||
|
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 Library does not specify a
|
||||||
|
license version number, you may choose any version ever published by
|
||||||
|
the Free Software Foundation.
|
||||||
|
^L
|
||||||
|
14. If you wish to incorporate parts of the Library into other free
|
||||||
|
programs whose distribution conditions are incompatible with these,
|
||||||
|
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
|
||||||
|
|
||||||
|
15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
|
||||||
|
WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
|
||||||
|
EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
|
||||||
|
OTHER PARTIES PROVIDE THE LIBRARY "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
|
||||||
|
LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
|
||||||
|
THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
|
||||||
|
|
||||||
|
16. 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 LIBRARY 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
|
||||||
|
LIBRARY (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 LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
|
||||||
|
SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
|
||||||
|
DAMAGES.
|
||||||
|
|
||||||
|
END OF TERMS AND CONDITIONS
|
||||||
|
^L
|
||||||
|
How to Apply These Terms to Your New Libraries
|
||||||
|
|
||||||
|
If you develop a new library, and you want it to be of the greatest
|
||||||
|
possible use to the public, we recommend making it free software that
|
||||||
|
everyone can redistribute and change. You can do so by permitting
|
||||||
|
redistribution under these terms (or, alternatively, under the terms
|
||||||
|
of the ordinary General Public License).
|
||||||
|
|
||||||
|
To apply these terms, attach the following notices to the library.
|
||||||
|
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 library's name and a brief idea of what it
|
||||||
|
does.>
|
||||||
|
Copyright (C) <year> <name of author>
|
||||||
|
|
||||||
|
This library is free software; you can redistribute it and/or
|
||||||
|
modify it under the terms of the GNU Lesser General Public
|
||||||
|
License as published by the Free Software Foundation; either
|
||||||
|
version 2 of the License, or (at your option) any later version.
|
||||||
|
|
||||||
|
This library 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
|
||||||
|
Lesser General Public License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU Lesser General Public
|
||||||
|
License along with this library; 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.
|
||||||
|
|
||||||
|
You should also get your employer (if you work as a programmer) or
|
||||||
|
your
|
||||||
|
school, if any, to sign a "copyright disclaimer" for the library, if
|
||||||
|
necessary. Here is a sample; alter the names:
|
||||||
|
|
||||||
|
Yoyodyne, Inc., hereby disclaims all copyright interest in the
|
||||||
|
library `Frob' (a library for tweaking knobs) written by James
|
||||||
|
Random Hacker.
|
||||||
|
|
||||||
|
<signature of Ty Coon>, 1 April 1990
|
||||||
|
Ty Coon, President of Vice
|
||||||
|
|
||||||
|
That's all there is to it!
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,470 @@
|
||||||
|
MOZILLA PUBLIC LICENSE
|
||||||
|
Version 1.1
|
||||||
|
|
||||||
|
---------------
|
||||||
|
|
||||||
|
1. Definitions.
|
||||||
|
|
||||||
|
1.0.1. "Commercial Use" means distribution or otherwise making the
|
||||||
|
Covered Code available to a third party.
|
||||||
|
|
||||||
|
1.1. "Contributor" means each entity that creates or contributes to
|
||||||
|
the creation of Modifications.
|
||||||
|
|
||||||
|
1.2. "Contributor Version" means the combination of the Original
|
||||||
|
Code, prior Modifications used by a Contributor, and the Modifications
|
||||||
|
made by that particular Contributor.
|
||||||
|
|
||||||
|
1.3. "Covered Code" means the Original Code or Modifications or the
|
||||||
|
combination of the Original Code and Modifications, in each case
|
||||||
|
including portions thereof.
|
||||||
|
|
||||||
|
1.4. "Electronic Distribution Mechanism" means a mechanism generally
|
||||||
|
accepted in the software development community for the electronic
|
||||||
|
transfer of data.
|
||||||
|
|
||||||
|
1.5. "Executable" means Covered Code in any form other than Source
|
||||||
|
Code.
|
||||||
|
|
||||||
|
1.6. "Initial Developer" means the individual or entity identified
|
||||||
|
as the Initial Developer in the Source Code notice required by Exhibit
|
||||||
|
A.
|
||||||
|
|
||||||
|
1.7. "Larger Work" means a work which combines Covered Code or
|
||||||
|
portions thereof with code not governed by the terms of this License.
|
||||||
|
|
||||||
|
1.8. "License" means this document.
|
||||||
|
|
||||||
|
1.8.1. "Licensable" means having the right to grant, to the maximum
|
||||||
|
extent possible, whether at the time of the initial grant or
|
||||||
|
subsequently acquired, any and all of the rights conveyed herein.
|
||||||
|
|
||||||
|
1.9. "Modifications" means any addition to or deletion from the
|
||||||
|
substance or structure of either the Original Code or any previous
|
||||||
|
Modifications. When Covered Code is released as a series of files, a
|
||||||
|
Modification is:
|
||||||
|
A. Any addition to or deletion from the contents of a file
|
||||||
|
containing Original Code or previous Modifications.
|
||||||
|
|
||||||
|
B. Any new file that contains any part of the Original Code or
|
||||||
|
previous Modifications.
|
||||||
|
|
||||||
|
1.10. "Original Code" means Source Code of computer software code
|
||||||
|
which is described in the Source Code notice required by Exhibit A as
|
||||||
|
Original Code, and which, at the time of its release under this
|
||||||
|
License is not already Covered Code governed by this License.
|
||||||
|
|
||||||
|
1.10.1. "Patent Claims" means any patent claim(s), now owned or
|
||||||
|
hereafter acquired, including without limitation, method, process,
|
||||||
|
and apparatus claims, in any patent Licensable by grantor.
|
||||||
|
|
||||||
|
1.11. "Source Code" means the preferred form of the Covered Code for
|
||||||
|
making modifications to it, including all modules it contains, plus
|
||||||
|
any associated interface definition files, scripts used to control
|
||||||
|
compilation and installation of an Executable, or source code
|
||||||
|
differential comparisons against either the Original Code or another
|
||||||
|
well known, available Covered Code of the Contributor's choice. The
|
||||||
|
Source Code can be in a compressed or archival form, provided the
|
||||||
|
appropriate decompression or de-archiving software is widely available
|
||||||
|
for no charge.
|
||||||
|
|
||||||
|
1.12. "You" (or "Your") means an individual or a legal entity
|
||||||
|
exercising rights under, and complying with all of the terms of, this
|
||||||
|
License or a future version of this License issued under Section 6.1.
|
||||||
|
For legal entities, "You" includes any entity which controls, is
|
||||||
|
controlled by, or is under common control with You. For purposes of
|
||||||
|
this definition, "control" means (a) the power, direct or indirect,
|
||||||
|
to cause the direction or management of such entity, whether by
|
||||||
|
contract or otherwise, or (b) ownership of more than fifty percent
|
||||||
|
(50%) of the outstanding shares or beneficial ownership of such
|
||||||
|
entity.
|
||||||
|
|
||||||
|
2. Source Code License.
|
||||||
|
|
||||||
|
2.1. The Initial Developer Grant.
|
||||||
|
The Initial Developer hereby grants You a world-wide, royalty-free,
|
||||||
|
non-exclusive license, subject to third party intellectual property
|
||||||
|
claims:
|
||||||
|
(a) under intellectual property rights (other than patent or
|
||||||
|
trademark) Licensable by Initial Developer to use, reproduce,
|
||||||
|
modify, display, perform, sublicense and distribute the Original
|
||||||
|
Code (or portions thereof) with or without Modifications, and/or
|
||||||
|
as part of a Larger Work; and
|
||||||
|
|
||||||
|
(b) under Patents Claims infringed by the making, using or
|
||||||
|
selling of Original Code, to make, have made, use, practice,
|
||||||
|
sell, and offer for sale, and/or otherwise dispose of the
|
||||||
|
Original Code (or portions thereof).
|
||||||
|
|
||||||
|
(c) the licenses granted in this Section 2.1(a) and (b) are
|
||||||
|
effective on the date Initial Developer first distributes
|
||||||
|
Original Code under the terms of this License.
|
||||||
|
|
||||||
|
(d) Notwithstanding Section 2.1(b) above, no patent license is
|
||||||
|
granted: 1) for code that You delete from the Original Code; 2)
|
||||||
|
separate from the Original Code; or 3) for infringements caused
|
||||||
|
by: i) the modification of the Original Code or ii) the
|
||||||
|
combination of the Original Code with other software or devices.
|
||||||
|
|
||||||
|
2.2. Contributor Grant.
|
||||||
|
Subject to third party intellectual property claims, each Contributor
|
||||||
|
hereby grants You a world-wide, royalty-free, non-exclusive license
|
||||||
|
|
||||||
|
(a) under intellectual property rights (other than patent or
|
||||||
|
trademark) Licensable by Contributor, to use, reproduce, modify,
|
||||||
|
display, perform, sublicense and distribute the Modifications
|
||||||
|
created by such Contributor (or portions thereof) either on an
|
||||||
|
unmodified basis, with other Modifications, as Covered Code
|
||||||
|
and/or as part of a Larger Work; and
|
||||||
|
|
||||||
|
(b) under Patent Claims infringed by the making, using, or
|
||||||
|
selling of Modifications made by that Contributor either alone
|
||||||
|
and/or in combination with its Contributor Version (or portions
|
||||||
|
of such combination), to make, use, sell, offer for sale, have
|
||||||
|
made, and/or otherwise dispose of: 1) Modifications made by that
|
||||||
|
Contributor (or portions thereof); and 2) the combination of
|
||||||
|
Modifications made by that Contributor with its Contributor
|
||||||
|
Version (or portions of such combination).
|
||||||
|
|
||||||
|
(c) the licenses granted in Sections 2.2(a) and 2.2(b) are
|
||||||
|
effective on the date Contributor first makes Commercial Use of
|
||||||
|
the Covered Code.
|
||||||
|
|
||||||
|
(d) Notwithstanding Section 2.2(b) above, no patent license is
|
||||||
|
granted: 1) for any code that Contributor has deleted from the
|
||||||
|
Contributor Version; 2) separate from the Contributor Version;
|
||||||
|
3) for infringements caused by: i) third party modifications of
|
||||||
|
Contributor Version or ii) the combination of Modifications made
|
||||||
|
by that Contributor with other software (except as part of the
|
||||||
|
Contributor Version) or other devices; or 4) under Patent Claims
|
||||||
|
infringed by Covered Code in the absence of Modifications made by
|
||||||
|
that Contributor.
|
||||||
|
|
||||||
|
3. Distribution Obligations.
|
||||||
|
|
||||||
|
3.1. Application of License.
|
||||||
|
The Modifications which You create or to which You contribute are
|
||||||
|
governed by the terms of this License, including without limitation
|
||||||
|
Section 2.2. The Source Code version of Covered Code may be
|
||||||
|
distributed only under the terms of this License or a future version
|
||||||
|
of this License released under Section 6.1, and You must include a
|
||||||
|
copy of this License with every copy of the Source Code You
|
||||||
|
distribute. You may not offer or impose any terms on any Source Code
|
||||||
|
version that alters or restricts the applicable version of this
|
||||||
|
License or the recipients' rights hereunder. However, You may include
|
||||||
|
an additional document offering the additional rights described in
|
||||||
|
Section 3.5.
|
||||||
|
|
||||||
|
3.2. Availability of Source Code.
|
||||||
|
Any Modification which You create or to which You contribute must be
|
||||||
|
made available in Source Code form under the terms of this License
|
||||||
|
either on the same media as an Executable version or via an accepted
|
||||||
|
Electronic Distribution Mechanism to anyone to whom you made an
|
||||||
|
Executable version available; and if made available via Electronic
|
||||||
|
Distribution Mechanism, must remain available for at least twelve (12)
|
||||||
|
months after the date it initially became available, or at least six
|
||||||
|
(6) months after a subsequent version of that particular Modification
|
||||||
|
has been made available to such recipients. You are responsible for
|
||||||
|
ensuring that the Source Code version remains available even if the
|
||||||
|
Electronic Distribution Mechanism is maintained by a third party.
|
||||||
|
|
||||||
|
3.3. Description of Modifications.
|
||||||
|
You must cause all Covered Code to which You contribute to contain a
|
||||||
|
file documenting the changes You made to create that Covered Code and
|
||||||
|
the date of any change. You must include a prominent statement that
|
||||||
|
the Modification is derived, directly or indirectly, from Original
|
||||||
|
Code provided by the Initial Developer and including the name of the
|
||||||
|
Initial Developer in (a) the Source Code, and (b) in any notice in an
|
||||||
|
Executable version or related documentation in which You describe the
|
||||||
|
origin or ownership of the Covered Code.
|
||||||
|
|
||||||
|
3.4. Intellectual Property Matters
|
||||||
|
(a) Third Party Claims.
|
||||||
|
If Contributor has knowledge that a license under a third party's
|
||||||
|
intellectual property rights is required to exercise the rights
|
||||||
|
granted by such Contributor under Sections 2.1 or 2.2,
|
||||||
|
Contributor must include a text file with the Source Code
|
||||||
|
distribution titled "LEGAL" which describes the claim and the
|
||||||
|
party making the claim in sufficient detail that a recipient will
|
||||||
|
know whom to contact. If Contributor obtains such knowledge after
|
||||||
|
the Modification is made available as described in Section 3.2,
|
||||||
|
Contributor shall promptly modify the LEGAL file in all copies
|
||||||
|
Contributor makes available thereafter and shall take other steps
|
||||||
|
(such as notifying appropriate mailing lists or newsgroups)
|
||||||
|
reasonably calculated to inform those who received the Covered
|
||||||
|
Code that new knowledge has been obtained.
|
||||||
|
|
||||||
|
(b) Contributor APIs.
|
||||||
|
If Contributor's Modifications include an application programming
|
||||||
|
interface and Contributor has knowledge of patent licenses which
|
||||||
|
are reasonably necessary to implement that API, Contributor must
|
||||||
|
also include this information in the LEGAL file.
|
||||||
|
|
||||||
|
(c) Representations.
|
||||||
|
Contributor represents that, except as disclosed pursuant to
|
||||||
|
Section 3.4(a) above, Contributor believes that Contributor's
|
||||||
|
Modifications are Contributor's original creation(s) and/or
|
||||||
|
Contributor has sufficient rights to grant the rights conveyed by
|
||||||
|
this License.
|
||||||
|
|
||||||
|
3.5. Required Notices.
|
||||||
|
You must duplicate the notice in Exhibit A in each file of the Source
|
||||||
|
Code. If it is not possible to put such notice in a particular Source
|
||||||
|
Code file due to its structure, then You must include such notice in a
|
||||||
|
location (such as a relevant directory) where a user would be likely
|
||||||
|
to look for such a notice. If You created one or more Modification(s)
|
||||||
|
You may add your name as a Contributor to the notice described in
|
||||||
|
Exhibit A. You must also duplicate this License in any documentation
|
||||||
|
for the Source Code where You describe recipients' rights or ownership
|
||||||
|
rights relating to Covered Code. You may choose to offer, and to
|
||||||
|
charge a fee for, warranty, support, indemnity or liability
|
||||||
|
obligations to one or more recipients of Covered Code. However, You
|
||||||
|
may do so only on Your own behalf, and not on behalf of the Initial
|
||||||
|
Developer or any Contributor. You must make it absolutely clear than
|
||||||
|
any such warranty, support, indemnity or liability obligation is
|
||||||
|
offered by You alone, and You hereby agree to indemnify the Initial
|
||||||
|
Developer and every Contributor for any liability incurred by the
|
||||||
|
Initial Developer or such Contributor as a result of warranty,
|
||||||
|
support, indemnity or liability terms You offer.
|
||||||
|
|
||||||
|
3.6. Distribution of Executable Versions.
|
||||||
|
You may distribute Covered Code in Executable form only if the
|
||||||
|
requirements of Section 3.1-3.5 have been met for that Covered Code,
|
||||||
|
and if You include a notice stating that the Source Code version of
|
||||||
|
the Covered Code is available under the terms of this License,
|
||||||
|
including a description of how and where You have fulfilled the
|
||||||
|
obligations of Section 3.2. The notice must be conspicuously included
|
||||||
|
in any notice in an Executable version, related documentation or
|
||||||
|
collateral in which You describe recipients' rights relating to the
|
||||||
|
Covered Code. You may distribute the Executable version of Covered
|
||||||
|
Code or ownership rights under a license of Your choice, which may
|
||||||
|
contain terms different from this License, provided that You are in
|
||||||
|
compliance with the terms of this License and that the license for the
|
||||||
|
Executable version does not attempt to limit or alter the recipient's
|
||||||
|
rights in the Source Code version from the rights set forth in this
|
||||||
|
License. If You distribute the Executable version under a different
|
||||||
|
license You must make it absolutely clear that any terms which differ
|
||||||
|
from this License are offered by You alone, not by the Initial
|
||||||
|
Developer or any Contributor. You hereby agree to indemnify the
|
||||||
|
Initial Developer and every Contributor for any liability incurred by
|
||||||
|
the Initial Developer or such Contributor as a result of any such
|
||||||
|
terms You offer.
|
||||||
|
|
||||||
|
3.7. Larger Works.
|
||||||
|
You may create a Larger Work by combining Covered Code with other code
|
||||||
|
not governed by the terms of this License and distribute the Larger
|
||||||
|
Work as a single product. In such a case, You must make sure the
|
||||||
|
requirements of this License are fulfilled for the Covered Code.
|
||||||
|
|
||||||
|
4. Inability to Comply Due to Statute or Regulation.
|
||||||
|
|
||||||
|
If it is impossible for You to comply with any of the terms of this
|
||||||
|
License with respect to some or all of the Covered Code due to
|
||||||
|
statute, judicial order, or regulation then You must: (a) comply with
|
||||||
|
the terms of this License to the maximum extent possible; and (b)
|
||||||
|
describe the limitations and the code they affect. Such description
|
||||||
|
must be included in the LEGAL file described in Section 3.4 and must
|
||||||
|
be included with all distributions of the Source Code. Except to the
|
||||||
|
extent prohibited by statute or regulation, such description must be
|
||||||
|
sufficiently detailed for a recipient of ordinary skill to be able to
|
||||||
|
understand it.
|
||||||
|
|
||||||
|
5. Application of this License.
|
||||||
|
|
||||||
|
This License applies to code to which the Initial Developer has
|
||||||
|
attached the notice in Exhibit A and to related Covered Code.
|
||||||
|
|
||||||
|
6. Versions of the License.
|
||||||
|
|
||||||
|
6.1. New Versions.
|
||||||
|
Netscape Communications Corporation ("Netscape") may publish revised
|
||||||
|
and/or new versions of the License from time to time. Each version
|
||||||
|
will be given a distinguishing version number.
|
||||||
|
|
||||||
|
6.2. Effect of New Versions.
|
||||||
|
Once Covered Code has been published under a particular version of the
|
||||||
|
License, You may always continue to use it under the terms of that
|
||||||
|
version. You may also choose to use such Covered Code under the terms
|
||||||
|
of any subsequent version of the License published by Netscape. No one
|
||||||
|
other than Netscape has the right to modify the terms applicable to
|
||||||
|
Covered Code created under this License.
|
||||||
|
|
||||||
|
6.3. Derivative Works.
|
||||||
|
If You create or use a modified version of this License (which you may
|
||||||
|
only do in order to apply it to code which is not already Covered Code
|
||||||
|
governed by this License), You must (a) rename Your license so that
|
||||||
|
the phrases "Mozilla", "MOZILLAPL", "MOZPL", "Netscape",
|
||||||
|
"MPL", "NPL" or any confusingly similar phrase do not appear in your
|
||||||
|
license (except to note that your license differs from this License)
|
||||||
|
and (b) otherwise make it clear that Your version of the license
|
||||||
|
contains terms which differ from the Mozilla Public License and
|
||||||
|
Netscape Public License. (Filling in the name of the Initial
|
||||||
|
Developer, Original Code or Contributor in the notice described in
|
||||||
|
Exhibit A shall not of themselves be deemed to be modifications of
|
||||||
|
this License.)
|
||||||
|
|
||||||
|
7. DISCLAIMER OF WARRANTY.
|
||||||
|
|
||||||
|
COVERED CODE IS PROVIDED UNDER THIS LICENSE ON AN "AS IS" BASIS,
|
||||||
|
WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
|
||||||
|
WITHOUT LIMITATION, WARRANTIES THAT THE COVERED CODE IS FREE OF
|
||||||
|
DEFECTS, MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE OR NON-INFRINGING.
|
||||||
|
THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE COVERED CODE
|
||||||
|
IS WITH YOU. SHOULD ANY COVERED CODE PROVE DEFECTIVE IN ANY RESPECT,
|
||||||
|
YOU (NOT THE INITIAL DEVELOPER OR ANY OTHER CONTRIBUTOR) ASSUME THE
|
||||||
|
COST OF ANY NECESSARY SERVICING, REPAIR OR CORRECTION. THIS DISCLAIMER
|
||||||
|
OF WARRANTY CONSTITUTES AN ESSENTIAL PART OF THIS LICENSE. NO USE OF
|
||||||
|
ANY COVERED CODE IS AUTHORIZED HEREUNDER EXCEPT UNDER THIS DISCLAIMER.
|
||||||
|
|
||||||
|
8. TERMINATION.
|
||||||
|
|
||||||
|
8.1. This License and the rights granted hereunder will terminate
|
||||||
|
automatically if You fail to comply with terms herein and fail to cure
|
||||||
|
such breach within 30 days of becoming aware of the breach. All
|
||||||
|
sublicenses to the Covered Code which are properly granted shall
|
||||||
|
survive any termination of this License. Provisions which, by their
|
||||||
|
nature, must remain in effect beyond the termination of this License
|
||||||
|
shall survive.
|
||||||
|
|
||||||
|
8.2. If You initiate litigation by asserting a patent infringement
|
||||||
|
claim (excluding declatory judgment actions) against Initial Developer
|
||||||
|
or a Contributor (the Initial Developer or Contributor against whom
|
||||||
|
You file such action is referred to as "Participant") alleging that:
|
||||||
|
|
||||||
|
(a) such Participant's Contributor Version directly or indirectly
|
||||||
|
infringes any patent, then any and all rights granted by such
|
||||||
|
Participant to You under Sections 2.1 and/or 2.2 of this License
|
||||||
|
shall, upon 60 days notice from Participant terminate prospectively,
|
||||||
|
unless if within 60 days after receipt of notice You either: (i)
|
||||||
|
agree in writing to pay Participant a mutually agreeable reasonable
|
||||||
|
royalty for Your past and future use of Modifications made by such
|
||||||
|
Participant, or (ii) withdraw Your litigation claim with respect to
|
||||||
|
the Contributor Version against such Participant. If within 60 days
|
||||||
|
of notice, a reasonable royalty and payment arrangement are not
|
||||||
|
mutually agreed upon in writing by the parties or the litigation claim
|
||||||
|
is not withdrawn, the rights granted by Participant to You under
|
||||||
|
Sections 2.1 and/or 2.2 automatically terminate at the expiration of
|
||||||
|
the 60 day notice period specified above.
|
||||||
|
|
||||||
|
(b) any software, hardware, or device, other than such Participant's
|
||||||
|
Contributor Version, directly or indirectly infringes any patent, then
|
||||||
|
any rights granted to You by such Participant under Sections 2.1(b)
|
||||||
|
and 2.2(b) are revoked effective as of the date You first made, used,
|
||||||
|
sold, distributed, or had made, Modifications made by that
|
||||||
|
Participant.
|
||||||
|
|
||||||
|
8.3. If You assert a patent infringement claim against Participant
|
||||||
|
alleging that such Participant's Contributor Version directly or
|
||||||
|
indirectly infringes any patent where such claim is resolved (such as
|
||||||
|
by license or settlement) prior to the initiation of patent
|
||||||
|
infringement litigation, then the reasonable value of the licenses
|
||||||
|
granted by such Participant under Sections 2.1 or 2.2 shall be taken
|
||||||
|
into account in determining the amount or value of any payment or
|
||||||
|
license.
|
||||||
|
|
||||||
|
8.4. In the event of termination under Sections 8.1 or 8.2 above,
|
||||||
|
all end user license agreements (excluding distributors and resellers)
|
||||||
|
which have been validly granted by You or any distributor hereunder
|
||||||
|
prior to termination shall survive termination.
|
||||||
|
|
||||||
|
9. LIMITATION OF LIABILITY.
|
||||||
|
|
||||||
|
UNDER NO CIRCUMSTANCES AND UNDER NO LEGAL THEORY, WHETHER TORT
|
||||||
|
(INCLUDING NEGLIGENCE), CONTRACT, OR OTHERWISE, SHALL YOU, THE INITIAL
|
||||||
|
DEVELOPER, ANY OTHER CONTRIBUTOR, OR ANY DISTRIBUTOR OF COVERED CODE,
|
||||||
|
OR ANY SUPPLIER OF ANY OF SUCH PARTIES, BE LIABLE TO ANY PERSON FOR
|
||||||
|
ANY INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES OF ANY
|
||||||
|
CHARACTER INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOSS OF GOODWILL,
|
||||||
|
WORK STOPPAGE, COMPUTER FAILURE OR MALFUNCTION, OR ANY AND ALL OTHER
|
||||||
|
COMMERCIAL DAMAGES OR LOSSES, EVEN IF SUCH PARTY SHALL HAVE BEEN
|
||||||
|
INFORMED OF THE POSSIBILITY OF SUCH DAMAGES. THIS LIMITATION OF
|
||||||
|
LIABILITY SHALL NOT APPLY TO LIABILITY FOR DEATH OR PERSONAL INJURY
|
||||||
|
RESULTING FROM SUCH PARTY'S NEGLIGENCE TO THE EXTENT APPLICABLE LAW
|
||||||
|
PROHIBITS SUCH LIMITATION. SOME JURISDICTIONS DO NOT ALLOW THE
|
||||||
|
EXCLUSION OR LIMITATION OF INCIDENTAL OR CONSEQUENTIAL DAMAGES, SO
|
||||||
|
THIS EXCLUSION AND LIMITATION MAY NOT APPLY TO YOU.
|
||||||
|
|
||||||
|
10. U.S. GOVERNMENT END USERS.
|
||||||
|
|
||||||
|
The Covered Code is a "commercial item," as that term is defined in
|
||||||
|
48 C.F.R. 2.101 (Oct. 1995), consisting of "commercial computer
|
||||||
|
software" and "commercial computer software documentation," as such
|
||||||
|
terms are used in 48 C.F.R. 12.212 (Sept. 1995). Consistent with 48
|
||||||
|
C.F.R. 12.212 and 48 C.F.R. 227.7202-1 through 227.7202-4 (June 1995),
|
||||||
|
all U.S. Government End Users acquire Covered Code with only those
|
||||||
|
rights set forth herein.
|
||||||
|
|
||||||
|
11. MISCELLANEOUS.
|
||||||
|
|
||||||
|
This License represents the complete agreement concerning subject
|
||||||
|
matter hereof. If any provision of this License is held to be
|
||||||
|
unenforceable, such provision shall be reformed only to the extent
|
||||||
|
necessary to make it enforceable. This License shall be governed by
|
||||||
|
California law provisions (except to the extent applicable law, if
|
||||||
|
any, provides otherwise), excluding its conflict-of-law provisions.
|
||||||
|
With respect to disputes in which at least one party is a citizen of,
|
||||||
|
or an entity chartered or registered to do business in the United
|
||||||
|
States of America, any litigation relating to this License shall be
|
||||||
|
subject to the jurisdiction of the Federal Courts of the Northern
|
||||||
|
District of California, with venue lying in Santa Clara County,
|
||||||
|
California, with the losing party responsible for costs, including
|
||||||
|
without limitation, court costs and reasonable attorneys' fees and
|
||||||
|
expenses. The application of the United Nations Convention on
|
||||||
|
Contracts for the International Sale of Goods is expressly excluded.
|
||||||
|
Any law or regulation which provides that the language of a contract
|
||||||
|
shall be construed against the drafter shall not apply to this
|
||||||
|
License.
|
||||||
|
|
||||||
|
12. RESPONSIBILITY FOR CLAIMS.
|
||||||
|
|
||||||
|
As between Initial Developer and the Contributors, each party is
|
||||||
|
responsible for claims and damages arising, directly or indirectly,
|
||||||
|
out of its utilization of rights under this License and You agree to
|
||||||
|
work with Initial Developer and Contributors to distribute such
|
||||||
|
responsibility on an equitable basis. Nothing herein is intended or
|
||||||
|
shall be deemed to constitute any admission of liability.
|
||||||
|
|
||||||
|
13. MULTIPLE-LICENSED CODE.
|
||||||
|
|
||||||
|
Initial Developer may designate portions of the Covered Code as
|
||||||
|
"Multiple-Licensed". "Multiple-Licensed" means that the Initial
|
||||||
|
Developer permits you to utilize portions of the Covered Code under
|
||||||
|
Your choice of the NPL or the alternative licenses, if any, specified
|
||||||
|
by the Initial Developer in the file described in Exhibit A.
|
||||||
|
|
||||||
|
EXHIBIT A -Mozilla Public License.
|
||||||
|
|
||||||
|
``The contents of this file are subject to the Mozilla Public License
|
||||||
|
Version 1.1 (the "License"); you may not use this file except in
|
||||||
|
compliance with the License. You may obtain a copy of the License at
|
||||||
|
http://www.mozilla.org/MPL/
|
||||||
|
|
||||||
|
Software distributed under the License is distributed on an "AS IS"
|
||||||
|
basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the
|
||||||
|
License for the specific language governing rights and limitations
|
||||||
|
under the License.
|
||||||
|
|
||||||
|
The Original Code is ______________________________________.
|
||||||
|
|
||||||
|
The Initial Developer of the Original Code is ________________________.
|
||||||
|
Portions created by ______________________ are Copyright (C) ______
|
||||||
|
_______________________. All Rights Reserved.
|
||||||
|
|
||||||
|
Contributor(s): ______________________________________.
|
||||||
|
|
||||||
|
Alternatively, the contents of this file may be used under the terms
|
||||||
|
of the _____ license (the "[___] License"), in which case the
|
||||||
|
provisions of [______] License are applicable instead of those
|
||||||
|
above. If you wish to allow use of your version of this file only
|
||||||
|
under the terms of the [____] License and not to allow others to use
|
||||||
|
your version of this file under the MPL, indicate your decision by
|
||||||
|
deleting the provisions above and replace them with the notice and
|
||||||
|
other provisions required by the [___] License. If you do not delete
|
||||||
|
the provisions above, a recipient may use your version of this file
|
||||||
|
under either the MPL or the [___] License."
|
||||||
|
|
||||||
|
[NOTE: The text of this Exhibit A may differ slightly from the text of
|
||||||
|
the notices in the Source Code files of the Original Code. You should
|
||||||
|
use the text of this Exhibit A rather than the text found in the
|
||||||
|
Original Code Source Code for Your Modifications.]
|
||||||
|
|
|
@ -0,0 +1,259 @@
|
||||||
|
2014-09-18 Caolán McNamara <caolán at redhat dot com>:
|
||||||
|
* coverity#58283 now 0 coverity warnings
|
||||||
|
|
||||||
|
2014-06-30 Rene Engelhard <rene at rene - engelhard dot de>:
|
||||||
|
* add missing stdio.h to hyphen.h, reported by David Suárez
|
||||||
|
in deb#753218.
|
||||||
|
|
||||||
|
2014-06-26 Caolán McNamara <caolán at redhat dot com>:
|
||||||
|
* clang scan-build warnings
|
||||||
|
|
||||||
|
2013-03-18 László Németh <nemeth at numbertext dot org>:
|
||||||
|
* Makefile.am, Makefile.in: set -version-info
|
||||||
|
|
||||||
|
2013-03-12 Paweł Hajdan <phajdan at google>:
|
||||||
|
* hyphen.h, hyphen.c: add hnj_hyphen_load_file() for sandboxing
|
||||||
|
|
||||||
|
2012-09-13 László Németh <nemeth at numbertext dot org>:
|
||||||
|
* hyphen.c: fdo#43931: removing hard hyphen hyphenation for LibreOffice
|
||||||
|
|
||||||
|
* tests/rhmin.*: add Telugu test example for rhmin fix
|
||||||
|
|
||||||
|
2012-09-11 Steven Dickson <DicksonSK at ldschurch dot org>:
|
||||||
|
* hyphen.c: fdo#54843: rhmin fix for words with 3-byte or more UTF-8
|
||||||
|
multibyte characters
|
||||||
|
|
||||||
|
2012-07-18 Caolán McNamara <caolán at redhat dot com>:
|
||||||
|
* coverity warnings
|
||||||
|
|
||||||
|
2011-10-10 László Németh <nemeth at numbertext dot org>:
|
||||||
|
* hyphen.c:
|
||||||
|
- fix NOHYPHEN (hyphenation vector
|
||||||
|
modified by 0 instead of '0')
|
||||||
|
- fix non-balanced hyphenation of LibreOffice/OOo 3.3 by
|
||||||
|
1-1/=,1,1 alternative pattern (removing hyphen)
|
||||||
|
- set default COMPOUNDHYPHENMIN=3 at hyphen and apostrophes
|
||||||
|
- fix VERBOSE to support multilevel patterns
|
||||||
|
|
||||||
|
* example.c: new option: -n to print hyphenation vector
|
||||||
|
|
||||||
|
2011-10-07 László Németh <nemeth at numbertext dot org>:
|
||||||
|
* hyphen.c: use explicite compoundhyphenmin values of the
|
||||||
|
dictionary also for the implicite NOHYPHEN hyphenation
|
||||||
|
|
||||||
|
2011-10-06 László Németh <nemeth at numbertext dot org>:
|
||||||
|
* hyphen.c: force minimal lefthyphenmin and righthyphenmin values
|
||||||
|
of the dictionary
|
||||||
|
|
||||||
|
2011-10-04 László Németh <nemeth at numbertext dot org>:
|
||||||
|
* hyphen.c: ignore leading and ending numbers (eg. fix
|
||||||
|
hyphenation of words with manual or field-based
|
||||||
|
indexes in LibreOffice/OpenOffice.org)
|
||||||
|
* tests/num.*: new test files
|
||||||
|
|
||||||
|
* hyphen.c: default NOHYPHEN separators: hyphen and
|
||||||
|
ASCII apostrophe + (only in UTF-8 encoding) endash (U+2013)
|
||||||
|
and typographical apostrophe (U+2019): fix hyphenation of
|
||||||
|
words with hyphens, n-dashes or apostrophes in LibreOffice/OOo.
|
||||||
|
* README.compound: description
|
||||||
|
|
||||||
|
* hyph_en_US.dic: remove explicite NOHYPHEN declaration
|
||||||
|
|
||||||
|
2010-12-01 László Németh <nemeth at OOo>:
|
||||||
|
* hyphen.c: NOHYPHEN fix for a special case (NOHYPHEN
|
||||||
|
character in starting position, eg. "-example")
|
||||||
|
|
||||||
|
2010-11-27 László Németh <nemeth at OOo>:
|
||||||
|
* hyphen.c: add NOHYPHEN feature
|
||||||
|
to handle special hyphenation at hyphens and apostrophes,
|
||||||
|
see README.compound
|
||||||
|
|
||||||
|
* tests/{rhmin, hyphen}: new test files
|
||||||
|
|
||||||
|
* ooopatch.sed. hyph_en_US.dic: replace and improve old hack
|
||||||
|
with NOHYPHEN
|
||||||
|
|
||||||
|
2010-07-18 Caolán McNamara <cmc at OOo>:
|
||||||
|
* remove csutil.* as more trouble that its
|
||||||
|
worth for just the testsuite
|
||||||
|
|
||||||
|
2010-07-17 Caolán McNamara <cmc at OOo>:
|
||||||
|
* strip down csutil.* to the bits that are used
|
||||||
|
* use libtool dlopen invocation to ensure we test in-tree
|
||||||
|
libhyphen during tests
|
||||||
|
|
||||||
|
2010-03-04 Caolán McNamara <cmc at OOo>:
|
||||||
|
* hun#1724558 tidy substring.c a little
|
||||||
|
* hun#1999737 add some malloc checks
|
||||||
|
* hun#2005643 tidy string functions
|
||||||
|
|
||||||
|
2010-02-23 László Németh <nemeth at OOo>:
|
||||||
|
* hyphen.c: fix lefthyphenmin calculation for UTF-8 encoded input
|
||||||
|
|
||||||
|
* hyphen.c: add Unicode ligature support for hyphenmin calculation
|
||||||
|
(see also LONG_LIGATURE macro in hyphen.c for conditional
|
||||||
|
compiling)
|
||||||
|
|
||||||
|
* csutil.c: static struct for encds[] (from OpenOffice.org patch),
|
||||||
|
(unsigned char)s, wordmin + 5 limit (see hyphen-2.4.patch of OOo)
|
||||||
|
|
||||||
|
* Makefile.am, ooopatch.awk: add OpenOffice.org patch to the en_US
|
||||||
|
hyphenation dictionary to fix apostrophe handling, see lhmin.test
|
||||||
|
|
||||||
|
* Makefile.am, lig.awk: add Unicode ligature support to en_US
|
||||||
|
hyphenation dictionary. NOTE: hyphenation within ligatures is not
|
||||||
|
supported yet because of an implementation problem of
|
||||||
|
OpenOffice.org: see OOo issue 71608.
|
||||||
|
|
||||||
|
* tests: new tests: lig.* for ligature hyphenation, lhmin.* for
|
||||||
|
lefthyphenmin calculation for UTF-8 encoded text with diacritics.
|
||||||
|
|
||||||
|
2008-05-01 László Németh <nemeth at OOo>:
|
||||||
|
* hyphen.c, hyphen.h: compound word hyphenation support by recursive
|
||||||
|
pattern matching based on two hyphenation pattern sets, see
|
||||||
|
README.compound. Especially useful for languages with arbitrary
|
||||||
|
number of compounds (Danish, Dutch, Finnish, German, Hungarian,
|
||||||
|
Icelandic, Norwegian, Swedish etc.).
|
||||||
|
- dictionary options for compound word hyphenation:
|
||||||
|
COMPOUNDLEFTHYPHENMIN: minimal hyphenation distance from the
|
||||||
|
left compound word boundary
|
||||||
|
COMPOUNDRIGHTHYPHENMIN: minimal hyphenation distance from the right
|
||||||
|
compound word boundary
|
||||||
|
* README.compound: documentation
|
||||||
|
* tests/compound.*: test data for compound word hyphenation and
|
||||||
|
COMPOUNDLEFTHYPHENMIN and COMPOUNDRIGHTHYPHENMIN.
|
||||||
|
|
||||||
|
* tests/test.sh:
|
||||||
|
- add Valgrind debugger support, usage:
|
||||||
|
make check
|
||||||
|
VALGRIND=memcheck make check
|
||||||
|
- fix false return when an error occurred
|
||||||
|
- fix make distcheck target
|
||||||
|
|
||||||
|
* tests/*.pat, test.sh: using static pattern files processed by
|
||||||
|
substrings.pl instead of run-time processed patterns.
|
||||||
|
|
||||||
|
* hyphen.c: add default hyphenmin support to the dictionaries:
|
||||||
|
LEFTHYPHENMIN: minimal hyphenation distance from the left
|
||||||
|
end of the word
|
||||||
|
RIGHTHYPHENMIN: minimal hyphenation distance from the right
|
||||||
|
end of the word.
|
||||||
|
Problems with the LEFTHYPHENMIN and RIGHTHYPHENMIN and a
|
||||||
|
possible solution reported by Joan Montané in SF.net Bug ID 1777894.
|
||||||
|
* tests/settings*.*: test data of LEFTHYPHENMIN and
|
||||||
|
RIGHTHYPHENMIN. First test (settings.*) is based on the test data
|
||||||
|
of Joan Montané (SF.net Bug ID 1777894).
|
||||||
|
|
||||||
|
* example.c: changed options:
|
||||||
|
- old -d (non-standard hyph.) mode is the default now
|
||||||
|
- -dd (listing possible hyphenations) -> -d
|
||||||
|
- -o : old (without non-standard hyphenation support) mode
|
||||||
|
|
||||||
|
* Makefile.am:
|
||||||
|
- remove unused csutil from the shared library (-20 kB and
|
||||||
|
solve a csutil conflict with Hunspell reported by
|
||||||
|
Rene Engerhald in SF.net Bug 1939988).
|
||||||
|
|
||||||
|
* substrings.pl : add lefthyphenmin and righthyphemin options:
|
||||||
|
substrings.pl infile outfile [encoding [lefthyphenmin [righthyphenmin]]]
|
||||||
|
|
||||||
|
* hyph_en_US.dic, Makefile.am: set right default values for
|
||||||
|
American English, based on the original TeX settings and
|
||||||
|
American English orthography:
|
||||||
|
LEFTHYPHENMIN 2
|
||||||
|
RIGHTHYPHENMIN 3
|
||||||
|
|
||||||
|
* README_hyph_en_US.dic: add README for en_US hyphenation patterns
|
||||||
|
|
||||||
|
* tbhyphext.tex: TugBoat hyphenation exception log with
|
||||||
|
thousand word fixes, source:
|
||||||
|
http://www.ctan.org/tex-archive/info/digests/tugboat/tb0hyf.tex,
|
||||||
|
processed by the hyphenex.sh script (see in the same folder).
|
||||||
|
* tbhyphext.sh: conversion script for tbhyphext.pat.
|
||||||
|
|
||||||
|
2008-02-19 László Németh <nemeth at OOo>:
|
||||||
|
* hyphen.c: fix unconditional jump in the obsolete
|
||||||
|
hnj_hyphen_hyphenate() (it was already fixed in the
|
||||||
|
preferred hnj_hyphen_hyphenate2()). Possible fix for the problem
|
||||||
|
reported by Rene Engelhard in SourceForge Bug ID 1896207.
|
||||||
|
|
||||||
|
* Makefile.am: add missing $(srcdir)s for make dist
|
||||||
|
|
||||||
|
* NEWS: add NEWS for autoreconf
|
||||||
|
|
||||||
|
2007-11-22 László Németh <nemeth at OOo>:
|
||||||
|
* hyphen.c: fix a bad condition that introduced in the previous version.
|
||||||
|
Problem reported by Joan Montané under SourceForge Bug ID 1772381.
|
||||||
|
|
||||||
|
* Makefile.am: rename the library to "hyphen".
|
||||||
|
|
||||||
|
* hyphen.tex: use the last official version and its time stamp.
|
||||||
|
Source: http://tug.ctan.org/text-archive/macros/plain/base/hyphen.tex
|
||||||
|
|
||||||
|
* tests/*: add make check support
|
||||||
|
|
||||||
|
* doc/tb87nemeth.pdf: TugBoat article about non-standard
|
||||||
|
hyphenation and its implementation.
|
||||||
|
|
||||||
|
2007-11-12 Caolan McNamara <cmc at OO.o>:
|
||||||
|
* autoconf/automake/libtoolize it
|
||||||
|
Which as a side effect makes it fit into the existing
|
||||||
|
--with-system-altlinuxhyph configure support in OOo to use a system
|
||||||
|
pre-installed library for OOo hyphenation.
|
||||||
|
|
||||||
|
* make a shared library libhnj.so from it
|
||||||
|
|
||||||
|
* install the hyphen.h header
|
||||||
|
|
||||||
|
* hyphen.patch: document by a make target how to go from the
|
||||||
|
original hyphen.tex file to the interim hyphen.us to the final
|
||||||
|
hyph_en_US.dic that OOo uses. (For example, converting
|
||||||
|
\hyphenate section of hyphen.tex.)
|
||||||
|
|
||||||
|
2007-05-14 László Németh <nemeth at OOo>:
|
||||||
|
* README: add information about substring.pl conversion and HyFo
|
||||||
|
Java hyphenation module.
|
||||||
|
|
||||||
|
* README.hyphen: add the following references about hyphenation:
|
||||||
|
Franklin M. Liang: Word Hy-phen-a-tion by Com-put-er.
|
||||||
|
Stanford University, 1983. http://www.tug.org/docs/liang.
|
||||||
|
|
||||||
|
László Németh: Automatic non-standard hyphenation in OpenOffice.org,
|
||||||
|
TUGboat (27), 2006. No. 2., http://hunspell.sourceforge.net/tb87nemeth.pdf
|
||||||
|
|
||||||
|
* README. nonstandard: add information about narrow subpatterns,
|
||||||
|
and a problem reported by Peter B. West.
|
||||||
|
|
||||||
|
2006-11-27 László Németh <nemeth at OOo>:
|
||||||
|
* substrings.pl: restore previous version to fix rare non-standard hyphenation
|
||||||
|
problems reported by Peter B. West, HyFo (Java XSLT formatter) developer
|
||||||
|
|
||||||
|
2006-08-03 László Németh <nemeth at OOo>:
|
||||||
|
* hyphen.c: fix bad Unicode non-standard hyphenation (reset deleted
|
||||||
|
break in UTF-8 length conversion code in hnj_hyphen_load())
|
||||||
|
* tests/unicode*, Makefile: test for this fix
|
||||||
|
|
||||||
|
* hyphen.c: fix bad hyphen duplication in hyphword output in hnj_hyphenate2()
|
||||||
|
|
||||||
|
* example.c: fix empty input fault in single_hyphenations()
|
||||||
|
(unsigned return value of strlen() output couldn't be negative in the condition)
|
||||||
|
|
||||||
|
* substrings.pl: shorter version with Nanning Buitenhuis's substrings.pl fix.
|
||||||
|
|
||||||
|
2006-07-28 Nanning Buitenhuis <nanning at elvenkind dot com>:
|
||||||
|
* substrings.c: faster C version of substrings.pl
|
||||||
|
- It also fixed a minor bug in combine(): if a sub-pattern is found twice
|
||||||
|
(or more) in the main pattern, then all occurences were changed instead
|
||||||
|
of (the correct) last occurence. Only example in hyphen.us is 'tanta3'
|
||||||
|
|
||||||
|
2006-01-27 László Németh <nemeth at OOo>:
|
||||||
|
* *.{c,h}: add non-standard hyphenation and Unicode support
|
||||||
|
* README.discretionary: documentation
|
||||||
|
- add tests/ (see make check)
|
||||||
|
|
||||||
|
2005-10-13 Daniel Naber <dnaber at OOo>:
|
||||||
|
* example.c: fixed the call to hnj_hyphen_hyphenate() in example.c so that
|
||||||
|
patterns ending in a dot should now work (Daniel Naber)
|
||||||
|
|
||||||
|
Libhnj was written by Raph Levien <raph@acm.org>
|
||||||
|
Adapted to OpenOffice.org by Peter Novodvorsky <nidd@alt-linux.org>
|
|
@ -0,0 +1,229 @@
|
||||||
|
Copyright (C) 1994, 1995, 1996, 1999, 2000, 2001, 2002 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=PATH'.
|
||||||
|
|
||||||
|
You can specify separate installation prefixes for
|
||||||
|
architecture-specific files and architecture-independent files. If you
|
||||||
|
give `configure' the option `--exec-prefix=PATH', the package will use
|
||||||
|
PATH 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=PATH' 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.
|
||||||
|
|
|
@ -0,0 +1,37 @@
|
||||||
|
SUBDIRS= doc tests
|
||||||
|
|
||||||
|
lib_LTLIBRARIES = libhyphen.la
|
||||||
|
libhyphen_la_SOURCES = hnjalloc.c hyphen.c
|
||||||
|
libhyphen_la_LDFLAGS = -version-info 3:0:3
|
||||||
|
include_HEADERS = hyphen.h
|
||||||
|
noinst_HEADERS = hnjalloc.h
|
||||||
|
|
||||||
|
noinst_PROGRAMS = substrings example
|
||||||
|
substrings_SOURCES = substrings.c
|
||||||
|
example_SOURCES = example.c
|
||||||
|
example_LDADD = libhyphen.la
|
||||||
|
|
||||||
|
bin_SCRIPTS = substrings.pl
|
||||||
|
|
||||||
|
hyphdir = $(datadir)/hyphen
|
||||||
|
|
||||||
|
# use it if you can recreate hyph_en_US.dic from
|
||||||
|
hyph_DATA = hyph_en_US.dic
|
||||||
|
|
||||||
|
EXTRA_DIST = checkme.lst hyphen.tex tbhyphext.tex tbhyphext.sh \
|
||||||
|
README.compound README.hyphen README.nonstandard substrings.pl hyphen.patch \
|
||||||
|
COPYING.MPL COPYING.LGPL hyph_en_US.dic README_hyph_en_US.txt lig.awk \
|
||||||
|
ligpatch.txt
|
||||||
|
|
||||||
|
hyphen.us3:
|
||||||
|
cp -f $(srcdir)/hyphen.tex hyphen.us
|
||||||
|
patch < $(srcdir)/hyphen.patch
|
||||||
|
$(srcdir)/tbhyphext.sh <$(srcdir)/tbhyphext.tex >hyphen.us2
|
||||||
|
cat hyphen.us hyphen.us2 | $(AWK) -f $(srcdir)/lig.awk >hyphen.us3
|
||||||
|
cat $(srcdir)/ligpatch.txt >>hyphen.us3
|
||||||
|
|
||||||
|
hyph_en_US.dic: hyphen.us3
|
||||||
|
perl $(srcdir)/substrings.pl hyphen.us3 hyph_en_US.dic UTF-8 2 3 >/dev/null
|
||||||
|
|
||||||
|
clean-local:
|
||||||
|
rm -rf hyphen.us* hyph_en_US.dic
|
|
@ -0,0 +1,982 @@
|
||||||
|
# Makefile.in generated by automake 1.11.3 from Makefile.am.
|
||||||
|
# @configure_input@
|
||||||
|
|
||||||
|
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
|
||||||
|
# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 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@
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
VPATH = @srcdir@
|
||||||
|
pkgdatadir = $(datadir)/@PACKAGE@
|
||||||
|
pkgincludedir = $(includedir)/@PACKAGE@
|
||||||
|
pkglibdir = $(libdir)/@PACKAGE@
|
||||||
|
pkglibexecdir = $(libexecdir)/@PACKAGE@
|
||||||
|
am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
|
||||||
|
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@
|
||||||
|
noinst_PROGRAMS = substrings$(EXEEXT) example$(EXEEXT)
|
||||||
|
subdir = .
|
||||||
|
DIST_COMMON = README $(am__configure_deps) $(include_HEADERS) \
|
||||||
|
$(noinst_HEADERS) $(srcdir)/Makefile.am $(srcdir)/Makefile.in \
|
||||||
|
$(top_srcdir)/configure AUTHORS COPYING ChangeLog INSTALL NEWS \
|
||||||
|
THANKS TODO config.guess config.sub depcomp install-sh \
|
||||||
|
ltmain.sh missing
|
||||||
|
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
|
||||||
|
am__aclocal_m4_deps = $(top_srcdir)/configure.in
|
||||||
|
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
|
||||||
|
$(ACLOCAL_M4)
|
||||||
|
am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \
|
||||||
|
configure.lineno config.status.lineno
|
||||||
|
mkinstalldirs = $(install_sh) -d
|
||||||
|
CONFIG_CLEAN_FILES =
|
||||||
|
CONFIG_CLEAN_VPATH_FILES =
|
||||||
|
am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
|
||||||
|
am__vpath_adj = case $$p in \
|
||||||
|
$(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
|
||||||
|
*) f=$$p;; \
|
||||||
|
esac;
|
||||||
|
am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
|
||||||
|
am__install_max = 40
|
||||||
|
am__nobase_strip_setup = \
|
||||||
|
srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
|
||||||
|
am__nobase_strip = \
|
||||||
|
for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
|
||||||
|
am__nobase_list = $(am__nobase_strip_setup); \
|
||||||
|
for p in $$list; do echo "$$p $$p"; done | \
|
||||||
|
sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
|
||||||
|
$(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
|
||||||
|
if (++n[$$2] == $(am__install_max)) \
|
||||||
|
{ print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
|
||||||
|
END { for (dir in files) print dir, files[dir] }'
|
||||||
|
am__base_list = \
|
||||||
|
sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
|
||||||
|
sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
|
||||||
|
am__uninstall_files_from_dir = { \
|
||||||
|
test -z "$$files" \
|
||||||
|
|| { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
|
||||||
|
|| { echo " ( cd '$$dir' && rm -f" $$files ")"; \
|
||||||
|
$(am__cd) "$$dir" && rm -f $$files; }; \
|
||||||
|
}
|
||||||
|
am__installdirs = "$(DESTDIR)$(libdir)" "$(DESTDIR)$(bindir)" \
|
||||||
|
"$(DESTDIR)$(hyphdir)" "$(DESTDIR)$(includedir)"
|
||||||
|
LTLIBRARIES = $(lib_LTLIBRARIES)
|
||||||
|
libhyphen_la_LIBADD =
|
||||||
|
am_libhyphen_la_OBJECTS = hnjalloc.lo hyphen.lo
|
||||||
|
libhyphen_la_OBJECTS = $(am_libhyphen_la_OBJECTS)
|
||||||
|
libhyphen_la_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
|
||||||
|
$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
|
||||||
|
$(libhyphen_la_LDFLAGS) $(LDFLAGS) -o $@
|
||||||
|
PROGRAMS = $(noinst_PROGRAMS)
|
||||||
|
am_example_OBJECTS = example.$(OBJEXT)
|
||||||
|
example_OBJECTS = $(am_example_OBJECTS)
|
||||||
|
example_DEPENDENCIES = libhyphen.la
|
||||||
|
am_substrings_OBJECTS = substrings.$(OBJEXT)
|
||||||
|
substrings_OBJECTS = $(am_substrings_OBJECTS)
|
||||||
|
substrings_LDADD = $(LDADD)
|
||||||
|
SCRIPTS = $(bin_SCRIPTS)
|
||||||
|
DEFAULT_INCLUDES = -I.@am__isrc@
|
||||||
|
depcomp = $(SHELL) $(top_srcdir)/depcomp
|
||||||
|
am__depfiles_maybe = depfiles
|
||||||
|
am__mv = mv -f
|
||||||
|
COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
|
||||||
|
$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
|
||||||
|
LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
|
||||||
|
--mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
|
||||||
|
$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
|
||||||
|
CCLD = $(CC)
|
||||||
|
LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
|
||||||
|
--mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
|
||||||
|
$(LDFLAGS) -o $@
|
||||||
|
SOURCES = $(libhyphen_la_SOURCES) $(example_SOURCES) \
|
||||||
|
$(substrings_SOURCES)
|
||||||
|
DIST_SOURCES = $(libhyphen_la_SOURCES) $(example_SOURCES) \
|
||||||
|
$(substrings_SOURCES)
|
||||||
|
RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
|
||||||
|
html-recursive info-recursive install-data-recursive \
|
||||||
|
install-dvi-recursive install-exec-recursive \
|
||||||
|
install-html-recursive install-info-recursive \
|
||||||
|
install-pdf-recursive install-ps-recursive install-recursive \
|
||||||
|
installcheck-recursive installdirs-recursive pdf-recursive \
|
||||||
|
ps-recursive uninstall-recursive
|
||||||
|
DATA = $(hyph_DATA)
|
||||||
|
HEADERS = $(include_HEADERS) $(noinst_HEADERS)
|
||||||
|
RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \
|
||||||
|
distclean-recursive maintainer-clean-recursive
|
||||||
|
AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \
|
||||||
|
$(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \
|
||||||
|
distdir dist dist-all distcheck
|
||||||
|
ETAGS = etags
|
||||||
|
CTAGS = ctags
|
||||||
|
DIST_SUBDIRS = $(SUBDIRS)
|
||||||
|
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
|
||||||
|
distdir = $(PACKAGE)-$(VERSION)
|
||||||
|
top_distdir = $(distdir)
|
||||||
|
am__remove_distdir = \
|
||||||
|
if test -d "$(distdir)"; then \
|
||||||
|
find "$(distdir)" -type d ! -perm -200 -exec chmod u+w {} ';' \
|
||||||
|
&& rm -rf "$(distdir)" \
|
||||||
|
|| { sleep 5 && rm -rf "$(distdir)"; }; \
|
||||||
|
else :; fi
|
||||||
|
am__relativize = \
|
||||||
|
dir0=`pwd`; \
|
||||||
|
sed_first='s,^\([^/]*\)/.*$$,\1,'; \
|
||||||
|
sed_rest='s,^[^/]*/*,,'; \
|
||||||
|
sed_last='s,^.*/\([^/]*\)$$,\1,'; \
|
||||||
|
sed_butlast='s,/*[^/]*$$,,'; \
|
||||||
|
while test -n "$$dir1"; do \
|
||||||
|
first=`echo "$$dir1" | sed -e "$$sed_first"`; \
|
||||||
|
if test "$$first" != "."; then \
|
||||||
|
if test "$$first" = ".."; then \
|
||||||
|
dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \
|
||||||
|
dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \
|
||||||
|
else \
|
||||||
|
first2=`echo "$$dir2" | sed -e "$$sed_first"`; \
|
||||||
|
if test "$$first2" = "$$first"; then \
|
||||||
|
dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \
|
||||||
|
else \
|
||||||
|
dir2="../$$dir2"; \
|
||||||
|
fi; \
|
||||||
|
dir0="$$dir0"/"$$first"; \
|
||||||
|
fi; \
|
||||||
|
fi; \
|
||||||
|
dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \
|
||||||
|
done; \
|
||||||
|
reldir="$$dir2"
|
||||||
|
DIST_ARCHIVES = $(distdir).tar.gz
|
||||||
|
GZIP_ENV = --best
|
||||||
|
distuninstallcheck_listfiles = find . -type f -print
|
||||||
|
am__distuninstallcheck_listfiles = $(distuninstallcheck_listfiles) \
|
||||||
|
| sed 's|^\./|$(prefix)/|' | grep -v '$(infodir)/dir$$'
|
||||||
|
distcleancheck_listfiles = find . -type f -print
|
||||||
|
ACLOCAL = @ACLOCAL@
|
||||||
|
AMTAR = @AMTAR@
|
||||||
|
AR = @AR@
|
||||||
|
AUTOCONF = @AUTOCONF@
|
||||||
|
AUTOHEADER = @AUTOHEADER@
|
||||||
|
AUTOMAKE = @AUTOMAKE@
|
||||||
|
AWK = @AWK@
|
||||||
|
CC = @CC@
|
||||||
|
CCDEPMODE = @CCDEPMODE@
|
||||||
|
CFLAGS = @CFLAGS@
|
||||||
|
CPP = @CPP@
|
||||||
|
CPPFLAGS = @CPPFLAGS@
|
||||||
|
CYGPATH_W = @CYGPATH_W@
|
||||||
|
DEFS = @DEFS@
|
||||||
|
DEPDIR = @DEPDIR@
|
||||||
|
DLLTOOL = @DLLTOOL@
|
||||||
|
DSYMUTIL = @DSYMUTIL@
|
||||||
|
DUMPBIN = @DUMPBIN@
|
||||||
|
ECHO_C = @ECHO_C@
|
||||||
|
ECHO_N = @ECHO_N@
|
||||||
|
ECHO_T = @ECHO_T@
|
||||||
|
EGREP = @EGREP@
|
||||||
|
EXEEXT = @EXEEXT@
|
||||||
|
FGREP = @FGREP@
|
||||||
|
GREP = @GREP@
|
||||||
|
INSTALL = @INSTALL@
|
||||||
|
INSTALL_DATA = @INSTALL_DATA@
|
||||||
|
INSTALL_PROGRAM = @INSTALL_PROGRAM@
|
||||||
|
INSTALL_SCRIPT = @INSTALL_SCRIPT@
|
||||||
|
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
|
||||||
|
LD = @LD@
|
||||||
|
LDFLAGS = @LDFLAGS@
|
||||||
|
LIBOBJS = @LIBOBJS@
|
||||||
|
LIBS = @LIBS@
|
||||||
|
LIBTOOL = @LIBTOOL@
|
||||||
|
LIPO = @LIPO@
|
||||||
|
LN_S = @LN_S@
|
||||||
|
LTLIBOBJS = @LTLIBOBJS@
|
||||||
|
MAKEINFO = @MAKEINFO@
|
||||||
|
MANIFEST_TOOL = @MANIFEST_TOOL@
|
||||||
|
MKDIR_P = @MKDIR_P@
|
||||||
|
NM = @NM@
|
||||||
|
NMEDIT = @NMEDIT@
|
||||||
|
OBJDUMP = @OBJDUMP@
|
||||||
|
OBJEXT = @OBJEXT@
|
||||||
|
OTOOL = @OTOOL@
|
||||||
|
OTOOL64 = @OTOOL64@
|
||||||
|
PACKAGE = @PACKAGE@
|
||||||
|
PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
|
||||||
|
PACKAGE_NAME = @PACKAGE_NAME@
|
||||||
|
PACKAGE_STRING = @PACKAGE_STRING@
|
||||||
|
PACKAGE_TARNAME = @PACKAGE_TARNAME@
|
||||||
|
PACKAGE_URL = @PACKAGE_URL@
|
||||||
|
PACKAGE_VERSION = @PACKAGE_VERSION@
|
||||||
|
PATH_SEPARATOR = @PATH_SEPARATOR@
|
||||||
|
RANLIB = @RANLIB@
|
||||||
|
SED = @SED@
|
||||||
|
SET_MAKE = @SET_MAKE@
|
||||||
|
SHELL = @SHELL@
|
||||||
|
STRIP = @STRIP@
|
||||||
|
VERSION = @VERSION@
|
||||||
|
abs_builddir = @abs_builddir@
|
||||||
|
abs_srcdir = @abs_srcdir@
|
||||||
|
abs_top_builddir = @abs_top_builddir@
|
||||||
|
abs_top_srcdir = @abs_top_srcdir@
|
||||||
|
ac_ct_AR = @ac_ct_AR@
|
||||||
|
ac_ct_CC = @ac_ct_CC@
|
||||||
|
ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
|
||||||
|
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@
|
||||||
|
builddir = @builddir@
|
||||||
|
datadir = @datadir@
|
||||||
|
datarootdir = @datarootdir@
|
||||||
|
docdir = @docdir@
|
||||||
|
dvidir = @dvidir@
|
||||||
|
exec_prefix = @exec_prefix@
|
||||||
|
host = @host@
|
||||||
|
host_alias = @host_alias@
|
||||||
|
host_cpu = @host_cpu@
|
||||||
|
host_os = @host_os@
|
||||||
|
host_vendor = @host_vendor@
|
||||||
|
htmldir = @htmldir@
|
||||||
|
includedir = @includedir@
|
||||||
|
infodir = @infodir@
|
||||||
|
install_sh = @install_sh@
|
||||||
|
libdir = @libdir@
|
||||||
|
libexecdir = @libexecdir@
|
||||||
|
localedir = @localedir@
|
||||||
|
localstatedir = @localstatedir@
|
||||||
|
mandir = @mandir@
|
||||||
|
mkdir_p = @mkdir_p@
|
||||||
|
oldincludedir = @oldincludedir@
|
||||||
|
pdfdir = @pdfdir@
|
||||||
|
prefix = @prefix@
|
||||||
|
program_transform_name = @program_transform_name@
|
||||||
|
psdir = @psdir@
|
||||||
|
sbindir = @sbindir@
|
||||||
|
sharedstatedir = @sharedstatedir@
|
||||||
|
srcdir = @srcdir@
|
||||||
|
sysconfdir = @sysconfdir@
|
||||||
|
target_alias = @target_alias@
|
||||||
|
top_build_prefix = @top_build_prefix@
|
||||||
|
top_builddir = @top_builddir@
|
||||||
|
top_srcdir = @top_srcdir@
|
||||||
|
SUBDIRS = doc tests
|
||||||
|
lib_LTLIBRARIES = libhyphen.la
|
||||||
|
libhyphen_la_SOURCES = hnjalloc.c hyphen.c
|
||||||
|
libhyphen_la_LDFLAGS = -version-info 3:0:3
|
||||||
|
include_HEADERS = hyphen.h
|
||||||
|
noinst_HEADERS = hnjalloc.h
|
||||||
|
substrings_SOURCES = substrings.c
|
||||||
|
example_SOURCES = example.c
|
||||||
|
example_LDADD = libhyphen.la
|
||||||
|
bin_SCRIPTS = substrings.pl
|
||||||
|
hyphdir = $(datadir)/hyphen
|
||||||
|
|
||||||
|
# use it if you can recreate hyph_en_US.dic from
|
||||||
|
hyph_DATA = hyph_en_US.dic
|
||||||
|
EXTRA_DIST = checkme.lst hyphen.tex tbhyphext.tex tbhyphext.sh \
|
||||||
|
README.compound README.hyphen README.nonstandard substrings.pl hyphen.patch \
|
||||||
|
COPYING.MPL COPYING.LGPL hyph_en_US.dic README_hyph_en_US.txt lig.awk \
|
||||||
|
ligpatch.txt
|
||||||
|
|
||||||
|
all: all-recursive
|
||||||
|
|
||||||
|
.SUFFIXES:
|
||||||
|
.SUFFIXES: .c .lo .o .obj
|
||||||
|
am--refresh: Makefile
|
||||||
|
@:
|
||||||
|
$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
|
||||||
|
@for dep in $?; do \
|
||||||
|
case '$(am__configure_deps)' in \
|
||||||
|
*$$dep*) \
|
||||||
|
echo ' cd $(srcdir) && $(AUTOMAKE) --gnu'; \
|
||||||
|
$(am__cd) $(srcdir) && $(AUTOMAKE) --gnu \
|
||||||
|
&& exit 0; \
|
||||||
|
exit 1;; \
|
||||||
|
esac; \
|
||||||
|
done; \
|
||||||
|
echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu Makefile'; \
|
||||||
|
$(am__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: $(am__configure_deps)
|
||||||
|
$(am__cd) $(srcdir) && $(AUTOCONF)
|
||||||
|
$(ACLOCAL_M4): $(am__aclocal_m4_deps)
|
||||||
|
$(am__cd) $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS)
|
||||||
|
$(am__aclocal_m4_deps):
|
||||||
|
install-libLTLIBRARIES: $(lib_LTLIBRARIES)
|
||||||
|
@$(NORMAL_INSTALL)
|
||||||
|
test -z "$(libdir)" || $(MKDIR_P) "$(DESTDIR)$(libdir)"
|
||||||
|
@list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \
|
||||||
|
list2=; for p in $$list; do \
|
||||||
|
if test -f $$p; then \
|
||||||
|
list2="$$list2 $$p"; \
|
||||||
|
else :; fi; \
|
||||||
|
done; \
|
||||||
|
test -z "$$list2" || { \
|
||||||
|
echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(libdir)'"; \
|
||||||
|
$(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(libdir)"; \
|
||||||
|
}
|
||||||
|
|
||||||
|
uninstall-libLTLIBRARIES:
|
||||||
|
@$(NORMAL_UNINSTALL)
|
||||||
|
@list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \
|
||||||
|
for p in $$list; do \
|
||||||
|
$(am__strip_dir) \
|
||||||
|
echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(libdir)/$$f'"; \
|
||||||
|
$(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(libdir)/$$f"; \
|
||||||
|
done
|
||||||
|
|
||||||
|
clean-libLTLIBRARIES:
|
||||||
|
-test -z "$(lib_LTLIBRARIES)" || rm -f $(lib_LTLIBRARIES)
|
||||||
|
@list='$(lib_LTLIBRARIES)'; for p in $$list; do \
|
||||||
|
dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
|
||||||
|
test "$$dir" != "$$p" || dir=.; \
|
||||||
|
echo "rm -f \"$${dir}/so_locations\""; \
|
||||||
|
rm -f "$${dir}/so_locations"; \
|
||||||
|
done
|
||||||
|
libhyphen.la: $(libhyphen_la_OBJECTS) $(libhyphen_la_DEPENDENCIES) $(EXTRA_libhyphen_la_DEPENDENCIES)
|
||||||
|
$(libhyphen_la_LINK) -rpath $(libdir) $(libhyphen_la_OBJECTS) $(libhyphen_la_LIBADD) $(LIBS)
|
||||||
|
|
||||||
|
clean-noinstPROGRAMS:
|
||||||
|
@list='$(noinst_PROGRAMS)'; test -n "$$list" || exit 0; \
|
||||||
|
echo " rm -f" $$list; \
|
||||||
|
rm -f $$list || exit $$?; \
|
||||||
|
test -n "$(EXEEXT)" || exit 0; \
|
||||||
|
list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
|
||||||
|
echo " rm -f" $$list; \
|
||||||
|
rm -f $$list
|
||||||
|
example$(EXEEXT): $(example_OBJECTS) $(example_DEPENDENCIES) $(EXTRA_example_DEPENDENCIES)
|
||||||
|
@rm -f example$(EXEEXT)
|
||||||
|
$(LINK) $(example_OBJECTS) $(example_LDADD) $(LIBS)
|
||||||
|
substrings$(EXEEXT): $(substrings_OBJECTS) $(substrings_DEPENDENCIES) $(EXTRA_substrings_DEPENDENCIES)
|
||||||
|
@rm -f substrings$(EXEEXT)
|
||||||
|
$(LINK) $(substrings_OBJECTS) $(substrings_LDADD) $(LIBS)
|
||||||
|
install-binSCRIPTS: $(bin_SCRIPTS)
|
||||||
|
@$(NORMAL_INSTALL)
|
||||||
|
test -z "$(bindir)" || $(MKDIR_P) "$(DESTDIR)$(bindir)"
|
||||||
|
@list='$(bin_SCRIPTS)'; test -n "$(bindir)" || list=; \
|
||||||
|
for p in $$list; do \
|
||||||
|
if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
|
||||||
|
if test -f "$$d$$p"; then echo "$$d$$p"; echo "$$p"; else :; fi; \
|
||||||
|
done | \
|
||||||
|
sed -e 'p;s,.*/,,;n' \
|
||||||
|
-e 'h;s|.*|.|' \
|
||||||
|
-e 'p;x;s,.*/,,;$(transform)' | sed 'N;N;N;s,\n, ,g' | \
|
||||||
|
$(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1; } \
|
||||||
|
{ d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \
|
||||||
|
if ($$2 == $$4) { files[d] = files[d] " " $$1; \
|
||||||
|
if (++n[d] == $(am__install_max)) { \
|
||||||
|
print "f", d, files[d]; n[d] = 0; files[d] = "" } } \
|
||||||
|
else { print "f", d "/" $$4, $$1 } } \
|
||||||
|
END { for (d in files) print "f", d, files[d] }' | \
|
||||||
|
while read type dir files; do \
|
||||||
|
if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \
|
||||||
|
test -z "$$files" || { \
|
||||||
|
echo " $(INSTALL_SCRIPT) $$files '$(DESTDIR)$(bindir)$$dir'"; \
|
||||||
|
$(INSTALL_SCRIPT) $$files "$(DESTDIR)$(bindir)$$dir" || exit $$?; \
|
||||||
|
} \
|
||||||
|
; done
|
||||||
|
|
||||||
|
uninstall-binSCRIPTS:
|
||||||
|
@$(NORMAL_UNINSTALL)
|
||||||
|
@list='$(bin_SCRIPTS)'; test -n "$(bindir)" || exit 0; \
|
||||||
|
files=`for p in $$list; do echo "$$p"; done | \
|
||||||
|
sed -e 's,.*/,,;$(transform)'`; \
|
||||||
|
dir='$(DESTDIR)$(bindir)'; $(am__uninstall_files_from_dir)
|
||||||
|
|
||||||
|
mostlyclean-compile:
|
||||||
|
-rm -f *.$(OBJEXT)
|
||||||
|
|
||||||
|
distclean-compile:
|
||||||
|
-rm -f *.tab.c
|
||||||
|
|
||||||
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/example.Po@am__quote@
|
||||||
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hnjalloc.Plo@am__quote@
|
||||||
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hyphen.Plo@am__quote@
|
||||||
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/substrings.Po@am__quote@
|
||||||
|
|
||||||
|
.c.o:
|
||||||
|
@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
|
||||||
|
@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
|
||||||
|
@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@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
|
||||||
|
@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
|
||||||
|
@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) '$<'`
|
||||||
|
|
||||||
|
.c.lo:
|
||||||
|
@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
|
||||||
|
@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
|
||||||
|
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
|
||||||
|
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||||
|
@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $<
|
||||||
|
|
||||||
|
mostlyclean-libtool:
|
||||||
|
-rm -f *.lo
|
||||||
|
|
||||||
|
clean-libtool:
|
||||||
|
-rm -rf .libs _libs
|
||||||
|
|
||||||
|
distclean-libtool:
|
||||||
|
-rm -f libtool config.lt
|
||||||
|
install-hyphDATA: $(hyph_DATA)
|
||||||
|
@$(NORMAL_INSTALL)
|
||||||
|
test -z "$(hyphdir)" || $(MKDIR_P) "$(DESTDIR)$(hyphdir)"
|
||||||
|
@list='$(hyph_DATA)'; test -n "$(hyphdir)" || list=; \
|
||||||
|
for p in $$list; do \
|
||||||
|
if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
|
||||||
|
echo "$$d$$p"; \
|
||||||
|
done | $(am__base_list) | \
|
||||||
|
while read files; do \
|
||||||
|
echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(hyphdir)'"; \
|
||||||
|
$(INSTALL_DATA) $$files "$(DESTDIR)$(hyphdir)" || exit $$?; \
|
||||||
|
done
|
||||||
|
|
||||||
|
uninstall-hyphDATA:
|
||||||
|
@$(NORMAL_UNINSTALL)
|
||||||
|
@list='$(hyph_DATA)'; test -n "$(hyphdir)" || list=; \
|
||||||
|
files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
|
||||||
|
dir='$(DESTDIR)$(hyphdir)'; $(am__uninstall_files_from_dir)
|
||||||
|
install-includeHEADERS: $(include_HEADERS)
|
||||||
|
@$(NORMAL_INSTALL)
|
||||||
|
test -z "$(includedir)" || $(MKDIR_P) "$(DESTDIR)$(includedir)"
|
||||||
|
@list='$(include_HEADERS)'; test -n "$(includedir)" || list=; \
|
||||||
|
for p in $$list; do \
|
||||||
|
if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
|
||||||
|
echo "$$d$$p"; \
|
||||||
|
done | $(am__base_list) | \
|
||||||
|
while read files; do \
|
||||||
|
echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(includedir)'"; \
|
||||||
|
$(INSTALL_HEADER) $$files "$(DESTDIR)$(includedir)" || exit $$?; \
|
||||||
|
done
|
||||||
|
|
||||||
|
uninstall-includeHEADERS:
|
||||||
|
@$(NORMAL_UNINSTALL)
|
||||||
|
@list='$(include_HEADERS)'; test -n "$(includedir)" || list=; \
|
||||||
|
files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
|
||||||
|
dir='$(DESTDIR)$(includedir)'; $(am__uninstall_files_from_dir)
|
||||||
|
|
||||||
|
# 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):
|
||||||
|
@fail= failcom='exit 1'; \
|
||||||
|
for f in x $$MAKEFLAGS; do \
|
||||||
|
case $$f in \
|
||||||
|
*=* | --[!k]*);; \
|
||||||
|
*k*) failcom='fail=yes';; \
|
||||||
|
esac; \
|
||||||
|
done; \
|
||||||
|
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; \
|
||||||
|
($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
|
||||||
|
|| eval $$failcom; \
|
||||||
|
done; \
|
||||||
|
if test "$$dot_seen" = "no"; then \
|
||||||
|
$(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
|
||||||
|
fi; test -z "$$fail"
|
||||||
|
|
||||||
|
$(RECURSIVE_CLEAN_TARGETS):
|
||||||
|
@fail= failcom='exit 1'; \
|
||||||
|
for f in x $$MAKEFLAGS; do \
|
||||||
|
case $$f in \
|
||||||
|
*=* | --[!k]*);; \
|
||||||
|
*k*) failcom='fail=yes';; \
|
||||||
|
esac; \
|
||||||
|
done; \
|
||||||
|
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; \
|
||||||
|
($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
|
||||||
|
|| eval $$failcom; \
|
||||||
|
done && test -z "$$fail"
|
||||||
|
tags-recursive:
|
||||||
|
list='$(SUBDIRS)'; for subdir in $$list; do \
|
||||||
|
test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
|
||||||
|
done
|
||||||
|
ctags-recursive:
|
||||||
|
list='$(SUBDIRS)'; for subdir in $$list; do \
|
||||||
|
test "$$subdir" = . || ($(am__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; nonempty = 1; } \
|
||||||
|
END { if (nonempty) { for (i in files) print i; }; }'`; \
|
||||||
|
mkid -fID $$unique
|
||||||
|
tags: TAGS
|
||||||
|
|
||||||
|
TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
|
||||||
|
$(TAGS_FILES) $(LISP)
|
||||||
|
set x; \
|
||||||
|
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 || \
|
||||||
|
set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \
|
||||||
|
fi; \
|
||||||
|
done; \
|
||||||
|
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; nonempty = 1; } \
|
||||||
|
END { if (nonempty) { for (i in files) print i; }; }'`; \
|
||||||
|
shift; \
|
||||||
|
if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
|
||||||
|
test -n "$$unique" || unique=$$empty_fix; \
|
||||||
|
if test $$# -gt 0; then \
|
||||||
|
$(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
|
||||||
|
"$$@" $$unique; \
|
||||||
|
else \
|
||||||
|
$(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
|
||||||
|
$$unique; \
|
||||||
|
fi; \
|
||||||
|
fi
|
||||||
|
ctags: CTAGS
|
||||||
|
CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
|
||||||
|
$(TAGS_FILES) $(LISP)
|
||||||
|
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; nonempty = 1; } \
|
||||||
|
END { if (nonempty) { for (i in files) print i; }; }'`; \
|
||||||
|
test -z "$(CTAGS_ARGS)$$unique" \
|
||||||
|
|| $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
|
||||||
|
$$unique
|
||||||
|
|
||||||
|
GTAGS:
|
||||||
|
here=`$(am__cd) $(top_builddir) && pwd` \
|
||||||
|
&& $(am__cd) $(top_srcdir) \
|
||||||
|
&& gtags -i $(GTAGS_ARGS) "$$here"
|
||||||
|
|
||||||
|
distclean-tags:
|
||||||
|
-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
|
||||||
|
|
||||||
|
distdir: $(DISTFILES)
|
||||||
|
$(am__remove_distdir)
|
||||||
|
test -d "$(distdir)" || mkdir "$(distdir)"
|
||||||
|
@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
|
||||||
|
topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
|
||||||
|
list='$(DISTFILES)'; \
|
||||||
|
dist_files=`for file in $$list; do echo $$file; done | \
|
||||||
|
sed -e "s|^$$srcdirstrip/||;t" \
|
||||||
|
-e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
|
||||||
|
case $$dist_files in \
|
||||||
|
*/*) $(MKDIR_P) `echo "$$dist_files" | \
|
||||||
|
sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
|
||||||
|
sort -u` ;; \
|
||||||
|
esac; \
|
||||||
|
for file in $$dist_files; do \
|
||||||
|
if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
|
||||||
|
if test -d $$d/$$file; then \
|
||||||
|
dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
|
||||||
|
if test -d "$(distdir)/$$file"; then \
|
||||||
|
find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
|
||||||
|
fi; \
|
||||||
|
if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
|
||||||
|
cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
|
||||||
|
find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
|
||||||
|
fi; \
|
||||||
|
cp -fpR $$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; \
|
||||||
|
fi; \
|
||||||
|
done
|
||||||
|
@list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
|
||||||
|
if test "$$subdir" = .; then :; else \
|
||||||
|
dir1=$$subdir; dir2="$(distdir)/$$subdir"; \
|
||||||
|
$(am__relativize); \
|
||||||
|
new_distdir=$$reldir; \
|
||||||
|
dir1=$$subdir; dir2="$(top_distdir)"; \
|
||||||
|
$(am__relativize); \
|
||||||
|
new_top_distdir=$$reldir; \
|
||||||
|
echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \
|
||||||
|
echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \
|
||||||
|
($(am__cd) $$subdir && \
|
||||||
|
$(MAKE) $(AM_MAKEFLAGS) \
|
||||||
|
top_distdir="$$new_top_distdir" \
|
||||||
|
distdir="$$new_distdir" \
|
||||||
|
am__remove_distdir=: \
|
||||||
|
am__skip_length_check=: \
|
||||||
|
am__skip_mode_fix=: \
|
||||||
|
distdir) \
|
||||||
|
|| exit 1; \
|
||||||
|
fi; \
|
||||||
|
done
|
||||||
|
-test -n "$(am__skip_mode_fix)" \
|
||||||
|
|| find "$(distdir)" -type d ! -perm -755 \
|
||||||
|
-exec chmod u+rwx,go+rx {} \; -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 $(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=$${BZIP2--9} bzip2 -c >$(distdir).tar.bz2
|
||||||
|
$(am__remove_distdir)
|
||||||
|
|
||||||
|
dist-lzip: distdir
|
||||||
|
tardir=$(distdir) && $(am__tar) | lzip -c $${LZIP_OPT--9} >$(distdir).tar.lz
|
||||||
|
$(am__remove_distdir)
|
||||||
|
|
||||||
|
dist-lzma: distdir
|
||||||
|
tardir=$(distdir) && $(am__tar) | lzma -9 -c >$(distdir).tar.lzma
|
||||||
|
$(am__remove_distdir)
|
||||||
|
|
||||||
|
dist-xz: distdir
|
||||||
|
tardir=$(distdir) && $(am__tar) | XZ_OPT=$${XZ_OPT--e} xz -c >$(distdir).tar.xz
|
||||||
|
$(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
|
||||||
|
$(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) gzip -dc $(distdir).tar.gz | $(am__untar) ;;\
|
||||||
|
*.tar.bz2*) \
|
||||||
|
bzip2 -dc $(distdir).tar.bz2 | $(am__untar) ;;\
|
||||||
|
*.tar.lzma*) \
|
||||||
|
lzma -dc $(distdir).tar.lzma | $(am__untar) ;;\
|
||||||
|
*.tar.lz*) \
|
||||||
|
lzip -dc $(distdir).tar.lz | $(am__untar) ;;\
|
||||||
|
*.tar.xz*) \
|
||||||
|
xz -dc $(distdir).tar.xz | $(am__untar) ;;\
|
||||||
|
*.tar.Z*) \
|
||||||
|
uncompress -c $(distdir).tar.Z | $(am__untar) ;;\
|
||||||
|
*.shar.gz*) \
|
||||||
|
GZIP=$(GZIP_ENV) gzip -dc $(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)
|
||||||
|
test -d $(distdir)/_build || exit 0; \
|
||||||
|
dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \
|
||||||
|
&& dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \
|
||||||
|
&& am__cwd=`pwd` \
|
||||||
|
&& $(am__cd) $(distdir)/_build \
|
||||||
|
&& ../configure --srcdir=.. --prefix="$$dc_install_base" \
|
||||||
|
$(AM_DISTCHECK_CONFIGURE_FLAGS) \
|
||||||
|
$(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 \
|
||||||
|
&& cd "$$am__cwd" \
|
||||||
|
|| exit 1
|
||||||
|
$(am__remove_distdir)
|
||||||
|
@(echo "$(distdir) archives ready for distribution: "; \
|
||||||
|
list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \
|
||||||
|
sed -e 1h -e 1s/./=/g -e 1p -e 1x -e '$$p' -e '$$x'
|
||||||
|
distuninstallcheck:
|
||||||
|
@test -n '$(distuninstallcheck_dir)' || { \
|
||||||
|
echo 'ERROR: trying to run $@ with an empty' \
|
||||||
|
'$$(distuninstallcheck_dir)' >&2; \
|
||||||
|
exit 1; \
|
||||||
|
}; \
|
||||||
|
$(am__cd) '$(distuninstallcheck_dir)' || { \
|
||||||
|
echo 'ERROR: cannot chdir into $(distuninstallcheck_dir)' >&2; \
|
||||||
|
exit 1; \
|
||||||
|
}; \
|
||||||
|
test `$(am__distuninstallcheck_listfiles) | wc -l` -eq 0 \
|
||||||
|
|| { 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 $(LTLIBRARIES) $(PROGRAMS) $(SCRIPTS) $(DATA) \
|
||||||
|
$(HEADERS)
|
||||||
|
installdirs: installdirs-recursive
|
||||||
|
installdirs-am:
|
||||||
|
for dir in "$(DESTDIR)$(libdir)" "$(DESTDIR)$(bindir)" "$(DESTDIR)$(hyphdir)" "$(DESTDIR)$(includedir)"; do \
|
||||||
|
test -z "$$dir" || $(MKDIR_P) "$$dir"; \
|
||||||
|
done
|
||||||
|
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:
|
||||||
|
if test -z '$(STRIP)'; then \
|
||||||
|
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
|
||||||
|
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
|
||||||
|
install; \
|
||||||
|
else \
|
||||||
|
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
|
||||||
|
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
|
||||||
|
"INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
|
||||||
|
fi
|
||||||
|
mostlyclean-generic:
|
||||||
|
|
||||||
|
clean-generic:
|
||||||
|
|
||||||
|
distclean-generic:
|
||||||
|
-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
|
||||||
|
-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_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 clean-libLTLIBRARIES clean-libtool clean-local \
|
||||||
|
clean-noinstPROGRAMS mostlyclean-am
|
||||||
|
|
||||||
|
distclean: distclean-recursive
|
||||||
|
-rm -f $(am__CONFIG_DISTCLEAN_FILES)
|
||||||
|
-rm -rf ./$(DEPDIR)
|
||||||
|
-rm -f Makefile
|
||||||
|
distclean-am: clean-am distclean-compile distclean-generic \
|
||||||
|
distclean-libtool distclean-tags
|
||||||
|
|
||||||
|
dvi: dvi-recursive
|
||||||
|
|
||||||
|
dvi-am:
|
||||||
|
|
||||||
|
html: html-recursive
|
||||||
|
|
||||||
|
html-am:
|
||||||
|
|
||||||
|
info: info-recursive
|
||||||
|
|
||||||
|
info-am:
|
||||||
|
|
||||||
|
install-data-am: install-hyphDATA install-includeHEADERS
|
||||||
|
|
||||||
|
install-dvi: install-dvi-recursive
|
||||||
|
|
||||||
|
install-dvi-am:
|
||||||
|
|
||||||
|
install-exec-am: install-binSCRIPTS install-libLTLIBRARIES
|
||||||
|
|
||||||
|
install-html: install-html-recursive
|
||||||
|
|
||||||
|
install-html-am:
|
||||||
|
|
||||||
|
install-info: install-info-recursive
|
||||||
|
|
||||||
|
install-info-am:
|
||||||
|
|
||||||
|
install-man:
|
||||||
|
|
||||||
|
install-pdf: install-pdf-recursive
|
||||||
|
|
||||||
|
install-pdf-am:
|
||||||
|
|
||||||
|
install-ps: install-ps-recursive
|
||||||
|
|
||||||
|
install-ps-am:
|
||||||
|
|
||||||
|
installcheck-am:
|
||||||
|
|
||||||
|
maintainer-clean: maintainer-clean-recursive
|
||||||
|
-rm -f $(am__CONFIG_DISTCLEAN_FILES)
|
||||||
|
-rm -rf $(top_srcdir)/autom4te.cache
|
||||||
|
-rm -rf ./$(DEPDIR)
|
||||||
|
-rm -f Makefile
|
||||||
|
maintainer-clean-am: distclean-am maintainer-clean-generic
|
||||||
|
|
||||||
|
mostlyclean: mostlyclean-recursive
|
||||||
|
|
||||||
|
mostlyclean-am: mostlyclean-compile mostlyclean-generic \
|
||||||
|
mostlyclean-libtool
|
||||||
|
|
||||||
|
pdf: pdf-recursive
|
||||||
|
|
||||||
|
pdf-am:
|
||||||
|
|
||||||
|
ps: ps-recursive
|
||||||
|
|
||||||
|
ps-am:
|
||||||
|
|
||||||
|
uninstall-am: uninstall-binSCRIPTS uninstall-hyphDATA \
|
||||||
|
uninstall-includeHEADERS uninstall-libLTLIBRARIES
|
||||||
|
|
||||||
|
.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) ctags-recursive \
|
||||||
|
install-am install-strip tags-recursive
|
||||||
|
|
||||||
|
.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \
|
||||||
|
all all-am am--refresh check check-am clean clean-generic \
|
||||||
|
clean-libLTLIBRARIES clean-libtool clean-local \
|
||||||
|
clean-noinstPROGRAMS ctags ctags-recursive dist dist-all \
|
||||||
|
dist-bzip2 dist-gzip dist-lzip dist-lzma dist-shar dist-tarZ \
|
||||||
|
dist-xz dist-zip distcheck distclean distclean-compile \
|
||||||
|
distclean-generic distclean-libtool distclean-tags \
|
||||||
|
distcleancheck distdir distuninstallcheck dvi dvi-am html \
|
||||||
|
html-am info info-am install install-am install-binSCRIPTS \
|
||||||
|
install-data install-data-am install-dvi install-dvi-am \
|
||||||
|
install-exec install-exec-am install-html install-html-am \
|
||||||
|
install-hyphDATA install-includeHEADERS install-info \
|
||||||
|
install-info-am install-libLTLIBRARIES install-man install-pdf \
|
||||||
|
install-pdf-am install-ps install-ps-am install-strip \
|
||||||
|
installcheck installcheck-am installdirs installdirs-am \
|
||||||
|
maintainer-clean maintainer-clean-generic mostlyclean \
|
||||||
|
mostlyclean-compile mostlyclean-generic mostlyclean-libtool \
|
||||||
|
pdf pdf-am ps ps-am tags tags-recursive uninstall uninstall-am \
|
||||||
|
uninstall-binSCRIPTS uninstall-hyphDATA \
|
||||||
|
uninstall-includeHEADERS uninstall-libLTLIBRARIES
|
||||||
|
|
||||||
|
|
||||||
|
hyphen.us3:
|
||||||
|
cp -f $(srcdir)/hyphen.tex hyphen.us
|
||||||
|
patch < $(srcdir)/hyphen.patch
|
||||||
|
$(srcdir)/tbhyphext.sh <$(srcdir)/tbhyphext.tex >hyphen.us2
|
||||||
|
cat hyphen.us hyphen.us2 | $(AWK) -f $(srcdir)/lig.awk >hyphen.us3
|
||||||
|
cat $(srcdir)/ligpatch.txt >>hyphen.us3
|
||||||
|
|
||||||
|
hyph_en_US.dic: hyphen.us3
|
||||||
|
perl $(srcdir)/substrings.pl hyphen.us3 hyph_en_US.dic UTF-8 2 3 >/dev/null
|
||||||
|
|
||||||
|
clean-local:
|
||||||
|
rm -rf hyphen.us* hyph_en_US.dic
|
||||||
|
|
||||||
|
# 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:
|
|
@ -0,0 +1,106 @@
|
||||||
|
2014-09-18 Hyphen 2.8.8:
|
||||||
|
- remove last coverity warning, 0 remaining
|
||||||
|
|
||||||
|
2014-06-27 Hyphen 2.8.7:
|
||||||
|
- various clang scan-build warning fixes
|
||||||
|
|
||||||
|
2012-09-13 Hyphen 2.8.6:
|
||||||
|
- righthyphenmin fix for 3-byte or more UTF-8
|
||||||
|
multibyte characters by Steven Dickson
|
||||||
|
- fix for fdo#43931 (removing hard hyphen hyphenation for LibreOffice)
|
||||||
|
|
||||||
|
2012-07-12 Hyphen 2.8.5:
|
||||||
|
- fix short alloc
|
||||||
|
|
||||||
|
2012-06-29 Hyphen 2.8.4:
|
||||||
|
- coverity warnings
|
||||||
|
|
||||||
|
2011-10-10 Hyphen 2.8.3:
|
||||||
|
- fix NOHYPHEN
|
||||||
|
- fix unbalanced hyphenation of LibreOffice/OOo
|
||||||
|
- set default COMPOUNDHYPHENMIN=3 at hyphens and apostrophes
|
||||||
|
- fix VERBOSE in hyphen.c
|
||||||
|
- new ./example option: -n to print hyphenation vector
|
||||||
|
|
||||||
|
2011-10-07 Hyphen 2.8.2:
|
||||||
|
- fix for explicite COMPOUNDHYPHENMIN values
|
||||||
|
|
||||||
|
2011-10-06 Hyphen 2.8.1:
|
||||||
|
- force minimal lefthyphenmin and righthyphenmin values of the dictionary
|
||||||
|
(eg. righthyphenmin=3 of English dictionaries in LibreOffice/OOo,
|
||||||
|
also the original TeX hyphenation patterns are correct only with this
|
||||||
|
righthyphenmin value).
|
||||||
|
|
||||||
|
2011-10-04 Hyphen 2.8:
|
||||||
|
- Ignore leading and ending numbers (eg. manual/field based indexes
|
||||||
|
in LibreOffice/OOo)
|
||||||
|
|
||||||
|
- Fix LibreOffice/OpenOffice.org hyphenation errors at apostrophes and
|
||||||
|
hyphens, n-dashes with default NOHYPHEN separators.
|
||||||
|
Eg. *o'c=lock -> o'clock.
|
||||||
|
|
||||||
|
2010-12-01 Hyphen 2.7.1 bug fix release
|
||||||
|
|
||||||
|
2010-11-27 Hyphen 2.7 release:
|
||||||
|
- The new hyphenation problem of OpenOffice.org 3.2, related to its
|
||||||
|
modified word breaking of words with hyphen characters, can be fixed
|
||||||
|
with the new NOHYPHEN feature. Also it's possible to solve the similar old
|
||||||
|
problem with apostrophes. More information: README.compound.
|
||||||
|
|
||||||
|
- improved English dictionaries
|
||||||
|
|
||||||
|
2010-08-10 Hyphen 2.6 release:
|
||||||
|
- maintainance release, fix all warnings, tidy up
|
||||||
|
make check with VALGRIND=memcheck, etc.
|
||||||
|
|
||||||
|
2010-02-23 Hyphen 2.5 release:
|
||||||
|
- add Unicode ligature support for correct hyphenmin calculation
|
||||||
|
(ff, fi, fl, St, st are 1-character, ffi and ffl are 2-character length for
|
||||||
|
hyphenation)
|
||||||
|
- fix lefthyphenmin calculation for UTF-8 encoded input
|
||||||
|
|
||||||
|
- en_US hyphenation dictionary:
|
||||||
|
- add OpenOffice.org patch to fix apostrophe handling
|
||||||
|
- add correct hyphenation for words with Unicode f-ligatures
|
||||||
|
(NOTE: hyphenation within ligatures is not supported yet
|
||||||
|
because of an implementation problem of OpenOffice.org,
|
||||||
|
see OOo issue 71608.)
|
||||||
|
|
||||||
|
- small patches from OpenOffice.org
|
||||||
|
|
||||||
|
2008-05-01 Hyphen 2.4 release:
|
||||||
|
- compound word hyphenation support by recursive pattern matching
|
||||||
|
based on two hyphenation pattern sets, see README.compound.
|
||||||
|
Especially useful for languages with arbitrary number of compounds (Danish,
|
||||||
|
Dutch, Finnish, German, Hungarian, Icelandic, Norwegian, Swedish etc.).
|
||||||
|
|
||||||
|
- new dictionary parameters (minimal character numbers for hyph. distances):
|
||||||
|
LEFTHYPHENMIN: minimal hyphenation distance from the left end of the word
|
||||||
|
RIGHTHYPHENMIN: minimal hyphenation distance from the right end of the word
|
||||||
|
COMPOUNDLEFTHYPHENMIN: min. hyph. dist. from the left compound word boundary
|
||||||
|
COMPOUNDRIGHTHYPHENMIN: min. hyph. dist. from the right comp. word boundary
|
||||||
|
|
||||||
|
- new API function: hnj_hyphen_hyphenate3() (like hyphenate2(), but
|
||||||
|
with hyphenmin options)
|
||||||
|
|
||||||
|
en_US hyphenation patterns:
|
||||||
|
|
||||||
|
- extended hyph_en_US.dic with TugBoat hyphenation log (fix thousand
|
||||||
|
incompletely or badly hyphenated words, for example acad-e-my, acro-nym,
|
||||||
|
acryl-amide, adren-a-line, aero-space, am-phet-a-mine, anom-aly etc.)
|
||||||
|
|
||||||
|
- fixed hyph_en_US.dic: set the right default hyphenation distance of
|
||||||
|
the original TeX hyphenation patterns:
|
||||||
|
LEFTHYPHENMIN 2
|
||||||
|
RIGHTHYPHENMIN 3 (not 2!)
|
||||||
|
It is not only a typographical issue. It seems, TeX hyphenation
|
||||||
|
patterns are right only with these settings, for example,
|
||||||
|
the bad "anoma-ly" is restricted in TeX only by the default
|
||||||
|
\righthyphenmin=3 (but not restricted in OpenOffice.org, until now).
|
||||||
|
|
||||||
|
- documentation (README_hyph_en_US.dic)
|
||||||
|
|
||||||
|
- fixes for automake configuration, compiling and checking, see ChangeLog
|
||||||
|
|
||||||
|
2008-02-19: Hyphen 2.3.1 release:
|
||||||
|
- fix obsolete API function hnj_hyphen_hyphenate()
|
|
@ -0,0 +1,127 @@
|
||||||
|
Hyphen - hyphenation library to use converted TeX hyphenation patterns
|
||||||
|
|
||||||
|
(C) 1998 Raph Levien
|
||||||
|
(C) 2001 ALTLinux, Moscow
|
||||||
|
(C) 2006, 2007, 2008, 2010, 2011 László Németh
|
||||||
|
|
||||||
|
This was part of libHnj library by Raph Levien.
|
||||||
|
|
||||||
|
Peter Novodvorsky from ALTLinux cut hyphenation part from libHnj
|
||||||
|
to use it in OpenOffice.org.
|
||||||
|
|
||||||
|
Compound word and non-standard hyphenation support by László Németh.
|
||||||
|
|
||||||
|
License is the original LibHnj license:
|
||||||
|
LibHnj is dual licensed under LGPL and MPL (see also README.libhnj).
|
||||||
|
|
||||||
|
Because LGPL allows GPL relicensing, COPYING contains now
|
||||||
|
LGPL/GPL/MPL tri-license for explicit Mozilla source compatibility.
|
||||||
|
|
||||||
|
Original Libhnj source with OOo's patches are managed by Rene Engelhard
|
||||||
|
and Chris Halls at Debian:
|
||||||
|
|
||||||
|
http://packages.debian.org/stable/libdevel/libhnj-dev
|
||||||
|
and http://packages.debian.org/unstable/source/libhnj
|
||||||
|
|
||||||
|
|
||||||
|
OTHER FILES
|
||||||
|
|
||||||
|
This distribution is the source of the en_US hyphenation patterns
|
||||||
|
"hyph_en_US.dic", too. See README_hyph_en_US.txt.
|
||||||
|
|
||||||
|
Source files of hyph_en_US.dic in the distribution:
|
||||||
|
|
||||||
|
hyphen.tex (en_US hyphenation patterns from plain TeX)
|
||||||
|
|
||||||
|
Source: http://tug.ctan.org/text-archive/macros/plain/base/hyphen.tex
|
||||||
|
|
||||||
|
tbhyphext.tex: hyphenation exception log from TugBoat archive
|
||||||
|
|
||||||
|
Source of the hyphenation exception list:
|
||||||
|
http://www.ctan.org/tex-archive/info/digests/tugboat/tb0hyf.tex
|
||||||
|
|
||||||
|
Generated with the hyphenex script
|
||||||
|
(http://www.ctan.org/tex-archive/info/digests/tugboat/hyphenex.sh)
|
||||||
|
|
||||||
|
sh hyphenex.sh <tb0hyf.tex >tbhyphext.tex
|
||||||
|
|
||||||
|
|
||||||
|
INSTALLATION
|
||||||
|
|
||||||
|
./configure
|
||||||
|
make
|
||||||
|
make install
|
||||||
|
|
||||||
|
UNIT TESTS (WITH VALGRIND DEBUGGER)
|
||||||
|
|
||||||
|
make check
|
||||||
|
VALGRIND=memcheck make check
|
||||||
|
|
||||||
|
USAGE
|
||||||
|
|
||||||
|
./example hyph_en_US.dic mywords.txt
|
||||||
|
|
||||||
|
or (under Linux)
|
||||||
|
|
||||||
|
echo example | ./example hyph_en_US.dic /dev/stdin
|
||||||
|
|
||||||
|
NOTE: In the case of Unicode encoded input, convert your words
|
||||||
|
to lowercase before hyphenation (under UTF-8 console environment):
|
||||||
|
|
||||||
|
cat mywords.txt | awk '{print tolower($0)}' >mywordslow.txt
|
||||||
|
|
||||||
|
DEVELOPMENT
|
||||||
|
|
||||||
|
See README.hyphen for hyphenation algorithm, README.nonstandard
|
||||||
|
and doc/tb87nemeth.pdf for non-standard hyphenation,
|
||||||
|
README.compound for compound word hyphenation, and tests/*.
|
||||||
|
|
||||||
|
Description of the dictionary format:
|
||||||
|
|
||||||
|
First line contains the character encoding (ISO8859-x, UTF-8).
|
||||||
|
|
||||||
|
Possible options in the following lines:
|
||||||
|
|
||||||
|
LEFTHYPHENMIN num minimal hyphenation distance from the left word end
|
||||||
|
RIGHTHYPHENMIN num minimal hyphation distance from the right word end
|
||||||
|
COMPOUNDLEFTHYPHENMIN num min. hyph. dist. from the left compound word boundary
|
||||||
|
COMPOUNDRIGHTHYPHENMIN num min. hyph. dist. from the right comp. word boundary
|
||||||
|
|
||||||
|
hyphenation patterns see README.* files
|
||||||
|
|
||||||
|
NEXTWORD separate the two compound sets (see README.compound)
|
||||||
|
|
||||||
|
Default values:
|
||||||
|
Without explicite declarations, hyphenmin fields of dict struct
|
||||||
|
are zeroes, but in this case the lefthyphenmin and righthyphenmin
|
||||||
|
will be the default 2 under the hyphenation (for backward compatibility).
|
||||||
|
|
||||||
|
Comments
|
||||||
|
|
||||||
|
Use percent sign at the beginning of the lines to add comments to your
|
||||||
|
hpyhenation patterns (after the character encoding in the first line):
|
||||||
|
|
||||||
|
% comment
|
||||||
|
|
||||||
|
*****************************************************************************
|
||||||
|
* Warning! Correct working of Libhnj *needs* prepared hyphenation patterns. *
|
||||||
|
|
||||||
|
For example, generating hyph_en_US.dic from "hyphen.us" TeX patterns:
|
||||||
|
|
||||||
|
perl substrings.pl hyphen.us hyph_en_US.dic ISO8859-1
|
||||||
|
|
||||||
|
or with default LEFTHYPHENMIN and RIGHTHYPHENMIN values:
|
||||||
|
|
||||||
|
perl substrings.pl hyphen.us hyph_en_US.dic ISO8859-1 2 3
|
||||||
|
perl substrings.pl hyphen.gb hyph_en_GB.dic ISO8859-1 3 3
|
||||||
|
****************************************************************************
|
||||||
|
|
||||||
|
OTHERS
|
||||||
|
|
||||||
|
Java hyphenation: Peter B. West (Folio project) implements a hyphenator with
|
||||||
|
non standard hyphenation facilities based on extended Libhnj. The HyFo module
|
||||||
|
is released in binary form as jar files and in source form as zip files.
|
||||||
|
See http://sourceforge.net/project/showfiles.php?group_id=119136
|
||||||
|
|
||||||
|
László Németh
|
||||||
|
<nemeth (at) numbertext (dot) org>
|
|
@ -0,0 +1,87 @@
|
||||||
|
New option of Libhyphen 2.7: NOHYPHEN
|
||||||
|
|
||||||
|
Hyphen, apostrophe and other characters may be word boundary characters,
|
||||||
|
but they don't need (extra) hyphenation. With NOHYPHEN option
|
||||||
|
it's possible to hyphenate the words parts correctly.
|
||||||
|
|
||||||
|
Example:
|
||||||
|
|
||||||
|
ISO8859-1
|
||||||
|
NOHYPHEN -,'
|
||||||
|
1-1
|
||||||
|
1'1
|
||||||
|
NEXTLEVEL
|
||||||
|
|
||||||
|
Description:
|
||||||
|
|
||||||
|
1-1 and 1'1 declare hyphen and apostrophe as word boundary characters
|
||||||
|
and NOHYPHEN with the comma separated character (or character sequence)
|
||||||
|
list forbid the (extra) hyphens at the hyphen and apostrophe characters.
|
||||||
|
|
||||||
|
Implicite NOHYPHEN declaration
|
||||||
|
|
||||||
|
Without explicite NEXTLEVEL declaration, Hyphen 2.8 uses the
|
||||||
|
previous settings, plus in UTF-8 encoding, endash (U+2013) and
|
||||||
|
typographical apostrophe (U+2019) are NOHYPHEN characters, too.
|
||||||
|
|
||||||
|
It's possible to enlarge the hyphenation distance from these
|
||||||
|
NOHYPHEN characters by using COMPOUNDLEFTHYPHENMIN and
|
||||||
|
COMPOUNDRIGHTHYPHENMIN attributes.
|
||||||
|
|
||||||
|
Compound word hyphenation
|
||||||
|
|
||||||
|
Hyphen library supports better compound word hyphenation and special
|
||||||
|
rules of compound word hyphenation of German languages and other
|
||||||
|
languages with arbitrary number of compound words. The new options,
|
||||||
|
COMPOUNDLEFTHYPHENMIN and COMPOUNDRIGHTHYPHENMIN help to set the right
|
||||||
|
style for the hyphenation of compound words.
|
||||||
|
|
||||||
|
Algorithm
|
||||||
|
|
||||||
|
The algorithm is an extension of the original pattern based hyphenation
|
||||||
|
algorithm. It uses two hyphenation pattern sets, defined in the same
|
||||||
|
pattern file and separated by the NEXTLEVEL keyword. First pattern
|
||||||
|
set is for hyphenation only at compound word boundaries, the second one
|
||||||
|
is for hyphenation within words or word parts.
|
||||||
|
|
||||||
|
Recursive compound level hyphenation
|
||||||
|
|
||||||
|
The algorithm is recursive: every word parts of a successful
|
||||||
|
first (compound) level hyphenation will be rehyphenated
|
||||||
|
by the same (first) pattern set.
|
||||||
|
|
||||||
|
Finally, when first level hyphenation is not possible, Hyphen uses
|
||||||
|
the second level hyphenation for the word or the word parts.
|
||||||
|
|
||||||
|
Word endings and word parts
|
||||||
|
|
||||||
|
Patterns for word endings (patterns with ellipses) match the
|
||||||
|
word parts, too.
|
||||||
|
|
||||||
|
Options
|
||||||
|
|
||||||
|
COMPOUNDLEFTHYPHENMIN: min. hyph. dist. from the left compound word boundary
|
||||||
|
COMPOUNDRIGHTHYPHENMIN: min. hyph. dist. from the right comp. word boundary
|
||||||
|
NEXTLEVEL: sign second level hyphenation patterns
|
||||||
|
|
||||||
|
Default hyphenmin values
|
||||||
|
|
||||||
|
Default values of COMPOUNDLEFTHYPHENMIN and COMPOUNDRIGHTHYPHENMIN are 0,
|
||||||
|
and 0 under the hyphenation, too. ("0" values of
|
||||||
|
LEFTHYPHENMIN and RIGHTHYPHENMIN mean the default "2" under the hyphenation.)
|
||||||
|
|
||||||
|
Examples
|
||||||
|
|
||||||
|
See tests/compound* test files.
|
||||||
|
|
||||||
|
Preparation of hyphenation patterns
|
||||||
|
|
||||||
|
It hasn't been special pattern generator tool for compound hyphenation
|
||||||
|
patterns, yet. It is possible to use PATGEN to generate both of
|
||||||
|
pattern sets, concatenate it manually and set the requested HYPHENMIN values.
|
||||||
|
(But don't forget the preprocessing steps by substrings.pl before
|
||||||
|
concatenation.) One of the disadvantage of this method, that PATGEN
|
||||||
|
doesn't know recursive compound hyphenation of Hyphen.
|
||||||
|
|
||||||
|
László Németh
|
||||||
|
<nemeth (at) openoffice.org>
|
|
@ -0,0 +1,108 @@
|
||||||
|
Brief explanation of the hyphenation algorithm herein.[1]
|
||||||
|
|
||||||
|
Raph Levien <raph@acm.org>
|
||||||
|
4 Aug 1998
|
||||||
|
|
||||||
|
The hyphenation algorithm is basically the same as Knuth's TeX
|
||||||
|
algorithm. However, the implementation is quite a bit faster.
|
||||||
|
|
||||||
|
The hyphenation files from TeX can almost be used directly. There
|
||||||
|
is a preprocessing step, however. If you don't do the preprocessing
|
||||||
|
step, you'll get bad hyphenations (i.e. a silent failure).
|
||||||
|
|
||||||
|
Start with a file such as hyphen.us. This is the TeX ushyph1.tex
|
||||||
|
file, with the exception dictionary encoded using the same rules as
|
||||||
|
the main portion of the file. Any line beginning with % is a comment.
|
||||||
|
Each other line should contain exactly one rule.
|
||||||
|
|
||||||
|
Then, do the preprocessing - "perl substrings.pl hyphen.us". The
|
||||||
|
resulting file is hyphen.mashed. It's in Perl, and it's fairly slow
|
||||||
|
(it uses brute force algorithms; about 17 seconds on a P100), but it
|
||||||
|
could probably be redone in C with clever algorithms. This would be
|
||||||
|
valuable, for example, if it was handle user-supplied exception
|
||||||
|
dictionaries by integrating them into the rule table.[2]
|
||||||
|
|
||||||
|
Once the rules are preprocessed, loading them is quite quick -
|
||||||
|
about 200ms on a P100. It then hyphenates at about 40,000 words per
|
||||||
|
second on a P100. I haven't benchmarked it against other
|
||||||
|
implementations (both TeX and groff contain essentially the same
|
||||||
|
algorithm), but expect that it runs quite a bit faster than any of
|
||||||
|
them.
|
||||||
|
|
||||||
|
Knuth's algorithm
|
||||||
|
|
||||||
|
This section contains a brief explanation of Knuth's algorithm, in
|
||||||
|
case you missed it from the TeX books. We'll use the semi-word
|
||||||
|
"example" as our running example.
|
||||||
|
|
||||||
|
Since the beginning and end of a word are special, the algorithm is
|
||||||
|
actually run over the prepared word (prep_word in the source)
|
||||||
|
".example.". Knuths algorithm basically just does pattern matches from
|
||||||
|
the rule set, then applies the matches. The patterns in this case that
|
||||||
|
match are "xa", "xam", "mp", and "pl". These are actually stored as
|
||||||
|
"x1a", "xam3", "4m1p", and "1p2l2". Whenever numbers appear between
|
||||||
|
the letters, they are added in. If two (or more) patterns have numbers
|
||||||
|
in the same place, the highest number wins. Here's the example:
|
||||||
|
|
||||||
|
. e x a m p l e .
|
||||||
|
x1a
|
||||||
|
x a m3
|
||||||
|
4m1p
|
||||||
|
1p2l2
|
||||||
|
-----------------
|
||||||
|
. e x1a4m3p2l2e .
|
||||||
|
|
||||||
|
Finally, hyphens are placed wherever odd numbers appear. They are,
|
||||||
|
however, suppressed after the first letter and before the last letter
|
||||||
|
of the word (TeX actually suppresses them before the next-to-last, as
|
||||||
|
well). So, it's "ex-am-ple", which is correct.
|
||||||
|
|
||||||
|
Knuth uses a trie to implement this. I.e. he stores each rule in a
|
||||||
|
trie structure. For each position in the word, he searches the trie,
|
||||||
|
searching for a match. Most patterns are short, so efficiency should
|
||||||
|
be quite good.
|
||||||
|
|
||||||
|
Theory of the algorithm
|
||||||
|
|
||||||
|
The algorithm works as a slightly modified finite state machine.
|
||||||
|
There are two kinds of transitions: those that consume one letter of
|
||||||
|
input (which work just like your regular finite state machine), and
|
||||||
|
"fallback" transitions, which don't consume any input. If no
|
||||||
|
transition matching the next letter is found, the fallback is used.
|
||||||
|
One way of looking at this is a form of compression of the transition
|
||||||
|
tables - i.e. it behaves the same as a completely vanilla state
|
||||||
|
machine in which the actual transition table of a node is made up of
|
||||||
|
the union of transition tables of the node itself, plus its fallbacks.
|
||||||
|
|
||||||
|
Each state is represented by a string. Thus, if the current state
|
||||||
|
is "am" and the next letter is "p", then the next state is "amp".
|
||||||
|
Fallback transitions go to states which chop off one or (sometimes)
|
||||||
|
more letters from the beginning. For example, if none of the
|
||||||
|
transitions from "amp" match the next letter, then it will fall back
|
||||||
|
to "mp". Similarly, if none of the transitions from "mp" match the
|
||||||
|
next letter, it will fall back to "m".
|
||||||
|
|
||||||
|
Each state is also associated with a (possibly null) "match"
|
||||||
|
string. This represents the union of all patterns which are
|
||||||
|
right-justified substrings of the match string. I.e. the pattern "mp"
|
||||||
|
is a right-justified substring of the state "amp", so it's numbers get
|
||||||
|
added in. The actual calculation of this union is done by the
|
||||||
|
Perl preprocessing script, but could probably be done in C just about
|
||||||
|
as easily.
|
||||||
|
|
||||||
|
Because each state transition either consumes one input character
|
||||||
|
or shortens the state string by one character, the total number of
|
||||||
|
state transitions is linear in the length of the word.
|
||||||
|
|
||||||
|
[1] Documentations:
|
||||||
|
|
||||||
|
Franklin M. Liang: Word Hy-phen-a-tion by Com-put-er.
|
||||||
|
Stanford University, 1983. http://www.tug.org/docs/liang.
|
||||||
|
|
||||||
|
László Németh: Automatic non-standard hyphenation in OpenOffice.org,
|
||||||
|
TUGboat (27), 2006. No. 2., http://hunspell.sourceforge.net/tb87nemeth.pdf
|
||||||
|
|
||||||
|
[2] There is the C version of pattern converter "substrings.c"
|
||||||
|
in the distribution written by Nanning Buitenhuis. Unfortunatelly,
|
||||||
|
this version hasn't handled the non standard extension of the
|
||||||
|
algorithm, yet.
|
|
@ -0,0 +1,122 @@
|
||||||
|
Non-standard hyphenation
|
||||||
|
------------------------
|
||||||
|
|
||||||
|
Some languages use non-standard hyphenation; `discretionary'
|
||||||
|
character changes at hyphenation points. For example,
|
||||||
|
Catalan: paral·lel -> paral-lel,
|
||||||
|
Dutch: omaatje -> oma-tje,
|
||||||
|
German (before the new orthography): Schiffahrt -> Schiff-fahrt,
|
||||||
|
Hungarian: asszonnyal -> asz-szony-nyal (multiple occurance!)
|
||||||
|
Swedish: tillata -> till-lata.
|
||||||
|
|
||||||
|
Using this extended library, you can define
|
||||||
|
non-standard hyphenation patterns. For example:
|
||||||
|
|
||||||
|
l·1l/l=l
|
||||||
|
a1atje./a=t,1,3
|
||||||
|
.schif1fahrt/ff=f,5,2
|
||||||
|
.as3szon/sz=sz,2,3
|
||||||
|
n1nyal./ny=ny,1,3
|
||||||
|
.til1lata./ll=l,3,2
|
||||||
|
|
||||||
|
or with narrow boundaries:
|
||||||
|
|
||||||
|
l·1l/l=,1,2
|
||||||
|
a1atje./a=,1,1
|
||||||
|
.schif1fahrt/ff=,5,1
|
||||||
|
.as3szon/sz=,2,1
|
||||||
|
n1nyal./ny=,1,1
|
||||||
|
.til1lata./ll=,3,1
|
||||||
|
|
||||||
|
Note: Libhnj uses modified patterns by preparing substrings.pl.
|
||||||
|
Unfortunatelly, now the conversion step can generate bad non-standard
|
||||||
|
patterns (non-standard -> standard pattern conversion), so using
|
||||||
|
narrow boundaries may be better for recent Libhnj. For example,
|
||||||
|
substrings.pl generates a few bad patterns for Hungarian hyphenation
|
||||||
|
patterns resulting bad non-standard hyphenation in a few cases. Using narrow
|
||||||
|
boundaries solves this problem. Java HyFo module can check this problem.
|
||||||
|
|
||||||
|
Syntax of the non-standard hyphenation patterns
|
||||||
|
------------------------------------------------
|
||||||
|
|
||||||
|
pat1tern/change[,start,cut]
|
||||||
|
|
||||||
|
If this pattern matches the word, and this pattern win (see README.hyphen)
|
||||||
|
in the change region of the pattern, then pattern[start, start + cut - 1]
|
||||||
|
substring will be replaced with the "change".
|
||||||
|
|
||||||
|
For example, a German ff -> ff-f hyphenation:
|
||||||
|
|
||||||
|
f1f/ff=f
|
||||||
|
|
||||||
|
or with expansion
|
||||||
|
|
||||||
|
f1f/ff=f,1,2
|
||||||
|
|
||||||
|
will change every "ff" with "ff=f" at hyphenation.
|
||||||
|
|
||||||
|
A more real example:
|
||||||
|
|
||||||
|
% simple ff -> f-f hyphenation
|
||||||
|
f1f
|
||||||
|
% Schiffahrt -> Schiff-fahrt hyphenation
|
||||||
|
%
|
||||||
|
schif3fahrt/ff=f,5,2
|
||||||
|
|
||||||
|
Specification
|
||||||
|
|
||||||
|
- Pattern: matching patterns of the original Liang's algorithm
|
||||||
|
- patterns must contain only one hyphenation point at change region
|
||||||
|
signed with an one-digit odd number (1, 3, 5, 7 or 9).
|
||||||
|
These point may be at subregion boundaries: schif3fahrt/ff=,5,1
|
||||||
|
- only the greater value guarantees the win (don't mix non-standard and
|
||||||
|
non-standard patterns with the same value, for example
|
||||||
|
instead of f3f and schif3fahrt/ff=f,5,2 use f3f and schif5fahrt/ff=f,5,2)
|
||||||
|
|
||||||
|
- Change: new characters.
|
||||||
|
Arbitrary character sequence. Equal sign (=) signs hyphenation points
|
||||||
|
for OpenOffice.org (like in the example). (In a possible German LaTeX
|
||||||
|
preprocessor, ff could be replaced with "ff, for a Hungarian one, ssz
|
||||||
|
with `ssz, according to the German and Hungarian Babel settings.)
|
||||||
|
|
||||||
|
- Start: starting position of the change region.
|
||||||
|
- begins with 1 (not 0): schif3fahrt/ff=f,5,2
|
||||||
|
- start dot doesn't matter: .schif3fahrt/ff=f,5,2
|
||||||
|
- numbers don't matter: .s2c2h2i2f3f2ahrt/ff=f,5,2
|
||||||
|
- In UTF-8 encoding, use Unicode character positions: össze/sz=sz,2,3
|
||||||
|
("össze" looks "össze" in an ISO 8859-1 8-bit editor).
|
||||||
|
|
||||||
|
- Cut: length of the removed character sequence in the original word.
|
||||||
|
- In UTF-8 encoding, use Unicode character length: paral·1lel/l=l,5,3
|
||||||
|
("paral·lel" looks "paral·1lel" in an ISO 8859-1 8-bit editor).
|
||||||
|
|
||||||
|
Dictionary developing
|
||||||
|
---------------------
|
||||||
|
|
||||||
|
There hasn't been extended PatGen pattern generator for non-standard
|
||||||
|
hyphenation patterns, yet.
|
||||||
|
|
||||||
|
Fortunatelly, non-standard hyphenation points are forbidden in the PatGen
|
||||||
|
generated hyphenation patterns, so with a little patch can be develop
|
||||||
|
non-standard hyphenation patterns also in this case.
|
||||||
|
|
||||||
|
Warning: If you use UTF-8 Unicode encoding in your patterns, call
|
||||||
|
substrings.pl with UTF-8 parameter to calculate right
|
||||||
|
character positions for non-standard hyphenation:
|
||||||
|
|
||||||
|
./substrings.pl input output UTF-8
|
||||||
|
|
||||||
|
Programming
|
||||||
|
-----------
|
||||||
|
|
||||||
|
Use hyphenate2() or hyphenate3() to handle non-standard hyphenation.
|
||||||
|
See hyphen.h for the documentation of the hyphenate*() functions.
|
||||||
|
See example.c for processing the output of the hyphenate*() functions.
|
||||||
|
|
||||||
|
Warning: change characters are lower cased in the source, so you may need
|
||||||
|
case conversion of the change characters based on input word case detection.
|
||||||
|
For example, see OpenOffice.org source
|
||||||
|
(lingucomponent/source/hyphenator/altlinuxhyph/hyphen/hyphenimp.cxx).
|
||||||
|
|
||||||
|
László Németh
|
||||||
|
<nemeth (at) openoffice.org>
|
|
@ -0,0 +1,53 @@
|
||||||
|
hyph_en_US.dic - American English hyphenation patterns for OpenOffice.org
|
||||||
|
|
||||||
|
version 2010-02-23
|
||||||
|
|
||||||
|
Changes
|
||||||
|
|
||||||
|
- set correct LEFTHYPHENMIN = 2, RIGHTHYPHENMIN = 3
|
||||||
|
- handle apostrophes (forbid *o'=clock etc.)
|
||||||
|
- set COMPOUNDLEFTHYPHENMIN, COMPOUNDRIGHTHYPHENMIN values
|
||||||
|
- UTF-8 encoding
|
||||||
|
- Unicode ligature support
|
||||||
|
|
||||||
|
License
|
||||||
|
|
||||||
|
BSD-style. Unlimited copying, redistribution and modification of this file
|
||||||
|
is permitted with this copyright and license information.
|
||||||
|
|
||||||
|
See original license in this file.
|
||||||
|
|
||||||
|
Conversion and modifications by László Németh (nemeth at OOo).
|
||||||
|
|
||||||
|
Based on the plain TeX hyphenation table
|
||||||
|
(http://tug.ctan.org/text-archive/macros/plain/base/hyphen.tex) and
|
||||||
|
the TugBoat hyphenation exceptions log in
|
||||||
|
http://www.ctan.org/tex-archive/info/digests/tugboat/tb0hyf.tex, processed
|
||||||
|
by the hyphenex.sh script (see in the same directory).
|
||||||
|
|
||||||
|
Originally developed and distributed with the Hyphen hyphenation library,
|
||||||
|
see http://hunspell.sourceforge.net/ for the source files and the conversion
|
||||||
|
scripts.
|
||||||
|
|
||||||
|
Licenses
|
||||||
|
|
||||||
|
hyphen.tex:
|
||||||
|
% The Plain TeX hyphenation tables [NOT TO BE CHANGED IN ANY WAY!]
|
||||||
|
% Unlimited copying and redistribution of this file are permitted as long
|
||||||
|
% as this file is not modified. Modifications are permitted, but only if
|
||||||
|
% the resulting file is not named hyphen.tex.
|
||||||
|
|
||||||
|
output of hyphenex.sh:
|
||||||
|
% Hyphenation exceptions for US English, based on hyphenation exception
|
||||||
|
% log articles in TUGboat.
|
||||||
|
%
|
||||||
|
% Copyright 2007 TeX Users Group.
|
||||||
|
% You may freely use, modify and/or distribute this file.
|
||||||
|
%
|
||||||
|
% This is an automatically generated file. Do not edit!
|
||||||
|
%
|
||||||
|
% Please contact the TUGboat editorial staff <tugboat@tug.org>
|
||||||
|
% for corrections and omissions.
|
||||||
|
|
||||||
|
hyph_en_US.txt:
|
||||||
|
See the previous licenses.
|
|
@ -0,0 +1,15 @@
|
||||||
|
Many thanks to the following contributors:
|
||||||
|
|
||||||
|
Nanning Buitenhuis
|
||||||
|
Rene Engelhard
|
||||||
|
Chris Halls
|
||||||
|
Raph Levien
|
||||||
|
Joan Montané
|
||||||
|
Daniel Naber
|
||||||
|
Caolan McNamara
|
||||||
|
Peter Novodvorsky
|
||||||
|
Peter B. West
|
||||||
|
|
||||||
|
and others.
|
||||||
|
|
||||||
|
László Németh
|
|
@ -0,0 +1,3 @@
|
||||||
|
* need a pattern generator for non-standard and compound hyphenation patterns
|
||||||
|
* add Unicode case conversion to the example
|
||||||
|
* make a txt and TeX prehyphenator
|
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,18 @@
|
||||||
|
created
|
||||||
|
uncreated
|
||||||
|
unnatural
|
||||||
|
unliked
|
||||||
|
conveyed
|
||||||
|
NASA
|
||||||
|
hibernate
|
||||||
|
pseudonym
|
||||||
|
tomorrow
|
||||||
|
seven
|
||||||
|
can't
|
||||||
|
doesn't
|
||||||
|
won't
|
||||||
|
universal
|
||||||
|
framework
|
||||||
|
fragrance
|
||||||
|
mischief
|
||||||
|
nonsense
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,10 @@
|
||||||
|
AC_INIT([hyphen],[2.8.8],[nemeth@numbertext.org])
|
||||||
|
AM_INIT_AUTOMAKE(hyphen,2.8.8)
|
||||||
|
AC_PROG_CC
|
||||||
|
AC_PROG_INSTALL
|
||||||
|
AC_PROG_LIBTOOL
|
||||||
|
|
||||||
|
AC_CONFIG_FILES([Makefile
|
||||||
|
doc/Makefile
|
||||||
|
tests/Makefile])
|
||||||
|
AC_OUTPUT
|
|
@ -0,0 +1,584 @@
|
||||||
|
#! /bin/sh
|
||||||
|
# depcomp - compile a program generating dependencies as side-effects
|
||||||
|
|
||||||
|
scriptversion=2006-10-15.18
|
||||||
|
|
||||||
|
# Copyright (C) 1999, 2000, 2003, 2004, 2005, 2006 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., 51 Franklin Street, Fifth Floor, Boston, MA
|
||||||
|
# 02110-1301, 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 $?
|
||||||
|
;;
|
||||||
|
-v | --v*)
|
||||||
|
echo "depcomp $scriptversion"
|
||||||
|
exit $?
|
||||||
|
;;
|
||||||
|
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.
|
||||||
|
## Unfortunately, FreeBSD c89 acceptance of flags depends upon
|
||||||
|
## the command line argument order; so add the flags where they
|
||||||
|
## appear in depend2.am. Note that the slowdown incurred here
|
||||||
|
## affects only configure: in makefiles, %FASTDEP% shortcuts this.
|
||||||
|
for arg
|
||||||
|
do
|
||||||
|
case $arg in
|
||||||
|
-c) set fnord "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" "$arg" ;;
|
||||||
|
*) set fnord "$@" "$arg" ;;
|
||||||
|
esac
|
||||||
|
shift # fnord
|
||||||
|
shift # $arg
|
||||||
|
done
|
||||||
|
"$@"
|
||||||
|
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"
|
||||||
|
;;
|
||||||
|
|
||||||
|
hp2)
|
||||||
|
# The "hp" stanza above does not work with aCC (C++) and HP's ia64
|
||||||
|
# compilers, which have integrated preprocessors. The correct option
|
||||||
|
# to use with these is +Maked; it writes dependencies to a file named
|
||||||
|
# 'foo.d', which lands next to the object file, wherever that
|
||||||
|
# happens to be.
|
||||||
|
# Much of this is similar to the tru64 case; see comments there.
|
||||||
|
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
|
||||||
|
tmpdepfile1=$dir$base.d
|
||||||
|
tmpdepfile2=$dir.libs/$base.d
|
||||||
|
"$@" -Wc,+Maked
|
||||||
|
else
|
||||||
|
tmpdepfile1=$dir$base.d
|
||||||
|
tmpdepfile2=$dir$base.d
|
||||||
|
"$@" +Maked
|
||||||
|
fi
|
||||||
|
stat=$?
|
||||||
|
if test $stat -eq 0; then :
|
||||||
|
else
|
||||||
|
rm -f "$tmpdepfile1" "$tmpdepfile2"
|
||||||
|
exit $stat
|
||||||
|
fi
|
||||||
|
|
||||||
|
for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2"
|
||||||
|
do
|
||||||
|
test -f "$tmpdepfile" && break
|
||||||
|
done
|
||||||
|
if test -f "$tmpdepfile"; then
|
||||||
|
sed -e "s,^.*\.[a-z]*:,$object:," "$tmpdepfile" > "$depfile"
|
||||||
|
# Add `dependent.h:' lines.
|
||||||
|
sed -ne '2,${; s/^ *//; s/ \\*$//; s/$/:/; p;}' "$tmpdepfile" >> "$depfile"
|
||||||
|
else
|
||||||
|
echo "#dummy" > "$depfile"
|
||||||
|
fi
|
||||||
|
rm -f "$tmpdepfile" "$tmpdepfile2"
|
||||||
|
;;
|
||||||
|
|
||||||
|
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
|
||||||
|
# With Tru64 cc, shared objects can also be used to make a
|
||||||
|
# static library. This mechanism is used in libtool 1.4 series to
|
||||||
|
# handle both shared and static libraries in a single compilation.
|
||||||
|
# With libtool 1.4, dependencies were output in $dir.libs/$base.lo.d.
|
||||||
|
#
|
||||||
|
# With libtool 1.5 this exception was removed, and libtool now
|
||||||
|
# generates 2 separate objects for the 2 libraries. These two
|
||||||
|
# compilations output dependencies in $dir.libs/$base.o.d and
|
||||||
|
# in $dir$base.o.d. We have to check for both files, because
|
||||||
|
# one of the two compilations can be disabled. We should prefer
|
||||||
|
# $dir$base.o.d over $dir.libs/$base.o.d because the latter is
|
||||||
|
# automatically cleaned when .libs/ is deleted, while ignoring
|
||||||
|
# the former would cause a distcleancheck panic.
|
||||||
|
tmpdepfile1=$dir.libs/$base.lo.d # libtool 1.4
|
||||||
|
tmpdepfile2=$dir$base.o.d # libtool 1.5
|
||||||
|
tmpdepfile3=$dir.libs/$base.o.d # libtool 1.5
|
||||||
|
tmpdepfile4=$dir.libs/$base.d # Compaq CCC V6.2-504
|
||||||
|
"$@" -Wc,-MD
|
||||||
|
else
|
||||||
|
tmpdepfile1=$dir$base.o.d
|
||||||
|
tmpdepfile2=$dir$base.d
|
||||||
|
tmpdepfile3=$dir$base.d
|
||||||
|
tmpdepfile4=$dir$base.d
|
||||||
|
"$@" -MD
|
||||||
|
fi
|
||||||
|
|
||||||
|
stat=$?
|
||||||
|
if test $stat -eq 0; then :
|
||||||
|
else
|
||||||
|
rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4"
|
||||||
|
exit $stat
|
||||||
|
fi
|
||||||
|
|
||||||
|
for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4"
|
||||||
|
do
|
||||||
|
test -f "$tmpdepfile" && break
|
||||||
|
done
|
||||||
|
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 -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \
|
||||||
|
-e '/^#line [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:
|
|
@ -0,0 +1 @@
|
||||||
|
EXTRA_DIST = tb87nemeth.pdf
|
|
@ -0,0 +1,354 @@
|
||||||
|
# Makefile.in generated by automake 1.11.3 from Makefile.am.
|
||||||
|
# @configure_input@
|
||||||
|
|
||||||
|
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
|
||||||
|
# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 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@
|
||||||
|
VPATH = @srcdir@
|
||||||
|
pkgdatadir = $(datadir)/@PACKAGE@
|
||||||
|
pkgincludedir = $(includedir)/@PACKAGE@
|
||||||
|
pkglibdir = $(libdir)/@PACKAGE@
|
||||||
|
pkglibexecdir = $(libexecdir)/@PACKAGE@
|
||||||
|
am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
|
||||||
|
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 = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
|
||||||
|
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
|
||||||
|
am__aclocal_m4_deps = $(top_srcdir)/configure.in
|
||||||
|
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
|
||||||
|
$(ACLOCAL_M4)
|
||||||
|
mkinstalldirs = $(install_sh) -d
|
||||||
|
CONFIG_CLEAN_FILES =
|
||||||
|
CONFIG_CLEAN_VPATH_FILES =
|
||||||
|
SOURCES =
|
||||||
|
DIST_SOURCES =
|
||||||
|
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
|
||||||
|
ACLOCAL = @ACLOCAL@
|
||||||
|
AMTAR = @AMTAR@
|
||||||
|
AR = @AR@
|
||||||
|
AUTOCONF = @AUTOCONF@
|
||||||
|
AUTOHEADER = @AUTOHEADER@
|
||||||
|
AUTOMAKE = @AUTOMAKE@
|
||||||
|
AWK = @AWK@
|
||||||
|
CC = @CC@
|
||||||
|
CCDEPMODE = @CCDEPMODE@
|
||||||
|
CFLAGS = @CFLAGS@
|
||||||
|
CPP = @CPP@
|
||||||
|
CPPFLAGS = @CPPFLAGS@
|
||||||
|
CYGPATH_W = @CYGPATH_W@
|
||||||
|
DEFS = @DEFS@
|
||||||
|
DEPDIR = @DEPDIR@
|
||||||
|
DLLTOOL = @DLLTOOL@
|
||||||
|
DSYMUTIL = @DSYMUTIL@
|
||||||
|
DUMPBIN = @DUMPBIN@
|
||||||
|
ECHO_C = @ECHO_C@
|
||||||
|
ECHO_N = @ECHO_N@
|
||||||
|
ECHO_T = @ECHO_T@
|
||||||
|
EGREP = @EGREP@
|
||||||
|
EXEEXT = @EXEEXT@
|
||||||
|
FGREP = @FGREP@
|
||||||
|
GREP = @GREP@
|
||||||
|
INSTALL = @INSTALL@
|
||||||
|
INSTALL_DATA = @INSTALL_DATA@
|
||||||
|
INSTALL_PROGRAM = @INSTALL_PROGRAM@
|
||||||
|
INSTALL_SCRIPT = @INSTALL_SCRIPT@
|
||||||
|
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
|
||||||
|
LD = @LD@
|
||||||
|
LDFLAGS = @LDFLAGS@
|
||||||
|
LIBOBJS = @LIBOBJS@
|
||||||
|
LIBS = @LIBS@
|
||||||
|
LIBTOOL = @LIBTOOL@
|
||||||
|
LIPO = @LIPO@
|
||||||
|
LN_S = @LN_S@
|
||||||
|
LTLIBOBJS = @LTLIBOBJS@
|
||||||
|
MAKEINFO = @MAKEINFO@
|
||||||
|
MANIFEST_TOOL = @MANIFEST_TOOL@
|
||||||
|
MKDIR_P = @MKDIR_P@
|
||||||
|
NM = @NM@
|
||||||
|
NMEDIT = @NMEDIT@
|
||||||
|
OBJDUMP = @OBJDUMP@
|
||||||
|
OBJEXT = @OBJEXT@
|
||||||
|
OTOOL = @OTOOL@
|
||||||
|
OTOOL64 = @OTOOL64@
|
||||||
|
PACKAGE = @PACKAGE@
|
||||||
|
PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
|
||||||
|
PACKAGE_NAME = @PACKAGE_NAME@
|
||||||
|
PACKAGE_STRING = @PACKAGE_STRING@
|
||||||
|
PACKAGE_TARNAME = @PACKAGE_TARNAME@
|
||||||
|
PACKAGE_URL = @PACKAGE_URL@
|
||||||
|
PACKAGE_VERSION = @PACKAGE_VERSION@
|
||||||
|
PATH_SEPARATOR = @PATH_SEPARATOR@
|
||||||
|
RANLIB = @RANLIB@
|
||||||
|
SED = @SED@
|
||||||
|
SET_MAKE = @SET_MAKE@
|
||||||
|
SHELL = @SHELL@
|
||||||
|
STRIP = @STRIP@
|
||||||
|
VERSION = @VERSION@
|
||||||
|
abs_builddir = @abs_builddir@
|
||||||
|
abs_srcdir = @abs_srcdir@
|
||||||
|
abs_top_builddir = @abs_top_builddir@
|
||||||
|
abs_top_srcdir = @abs_top_srcdir@
|
||||||
|
ac_ct_AR = @ac_ct_AR@
|
||||||
|
ac_ct_CC = @ac_ct_CC@
|
||||||
|
ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
|
||||||
|
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@
|
||||||
|
builddir = @builddir@
|
||||||
|
datadir = @datadir@
|
||||||
|
datarootdir = @datarootdir@
|
||||||
|
docdir = @docdir@
|
||||||
|
dvidir = @dvidir@
|
||||||
|
exec_prefix = @exec_prefix@
|
||||||
|
host = @host@
|
||||||
|
host_alias = @host_alias@
|
||||||
|
host_cpu = @host_cpu@
|
||||||
|
host_os = @host_os@
|
||||||
|
host_vendor = @host_vendor@
|
||||||
|
htmldir = @htmldir@
|
||||||
|
includedir = @includedir@
|
||||||
|
infodir = @infodir@
|
||||||
|
install_sh = @install_sh@
|
||||||
|
libdir = @libdir@
|
||||||
|
libexecdir = @libexecdir@
|
||||||
|
localedir = @localedir@
|
||||||
|
localstatedir = @localstatedir@
|
||||||
|
mandir = @mandir@
|
||||||
|
mkdir_p = @mkdir_p@
|
||||||
|
oldincludedir = @oldincludedir@
|
||||||
|
pdfdir = @pdfdir@
|
||||||
|
prefix = @prefix@
|
||||||
|
program_transform_name = @program_transform_name@
|
||||||
|
psdir = @psdir@
|
||||||
|
sbindir = @sbindir@
|
||||||
|
sharedstatedir = @sharedstatedir@
|
||||||
|
srcdir = @srcdir@
|
||||||
|
sysconfdir = @sysconfdir@
|
||||||
|
target_alias = @target_alias@
|
||||||
|
top_build_prefix = @top_build_prefix@
|
||||||
|
top_builddir = @top_builddir@
|
||||||
|
top_srcdir = @top_srcdir@
|
||||||
|
EXTRA_DIST = tb87nemeth.pdf
|
||||||
|
all: all-am
|
||||||
|
|
||||||
|
.SUFFIXES:
|
||||||
|
$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
|
||||||
|
@for dep in $?; do \
|
||||||
|
case '$(am__configure_deps)' in \
|
||||||
|
*$$dep*) \
|
||||||
|
( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
|
||||||
|
&& { if test -f $@; then exit 0; else break; fi; }; \
|
||||||
|
exit 1;; \
|
||||||
|
esac; \
|
||||||
|
done; \
|
||||||
|
echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu doc/Makefile'; \
|
||||||
|
$(am__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: $(am__configure_deps)
|
||||||
|
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
||||||
|
$(ACLOCAL_M4): $(am__aclocal_m4_deps)
|
||||||
|
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
||||||
|
$(am__aclocal_m4_deps):
|
||||||
|
|
||||||
|
mostlyclean-libtool:
|
||||||
|
-rm -f *.lo
|
||||||
|
|
||||||
|
clean-libtool:
|
||||||
|
-rm -rf .libs _libs
|
||||||
|
tags: TAGS
|
||||||
|
TAGS:
|
||||||
|
|
||||||
|
ctags: CTAGS
|
||||||
|
CTAGS:
|
||||||
|
|
||||||
|
|
||||||
|
distdir: $(DISTFILES)
|
||||||
|
@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
|
||||||
|
topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
|
||||||
|
list='$(DISTFILES)'; \
|
||||||
|
dist_files=`for file in $$list; do echo $$file; done | \
|
||||||
|
sed -e "s|^$$srcdirstrip/||;t" \
|
||||||
|
-e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
|
||||||
|
case $$dist_files in \
|
||||||
|
*/*) $(MKDIR_P) `echo "$$dist_files" | \
|
||||||
|
sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
|
||||||
|
sort -u` ;; \
|
||||||
|
esac; \
|
||||||
|
for file in $$dist_files; do \
|
||||||
|
if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
|
||||||
|
if test -d $$d/$$file; then \
|
||||||
|
dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
|
||||||
|
if test -d "$(distdir)/$$file"; then \
|
||||||
|
find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
|
||||||
|
fi; \
|
||||||
|
if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
|
||||||
|
cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
|
||||||
|
find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
|
||||||
|
fi; \
|
||||||
|
cp -fpR $$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: check-am
|
||||||
|
all-am: Makefile
|
||||||
|
installdirs:
|
||||||
|
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:
|
||||||
|
if test -z '$(STRIP)'; then \
|
||||||
|
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
|
||||||
|
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
|
||||||
|
install; \
|
||||||
|
else \
|
||||||
|
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
|
||||||
|
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
|
||||||
|
"INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
|
||||||
|
fi
|
||||||
|
mostlyclean-generic:
|
||||||
|
|
||||||
|
clean-generic:
|
||||||
|
|
||||||
|
distclean-generic:
|
||||||
|
-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
|
||||||
|
-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_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-am
|
||||||
|
|
||||||
|
clean-am: clean-generic clean-libtool mostlyclean-am
|
||||||
|
|
||||||
|
distclean: distclean-am
|
||||||
|
-rm -f Makefile
|
||||||
|
distclean-am: clean-am distclean-generic
|
||||||
|
|
||||||
|
dvi: dvi-am
|
||||||
|
|
||||||
|
dvi-am:
|
||||||
|
|
||||||
|
html: html-am
|
||||||
|
|
||||||
|
html-am:
|
||||||
|
|
||||||
|
info: info-am
|
||||||
|
|
||||||
|
info-am:
|
||||||
|
|
||||||
|
install-data-am:
|
||||||
|
|
||||||
|
install-dvi: install-dvi-am
|
||||||
|
|
||||||
|
install-dvi-am:
|
||||||
|
|
||||||
|
install-exec-am:
|
||||||
|
|
||||||
|
install-html: install-html-am
|
||||||
|
|
||||||
|
install-html-am:
|
||||||
|
|
||||||
|
install-info: install-info-am
|
||||||
|
|
||||||
|
install-info-am:
|
||||||
|
|
||||||
|
install-man:
|
||||||
|
|
||||||
|
install-pdf: install-pdf-am
|
||||||
|
|
||||||
|
install-pdf-am:
|
||||||
|
|
||||||
|
install-ps: install-ps-am
|
||||||
|
|
||||||
|
install-ps-am:
|
||||||
|
|
||||||
|
installcheck-am:
|
||||||
|
|
||||||
|
maintainer-clean: maintainer-clean-am
|
||||||
|
-rm -f Makefile
|
||||||
|
maintainer-clean-am: distclean-am maintainer-clean-generic
|
||||||
|
|
||||||
|
mostlyclean: mostlyclean-am
|
||||||
|
|
||||||
|
mostlyclean-am: mostlyclean-generic mostlyclean-libtool
|
||||||
|
|
||||||
|
pdf: pdf-am
|
||||||
|
|
||||||
|
pdf-am:
|
||||||
|
|
||||||
|
ps: ps-am
|
||||||
|
|
||||||
|
ps-am:
|
||||||
|
|
||||||
|
uninstall-am:
|
||||||
|
|
||||||
|
.MAKE: install-am install-strip
|
||||||
|
|
||||||
|
.PHONY: all all-am check check-am clean clean-generic clean-libtool \
|
||||||
|
distclean distclean-generic distclean-libtool distdir dvi \
|
||||||
|
dvi-am html html-am info info-am install install-am \
|
||||||
|
install-data install-data-am install-dvi install-dvi-am \
|
||||||
|
install-exec install-exec-am install-html install-html-am \
|
||||||
|
install-info install-info-am install-man install-pdf \
|
||||||
|
install-pdf-am install-ps install-ps-am install-strip \
|
||||||
|
installcheck installcheck-am installdirs maintainer-clean \
|
||||||
|
maintainer-clean-generic mostlyclean mostlyclean-generic \
|
||||||
|
mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am
|
||||||
|
|
||||||
|
|
||||||
|
# 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:
|
Binary file not shown.
|
@ -0,0 +1,210 @@
|
||||||
|
#include <string.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <ctype.h>
|
||||||
|
|
||||||
|
#include "hyphen.h"
|
||||||
|
|
||||||
|
#define BUFSIZE 1000
|
||||||
|
|
||||||
|
void help() {
|
||||||
|
fprintf(stderr,"correct syntax is:\n");
|
||||||
|
fprintf(stderr,"example [-d | -dd] hyphen_dictionary_file file_of_words_to_check\n");
|
||||||
|
fprintf(stderr,"-o = use old algorithm (without non-standard hyphenation)\n");
|
||||||
|
fprintf(stderr,"-d = hyphenation with listing of the possible hyphenations\n");
|
||||||
|
fprintf(stderr,"-n = print hyphenation vector\n");
|
||||||
|
}
|
||||||
|
|
||||||
|
/* get a pointer to the nth 8-bit or UTF-8 character of the word */
|
||||||
|
char * hindex(char * word, int n, int utf8) {
|
||||||
|
int j = 0;
|
||||||
|
while (j < n) {
|
||||||
|
j++;
|
||||||
|
word++;
|
||||||
|
while (utf8 && ((((unsigned char) *word) >> 6) == 2)) word++;
|
||||||
|
}
|
||||||
|
return word;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* list possible hyphenations with -dd option (example for the usage of the hyphenate2() function) */
|
||||||
|
void single_hyphenations(char * word, char * hyphen, char ** rep, int * pos, int * cut, int utf8) {
|
||||||
|
int i, k, j = 0;
|
||||||
|
char r;
|
||||||
|
for (i = 0; (i + 1) < strlen(word); i++) {
|
||||||
|
if (utf8 && ((((unsigned char) word[i]) >> 6) == 2)) continue;
|
||||||
|
if ((hyphen[j] & 1)) {
|
||||||
|
if (rep && rep[j]) {
|
||||||
|
k = hindex(word, j - pos[j] + 1, utf8) - word;
|
||||||
|
r = word[k];
|
||||||
|
word[k] = 0;
|
||||||
|
printf(" - %s%s", word, rep[j]);
|
||||||
|
word[k] = r;
|
||||||
|
printf("%s\n", hindex(word + k, cut[j], utf8));
|
||||||
|
} else {
|
||||||
|
k = hindex(word, j + 1, utf8) - word;
|
||||||
|
r = word[k];
|
||||||
|
word[k] = 0;
|
||||||
|
printf(" - %s=", word);
|
||||||
|
word[k] = r;
|
||||||
|
printf("%s\n", word + k);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
j++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
int
|
||||||
|
main(int argc, char** argv)
|
||||||
|
{
|
||||||
|
|
||||||
|
HyphenDict *dict;
|
||||||
|
int df;
|
||||||
|
int wtc;
|
||||||
|
FILE* wtclst;
|
||||||
|
int k, n, i, j, c;
|
||||||
|
char buf[BUFSIZE + 1];
|
||||||
|
int nHyphCount;
|
||||||
|
char *hyphens;
|
||||||
|
char *lcword;
|
||||||
|
char *hyphword;
|
||||||
|
char hword[BUFSIZE * 2];
|
||||||
|
int arg = 1;
|
||||||
|
int optd = 1;
|
||||||
|
int optn = 0;
|
||||||
|
int optdd = 0;
|
||||||
|
char ** rep;
|
||||||
|
int * pos;
|
||||||
|
int * cut;
|
||||||
|
|
||||||
|
/* first parse the command line options */
|
||||||
|
/* arg1 - hyphen dictionary file, arg2 - file of words to check */
|
||||||
|
|
||||||
|
if (argv[arg]) {
|
||||||
|
if (strcmp(argv[arg], "-o") == 0) {
|
||||||
|
optd = 0;
|
||||||
|
arg++;
|
||||||
|
}
|
||||||
|
if (strcmp(argv[arg], "-n") == 0) {
|
||||||
|
optn = 1;
|
||||||
|
arg++;
|
||||||
|
}
|
||||||
|
if (argv[arg] && strcmp(argv[arg], "-d") == 0) {
|
||||||
|
optd = 1;
|
||||||
|
optdd = 1;
|
||||||
|
arg++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (argv[arg]) {
|
||||||
|
df = arg++;
|
||||||
|
} else {
|
||||||
|
help();
|
||||||
|
exit(1);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (argv[arg]) {
|
||||||
|
wtc = arg++;
|
||||||
|
} else {
|
||||||
|
help();
|
||||||
|
exit(1);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* load the hyphenation dictionary */
|
||||||
|
if ((dict = hnj_hyphen_load(argv[df])) == NULL) {
|
||||||
|
fprintf(stderr, "Couldn't find file %s\n", argv[df]);
|
||||||
|
fflush(stderr);
|
||||||
|
exit(1);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* open the words to check list */
|
||||||
|
wtclst = fopen(argv[wtc],"r");
|
||||||
|
if (!wtclst) {
|
||||||
|
fprintf(stderr,"Error - could not open file of words to check\n");
|
||||||
|
exit(1);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* now read each word from the wtc file */
|
||||||
|
while(fgets(buf,BUFSIZE,wtclst) != NULL) {
|
||||||
|
k = strlen(buf);
|
||||||
|
if (k && buf[k - 1] == '\n') buf[k - 1] = '\0';
|
||||||
|
if (k >=2 && buf[k - 2] == '\r') buf[k-- - 2] = '\0';
|
||||||
|
|
||||||
|
/* set aside some buffers to hold lower cased */
|
||||||
|
/* and hyphen information */
|
||||||
|
lcword = (char *) malloc(k+1);
|
||||||
|
hyphens = (char *)malloc(k+5);
|
||||||
|
/* basic ascii lower-case, not suitable for real-world usage*/
|
||||||
|
for (i = 0; i < k; ++i) {
|
||||||
|
lcword[i] = buf[i];
|
||||||
|
if ( (lcword[i] >= 'A') && (lcword[i] <= 'Z') )
|
||||||
|
lcword[i] += 32;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* first remove any trailing periods */
|
||||||
|
n = k-1;
|
||||||
|
while((n >=0) && (lcword[n] == '.')) n--;
|
||||||
|
n++;
|
||||||
|
|
||||||
|
/* now actually try to hyphenate the word */
|
||||||
|
|
||||||
|
rep = NULL;
|
||||||
|
pos = NULL;
|
||||||
|
cut = NULL;
|
||||||
|
hword[0] = '\0';
|
||||||
|
|
||||||
|
if ((!optd && hnj_hyphen_hyphenate(dict, lcword, n-1, hyphens)) ||
|
||||||
|
(optd && hnj_hyphen_hyphenate2(dict, lcword, n-1, hyphens, hword, &rep, &pos, &cut))) {
|
||||||
|
free(hyphens);
|
||||||
|
free(lcword);
|
||||||
|
fprintf(stderr, "hyphenation error\n");
|
||||||
|
exit(1);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (optn) fprintf(stderr, "%s\n", hyphens);
|
||||||
|
|
||||||
|
if (!optd) {
|
||||||
|
/* now backfill hyphens[] for any removed periods */
|
||||||
|
for (c = n; c < k; c++) hyphens[c] = '0';
|
||||||
|
hyphens[k] = '\0';
|
||||||
|
|
||||||
|
/* now create a new char string showing hyphenation positions */
|
||||||
|
/* count the hyphens and allocate space for the new hypehanted string */
|
||||||
|
nHyphCount = 0;
|
||||||
|
for (i = 0; i < n; i++)
|
||||||
|
if (hyphens[i]&1)
|
||||||
|
nHyphCount++;
|
||||||
|
hyphword = (char *) malloc(k+1+nHyphCount);
|
||||||
|
j = 0;
|
||||||
|
for (i = 0; i < n; i++) {
|
||||||
|
hyphword[j++] = buf[i];
|
||||||
|
if (hyphens[i]&1) {
|
||||||
|
hyphword[j++] = '-';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
hyphword[j] = '\0';
|
||||||
|
fprintf(stdout,"%s\n",hyphword);
|
||||||
|
fflush(stdout);
|
||||||
|
free(hyphword);
|
||||||
|
} else {
|
||||||
|
fprintf(stdout,"%s\n", hword);
|
||||||
|
|
||||||
|
|
||||||
|
if (optdd) single_hyphenations(lcword, hyphens, rep, pos, cut, dict->utf8);
|
||||||
|
if (rep) {
|
||||||
|
for (i = 0; i < n - 1; i++) {
|
||||||
|
if (rep[i]) free(rep[i]);
|
||||||
|
}
|
||||||
|
free(rep);
|
||||||
|
free(pos);
|
||||||
|
free(cut);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
free(hyphens);
|
||||||
|
free(lcword);
|
||||||
|
}
|
||||||
|
|
||||||
|
fclose(wtclst);
|
||||||
|
hnj_hyphen_free(dict);
|
||||||
|
return 0;
|
||||||
|
}
|
|
@ -0,0 +1,72 @@
|
||||||
|
/* LibHnj is dual licensed under LGPL and MPL. Boilerplate for both
|
||||||
|
* licenses follows.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/* LibHnj - a library for high quality hyphenation and justification
|
||||||
|
* Copyright (C) 1998 Raph Levien, (C) 2001 ALTLinux, Moscow
|
||||||
|
*
|
||||||
|
* This library is free software; you can redistribute it and/or
|
||||||
|
* modify it under the terms of the GNU Library General Public
|
||||||
|
* License as published by the Free Software Foundation; either
|
||||||
|
* version 2 of the License, or (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This library 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
|
||||||
|
* Library General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU Library General Public
|
||||||
|
* License along with this library; if not, write to the
|
||||||
|
* Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
||||||
|
* Boston, MA 02111-1307 USA.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*
|
||||||
|
* The contents of this file are subject to the Mozilla Public License
|
||||||
|
* Version 1.0 (the "MPL"); you may not use this file except in
|
||||||
|
* compliance with the MPL. You may obtain a copy of the MPL at
|
||||||
|
* http://www.mozilla.org/MPL/
|
||||||
|
*
|
||||||
|
* Software distributed under the MPL is distributed on an "AS IS" basis,
|
||||||
|
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the MPL
|
||||||
|
* for the specific language governing rights and limitations under the
|
||||||
|
* MPL.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
/* wrappers for malloc */
|
||||||
|
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <stdio.h>
|
||||||
|
|
||||||
|
void *
|
||||||
|
hnj_malloc (int size)
|
||||||
|
{
|
||||||
|
void *p;
|
||||||
|
|
||||||
|
p = malloc (size);
|
||||||
|
if (p == NULL)
|
||||||
|
{
|
||||||
|
fprintf (stderr, "can't allocate %d bytes\n", size);
|
||||||
|
exit (1);
|
||||||
|
}
|
||||||
|
return p;
|
||||||
|
}
|
||||||
|
|
||||||
|
void *
|
||||||
|
hnj_realloc (void *p, int size)
|
||||||
|
{
|
||||||
|
p = realloc (p, size);
|
||||||
|
if (p == NULL)
|
||||||
|
{
|
||||||
|
fprintf (stderr, "can't allocate %d bytes\n", size);
|
||||||
|
exit (1);
|
||||||
|
}
|
||||||
|
return p;
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
hnj_free (void *p)
|
||||||
|
{
|
||||||
|
free (p);
|
||||||
|
}
|
||||||
|
|
|
@ -0,0 +1,46 @@
|
||||||
|
/* LibHnj is dual licensed under LGPL and MPL. Boilerplate for both
|
||||||
|
* licenses follows.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/* LibHnj - a library for high quality hyphenation and justification
|
||||||
|
* Copyright (C) 1998 Raph Levien
|
||||||
|
*
|
||||||
|
* This library is free software; you can redistribute it and/or
|
||||||
|
* modify it under the terms of the GNU Library General Public
|
||||||
|
* License as published by the Free Software Foundation; either
|
||||||
|
* version 2 of the License, or (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This library 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
|
||||||
|
* Library General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU Library General Public
|
||||||
|
* License along with this library; if not, write to the
|
||||||
|
* Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
||||||
|
* Boston, MA 02111-1307 USA.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*
|
||||||
|
* The contents of this file are subject to the Mozilla Public License
|
||||||
|
* Version 1.0 (the "MPL"); you may not use this file except in
|
||||||
|
* compliance with the MPL. You may obtain a copy of the MPL at
|
||||||
|
* http://www.mozilla.org/MPL/
|
||||||
|
*
|
||||||
|
* Software distributed under the MPL is distributed on an "AS IS" basis,
|
||||||
|
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the MPL
|
||||||
|
* for the specific language governing rights and limitations under the
|
||||||
|
* MPL.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
/* wrappers for malloc */
|
||||||
|
|
||||||
|
void *
|
||||||
|
hnj_malloc (int size);
|
||||||
|
|
||||||
|
void *
|
||||||
|
hnj_realloc (void *p, int size);
|
||||||
|
|
||||||
|
void
|
||||||
|
hnj_free (void *p);
|
||||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,175 @@
|
||||||
|
/* Hyphen - hyphenation library using converted TeX hyphenation patterns
|
||||||
|
*
|
||||||
|
* (C) 1998 Raph Levien
|
||||||
|
* (C) 2001 ALTLinux, Moscow
|
||||||
|
* (C) 2006, 2007, 2008 László Németh
|
||||||
|
*
|
||||||
|
* This was part of libHnj library by Raph Levien.
|
||||||
|
*
|
||||||
|
* Peter Novodvorsky from ALTLinux cut hyphenation part from libHnj
|
||||||
|
* to use it in OpenOffice.org.
|
||||||
|
*
|
||||||
|
* Non-standard and compound word hyphenation support by László Németh.
|
||||||
|
*
|
||||||
|
* License is the original LibHnj license:
|
||||||
|
*
|
||||||
|
* LibHnj is dual licensed under LGPL and MPL. Boilerplate for both
|
||||||
|
* licenses follows.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/* LibHnj - a library for high quality hyphenation and justification
|
||||||
|
* Copyright (C) 1998 Raph Levien
|
||||||
|
*
|
||||||
|
* This library is free software; you can redistribute it and/or
|
||||||
|
* modify it under the terms of the GNU Library General Public
|
||||||
|
* License as published by the Free Software Foundation; either
|
||||||
|
* version 2 of the License, or (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This library 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
|
||||||
|
* Library General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU Library General Public
|
||||||
|
* License along with this library; if not, write to the
|
||||||
|
* Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
||||||
|
* Boston, MA 02111-1307 USA.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*
|
||||||
|
* The contents of this file are subject to the Mozilla Public License
|
||||||
|
* Version 1.0 (the "MPL"); you may not use this file except in
|
||||||
|
* compliance with the MPL. You may obtain a copy of the MPL at
|
||||||
|
* http://www.mozilla.org/MPL/
|
||||||
|
*
|
||||||
|
* Software distributed under the MPL is distributed on an "AS IS" basis,
|
||||||
|
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the MPL
|
||||||
|
* for the specific language governing rights and limitations under the
|
||||||
|
* MPL.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
#ifndef __HYPHEN_H__
|
||||||
|
#define __HYPHEN_H__
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
extern "C" {
|
||||||
|
#endif /* __cplusplus */
|
||||||
|
|
||||||
|
#include <stdio.h>
|
||||||
|
|
||||||
|
typedef struct _HyphenDict HyphenDict;
|
||||||
|
typedef struct _HyphenState HyphenState;
|
||||||
|
typedef struct _HyphenTrans HyphenTrans;
|
||||||
|
#define MAX_CHARS 100
|
||||||
|
#define MAX_NAME 20
|
||||||
|
|
||||||
|
struct _HyphenDict {
|
||||||
|
/* user options */
|
||||||
|
char lhmin; /* lefthyphenmin: min. hyph. distance from the left side */
|
||||||
|
char rhmin; /* righthyphenmin: min. hyph. distance from the right side */
|
||||||
|
char clhmin; /* min. hyph. distance from the left compound boundary */
|
||||||
|
char crhmin; /* min. hyph. distance from the right compound boundary */
|
||||||
|
char * nohyphen; /* comma separated list of characters or character
|
||||||
|
sequences with forbidden hyphenation */
|
||||||
|
int nohyphenl; /* count of elements in nohyphen */
|
||||||
|
/* system variables */
|
||||||
|
int num_states;
|
||||||
|
char cset[MAX_NAME];
|
||||||
|
int utf8;
|
||||||
|
HyphenState *states;
|
||||||
|
HyphenDict *nextlevel;
|
||||||
|
};
|
||||||
|
|
||||||
|
struct _HyphenState {
|
||||||
|
char *match;
|
||||||
|
char *repl;
|
||||||
|
signed char replindex;
|
||||||
|
signed char replcut;
|
||||||
|
int fallback_state;
|
||||||
|
int num_trans;
|
||||||
|
HyphenTrans *trans;
|
||||||
|
};
|
||||||
|
|
||||||
|
struct _HyphenTrans {
|
||||||
|
char ch;
|
||||||
|
int new_state;
|
||||||
|
};
|
||||||
|
|
||||||
|
HyphenDict *hnj_hyphen_load (const char *fn);
|
||||||
|
HyphenDict *hnj_hyphen_load_file (FILE *f);
|
||||||
|
void hnj_hyphen_free (HyphenDict *dict);
|
||||||
|
|
||||||
|
/* obsolete, use hnj_hyphen_hyphenate2() or *hyphenate3() functions) */
|
||||||
|
int hnj_hyphen_hyphenate (HyphenDict *dict,
|
||||||
|
const char *word, int word_size,
|
||||||
|
char *hyphens);
|
||||||
|
|
||||||
|
/*
|
||||||
|
|
||||||
|
int hnj_hyphen_hyphenate2(): non-standard hyphenation.
|
||||||
|
|
||||||
|
(It supports Catalan, Dutch, German, Hungarian, Norwegian, Swedish
|
||||||
|
etc. orthography, see documentation.)
|
||||||
|
|
||||||
|
input data:
|
||||||
|
word: input word
|
||||||
|
word_size: byte length of the input word
|
||||||
|
|
||||||
|
hyphens: allocated character buffer (size = word_size + 5)
|
||||||
|
hyphenated_word: allocated character buffer (size ~ word_size * 2) or NULL
|
||||||
|
rep, pos, cut: pointers (point to the allocated and _zeroed_ buffers
|
||||||
|
(size=word_size) or with NULL value) or NULL
|
||||||
|
|
||||||
|
output data:
|
||||||
|
hyphens: hyphenation vector (hyphenation points signed with odd numbers)
|
||||||
|
hyphenated_word: hyphenated input word (hyphens signed with `='),
|
||||||
|
optional (NULL input)
|
||||||
|
rep: NULL (only standard hyph.), or replacements (hyphenation points
|
||||||
|
signed with `=' in replacements);
|
||||||
|
pos: NULL, or difference of the actual position and the beginning
|
||||||
|
positions of the change in input words;
|
||||||
|
cut: NULL, or counts of the removed characters of the original words
|
||||||
|
at hyphenation,
|
||||||
|
|
||||||
|
Note: rep, pos, cut are complementary arrays to the hyphens, indexed with the
|
||||||
|
character positions of the input word.
|
||||||
|
|
||||||
|
For example:
|
||||||
|
Schiffahrt -> Schiff=fahrt,
|
||||||
|
pattern: f1f/ff=f,1,2
|
||||||
|
output: rep[5]="ff=f", pos[5] = 1, cut[5] = 2
|
||||||
|
|
||||||
|
Note: hnj_hyphen_hyphenate2() can allocate rep, pos, cut (word_size
|
||||||
|
length arrays):
|
||||||
|
|
||||||
|
char ** rep = NULL;
|
||||||
|
int * pos = NULL;
|
||||||
|
int * cut = NULL;
|
||||||
|
char hyphens[MAXWORDLEN];
|
||||||
|
hnj_hyphen_hyphenate2(dict, "example", 7, hyphens, NULL, &rep, &pos, &cut);
|
||||||
|
|
||||||
|
See example in the source distribution.
|
||||||
|
|
||||||
|
*/
|
||||||
|
|
||||||
|
int hnj_hyphen_hyphenate2 (HyphenDict *dict,
|
||||||
|
const char *word, int word_size, char * hyphens,
|
||||||
|
char *hyphenated_word, char *** rep, int ** pos, int ** cut);
|
||||||
|
|
||||||
|
/* like hnj_hyphen_hyphenate2, but with hyphenmin parameters */
|
||||||
|
/* lhmin: lefthyphenmin
|
||||||
|
* rhmin: righthyphenmin
|
||||||
|
* clhmin: compoundlefthyphemin
|
||||||
|
* crhmin: compoundrighthyphenmin
|
||||||
|
* (see documentation) */
|
||||||
|
|
||||||
|
int hnj_hyphen_hyphenate3 (HyphenDict *dict,
|
||||||
|
const char *word, int word_size, char * hyphens,
|
||||||
|
char *hyphword, char *** rep, int ** pos, int ** cut,
|
||||||
|
int lhmin, int rhmin, int clhmin, int crhmin);
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
}
|
||||||
|
#endif /* __cplusplus */
|
||||||
|
|
||||||
|
#endif /* __HYPHEN_H__ */
|
|
@ -0,0 +1,45 @@
|
||||||
|
--- hyphen.tex 2002-12-19 00:00:00.000000000 +0100
|
||||||
|
+++ hyphen.us 2007-11-22 14:06:43.000000000 +0100
|
||||||
|
@@ -2,7 +2,6 @@
|
||||||
|
% Unlimited copying and redistribution of this file are permitted as long
|
||||||
|
% as this file is not modified. Modifications are permitted, but only if
|
||||||
|
% the resulting file is not named hyphen.tex.
|
||||||
|
-\patterns{ % just type <return> if you're not using INITEX
|
||||||
|
.ach4
|
||||||
|
.ad4der
|
||||||
|
.af1t
|
||||||
|
@@ -4450,20 +4449,17 @@
|
||||||
|
zte4
|
||||||
|
4z1z2
|
||||||
|
z4zy
|
||||||
|
-}
|
||||||
|
-\hyphenation{ % Do NOT make any alterations to this list! --- DEK
|
||||||
|
-as-so-ciate
|
||||||
|
-as-so-ciates
|
||||||
|
-dec-li-na-tion
|
||||||
|
-oblig-a-tory
|
||||||
|
-phil-an-thropic
|
||||||
|
-present
|
||||||
|
-presents
|
||||||
|
-project
|
||||||
|
-projects
|
||||||
|
-reci-procity
|
||||||
|
-re-cog-ni-zance
|
||||||
|
-ref-or-ma-tion
|
||||||
|
-ret-ri-bu-tion
|
||||||
|
-ta-ble
|
||||||
|
-}
|
||||||
|
+.as9s8o9c8i8a8te.
|
||||||
|
+.as9s8o9c8i8a8t8es.
|
||||||
|
+.de8c9l8i9n8a9t8i8on.
|
||||||
|
+.ob8l8i8g9a9t8o8ry.
|
||||||
|
+.ph8i8l9a8n9t8h8r8o8p8ic.
|
||||||
|
+.pr8e8s8e8nt.
|
||||||
|
+.pr8e8s8e8n8ts.
|
||||||
|
+.pr8o8j8e8ct.
|
||||||
|
+.pr8o8j8e8c8ts.
|
||||||
|
+.re8c8i9p8r8o8c8i8ty.
|
||||||
|
+.re9c8o8g9n8i9z8a8n8ce.
|
||||||
|
+.re8f9o8r9m8a9t8i8on.
|
||||||
|
+.re8t9r8i9b8u9t8i8on.
|
||||||
|
+.ta9b8le.
|
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,507 @@
|
||||||
|
#!/bin/sh
|
||||||
|
# install - install a program, script, or datafile
|
||||||
|
|
||||||
|
scriptversion=2006-10-14.15
|
||||||
|
|
||||||
|
# This originates from X11R5 (mit/util/scripts/install.sh), which was
|
||||||
|
# later released in X11R6 (xc/config/util/install.sh) with the
|
||||||
|
# following copyright and license.
|
||||||
|
#
|
||||||
|
# Copyright (C) 1994 X Consortium
|
||||||
|
#
|
||||||
|
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
# of this software and associated documentation files (the "Software"), to
|
||||||
|
# deal in the Software without restriction, including without limitation the
|
||||||
|
# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
|
||||||
|
# sell copies of the Software, and to permit persons to whom the Software is
|
||||||
|
# furnished to do so, subject to the following conditions:
|
||||||
|
#
|
||||||
|
# The above copyright notice and this permission notice shall be included in
|
||||||
|
# all copies or substantial portions of the Software.
|
||||||
|
#
|
||||||
|
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
# X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
|
||||||
|
# AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNEC-
|
||||||
|
# TION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||||
|
#
|
||||||
|
# Except as contained in this notice, the name of the X Consortium shall not
|
||||||
|
# be used in advertising or otherwise to promote the sale, use or other deal-
|
||||||
|
# ings in this Software without prior written authorization from the X Consor-
|
||||||
|
# tium.
|
||||||
|
#
|
||||||
|
#
|
||||||
|
# FSF changes to this file are in the public domain.
|
||||||
|
#
|
||||||
|
# Calling this script install-sh is preferred over install.sh, to prevent
|
||||||
|
# `make' implicit rules from creating a file called install from it
|
||||||
|
# when there is no Makefile.
|
||||||
|
#
|
||||||
|
# This script is compatible with the BSD install script, but was written
|
||||||
|
# from scratch.
|
||||||
|
|
||||||
|
nl='
|
||||||
|
'
|
||||||
|
IFS=" "" $nl"
|
||||||
|
|
||||||
|
# set DOITPROG to echo to test this script
|
||||||
|
|
||||||
|
# Don't use :- since 4.3BSD and earlier shells don't like it.
|
||||||
|
doit="${DOITPROG-}"
|
||||||
|
if test -z "$doit"; then
|
||||||
|
doit_exec=exec
|
||||||
|
else
|
||||||
|
doit_exec=$doit
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Put in absolute file names if you don't have them in your path;
|
||||||
|
# or use environment vars.
|
||||||
|
|
||||||
|
mvprog="${MVPROG-mv}"
|
||||||
|
cpprog="${CPPROG-cp}"
|
||||||
|
chmodprog="${CHMODPROG-chmod}"
|
||||||
|
chownprog="${CHOWNPROG-chown}"
|
||||||
|
chgrpprog="${CHGRPPROG-chgrp}"
|
||||||
|
stripprog="${STRIPPROG-strip}"
|
||||||
|
rmprog="${RMPROG-rm}"
|
||||||
|
mkdirprog="${MKDIRPROG-mkdir}"
|
||||||
|
|
||||||
|
posix_glob=
|
||||||
|
posix_mkdir=
|
||||||
|
|
||||||
|
# Desired mode of installed file.
|
||||||
|
mode=0755
|
||||||
|
|
||||||
|
chmodcmd=$chmodprog
|
||||||
|
chowncmd=
|
||||||
|
chgrpcmd=
|
||||||
|
stripcmd=
|
||||||
|
rmcmd="$rmprog -f"
|
||||||
|
mvcmd="$mvprog"
|
||||||
|
src=
|
||||||
|
dst=
|
||||||
|
dir_arg=
|
||||||
|
dstarg=
|
||||||
|
no_target_directory=
|
||||||
|
|
||||||
|
usage="Usage: $0 [OPTION]... [-T] SRCFILE DSTFILE
|
||||||
|
or: $0 [OPTION]... SRCFILES... DIRECTORY
|
||||||
|
or: $0 [OPTION]... -t DIRECTORY SRCFILES...
|
||||||
|
or: $0 [OPTION]... -d DIRECTORIES...
|
||||||
|
|
||||||
|
In the 1st form, copy SRCFILE to DSTFILE.
|
||||||
|
In the 2nd and 3rd, copy all SRCFILES to DIRECTORY.
|
||||||
|
In the 4th, create DIRECTORIES.
|
||||||
|
|
||||||
|
Options:
|
||||||
|
-c (ignored)
|
||||||
|
-d create directories instead of installing files.
|
||||||
|
-g GROUP $chgrpprog installed files to GROUP.
|
||||||
|
-m MODE $chmodprog installed files to MODE.
|
||||||
|
-o USER $chownprog installed files to USER.
|
||||||
|
-s $stripprog installed files.
|
||||||
|
-t DIRECTORY install into DIRECTORY.
|
||||||
|
-T report an error if DSTFILE is a directory.
|
||||||
|
--help display this help and exit.
|
||||||
|
--version display version info and exit.
|
||||||
|
|
||||||
|
Environment variables override the default commands:
|
||||||
|
CHGRPPROG CHMODPROG CHOWNPROG CPPROG MKDIRPROG MVPROG RMPROG STRIPPROG
|
||||||
|
"
|
||||||
|
|
||||||
|
while test $# -ne 0; do
|
||||||
|
case $1 in
|
||||||
|
-c) shift
|
||||||
|
continue;;
|
||||||
|
|
||||||
|
-d) dir_arg=true
|
||||||
|
shift
|
||||||
|
continue;;
|
||||||
|
|
||||||
|
-g) chgrpcmd="$chgrpprog $2"
|
||||||
|
shift
|
||||||
|
shift
|
||||||
|
continue;;
|
||||||
|
|
||||||
|
--help) echo "$usage"; exit $?;;
|
||||||
|
|
||||||
|
-m) mode=$2
|
||||||
|
shift
|
||||||
|
shift
|
||||||
|
case $mode in
|
||||||
|
*' '* | *' '* | *'
|
||||||
|
'* | *'*'* | *'?'* | *'['*)
|
||||||
|
echo "$0: invalid mode: $mode" >&2
|
||||||
|
exit 1;;
|
||||||
|
esac
|
||||||
|
continue;;
|
||||||
|
|
||||||
|
-o) chowncmd="$chownprog $2"
|
||||||
|
shift
|
||||||
|
shift
|
||||||
|
continue;;
|
||||||
|
|
||||||
|
-s) stripcmd=$stripprog
|
||||||
|
shift
|
||||||
|
continue;;
|
||||||
|
|
||||||
|
-t) dstarg=$2
|
||||||
|
shift
|
||||||
|
shift
|
||||||
|
continue;;
|
||||||
|
|
||||||
|
-T) no_target_directory=true
|
||||||
|
shift
|
||||||
|
continue;;
|
||||||
|
|
||||||
|
--version) echo "$0 $scriptversion"; exit $?;;
|
||||||
|
|
||||||
|
--) shift
|
||||||
|
break;;
|
||||||
|
|
||||||
|
-*) echo "$0: invalid option: $1" >&2
|
||||||
|
exit 1;;
|
||||||
|
|
||||||
|
*) break;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
|
||||||
|
if test $# -ne 0 && test -z "$dir_arg$dstarg"; then
|
||||||
|
# When -d is used, all remaining arguments are directories to create.
|
||||||
|
# When -t is used, the destination is already specified.
|
||||||
|
# Otherwise, the last argument is the destination. Remove it from $@.
|
||||||
|
for arg
|
||||||
|
do
|
||||||
|
if test -n "$dstarg"; then
|
||||||
|
# $@ is not empty: it contains at least $arg.
|
||||||
|
set fnord "$@" "$dstarg"
|
||||||
|
shift # fnord
|
||||||
|
fi
|
||||||
|
shift # arg
|
||||||
|
dstarg=$arg
|
||||||
|
done
|
||||||
|
fi
|
||||||
|
|
||||||
|
if test $# -eq 0; then
|
||||||
|
if test -z "$dir_arg"; then
|
||||||
|
echo "$0: no input file specified." >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
# It's OK to call `install-sh -d' without argument.
|
||||||
|
# This can happen when creating conditional directories.
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
if test -z "$dir_arg"; then
|
||||||
|
trap '(exit $?); exit' 1 2 13 15
|
||||||
|
|
||||||
|
# Set umask so as not to create temps with too-generous modes.
|
||||||
|
# However, 'strip' requires both read and write access to temps.
|
||||||
|
case $mode in
|
||||||
|
# Optimize common cases.
|
||||||
|
*644) cp_umask=133;;
|
||||||
|
*755) cp_umask=22;;
|
||||||
|
|
||||||
|
*[0-7])
|
||||||
|
if test -z "$stripcmd"; then
|
||||||
|
u_plus_rw=
|
||||||
|
else
|
||||||
|
u_plus_rw='% 200'
|
||||||
|
fi
|
||||||
|
cp_umask=`expr '(' 777 - $mode % 1000 ')' $u_plus_rw`;;
|
||||||
|
*)
|
||||||
|
if test -z "$stripcmd"; then
|
||||||
|
u_plus_rw=
|
||||||
|
else
|
||||||
|
u_plus_rw=,u+rw
|
||||||
|
fi
|
||||||
|
cp_umask=$mode$u_plus_rw;;
|
||||||
|
esac
|
||||||
|
fi
|
||||||
|
|
||||||
|
for src
|
||||||
|
do
|
||||||
|
# Protect names starting with `-'.
|
||||||
|
case $src in
|
||||||
|
-*) src=./$src ;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
if test -n "$dir_arg"; then
|
||||||
|
dst=$src
|
||||||
|
dstdir=$dst
|
||||||
|
test -d "$dstdir"
|
||||||
|
dstdir_status=$?
|
||||||
|
else
|
||||||
|
|
||||||
|
# Waiting for this to be detected by the "$cpprog $src $dsttmp" command
|
||||||
|
# might cause directories to be created, which would be especially bad
|
||||||
|
# if $src (and thus $dsttmp) contains '*'.
|
||||||
|
if test ! -f "$src" && test ! -d "$src"; then
|
||||||
|
echo "$0: $src does not exist." >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
if test -z "$dstarg"; then
|
||||||
|
echo "$0: no destination specified." >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
dst=$dstarg
|
||||||
|
# Protect names starting with `-'.
|
||||||
|
case $dst in
|
||||||
|
-*) dst=./$dst ;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
# If destination is a directory, append the input filename; won't work
|
||||||
|
# if double slashes aren't ignored.
|
||||||
|
if test -d "$dst"; then
|
||||||
|
if test -n "$no_target_directory"; then
|
||||||
|
echo "$0: $dstarg: Is a directory" >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
dstdir=$dst
|
||||||
|
dst=$dstdir/`basename "$src"`
|
||||||
|
dstdir_status=0
|
||||||
|
else
|
||||||
|
# Prefer dirname, but fall back on a substitute if dirname fails.
|
||||||
|
dstdir=`
|
||||||
|
(dirname "$dst") 2>/dev/null ||
|
||||||
|
expr X"$dst" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
|
||||||
|
X"$dst" : 'X\(//\)[^/]' \| \
|
||||||
|
X"$dst" : 'X\(//\)$' \| \
|
||||||
|
X"$dst" : 'X\(/\)' \| . 2>/dev/null ||
|
||||||
|
echo X"$dst" |
|
||||||
|
sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
|
||||||
|
s//\1/
|
||||||
|
q
|
||||||
|
}
|
||||||
|
/^X\(\/\/\)[^/].*/{
|
||||||
|
s//\1/
|
||||||
|
q
|
||||||
|
}
|
||||||
|
/^X\(\/\/\)$/{
|
||||||
|
s//\1/
|
||||||
|
q
|
||||||
|
}
|
||||||
|
/^X\(\/\).*/{
|
||||||
|
s//\1/
|
||||||
|
q
|
||||||
|
}
|
||||||
|
s/.*/./; q'
|
||||||
|
`
|
||||||
|
|
||||||
|
test -d "$dstdir"
|
||||||
|
dstdir_status=$?
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
obsolete_mkdir_used=false
|
||||||
|
|
||||||
|
if test $dstdir_status != 0; then
|
||||||
|
case $posix_mkdir in
|
||||||
|
'')
|
||||||
|
# Create intermediate dirs using mode 755 as modified by the umask.
|
||||||
|
# This is like FreeBSD 'install' as of 1997-10-28.
|
||||||
|
umask=`umask`
|
||||||
|
case $stripcmd.$umask in
|
||||||
|
# Optimize common cases.
|
||||||
|
*[2367][2367]) mkdir_umask=$umask;;
|
||||||
|
.*0[02][02] | .[02][02] | .[02]) mkdir_umask=22;;
|
||||||
|
|
||||||
|
*[0-7])
|
||||||
|
mkdir_umask=`expr $umask + 22 \
|
||||||
|
- $umask % 100 % 40 + $umask % 20 \
|
||||||
|
- $umask % 10 % 4 + $umask % 2
|
||||||
|
`;;
|
||||||
|
*) mkdir_umask=$umask,go-w;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
# With -d, create the new directory with the user-specified mode.
|
||||||
|
# Otherwise, rely on $mkdir_umask.
|
||||||
|
if test -n "$dir_arg"; then
|
||||||
|
mkdir_mode=-m$mode
|
||||||
|
else
|
||||||
|
mkdir_mode=
|
||||||
|
fi
|
||||||
|
|
||||||
|
posix_mkdir=false
|
||||||
|
case $umask in
|
||||||
|
*[123567][0-7][0-7])
|
||||||
|
# POSIX mkdir -p sets u+wx bits regardless of umask, which
|
||||||
|
# is incompatible with FreeBSD 'install' when (umask & 300) != 0.
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$
|
||||||
|
trap 'ret=$?; rmdir "$tmpdir/d" "$tmpdir" 2>/dev/null; exit $ret' 0
|
||||||
|
|
||||||
|
if (umask $mkdir_umask &&
|
||||||
|
exec $mkdirprog $mkdir_mode -p -- "$tmpdir/d") >/dev/null 2>&1
|
||||||
|
then
|
||||||
|
if test -z "$dir_arg" || {
|
||||||
|
# Check for POSIX incompatibilities with -m.
|
||||||
|
# HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or
|
||||||
|
# other-writeable bit of parent directory when it shouldn't.
|
||||||
|
# FreeBSD 6.1 mkdir -m -p sets mode of existing directory.
|
||||||
|
ls_ld_tmpdir=`ls -ld "$tmpdir"`
|
||||||
|
case $ls_ld_tmpdir in
|
||||||
|
d????-?r-*) different_mode=700;;
|
||||||
|
d????-?--*) different_mode=755;;
|
||||||
|
*) false;;
|
||||||
|
esac &&
|
||||||
|
$mkdirprog -m$different_mode -p -- "$tmpdir" && {
|
||||||
|
ls_ld_tmpdir_1=`ls -ld "$tmpdir"`
|
||||||
|
test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
then posix_mkdir=:
|
||||||
|
fi
|
||||||
|
rmdir "$tmpdir/d" "$tmpdir"
|
||||||
|
else
|
||||||
|
# Remove any dirs left behind by ancient mkdir implementations.
|
||||||
|
rmdir ./$mkdir_mode ./-p ./-- 2>/dev/null
|
||||||
|
fi
|
||||||
|
trap '' 0;;
|
||||||
|
esac;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
if
|
||||||
|
$posix_mkdir && (
|
||||||
|
umask $mkdir_umask &&
|
||||||
|
$doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir"
|
||||||
|
)
|
||||||
|
then :
|
||||||
|
else
|
||||||
|
|
||||||
|
# The umask is ridiculous, or mkdir does not conform to POSIX,
|
||||||
|
# or it failed possibly due to a race condition. Create the
|
||||||
|
# directory the slow way, step by step, checking for races as we go.
|
||||||
|
|
||||||
|
case $dstdir in
|
||||||
|
/*) prefix=/ ;;
|
||||||
|
-*) prefix=./ ;;
|
||||||
|
*) prefix= ;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
case $posix_glob in
|
||||||
|
'')
|
||||||
|
if (set -f) 2>/dev/null; then
|
||||||
|
posix_glob=true
|
||||||
|
else
|
||||||
|
posix_glob=false
|
||||||
|
fi ;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
oIFS=$IFS
|
||||||
|
IFS=/
|
||||||
|
$posix_glob && set -f
|
||||||
|
set fnord $dstdir
|
||||||
|
shift
|
||||||
|
$posix_glob && set +f
|
||||||
|
IFS=$oIFS
|
||||||
|
|
||||||
|
prefixes=
|
||||||
|
|
||||||
|
for d
|
||||||
|
do
|
||||||
|
test -z "$d" && continue
|
||||||
|
|
||||||
|
prefix=$prefix$d
|
||||||
|
if test -d "$prefix"; then
|
||||||
|
prefixes=
|
||||||
|
else
|
||||||
|
if $posix_mkdir; then
|
||||||
|
(umask=$mkdir_umask &&
|
||||||
|
$doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir") && break
|
||||||
|
# Don't fail if two instances are running concurrently.
|
||||||
|
test -d "$prefix" || exit 1
|
||||||
|
else
|
||||||
|
case $prefix in
|
||||||
|
*\'*) qprefix=`echo "$prefix" | sed "s/'/'\\\\\\\\''/g"`;;
|
||||||
|
*) qprefix=$prefix;;
|
||||||
|
esac
|
||||||
|
prefixes="$prefixes '$qprefix'"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
prefix=$prefix/
|
||||||
|
done
|
||||||
|
|
||||||
|
if test -n "$prefixes"; then
|
||||||
|
# Don't fail if two instances are running concurrently.
|
||||||
|
(umask $mkdir_umask &&
|
||||||
|
eval "\$doit_exec \$mkdirprog $prefixes") ||
|
||||||
|
test -d "$dstdir" || exit 1
|
||||||
|
obsolete_mkdir_used=true
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
if test -n "$dir_arg"; then
|
||||||
|
{ test -z "$chowncmd" || $doit $chowncmd "$dst"; } &&
|
||||||
|
{ test -z "$chgrpcmd" || $doit $chgrpcmd "$dst"; } &&
|
||||||
|
{ test "$obsolete_mkdir_used$chowncmd$chgrpcmd" = false ||
|
||||||
|
test -z "$chmodcmd" || $doit $chmodcmd $mode "$dst"; } || exit 1
|
||||||
|
else
|
||||||
|
|
||||||
|
# Make a couple of temp file names in the proper directory.
|
||||||
|
dsttmp=$dstdir/_inst.$$_
|
||||||
|
rmtmp=$dstdir/_rm.$$_
|
||||||
|
|
||||||
|
# Trap to clean up those temp files at exit.
|
||||||
|
trap 'ret=$?; rm -f "$dsttmp" "$rmtmp" && exit $ret' 0
|
||||||
|
|
||||||
|
# Copy the file name to the temp name.
|
||||||
|
(umask $cp_umask && $doit_exec $cpprog "$src" "$dsttmp") &&
|
||||||
|
|
||||||
|
# and set any options; do chmod last to preserve setuid bits.
|
||||||
|
#
|
||||||
|
# If any of these fail, we abort the whole thing. If we want to
|
||||||
|
# ignore errors from any of these, just make sure not to ignore
|
||||||
|
# errors from the above "$doit $cpprog $src $dsttmp" command.
|
||||||
|
#
|
||||||
|
{ test -z "$chowncmd" || $doit $chowncmd "$dsttmp"; } \
|
||||||
|
&& { test -z "$chgrpcmd" || $doit $chgrpcmd "$dsttmp"; } \
|
||||||
|
&& { test -z "$stripcmd" || $doit $stripcmd "$dsttmp"; } \
|
||||||
|
&& { test -z "$chmodcmd" || $doit $chmodcmd $mode "$dsttmp"; } &&
|
||||||
|
|
||||||
|
# Now rename the file to the real destination.
|
||||||
|
{ $doit $mvcmd -f "$dsttmp" "$dst" 2>/dev/null \
|
||||||
|
|| {
|
||||||
|
# The rename failed, perhaps because mv can't rename something else
|
||||||
|
# to itself, or perhaps because mv is so ancient that it does not
|
||||||
|
# support -f.
|
||||||
|
|
||||||
|
# Now remove or move aside any old file at destination location.
|
||||||
|
# We try this two ways since rm can't unlink itself on some
|
||||||
|
# systems and the destination file might be busy for other
|
||||||
|
# reasons. In this case, the final cleanup might fail but the new
|
||||||
|
# file should still install successfully.
|
||||||
|
{
|
||||||
|
if test -f "$dst"; then
|
||||||
|
$doit $rmcmd -f "$dst" 2>/dev/null \
|
||||||
|
|| { $doit $mvcmd -f "$dst" "$rmtmp" 2>/dev/null \
|
||||||
|
&& { $doit $rmcmd -f "$rmtmp" 2>/dev/null; :; }; }\
|
||||||
|
|| {
|
||||||
|
echo "$0: cannot unlink or rename $dst" >&2
|
||||||
|
(exit 1); exit 1
|
||||||
|
}
|
||||||
|
else
|
||||||
|
:
|
||||||
|
fi
|
||||||
|
} &&
|
||||||
|
|
||||||
|
# Now rename the file to the real destination.
|
||||||
|
$doit $mvcmd "$dsttmp" "$dst"
|
||||||
|
}
|
||||||
|
} || exit 1
|
||||||
|
|
||||||
|
trap '' 0
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
# Local variables:
|
||||||
|
# eval: (add-hook 'write-file-hooks 'time-stamp)
|
||||||
|
# time-stamp-start: "scriptversion="
|
||||||
|
# time-stamp-format: "%:y-%02m-%02d.%02H"
|
||||||
|
# time-stamp-end: "$"
|
||||||
|
# End:
|
|
@ -0,0 +1,42 @@
|
||||||
|
{print $0}
|
||||||
|
b=$0
|
||||||
|
/f[1-9]?f[1-9]?i/ {gsub("f[1-9]?f[1-9]?i", "ffi",b) }
|
||||||
|
/f[1-9]?f[1-9]?l/ {gsub("f[1-9]?f[1-9]?l", "ffl",b) }
|
||||||
|
|
||||||
|
/f[1-9]?f/ {gsub("f[1-9]?f", "ff",b); r=1}
|
||||||
|
/f[1-9]?i/ {gsub("f[1-9]?i", "fi",b); r=1}
|
||||||
|
/f[1-9]?l/ {gsub("f[1-9]?l", "fl",b); r=1}
|
||||||
|
|
||||||
|
b!=$0 {
|
||||||
|
# check alternative hyph
|
||||||
|
if (num ~ /\//) {
|
||||||
|
next;
|
||||||
|
}
|
||||||
|
print b
|
||||||
|
}
|
||||||
|
|
||||||
|
c=b
|
||||||
|
|
||||||
|
/^[1-9]?f/ { sub("^[1-9]?f", "ff", c); }
|
||||||
|
/^[1-9]?i/ { sub("^[1-9]?i", "fi", c); }
|
||||||
|
/^[1-9]?l/ { sub("^[1-9]?l", "fl", c); }
|
||||||
|
|
||||||
|
c!=b { print c }
|
||||||
|
|
||||||
|
/f[1-9]?$/ {
|
||||||
|
print gensub("f[1-9]?$", "ff", "g", b);
|
||||||
|
if (c!=b) print gensub("f[1-9]?$", "ff", "g", c);
|
||||||
|
|
||||||
|
print gensub("f[1-9]?$", "fi", "g", b);
|
||||||
|
if (c!=b) print gensub("f[1-9]?$", "fi", "g", c);
|
||||||
|
|
||||||
|
print gensub("f[1-9]?$", "fl", "g", b);
|
||||||
|
if (c!=b) print gensub("f[1-9]?$", "fl", "g", c);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
#s/ffi/ffi/g
|
||||||
|
#s/ffl/ffl/g
|
||||||
|
#s/ff/ff/g
|
||||||
|
#s/fi/fi/g
|
||||||
|
#s/fl/fl/g
|
|
@ -0,0 +1,62 @@
|
||||||
|
.affin9ity
|
||||||
|
.affin9ity's
|
||||||
|
.daffi9est
|
||||||
|
.de9fi9ance
|
||||||
|
.de9fi9ance's
|
||||||
|
.de9fi9ant
|
||||||
|
.de9fi9antly
|
||||||
|
.defic8its
|
||||||
|
.de9fil9ing
|
||||||
|
.fi9ancé
|
||||||
|
.fi9ancé's
|
||||||
|
.fi9ancée
|
||||||
|
.fi9ancées
|
||||||
|
.fi9ancés
|
||||||
|
.fil9i9buster
|
||||||
|
.fil9i9buster's
|
||||||
|
.fil9i9bus9tered
|
||||||
|
.fil9i9bus9ter9ing
|
||||||
|
.fil9i9busters
|
||||||
|
.fil9i9gree
|
||||||
|
.fil9i9gree's
|
||||||
|
.fil9i9greed
|
||||||
|
.fil9i9gree9ing
|
||||||
|
.fil9i9grees
|
||||||
|
.fin8der
|
||||||
|
.fin8der's
|
||||||
|
.find9ers
|
||||||
|
.fin8ner
|
||||||
|
.fin8nier
|
||||||
|
.fin8ni9est
|
||||||
|
.fis8ticuffs
|
||||||
|
.fluffi9est
|
||||||
|
.fly9leaf
|
||||||
|
.fly9leaf's
|
||||||
|
.fly9leaves
|
||||||
|
.fly9sheet
|
||||||
|
.fly9speck
|
||||||
|
.fly9speck's
|
||||||
|
.fly9specked
|
||||||
|
.fly9speck9ing
|
||||||
|
.fly9specks
|
||||||
|
.fly9swat9ter
|
||||||
|
.fly9swat9ters
|
||||||
|
.huffi9est
|
||||||
|
.iffi9est
|
||||||
|
.puffi9est
|
||||||
|
.re9fil9ing
|
||||||
|
.scruffi9est
|
||||||
|
.spiffi9est
|
||||||
|
.stuffi9est
|
||||||
|
.viewfin8der
|
||||||
|
.viewfin8der's
|
||||||
|
.viewfind9ers
|
||||||
|
.affin9ityffis
|
||||||
|
.de9fi9anceffis
|
||||||
|
.fi9ancéffis
|
||||||
|
.fil9i9busterffis
|
||||||
|
.fil9i9greeffis
|
||||||
|
.fin8derffis
|
||||||
|
.fly9leafffis
|
||||||
|
.fly9speckffis
|
||||||
|
.viewfin8derffis
|
|
@ -0,0 +1,367 @@
|
||||||
|
#! /bin/sh
|
||||||
|
# Common stub for a few missing GNU programs while installing.
|
||||||
|
|
||||||
|
scriptversion=2006-05-10.23
|
||||||
|
|
||||||
|
# Copyright (C) 1996, 1997, 1999, 2000, 2002, 2003, 2004, 2005, 2006
|
||||||
|
# Free Software Foundation, Inc.
|
||||||
|
# Originally by Fran,cois Pinard <pinard@iro.umontreal.ca>, 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, 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., 51 Franklin Street, Fifth Floor, Boston, MA
|
||||||
|
# 02110-1301, 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.
|
||||||
|
|
||||||
|
if test $# -eq 0; then
|
||||||
|
echo 1>&2 "Try \`$0 --help' for more information"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
run=:
|
||||||
|
sed_output='s/.* --output[ =]\([^ ]*\).*/\1/p'
|
||||||
|
sed_minuso='s/.* -o \([^ ]*\).*/\1/p'
|
||||||
|
|
||||||
|
# In the cases where this matters, `missing' is being run in the
|
||||||
|
# srcdir already.
|
||||||
|
if test -f configure.ac; then
|
||||||
|
configure_ac=configure.ac
|
||||||
|
else
|
||||||
|
configure_ac=configure.in
|
||||||
|
fi
|
||||||
|
|
||||||
|
msg="missing on your system"
|
||||||
|
|
||||||
|
case $1 in
|
||||||
|
--run)
|
||||||
|
# Try to run requested program, and just exit if it succeeds.
|
||||||
|
run=
|
||||||
|
shift
|
||||||
|
"$@" && exit 0
|
||||||
|
# Exit code 63 means version mismatch. This often happens
|
||||||
|
# when the user try to use an ancient version of a tool on
|
||||||
|
# a file that requires a minimum version. In this case we
|
||||||
|
# we should proceed has if the program had been absent, or
|
||||||
|
# if --run hadn't been passed.
|
||||||
|
if test $? = 63; then
|
||||||
|
run=:
|
||||||
|
msg="probably too old"
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
|
||||||
|
-h|--h|--he|--hel|--help)
|
||||||
|
echo "\
|
||||||
|
$0 [OPTION]... PROGRAM [ARGUMENT]...
|
||||||
|
|
||||||
|
Handle \`PROGRAM [ARGUMENT]...' for when PROGRAM is missing, or return an
|
||||||
|
error status if there is no known handling for PROGRAM.
|
||||||
|
|
||||||
|
Options:
|
||||||
|
-h, --help display this help and exit
|
||||||
|
-v, --version output version information and exit
|
||||||
|
--run try to run the given command, and emulate it if it fails
|
||||||
|
|
||||||
|
Supported PROGRAM values:
|
||||||
|
aclocal touch file \`aclocal.m4'
|
||||||
|
autoconf touch file \`configure'
|
||||||
|
autoheader touch file \`config.h.in'
|
||||||
|
autom4te touch the output file, or create a stub one
|
||||||
|
automake touch all \`Makefile.in' files
|
||||||
|
bison create \`y.tab.[ch]', if possible, from existing .[ch]
|
||||||
|
flex create \`lex.yy.c', if possible, from existing .c
|
||||||
|
help2man touch the output file
|
||||||
|
lex create \`lex.yy.c', if possible, from existing .c
|
||||||
|
makeinfo touch the output file
|
||||||
|
tar try tar, gnutar, gtar, then tar without non-portable flags
|
||||||
|
yacc create \`y.tab.[ch]', if possible, from existing .[ch]
|
||||||
|
|
||||||
|
Send bug reports to <bug-automake@gnu.org>."
|
||||||
|
exit $?
|
||||||
|
;;
|
||||||
|
|
||||||
|
-v|--v|--ve|--ver|--vers|--versi|--versio|--version)
|
||||||
|
echo "missing $scriptversion (GNU Automake)"
|
||||||
|
exit $?
|
||||||
|
;;
|
||||||
|
|
||||||
|
-*)
|
||||||
|
echo 1>&2 "$0: Unknown \`$1' option"
|
||||||
|
echo 1>&2 "Try \`$0 --help' for more information"
|
||||||
|
exit 1
|
||||||
|
;;
|
||||||
|
|
||||||
|
esac
|
||||||
|
|
||||||
|
# Now exit if we have it, but it failed. Also exit now if we
|
||||||
|
# don't have it and --version was passed (most likely to detect
|
||||||
|
# the program).
|
||||||
|
case $1 in
|
||||||
|
lex|yacc)
|
||||||
|
# Not GNU programs, they don't have --version.
|
||||||
|
;;
|
||||||
|
|
||||||
|
tar)
|
||||||
|
if test -n "$run"; then
|
||||||
|
echo 1>&2 "ERROR: \`tar' requires --run"
|
||||||
|
exit 1
|
||||||
|
elif test "x$2" = "x--version" || test "x$2" = "x--help"; then
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
|
||||||
|
*)
|
||||||
|
if test -z "$run" && ($1 --version) > /dev/null 2>&1; then
|
||||||
|
# We have it, but it failed.
|
||||||
|
exit 1
|
||||||
|
elif test "x$2" = "x--version" || test "x$2" = "x--help"; then
|
||||||
|
# Could not run --version or --help. This is probably someone
|
||||||
|
# running `$TOOL --version' or `$TOOL --help' to check whether
|
||||||
|
# $TOOL exists and not knowing $TOOL uses missing.
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
# If it does not exist, or fails to run (possibly an outdated version),
|
||||||
|
# try to emulate it.
|
||||||
|
case $1 in
|
||||||
|
aclocal*)
|
||||||
|
echo 1>&2 "\
|
||||||
|
WARNING: \`$1' is $msg. You should only need it if
|
||||||
|
you modified \`acinclude.m4' or \`${configure_ac}'. You might want
|
||||||
|
to install the \`Automake' and \`Perl' packages. Grab them from
|
||||||
|
any GNU archive site."
|
||||||
|
touch aclocal.m4
|
||||||
|
;;
|
||||||
|
|
||||||
|
autoconf)
|
||||||
|
echo 1>&2 "\
|
||||||
|
WARNING: \`$1' is $msg. You should only need it if
|
||||||
|
you modified \`${configure_ac}'. You might want to install the
|
||||||
|
\`Autoconf' and \`GNU m4' packages. Grab them from any GNU
|
||||||
|
archive site."
|
||||||
|
touch configure
|
||||||
|
;;
|
||||||
|
|
||||||
|
autoheader)
|
||||||
|
echo 1>&2 "\
|
||||||
|
WARNING: \`$1' is $msg. You should only need it if
|
||||||
|
you modified \`acconfig.h' or \`${configure_ac}'. You might want
|
||||||
|
to install the \`Autoconf' and \`GNU m4' packages. Grab them
|
||||||
|
from any GNU archive site."
|
||||||
|
files=`sed -n 's/^[ ]*A[CM]_CONFIG_HEADER(\([^)]*\)).*/\1/p' ${configure_ac}`
|
||||||
|
test -z "$files" && files="config.h"
|
||||||
|
touch_files=
|
||||||
|
for f in $files; do
|
||||||
|
case $f in
|
||||||
|
*:*) touch_files="$touch_files "`echo "$f" |
|
||||||
|
sed -e 's/^[^:]*://' -e 's/:.*//'`;;
|
||||||
|
*) touch_files="$touch_files $f.in";;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
touch $touch_files
|
||||||
|
;;
|
||||||
|
|
||||||
|
automake*)
|
||||||
|
echo 1>&2 "\
|
||||||
|
WARNING: \`$1' is $msg. You should only need it if
|
||||||
|
you modified \`Makefile.am', \`acinclude.m4' or \`${configure_ac}'.
|
||||||
|
You might want to install the \`Automake' and \`Perl' packages.
|
||||||
|
Grab them from any GNU archive site."
|
||||||
|
find . -type f -name Makefile.am -print |
|
||||||
|
sed 's/\.am$/.in/' |
|
||||||
|
while read f; do touch "$f"; done
|
||||||
|
;;
|
||||||
|
|
||||||
|
autom4te)
|
||||||
|
echo 1>&2 "\
|
||||||
|
WARNING: \`$1' is needed, but is $msg.
|
||||||
|
You might have modified some files without having the
|
||||||
|
proper tools for further handling them.
|
||||||
|
You can get \`$1' as part of \`Autoconf' from any GNU
|
||||||
|
archive site."
|
||||||
|
|
||||||
|
file=`echo "$*" | sed -n "$sed_output"`
|
||||||
|
test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"`
|
||||||
|
if test -f "$file"; then
|
||||||
|
touch $file
|
||||||
|
else
|
||||||
|
test -z "$file" || exec >$file
|
||||||
|
echo "#! /bin/sh"
|
||||||
|
echo "# Created by GNU Automake missing as a replacement of"
|
||||||
|
echo "# $ $@"
|
||||||
|
echo "exit 0"
|
||||||
|
chmod +x $file
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
|
||||||
|
bison|yacc)
|
||||||
|
echo 1>&2 "\
|
||||||
|
WARNING: \`$1' $msg. You should only need it if
|
||||||
|
you modified a \`.y' file. You may need the \`Bison' package
|
||||||
|
in order for those modifications to take effect. You can get
|
||||||
|
\`Bison' from any GNU archive site."
|
||||||
|
rm -f y.tab.c y.tab.h
|
||||||
|
if test $# -ne 1; then
|
||||||
|
eval LASTARG="\${$#}"
|
||||||
|
case $LASTARG in
|
||||||
|
*.y)
|
||||||
|
SRCFILE=`echo "$LASTARG" | sed 's/y$/c/'`
|
||||||
|
if test -f "$SRCFILE"; then
|
||||||
|
cp "$SRCFILE" y.tab.c
|
||||||
|
fi
|
||||||
|
SRCFILE=`echo "$LASTARG" | sed 's/y$/h/'`
|
||||||
|
if test -f "$SRCFILE"; then
|
||||||
|
cp "$SRCFILE" y.tab.h
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
fi
|
||||||
|
if test ! -f y.tab.h; then
|
||||||
|
echo >y.tab.h
|
||||||
|
fi
|
||||||
|
if test ! -f y.tab.c; then
|
||||||
|
echo 'main() { return 0; }' >y.tab.c
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
|
||||||
|
lex|flex)
|
||||||
|
echo 1>&2 "\
|
||||||
|
WARNING: \`$1' is $msg. You should only need it if
|
||||||
|
you modified a \`.l' file. You may need the \`Flex' package
|
||||||
|
in order for those modifications to take effect. You can get
|
||||||
|
\`Flex' from any GNU archive site."
|
||||||
|
rm -f lex.yy.c
|
||||||
|
if test $# -ne 1; then
|
||||||
|
eval LASTARG="\${$#}"
|
||||||
|
case $LASTARG in
|
||||||
|
*.l)
|
||||||
|
SRCFILE=`echo "$LASTARG" | sed 's/l$/c/'`
|
||||||
|
if test -f "$SRCFILE"; then
|
||||||
|
cp "$SRCFILE" lex.yy.c
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
fi
|
||||||
|
if test ! -f lex.yy.c; then
|
||||||
|
echo 'main() { return 0; }' >lex.yy.c
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
|
||||||
|
help2man)
|
||||||
|
echo 1>&2 "\
|
||||||
|
WARNING: \`$1' is $msg. You should only need it if
|
||||||
|
you modified a dependency of a manual page. You may need the
|
||||||
|
\`Help2man' package in order for those modifications to take
|
||||||
|
effect. You can get \`Help2man' from any GNU archive site."
|
||||||
|
|
||||||
|
file=`echo "$*" | sed -n "$sed_output"`
|
||||||
|
test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"`
|
||||||
|
if test -f "$file"; then
|
||||||
|
touch $file
|
||||||
|
else
|
||||||
|
test -z "$file" || exec >$file
|
||||||
|
echo ".ab help2man is required to generate this page"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
|
||||||
|
makeinfo)
|
||||||
|
echo 1>&2 "\
|
||||||
|
WARNING: \`$1' is $msg. You should only need it if
|
||||||
|
you modified a \`.texi' or \`.texinfo' file, or any other file
|
||||||
|
indirectly affecting the aspect of the manual. The spurious
|
||||||
|
call might also be the consequence of using a buggy \`make' (AIX,
|
||||||
|
DU, IRIX). You might want to install the \`Texinfo' package or
|
||||||
|
the \`GNU make' package. Grab either from any GNU archive site."
|
||||||
|
# The file to touch is that specified with -o ...
|
||||||
|
file=`echo "$*" | sed -n "$sed_output"`
|
||||||
|
test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"`
|
||||||
|
if test -z "$file"; then
|
||||||
|
# ... or it is the one specified with @setfilename ...
|
||||||
|
infile=`echo "$*" | sed 's/.* \([^ ]*\) *$/\1/'`
|
||||||
|
file=`sed -n '
|
||||||
|
/^@setfilename/{
|
||||||
|
s/.* \([^ ]*\) *$/\1/
|
||||||
|
p
|
||||||
|
q
|
||||||
|
}' $infile`
|
||||||
|
# ... or it is derived from the source name (dir/f.texi becomes f.info)
|
||||||
|
test -z "$file" && file=`echo "$infile" | sed 's,.*/,,;s,.[^.]*$,,'`.info
|
||||||
|
fi
|
||||||
|
# If the file does not exist, the user really needs makeinfo;
|
||||||
|
# let's fail without touching anything.
|
||||||
|
test -f $file || exit 1
|
||||||
|
touch $file
|
||||||
|
;;
|
||||||
|
|
||||||
|
tar)
|
||||||
|
shift
|
||||||
|
|
||||||
|
# We have already tried tar in the generic part.
|
||||||
|
# Look for gnutar/gtar before invocation to avoid ugly error
|
||||||
|
# messages.
|
||||||
|
if (gnutar --version > /dev/null 2>&1); then
|
||||||
|
gnutar "$@" && exit 0
|
||||||
|
fi
|
||||||
|
if (gtar --version > /dev/null 2>&1); then
|
||||||
|
gtar "$@" && exit 0
|
||||||
|
fi
|
||||||
|
firstarg="$1"
|
||||||
|
if shift; then
|
||||||
|
case $firstarg in
|
||||||
|
*o*)
|
||||||
|
firstarg=`echo "$firstarg" | sed s/o//`
|
||||||
|
tar "$firstarg" "$@" && exit 0
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
case $firstarg in
|
||||||
|
*h*)
|
||||||
|
firstarg=`echo "$firstarg" | sed s/h//`
|
||||||
|
tar "$firstarg" "$@" && exit 0
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo 1>&2 "\
|
||||||
|
WARNING: I can't seem to be able to run \`tar' with the given arguments.
|
||||||
|
You may want to install GNU tar or Free paxutils, or check the
|
||||||
|
command line arguments."
|
||||||
|
exit 1
|
||||||
|
;;
|
||||||
|
|
||||||
|
*)
|
||||||
|
echo 1>&2 "\
|
||||||
|
WARNING: \`$1' is needed, and is $msg.
|
||||||
|
You might have modified some files without having the
|
||||||
|
proper tools for further handling them. Check the \`README' file,
|
||||||
|
it often tells you about the needed prerequisites for installing
|
||||||
|
this package. You may also peek at any GNU archive site, in case
|
||||||
|
some other package would contain this missing \`$1' program."
|
||||||
|
exit 1
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
exit 0
|
||||||
|
|
||||||
|
# Local variables:
|
||||||
|
# eval: (add-hook 'write-file-hooks 'time-stamp)
|
||||||
|
# time-stamp-start: "scriptversion="
|
||||||
|
# time-stamp-format: "%:y-%02m-%02d.%02H"
|
||||||
|
# time-stamp-end: "$"
|
||||||
|
# End:
|
|
@ -0,0 +1,262 @@
|
||||||
|
//
|
||||||
|
// A utility for finding substring embeddings in patterns
|
||||||
|
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <string.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
|
||||||
|
#define MAXPATHS (256*1024)
|
||||||
|
|
||||||
|
//
|
||||||
|
//
|
||||||
|
static void die(
|
||||||
|
const char*msg
|
||||||
|
) {
|
||||||
|
fprintf(stderr,"%s\n",msg);
|
||||||
|
exit(1);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// Finds the index of an entry, only used on xxx_key arrays
|
||||||
|
// Caveat: the table has to be sorted
|
||||||
|
static int find_in(
|
||||||
|
char *tab[],
|
||||||
|
int max,
|
||||||
|
const char *pat
|
||||||
|
) {
|
||||||
|
int left=0, right=max-1;
|
||||||
|
while (left <= right) {
|
||||||
|
int mid = ((right-left)/2)+left;
|
||||||
|
int v = strcmp(pat,tab[mid]);
|
||||||
|
if (v>0) {
|
||||||
|
left = mid + 1;
|
||||||
|
} else if (v<0) {
|
||||||
|
right = mid -1;
|
||||||
|
} else {
|
||||||
|
return mid;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// used by partition (which is used by qsort_arr)
|
||||||
|
//
|
||||||
|
static void swap2(
|
||||||
|
char *a[],
|
||||||
|
char *b[],
|
||||||
|
int i,
|
||||||
|
int j
|
||||||
|
) {
|
||||||
|
if (i==j) return;
|
||||||
|
char*v;
|
||||||
|
v=a[i]; a[i]=a[j]; a[j]=v;
|
||||||
|
v=b[i]; b[i]=b[j]; b[j]=v;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// used by qsort_arr
|
||||||
|
//
|
||||||
|
static int partition(
|
||||||
|
char *a[],
|
||||||
|
char *b[],
|
||||||
|
int left,
|
||||||
|
int right,
|
||||||
|
int p
|
||||||
|
) {
|
||||||
|
const char *pivotValue = a[p];
|
||||||
|
int i;
|
||||||
|
swap2(a,b,p,right); // Move pivot to end
|
||||||
|
p = left;
|
||||||
|
for (i=left; i<right; i++) {
|
||||||
|
if (strcmp(a[i],pivotValue)<=0) {
|
||||||
|
swap2(a,b,p,i);
|
||||||
|
p++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
swap2(a,b,right,p); // Move pivot to its final place
|
||||||
|
return p;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
//
|
||||||
|
//
|
||||||
|
static void qsort_arr(
|
||||||
|
char *a[],
|
||||||
|
char *b[],
|
||||||
|
int left,
|
||||||
|
int right
|
||||||
|
) {
|
||||||
|
while (right > left) {
|
||||||
|
int p = left + (right-left)/2; //select a pivot
|
||||||
|
p = partition(a,b, left, right, p);
|
||||||
|
if ((p-1) - left < right - (p+1)) {
|
||||||
|
qsort_arr(a,b, left, p-1);
|
||||||
|
left = p+1;
|
||||||
|
} else {
|
||||||
|
qsort_arr(a,b, p+1, right);
|
||||||
|
right = p-1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// Removes extra '0' entries from the string
|
||||||
|
//
|
||||||
|
static char* compact(
|
||||||
|
char *expr
|
||||||
|
) {
|
||||||
|
int l=strlen(expr);
|
||||||
|
int i,j;
|
||||||
|
for (i=0,j=0; i<l; i++) {
|
||||||
|
if (expr[i]!='0') expr[j++] = expr[i];
|
||||||
|
}
|
||||||
|
expr[j]=0;
|
||||||
|
return expr;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// convert 'n1im' to 0n1i0m0 expressed as a string
|
||||||
|
//
|
||||||
|
static void expand(
|
||||||
|
char *expr,
|
||||||
|
const char *pat,
|
||||||
|
int l
|
||||||
|
) {
|
||||||
|
int el = 0;
|
||||||
|
char last = '.';
|
||||||
|
int i;
|
||||||
|
for (i=0; i<l; i++) {
|
||||||
|
char c = pat[i];
|
||||||
|
if ( (last<'0' || last>'9')
|
||||||
|
&& (c <'0' || c >'9')
|
||||||
|
) {
|
||||||
|
expr[el++] = '0';
|
||||||
|
}
|
||||||
|
expr[el++] = c;
|
||||||
|
last = c;
|
||||||
|
}
|
||||||
|
if (last<'0' || last>'9') expr[el++] = '0';
|
||||||
|
expr[el]=0;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// Combine two patterns, i.e. .ad4der + a2d becomes .a2d4der
|
||||||
|
// The second pattern needs to be a right side match of the first
|
||||||
|
// (modulo digits)
|
||||||
|
static char *combine(
|
||||||
|
char *expr,
|
||||||
|
const char *subexpr
|
||||||
|
) {
|
||||||
|
int l1 = strlen(expr);
|
||||||
|
int l2 = strlen(subexpr);
|
||||||
|
int off = l1-l2;
|
||||||
|
int j;
|
||||||
|
// this works also for utf8 sequences because the substring is identical
|
||||||
|
// to the last substring-length bytes of expr except for the (single byte)
|
||||||
|
// hyphenation encoders
|
||||||
|
for (j=0; j<l2; j++) {
|
||||||
|
if (subexpr[j]>expr[off+j]) {
|
||||||
|
expr[off+j] = subexpr[j];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return expr;
|
||||||
|
}
|
||||||
|
|
||||||
|
static char *pattab_key[MAXPATHS];
|
||||||
|
static char *pattab_val[MAXPATHS];
|
||||||
|
static char *newpattab_key[MAXPATHS];
|
||||||
|
static char *newpattab_val[MAXPATHS];
|
||||||
|
|
||||||
|
int main(int argc, const char* argv[]) {
|
||||||
|
FILE *in, *out;
|
||||||
|
int patterns = 0;
|
||||||
|
int newpatterns = 0;
|
||||||
|
char format[132]; // 64+65+newline+zero+spare
|
||||||
|
int p;
|
||||||
|
if (argc!=3) die("Usage: <orig-file> <new-file>\n");
|
||||||
|
if ((in = fopen(argv[1],"r"))==NULL) die("Could not read input");
|
||||||
|
if ((out = fopen(argv[2],"w"))==NULL) die("Could not create output");
|
||||||
|
// read all patterns and split in pure text (_key) & expanded patterns (_val)
|
||||||
|
while(fgets(format,132,in) != NULL) {
|
||||||
|
int l = strlen(format);
|
||||||
|
if (format[l-1]=='\n') { l--; format[l]=0; } // Chomp
|
||||||
|
if (format[0]=='%' || format[0]==0) {
|
||||||
|
// skip
|
||||||
|
} else {
|
||||||
|
if (format[l-1]=='%') {
|
||||||
|
l--;
|
||||||
|
format[l] = 0; // remove '%'
|
||||||
|
}
|
||||||
|
int i,j;
|
||||||
|
char *pat = (char*) malloc(l+1);
|
||||||
|
char *org = (char*) malloc(l*2+1);
|
||||||
|
if (pat==NULL || org==NULL) die("not enough memory");
|
||||||
|
expand(org,format,l);
|
||||||
|
// remove hyphenation encoders (digits) from pat
|
||||||
|
for (i=0,j=0; i<l; i++) {
|
||||||
|
// odd, but utf-8 proof
|
||||||
|
char c = format[i];
|
||||||
|
if (c<'0' || c>'9') pat[j++]=c;
|
||||||
|
}
|
||||||
|
pat[j]=0;
|
||||||
|
pattab_key[patterns] = pat;
|
||||||
|
pattab_val[patterns++] = org;
|
||||||
|
if (patterns>=MAXPATHS) die("to many base patterns");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
fclose(in);
|
||||||
|
// As we use binairy search, make sure it is sorted
|
||||||
|
qsort_arr(pattab_key,pattab_val,0,patterns-1);
|
||||||
|
|
||||||
|
for (p=0; p<patterns; p++) {
|
||||||
|
char *pat = pattab_key[p];
|
||||||
|
int patsize = strlen(pat);
|
||||||
|
int j,l;
|
||||||
|
for (l=1; l<=patsize; l++) {
|
||||||
|
for (j=1; j<=l; j++) {
|
||||||
|
int i = l-j;
|
||||||
|
int subpat_ndx;
|
||||||
|
char subpat[132];
|
||||||
|
strncpy(subpat,pat+i,j); subpat[j]=0;
|
||||||
|
if ((subpat_ndx = find_in(pattab_key,patterns,subpat))>=0) {
|
||||||
|
int newpat_ndx;
|
||||||
|
char *newpat=malloc(l+1);
|
||||||
|
if (newpat==NULL) die("not enough memory");
|
||||||
|
//printf("%s is embedded in %s\n",pattab_val[subpat_ndx],pattab_val[p]);
|
||||||
|
strncpy(newpat, pat+0,l); newpat[l]=0;
|
||||||
|
if ((newpat_ndx = find_in(newpattab_key,newpatterns,newpat))<0) {
|
||||||
|
char *neworg = malloc(132); // TODO: compute exact length
|
||||||
|
if (neworg==NULL) die("not enough memory");
|
||||||
|
expand(neworg,newpat,l);
|
||||||
|
newpattab_key[newpatterns] = newpat;
|
||||||
|
newpattab_val[newpatterns++] = combine(neworg,pattab_val[subpat_ndx]);
|
||||||
|
if (newpatterns>MAXPATHS) die("to many new patterns");
|
||||||
|
//printf("%*.*s|%*.*s[%s] (%s|%s) = %s\n",i,i,pat,j,j,pat+i,pat+i+j,pattab_val[p],pattab_val[subpat_ndx],neworg);
|
||||||
|
} else {
|
||||||
|
free(newpat);
|
||||||
|
newpattab_val[newpat_ndx] = combine(
|
||||||
|
newpattab_val[newpat_ndx], pattab_val[subpat_ndx] );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* for some tiny extra speed, one could forget the free()s
|
||||||
|
* as the memory is freed anyway on exit().
|
||||||
|
* However, the gain is minimal and now the code can be cleanly
|
||||||
|
* incorporated into other code */
|
||||||
|
for (p=0; p<newpatterns; p++) {
|
||||||
|
fprintf(out,"%s\n",compact(newpattab_val[p]));
|
||||||
|
free(newpattab_key[p]);
|
||||||
|
free(newpattab_val[p]);
|
||||||
|
}
|
||||||
|
fclose(out);
|
||||||
|
|
||||||
|
for (p=0; p<patterns; p++) {
|
||||||
|
free(pattab_key[p]);
|
||||||
|
free(pattab_val[p]);
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
|
@ -0,0 +1,169 @@
|
||||||
|
#!/usr/bin/perl
|
||||||
|
# convert TeX (Patgen) hyphenation patterns to Libhnj format
|
||||||
|
# (A utility for finding substring embeddings in patterns)
|
||||||
|
# usage: substrings.pl inputfile outputfile [encoding]
|
||||||
|
|
||||||
|
if (!defined $ARGV[1]) {
|
||||||
|
print "" .
|
||||||
|
"substrings.pl - convert TeX (Patgen) hyphenation patterns to Libhnj format\n" .
|
||||||
|
"(A utility for finding substring embeddings in patterns)\n" .
|
||||||
|
"usage: substrings.pl infile outfile [encoding [lefthyphenmin [righthyphenmin]]]\n";
|
||||||
|
exit 1;
|
||||||
|
}
|
||||||
|
$fn = $ARGV[0];
|
||||||
|
if (!-e $fn) { $fn = "hyphen.us"; }
|
||||||
|
open HYPH, $fn;
|
||||||
|
open OUT, ">$ARGV[1]";
|
||||||
|
$encoding = $ARGV[2];
|
||||||
|
$lhmin = $ARGV[3];
|
||||||
|
$rhmin = $ARGV[4];
|
||||||
|
if (defined $encoding) { print OUT "$encoding\n"; }
|
||||||
|
if (defined $lhmin) { print OUT "LEFTHYPHENMIN $lhmin\n"; }
|
||||||
|
if (defined $rhmin) { print OUT "RIGHTHYPHENMIN $rhmin\n"; }
|
||||||
|
|
||||||
|
while (<HYPH>)
|
||||||
|
{
|
||||||
|
$pat =~ s/%.*$//g;
|
||||||
|
if (/^\%/) {
|
||||||
|
#comment, ignore
|
||||||
|
} elsif (/^(.+)\/([^,]+),([0-9]+),([0-9]+)$/) {
|
||||||
|
$origpat = $1;
|
||||||
|
$pat = $1;
|
||||||
|
$repl = $2;
|
||||||
|
$beg = $3;
|
||||||
|
$len = $4;
|
||||||
|
$pat =~ s/\d//g;
|
||||||
|
if ($origpat eq $pat) {
|
||||||
|
print "error - missing hyphenation point: $_";
|
||||||
|
exit 1;
|
||||||
|
}
|
||||||
|
push @patlist, $pat;
|
||||||
|
$pattab{$pat} = $origpat;
|
||||||
|
$repltab{$pat} = $repl;
|
||||||
|
$replbeg{$pat} = $beg - 1;
|
||||||
|
$repllen{$pat} = $len;
|
||||||
|
} elsif (/^(.+)\/(.+)$/) {
|
||||||
|
$origpat = $1;
|
||||||
|
$pat = $1;
|
||||||
|
$repl = $2;
|
||||||
|
$pat =~ s/\d//g;
|
||||||
|
if ($origpat eq $pat) {
|
||||||
|
print "error - missing hyphenation point: $_";
|
||||||
|
exit 1;
|
||||||
|
}
|
||||||
|
push @patlist, $pat;
|
||||||
|
$pattab{$pat} = $origpat;
|
||||||
|
$repltab{$pat} = $repl;
|
||||||
|
$replbeg{$pat} = 0;
|
||||||
|
$repllen{$pat} = enclen($pat);
|
||||||
|
} elsif (/^(.+)$/) {
|
||||||
|
$origpat = $1;
|
||||||
|
$pat = $1;
|
||||||
|
$pat =~ s/\d//g;
|
||||||
|
push @patlist, $pat;
|
||||||
|
$pattab{$pat} = $origpat;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
foreach $pat (@patlist) {
|
||||||
|
$patsize = length $pat;
|
||||||
|
for $i (0..$patsize - 1) {
|
||||||
|
for $j (1..$patsize - $i) {
|
||||||
|
$subpat = substr ($pat, $i, $j);
|
||||||
|
if (defined $pattab{$subpat}) {
|
||||||
|
print "$pattab{$subpat} is embedded in $pattab{$pat}\n";
|
||||||
|
$newpat = substr $pat, 0, $i + $j;
|
||||||
|
if (!defined $newpattab{$newpat}) {
|
||||||
|
$newpattab{$newpat} =
|
||||||
|
substr ($pat, 0, $i).$pattab{$subpat};
|
||||||
|
$ss = substr $pat, 0, $i;
|
||||||
|
print "$ss+$pattab{$subpat}\n";
|
||||||
|
push @newpatlist, $newpat;
|
||||||
|
if (defined $repltab{$subpat}) {
|
||||||
|
$begcorr = (($pat =~ /^[.]/) && !($subpat =~ /^[.]/)) ? 1 : 0;
|
||||||
|
$newrepltab{$newpat} = $repltab{$subpat};
|
||||||
|
$newreplbeg{$newpat} = $replbeg{$subpat} + enclen($ss) - $begcorr;
|
||||||
|
$newrepllen{$newpat} = $repllen{$subpat};
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
$tmp = $newpattab{$newpat};
|
||||||
|
$newpattab{$newpat} =
|
||||||
|
combine ($newpattab{$newpat}, $pattab{$subpat});
|
||||||
|
print "$tmp + $pattab{$subpat} -> $newpattab{$newpat}\n";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
foreach $pat (@newpatlist) {
|
||||||
|
if (defined $newrepltab{$pat}) {
|
||||||
|
print OUT $newpattab{$pat}."/".$newrepltab{$pat}.",".($newreplbeg{$pat}+1).",".$newrepllen{$pat}."\n";
|
||||||
|
} else {
|
||||||
|
print OUT $newpattab{$pat}."\n";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#convert 'n1im' to 0n1i0m0 expresed as a list
|
||||||
|
sub expand {
|
||||||
|
my ($pat) = @_;
|
||||||
|
my $last = '.';
|
||||||
|
my @exp = ();
|
||||||
|
|
||||||
|
foreach $c (split (//, $pat)) {
|
||||||
|
if ($last =~ /[\D]/ && $c =~ /[\D]/) {
|
||||||
|
push @exp, 0;
|
||||||
|
}
|
||||||
|
push @exp, $c;
|
||||||
|
$last = $c;
|
||||||
|
}
|
||||||
|
if ($last =~ /[\D]/) {
|
||||||
|
push @exp, 0;
|
||||||
|
}
|
||||||
|
return @exp;
|
||||||
|
}
|
||||||
|
|
||||||
|
# Combine two patterns, i.e. .ad4der + a2d becomes .a2d4der
|
||||||
|
# The second pattern needs to be a substring of the first (modulo digits)
|
||||||
|
sub combine {
|
||||||
|
my @exp = expand shift;
|
||||||
|
my @subexp = expand shift;
|
||||||
|
my $pat1, $pat2;
|
||||||
|
my $i;
|
||||||
|
|
||||||
|
$pat1 = join ('', map { $_ =~ /\d/ ? () : $_ } @exp);
|
||||||
|
$pat2 = join ('', map { $_ =~ /\d/ ? () : $_ } @subexp);
|
||||||
|
|
||||||
|
$begcorr = ($pat1 =~ /^[.]/) ? 1 : 0;
|
||||||
|
|
||||||
|
for $i (0..length ($pat1) - length ($pat2)) {
|
||||||
|
if (substr ($pat1, $i, length $pat2) eq $subpat) {
|
||||||
|
for ($j = 0; $j < @subexp; $j += 2) {
|
||||||
|
if ($subexp[$j] > $exp[2 * $i + $j]) {
|
||||||
|
$exp[2 * $i + $j] = $subexp[$j];
|
||||||
|
if (defined $newrepltab{$pat2} && !defined $newrepltab{$pat1}) {
|
||||||
|
$ss = substr ($pat1, 0, $i);
|
||||||
|
$newrepltab{$pat1} = $newrepltab{$pat2};
|
||||||
|
$newreplbeg{$pat1} = $newreplbeg{$pat2} + enclen($ss) - $begcorr;
|
||||||
|
$newrepllen{$pat1} = $newrepllen{$pat2};
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
print ("$pat1 includes $pat2 at pos $i\n");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return join ('', map { $_ eq '0' ? () : $_ } @exp);
|
||||||
|
}
|
||||||
|
|
||||||
|
# 8 bit or UTF-8 character length (calculating right start position for discretionary hyphenation)
|
||||||
|
sub enclen {
|
||||||
|
my $nonchar = 0;
|
||||||
|
my $len = length($_[0]);
|
||||||
|
if ($encoding eq "UTF-8") {
|
||||||
|
# length of an UTF-8 string equals to the count of the characters not started with '10' bits
|
||||||
|
for ($i = 0; $i < $len; $i++) {
|
||||||
|
if ((ord(substr($_[0], $i, 1)) >> 6) == 2) { $nonchar++; }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return $len - $nonchar;
|
||||||
|
}
|
|
@ -0,0 +1,7 @@
|
||||||
|
#!/bin/sh
|
||||||
|
# tbhyphext.tex hyphenation extension macro converter to hyphenation patterns
|
||||||
|
sed -n '/acad-e-my/,/Zeit-schrift/p' |
|
||||||
|
tr A-Z a-z | tr ' ' '\n' | grep -v '^$' |
|
||||||
|
awk '{printf "%c", "."
|
||||||
|
for (i=1; i <= length($1); i++){printf "%c8", substr($1, i, 1)}
|
||||||
|
print "."}' | sed 's/8-8/9/g;s/^\(..\)8/\1/;s/8\.$/./;'
|
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,128 @@
|
||||||
|
TESTS = \
|
||||||
|
basealt2.test \
|
||||||
|
basealt.test \
|
||||||
|
base.test \
|
||||||
|
conv.test \
|
||||||
|
unicode.test \
|
||||||
|
alt.test \
|
||||||
|
alt2.test \
|
||||||
|
alt3.test \
|
||||||
|
alt4.test \
|
||||||
|
alt5.test \
|
||||||
|
alt6.test \
|
||||||
|
compound.test \
|
||||||
|
compound2.test \
|
||||||
|
compound3.test \
|
||||||
|
compound4.test \
|
||||||
|
settings.test \
|
||||||
|
settings2.test \
|
||||||
|
settings3.test \
|
||||||
|
settings4.test \
|
||||||
|
lhmin.test \
|
||||||
|
rhmin.test \
|
||||||
|
lig.test \
|
||||||
|
hyphen.test \
|
||||||
|
num.test
|
||||||
|
|
||||||
|
distclean-local:
|
||||||
|
-rm -rf testSubDir
|
||||||
|
|
||||||
|
EXTRA_DIST = \
|
||||||
|
test.sh \
|
||||||
|
alt2.hyph \
|
||||||
|
alt2.pat \
|
||||||
|
alt2.word \
|
||||||
|
alt3.hyph \
|
||||||
|
alt3.pat \
|
||||||
|
alt3.word \
|
||||||
|
alt4.hyph \
|
||||||
|
alt4.pat \
|
||||||
|
alt4.word \
|
||||||
|
alt5.hyph \
|
||||||
|
alt5.pat \
|
||||||
|
alt5.word \
|
||||||
|
alt6.hyph \
|
||||||
|
alt6.pat \
|
||||||
|
alt6.word \
|
||||||
|
alt.hyph \
|
||||||
|
alt.pat \
|
||||||
|
alt.word \
|
||||||
|
basealt2.hyph \
|
||||||
|
basealt2.pat \
|
||||||
|
basealt2.word \
|
||||||
|
basealt.hyph \
|
||||||
|
basealt.pat \
|
||||||
|
basealt.word \
|
||||||
|
base.hyph \
|
||||||
|
base.pat \
|
||||||
|
base.word \
|
||||||
|
conv.dic \
|
||||||
|
conv.hyph \
|
||||||
|
conv.pat \
|
||||||
|
conv.word \
|
||||||
|
unicode.hyph \
|
||||||
|
unicode.pat \
|
||||||
|
unicode.word \
|
||||||
|
compound.hyph \
|
||||||
|
compound.pat \
|
||||||
|
compound.word \
|
||||||
|
compound2.hyph \
|
||||||
|
compound2.pat \
|
||||||
|
compound2.word \
|
||||||
|
compound3.hyph \
|
||||||
|
compound3.pat \
|
||||||
|
compound3.word \
|
||||||
|
compound4.hyph \
|
||||||
|
compound4.pat \
|
||||||
|
compound4.word \
|
||||||
|
settings.hyph \
|
||||||
|
settings.pat \
|
||||||
|
settings.word \
|
||||||
|
settings2.hyph \
|
||||||
|
settings2.pat \
|
||||||
|
settings2.word \
|
||||||
|
settings3.hyph \
|
||||||
|
settings3.pat \
|
||||||
|
settings3.word \
|
||||||
|
settings4.hyph \
|
||||||
|
settings4.pat \
|
||||||
|
settings4.word \
|
||||||
|
alt2.test \
|
||||||
|
alt3.test \
|
||||||
|
alt4.test \
|
||||||
|
alt5.test \
|
||||||
|
alt6.test \
|
||||||
|
alt.test \
|
||||||
|
basealt2.test \
|
||||||
|
basealt.test \
|
||||||
|
base.test \
|
||||||
|
conv.test \
|
||||||
|
unicode.test \
|
||||||
|
compound.test \
|
||||||
|
compound2.test \
|
||||||
|
compound3.test \
|
||||||
|
compound4.test \
|
||||||
|
settings.test \
|
||||||
|
settings2.test \
|
||||||
|
settings3.test \
|
||||||
|
settings4.test \
|
||||||
|
lhmin.hyph \
|
||||||
|
lhmin.pat \
|
||||||
|
lhmin.word \
|
||||||
|
lhmin.test \
|
||||||
|
rhmin.hyph \
|
||||||
|
rhmin.pat \
|
||||||
|
rhmin.word \
|
||||||
|
rhmin.test \
|
||||||
|
lig.hyph \
|
||||||
|
lig.pat \
|
||||||
|
lig.test \
|
||||||
|
lig.word \
|
||||||
|
hyphen.hyph \
|
||||||
|
hyphen.pat \
|
||||||
|
hyphen.test \
|
||||||
|
hyphen.word \
|
||||||
|
num.hyph \
|
||||||
|
num.pat \
|
||||||
|
num.test \
|
||||||
|
num.word
|
|
@ -0,0 +1,579 @@
|
||||||
|
# Makefile.in generated by automake 1.11.3 from Makefile.am.
|
||||||
|
# @configure_input@
|
||||||
|
|
||||||
|
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
|
||||||
|
# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 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@
|
||||||
|
VPATH = @srcdir@
|
||||||
|
pkgdatadir = $(datadir)/@PACKAGE@
|
||||||
|
pkgincludedir = $(includedir)/@PACKAGE@
|
||||||
|
pkglibdir = $(libdir)/@PACKAGE@
|
||||||
|
pkglibexecdir = $(libexecdir)/@PACKAGE@
|
||||||
|
am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
|
||||||
|
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 = tests
|
||||||
|
DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
|
||||||
|
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
|
||||||
|
am__aclocal_m4_deps = $(top_srcdir)/configure.in
|
||||||
|
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
|
||||||
|
$(ACLOCAL_M4)
|
||||||
|
mkinstalldirs = $(install_sh) -d
|
||||||
|
CONFIG_CLEAN_FILES =
|
||||||
|
CONFIG_CLEAN_VPATH_FILES =
|
||||||
|
SOURCES =
|
||||||
|
DIST_SOURCES =
|
||||||
|
am__tty_colors = \
|
||||||
|
red=; grn=; lgn=; blu=; std=
|
||||||
|
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
|
||||||
|
ACLOCAL = @ACLOCAL@
|
||||||
|
AMTAR = @AMTAR@
|
||||||
|
AR = @AR@
|
||||||
|
AUTOCONF = @AUTOCONF@
|
||||||
|
AUTOHEADER = @AUTOHEADER@
|
||||||
|
AUTOMAKE = @AUTOMAKE@
|
||||||
|
AWK = @AWK@
|
||||||
|
CC = @CC@
|
||||||
|
CCDEPMODE = @CCDEPMODE@
|
||||||
|
CFLAGS = @CFLAGS@
|
||||||
|
CPP = @CPP@
|
||||||
|
CPPFLAGS = @CPPFLAGS@
|
||||||
|
CYGPATH_W = @CYGPATH_W@
|
||||||
|
DEFS = @DEFS@
|
||||||
|
DEPDIR = @DEPDIR@
|
||||||
|
DLLTOOL = @DLLTOOL@
|
||||||
|
DSYMUTIL = @DSYMUTIL@
|
||||||
|
DUMPBIN = @DUMPBIN@
|
||||||
|
ECHO_C = @ECHO_C@
|
||||||
|
ECHO_N = @ECHO_N@
|
||||||
|
ECHO_T = @ECHO_T@
|
||||||
|
EGREP = @EGREP@
|
||||||
|
EXEEXT = @EXEEXT@
|
||||||
|
FGREP = @FGREP@
|
||||||
|
GREP = @GREP@
|
||||||
|
INSTALL = @INSTALL@
|
||||||
|
INSTALL_DATA = @INSTALL_DATA@
|
||||||
|
INSTALL_PROGRAM = @INSTALL_PROGRAM@
|
||||||
|
INSTALL_SCRIPT = @INSTALL_SCRIPT@
|
||||||
|
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
|
||||||
|
LD = @LD@
|
||||||
|
LDFLAGS = @LDFLAGS@
|
||||||
|
LIBOBJS = @LIBOBJS@
|
||||||
|
LIBS = @LIBS@
|
||||||
|
LIBTOOL = @LIBTOOL@
|
||||||
|
LIPO = @LIPO@
|
||||||
|
LN_S = @LN_S@
|
||||||
|
LTLIBOBJS = @LTLIBOBJS@
|
||||||
|
MAKEINFO = @MAKEINFO@
|
||||||
|
MANIFEST_TOOL = @MANIFEST_TOOL@
|
||||||
|
MKDIR_P = @MKDIR_P@
|
||||||
|
NM = @NM@
|
||||||
|
NMEDIT = @NMEDIT@
|
||||||
|
OBJDUMP = @OBJDUMP@
|
||||||
|
OBJEXT = @OBJEXT@
|
||||||
|
OTOOL = @OTOOL@
|
||||||
|
OTOOL64 = @OTOOL64@
|
||||||
|
PACKAGE = @PACKAGE@
|
||||||
|
PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
|
||||||
|
PACKAGE_NAME = @PACKAGE_NAME@
|
||||||
|
PACKAGE_STRING = @PACKAGE_STRING@
|
||||||
|
PACKAGE_TARNAME = @PACKAGE_TARNAME@
|
||||||
|
PACKAGE_URL = @PACKAGE_URL@
|
||||||
|
PACKAGE_VERSION = @PACKAGE_VERSION@
|
||||||
|
PATH_SEPARATOR = @PATH_SEPARATOR@
|
||||||
|
RANLIB = @RANLIB@
|
||||||
|
SED = @SED@
|
||||||
|
SET_MAKE = @SET_MAKE@
|
||||||
|
SHELL = @SHELL@
|
||||||
|
STRIP = @STRIP@
|
||||||
|
VERSION = @VERSION@
|
||||||
|
abs_builddir = @abs_builddir@
|
||||||
|
abs_srcdir = @abs_srcdir@
|
||||||
|
abs_top_builddir = @abs_top_builddir@
|
||||||
|
abs_top_srcdir = @abs_top_srcdir@
|
||||||
|
ac_ct_AR = @ac_ct_AR@
|
||||||
|
ac_ct_CC = @ac_ct_CC@
|
||||||
|
ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
|
||||||
|
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@
|
||||||
|
builddir = @builddir@
|
||||||
|
datadir = @datadir@
|
||||||
|
datarootdir = @datarootdir@
|
||||||
|
docdir = @docdir@
|
||||||
|
dvidir = @dvidir@
|
||||||
|
exec_prefix = @exec_prefix@
|
||||||
|
host = @host@
|
||||||
|
host_alias = @host_alias@
|
||||||
|
host_cpu = @host_cpu@
|
||||||
|
host_os = @host_os@
|
||||||
|
host_vendor = @host_vendor@
|
||||||
|
htmldir = @htmldir@
|
||||||
|
includedir = @includedir@
|
||||||
|
infodir = @infodir@
|
||||||
|
install_sh = @install_sh@
|
||||||
|
libdir = @libdir@
|
||||||
|
libexecdir = @libexecdir@
|
||||||
|
localedir = @localedir@
|
||||||
|
localstatedir = @localstatedir@
|
||||||
|
mandir = @mandir@
|
||||||
|
mkdir_p = @mkdir_p@
|
||||||
|
oldincludedir = @oldincludedir@
|
||||||
|
pdfdir = @pdfdir@
|
||||||
|
prefix = @prefix@
|
||||||
|
program_transform_name = @program_transform_name@
|
||||||
|
psdir = @psdir@
|
||||||
|
sbindir = @sbindir@
|
||||||
|
sharedstatedir = @sharedstatedir@
|
||||||
|
srcdir = @srcdir@
|
||||||
|
sysconfdir = @sysconfdir@
|
||||||
|
target_alias = @target_alias@
|
||||||
|
top_build_prefix = @top_build_prefix@
|
||||||
|
top_builddir = @top_builddir@
|
||||||
|
top_srcdir = @top_srcdir@
|
||||||
|
TESTS = \
|
||||||
|
basealt2.test \
|
||||||
|
basealt.test \
|
||||||
|
base.test \
|
||||||
|
conv.test \
|
||||||
|
unicode.test \
|
||||||
|
alt.test \
|
||||||
|
alt2.test \
|
||||||
|
alt3.test \
|
||||||
|
alt4.test \
|
||||||
|
alt5.test \
|
||||||
|
alt6.test \
|
||||||
|
compound.test \
|
||||||
|
compound2.test \
|
||||||
|
compound3.test \
|
||||||
|
compound4.test \
|
||||||
|
settings.test \
|
||||||
|
settings2.test \
|
||||||
|
settings3.test \
|
||||||
|
settings4.test \
|
||||||
|
lhmin.test \
|
||||||
|
rhmin.test \
|
||||||
|
lig.test \
|
||||||
|
hyphen.test \
|
||||||
|
num.test
|
||||||
|
|
||||||
|
EXTRA_DIST = \
|
||||||
|
test.sh \
|
||||||
|
alt2.hyph \
|
||||||
|
alt2.pat \
|
||||||
|
alt2.word \
|
||||||
|
alt3.hyph \
|
||||||
|
alt3.pat \
|
||||||
|
alt3.word \
|
||||||
|
alt4.hyph \
|
||||||
|
alt4.pat \
|
||||||
|
alt4.word \
|
||||||
|
alt5.hyph \
|
||||||
|
alt5.pat \
|
||||||
|
alt5.word \
|
||||||
|
alt6.hyph \
|
||||||
|
alt6.pat \
|
||||||
|
alt6.word \
|
||||||
|
alt.hyph \
|
||||||
|
alt.pat \
|
||||||
|
alt.word \
|
||||||
|
basealt2.hyph \
|
||||||
|
basealt2.pat \
|
||||||
|
basealt2.word \
|
||||||
|
basealt.hyph \
|
||||||
|
basealt.pat \
|
||||||
|
basealt.word \
|
||||||
|
base.hyph \
|
||||||
|
base.pat \
|
||||||
|
base.word \
|
||||||
|
conv.dic \
|
||||||
|
conv.hyph \
|
||||||
|
conv.pat \
|
||||||
|
conv.word \
|
||||||
|
unicode.hyph \
|
||||||
|
unicode.pat \
|
||||||
|
unicode.word \
|
||||||
|
compound.hyph \
|
||||||
|
compound.pat \
|
||||||
|
compound.word \
|
||||||
|
compound2.hyph \
|
||||||
|
compound2.pat \
|
||||||
|
compound2.word \
|
||||||
|
compound3.hyph \
|
||||||
|
compound3.pat \
|
||||||
|
compound3.word \
|
||||||
|
compound4.hyph \
|
||||||
|
compound4.pat \
|
||||||
|
compound4.word \
|
||||||
|
settings.hyph \
|
||||||
|
settings.pat \
|
||||||
|
settings.word \
|
||||||
|
settings2.hyph \
|
||||||
|
settings2.pat \
|
||||||
|
settings2.word \
|
||||||
|
settings3.hyph \
|
||||||
|
settings3.pat \
|
||||||
|
settings3.word \
|
||||||
|
settings4.hyph \
|
||||||
|
settings4.pat \
|
||||||
|
settings4.word \
|
||||||
|
alt2.test \
|
||||||
|
alt3.test \
|
||||||
|
alt4.test \
|
||||||
|
alt5.test \
|
||||||
|
alt6.test \
|
||||||
|
alt.test \
|
||||||
|
basealt2.test \
|
||||||
|
basealt.test \
|
||||||
|
base.test \
|
||||||
|
conv.test \
|
||||||
|
unicode.test \
|
||||||
|
compound.test \
|
||||||
|
compound2.test \
|
||||||
|
compound3.test \
|
||||||
|
compound4.test \
|
||||||
|
settings.test \
|
||||||
|
settings2.test \
|
||||||
|
settings3.test \
|
||||||
|
settings4.test \
|
||||||
|
lhmin.hyph \
|
||||||
|
lhmin.pat \
|
||||||
|
lhmin.word \
|
||||||
|
lhmin.test \
|
||||||
|
rhmin.hyph \
|
||||||
|
rhmin.pat \
|
||||||
|
rhmin.word \
|
||||||
|
rhmin.test \
|
||||||
|
lig.hyph \
|
||||||
|
lig.pat \
|
||||||
|
lig.test \
|
||||||
|
lig.word \
|
||||||
|
hyphen.hyph \
|
||||||
|
hyphen.pat \
|
||||||
|
hyphen.test \
|
||||||
|
hyphen.word \
|
||||||
|
num.hyph \
|
||||||
|
num.pat \
|
||||||
|
num.test \
|
||||||
|
num.word
|
||||||
|
|
||||||
|
all: all-am
|
||||||
|
|
||||||
|
.SUFFIXES:
|
||||||
|
$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
|
||||||
|
@for dep in $?; do \
|
||||||
|
case '$(am__configure_deps)' in \
|
||||||
|
*$$dep*) \
|
||||||
|
( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
|
||||||
|
&& { if test -f $@; then exit 0; else break; fi; }; \
|
||||||
|
exit 1;; \
|
||||||
|
esac; \
|
||||||
|
done; \
|
||||||
|
echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tests/Makefile'; \
|
||||||
|
$(am__cd) $(top_srcdir) && \
|
||||||
|
$(AUTOMAKE) --gnu tests/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: $(am__configure_deps)
|
||||||
|
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
||||||
|
$(ACLOCAL_M4): $(am__aclocal_m4_deps)
|
||||||
|
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
||||||
|
$(am__aclocal_m4_deps):
|
||||||
|
|
||||||
|
mostlyclean-libtool:
|
||||||
|
-rm -f *.lo
|
||||||
|
|
||||||
|
clean-libtool:
|
||||||
|
-rm -rf .libs _libs
|
||||||
|
tags: TAGS
|
||||||
|
TAGS:
|
||||||
|
|
||||||
|
ctags: CTAGS
|
||||||
|
CTAGS:
|
||||||
|
|
||||||
|
|
||||||
|
check-TESTS: $(TESTS)
|
||||||
|
@failed=0; all=0; xfail=0; xpass=0; skip=0; \
|
||||||
|
srcdir=$(srcdir); export srcdir; \
|
||||||
|
list=' $(TESTS) '; \
|
||||||
|
$(am__tty_colors); \
|
||||||
|
if test -n "$$list"; then \
|
||||||
|
for tst in $$list; do \
|
||||||
|
if test -f ./$$tst; then dir=./; \
|
||||||
|
elif test -f $$tst; then dir=; \
|
||||||
|
else dir="$(srcdir)/"; fi; \
|
||||||
|
if $(TESTS_ENVIRONMENT) $${dir}$$tst; then \
|
||||||
|
all=`expr $$all + 1`; \
|
||||||
|
case " $(XFAIL_TESTS) " in \
|
||||||
|
*[\ \ ]$$tst[\ \ ]*) \
|
||||||
|
xpass=`expr $$xpass + 1`; \
|
||||||
|
failed=`expr $$failed + 1`; \
|
||||||
|
col=$$red; res=XPASS; \
|
||||||
|
;; \
|
||||||
|
*) \
|
||||||
|
col=$$grn; res=PASS; \
|
||||||
|
;; \
|
||||||
|
esac; \
|
||||||
|
elif test $$? -ne 77; then \
|
||||||
|
all=`expr $$all + 1`; \
|
||||||
|
case " $(XFAIL_TESTS) " in \
|
||||||
|
*[\ \ ]$$tst[\ \ ]*) \
|
||||||
|
xfail=`expr $$xfail + 1`; \
|
||||||
|
col=$$lgn; res=XFAIL; \
|
||||||
|
;; \
|
||||||
|
*) \
|
||||||
|
failed=`expr $$failed + 1`; \
|
||||||
|
col=$$red; res=FAIL; \
|
||||||
|
;; \
|
||||||
|
esac; \
|
||||||
|
else \
|
||||||
|
skip=`expr $$skip + 1`; \
|
||||||
|
col=$$blu; res=SKIP; \
|
||||||
|
fi; \
|
||||||
|
echo "$${col}$$res$${std}: $$tst"; \
|
||||||
|
done; \
|
||||||
|
if test "$$all" -eq 1; then \
|
||||||
|
tests="test"; \
|
||||||
|
All=""; \
|
||||||
|
else \
|
||||||
|
tests="tests"; \
|
||||||
|
All="All "; \
|
||||||
|
fi; \
|
||||||
|
if test "$$failed" -eq 0; then \
|
||||||
|
if test "$$xfail" -eq 0; then \
|
||||||
|
banner="$$All$$all $$tests passed"; \
|
||||||
|
else \
|
||||||
|
if test "$$xfail" -eq 1; then failures=failure; else failures=failures; fi; \
|
||||||
|
banner="$$All$$all $$tests behaved as expected ($$xfail expected $$failures)"; \
|
||||||
|
fi; \
|
||||||
|
else \
|
||||||
|
if test "$$xpass" -eq 0; then \
|
||||||
|
banner="$$failed of $$all $$tests failed"; \
|
||||||
|
else \
|
||||||
|
if test "$$xpass" -eq 1; then passes=pass; else passes=passes; fi; \
|
||||||
|
banner="$$failed of $$all $$tests did not behave as expected ($$xpass unexpected $$passes)"; \
|
||||||
|
fi; \
|
||||||
|
fi; \
|
||||||
|
dashes="$$banner"; \
|
||||||
|
skipped=""; \
|
||||||
|
if test "$$skip" -ne 0; then \
|
||||||
|
if test "$$skip" -eq 1; then \
|
||||||
|
skipped="($$skip test was not run)"; \
|
||||||
|
else \
|
||||||
|
skipped="($$skip tests were not run)"; \
|
||||||
|
fi; \
|
||||||
|
test `echo "$$skipped" | wc -c` -le `echo "$$banner" | wc -c` || \
|
||||||
|
dashes="$$skipped"; \
|
||||||
|
fi; \
|
||||||
|
report=""; \
|
||||||
|
if test "$$failed" -ne 0 && test -n "$(PACKAGE_BUGREPORT)"; then \
|
||||||
|
report="Please report to $(PACKAGE_BUGREPORT)"; \
|
||||||
|
test `echo "$$report" | wc -c` -le `echo "$$banner" | wc -c` || \
|
||||||
|
dashes="$$report"; \
|
||||||
|
fi; \
|
||||||
|
dashes=`echo "$$dashes" | sed s/./=/g`; \
|
||||||
|
if test "$$failed" -eq 0; then \
|
||||||
|
col="$$grn"; \
|
||||||
|
else \
|
||||||
|
col="$$red"; \
|
||||||
|
fi; \
|
||||||
|
echo "$${col}$$dashes$${std}"; \
|
||||||
|
echo "$${col}$$banner$${std}"; \
|
||||||
|
test -z "$$skipped" || echo "$${col}$$skipped$${std}"; \
|
||||||
|
test -z "$$report" || echo "$${col}$$report$${std}"; \
|
||||||
|
echo "$${col}$$dashes$${std}"; \
|
||||||
|
test "$$failed" -eq 0; \
|
||||||
|
else :; fi
|
||||||
|
|
||||||
|
distdir: $(DISTFILES)
|
||||||
|
@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
|
||||||
|
topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
|
||||||
|
list='$(DISTFILES)'; \
|
||||||
|
dist_files=`for file in $$list; do echo $$file; done | \
|
||||||
|
sed -e "s|^$$srcdirstrip/||;t" \
|
||||||
|
-e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
|
||||||
|
case $$dist_files in \
|
||||||
|
*/*) $(MKDIR_P) `echo "$$dist_files" | \
|
||||||
|
sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
|
||||||
|
sort -u` ;; \
|
||||||
|
esac; \
|
||||||
|
for file in $$dist_files; do \
|
||||||
|
if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
|
||||||
|
if test -d $$d/$$file; then \
|
||||||
|
dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
|
||||||
|
if test -d "$(distdir)/$$file"; then \
|
||||||
|
find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
|
||||||
|
fi; \
|
||||||
|
if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
|
||||||
|
cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
|
||||||
|
find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
|
||||||
|
fi; \
|
||||||
|
cp -fpR $$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
|
||||||
|
$(MAKE) $(AM_MAKEFLAGS) check-TESTS
|
||||||
|
check: check-am
|
||||||
|
all-am: Makefile
|
||||||
|
installdirs:
|
||||||
|
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:
|
||||||
|
if test -z '$(STRIP)'; then \
|
||||||
|
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
|
||||||
|
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
|
||||||
|
install; \
|
||||||
|
else \
|
||||||
|
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
|
||||||
|
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
|
||||||
|
"INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
|
||||||
|
fi
|
||||||
|
mostlyclean-generic:
|
||||||
|
|
||||||
|
clean-generic:
|
||||||
|
|
||||||
|
distclean-generic:
|
||||||
|
-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
|
||||||
|
-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_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-am
|
||||||
|
|
||||||
|
clean-am: clean-generic clean-libtool mostlyclean-am
|
||||||
|
|
||||||
|
distclean: distclean-am
|
||||||
|
-rm -f Makefile
|
||||||
|
distclean-am: clean-am distclean-generic distclean-local
|
||||||
|
|
||||||
|
dvi: dvi-am
|
||||||
|
|
||||||
|
dvi-am:
|
||||||
|
|
||||||
|
html: html-am
|
||||||
|
|
||||||
|
html-am:
|
||||||
|
|
||||||
|
info: info-am
|
||||||
|
|
||||||
|
info-am:
|
||||||
|
|
||||||
|
install-data-am:
|
||||||
|
|
||||||
|
install-dvi: install-dvi-am
|
||||||
|
|
||||||
|
install-dvi-am:
|
||||||
|
|
||||||
|
install-exec-am:
|
||||||
|
|
||||||
|
install-html: install-html-am
|
||||||
|
|
||||||
|
install-html-am:
|
||||||
|
|
||||||
|
install-info: install-info-am
|
||||||
|
|
||||||
|
install-info-am:
|
||||||
|
|
||||||
|
install-man:
|
||||||
|
|
||||||
|
install-pdf: install-pdf-am
|
||||||
|
|
||||||
|
install-pdf-am:
|
||||||
|
|
||||||
|
install-ps: install-ps-am
|
||||||
|
|
||||||
|
install-ps-am:
|
||||||
|
|
||||||
|
installcheck-am:
|
||||||
|
|
||||||
|
maintainer-clean: maintainer-clean-am
|
||||||
|
-rm -f Makefile
|
||||||
|
maintainer-clean-am: distclean-am maintainer-clean-generic
|
||||||
|
|
||||||
|
mostlyclean: mostlyclean-am
|
||||||
|
|
||||||
|
mostlyclean-am: mostlyclean-generic mostlyclean-libtool
|
||||||
|
|
||||||
|
pdf: pdf-am
|
||||||
|
|
||||||
|
pdf-am:
|
||||||
|
|
||||||
|
ps: ps-am
|
||||||
|
|
||||||
|
ps-am:
|
||||||
|
|
||||||
|
uninstall-am:
|
||||||
|
|
||||||
|
.MAKE: check-am install-am install-strip
|
||||||
|
|
||||||
|
.PHONY: all all-am check check-TESTS check-am clean clean-generic \
|
||||||
|
clean-libtool distclean distclean-generic distclean-libtool \
|
||||||
|
distclean-local distdir dvi dvi-am html html-am info info-am \
|
||||||
|
install install-am install-data install-data-am install-dvi \
|
||||||
|
install-dvi-am install-exec install-exec-am install-html \
|
||||||
|
install-html-am install-info install-info-am install-man \
|
||||||
|
install-pdf install-pdf-am install-ps install-ps-am \
|
||||||
|
install-strip installcheck installcheck-am installdirs \
|
||||||
|
maintainer-clean maintainer-clean-generic mostlyclean \
|
||||||
|
mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
|
||||||
|
uninstall uninstall-am
|
||||||
|
|
||||||
|
|
||||||
|
distclean-local:
|
||||||
|
-rm -rf testSubDir
|
||||||
|
|
||||||
|
# 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:
|
|
@ -0,0 +1 @@
|
||||||
|
schiff=fahrt
|
|
@ -0,0 +1,3 @@
|
||||||
|
ISO8859-1
|
||||||
|
% German prereform hyphenation: Schiffahrt -> Schiff-fahrt
|
||||||
|
f1f/ff=f,1,2
|
|
@ -0,0 +1,4 @@
|
||||||
|
#!/bin/sh
|
||||||
|
DIR="`dirname $0`"
|
||||||
|
NAME="`basename $0 .test`"
|
||||||
|
$DIR/test.sh $NAME.pat $NAME.word $NAME.hyph
|
|
@ -0,0 +1 @@
|
||||||
|
schiffahrt
|
|
@ -0,0 +1,2 @@
|
||||||
|
schif=fen
|
||||||
|
schiff=fahrt
|
|
@ -0,0 +1,6 @@
|
||||||
|
ISO8859-1
|
||||||
|
% German prereform hyphenation: Schiffahrt -> Schiff-fahrt
|
||||||
|
f1f
|
||||||
|
if3fa/ff=f,2,2
|
||||||
|
% pattern added by substrings.pl:
|
||||||
|
if1f
|
|
@ -0,0 +1,4 @@
|
||||||
|
#!/bin/sh
|
||||||
|
DIR="`dirname $0`"
|
||||||
|
NAME="`basename $0 .test`"
|
||||||
|
$DIR/test.sh $NAME.pat $NAME.word $NAME.hyph
|
|
@ -0,0 +1,2 @@
|
||||||
|
schiffen
|
||||||
|
schiffahrt
|
|
@ -0,0 +1,3 @@
|
||||||
|
schif=fen
|
||||||
|
schiff=fahrt
|
||||||
|
tenerif=fa
|
|
@ -0,0 +1,8 @@
|
||||||
|
ISO8859-1
|
||||||
|
% German prereform hyphenation: Schiffahrt -> Schiff-fahrt
|
||||||
|
f1f
|
||||||
|
if3fa/ff=f,2,2
|
||||||
|
tenerif5fa
|
||||||
|
% patterns added by substrings.pl:
|
||||||
|
if1f
|
||||||
|
tenerif1f
|
|
@ -0,0 +1,4 @@
|
||||||
|
#!/bin/sh
|
||||||
|
DIR="`dirname $0`"
|
||||||
|
NAME="`basename $0 .test`"
|
||||||
|
$DIR/test.sh $NAME.pat $NAME.word $NAME.hyph
|
|
@ -0,0 +1,3 @@
|
||||||
|
schiffen
|
||||||
|
schiffahrt
|
||||||
|
teneriffa
|
|
@ -0,0 +1 @@
|
||||||
|
asz=szony=nyal
|
|
@ -0,0 +1,4 @@
|
||||||
|
ISO8859-2
|
||||||
|
% Hungarian simplified double 2-character consonants: ssz -> sz-sz, nny -> ny-ny
|
||||||
|
s1sz/sz=sz,1,3
|
||||||
|
n1ny/ny=ny,1,3
|
|
@ -0,0 +1,4 @@
|
||||||
|
#!/bin/sh
|
||||||
|
DIR="`dirname $0`"
|
||||||
|
NAME="`basename $0 .test`"
|
||||||
|
$DIR/test.sh $NAME.pat $NAME.word $NAME.hyph
|
|
@ -0,0 +1 @@
|
||||||
|
asszonnyal
|
|
@ -0,0 +1 @@
|
||||||
|
oma=tje
|
|
@ -0,0 +1,4 @@
|
||||||
|
ISO8859-1
|
||||||
|
% Dutch example: omaatje -> oma-tje
|
||||||
|
%aa1tje./a=tje,1,5 (alternative solution)
|
||||||
|
aa1tje./=,2,1
|
|
@ -0,0 +1,4 @@
|
||||||
|
#!/bin/sh
|
||||||
|
DIR="`dirname $0`"
|
||||||
|
NAME="`basename $0 .test`"
|
||||||
|
$DIR/test.sh $NAME.pat $NAME.word $NAME.hyph
|
|
@ -0,0 +1 @@
|
||||||
|
omaatje
|
|
@ -0,0 +1,2 @@
|
||||||
|
exá=ample
|
||||||
|
exá=amplxá=ame
|
|
@ -0,0 +1,2 @@
|
||||||
|
UTF-8
|
||||||
|
xé1ém/á=a,2,2
|
|
@ -0,0 +1,4 @@
|
||||||
|
#!/bin/sh
|
||||||
|
DIR="`dirname $0`"
|
||||||
|
NAME="`basename $0 .test`"
|
||||||
|
$DIR/test.sh $NAME.pat $NAME.word $NAME.hyph
|
|
@ -0,0 +1,2 @@
|
||||||
|
exéémple
|
||||||
|
exéémplxééme
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,4 @@
|
||||||
|
#!/bin/sh
|
||||||
|
DIR="`dirname $0`"
|
||||||
|
NAME="`basename $0 .test`"
|
||||||
|
$DIR/test.sh $NAME.pat $NAME.word $NAME.hyph
|
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,8 @@
|
||||||
|
paral=lel
|
||||||
|
oma=tje
|
||||||
|
café=tje
|
||||||
|
schiff=fahrt
|
||||||
|
druk=ker
|
||||||
|
bridzs=dzsel
|
||||||
|
asz=szony=nyal
|
||||||
|
till=lata
|
|
@ -0,0 +1,10 @@
|
||||||
|
UTF-8
|
||||||
|
l·1l/l=l,1,3
|
||||||
|
a1atje./a=t,1,3
|
||||||
|
e1etje./é=tje,1,5
|
||||||
|
.schif1fahrt/ff=f,5,2
|
||||||
|
c1k/k=k,1,2
|
||||||
|
d1dzsel./dzs=dzs,1,4
|
||||||
|
.as3szon/sz=sz,2,3
|
||||||
|
n1nyal./ny=ny,1,3
|
||||||
|
.til1lata./ll=l,3,2
|
|
@ -0,0 +1,4 @@
|
||||||
|
#!/bin/sh
|
||||||
|
DIR="`dirname $0`"
|
||||||
|
NAME="`basename $0 .test`"
|
||||||
|
$DIR/test.sh $NAME.pat $NAME.word $NAME.hyph
|
|
@ -0,0 +1,8 @@
|
||||||
|
paral·lel
|
||||||
|
omaatje
|
||||||
|
cafeetje
|
||||||
|
schiffahrt
|
||||||
|
drucker
|
||||||
|
briddzsel
|
||||||
|
asszonnyal
|
||||||
|
tillata
|
|
@ -0,0 +1,8 @@
|
||||||
|
paral=lel
|
||||||
|
oma=tje
|
||||||
|
café=tje
|
||||||
|
schiff=fahrt
|
||||||
|
druk=ker
|
||||||
|
bridzs=dzsel
|
||||||
|
asz=szony=nyal
|
||||||
|
till=lata
|
|
@ -0,0 +1,10 @@
|
||||||
|
ISO8859-1
|
||||||
|
l·1l/l=l,1,3
|
||||||
|
a1atje./a=t,1,3
|
||||||
|
e1etje./é=tje,1,5
|
||||||
|
.schif1fahrt/ff=f,5,2
|
||||||
|
c1k/k=k,1,2
|
||||||
|
d1dzsel./dzs=dzs,1,4
|
||||||
|
.as3szon/sz=sz,2,3
|
||||||
|
n1nyal./ny=ny,1,3
|
||||||
|
.til1lata./ll=l,3,2
|
|
@ -0,0 +1,4 @@
|
||||||
|
#!/bin/sh
|
||||||
|
DIR="`dirname $0`"
|
||||||
|
NAME="`basename $0 .test`"
|
||||||
|
$DIR/test.sh $NAME.pat $NAME.word $NAME.hyph
|
|
@ -0,0 +1,8 @@
|
||||||
|
paral·lel
|
||||||
|
omaatje
|
||||||
|
cafeetje
|
||||||
|
schiffahrt
|
||||||
|
drucker
|
||||||
|
briddzsel
|
||||||
|
asszonnyal
|
||||||
|
tillata
|
|
@ -0,0 +1 @@
|
||||||
|
mo=tor=cy=cle
|
|
@ -0,0 +1,11 @@
|
||||||
|
ISO8859-1
|
||||||
|
COMPOUNDLEFTHYPHENMIN 2
|
||||||
|
COMPOUNDRIGHTHYPHENMIN 3
|
||||||
|
% 1st (compound) level
|
||||||
|
motor1cycle
|
||||||
|
% 2nd (non compound) level
|
||||||
|
NEXTLEVEL
|
||||||
|
.mo1tor.
|
||||||
|
.cy1cle.
|
||||||
|
% check independency of the 1st and 2nd hyphenation levels
|
||||||
|
.motor2cycle.
|
|
@ -0,0 +1,4 @@
|
||||||
|
#!/bin/sh
|
||||||
|
DIR="`dirname $0`"
|
||||||
|
NAME="`basename $0 .test`"
|
||||||
|
$DIR/test.sh $NAME.pat $NAME.word $NAME.hyph
|
|
@ -0,0 +1 @@
|
||||||
|
motorcycle
|
|
@ -0,0 +1,2 @@
|
||||||
|
fő=nök=asz=szony
|
||||||
|
asz=szony=fő=nök
|
|
@ -0,0 +1,8 @@
|
||||||
|
UTF-8
|
||||||
|
% 1st (compound) level
|
||||||
|
szony1fő
|
||||||
|
ök1assz
|
||||||
|
% 2nd (non compound) level
|
||||||
|
NEXTLEVEL
|
||||||
|
.as1szony./sz=,2,1
|
||||||
|
.fő1nök.
|
|
@ -0,0 +1,4 @@
|
||||||
|
#!/bin/sh
|
||||||
|
DIR="`dirname $0`"
|
||||||
|
NAME="`basename $0 .test`"
|
||||||
|
$DIR/test.sh $NAME.pat $NAME.word $NAME.hyph
|
|
@ -0,0 +1,2 @@
|
||||||
|
főnökasszony
|
||||||
|
asszonyfőnök
|
|
@ -0,0 +1 @@
|
||||||
|
ki=lo=watt=ti=me
|
|
@ -0,0 +1,11 @@
|
||||||
|
ISO8859-1
|
||||||
|
% Norwegian example:
|
||||||
|
% non-standard hyphenation at compound boundary (kilowattime -> kilowatt-time)
|
||||||
|
% and recursive compound hyphenation (kilowatt->kilo-watt)
|
||||||
|
% 1st (compound) level
|
||||||
|
wat1time/tt=t,3,2
|
||||||
|
.kilo1watt.
|
||||||
|
% 2nd (non compound) level
|
||||||
|
NEXTLEVEL
|
||||||
|
.ki1lo.
|
||||||
|
.ti1me.
|
|
@ -0,0 +1,4 @@
|
||||||
|
#!/bin/sh
|
||||||
|
DIR="`dirname $0`"
|
||||||
|
NAME="`basename $0 .test`"
|
||||||
|
$DIR/test.sh $NAME.pat $NAME.word $NAME.hyph
|
|
@ -0,0 +1 @@
|
||||||
|
kilowattime
|
|
@ -0,0 +1 @@
|
||||||
|
motor=cycle
|
|
@ -0,0 +1,11 @@
|
||||||
|
ISO8859-1
|
||||||
|
COMPOUNDLEFTHYPHENMIN 3
|
||||||
|
COMPOUNDRIGHTHYPHENMIN 4
|
||||||
|
% 1st (compound) level
|
||||||
|
motor1cycle
|
||||||
|
% 2nd (non compound) level
|
||||||
|
NEXTLEVEL
|
||||||
|
.mo1tor.
|
||||||
|
.cy1cle.
|
||||||
|
% check independency of the 1st and 2nd hyphenation levels
|
||||||
|
.motor2cycle.
|
|
@ -0,0 +1,4 @@
|
||||||
|
#!/bin/sh
|
||||||
|
DIR="`dirname $0`"
|
||||||
|
NAME="`basename $0 .test`"
|
||||||
|
$DIR/test.sh $NAME.pat $NAME.word $NAME.hyph
|
|
@ -0,0 +1 @@
|
||||||
|
motorcycle
|
|
@ -0,0 +1,18 @@
|
||||||
|
UTF-8
|
||||||
|
s2sz
|
||||||
|
s3szon/sz=sz,1,3
|
||||||
|
vas4szon
|
||||||
|
vas2sz
|
||||||
|
avas1as5szon/sz=sz,6,3
|
||||||
|
avasas2sz
|
||||||
|
.éavasasszonyo1kat
|
||||||
|
.éavas1as5szon/sz=sz,7,3
|
||||||
|
.éavasas2sz
|
||||||
|
pas3szon/sz=sz,3,3
|
||||||
|
pas2sz
|
||||||
|
.klas3szon/sz=sz,4,3
|
||||||
|
.klas2sz
|
||||||
|
kakas5szonda
|
||||||
|
kakas2sz
|
||||||
|
kakas3szon/sz=sz,5,3
|
||||||
|
kakas7szondan/sz=sz,6,3
|
|
@ -0,0 +1,14 @@
|
||||||
|
ssz
|
||||||
|
massza
|
||||||
|
asz=szony
|
||||||
|
avas=asz=szony
|
||||||
|
javas=asz=szony
|
||||||
|
vasszon
|
||||||
|
klasz=szon
|
||||||
|
aklasz=szon
|
||||||
|
pasz=szon
|
||||||
|
kopasz=szon
|
||||||
|
kakasz=szon
|
||||||
|
kakasz=szond
|
||||||
|
kakas=szonda
|
||||||
|
kakasz=szondan
|
|
@ -0,0 +1,12 @@
|
||||||
|
s2sz
|
||||||
|
s3szon/sz=sz,1,3
|
||||||
|
vas4szon
|
||||||
|
avas1as5szon/sz=sz,6,3
|
||||||
|
.éavasasszonyo1kat
|
||||||
|
pas3szon/sz=sz,3,3
|
||||||
|
.klas3szon/sz=sz,4,3
|
||||||
|
kakas5szonda
|
||||||
|
kakas7szondan/sz=sz,6,3
|
||||||
|
% patterns added by substrings.pl:
|
||||||
|
kakas3szon/sz=sz,5,3
|
||||||
|
.éavas1as5szon/sz=sz,8,3
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue