diff --git a/.gitignore b/.gitignore
index 3d0355e..df67cf9 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,6 +1,4 @@
a2ps-4.14.tar.gz
i18n-fonts-0.1.tar.gz
-/a2ps-4.15.5.tar.gz
-/a2ps-4.15.6.tar.gz
-/a2ps-4.15.7.tar.gz
-/a2ps-4.15.8.tar.gz
+/a2ps-4.14.tar.gz
+/i18n-fonts-0.1.tar.gz
diff --git a/COPYING b/COPYING
deleted file mode 100644
index 4432540..0000000
--- a/COPYING
+++ /dev/null
@@ -1,676 +0,0 @@
-
- GNU GENERAL PUBLIC LICENSE
- Version 3, 29 June 2007
-
- Copyright (C) 2007 Free Software Foundation, Inc.
- Everyone is permitted to copy and distribute verbatim copies
- of this license document, but changing it is not allowed.
-
- Preamble
-
- The GNU General Public License is a free, copyleft license for
-software and other kinds of works.
-
- The licenses for most software and other practical works are designed
-to take away your freedom to share and change the works. By contrast,
-the GNU General Public License is intended to guarantee your freedom to
-share and change all versions of a program--to make sure it remains free
-software for all its users. We, the Free Software Foundation, use the
-GNU General Public License for most of our software; it applies also to
-any other work released this way by its authors. You can apply it to
-your programs, too.
-
- When we speak of free software, we are referring to freedom, not
-price. Our General Public Licenses are designed to make sure that you
-have the freedom to distribute copies of free software (and charge for
-them if you wish), that you receive source code or can get it if you
-want it, that you can change the software or use pieces of it in new
-free programs, and that you know you can do these things.
-
- To protect your rights, we need to prevent others from denying you
-these rights or asking you to surrender the rights. Therefore, you have
-certain responsibilities if you distribute copies of the software, or if
-you modify it: responsibilities to respect the freedom of others.
-
- For example, if you distribute copies of such a program, whether
-gratis or for a fee, you must pass on to the recipients the same
-freedoms that you received. You must make sure that they, too, receive
-or can get the source code. And you must show them these terms so they
-know their rights.
-
- Developers that use the GNU GPL protect your rights with two steps:
-(1) assert copyright on the software, and (2) offer you this License
-giving you legal permission to copy, distribute and/or modify it.
-
- For the developers' and authors' protection, the GPL clearly explains
-that there is no warranty for this free software. For both users' and
-authors' sake, the GPL requires that modified versions be marked as
-changed, so that their problems will not be attributed erroneously to
-authors of previous versions.
-
- Some devices are designed to deny users access to install or run
-modified versions of the software inside them, although the manufacturer
-can do so. This is fundamentally incompatible with the aim of
-protecting users' freedom to change the software. The systematic
-pattern of such abuse occurs in the area of products for individuals to
-use, which is precisely where it is most unacceptable. Therefore, we
-have designed this version of the GPL to prohibit the practice for those
-products. If such problems arise substantially in other domains, we
-stand ready to extend this provision to those domains in future versions
-of the GPL, as needed to protect the freedom of users.
-
- Finally, every program is threatened constantly by software patents.
-States should not allow patents to restrict development and use of
-software on general-purpose computers, but in those that do, we wish to
-avoid the special danger that patents applied to a free program could
-make it effectively proprietary. To prevent this, the GPL assures that
-patents cannot be used to render the program non-free.
-
- The precise terms and conditions for copying, distribution and
-modification follow.
-
- TERMS AND CONDITIONS
-
- 0. Definitions.
-
- "This License" refers to version 3 of the GNU General Public License.
-
- "Copyright" also means copyright-like laws that apply to other kinds of
-works, such as semiconductor masks.
-
- "The Program" refers to any copyrightable work licensed under this
-License. Each licensee is addressed as "you". "Licensees" and
-"recipients" may be individuals or organizations.
-
- To "modify" a work means to copy from or adapt all or part of the work
-in a fashion requiring copyright permission, other than the making of an
-exact copy. The resulting work is called a "modified version" of the
-earlier work or a work "based on" the earlier work.
-
- A "covered work" means either the unmodified Program or a work based
-on the Program.
-
- To "propagate" a work means to do anything with it that, without
-permission, would make you directly or secondarily liable for
-infringement under applicable copyright law, except executing it on a
-computer or modifying a private copy. Propagation includes copying,
-distribution (with or without modification), making available to the
-public, and in some countries other activities as well.
-
- To "convey" a work means any kind of propagation that enables other
-parties to make or receive copies. Mere interaction with a user through
-a computer network, with no transfer of a copy, is not conveying.
-
- An interactive user interface displays "Appropriate Legal Notices"
-to the extent that it includes a convenient and prominently visible
-feature that (1) displays an appropriate copyright notice, and (2)
-tells the user that there is no warranty for the work (except to the
-extent that warranties are provided), that licensees may convey the
-work under this License, and how to view a copy of this License. If
-the interface presents a list of user commands or options, such as a
-menu, a prominent item in the list meets this criterion.
-
- 1. Source Code.
-
- The "source code" for a work means the preferred form of the work
-for making modifications to it. "Object code" means any non-source
-form of a work.
-
- A "Standard Interface" means an interface that either is an official
-standard defined by a recognized standards body, or, in the case of
-interfaces specified for a particular programming language, one that
-is widely used among developers working in that language.
-
- The "System Libraries" of an executable work include anything, other
-than the work as a whole, that (a) is included in the normal form of
-packaging a Major Component, but which is not part of that Major
-Component, and (b) serves only to enable use of the work with that
-Major Component, or to implement a Standard Interface for which an
-implementation is available to the public in source code form. A
-"Major Component", in this context, means a major essential component
-(kernel, window system, and so on) of the specific operating system
-(if any) on which the executable work runs, or a compiler used to
-produce the work, or an object code interpreter used to run it.
-
- The "Corresponding Source" for a work in object code form means all
-the source code needed to generate, install, and (for an executable
-work) run the object code and to modify the work, including scripts to
-control those activities. However, it does not include the work's
-System Libraries, or general-purpose tools or generally available free
-programs which are used unmodified in performing those activities but
-which are not part of the work. For example, Corresponding Source
-includes interface definition files associated with source files for
-the work, and the source code for shared libraries and dynamically
-linked subprograms that the work is specifically designed to require,
-such as by intimate data communication or control flow between those
-subprograms and other parts of the work.
-
- The Corresponding Source need not include anything that users
-can regenerate automatically from other parts of the Corresponding
-Source.
-
- The Corresponding Source for a work in source code form is that
-same work.
-
- 2. Basic Permissions.
-
- All rights granted under this License are granted for the term of
-copyright on the Program, and are irrevocable provided the stated
-conditions are met. This License explicitly affirms your unlimited
-permission to run the unmodified Program. The output from running a
-covered work is covered by this License only if the output, given its
-content, constitutes a covered work. This License acknowledges your
-rights of fair use or other equivalent, as provided by copyright law.
-
- You may make, run and propagate covered works that you do not
-convey, without conditions so long as your license otherwise remains
-in force. You may convey covered works to others for the sole purpose
-of having them make modifications exclusively for you, or provide you
-with facilities for running those works, provided that you comply with
-the terms of this License in conveying all material for which you do
-not control copyright. Those thus making or running the covered works
-for you must do so exclusively on your behalf, under your direction
-and control, on terms that prohibit them from making any copies of
-your copyrighted material outside their relationship with you.
-
- Conveying under any other circumstances is permitted solely under
-the conditions stated below. Sublicensing is not allowed; section 10
-makes it unnecessary.
-
- 3. Protecting Users' Legal Rights From Anti-Circumvention Law.
-
- No covered work shall be deemed part of an effective technological
-measure under any applicable law fulfilling obligations under article
-11 of the WIPO copyright treaty adopted on 20 December 1996, or
-similar laws prohibiting or restricting circumvention of such
-measures.
-
- When you convey a covered work, you waive any legal power to forbid
-circumvention of technological measures to the extent such circumvention
-is effected by exercising rights under this License with respect to
-the covered work, and you disclaim any intention to limit operation or
-modification of the work as a means of enforcing, against the work's
-users, your or third parties' legal rights to forbid circumvention of
-technological measures.
-
- 4. Conveying Verbatim Copies.
-
- You may convey verbatim copies of the Program's source code as you
-receive it, in any medium, provided that you conspicuously and
-appropriately publish on each copy an appropriate copyright notice;
-keep intact all notices stating that this License and any
-non-permissive terms added in accord with section 7 apply to the code;
-keep intact all notices of the absence of any warranty; and give all
-recipients a copy of this License along with the Program.
-
- You may charge any price or no price for each copy that you convey,
-and you may offer support or warranty protection for a fee.
-
- 5. Conveying Modified Source Versions.
-
- You may convey a work based on the Program, or the modifications to
-produce it from the Program, in the form of source code under the
-terms of section 4, provided that you also meet all of these conditions:
-
- a) The work must carry prominent notices stating that you modified
- it, and giving a relevant date.
-
- b) The work must carry prominent notices stating that it is
- released under this License and any conditions added under section
- 7. This requirement modifies the requirement in section 4 to
- "keep intact all notices".
-
- c) You must license the entire work, as a whole, under this
- License to anyone who comes into possession of a copy. This
- License will therefore apply, along with any applicable section 7
- additional terms, to the whole of the work, and all its parts,
- regardless of how they are packaged. This License gives no
- permission to license the work in any other way, but it does not
- invalidate such permission if you have separately received it.
-
- d) If the work has interactive user interfaces, each must display
- Appropriate Legal Notices; however, if the Program has interactive
- interfaces that do not display Appropriate Legal Notices, your
- work need not make them do so.
-
- A compilation of a covered work with other separate and independent
-works, which are not by their nature extensions of the covered work,
-and which are not combined with it such as to form a larger program,
-in or on a volume of a storage or distribution medium, is called an
-"aggregate" if the compilation and its resulting copyright are not
-used to limit the access or legal rights of the compilation's users
-beyond what the individual works permit. Inclusion of a covered work
-in an aggregate does not cause this License to apply to the other
-parts of the aggregate.
-
- 6. Conveying Non-Source Forms.
-
- You may convey a covered work in object code form under the terms
-of sections 4 and 5, provided that you also convey the
-machine-readable Corresponding Source under the terms of this License,
-in one of these ways:
-
- a) Convey the object code in, or embodied in, a physical product
- (including a physical distribution medium), accompanied by the
- Corresponding Source fixed on a durable physical medium
- customarily used for software interchange.
-
- b) Convey the object code in, or embodied in, a physical product
- (including a physical distribution medium), accompanied by a
- written offer, valid for at least three years and valid for as
- long as you offer spare parts or customer support for that product
- model, to give anyone who possesses the object code either (1) a
- copy of the Corresponding Source for all the software in the
- product that is covered by this License, on a durable physical
- medium customarily used for software interchange, for a price no
- more than your reasonable cost of physically performing this
- conveying of source, or (2) access to copy the
- Corresponding Source from a network server at no charge.
-
- c) Convey individual copies of the object code with a copy of the
- written offer to provide the Corresponding Source. This
- alternative is allowed only occasionally and noncommercially, and
- only if you received the object code with such an offer, in accord
- with subsection 6b.
-
- d) Convey the object code by offering access from a designated
- place (gratis or for a charge), and offer equivalent access to the
- Corresponding Source in the same way through the same place at no
- further charge. You need not require recipients to copy the
- Corresponding Source along with the object code. If the place to
- copy the object code is a network server, the Corresponding Source
- may be on a different server (operated by you or a third party)
- that supports equivalent copying facilities, provided you maintain
- clear directions next to the object code saying where to find the
- Corresponding Source. Regardless of what server hosts the
- Corresponding Source, you remain obligated to ensure that it is
- available for as long as needed to satisfy these requirements.
-
- e) Convey the object code using peer-to-peer transmission, provided
- you inform other peers where the object code and Corresponding
- Source of the work are being offered to the general public at no
- charge under subsection 6d.
-
- A separable portion of the object code, whose source code is excluded
-from the Corresponding Source as a System Library, need not be
-included in conveying the object code work.
-
- A "User Product" is either (1) a "consumer product", which means any
-tangible personal property which is normally used for personal, family,
-or household purposes, or (2) anything designed or sold for incorporation
-into a dwelling. In determining whether a product is a consumer product,
-doubtful cases shall be resolved in favor of coverage. For a particular
-product received by a particular user, "normally used" refers to a
-typical or common use of that class of product, regardless of the status
-of the particular user or of the way in which the particular user
-actually uses, or expects or is expected to use, the product. A product
-is a consumer product regardless of whether the product has substantial
-commercial, industrial or non-consumer uses, unless such uses represent
-the only significant mode of use of the product.
-
- "Installation Information" for a User Product means any methods,
-procedures, authorization keys, or other information required to install
-and execute modified versions of a covered work in that User Product from
-a modified version of its Corresponding Source. The information must
-suffice to ensure that the continued functioning of the modified object
-code is in no case prevented or interfered with solely because
-modification has been made.
-
- If you convey an object code work under this section in, or with, or
-specifically for use in, a User Product, and the conveying occurs as
-part of a transaction in which the right of possession and use of the
-User Product is transferred to the recipient in perpetuity or for a
-fixed term (regardless of how the transaction is characterized), the
-Corresponding Source conveyed under this section must be accompanied
-by the Installation Information. But this requirement does not apply
-if neither you nor any third party retains the ability to install
-modified object code on the User Product (for example, the work has
-been installed in ROM).
-
- The requirement to provide Installation Information does not include a
-requirement to continue to provide support service, warranty, or updates
-for a work that has been modified or installed by the recipient, or for
-the User Product in which it has been modified or installed. Access to a
-network may be denied when the modification itself materially and
-adversely affects the operation of the network or violates the rules and
-protocols for communication across the network.
-
- Corresponding Source conveyed, and Installation Information provided,
-in accord with this section must be in a format that is publicly
-documented (and with an implementation available to the public in
-source code form), and must require no special password or key for
-unpacking, reading or copying.
-
- 7. Additional Terms.
-
- "Additional permissions" are terms that supplement the terms of this
-License by making exceptions from one or more of its conditions.
-Additional permissions that are applicable to the entire Program shall
-be treated as though they were included in this License, to the extent
-that they are valid under applicable law. If additional permissions
-apply only to part of the Program, that part may be used separately
-under those permissions, but the entire Program remains governed by
-this License without regard to the additional permissions.
-
- When you convey a copy of a covered work, you may at your option
-remove any additional permissions from that copy, or from any part of
-it. (Additional permissions may be written to require their own
-removal in certain cases when you modify the work.) You may place
-additional permissions on material, added by you to a covered work,
-for which you have or can give appropriate copyright permission.
-
- Notwithstanding any other provision of this License, for material you
-add to a covered work, you may (if authorized by the copyright holders of
-that material) supplement the terms of this License with terms:
-
- a) Disclaiming warranty or limiting liability differently from the
- terms of sections 15 and 16 of this License; or
-
- b) Requiring preservation of specified reasonable legal notices or
- author attributions in that material or in the Appropriate Legal
- Notices displayed by works containing it; or
-
- c) Prohibiting misrepresentation of the origin of that material, or
- requiring that modified versions of such material be marked in
- reasonable ways as different from the original version; or
-
- d) Limiting the use for publicity purposes of names of licensors or
- authors of the material; or
-
- e) Declining to grant rights under trademark law for use of some
- trade names, trademarks, or service marks; or
-
- f) Requiring indemnification of licensors and authors of that
- material by anyone who conveys the material (or modified versions of
- it) with contractual assumptions of liability to the recipient, for
- any liability that these contractual assumptions directly impose on
- those licensors and authors.
-
- All other non-permissive additional terms are considered "further
-restrictions" within the meaning of section 10. If the Program as you
-received it, or any part of it, contains a notice stating that it is
-governed by this License along with a term that is a further
-restriction, you may remove that term. If a license document contains
-a further restriction but permits relicensing or conveying under this
-License, you may add to a covered work material governed by the terms
-of that license document, provided that the further restriction does
-not survive such relicensing or conveying.
-
- If you add terms to a covered work in accord with this section, you
-must place, in the relevant source files, a statement of the
-additional terms that apply to those files, or a notice indicating
-where to find the applicable terms.
-
- Additional terms, permissive or non-permissive, may be stated in the
-form of a separately written license, or stated as exceptions;
-the above requirements apply either way.
-
- 8. Termination.
-
- You may not propagate or modify a covered work except as expressly
-provided under this License. Any attempt otherwise to propagate or
-modify it is void, and will automatically terminate your rights under
-this License (including any patent licenses granted under the third
-paragraph of section 11).
-
- However, if you cease all violation of this License, then your
-license from a particular copyright holder is reinstated (a)
-provisionally, unless and until the copyright holder explicitly and
-finally terminates your license, and (b) permanently, if the copyright
-holder fails to notify you of the violation by some reasonable means
-prior to 60 days after the cessation.
-
- Moreover, your license from a particular copyright holder is
-reinstated permanently if the copyright holder notifies you of the
-violation by some reasonable means, this is the first time you have
-received notice of violation of this License (for any work) from that
-copyright holder, and you cure the violation prior to 30 days after
-your receipt of the notice.
-
- Termination of your rights under this section does not terminate the
-licenses of parties who have received copies or rights from you under
-this License. If your rights have been terminated and not permanently
-reinstated, you do not qualify to receive new licenses for the same
-material under section 10.
-
- 9. Acceptance Not Required for Having Copies.
-
- You are not required to accept this License in order to receive or
-run a copy of the Program. Ancillary propagation of a covered work
-occurring solely as a consequence of using peer-to-peer transmission
-to receive a copy likewise does not require acceptance. However,
-nothing other than this License grants you permission to propagate or
-modify any covered work. These actions infringe copyright if you do
-not accept this License. Therefore, by modifying or propagating a
-covered work, you indicate your acceptance of this License to do so.
-
- 10. Automatic Licensing of Downstream Recipients.
-
- Each time you convey a covered work, the recipient automatically
-receives a license from the original licensors, to run, modify and
-propagate that work, subject to this License. You are not responsible
-for enforcing compliance by third parties with this License.
-
- An "entity transaction" is a transaction transferring control of an
-organization, or substantially all assets of one, or subdividing an
-organization, or merging organizations. If propagation of a covered
-work results from an entity transaction, each party to that
-transaction who receives a copy of the work also receives whatever
-licenses to the work the party's predecessor in interest had or could
-give under the previous paragraph, plus a right to possession of the
-Corresponding Source of the work from the predecessor in interest, if
-the predecessor has it or can get it with reasonable efforts.
-
- You may not impose any further restrictions on the exercise of the
-rights granted or affirmed under this License. For example, you may
-not impose a license fee, royalty, or other charge for exercise of
-rights granted under this License, and you may not initiate litigation
-(including a cross-claim or counterclaim in a lawsuit) alleging that
-any patent claim is infringed by making, using, selling, offering for
-sale, or importing the Program or any portion of it.
-
- 11. Patents.
-
- A "contributor" is a copyright holder who authorizes use under this
-License of the Program or a work on which the Program is based. The
-work thus licensed is called the contributor's "contributor version".
-
- A contributor's "essential patent claims" are all patent claims
-owned or controlled by the contributor, whether already acquired or
-hereafter acquired, that would be infringed by some manner, permitted
-by this License, of making, using, or selling its contributor version,
-but do not include claims that would be infringed only as a
-consequence of further modification of the contributor version. For
-purposes of this definition, "control" includes the right to grant
-patent sublicenses in a manner consistent with the requirements of
-this License.
-
- Each contributor grants you a non-exclusive, worldwide, royalty-free
-patent license under the contributor's essential patent claims, to
-make, use, sell, offer for sale, import and otherwise run, modify and
-propagate the contents of its contributor version.
-
- In the following three paragraphs, a "patent license" is any express
-agreement or commitment, however denominated, not to enforce a patent
-(such as an express permission to practice a patent or covenant not to
-sue for patent infringement). To "grant" such a patent license to a
-party means to make such an agreement or commitment not to enforce a
-patent against the party.
-
- If you convey a covered work, knowingly relying on a patent license,
-and the Corresponding Source of the work is not available for anyone
-to copy, free of charge and under the terms of this License, through a
-publicly available network server or other readily accessible means,
-then you must either (1) cause the Corresponding Source to be so
-available, or (2) arrange to deprive yourself of the benefit of the
-patent license for this particular work, or (3) arrange, in a manner
-consistent with the requirements of this License, to extend the patent
-license to downstream recipients. "Knowingly relying" means you have
-actual knowledge that, but for the patent license, your conveying the
-covered work in a country, or your recipient's use of the covered work
-in a country, would infringe one or more identifiable patents in that
-country that you have reason to believe are valid.
-
- If, pursuant to or in connection with a single transaction or
-arrangement, you convey, or propagate by procuring conveyance of, a
-covered work, and grant a patent license to some of the parties
-receiving the covered work authorizing them to use, propagate, modify
-or convey a specific copy of the covered work, then the patent license
-you grant is automatically extended to all recipients of the covered
-work and works based on it.
-
- A patent license is "discriminatory" if it does not include within
-the scope of its coverage, prohibits the exercise of, or is
-conditioned on the non-exercise of one or more of the rights that are
-specifically granted under this License. You may not convey a covered
-work if you are a party to an arrangement with a third party that is
-in the business of distributing software, under which you make payment
-to the third party based on the extent of your activity of conveying
-the work, and under which the third party grants, to any of the
-parties who would receive the covered work from you, a discriminatory
-patent license (a) in connection with copies of the covered work
-conveyed by you (or copies made from those copies), or (b) primarily
-for and in connection with specific products or compilations that
-contain the covered work, unless you entered into that arrangement,
-or that patent license was granted, prior to 28 March 2007.
-
- Nothing in this License shall be construed as excluding or limiting
-any implied license or other defenses to infringement that may
-otherwise be available to you under applicable patent law.
-
- 12. No Surrender of Others' Freedom.
-
- If 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 convey a
-covered work so as to satisfy simultaneously your obligations under this
-License and any other pertinent obligations, then as a consequence you may
-not convey it at all. For example, if you agree to terms that obligate you
-to collect a royalty for further conveying from those to whom you convey
-the Program, the only way you could satisfy both those terms and this
-License would be to refrain entirely from conveying the Program.
-
- 13. Use with the GNU Affero General Public License.
-
- Notwithstanding any other provision of this License, you have
-permission to link or combine any covered work with a work licensed
-under version 3 of the GNU Affero General Public License into a single
-combined work, and to convey the resulting work. The terms of this
-License will continue to apply to the part which is the covered work,
-but the special requirements of the GNU Affero General Public License,
-section 13, concerning interaction through a network will apply to the
-combination as such.
-
- 14. Revised Versions of this License.
-
- The Free Software Foundation may publish revised and/or new versions of
-the GNU General Public License from time to time. Such new versions will
-be similar in spirit to the present version, but may differ in detail to
-address new problems or concerns.
-
- Each version is given a distinguishing version number. If the
-Program specifies that a certain numbered version of the GNU General
-Public License "or any later version" applies to it, you have the
-option of following the terms and conditions either of that numbered
-version or of any later version published by the Free Software
-Foundation. If the Program does not specify a version number of the
-GNU General Public License, you may choose any version ever published
-by the Free Software Foundation.
-
- If the Program specifies that a proxy can decide which future
-versions of the GNU General Public License can be used, that proxy's
-public statement of acceptance of a version permanently authorizes you
-to choose that version for the Program.
-
- Later license versions may give you additional or different
-permissions. However, no additional obligations are imposed on any
-author or copyright holder as a result of your choosing to follow a
-later version.
-
- 15. Disclaimer of Warranty.
-
- THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
-APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
-HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
-OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
-THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
-PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
-IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
-ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
-
- 16. Limitation of Liability.
-
- IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
-WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
-THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
-GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
-USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
-DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
-PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
-EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
-SUCH DAMAGES.
-
- 17. Interpretation of Sections 15 and 16.
-
- If the disclaimer of warranty and limitation of liability provided
-above cannot be given local legal effect according to their terms,
-reviewing courts shall apply local law that most closely approximates
-an absolute waiver of all civil liability in connection with the
-Program, unless a warranty or assumption of liability accompanies a
-copy of the Program in return for a fee.
-
- END OF TERMS AND CONDITIONS
-
- How to Apply These Terms to Your New Programs
-
- If you develop a new program, and you want it to be of the greatest
-possible use to the public, the best way to achieve this is to make it
-free software which everyone can redistribute and change under these terms.
-
- To do so, attach the following notices to the program. It is safest
-to attach them to the start of each source file to most effectively
-state the exclusion of warranty; and each file should have at least
-the "copyright" line and a pointer to where the full notice is found.
-
-
- Copyright (C)
-
- 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 3 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program. If not, see .
-
-Also add information on how to contact you by electronic and paper mail.
-
- If the program does terminal interaction, make it output a short
-notice like this when it starts in an interactive mode:
-
- Copyright (C)
- This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
- This is free software, and you are welcome to redistribute it
- under certain conditions; type `show c' for details.
-
-The hypothetical commands `show w' and `show c' should show the appropriate
-parts of the General Public License. Of course, your program's commands
-might be different; for a GUI interface, you would use an "about box".
-
- You should also get your employer (if you work as a programmer) or school,
-if any, to sign a "copyright disclaimer" for the program, if necessary.
-For more information on this, and how to apply and follow the GNU GPL, see
-.
-
- The GNU General Public License does not permit incorporating your program
-into proprietary programs. If your program is a subroutine library, you
-may consider it more useful to permit linking proprietary applications with
-the library. If this is what you want to do, use the GNU Lesser General
-Public License instead of this License. But first, please read
-.
-
diff --git a/a2ps-4.13-autoenc.patch b/a2ps-4.13-autoenc.patch
new file mode 100644
index 0000000..5e3e08f
--- /dev/null
+++ b/a2ps-4.13-autoenc.patch
@@ -0,0 +1,40 @@
+--- a2ps-4.13.rh/src/main.c Fri Feb 23 17:39:02 2001
++++ a2ps-4.13.euc/src/main.c Fri Feb 23 23:07:40 2001
+@@ -31,6 +31,8 @@
+ /* */
+ /************************************************************************/
+ #include
++#include
++#include
+
+ #include "a2ps.h"
+ #include "argmatch.h"
+@@ -925,6 +927,7 @@
+ main (int argc, char *argv[])
+ {
+ int argn;
++ char *locale;
+
+ /* Architecture specific initialization. */
+ #ifdef __EMX__
+@@ -947,6 +950,9 @@
+ setlocale (LC_CTYPE, "");
+ setlocale (LC_PAPER, "");
+
++ locale = setlocale (LC_ALL, "");
++ /* fprintf(stderr, "locale : %s\n", locale); */
++
+ bindtextdomain (PACKAGE, LOCALEDIR);
+ textdomain (PACKAGE);
+
+@@ -1013,6 +1019,10 @@
+ yet read sheets. */
+ sheets_map = sheets_map_new ();
+ style_sheets = new_style_sheets ();
++
++ /* Process special case: Japanese Document */
++ if (! strncmp (locale, "ja", 2) )
++ job->requested_encoding_name = xstrdup ("euc-jp");
+
+ /* Process the command line options. */
+ argn = a2ps_handle_options (job, argc, argv);
diff --git a/a2ps-4.13-conf.patch b/a2ps-4.13-conf.patch
index 060aec6..9504283 100644
--- a/a2ps-4.13-conf.patch
+++ b/a2ps-4.13-conf.patch
@@ -1,23 +1,26 @@
-diff -up a2ps-4.15/configure.ac.conf a2ps-4.15/configure.ac
---- a2ps-4.15/configure.ac.conf 2023-03-08 09:09:29.694691191 +0100
-+++ a2ps-4.15/configure.ac 2023-03-08 09:10:00.210882309 +0100
-@@ -153,8 +153,10 @@ AC_MSG_CHECKING(for PostScript fonts pat
- # Try to find some PostScript fonts.
- # Find out if ghostscript is installed
- ac_psfont_path=
--for ac_dir in /usr/local/ghostscript/fonts \
-- /usr/local/share/ghostscript/fonts;
-+for ac_dir in /usr/share/fonts/default/Type1 \
-+ /usr/share/fonts/default/ghostscript \
-+ /usr/share/X11/fonts/Type1 \
-+ /usr/share/fonts/culmus ;
- do
- if test "cd $ac_dir 2>/dev/null && echo *.afm"; then
- ac_psfont_path="$ac_psfont_path:$ac_dir";
-diff -up a2ps-4.15/configure.conf a2ps-4.15/configure
---- a2ps-4.15/configure.conf 2023-03-08 09:09:03.438526754 +0100
-+++ a2ps-4.15/configure 2023-03-08 09:10:39.922131011 +0100
-@@ -38619,8 +38619,10 @@ printf %s "checking for PostScript fonts
+diff -up a2ps-4.14/configure.conf a2ps-4.14/configure
+--- a2ps-4.14/configure.conf 2008-04-27 01:01:04.000000000 +0200
++++ a2ps-4.14/configure 2008-04-27 01:04:12.000000000 +0200
+@@ -30758,9 +30758,13 @@ fi
+ echo $ECHO_N "checking for PostScript fonts path... $ECHO_C" >&6; }
+ # Try to find some PostScript fonts.
+ # Find out if ghostscript is installed
++# for ac_dir in /usr/local/ghostscript/fonts \
++# /usr/local/share/ghostscript/fonts;
+ ac_psfont_path=
+-for ac_dir in /usr/local/ghostscript/fonts \
+- /usr/local/share/ghostscript/fonts;
++for ac_dir in /usr/share/fonts/default/Type1 \
++ /usr/share/fonts/default/ghostscript \
++ /usr/share/X11/fonts/Type1 \
++ /usr/share/fonts/culmus ;
+ do
+ if test "cd $ac_dir 2>/dev/null && echo *.afm"; then
+ ac_psfont_path="$ac_psfont_path:$ac_dir";
+diff -up a2ps-4.14/configure.in.conf a2ps-4.14/configure.in
+--- a2ps-4.14/configure.in.conf 2008-04-27 01:00:54.000000000 +0200
++++ a2ps-4.14/configure.in 2008-04-27 01:03:52.000000000 +0200
+@@ -207,8 +207,10 @@ AC_MSG_CHECKING(for PostScript fonts pat
# Try to find some PostScript fonts.
# Find out if ghostscript is installed
ac_psfont_path=
diff --git a/a2ps-4.13-etc.patch b/a2ps-4.13-etc.patch
index 899c522..fa692ff 100644
--- a/a2ps-4.13-etc.patch
+++ b/a2ps-4.13-etc.patch
@@ -1,7 +1,7 @@
-diff -up a2ps-4.15/etc/a2ps_cfg.in.etc a2ps-4.15/etc/a2ps_cfg.in
---- a2ps-4.15/etc/a2ps_cfg.in.etc 2023-01-31 22:58:17.000000000 +0100
-+++ a2ps-4.15/etc/a2ps_cfg.in 2023-03-08 09:12:47.908932563 +0100
-@@ -56,6 +56,7 @@ LibraryPath: @libpath@
+diff -up a2ps-4.14/etc/a2ps_cfg.in.etc a2ps-4.14/etc/a2ps_cfg.in
+--- a2ps-4.14/etc/a2ps_cfg.in.etc 2007-12-29 02:38:58.000000000 +0100
++++ a2ps-4.14/etc/a2ps_cfg.in 2008-04-27 01:27:55.000000000 +0200
+@@ -73,6 +73,7 @@ LibraryPath: @libpath@
# It may be useful to extend it so that a2ps can see some
# TeX or X11 resources: it likes AFM files and PF[AB] files.
#AppendLibraryPath: foo
@@ -9,11 +9,11 @@ diff -up a2ps-4.15/etc/a2ps_cfg.in.etc a2ps-4.15/etc/a2ps_cfg.in
#################################################################
-diff -up a2ps-4.15/etc/Makefile.am.etc a2ps-4.15/etc/Makefile.am
---- a2ps-4.15/etc/Makefile.am.etc 2023-03-08 09:12:47.908932563 +0100
-+++ a2ps-4.15/etc/Makefile.am 2023-03-08 09:15:31.573957559 +0100
-@@ -17,7 +17,7 @@
- #
+diff -up a2ps-4.14/etc/Makefile.am.etc a2ps-4.14/etc/Makefile.am
+--- a2ps-4.14/etc/Makefile.am.etc 2002-07-19 14:07:27.000000000 +0200
++++ a2ps-4.14/etc/Makefile.am 2008-04-27 01:27:55.000000000 +0200
+@@ -2,7 +2,7 @@
+ ## Makefile for a2ps' etc library directory.
ogonkifydir=$(datadir)/ogonkify
-libpath = $(pkgdatadir)/sheets:$(pkgdatadir)/ps:$(pkgdatadir)/encoding:$(pkgdatadir)/afm:$(ogonkifydir)/afm:$(pkgdatadir)/ppd:$(pkgdatadir)/fonts:$(ogonkifydir)/fonts:$(pkgdatadir)
@@ -21,7 +21,7 @@ diff -up a2ps-4.15/etc/Makefile.am.etc a2ps-4.15/etc/Makefile.am
pkgdata_DATA = README
-@@ -55,7 +55,9 @@ DISTCLEANFILES = a2ps.cfg README
+@@ -40,7 +40,9 @@ DISTCLEANFILES = a2ps.cfg README
# Building the correct a2ps.cfg
a2ps.cfg: a2ps_cfg Makefile
@@ -30,6 +30,30 @@ diff -up a2ps-4.15/etc/Makefile.am.etc a2ps-4.15/etc/Makefile.am
+ -e "s!@apppath@!$(PSFONT_PATH)!" \
+ a2ps_cfg > a2ps.cfg
- # Building a timestamp to know the version.
+ # Building a time stamp to know the version.
README: README.in Makefile
-diff -up a2ps-4.15/etc/Makefile.in.etc a2ps-4.15/etc/Makefile.in
+diff -up a2ps-4.14/etc/Makefile.in.etc a2ps-4.14/etc/Makefile.in
+--- a2ps-4.14/etc/Makefile.in.etc 2007-12-29 04:28:07.000000000 +0100
++++ a2ps-4.14/etc/Makefile.in 2008-04-27 01:30:55.000000000 +0200
+@@ -262,7 +262,7 @@ sysconfdir = @sysconfdir@
+ target_alias = @target_alias@
+ tex = @tex@
+ ogonkifydir = $(datadir)/ogonkify
+-libpath = $(pkgdatadir)/sheets:$(pkgdatadir)/ps:$(pkgdatadir)/encoding:$(pkgdatadir)/afm:$(ogonkifydir)/afm:$(pkgdatadir)/ppd:$(pkgdatadir)/fonts:$(ogonkifydir)/fonts:$(pkgdatadir)
++libpath = $(sysconfdir)/$(PACKAGE):$(pkgdatadir)/sheets:$(pkgdatadir)/ps:$(pkgdatadir)/encoding:$(pkgdatadir)/afm:$(ogonkifydir)/afm:$(pkgdatadir)/ppd:$(pkgdatadir)/fonts:$(ogonkifydir)/fonts:$(pkgdatadir)
+ pkgdata_DATA = README
+ dsysconf = $(DESTDIR)$(sysconfdir)
+ EXTRA_DIST = README.in
+@@ -482,7 +482,9 @@ uninstall-local:
+
+ # Building the correct a2ps.cfg
+ a2ps.cfg: a2ps_cfg Makefile
+- sed "s!@libpath@!$(libpath)!" a2ps_cfg > a2ps.cfg
++ sed -e "s!@libpath@!$(libpath)!" \
++ -e "s!@apppath@!$(PSFONT_PATH)!" \
++ a2ps_cfg > a2ps.cfg
+
+ # Building a time stamp to know the version.
+ README: README.in Makefile
+diff -up a2ps-4.14/Makefile.am.etc a2ps-4.14/Makefile.am
+diff -up a2ps-4.14/Makefile.in.etc a2ps-4.14/Makefile.in
diff --git a/a2ps-4.13-eucjp.patch b/a2ps-4.13-eucjp.patch
new file mode 100644
index 0000000..e94834a
--- /dev/null
+++ b/a2ps-4.13-eucjp.patch
@@ -0,0 +1,1417 @@
+diff -up a2ps-4.14/config.h.in.euc a2ps-4.14/config.h.in
+--- a2ps-4.14/config.h.in.euc 2007-12-29 04:28:05.000000000 +0100
++++ a2ps-4.14/config.h.in 2008-04-27 10:39:24.000000000 +0200
+@@ -24,6 +24,9 @@
+ /* Define if TIOCGWINSZ requires sys/ioctl.h */
+ #undef GWINSZ_IN_SYS_IOCTL
+
++/* Define if you want to support japanese */
++#undef ENABLE_KANJI
++
+ /* Define to 1 if you have the `alarm' function. */
+ #undef HAVE_ALARM
+
+diff -up a2ps-4.14/configure.euc a2ps-4.14/configure
+--- a2ps-4.14/configure.euc 2008-04-27 10:39:24.000000000 +0200
++++ a2ps-4.14/configure 2008-04-27 10:41:39.000000000 +0200
+@@ -1587,7 +1587,8 @@ Optional Packages:
+ --with-medium=medium specify the default medium (A4, Letter, Legal, etc.)
+ default=A4
+ --with-encoding=enc specify the default encoding (ascii, latin1,
+- latin2... latin6, hp etc.) default=latin1
++ latin2... latin6, euc-jp, hp etc.) default=latin1
++ --enable-kanji support Japanese (default=yes)
+
+ Some influential environment variables:
+ CC C compiler command
+@@ -22521,7 +22522,7 @@ fi
+
+ for ac_header in sys/time.h sys/stat.h sys/types.h sys/ioctl.h \
+ math.h string.h strings.h stdlib.h unistd.h stdarg.h pwd.h malloc.h \
+- memory.h errno.h fcntl.h stdbool.h fnmatch.h
++ memory.h errno.h fcntl.h stdbool.h fnmatch.h iconv.h
+ do
+ as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
+ if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+@@ -30947,6 +30948,22 @@ fi
+
+
+
++# Check whether --enable-kanji or --disable-kanji was given.
++if test "${enable_kanji+set}" = set; then
++ enableval="$enable_kanji"
++ SUPPORT_KANJI=$enableval
++else
++ SUPPORT_KANJI=yes
++fi
++
++if test "$SUPPORT_KANJI" = "yes"; then
++ cat >> confdefs.h <<\EOF
++#define ENABLE_KANJI 1
++EOF
++# ENCODING=euc-jp
++fi
++
++
+ ########################
+ # Nice special printers
+ ########################
+diff -up a2ps-4.14/configure.in.euc a2ps-4.14/configure.in
+--- a2ps-4.14/configure.in.euc 2008-04-27 10:39:24.000000000 +0200
++++ a2ps-4.14/configure.in 2008-04-27 10:39:24.000000000 +0200
+@@ -72,7 +72,7 @@ AC_HEADER_SYS_WAIT
+ AC_HEADER_DIRENT
+ AC_CHECK_HEADERS(sys/time.h sys/stat.h sys/types.h sys/ioctl.h \
+ math.h string.h strings.h stdlib.h unistd.h stdarg.h pwd.h malloc.h \
+- memory.h errno.h fcntl.h stdbool.h fnmatch.h)
++ memory.h errno.h fcntl.h stdbool.h fnmatch.h iconv.h)
+
+ ## --------------------- ##
+ ## Checks for typedefs. ##
+@@ -276,11 +276,23 @@ AC_SUBST(MEDIUM)
+ #
+ AC_ARG_WITH(encoding,
+ AC_HELP_STRING([--with-encoding=enc],
+- [specify the default encoding (ascii, latin1, latin2... latin6, hp etc.) [default=latin1]]),
++ [specify the default encoding (ascii, latin1, latin2... latin6, euc-jp, hp etc.) [default=latin1]]),
+ ENCODING=$with_encoding,
+ ENCODING=latin1)
+ AC_SUBST(ENCODING)
+
++#
++# use libjcode
++#
++AC_ARG_ENABLE(kanji,
++ [ --enable-kanji support Japanese/kanji (default: yes)],
++ SUPPORT_KANJI=$enableval, SUPPORT_KANJI=yes)
++if test "$SUPPORT_KANJI" = "yes"; then
++ AC_DEFINE(ENABLE_KANJI)
++ dnl ENCODING=euc-jp
++fi
++
++
+ ########################
+ # Nice special printers
+ ########################
+diff -up a2ps-4.14/encoding/encoding.map.euc a2ps-4.14/encoding/encoding.map
+--- a2ps-4.14/encoding/encoding.map.euc 2007-12-29 02:39:21.000000000 +0100
++++ a2ps-4.14/encoding/encoding.map 2008-04-27 10:39:24.000000000 +0200
+@@ -93,6 +93,12 @@ koi8r koi8
+ koi8 koi8
+ koi koi8
+
++euc-jp euc-jp
++eucjp euc-jp
++japanese euc-jp
++ja euc-jp
++jp euc-jp
++
+ ########################################################################
+ # Some architectures specific char sets
+ ########################################################################
+diff -up /dev/null a2ps-4.14/encoding/euc-jp.edf
+--- /dev/null 2008-04-27 11:55:27.307012118 +0200
++++ a2ps-4.14/encoding/euc-jp.edf 2008-04-27 10:39:24.000000000 +0200
+@@ -0,0 +1,109 @@
++# Description of the EUC-JP encoding
++# Copyright (c) 1988, 89, 90, 91, 92, 93 Miguel Santana
++# Copyright (c) 1995, 96, 97, 98 Akim Demaille, Miguel Santana
++#
++
++#
++# This file is part of a2ps.
++#
++# 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; see the file COPYING. If not, write to
++# the Free Software Foundation, 59 Temple Place - Suite 330,
++# Boston, MA 02111-1307, USA.
++#
++
++Name: EUC-JP
++
++# This text is reproduced by a courtesy of Roman Czyborra
++# http://czyborra.com/charsets/iso8859.html
++Documentation
++The EUC-JP character set, often simply referred to as Latin 1,
++covers most West European languages, such as French, Spanish, Catalan,
++Basque, Portuguese, Italian, Albanian, Rhaeto-Romanic, Dutch, German,
++Danish, Swedish, Norwegian, Finnish, Faroese, Icelandic, Irish,
++Scottish, and English, incidentally also Afrikaans and Swahili, thus
++in effect also the entire American continent, Australia and the
++southern two-thirds of Africa. The lack of the ligatures Dutch IJ,
++French OE and ,,German`` quotation marks is considered tolerable.
++
++The lack of the new C=-resembling Euro currency symbol U+20AC has
++opened the discussion of a new Latin0.
++EndDocumentation
++
++# If there is an unknown font requested, use Courier
++Default: Courier
++
++# Automatic spell checking :)
++Substitute: Times Times-Roman
++Substitute: Helvetica-Italic Helvetica-Oblique
++Substitute: Helvetica-BoldItalic Helvetica-BoldOblique
++
++
++# SlantFont for Japanese Italic Kanji font
++# new font source font value
++SlantFont: Ryumin-Light-EUC-H-Italic Ryumin-Light-EUC-H 0.2
++SlantFont: GothicBBB-Medium-EUC-H-Italic GothicBBB-Medium-EUC-H 0.2
++
++# Compose font for japanese EUC code
++# target font additional font width size rate
++DefaultComposite: Ryumin-Light-EUC-H 1.0 1.1
++
++# 1:2 fixed
++#DefaultComposite: Ryumin-Light-EUC-H 1.0 0.8333
++
++# 1:1 fixed
++#DefaultComposite: Ryumin-Light-EUC-H 1.0 1.6666
++
++Composite: Helvetica GothicBBB-Medium-EUC-H 1.0 1.1
++Composite: Helvetica-Oblique GothicBBB-Medium-EUC-H-Italic 1.0 1.1
++Composite: Helvetica-Bold GothicBBB-Medium-EUC-H 1.0 1.1
++Composite: Helvetica-BoldOblique GothicBBB-Medium-EUC-H-Italic 1.0 1.1
++
++Composite: Courier-Oblique Ryumin-Light-EUC-H-Italic 1.0 1.1
++Composite: Courier-Bold GothicBBB-Medium-EUC-H 1.0 1.1
++Composite: Courier-BoldOblique GothicBBB-Medium-EUC-H-Italic 1.0 1.1
++Composite: Times-Bold GothicBBB-Medium-EUC-H 1.0 1.1
++
++Vector:
++.notdef .notdef .notdef .notdef .notdef .notdef .notdef .notdef
++.notdef .notdef .notdef .notdef .notdef .notdef .notdef .notdef
++.notdef .notdef .notdef .notdef .notdef .notdef .notdef .notdef
++.notdef .notdef .notdef .notdef .notdef .notdef .notdef .notdef
++space exclam quotedbl numbersign dollar percent ampersand quoteright
++parenleft parenright asterisk plus comma minus period slash
++zero one two three four five six seven
++eight nine colon semicolon less equal greater question
++at A B C D E F G
++H I J K L M N O
++P Q R S T U V W
++X Y Z bracketleft backslash bracketright asciicircum underscore
++quoteleft a b c d e f g
++h i j k l m n o
++p q r s t u v w
++x y z braceleft bar braceright asciitilde .notdef
++.notdef .notdef .notdef .notdef .notdef .notdef .notdef .notdef
++.notdef .notdef .notdef .notdef .notdef .notdef .notdef .notdef
++.notdef .notdef .notdef .notdef .notdef .notdef .notdef .notdef
++.notdef .notdef .notdef .notdef .notdef .notdef .notdef .notdef
++space exclamdown cent sterling currency yen brokenbar section
++dieresis copyright ordfeminine guillemotleft logicalnot hyphen registered macron
++degree plusminus twosuperior threesuperior acute mu paragraph bullet
++cedilla onesuperior ordmasculine guillemotright onequarter onehalf threequarters questiondown
++Agrave Aacute Acircumflex Atilde Adieresis Aring AE Ccedilla
++Egrave Eacute Ecircumflex Edieresis Igrave Iacute Icircumflex Idieresis
++Eth Ntilde Ograve Oacute Ocircumflex Otilde Odieresis multiply
++Oslash Ugrave Uacute Ucircumflex Udieresis Yacute Thorn germandbls
++agrave aacute acircumflex atilde adieresis aring ae ccedilla
++egrave eacute ecircumflex edieresis igrave iacute icircumflex idieresis
++eth ntilde ograve oacute ocircumflex otilde odieresis divide
++oslash ugrave uacute ucircumflex udieresis yacute thorn ydieresis
+diff -up a2ps-4.14/encoding/Makefile.am.euc a2ps-4.14/encoding/Makefile.am
+--- a2ps-4.14/encoding/Makefile.am.euc 2007-12-29 02:39:27.000000000 +0100
++++ a2ps-4.14/encoding/Makefile.am 2008-04-27 10:39:24.000000000 +0200
+@@ -16,7 +16,7 @@ major_encodings = ascii.edf iso1.edf
+ minor_encodings = \
+ ms-cp1250.edf hp.edf mac.edf ibm-cp437.edf ibm-cp850.edf iso2.edf \
+ iso3.edf iso4.edf iso5.edf iso7.edf iso9.edf iso10.edf iso13.edf \
+-iso15.edf koi8.edf ms-cp1251.edf
++iso15.edf koi8.edf ms-cp1251.edf euc-jp.edf
+
+ if EXTENSIONS
+ encodings_DATA = encoding.map $(major_encodings) $(minor_encodings)
+diff -up a2ps-4.14/encoding/Makefile.in.euc a2ps-4.14/encoding/Makefile.in
+--- a2ps-4.14/encoding/Makefile.in.euc 2007-12-29 04:28:07.000000000 +0100
++++ a2ps-4.14/encoding/Makefile.in 2008-04-27 10:39:24.000000000 +0200
+@@ -270,7 +270,7 @@ major_encodings = ascii.edf iso1.edf
+ minor_encodings = \
+ ms-cp1250.edf hp.edf mac.edf ibm-cp437.edf ibm-cp850.edf iso2.edf \
+ iso3.edf iso4.edf iso5.edf iso7.edf iso9.edf iso10.edf iso13.edf \
+-iso15.edf koi8.edf ms-cp1251.edf
++iso15.edf koi8.edf ms-cp1251.edf euc-jp.edf
+
+ @EXTENSIONS_FALSE@encodings_DATA = encoding.map $(major_encodings)
+ @EXTENSIONS_TRUE@encodings_DATA = encoding.map $(major_encodings) $(minor_encodings)
+diff -up a2ps-4.14/lib/encoding.c.euc a2ps-4.14/lib/encoding.c
+--- a2ps-4.14/lib/encoding.c.euc 2007-12-29 02:37:54.000000000 +0100
++++ a2ps-4.14/lib/encoding.c 2008-04-27 10:39:24.000000000 +0200
+@@ -37,6 +37,9 @@
+ #include "document.h"
+ #include "quotearg.h"
+ #include "strverscmp.h"
++#ifdef ENABLE_KANJI
++int use_jcode = false;
++#endif
+
+ /* Suffix of the Encoding Description Files */
+ #define EDF_SUFFIX ".edf"
+@@ -389,15 +392,25 @@ font_entry_set_used (struct hash_table_s
+ * Association of suffixes rules, and corresponding style sheet
+ * (The hashing is upon `alias')
+ */
++struct slantfont_info {
++ char * name;
++ char * src;
++ float raito;
++};
++
+ struct encoding {
+ char * key; /* e.g. latin1 */
+ char * name; /* e.g. ISO Latin 1 */
++ int composite_flag; /* flag for composite font */
+ uchar * documentation; /* Useful pieces of text */
+
+ char * default_font; /* When a font can't be used
+ define the font to use */
+ struct pair_htable * substitutes; /* e.g. in latin2, don't use
+ * Courier, but Courier-Ogonki */
++ struct pair_htable * composite;
++
++ struct slantfont_info slantfont[NB_FACES];
+
+ char * vector[256]; /* Define the char set */
+ struct darray * font_names_used;
+@@ -407,6 +420,9 @@ struct encoding {
+ struct hash_table_s * fonts; /* Contains cells that are
+ * 1. name of font, 2. int wx[256] */
+ unsigned int * faces_wx[NB_FACES];
++
++ unsigned int composite_wx[NB_FACES]; /* fixed length font width*/
++ float composite_raito[NB_FACES]; /* size raito of additonal and orinal font */
+ };
+
+ /*
+@@ -423,9 +439,12 @@ encoding_new (const char * key)
+ res->name = NULL;
+ res->default_font = NULL;
+ res->documentation = NULL;
++ res->composite_flag = false;
+
+ /* Vector will be set by setup */
+ res->substitutes = pair_table_new ();
++ res->composite = pair_table_new ();
++ res->slantfont[0].name = NULL;
+ res->font_names_used = da_new ("List of font names", 10,
+ da_linear, 10,
+ (da_print_func_t) da_str_print,
+@@ -471,6 +490,34 @@ encoding_add_font_substitute (struct enc
+ }
+
+ /*
++ * Add a composite font in the current encoding
++ */
++static void
++encoding_add_composite_font (struct encoding * encoding,
++ const char * orig, const char * subs,
++ int wx, float raito)
++{
++ encoding->composite_flag = true;
++ pair_add2 (encoding->composite, orig, subs, wx, raito);
++}
++
++/*
++ * Add a composite font in the current encoding
++ */
++static void
++encoding_add_slant_font (struct encoding * encoding,
++ const char * new, const char * src,
++ float raito)
++{
++ static num = 0;
++ encoding->slantfont[num].name = strdup(new);
++ encoding->slantfont[num].src = strdup(src);
++ encoding->slantfont[num].raito = raito;
++ encoding->slantfont[num+1].name = NULL;
++ num++;
++}
++
++/*
+ * When FONT_NAME is used with ENCODING, return the
+ * real font name to use (e.g., in latin2, Courier-Ogonki
+ * should be returned when asked for Courier).
+@@ -514,6 +561,77 @@ encoding_resolve_font_substitute (struct
+ }
+
+ message (msg_enc,
++ (stderr, "In encoding %s, composite font for %s is resolved as %s\n",
++ encoding->key, font_name, res));
++ return res;
++}
++
++/*
++ * Get composite font size and raito
++ */
++static int
++composite_font_info_get_wx(struct a2ps_job * job,
++ struct encoding * encoding,
++ const char * font_list)
++{
++ int wx= -1;
++ char * font_list_copy;
++ char * font_name;
++ astrcpy (font_list_copy, font_list);
++ font_name = strtok (font_list_copy, ",<>;");
++
++ wx = pair_get_wx (encoding->composite, font_name);
++ if (wx<0)
++ wx = pair_get_wx (encoding->composite, "default_composite__");
++
++ return wx;
++}
++
++static float
++composite_font_info_get_raito(struct a2ps_job * job,
++ struct encoding * encoding,
++ const char * font_list)
++{
++ float raito= -1;
++ char * font_list_copy;
++ char * font_name;
++
++ astrcpy (font_list_copy, font_list);
++ font_name = strtok (font_list_copy, ",<>;");
++
++ raito = pair_get_raito (encoding->composite, font_name);
++ if (raito<0)
++ raito = pair_get_raito (encoding->composite, "default_composite__");
++ return raito;
++}
++
++const char *
++encoding_resolve_composite_font (struct a2ps_job * job,
++ struct encoding * encoding,
++ const char * font_list)
++{
++ const char * res = NULL;
++ char * font_list_copy;
++ char * font_name;
++
++ astrcpy (font_list_copy, font_list);
++ font_name = strtok (font_list_copy, ",<>;");
++
++ /* Find if there is a substitute for that font */
++ res = pair_get (encoding->composite, font_name);
++
++ /* We've found nothing interesting. Last chance is the default
++ * font */
++ if (!res)
++ {
++ res = pair_get (encoding->composite, "default_composite__");
++
++ if (!res)
++ error (1, 0, "Cannot find font %s, nor any composite font",
++ font_name);
++ }
++
++ message (msg_enc,
+ (stderr, "In encoding %s, font %s is resolved as %s\n",
+ encoding->key, font_name, res));
+ return res;
+@@ -585,6 +703,12 @@ load_encoding_description_file (a2ps_job
+ {
+ token2 = GET_TOKEN (NULL);
+ CHECK_TOKEN ();
++#ifdef ENABLE_KANJI
++ if( strcmp(token2, "EUC-JP")== 0)
++ use_jcode = true;
++ else
++ use_jcode = false;
++#endif
+ encoding->name = xstrdup (token2);
+ }
+ else if (strequ (token, "Default:"))
+@@ -633,6 +757,66 @@ load_encoding_description_file (a2ps_job
+ subs = token2;
+ encoding_add_font_substitute (encoding, orig, subs);
+ }
++ else if (strequ (token, "DefaultComposite:"))
++ {
++ char * orig, * subs;
++ int wx;
++ float raito;
++
++ token2 = GET_TOKEN (NULL);
++ CHECK_TOKEN ();
++ subs = token2;
++ token2 = GET_TOKEN (NULL);
++ CHECK_TOKEN ();
++ wx = (int)atof(token2)*1000;
++ token2 = GET_TOKEN (NULL);
++ CHECK_TOKEN ();
++ raito = atof(token2);
++ encoding_add_composite_font(encoding, "default_composite__",
++ subs, wx, raito);
++ }
++ else if (strequ (token, "Composite:"))
++ {
++ char * orig, * subs;
++ int wx;
++ float raito;
++
++ token2 = GET_TOKEN (NULL);
++ CHECK_TOKEN ();
++ orig = token2;
++ token2 = GET_TOKEN (NULL);
++ CHECK_TOKEN ();
++ subs = token2;
++ token2 = GET_TOKEN (NULL);
++ CHECK_TOKEN ();
++ wx = (int)atof(token2)*1000;
++ token2 = GET_TOKEN (NULL);
++ CHECK_TOKEN ();
++ raito = atof(token2);
++ encoding_add_composite_font(encoding, orig, subs, wx, raito);
++ }
++ else if (strequ (token, "SlantFont:"))
++ {
++ char * new, * src;
++ float raito;
++ unsigned int num;
++
++ token2 = GET_TOKEN (NULL);
++ CHECK_TOKEN ();
++ new = token2;
++ token2 = GET_TOKEN (NULL);
++ CHECK_TOKEN ();
++ src = token2;
++ token2 = GET_TOKEN (NULL);
++ CHECK_TOKEN ();
++ raito = atof(token2);
++ for (num = 0 ; encoding->slantfont[num].name ; num ++ );
++ if (num > sizeof encoding->slantfont - 1){
++ error_at_line (1, 0, fname, firstline,
++ _("too many slant font: `%s'"), new);
++ }
++ encoding_add_slant_font(encoding, new, src, raito);
++ }
+ else
+ error_at_line (1, 0, fname, firstline,
+ _("invalid option `%s'"), quotearg (token));
+@@ -754,6 +938,15 @@ encoding_char_exists (struct encoding *
+ }
+
+ /*
++ * Return the flag of composite flag
++ */
++int
++encoding_get_composite_flag (struct encoding * enc)
++{
++ return enc->composite_flag;
++}
++
++/*
+ * Prepare the environment (a dictionary) for the support
+ * of ENCODING, dump it into STREAM.
+ *
+@@ -766,9 +959,11 @@ dump_encoding_setup (FILE * stream,
+ struct encoding * encoding)
+ {
+ size_t i, nb;
++ size_t ns;
+ const char * real_font_name; /* After subsitution */
+ char ** font_names = (char **) encoding->font_names_used->content;
+
++
+ /* How many fonts are there? */
+ da_qsort (encoding->font_names_used);
+ da_unique (encoding->font_names_used, (da_map_func_t) free);
+@@ -787,15 +982,46 @@ dump_encoding_setup (FILE * stream,
+ * in the current ENCODING */
+ nb = encoding->font_names_used->len;
+
++ /* The number of slant fonts */
++ for (i= 0, ns=0 ; encoding->slantfont[i].name ; i++ )
++ ns++;
++
+ /* Create the dictionary and fill it */
+ fprintf (stream, "%% Dictionary for %s support\n",
+ encoding->name);
+- fprintf (stream, "/%sdict %d dict begin\n", encoding->key, nb);
++ fprintf (stream, "/%sdict %d dict begin\n", encoding->key,
++ (encoding->composite_flag == true)? nb+nb+ns:nb+ns);
+ for (i = 0 ; i < nb ; i++)
+ fprintf (stream, " /f%s %sEncoding /%s reencode_font\n",
+ font_names [i],
+ encoding->name,
+ encoding_resolve_font_substitute (job, encoding, font_names [i]));
++
++ /* Slant font setting */
++ for (i = 0 ; encoding->slantfont[i].name ; i++ )
++ fprintf (stream, " /%s /%s %f slantfont definefont pop\n",
++ encoding->slantfont[i].name,
++ encoding->slantfont[i].src,
++ encoding->slantfont[i].raito);
++
++ /*
++ * Composite font setting.
++ * If kanji font size is larger than alphabet character,
++ * set base font size to kanji charactor size.
++ */
++ if (encoding->composite_flag == true) {
++ for (i = 0 ; i < nb ; i++)
++ fprintf (stream, " /f%s /f%s /%s %f %f false compositefont "
++ "%f scalefont def\n",
++ font_names [i],
++ font_names [i],
++ encoding_resolve_composite_font (job, encoding, font_names [i]),
++ encoding->composite_raito[i],
++ (encoding->composite_raito[i] > 1.0)?
++ 0: (1-encoding->composite_raito[i])/2.0,
++ (encoding->composite_raito[i] > 1.0)?
++ 1.0/encoding->composite_raito[i]: 1.0 );
++ }
+ fputs ("currentdict end def\n", stream);
+ }
+
+@@ -939,6 +1165,22 @@ encoding_build_faces_wx (a2ps_job * job,
+ true_font_name,
+ encoding->vector,
+ encoding->faces_wx [face]);
++
++ if (encoding->composite_flag)
++ {
++ encoding->composite_raito[i] =
++ composite_font_info_get_raito(job, encoding,
++ job->face_eo_font [face]);
++
++ encoding->composite_wx[i] =
++ composite_font_info_get_wx(job, encoding,
++ job->face_eo_font [face]);
++
++ /* If kanji font size is larger than alphabet character,
++ fit kanji charactor size to base font size */
++ if (encoding->composite_raito[i] < 1.0)
++ encoding->composite_wx[i] *= encoding->composite_raito[i];
++ }
+ }
+ }
+
+@@ -1073,6 +1315,13 @@ char_WX (a2ps_job * job, uchar c)
+ return 0; /* For -Wall */
+ }
+
++unsigned int
++char_composite_WX (a2ps_job * job, uchar c)
++{
++ return (job->encoding->composite_wx[job->status->face]/
++ job->encoding->composite_raito[job->status->face]);
++}
++
+ /*
+ * Returns the WX of a string (including M- and ^)
+ */
+diff -up a2ps-4.14/lib/encoding.h.euc a2ps-4.14/lib/encoding.h
+--- a2ps-4.14/lib/encoding.h.euc 2007-12-29 02:58:17.000000000 +0100
++++ a2ps-4.14/lib/encoding.h 2008-04-27 10:39:24.000000000 +0200
+@@ -43,6 +43,7 @@ struct a2ps_job; /* Declared in jobs.h w
+ */
+ unsigned int char_WX PARAMS ((struct a2ps_job * job, uchar c));
+ unsigned int string_WX PARAMS ((struct a2ps_job * job, uchar * string));
++unsigned int char_composite_WX PARAMS ((struct a2ps_job * job, uchar c));
+
+
+ /************************************************************************/
+@@ -56,6 +57,7 @@ void encoding_self_print PARAMS ((struct
+ FILE * stream));
+ int encoding_char_exists PARAMS ((struct encoding * enc,
+ enum face_e face, uchar c));
++int encoding_get_composite_flag (struct encoding * enc);
+ struct encoding *
+ get_encoding_by_alias PARAMS ((struct a2ps_job * job,
+ char *string));
+@@ -71,6 +73,12 @@ const char * encoding_resolve_font_subst
+ struct encoding * encoding,
+ const char * font_name));
+
++
++const char * encoding_resolve_composite_font
++ PARAMS ((struct a2ps_job * job,
++ struct encoding * encoding,
++ const char * font_name));
++
+ /*
+ * Have a struct encoding determine the faces_wx
+ */
+diff -up a2ps-4.14/lib/pair_ht.c.euc a2ps-4.14/lib/pair_ht.c
+--- a2ps-4.14/lib/pair_ht.c.euc 2007-12-29 02:58:21.000000000 +0100
++++ a2ps-4.14/lib/pair_ht.c 2008-04-27 10:39:24.000000000 +0200
+@@ -49,6 +49,8 @@ struct pair
+ {
+ char * key;
+ char * value;
++ float raito;
++ int wx;
+ };
+
+ /*
+@@ -165,6 +167,37 @@ pair_add (struct hash_table_s * table,
+ }
+
+ /*
++ * Add a pair, with your own allocation for them.
++ * It KEY is yet used, override its value with VALUE
++ */
++void
++pair_add2 (struct hash_table_s * table,
++ const char * key, const char * value, int wx, float raito)
++{
++ struct pair * item, token;
++
++ token.key = (char *) key;
++ item = (struct pair *) hash_find_item (table, &token);
++
++ if (item) {
++ if (item->value)
++ free (item->value);
++ } else {
++ item = XMALLOC (struct pair, 1);
++ item->key = xstrdup(key);
++ item->wx = wx;
++ item->raito = raito;
++ }
++
++ if (value)
++ item->value = xstrdup (value);
++ else
++ item->value = NULL;
++
++ hash_insert (table, item);
++}
++
++/*
+ * Remove a pair and free it.
+ * It KEY is yet used, override its value with VALUE
+ */
+@@ -201,6 +234,34 @@ pair_get (struct hash_table_s * table, c
+ return NULL;
+ }
+
++int
++pair_get_wx (struct hash_table_s * table, const char * key)
++{
++ struct pair * item, token;
++
++ token.key = (char *) key;
++ item = (struct pair *) hash_find_item (table, &token);
++
++ if (item)
++ return item->wx;
++ else
++ return -1;
++}
++
++float
++pair_get_raito (struct hash_table_s * table, const char * key)
++{
++ struct pair * item, token;
++
++ token.key = (char *) key;
++ item = (struct pair *) hash_find_item (table, &token);
++
++ if (item)
++ return item->raito;
++ else
++ return -1;
++}
++
+ /*
+ * Return the content of the hash table, ordered
+ */
+diff -up a2ps-4.14/lib/pair_ht.h.euc a2ps-4.14/lib/pair_ht.h
+--- a2ps-4.14/lib/pair_ht.h.euc 2007-12-29 02:58:21.000000000 +0100
++++ a2ps-4.14/lib/pair_ht.h 2008-04-27 10:39:24.000000000 +0200
+@@ -56,6 +56,10 @@ void pair_table_free PARAMS ((struct pai
+ void pair_add PARAMS ((struct pair_htable * table,
+ const char * key, const char * value));
+
++void pair_add2 PARAMS ((struct pair_htable * table,
++ const char * key, const char * value,
++ int wx, float raito));
++
+ /*
+ * The key and value of the matching item will be free'd
+ * (No problem if KEY matches nothing)
+@@ -68,6 +72,10 @@ void pair_delete PARAMS ((struct pair_ht
+ */
+ char * pair_get PARAMS ((struct pair_htable * table,
+ const char * key));
++int pair_get_wx PARAMS ((struct pair_htable * table,
++ const char * key));
++float pair_get_raito PARAMS ((struct pair_htable * table,
++ const char * key));
+
+ void pair_table_list_short PARAMS ((struct pair_htable * table,
+ FILE * stream));
+diff -up a2ps-4.14/lib/psgen.c.euc a2ps-4.14/lib/psgen.c
+--- a2ps-4.14/lib/psgen.c.euc 2007-12-29 02:58:22.000000000 +0100
++++ a2ps-4.14/lib/psgen.c 2008-04-27 10:39:24.000000000 +0200
+@@ -875,6 +875,7 @@ ps_print_char (a2ps_job * job, int c, en
+ print:
+ default:
+ {
++ static mb_flag= 0;
+ uchar buf[256];
+ int nchars;
+ *buf = '\0';
+@@ -889,6 +890,29 @@ ps_print_char (a2ps_job * job, int c, en
+ job->status->face_declared = false;
+ }
+
++ if (c > 127 && encoding_get_composite_flag (job->encoding) &&
++ job->status->face != Symbol) {
++ if (mb_flag) {
++ nchars = ps_escape_char (job, mb_flag, buf) +
++ ps_escape_char (job, c, buf);
++ job->status->wx += char_composite_WX(job, c);
++ job->status->column += nchars;
++ if (line_full) {
++ if (job->folding) {
++ fold_line (job, new_face);
++ job->status->column = nchars*2;
++ job->status->wx = char_composite_WX(job, c);
++ } else {
++ job->status->is_in_cut = true;
++ return;
++ }
++ }
++ mb_flag = 0;
++ } else {
++ mb_flag = c;
++ return;
++ }
++ } else {
+ nchars = ps_escape_char (job, c, buf);
+ job->status->wx += char_WX (job, c);
+ job->status->column += nchars;
+@@ -902,8 +926,9 @@ ps_print_char (a2ps_job * job, int c, en
+ return;
+ }
+ }
++ }
+ output (jdiv, "%s", buf);
+- job->status->chars++;
++ job->status->chars+=nchars;
+ }
+ break;
+ }
+diff -up a2ps-4.14/ps/base.ps.euc a2ps-4.14/ps/base.ps
+--- a2ps-4.14/ps/base.ps.euc 2007-12-29 02:58:26.000000000 +0100
++++ a2ps-4.14/ps/base.ps 2008-04-27 10:39:24.000000000 +0200
+@@ -153,7 +153,11 @@
+ % Return the y size of the current font
+ % - => fontsize
+ /currentfontsize {
+- currentfont /FontMatrix get 3 get 1000 mul
++ currentfont /FontType get 0 eq {
++ currentfont /FontMatrix get 3 get
++ }{
++ currentfont /FontMatrix get 3 get 1000 mul
++ } ifelse
+ } bind def
+
+ % reencode the font
+@@ -200,6 +204,144 @@
+ end
+ } bind def
+
++% composite fonts for ASCII-EUC mixed string
++% Version 1.2 1/31/1990
++% Orignal Ken'ichi HANDA (handa@etl.go.jp)
++% Modified Norio Katayama (katayama@rd.nacsis.ac.jp),1998
++% Extend & Fix Koji Nakamaru (maru@on.cs.keio.ac.jp), 1999
++% Anyone can freely copy, modify, distribute this program.
++
++/copyfont { % font-dic extra-entry-count copyfont font-dic
++ 1 index maxlength add dict begin
++ { 1 index /FID ne 2 index /UniqueID ne and
++ {def} {pop pop} ifelse
++ } forall
++ currentdict
++ end
++} bind def
++
++/compositefont { % ASCIIFontName EUCFontName RomanScale RomanOffset Rot(T/F) compositefont font
++ /RomanRotation exch def
++ /RomanOffset exch def
++ /RomanScale exch def
++ userdict /fixeucfont_dict known not {
++ userdict begin
++ /fixeucfont_dict 2 dict begin
++ /UpperByteEncoding [
++ 16#00 1 16#20 { pop 0 } for
++ 16#21 1 16#28 { 16#20 sub } for
++ 16#29 1 16#2F { pop 0 } for
++ 16#30 1 16#74 { 16#27 sub } for
++ 16#75 1 16#FF { pop 0 } for
++ ] def
++ /LowerByteEncoding [
++ 16#00 1 16#A0 { pop /.notdef } for
++ 16#A1 1 16#FE { 16#80 sub 16 2 string cvrs
++ (cXX) dup 1 4 -1 roll
++ putinterval cvn } for
++ /.notdef
++ ] def
++ currentdict
++ end def
++ end
++ } if
++ findfont dup /FontType get 0 eq {
++ 14 dict begin
++ %
++ % 7+8 bit EUC font
++ %
++ 12 dict begin
++ /EUCFont exch def
++ /FontInfo (7+8 bit EUC font) readonly def
++ /PaintType 0 def
++ /FontType 0 def
++ /FontMatrix matrix def
++ % /FontName
++ /Encoding fixeucfont_dict /UpperByteEncoding get def
++ /FMapType 2 def
++ EUCFont /WMode known
++ { EUCFont /WMode get /WMode exch def }
++ { /WMode 0 def } ifelse
++ /FDepVector [
++ EUCFont /FDepVector get 0 get
++ [ 16#21 1 16#28 {} for 16#30 1 16#74 {} for ]
++ {
++ 13 dict begin
++ /EUCFont EUCFont def
++ /UpperByte exch 16#80 add def
++ % /FontName
++ /FontInfo (EUC lower byte font) readonly def
++ /PaintType 0 def
++ /FontType 3 def
++ /FontMatrix matrix def
++ /FontBBox {0 0 0 0} def
++ /Encoding
++ fixeucfont_dict /LowerByteEncoding get def
++ % /UniqueID
++ % /WMode
++ /BuildChar {
++ gsave
++ exch dup /EUCFont get setfont
++ /UpperByte get
++ 2 string
++ dup 0 4 -1 roll put
++ dup 1 4 -1 roll put
++ dup stringwidth setcharwidth
++ 0 0 moveto show
++ grestore
++ } bind def
++ currentdict
++ end
++ /lowerbytefont exch definefont
++ } forall
++ ] def
++ currentdict
++ end
++ /eucfont exch definefont
++ exch
++ findfont 1 copyfont dup begin
++ RomanRotation {
++ /FontMatrix FontMatrix
++ [ 0 RomanScale neg RomanScale 0 RomanOffset neg 0 ]
++ matrix concatmatrix def
++ }{
++ /FontMatrix FontMatrix
++ [ RomanScale 0 0 RomanScale 0 RomanOffset ] matrix concatmatrix
++ def
++ /CDevProc
++ {pop pop pop pop 0 exch -1000 exch 2 div 880} def
++ } ifelse
++ end
++ /asciifont exch definefont
++ exch
++ /FDepVector [ 4 2 roll ] def
++ /FontType 0 def
++ /WMode 0 def
++ /FMapType 4 def
++ /FontMatrix matrix def
++ /Encoding [0 1] def
++ /FontBBox {0 0 0 0} def
++% /FontHeight 1.0 def % XXXX
++ /FontHeight RomanScale 1.0 ge { RomanScale }{ 1.0 } ifelse def
++ /Descent -0.3 def % XXXX
++ currentdict
++ end
++ /tmpfont exch definefont
++ pop
++ /tmpfont findfont
++ }{
++ pop findfont 0 copyfont
++ } ifelse
++} def
++
++/slantfont { % FontName slant-degree slantfont font'
++ exch findfont 1 copyfont begin
++ [ 1 0 4 -1 roll 1 0 0 ] FontMatrix exch matrix concatmatrix
++ /FontMatrix exch def
++ currentdict
++ end
++} def
++
+ % Function print line number ( # -)
+ /# {
+ gsave
+diff -up /dev/null a2ps-4.14/README.eucJP
+--- /dev/null 2008-04-27 11:55:27.307012118 +0200
++++ a2ps-4.14/README.eucJP 2008-04-27 10:39:24.000000000 +0200
+@@ -0,0 +1,100 @@
++a2ps euc-jp kanji supported patch:
++by SATO Satoru
++
++These patches enables a2ps to support the files written in EUC-JP (and other
++Japanese encodings). I only arranged patches created by FURUKAWA Yasuyuki,
++KATAYAMA Yukio, and replaced libjcode by customized jcode.[ch] (by KITAME
++Takuo).
++
++Notes from the orginal patch by FURUKAWA Yukihiro is follows.
++(sorry, it is written in japanese only):
++
++a2ps 4.12で漢字を印刷するためのパッチ
++ 慶應大学大学院
++ 古川 泰之
++
++composite font を使って漢字を表示するためのパッチです。
++composite fontには、片山 紀夫さん(はじめて日本語ghostscriptを作成した
++人)のfixeucfont をベースにa2ps用に多少手をいれております。これを利用す
++ることで、2バイトEUC+ASCIIの文字列のPostscriptの扱いがぐっと簡単にな
++ります。
++
++●Compositeフォントの設定方法について
++最低限の設定はパッチに含まれていますので、とりあえず大丈夫だとは思いま
++す。一応メモしておきます。
++
++encodingファイル($prefix/share/a2ps/encoding/の下のファイル)には
++『Composite:』および、『DefaultComposite:』が新たに指定できます。たと
++えば、英語フォントに対応するEUCエンコーディングの日本語フォントを書い
++て行きます。また、この際、フォント幅と半角と漢字の比も指定しなくてはな
++りません。手抜きによって、漢字は固定幅フォントしか指定してはいけません。
++
++--------------------------------------------------
++# 日本語フォント フォン横幅 半角と漢字の比
++DefaultComposite: Ryumin-Light-EUC-H 1 1.1
++# 英語フォント 日本語フォント フォン横幅 半角と漢字の比
++Composite: Helvetica GothicBBB-Medium-EUC-H 1 1.1
++--------------------------------------------------
++
++また、これだと斜体漢字がなく、さみしいので、SlantFontを使い、斜体の漢
++字フォントも作成できます。
++
++--------------------------------------------------
++# 新規斜体日本語フォント名 ソース日本語フォント 傾き度
++SlantFont: Ryumin-Light-EUC-H-Italic Ryumin-Light-EUC-H 0.2
++--------------------------------------------------
++
++SlantFontで生成した斜体フォントはCompositeフォント(第2引数)で利用でき
++ます。
++
++●このパッチの詳細データ
++ ・残念ながら2バイトEUCコードを前提としたコーディングをしています。
++ そのため、あまり漢字以外の言語を考えておりません…。
++ ・倉光 君郎氏のlibjcodeを使って内部で入力ファイルの漢字エンコーディ
++ ングをすべてEUCに変換して処理するようにしています。ただし、オリジ
++ ナルのlibjcodeは、SJISおよびEUCの判定が甘かったので多少カスタムし
++ ております。
++ ・また、texのdelegate(contrib/texi2dvi4a2ps)中、TeXドライバにはpTeX
++ と決めうちしています。これがいやなら、例えばNTT-jTeXを使用したい場
++ 合、環境変数TEXに『jtex』を、LATEXには『jlatex』を指定してください。
++ ・compositefontをa2ps用に多少カスタマイズしていますが、フォントの高
++ さなどの情報を完全に固定で決め打ちしている箇所があります(XXXでメモ
++ しています)。そのためあまり応用性が低いと思います。
++
++●半角を全角の1/2の大きさにしたい
++パッチデフォルトでは全角文字と半角文字の大きさのバランスは、見た感じが
++(個人的なセンスで)安定するようにチューニングしています。もし、テキスト
++で表を作成していて、そのため、半角文字を全角のちょうど半分にそろえたい
++という場合の対処方法を書いておきます。
++
++インストール後、$prefix/share/a2ps/encoding/euc-jp中に、
++
++--------------------------------------------------
++DefaultComposite: Ryumin-Light-EUC-H 1.0 1.1
++--------------------------------------------------
++
++というのがあると思います。最後の『1.1』を『0.8342』あたりに変更して下
++さい。ノーマル固定文字に関してはこれで望みの結果が得られると思います。
++
++他の太字フォントなども、例えば
++
++--------------------------------------------------
++Composite: Courier-Bold GothicBBB-Medium-EUC-H 1.0 0.8342
++--------------------------------------------------
++
++のように変更すればいいと思います。なお、Courierがつかないフォント
++(Helvetica等)はもともとプロポーショナルフォントなので、固定幅にはでき
++ません。
++
++
++
++●再配布について
++なんだかんだいって、このパッチは、
++
++倉光 君郎さんのlibjcode + 片山 紀夫さんのfixeucfont
++
++を組み合わてできたもので私自身のコードは実はほとんどありません…。
++
++私自身のコードは再配付/改造に関してなんら制限を設けるつもりはありませ
++ん。ただし、私以外のコードの方が多いため、一応それだけは御了承お願い致
++します。
+diff -up a2ps-4.14/src/buffer.c.euc a2ps-4.14/src/buffer.c
+--- a2ps-4.14/src/buffer.c.euc 2007-12-29 02:58:34.000000000 +0100
++++ a2ps-4.14/src/buffer.c 2008-04-27 10:39:24.000000000 +0200
+@@ -41,6 +41,21 @@
+ #include "argmatch.h"
+ #include "buffer.h"
+ #include
++
++#ifdef HAVE_CONFIG_H
++# include
++#endif
++
++#ifdef ENABLE_KANJI
++# include
++# include
++# include
++# include
++# include
++# include
++extern use_jcode;
++#endif
++
+
+ /****************************************************************/
+ /* Handling of the various eol styles */
+@@ -526,3 +541,278 @@ buffer_test (const char *filename)
+ buffer_release (&buffer);
+ }
+ #endif
++
++/**
++ * from jcode.c by Takuo KITAME
++ */
++#ifdef ENABLE_KANJI
++
++enum {
++ JCODE_ASCII,
++ JCODE_EUC,
++ JCODE_JIS,
++ JCODE_SJIS,
++ EUCORSJIS };
++
++#define ESC 0x1b
++#define SS2 0x8e
++
++#define JCODE_LOCALE_EUC "ja", "ja_JP", "ja_JP.ujis", "ja_JP.EUC", "ja_JP.eucJP"
++#define JCODE_LOCALE_JIS "ja_JP.JIS", "ja_JP.jis", "ja_JP.iso-2022-jp"
++#define JCODE_LOCALE_SJIS "ja_JP.SJIS", "ja_JP.sjis"
++
++/****************************************************************************/
++/* Japanese string code detector */
++/****************************************************************************/
++int
++detect_kanji(unsigned char *str)
++{
++ int expected = JCODE_ASCII;
++ register int c;
++ int c1, c2;
++ int euc_c = 0, sjis_c = 0;
++ unsigned char *ptr = str;
++
++ while((c = (int)*ptr)!= '\0') {
++ if(c == ESC) {
++ if((c = (int)*(++ptr)) == '\0')
++ break;
++ if(c == '$') {
++ if((c = (int)*(++ptr)) == '\0')
++ break;
++ if(c == 'B' || c == '@')
++ return JCODE_JIS;
++ }
++ ptr++;
++ continue;
++ }
++ if((c >= 0x81 && c <= 0x8d) || (c >= 0x8f && c <= 0x9f))
++ return JCODE_SJIS;
++
++ if(c == SS2) {
++ if((c = (int)*(++ptr)) == '\0')
++ break;
++ if((c >= 0x40 && c <= 0x7e) ||
++ (c >= 0x80 && c <= 0xa0) ||
++ (c >= 0xe0 && c <= 0xfc))
++ return JCODE_SJIS;
++ if(c >= 0xa1 && c <= 0xdf)
++ break;
++
++ ptr++;
++ continue;
++ }
++ if(c >= 0xa1 && c <= 0xdf) {
++ if((c = (int)*(++ptr)) == '\0')
++ break;
++
++ if (c >= 0xe0 && c <= 0xfe)
++ return JCODE_EUC;
++ if (c >= 0xa1 && c <= 0xdf) {
++ expected = EUCORSJIS;
++ ptr++;
++ continue;
++ }
++#if 1
++ if(c == 0xa0 || (0xe0 <= c && c <= 0xfe))
++ return JCODE_EUC;
++ else {
++ expected = EUCORSJIS;
++ ptr++;
++ continue;
++ }
++#else
++ if(c <= 0x9f)
++ return JCODE_SJIS;
++ if(c >= 0xf0 && c <= 0xfe)
++ return JCODE_EUC;
++#endif
++
++ if(c >= 0xe0 && c <= 0xef) {
++ expected = EUCORSJIS;
++ while(c >= 0x40) {
++ if(c >= 0x81) {
++ if(c <= 0x8d || (c >= 0x8f && c <= 0x9f))
++ return JCODE_SJIS;
++ else if(c >= 0xfd && c <= 0xfe) {
++ return JCODE_EUC;
++ }
++ }
++ if((c = (int)*(++ptr)) == '\0')
++ break;
++ }
++ ptr++;
++ continue;
++ }
++
++ if(c >= 0xe0 && c <= 0xef) {
++ if((c = (int)*(++ptr)) == '\0')
++ break;
++ if((c >= 0x40 && c <= 0x7e) || (c >= 0x80 && c <= 0xa0))
++ return JCODE_SJIS;
++ if(c >= 0xfd && c <= 0xfe)
++ return JCODE_EUC;
++ if(c >= 0xa1 && c <= 0xfc)
++ expected = EUCORSJIS;
++ }
++ }
++#if 1
++ if (0xf0 <= c && c <= 0xfe)
++ return JCODE_EUC;
++#endif
++ ptr++;
++ }
++
++ ptr = str;
++ c2 = 0;
++ while((c1 = (int)*ptr++) != '\0') {
++ if(((c2 > 0x80 && c2 < 0xa0) || (c2 >= 0xe0 && c2 < 0xfd)) &&
++ ((c1 >= 0x40 && c1 < 0x7f) || (c1 >= 0x80 && c1 < 0xfd)))
++ sjis_c++, c1 = *ptr++;
++ c2 = c1;
++ }
++ if(sjis_c == 0)
++ expected = JCODE_EUC;
++ else {
++ ptr = str, c2 = 0;
++ while((c1 = (int)*ptr++) != '\0') {
++ if((c2 > 0xa0 && c2 < 0xff) &&
++ (c1 > 0xa0 && c1 < 0xff))
++ euc_c++, c1 = *ptr++;
++ c2 = c1;
++ }
++ if(sjis_c > euc_c)
++ expected = JCODE_SJIS;
++ else
++ expected = JCODE_EUC;
++ }
++ return expected;
++}
++
++int
++int_detect_JCode(char *str)
++{
++ int detected;
++
++ if(!str)
++ return 0;
++
++ detected = detect_kanji((unsigned char *)str);
++
++ if(detected == JCODE_ASCII)
++ return JCODE_ASCII;
++
++ switch(detected) {
++ case JCODE_EUC:
++ return JCODE_EUC;
++ break;
++ case JCODE_JIS:
++ return JCODE_JIS;
++ break;
++ case JCODE_SJIS:
++ return JCODE_SJIS;
++ break;
++ default:
++ return JCODE_ASCII;
++ break;
++ }
++
++ /* not reached */
++ return 0;
++}
++
++const char *
++detect_JCode(char *str)
++{
++ int detected;
++
++ if(!str)
++ return NULL;
++
++ detected = detect_kanji((unsigned char *)str);
++
++ if(detected == JCODE_ASCII)
++ return "ASCII";
++
++ switch(detected) {
++ case JCODE_EUC:
++ return "EUC-JP";
++ break;
++ case JCODE_JIS:
++ return "ISO-2022-JP";
++ break;
++ case JCODE_SJIS:
++ return "SJIS";
++ break;
++ default:
++ return "ASCII";
++ break;
++ }
++
++ /* not reached */
++ return 0;
++}
++
++char *
++kanji_conv_auto(char *str, const char *dstset)
++{
++ unsigned char *buf, *ret;
++ iconv_t cd;
++ size_t insize = 0;
++ size_t outsize = 0;
++ size_t nconv = 0;
++ char *inptr;
++ char *outptr;
++ char srcset[16];
++
++ if(!str)
++ return NULL;
++
++ switch (int_detect_JCode(str)) {
++ case JCODE_EUC:
++ strcpy(srcset, "EUC-JP");
++ break;
++ case JCODE_JIS:
++ strcpy(srcset, "ISO-2022-JP");
++ break;
++ case JCODE_SJIS:
++ strcpy(srcset, "SJIS");
++ break;
++ default:
++ return strdup(str);
++ break;
++ }
++
++ buf = (unsigned char *)malloc(strlen(str)* 4 + 1);
++ if(!buf)
++ return NULL;
++
++ insize = strlen(str);
++ inptr = str;
++ outsize = strlen(str) * 4 ;
++ outptr = buf;
++
++ cd = iconv_open(dstset, srcset);
++ if(cd == (iconv_t) -1) {
++ if(errno == EINVAL)
++ return strdup(str);
++ }
++
++ nconv = iconv(cd, (const char **)&inptr, &insize, &outptr, &outsize);
++ if(nconv == (size_t) -1) {
++ if (errno == EINVAL)
++ memmove (buf, inptr, insize);
++ } else
++ iconv(cd, NULL, NULL, &outptr, &outsize);
++
++ *outptr = '\0';
++ iconv_close(cd);
++
++ ret = strdup(buf);
++ free(buf);
++
++ return ret;
++}
++
++#endif
++
+diff -up a2ps-4.14/src/buffer.h.euc a2ps-4.14/src/buffer.h
+--- a2ps-4.14/src/buffer.h.euc 2007-12-29 02:58:35.000000000 +0100
++++ a2ps-4.14/src/buffer.h 2008-04-27 10:39:24.000000000 +0200
+@@ -104,4 +104,15 @@ void buffer_sample_get PARAMS ((buffer_t
+ void buffer_save PARAMS ((buffer_t * buffer, const char * filename));
+
+ #define buffer_is_empty(Buf) (Buf->curr >= Buf->len)
++
++
++/**
++ * from jcode.h by Takuo KITAME
++ */
++
++char *kanji_conv_auto(char *str, const char *dstset);
++
++const char *detect_JCode(char *str);
++int int_detect_JCode(char *str);
++
+ #endif
+diff -up a2ps-4.14/src/Makefile.am.euc a2ps-4.14/src/Makefile.am
+--- a2ps-4.14/src/Makefile.am.euc 2007-12-29 02:36:09.000000000 +0100
++++ a2ps-4.14/src/Makefile.am 2008-04-27 10:39:24.000000000 +0200
+@@ -33,13 +33,13 @@ DEFS = @DEFS@ -DLOCALEDIR=\"$(datadir)/l
+ a2ps_SOURCES = main.c \
+ read.c sshread.c ssheet.c select.c generate.c \
+ delegate.c regex.c buffer.c versions.c ffaces.c \
+-version-etc.c long-options.c \
++version-etc.c long-options.c jcode.c \
+ parsessh.y lexssh.l lexps.l sheets-map.l
+
+ noinst_HEADERS = main.h \
+ read.h sshread.h ssheet.h select.h generate.h \
+ delegate.h regex.h buffer.h versions.h ffaces.h \
+-version-etc.h long-options.h \
++version-etc.h long-options.h jcode.h \
+ yy2ssh.h lexps.h
+
+ BUILT_SOURCES = parsessh.c parsessh.h
diff --git a/a2ps-4.13-glibcpaper.patch b/a2ps-4.13-glibcpaper.patch
index 7030b73..23ab881 100644
--- a/a2ps-4.13-glibcpaper.patch
+++ b/a2ps-4.13-glibcpaper.patch
@@ -1,43 +1,25 @@
-diff -up a2ps-4.15.3/doc/a2ps.texi.glibcpaper a2ps-4.15.3/doc/a2ps.texi
---- a2ps-4.15.3/doc/a2ps.texi.glibcpaper 2023-04-25 15:55:46.783621115 +0200
-+++ a2ps-4.15.3/doc/a2ps.texi 2023-04-25 16:01:07.004225790 +0200
-@@ -1359,6 +1359,12 @@ use output medium @var{medium}. See the
- default; see the man page of @code{paper} for how this is configured.
- The default paper size may also be requested explicitly with the name
- @samp{libpaper}.
-+
-+The special @var{medium} @samp{_glibc} (which, in this Red Hat Linux
-+version of @samp{a2ps}, is the default) means that you want the medium
-+to be determined by the locale category @samp{LC_PAPER}. Note that this
-+information is obtained from environment variables which may not be set
-+up in non-interactive environments (such as in a cron job).
- @end defvr
-
- @defvr {Option} -r
-diff -up a2ps-4.15.3/liba2ps/jobs.c.glibcpaper a2ps-4.15.3/liba2ps/jobs.c
---- a2ps-4.15.3/liba2ps/jobs.c.glibcpaper 2023-04-25 15:55:46.781621105 +0200
-+++ a2ps-4.15.3/liba2ps/jobs.c 2023-04-25 15:56:51.340944620 +0200
-@@ -119,6 +119,7 @@ a2ps_job_new (void)
- setlocale (LC_TIME, "");
+--- a2ps-4.13/lib/jobs.c.glibcpaper Sat Jan 15 18:15:07 2000
++++ a2ps-4.13/lib/jobs.c Tue Feb 20 18:44:48 2001
+@@ -138,6 +138,7 @@
setlocale (LC_MESSAGES, "");
+ #endif
setlocale (LC_CTYPE, "");
+ setlocale (LC_PAPER, "");
bindtextdomain (PACKAGE, LOCALEDIR);
- bindtextdomain (PACKAGE "-gnulib", LOCALEDIR);
-diff -up a2ps-4.15.3/liba2ps/options.c.glibcpaper a2ps-4.15.3/liba2ps/options.c
---- a2ps-4.15.3/liba2ps/options.c.glibcpaper 2023-03-19 18:22:01.000000000 +0100
-+++ a2ps-4.15.3/liba2ps/options.c 2023-04-25 15:57:18.942082933 +0200
-@@ -41,6 +41,8 @@
+ textdomain (PACKAGE);
+--- a2ps-4.13/lib/options.c.glibcpaper Tue Aug 31 13:42:41 1999
++++ a2ps-4.13/lib/options.c Tue Feb 20 18:44:48 2001
+@@ -54,6 +54,8 @@
+ #include "argv.h"
#include "quotearg.h"
#include "filalign.h"
- #include "version-etc.h"
+#include
+#include
#define MAN_LINES 66 /* no lines for a man */
extern char *program_name;
-@@ -267,7 +269,8 @@ a2ps_handle_options (a2ps_job * job, int
+@@ -281,7 +283,8 @@
struct opt_optarg *opt_optarg_head = NULL;
struct opt_optarg *opt_optarg = NULL;
int res;
@@ -47,7 +29,7 @@ diff -up a2ps-4.15.3/liba2ps/options.c.glibcpaper a2ps-4.15.3/liba2ps/options.c
/* Reset optind so that getopt is reinitialized. */
optind = 0;
-@@ -515,7 +518,14 @@ a2ps_handle_options (a2ps_job * job, int
+@@ -545,7 +548,14 @@
break;
case 'M': /* select a medium */
@@ -63,12 +45,36 @@ diff -up a2ps-4.15.3/liba2ps/options.c.glibcpaper a2ps-4.15.3/liba2ps/options.c
break;
case 'n': /* n copies */
-diff -up a2ps-4.15.3/man/a2ps.1.glibcpaper a2ps-4.15.3/man/a2ps.1
---- a2ps-4.15.3/man/a2ps.1.glibcpaper 2023-04-25 15:55:46.783621115 +0200
-+++ a2ps-4.15.3/man/a2ps.1 2023-04-25 16:01:48.946435970 +0200
-@@ -67,6 +67,11 @@ Sheets:
+--- a2ps-4.13/src/main.c.glibcpaper Wed Jan 26 19:29:15 2000
++++ a2ps-4.13/src/main.c Tue Feb 20 18:45:18 2001
+@@ -945,6 +945,7 @@
+ setlocale (LC_MESSAGES, "");
+ #endif
+ setlocale (LC_CTYPE, "");
++ setlocale (LC_PAPER, "");
+
+ bindtextdomain (PACKAGE, LOCALEDIR);
+ textdomain (PACKAGE);
+--- a2ps-4.13/doc/a2ps.texi.glibcpaper Wed Jan 23 12:36:30 2002
++++ a2ps-4.13/doc/a2ps.texi Wed Jan 23 12:40:08 2002
+@@ -1363,6 +1363,12 @@
+ ask the library @code{libpaper} for the medium to use. This choice is
+ valid only if @code{libpaper} was available when @pack{} was configured.
+ See the man page of @code{paperconf} for more information.
++
++The special @var{medium} @samp{_glibc} (which, in this Red Hat Linux
++version of @samp{a2ps}, is the default) means that you want the medium
++to be determined by the locale category @samp{LC_PAPER}. Note that this
++information is obtained from environment variables which may not be set
++up in non-interactive environments (such as in a cron job).
+ @end defvr
+
+ @defvr {Option} -r
+--- a2ps-4.13/man/a2ps.1.glibcpaper Wed Jan 23 12:42:36 2002
++++ a2ps-4.13/man/a2ps.1 Wed Jan 23 12:45:05 2002
+@@ -60,6 +60,11 @@
.TP
- \fB\-M\fR, \fB\-\-medium\fR=\fI\,NAME\/\fR
+ \fB\-M\fR, \fB\-\-medium\fR=\fINAME\fR
use output medium NAME
+
+The default behaviour is to use the locale category
@@ -78,14 +84,3 @@ diff -up a2ps-4.15.3/man/a2ps.1.glibcpaper a2ps-4.15.3/man/a2ps.1
.TP
\fB\-r\fR, \fB\-\-landscape\fR
print in landscape mode
-diff -up a2ps-4.15.3/src/main.c.glibcpaper a2ps-4.15.3/src/main.c
---- a2ps-4.15.3/src/main.c.glibcpaper 2023-04-25 15:55:46.782621110 +0200
-+++ a2ps-4.15.3/src/main.c 2023-04-25 15:57:45.302215028 +0200
-@@ -933,6 +933,7 @@ main (int argc, char *argv[])
- setlocale (LC_TIME, "");
- setlocale (LC_MESSAGES, "");
- setlocale (LC_CTYPE, "");
-+ setlocale (LC_PAPER, "");
-
- bindtextdomain (PACKAGE, LOCALEDIR);
- bindtextdomain (PACKAGE "-gnulib", LOCALEDIR);
diff --git a/a2ps-4.13-gnusource.patch b/a2ps-4.13-gnusource.patch
new file mode 100644
index 0000000..5e75fbb
--- /dev/null
+++ b/a2ps-4.13-gnusource.patch
@@ -0,0 +1,18 @@
+--- a2ps-4.13/src/main.c.gnusource 2003-10-17 17:07:05.000000000 +0100
++++ a2ps-4.13/src/main.c 2003-10-17 17:07:17.000000000 +0100
+@@ -30,6 +30,7 @@
+ /* I n c l u d e f i l e s */
+ /* */
+ /************************************************************************/
++#define _GNU_SOURCE
+ #include
+ #include
+ #include
+@@ -105,7 +106,6 @@
+ defined twice, see lib/confg.gperf, handling of `Options:'. */
+
+ char *program_name;
+-const char *program_invocation_name;
+
+ /* Stores the data of liba2ps. */
+
diff --git a/a2ps-4.13-security.patch b/a2ps-4.13-security.patch
new file mode 100644
index 0000000..cff6225
--- /dev/null
+++ b/a2ps-4.13-security.patch
@@ -0,0 +1,65 @@
+--- a2ps-4.13/lib/routines.c.security Sat Oct 16 05:46:37 1999
++++ a2ps-4.13/lib/routines.c Mon Feb 12 17:45:15 2001
+@@ -242,3 +242,50 @@
+ /* Don't complain if you can't unlink. Who cares of a tmp file? */
+ unlink (filename);
+ }
++
++/*
++ * Securely generate a temp file, and make sure it gets
++ * deleted upon exit.
++ */
++static char ** tempfiles;
++static unsigned ntempfiles;
++
++static void
++cleanup_tempfiles()
++{
++ while (ntempfiles--)
++ unlink(tempfiles[ntempfiles]);
++}
++
++char *
++safe_tempnam(const char *pfx)
++{
++ char *dirname, *filename;
++ int fd;
++
++ if (!(dirname = getenv("TMPDIR")))
++ dirname = "/tmp";
++
++ tempfiles = (char **) realloc(tempfiles,
++ (ntempfiles+1) * sizeof(char *));
++ if (tempfiles == NULL)
++ return NULL;
++
++ filename = malloc(strlen(dirname) + strlen(pfx) + sizeof("/XXXXXX"));
++ if (!filename)
++ return NULL;
++
++ sprintf(filename, "%s/%sXXXXXX", dirname, pfx);
++
++ if ((fd = mkstemp(filename)) < 0) {
++ free(filename);
++ return NULL;
++ }
++ close(fd);
++
++ if (ntempfiles == 0)
++ atexit(cleanup_tempfiles);
++ tempfiles[ntempfiles++] = filename;
++
++ return filename;
++}
+--- a2ps-4.13/lib/routines.h.security Mon Oct 18 21:24:41 1999
++++ a2ps-4.13/lib/routines.h Mon Feb 12 17:39:30 2001
+@@ -255,7 +255,8 @@
+ /* If _STR_ is not defined, give it a tempname in _TMPDIR_ */
+ #define tempname_ensure(Str) \
+ do { \
+- (Str) = (Str) ? (Str) : tempnam (NULL, "a2_"); \
++ (Str) = (Str) ? (Str) : safe_tempnam("a2_"); \
+ } while (0)
++char * safe_tempnam(const char *);
+
+ #endif
diff --git a/a2ps-4.13b-attr.patch b/a2ps-4.13b-attr.patch
new file mode 100644
index 0000000..c157604
--- /dev/null
+++ b/a2ps-4.13b-attr.patch
@@ -0,0 +1,92 @@
+--- a2ps-4.13/lib/fonts.c.attr Wed Jan 9 14:41:27 2002
++++ a2ps-4.13/lib/fonts.c Wed Jan 9 14:42:01 2002
+@@ -2173,7 +2173,7 @@
+ * in the encoding specific dictionary
+ */
+ int
+-font_is_to_reencode (PARAM_UNUSED struct a2ps_job * job, const char * key)
++font_is_to_reencode (struct a2ps_job * job PARAM_UNUSED, const char * key)
+ {
+ return !strequ (key, "Symbol");
+ }
+--- a2ps-4.13/lib/lister.c.attr Wed Jan 9 14:41:30 2002
++++ a2ps-4.13/lib/lister.c Wed Jan 9 14:42:28 2002
+@@ -333,7 +333,7 @@
+ }
+
+ void
+-lister_fprint_vertical (struct lister * lister, PARAM_UNUSED FILE *unused,
++lister_fprint_vertical (struct lister * lister, FILE *unused PARAM_UNUSED,
+ void **items, size_t item_number,
+ lister_width_t item_width_fn,
+ lister_print_t item_print_fn)
+@@ -483,7 +483,7 @@
+ /* FIXME: document */
+
+ void
+-lister_fprint_horizontal (struct lister * lister, PARAM_UNUSED FILE *unused,
++lister_fprint_horizontal (struct lister * lister, FILE *unused PARAM_UNUSED,
+ void **items, size_t item_number,
+ lister_width_t item_width_fn,
+ lister_print_t item_print_fn)
+@@ -577,7 +577,7 @@
+ */
+
+ void
+-lister_fprint_separated (struct lister * lister,PARAM_UNUSED FILE *unused,
++lister_fprint_separated (struct lister * lister,FILE *unused PARAM_UNUSED,
+ void **items, size_t item_number,
+ lister_width_t item_width_fn,
+ lister_print_t item_print_fn)
+--- a2ps-4.13/lib/media.c.attr Wed Jan 9 14:41:33 2002
++++ a2ps-4.13/lib/media.c Wed Jan 9 14:42:35 2002
+@@ -190,7 +190,7 @@
+
+ /* Is libpaper used? */
+ bool
+-a2ps_medium_libpaper_p (PARAM_UNUSED a2ps_job * job, const char * name)
++a2ps_medium_libpaper_p (a2ps_job * job PARAM_UNUSED, const char * name)
+ {
+ return strequ (name, LIBPAPER_MEDIUM) ? true : false;
+ }
+--- a2ps-4.13/lib/pathwalk.c.attr Wed Jan 9 14:41:38 2002
++++ a2ps-4.13/lib/pathwalk.c Wed Jan 9 14:42:47 2002
+@@ -425,14 +425,14 @@
+ /* Helping functions for pw_glob. */
+
+ static bool
+-pw_filter_fnmatch (PARAM_UNUSED const char * dir, const char *file,
++pw_filter_fnmatch (const char * dir PARAM_UNUSED, const char *file,
+ const char *pattern)
+ {
+ return !fnmatch (pattern, file, 0);
+ }
+
+ static void
+-pw_filter_da_append (PARAM_UNUSED const char * dir, const char *file,
++pw_filter_da_append (const char * dir PARAM_UNUSED, const char *file,
+ struct darray *da)
+ {
+ da_append (da, xstrdup (file));
+--- a2ps-4.13/lib/routines.c.attr Wed Jan 9 14:41:42 2002
++++ a2ps-4.13/lib/routines.c Wed Jan 9 14:42:54 2002
+@@ -235,7 +235,7 @@
+ * Unlink the file FILENAME.
+ */
+ void
+-unlink2 (PARAM_UNUSED void * dummy, const char * filename)
++unlink2 (void * dummy PARAM_UNUSED, const char * filename)
+ {
+ message (msg_tool | msg_file, (stderr, "Unlinking file `%s'\n", filename));
+
+--- a2ps-4.13/lib/fonts.l.attr Wed Jan 9 14:58:38 2002
++++ a2ps-4.13/lib/fonts.l Wed Jan 9 14:58:52 2002
+@@ -585,7 +585,7 @@
+ * in the encoding specific dictionary
+ */
+ int
+-font_is_to_reencode (PARAM_UNUSED struct a2ps_job * job, const char * key)
++font_is_to_reencode (struct a2ps_job * job PARAM_UNUSED, const char * key)
+ {
+ return !strequ (key, "Symbol");
+ }
diff --git a/a2ps-4.13b-encoding.patch b/a2ps-4.13b-encoding.patch
index 0b26e4a..d4337b6 100644
--- a/a2ps-4.13b-encoding.patch
+++ b/a2ps-4.13b-encoding.patch
@@ -1,26 +1,5 @@
-diff --git a/encoding/encoding.map b/encoding/encoding.map
-index 926749e..7eb3873 100644
---- a/encoding/encoding.map
-+++ b/encoding/encoding.map
-@@ -45,6 +45,7 @@ us-ascii ascii
- latin1 iso1
- iso1 iso1
- iso-8859-1 iso1
-+ansi_x3.4-1968 iso1
-
- latin2 iso2
- iso2 iso2
-@@ -142,3 +143,6 @@ hp8 hp
- # Apple' Macintosh
- mac mac
- macintosh mac
-+
-+# We don't handle UTF-8 at all yet. Sometimes latin1 will work...
-+utf-8 iso1
-diff --git a/etc/a2ps-site.cfg.in b/etc/a2ps-site.cfg.in
-index 2bbcddd..f9f699d 100644
---- a/etc/a2ps-site.cfg.in
-+++ b/etc/a2ps-site.cfg.in
+--- a2ps-4.13/etc/a2ps-site.cfg.in.encoding 2000-01-15 23:39:36.000000000 +0000
++++ a2ps-4.13/etc/a2ps-site.cfg.in 2002-08-05 10:22:20.000000000 +0100
@@ -11,7 +11,7 @@
#################################################################
@@ -28,27 +7,44 @@ index 2bbcddd..f9f699d 100644
-Options: --encoding=@ENCODING@
+#Options: --encoding=@ENCODING@
- #################################################################
- # 2) Your printers #
-diff --git a/src/main.c b/src/main.c
-index 32699ce..b015fb0 100644
---- a/src/main.c
-+++ b/src/main.c
-@@ -25,6 +25,7 @@
- #include
-
- #include
+ # Default medium
+ Options: --medium=@MEDIUM@
+--- a2ps-4.13/src/main.c.encoding 2002-08-05 10:22:20.000000000 +0100
++++ a2ps-4.13/src/main.c 2002-08-05 10:22:20.000000000 +0100
+@@ -32,6 +32,7 @@
+ /************************************************************************/
+ #include
+ #include
+#include
#include
#include "a2ps.h"
-@@ -989,6 +990,9 @@ main (int argc, char *argv[])
+@@ -1021,9 +1022,8 @@
sheets_map = sheets_map_new ();
style_sheets = new_style_sheets ();
+- /* Process special case: Japanese Document */
+- if (! strncmp (locale, "ja", 2) )
+- job->requested_encoding_name = xstrdup ("euc-jp");
+ /* Use locale to set default encoding. */
+ job->requested_encoding_name = xstrdup (nl_langinfo (CODESET));
-+
+
/* Process the command line options. */
argn = a2ps_handle_options (job, argc, argv);
- switch (behavior) {
+--- a2ps-4.13/encoding/encoding.map.encoding 2002-08-05 10:22:20.000000000 +0100
++++ a2ps-4.13/encoding/encoding.map 2002-08-05 10:38:55.000000000 +0100
+@@ -45,6 +45,7 @@
+ latin1 iso1
+ iso1 iso1
+ iso-8859-1 iso1
++ansi_x3.4-1968 iso1
+
+ latin2 iso2
+ iso2 iso2
+@@ -128,3 +129,6 @@
+ # Apple' Macintosh
+ mac mac
+ macintosh mac
++
++# We don't handle UTF-8 at all yet. Sometimes latin1 will work...
++utf-8 iso1
diff --git a/a2ps-4.13b-numeric.patch b/a2ps-4.13b-numeric.patch
index e6dbe77..b7d0990 100644
--- a/a2ps-4.13b-numeric.patch
+++ b/a2ps-4.13b-numeric.patch
@@ -1,11 +1,10 @@
-diff -up a2ps-4.15.5/src/main.c.numeric a2ps-4.15.5/src/main.c
---- a2ps-4.15.5/src/main.c.numeric 2023-07-25 13:51:15.682949214 +0200
-+++ a2ps-4.15.5/src/main.c 2023-07-25 13:56:01.934924976 +0200
-@@ -927,6 +927,7 @@ main (int argc, char *argv[])
- setlocale (LC_MESSAGES, "");
- setlocale (LC_CTYPE, "");
+--- a2ps-4.13/src/main.c.numeric Wed Jan 9 14:59:46 2002
++++ a2ps-4.13/src/main.c Wed Jan 9 15:03:52 2002
+@@ -951,6 +951,7 @@
setlocale (LC_PAPER, "");
+
+ locale = setlocale (LC_ALL, "");
+ setlocale (LC_NUMERIC, "C");
+ /* fprintf(stderr, "locale : %s\n", locale); */
bindtextdomain (PACKAGE, LOCALEDIR);
- bindtextdomain (PACKAGE "-gnulib", LOCALEDIR);
diff --git a/a2ps-4.14-texinfo-nodes.patch b/a2ps-4.14-texinfo-nodes.patch
index a06fb2d..47c2001 100644
--- a/a2ps-4.14-texinfo-nodes.patch
+++ b/a2ps-4.14-texinfo-nodes.patch
@@ -1,84 +1,6 @@
-diff -up a2ps-4.15.5/doc/a2ps.texi.nodes a2ps-4.15.5/doc/a2ps.texi
---- a2ps-4.15.5/doc/a2ps.texi.nodes 2023-07-25 18:04:09.076935779 +0200
-+++ a2ps-4.15.5/doc/a2ps.texi 2023-07-25 18:11:46.197081542 +0200
-@@ -342,11 +342,11 @@ Contributions
-
- Frequently asked questions
-
--* Why Does ...?:: Questions on Error
--* How Can I ...?:: a2ps' How-To
--* Please tell me...:: Existential Questions on a2ps
-+* Why Does?:: Questions on Error
-+* How Can I?:: a2ps' How-To
-+* Please tell me:: Existential Questions on a2ps
-
--Why Does...?
-+Why Does?
-
- * It Prints Nothing:: The printer issues nothing
- * It Prints in Simplex:: While I asked for Duplex
-@@ -356,7 +356,7 @@ Why Does...?
- * It Says my File is Binary:: And refuses to print it
- * It Refuses to Change the Font Size::
-
--How Can I ...?
-+How Can I?
-
- * Leave Room for Binding:: Specifying Margins
- * Print stdin:: Using a2ps in a pipe chain
-@@ -365,7 +365,7 @@ How Can I ...?
- * Pass Options to lpr:: Disable the banner
- * Man Pages with Underlines:: Now it Prints With Italics
-
--Please tell me...
-+Please tell me
-
- * Is a2ps Y2K compliant?:: Printing dates in short format
- * Why not using yacc:: Why Using Style Sheets
-@@ -5841,13 +5841,13 @@ question about the options, etc. It has
- suggestions, not to contact the authors.
-
- @menu
--* Why Does ...?:: Questions on Error
--* How Can I ...?:: a2ps' How-To
--* Please tell me...:: Existential Questions on a2ps
-+* Why Does?:: Questions on Error
-+* How Can I?:: a2ps' How-To
-+* Please tell me:: Existential Questions on a2ps
- @end menu
-
--@node Why Does ...?
--@section Why Does...?
-+@node Why Does?
-+@section Why Does?
-
- Error related questions.
-
-@@ -6069,8 +6069,8 @@ Note that the `pure' options (no side-ef
- virtual pages are @samp{--columns} and @samp{--rows}.
-
- @c -----------------------------How can I ? ------------------------------
--@node How Can I ...?
--@section How Can I ...?
-+@node How Can I?
-+@section How Can I?
-
- A mini how-to on @pack{}.
-
-@@ -6152,8 +6152,8 @@ Use @samp{a2ps --pro=ul}.
-
-
- @c -------------------------- Please Tell me ? ------------------------------
--@node Please tell me...
--@section Please tell me...
-+@node Please tell me
-+@section Please tell me
-
- Wondering something?
-
-diff -up a2ps-4.15.5/doc/regex.texi.nodes a2ps-4.15.5/doc/regex.texi
---- a2ps-4.15.5/doc/regex.texi.nodes 2022-05-01 14:00:35.000000000 +0200
-+++ a2ps-4.15.5/doc/regex.texi 2023-07-25 18:04:09.094935900 +0200
+diff -up a2ps-4.14/doc/regex.texi_old a2ps-4.14/doc/regex.texi
+--- a2ps-4.14/doc/regex.texi_old 2002-03-04 19:46:24.000000000 +0100
++++ a2ps-4.14/doc/regex.texi 2008-05-16 11:34:42.000000000 +0200
@@ -121,7 +121,7 @@ Regular Expression Syntax
* Syntax Bits::
@@ -106,7 +28,7 @@ diff -up a2ps-4.15.5/doc/regex.texi.nodes a2ps-4.15.5/doc/regex.texi
@section Predefined Syntaxes
If you're programming with Regex, you can set a pattern buffer's
-@@ -552,8 +552,8 @@ The predefined syntaxes--taken directly
+@@ -552,8 +552,8 @@ The predefined syntaxes--taken directly
| RE_NO_BK_VBAR | RE_UNMATCHED_RIGHT_PAREN_ORD)
@end example
@@ -126,3 +48,81 @@ diff -up a2ps-4.15.5/doc/regex.texi.nodes a2ps-4.15.5/doc/regex.texi
@section The Backslash Character
@cindex @samp{\}
+diff -up a2ps-4.14/doc/a2ps.texi_old a2ps-4.14/doc/a2ps.texi
+--- a2ps-4.14/doc/a2ps.texi_old 2008-05-16 11:34:21.000000000 +0200
++++ a2ps-4.14/doc/a2ps.texi 2008-05-16 11:42:11.000000000 +0200
+@@ -371,11 +371,11 @@ Contributions
+
+ Frequently asked questions
+
+-* Why Does ...?:: Questions on Error
+-* How Can I ...?:: a2ps' How-To
+-* Please tell me...:: Existential Questions on a2ps
++* Why Does?:: Questions on Error
++* How Can I?:: a2ps' How-To
++* Please tell me:: Existential Questions on a2ps
+
+-Why Does...?
++Why Does?
+
+ * It Prints Nothing:: The printer issues nothing
+ * It Prints in Simplex:: While I asked for Duplex
+@@ -385,7 +385,7 @@ Why Does...?
+ * It Says my File is Binary:: And refuses to print it
+ * It Refuses to Change the Font Size::
+
+-How Can I ...?
++How Can I?
+
+ * Leave Room for Binding:: Specifying Margins
+ * Print stdin:: Using a2ps in a pipe chain
+@@ -395,7 +395,7 @@ How Can I ...?
+ * Non PostScript Printers:: Using GhostScript
+ * Man Pages with Underlines:: Now it Prints With Italics
+
+-Please tell me...
++Please tell me
+
+ * Is a2ps Y2K compliant?:: Printing dates in short format
+ * The Options Have Changed:: Respect The Users
+@@ -6198,13 +6198,13 @@ question about the options, etc. It has
+ suggestions, not to contact the authors.
+
+ @menu
+-* Why Does ...?:: Questions on Error
+-* How Can I ...?:: a2ps' How-To
+-* Please tell me...:: Existential Questions on a2ps
++* Why Does?:: Questions on Error
++* How Can I?:: a2ps' How-To
++* Please tell me:: Existential Questions on a2ps
+ @end menu
+
+-@node Why Does ...?
+-@section Why Does...?
++@node Why Does?
++@section Why Does?
+
+ Error related questions.
+
+@@ -6426,8 +6426,8 @@ Note that the `pure' options (no side-ef
+ virtual pages are @samp{--columns} and @samp{--rows}.
+
+ @c -----------------------------How can I ? ------------------------------
+-@node How Can I ...?
+-@section How Can I ...?
++@node How Can I?
++@section How Can I?
+
+ A mini how-to on @pack{}.
+
+@@ -6561,8 +6561,8 @@ Use @samp{a2ps --pro=ul}.
+
+
+ @c -------------------------- Please Tell me ? ------------------------------
+-@node Please tell me...
+-@section Please tell me...
++@node Please tell me
++@section Please tell me
+
+ Wondering something?
+
diff --git a/a2ps-U.patch b/a2ps-U.patch
index eff7118..48c5a90 100644
--- a/a2ps-U.patch
+++ b/a2ps-U.patch
@@ -9,3 +9,14 @@
| $a2ps -gEudiff $a2ps_options || exit 1
;;
esac
+--- a2ps-4.13/contrib/pdiff.m4.U 2005-05-05 12:47:54.000000000 +0100
++++ a2ps-4.13/contrib/pdiff.m4 2005-05-05 12:53:10.000000000 +0100
+@@ -100,7 +100,7 @@
+ # We need the total number of lines
+ lines=`wc -l $file1 $file2 | sed -n 3p`
+ lines=`set -- $lines && echo $1`
+- $diff_prog $diff_options -$lines $file1 $file2 \
++ $diff_prog $diff_options -U$lines $file1 $file2 \
+ | $a2ps -gEudiff $a2ps_options || exit 1
+ ;;
+ esac
diff --git a/a2ps-external-libtool.patch b/a2ps-external-libtool.patch
new file mode 100644
index 0000000..5780160
--- /dev/null
+++ b/a2ps-external-libtool.patch
@@ -0,0 +1,13 @@
+diff -up a2ps-4.14/configure.external-libtool a2ps-4.14/configure
+--- a2ps-4.14/configure.external-libtool 2008-09-24 15:28:13.000000000 +0100
++++ a2ps-4.14/configure 2008-09-24 15:28:13.000000000 +0100
+@@ -21864,7 +21864,8 @@ fi
+ LIBTOOL_DEPS="$ac_aux_dir/ltmain.sh"
+
+ # Always use our own libtool.
+-LIBTOOL='$(SHELL) $(top_builddir)/libtool'
++#LIBTOOL='$(SHELL) $(top_builddir)/libtool'
++LIBTOOL='/usr/bin/libtool'
+
+ # Prevent multiple expansion
+
diff --git a/a2ps-forward-null.patch b/a2ps-forward-null.patch
deleted file mode 100644
index 6aa308e..0000000
--- a/a2ps-forward-null.patch
+++ /dev/null
@@ -1,19 +0,0 @@
-diff -up a2ps-4.15.5/liba2ps/pathwalk.c.forward-null a2ps-4.15.5/liba2ps/pathwalk.c
---- a2ps-4.15.5/liba2ps/pathwalk.c.forward-null 2023-07-25 18:17:35.906486748 +0200
-+++ a2ps-4.15.5/liba2ps/pathwalk.c 2023-07-25 18:18:16.767767587 +0200
-@@ -335,12 +335,12 @@ xpw_find_included_file (char * const *pa
- /* Relative. Give its root. */
- dir = dir_name (including_file);
-
-- res = ALLOCA (char, (strlen (dir)
-+ res = ALLOCA (char, ((dir ? strlen (dir) : 0)
- + strlen (name)
- + (suffix ? strlen (suffix) : 0)
- + 2));
-- sprintf (res, "%s%c%s%s", dir, DIRECTORY_SEPARATOR,
-- name, suffix ? suffix : "");
-+ sprintf (res, "%s%c%s%s", dir ? dir : "", DIRECTORY_SEPARATOR,
-+ dir ? name : name + 1, suffix ? suffix : "");
- if (stat (res, &statbuf) == 0)
- return xstrdup (res);
-
diff --git a/a2ps-mb.patch b/a2ps-mb.patch
index b331f52..daa4ea3 100644
--- a/a2ps-mb.patch
+++ b/a2ps-mb.patch
@@ -1,14 +1,24 @@
-diff -up a2ps-4.15.5/liba2ps/psgen.c.mb a2ps-4.15.5/liba2ps/psgen.c
---- a2ps-4.15.5/liba2ps/psgen.c.mb 2023-07-25 18:01:44.062963119 +0200
-+++ a2ps-4.15.5/liba2ps/psgen.c 2023-07-25 18:03:37.883726559 +0200
-@@ -854,8 +854,8 @@ ps_print_char (a2ps_job * job, char c, e
- if ((unsigned char) c > 127 && encoding_get_composite_flag (job->encoding) &&
- job->status->face != Symbol) {
- if (mb_flag) {
-- nchars = ps_escape_char (job, mb_flag, buf) +
-- ps_escape_char (job, (unsigned char) c, buf);
-+ nchars = ps_escape_char (job, mb_flag, buf);
-+ nchars += ps_escape_char (job, (unsigned char)c, buf);
- job->status->wx += char_composite_WX(job);
- job->status->column += nchars;
- if (line_full) {
+diff -up a2ps-4.14/lib/psgen.c.mb a2ps-4.14/lib/psgen.c
+--- a2ps-4.14/lib/psgen.c.mb 2008-09-24 15:29:30.000000000 +0100
++++ a2ps-4.14/lib/psgen.c 2008-09-24 15:29:30.000000000 +0100
+@@ -96,7 +96,8 @@ ps_escape_char (a2ps_job * job, uchar c,
+ /* Printable, but not 7bit clean caracters */
+ if (encoding_char_exists (job->encoding, job->status->face, c)
+ && ((0177 < c) || (c < 040))) {
+- sprintf ((char *)res, "%s\\%o", res, c);
++ char *p = res + strlen (res);
++ sprintf (p, "\\%o", c);
+ return 1;
+ }
+
+@@ -893,8 +894,8 @@ ps_print_char (a2ps_job * job, int c, en
+ if (c > 127 && encoding_get_composite_flag (job->encoding) &&
+ job->status->face != Symbol) {
+ if (mb_flag) {
+- nchars = ps_escape_char (job, mb_flag, buf) +
+- ps_escape_char (job, c, buf);
++ nchars = ps_escape_char (job, mb_flag, buf);
++ nchars += ps_escape_char (job, c, buf);
+ job->status->wx += char_composite_WX(job, c);
+ job->status->column += nchars;
+ if (line_full) {
diff --git a/a2ps-overrun-dynamic.patch b/a2ps-overrun-dynamic.patch
deleted file mode 100644
index d58bed3..0000000
--- a/a2ps-overrun-dynamic.patch
+++ /dev/null
@@ -1,21 +0,0 @@
-diff -up a2ps-4.15.5/liba2ps/darray.c.overrun-dynamic a2ps-4.15.5/liba2ps/darray.c
---- a2ps-4.15.5/liba2ps/darray.c.overrun-dynamic 2022-06-11 22:16:14.000000000 +0200
-+++ a2ps-4.15.5/liba2ps/darray.c 2023-07-25 18:23:24.509882456 +0200
-@@ -383,7 +383,7 @@ da_qsort (struct darray * arr)
- jstack += 2;
- /* Push pointers to larger subarry on stack.
- * Process smaller subarrays now */
-- if (jstack > QSORT_STACK)
-+ if (jstack >= QSORT_STACK)
- error (da_exit_error, 0, "da_qsort: QSORT_STACK too small (%d)",
- QSORT_STACK);
- if (ir - i + 1 >= j - l) {
-@@ -461,7 +461,7 @@ da_qsort_with_arg (struct darray * arr,
- jstack += 2;
- /* Push pointers to larger subarry on stack.
- * Process smaller subarrays now */
-- if (jstack > QSORT_STACK)
-+ if (jstack >= QSORT_STACK)
- error (da_exit_error, 0, "da_qsort: QSORT_STACK too small (%d)",
- QSORT_STACK);
- if (ir - i + 1 >= j - l) {
diff --git a/a2ps-overrun-static.patch b/a2ps-overrun-static.patch
deleted file mode 100644
index e3585fe..0000000
--- a/a2ps-overrun-static.patch
+++ /dev/null
@@ -1,12 +0,0 @@
-diff -up a2ps-4.14/liba2ps/metaseq.c.overrun-static a2ps-4.14/liba2ps/metaseq.c
---- a2ps-4.14/liba2ps/metaseq.c.overrun-static 2011-08-10 16:18:44.924915695 +0100
-+++ a2ps-4.14/liba2ps/metaseq.c 2011-08-10 16:19:04.739555258 +0100
-@@ -334,7 +334,7 @@ grow_user_string_obstack (struct obstack
- {
- /* `%D{}' format run date with strftime() */
- for (j = 0, i += 2;
-- j < sizeof (buf2) && str[i] && str[i] != '}';
-+ j < sizeof (buf2) - 1 && str[i] && str[i] != '}';
- i++, j++)
- buf2[j] = str[i];
- if (str[i] != '}')
diff --git a/a2ps-resource-leak.patch b/a2ps-resource-leak.patch
deleted file mode 100644
index ab1830c..0000000
--- a/a2ps-resource-leak.patch
+++ /dev/null
@@ -1,45 +0,0 @@
-diff -up a2ps-4.15.5/liba2ps/encoding.c.resource-leak a2ps-4.15.5/liba2ps/encoding.c
---- a2ps-4.15.5/liba2ps/encoding.c.resource-leak 2023-07-25 18:30:14.422699484 +0200
-+++ a2ps-4.15.5/liba2ps/encoding.c 2023-07-25 18:34:22.033401969 +0200
-@@ -479,7 +479,7 @@ encoding_resolve_font_substitute (struct
- if (!res)
- {
- if (encoding->default_font)
-- res = encoding->default_font;
-+ res = xstrdup (encoding->default_font);
- else
- error (1, 0, "cannot find font %s, nor any substitute",
- last_font_name);
-@@ -895,6 +895,7 @@ dump_encoding_setup (FILE * stream,
- font_names [i]);
- if (!font_is_to_reencode (job, real_font_name))
- da_remove_at (encoding->font_names_used, i);
-+ free (real_font_name);
- }
-
- /* The number of fonts that, finally, have to be encoded
-@@ -911,10 +912,15 @@ dump_encoding_setup (FILE * stream,
- fprintf (stream, "/%sdict %zu dict begin\n", encoding->key,
- (encoding->composite_flag == true)? nb+nb+ns:nb+ns);
- for (i = 0 ; i < nb ; i++)
-+ {
-+ char *real_font = encoding_resolve_font_substitute (job, encoding,
-+ font_names [i]);
- fprintf (stream, " /f%s %sEncoding /%s reencode_font\n",
- font_names [i],
- encoding->name,
-- encoding_resolve_font_substitute (job, encoding, font_names [i]));
-+ real_font);
-+ free (real_font);
-+ }
-
- /* Slant font setting */
- for (i = 0 ; encoding->slantfont[i].name ; i++ )
-@@ -1075,6 +1081,7 @@ encoding_build_faces_wx (a2ps_job * job,
- encoding->vector,
- encoding->faces_wx [face]);
-
-+ free (true_font_name);
- if (encoding->composite_flag)
- {
- encoding->composite_ratio[i] =
diff --git a/a2ps-wdiff.patch b/a2ps-wdiff.patch
index dab05a6..7315336 100644
--- a/a2ps-wdiff.patch
+++ b/a2ps-wdiff.patch
@@ -1,3 +1,23 @@
+--- a2ps-4.13/contrib/pdiff.m4.wdiff 2005-03-23 15:43:47.000000000 +0000
++++ a2ps-4.13/contrib/pdiff.m4 2005-03-23 15:46:13.000000000 +0000
+@@ -15,7 +15,7 @@
+ a2ps=${A2PS:-a2ps}
+ a2ps_options=
+ debug=
+-diff_on=words
++diff_on=lines
+ diff_prog=${DIFF:-diff}
+ diff_options='-u'
+ file=
+@@ -40,8 +40,6 @@
+ -h, --help display this help and exit
+ -v, --version display version information and exit
+ -q, --quiet don't print informational messages
+- -l, --lines search for line differences (\`diff')
+- -w, --words search for word differences (\`wdiff')
+ -o, --output=FILE save the output in FILE
+
+ Options for a2ps are given after \`--', for instance
--- a2ps-4.13/contrib/pdiff.in.wdiff 2005-03-23 15:43:50.000000000 +0000
+++ a2ps-4.13/contrib/pdiff.in 2005-03-23 15:46:16.000000000 +0000
@@ -29,7 +29,7 @@
diff --git a/a2ps.spec b/a2ps.spec
index 9d6e3c4..43bec0d 100644
--- a/a2ps.spec
+++ b/a2ps.spec
@@ -1,146 +1,81 @@
-Summary: Converts text and other types of files to PostScript
-Name: a2ps
-Version: 4.15.8
-Release: 2%{?dist}
-# several files in afm/, lib/, liba2ps/, src/ - GPL3+
-# gnulib files in lib/ - LGPL-2.1+
-# several files in lib/ - LGPL-3+
-# Bison related files in src/ and liba2ps/ - GPL-3.0-or-later WITH Bison-exception-2.2
-# another gnulib files in /lib - LGPL2+
-License: GPL-3.0-or-later AND LGPL-2.1-or-later AND LGPL-3.0-or-later AND GPL-3.0-or-later WITH Bison-exception-2.2 AND LGPL-2.0-or-later
-Url: http://www.gnu.org/software/a2ps/
-Source0: http://ftp.gnu.org/gnu/a2ps/%{name}-%{version}.tar.gz
-Source1: ftp://ftp.enst.fr/pub/unix/a2ps/i18n-fonts-0.1.tar.gz
-# the latest upstream version does not have COPYING file...
-# reported as https://savannah.gnu.org/bugs/index.php?64470
-# copied the GPL3+ COPYING file from the previous versions
-Source2: COPYING
-
-
-Patch01: a2ps-4.13-conf.patch
-Patch02: a2ps-4.13-etc.patch
-Patch03: a2ps-4.13-glibcpaper.patch
-Patch04: a2ps-sort.patch
-Patch05: a2ps-iso5-minus.patch
-Patch06: a2ps-perl.patch
-Patch07: a2ps-4.13b-numeric.patch
-Patch08: a2ps-4.13b-encoding.patch
-Patch09: a2ps-4.13b-tilde.patch
-Patch10: a2ps-4.13-euckr.patch
-Patch11: a2ps-4.13-hebrew.patch
-Patch12: a2ps-make-fonts-map.patch
-Patch13: a2ps-wdiff.patch
-Patch14: a2ps-U.patch
-Patch15: a2ps-mb.patch
-Patch16: a2ps-4.14-texinfo-nodes.patch
-Patch17: a2ps-forward-null.patch
-Patch18: a2ps-overrun-dynamic.patch
-Patch19: a2ps-overrun-static.patch
-Patch20: a2ps-resource-leak.patch
-
-
-# most conversion rules are guarded by configure macros, so they
-# are not enabled if the specific binary is not present in buildroot
-# - thus to get full set of available rules there are lot of BuildRequires,
-# but most binaries are only as Recommends during runtime to provide a way
-# how to slim down the installation if needed.
-
-# parser for PPDs and SSH (style sheet) files
-BuildRequires: bison
-# bzip2 is checked during build as well
-BuildRequires: bzip2
-# for emacs support - configure scripts looks for emacs command during build
-BuildRequires: emacs
-# for lexical scanning of postscript, ppds and style sheet (.ssh) files
-BuildRequires: flex
-# written in C - gcc no longer in buildroot by default
-BuildRequires: gcc
-# uses BDW Garbage Collector
-BuildRequires: gc-devel
-# for translations
-BuildRequires: gettext
-# for ps2pdf - PDF output, pdf2ps - PDF delegation
-BuildRequires: ghostscript
-# bundles gnulib source library
-BuildRequires: gnulib-devel
-# used for generating hash function for configuration options
-BuildRequires: gperf
-# Perl parts of groff text processor - ROFF delegation for man pages
-BuildRequires: groff-perl
-# for compressed delegations
-BuildRequires: gzip
-# generating manpages
-BuildRequires: help2man
-# for paper configs
-BuildRequires: libpaper-devel
-# used for building
-BuildRequires: libtool
-# make no longer in buildroot
-BuildRequires: make
-# for getting version of bundled gnulib
-BuildRequires: perl-interpreter
-# tools for manipulating with postscript docs
-BuildRequires: psutils
-# makeinfo for info documentation
-BuildRequires: texinfo
-# for DVI files support, it's DVI driver for tex
-BuildRequires: texlive-dvips
-# latex for LaTeX file support
-BuildRequires: texlive-latex
-# tex for Tex File support
-BuildRequires: texlive-tex
-
-%if 0%{?rhel} <= 8 || 0%{?fedora}
-# for convert binary - used for converting images to postscript
-BuildRequires: ImageMagick
-# converting html files to postscript
-BuildRequires: html2ps
+# emacs packaging macros
+%if %($(pkg-config emacs) ; echo $?)
+%define emacs_version 22.1
+%define emacs_lispdir %{_datadir}/emacs/site-lisp
+%define emacs_startdir %{_datadir}/emacs/site-lisp/site-start.d
+%else
+%define emacs_version %(pkg-config emacs --modversion)
+%define emacs_lispdir %(pkg-config emacs --variable sitepkglispdir)
+%define emacs_startdir %(pkg-config emacs --variable sitestartdir)
%endif
-# bundles gnulib of certain version
-Provides: bundled(gnulib)%(perl -ne 'if($. == 1 and /\A(\d+)-(\d+)-(\d+)/) {print qq{ = $1$2$3}}' %{_defaultdocdir}/gnulib/ChangeLog 2>/dev/null)
-# used during runtime for delegation
-Recommends: bzip2
-# Perl parts of groff text processor - ROFF delegation for man pages
-Recommends: groff-perl
-# for compressed delegations
-Recommends: gzip
-# makeinfo for info documentation
-Recommends: texinfo
-# for DVI files support, it's DVI driver for tex
-Recommends: texlive-dvips
-# latex for LaTeX file support
-Recommends: texlive-latex
-# tex for Tex File support
-Recommends: texinfo-tex
-
-# a2ps-lpr-wrapper uses lp/lpr
-Requires: cups-client
+Summary: Converts text and other types of files to PostScript
+Name: a2ps
+Version: 4.14
+Release: 10.1%{?dist}
+License: GPLv3+
+Group: Applications/Publishing
+Source0: http://ftp.gnu.org/gnu/a2ps/%{name}-%{version}.tar.gz
+Source1: ftp://ftp.enst.fr/pub/unix/a2ps/i18n-fonts-0.1.tar.gz
+Patch0: a2ps-4.13-conf.patch
+Patch1: a2ps-4.13-etc.patch
+Patch3: a2ps-4.13-security.patch
+Patch4: a2ps-4.13-glibcpaper.patch
+Patch7: a2ps-sort.patch
+Patch8: a2ps-iso5-minus.patch
+Patch9: a2ps-perl.patch
+# EUC-JP support
+Patch10: a2ps-4.13-eucjp.patch
+Patch11: a2ps-4.13-autoenc.patch
+Patch12: a2ps-4.13b-attr.patch
+Patch13: a2ps-4.13b-numeric.patch
+Patch14: a2ps-4.13b-encoding.patch
+Patch15: a2ps-4.13b-tilde.patch
+Patch17: a2ps-4.13-euckr.patch
+Patch18: a2ps-4.13-gnusource.patch
+Patch20: a2ps-4.13-hebrew.patch
+Patch26: a2ps-make-fonts-map.patch
+Patch28: a2ps-wdiff.patch
+Patch29: a2ps-U.patch
+Patch31: a2ps-mb.patch
+Patch34: a2ps-external-libtool.patch
+Patch35: a2ps-4.14-texinfo-nodes.patch
+Requires: fileutils sh-utils info
+BuildRequires: gperf
+BuildRequires: emacs, emacs-el, flex, libtool, texinfo, groff
+BuildRequires: ImageMagick
+BuildRequires: groff-perl
+BuildRequires: cups
+BuildRequires: gettext, bison
+BuildRequires: psutils, tetex-dvips, texinfo, tetex-latex, html2ps
+# instead of gv, xdg-open should certainly be used
+#BuildRequires: gv
+Url: http://www.gnu.org/software/a2ps/
+BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
+Requires: psutils, ImageMagick, texinfo-tex, gzip, bzip2, groff-perl
+Requires: tetex-dvips, tetex-latex, tetex-fonts, file, html2ps, psutils-perl
# for hebrew support, path set.
# culmus-fonts
# And certainly other font sets for other languages may be needed
-Requires: emacs-filesystem
-Requires: file
-# for ps2pdf - PDF output, pdf2ps - PDF delegation
-Requires: ghostscript
-# postscript delegation
-Requires: psutils
-Requires: psutils-perl
-# set of recommended fonts, looks to be for postscript as well
-Requires: texlive-collection-fontsrecommended
-
Requires(post): coreutils
+Requires(post): /sbin/install-info
+Requires(preun): /sbin/install-info
+Obsoletes: a2ps-i18n <= 0.1-1
+Provides: a2ps-i18n = 0.1-2
-%if 0%{?rhel} <= 8 || 0%{?fedora}
-# image delegations
-Requires: ImageMagick
-# html delegations
-Recommends: html2ps
-%endif
-# for emacs support
-Suggests: emacs
+%package -n emacs-%{name}
+Summary: Emacs bindings for a2ps files
+Group: Applications/Editors
+Requires: emacs(bin) >= %{emacs_version}
+
+
+%package -n emacs-%{name}-el
+Summary: Elisp source files for emacs-%{name} under GNU Emacs
+Group: Applications/Editors
+Requires: emacs-%{name} = %{version}-%{release}
+
%description
The a2ps filter converts text and other types of files to PostScript.
@@ -149,46 +84,72 @@ number of programming languages, encodings (ISO Latins, Cyrillic, etc.),
and medias.
+%description -n emacs-%{name}
+Postscript printing hook for a2ps and major mode for a2ps style sheets
+for emacs.
+
+
+%description -n emacs-%{name}-el
+This package contains the elisp source files for emacs-%{name} under GNU
+Emacs. You do not need to install this package to run emacs-%{name}. Install
+the emacs-%{name} package to use emacs-%{name} with GNU Emacs.
+
+
%prep
%setup -q -a 1
# use fedora postscript font paths
-%patch -P 01 -p1 -b .conf
+%patch0 -p1 -b .conf
+
# add /etc/a2ps in directories searched for config files
-%patch -P 02 -p1 -b .etc
-%patch -P 03 -p1 -b .glibcpaper
-%patch -P 04 -p1 -b .sort
-%patch -P 05 -p1 -b .iso5-minus
-%patch -P 06 -p1 -b .perl
+%patch1 -p1 -b .etc
+
+%patch3 -p1 -b .security
+%patch4 -p1 -b .glibcpaper
+%patch7 -p1 -b .sort
+%patch8 -p1 -b .iso5-minus
+%patch9 -p1 -b .perl
+
+%patch10 -p1 -b .euc
+%patch11 -p1 -b .ae
+%patch12 -p1 -b .attr
+
# Use C locale's decimal point style (bug #53715).
-%patch -P 07 -p1 -b .numeric
+%patch13 -p1 -b .numeric
+
# Use locale to determine a sensible default encoding (bug #64584).
-%patch -P 08 -p1 -b .encoding
+%patch14 -p1 -b .encoding
+
# Fix koi8 tilde (bug #66393).
-%patch -P 09 -p1 -b .tilde
+%patch15 -p1 -b .tilde
+
# Add Korean resource file (bug #81421).
-%patch -P 10 -p1 -b .euckr
+%patch17 -p1 -b .euckr
+
+# Prevent strsignal segfaulting (bug #104970).
+%patch18 -p1 -b .gnusource
+
# Hebrew support (bug #113191).
-%patch -P 11 -p1 -b .hebrew
+%patch20 -p1 -b .hebrew
+
+# Use external libtool (bug #225235).
+%patch34 -p1 -b .external-libtool
+
# Fix problems in make_fonts_map script (bug #142299). Patch from
# Michal Jaegermann.
-%patch -P 12 -p1 -b .make-fonts-map
+%patch26 -p1 -b .make-fonts-map
+
# Make pdiff default to not requiring wdiff (bug #68537).
-%patch -P 13 -p1 -b .wdiff
+%patch28 -p1 -b .wdiff
+
# Make pdiff use diff(1) properly (bug #156916).
-%patch -P 14 -p1 -b .U
+%patch29 -p1 -b .U
+
# Fixed multibyte handling (bug #212154).
-%patch -P 15 -p1 -b .mb
+%patch31 -p1 -b .mb
+
# Remove dots in node names, patch from Vitezslav Crhonek (Bug #445971)
-%patch -P 16 -p1 -b .nodes
-# Coverity fix (forward-null).
-%patch -P 17 -p1 -b .forward-null
-# Coverity fix (overrun-dynamic).
-%patch -P 18 -p1 -b .overrun-dynamic
-# Coverity fix (overrun-static).
-%patch -P 19 -p1 -b .overrun-static
-# Coverity fix (resource-leak).
-%patch -P 20 -p1 -b .resource-leak
+%patch35 -p1 -b .nodes
for file in AUTHORS ChangeLog; do
iconv -f latin1 -t UTF-8 < $file > $file.utf8
@@ -196,18 +157,26 @@ for file in AUTHORS ChangeLog; do
mv $file.utf8 $file
done
-autoreconf -fi
-
mv doc/encoding.texi doc/encoding.texi.utf8
iconv -f KOI-8 -t UTF-8 doc/encoding.texi.utf8 -o doc/encoding.texi
# Fix reference to a2ps binary (bug #112930).
sed -i -e "s,/usr/local/bin,%{_bindir}," contrib/emacs/a2ps.el
+chmod -x lib/basename.c lib/xmalloc.c
+
+# restore timestamps of patched files
+touch -c -r configure.in.conf configure.in
+touch -c -r config.h.in.euc config.h.in
+touch -c -r configure.conf configure
+touch -c -r src/Makefile.am.euc src/Makefile.am
+touch -c -r etc/Makefile.am.etc etc/Makefile.am
+#touch -c -r fonts/Makefile.in src/Makefile.in lib/Makefile.in
+touch -c -r etc/Makefile.in.etc etc/Makefile.in
+
chmod 644 encoding/iso8.edf.hebrew
chmod 644 encoding/euc-kr.edf.euckr
-
%build
# preset the date in README.in to avoid the timestamp of the build time
sed -e "s!@date@!`date -r NEWS`!" etc/README.in > etc/README.in.tmp
@@ -216,8 +185,7 @@ mv etc/README.in.tmp etc/README.in
EMACS=emacs %configure \
--with-medium=_glibc \
- --enable-kanji \
- --with-lispdir=%{_emacs_sitelispdir}/%{name}
+ --enable-kanji
# Remove prebuilt info files to force regeneration at build time
find . -name "*.info*" -exec rm -f {} \;
@@ -234,8 +202,8 @@ find src lib -name '*.l' -exec touch {} \;
make %{?_smp_mflags}
-
%install
+rm -rf %{buildroot}
make DESTDIR=%{buildroot} install INSTALL='install -p'
# reset the timestamp for the generated etc/README file
@@ -251,21 +219,22 @@ install -p -m 0644 *.pfb %{buildroot}%{_datadir}/a2ps/fonts
popd
popd
+# Don't ship the library file or header (bug #203536).
+rm %{buildroot}%{_libdir}/*.{so,a,la}
+rm %{buildroot}%{_includedir}/*
+
rm -f %{buildroot}%{_infodir}/dir
-mkdir -p %{buildroot}%{_defaultlicensedir}/%{name}
-install -p -m 644 %{SOURCE2} %{buildroot}%{_defaultlicensedir}/%{name}/COPYING
-
-for lang in af be bg ca cs da de el eo es et eu fi fr ga gl hu it ja ka ko ms nb nl pl pt pt_BR ro ru rw sk sl sr sv tr uk vi zh_CN zh_TW
-do
- mv %{buildroot}/usr/share/locale/$lang/LC_MESSAGES/a2ps{-gnulib,}.mo
-done
-
%find_lang %name
+%clean
+rm -rf %{buildroot}
%post
-%{?ldconfig}
+/sbin/ldconfig
+/sbin/install-info %{_infodir}/%{name}.info %{_infodir}/dir || :
+/sbin/install-info %{_infodir}/ogonkify.info %{_infodir}/dir || :
+/sbin/install-info %{_infodir}/regex.info %{_infodir}/dir || :
(cd %{_datadir}/a2ps/afm;
./make_fonts_map.sh > /dev/null 2>&1 || /bin/true
if [ -f fonts.map.new ]; then
@@ -274,28 +243,30 @@ done
)
exit 0
-%ldconfig_postun
+%preun
+if [ $1 = 0 ]; then
+ /sbin/install-info --delete %{_infodir}/%{name}.info %{_infodir}/dir || :
+ /sbin/install-info --delete %{_infodir}/ogonkify.info %{_infodir}/dir || :
+ /sbin/install-info --delete %{_infodir}/regex.info %{_infodir}/dir || :
+fi
+exit 0
+%postun -p /sbin/ldconfig
%files -f %{name}.lang
-%license COPYING
-%doc AUTHORS ChangeLog NEWS README TODO THANKS
+%defattr(-,root,root,-)
%dir %{_sysconfdir}/a2ps
%config %{_sysconfdir}/a2ps.cfg
%config(noreplace) %{_sysconfdir}/a2ps-site.cfg
-%{_bindir}/a2ps
-%{_bindir}/a2ps-lpr-wrapper
-%{_bindir}/card
-%{_bindir}/composeglyphs
-%{_bindir}/fixps
-%{_bindir}/lp2
-%{_bindir}/ogonkify
-%{_bindir}/pdiff
-%dir %{_datadir}/a2ps
-%dir %{_datadir}/a2ps/afm
-%{_datadir}/a2ps/afm/*.afm
+%doc AUTHORS ChangeLog COPYING NEWS README TODO THANKS
+%{_bindir}/*
+%{_infodir}/a2ps.info*
+%{_infodir}/ogonkify.info*
+%{_infodir}/regex.info*
+%{_mandir}/*/*
# automatically regenerated at install and update time
%verify(not size mtime md5) %{_datadir}/a2ps/afm/fonts.map
+%{_datadir}/a2ps/afm/*.afm
%{_datadir}/a2ps/afm/make_fonts_map.sh
%{_datadir}/a2ps/README
%{_datadir}/a2ps/encoding
@@ -304,188 +275,22 @@ exit 0
%{_datadir}/a2ps/ps
%{_datadir}/a2ps/sheets
%{_datadir}/ogonkify/
-%{_emacs_sitelispdir}/%{name}
-%{_infodir}/a2ps.info*
-%{_infodir}/ogonkify.info*
-%{_infodir}/regex.info*
-%{_mandir}/man1/a2ps-lpr-wrapper.1.gz
-%{_mandir}/man1/a2ps.1.gz
-%{_mandir}/man1/card.1.gz
-%{_mandir}/man1/fixps.1.gz
-%{_mandir}/man1/lp2.1.gz
-%{_mandir}/man1/ogonkify.1.gz
-%{_mandir}/man1/pdiff.1.gz
+%dir %{_datadir}/a2ps/afm
+%dir %{_datadir}/a2ps
+%{_libdir}/*.so*
+
+%files -n emacs-%{name}
+%defattr(-,root,root,-)
+%{emacs_lispdir}/*.elc
+
+%files -n emacs-%{name}-el
+%defattr(-,root,root,-)
+%{emacs_lispdir}/*.el
%changelog
-* Fri Jan 16 2026 Fedora Release Engineering - 4.15.8-2
-- Rebuilt for https://fedoraproject.org/wiki/Fedora_44_Mass_Rebuild
-
-* Fri Dec 12 2025 Zdenek Dohnal - 4.15.8-1
-- a2ps-4.15.8 is available (fedora#2418953)
-
-* Wed Jul 23 2025 Fedora Release Engineering - 4.15.7-2
-- Rebuilt for https://fedoraproject.org/wiki/Fedora_43_Mass_Rebuild
-
-* Mon Jul 14 2025 Zdenek Dohnal - 4.15.7-1
-- 4.15.7 (fedora#2379508)
-
-* Fri Jan 17 2025 Zdenek Dohnal - 4.15.6-3
-- fix build with GCC 15 (fedora#2336012)
-
-* Thu Jan 16 2025 Fedora Release Engineering - 4.15.6-3
-- Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild
-
-* Wed Jul 17 2024 Fedora Release Engineering - 4.15.6-2
-- Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild
-
-* Thu Mar 14 2024 Zdenek Dohnal - 4.15.6-1
-- 2269423 - a2ps-4.15.6 is available
-
-* Mon Jan 22 2024 Fedora Release Engineering - 4.15.5-3
-- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild
-
-* Fri Jan 19 2024 Fedora Release Engineering - 4.15.5-2
-- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild
-
-* Thu Jul 27 2023 Zdenek Dohnal - 4.15.5-1
-- 2225694 - a2ps: FTBFS in Fedora rawhide/f39
-- 2189133 - a2ps: FTBFS in rawhide, 64-bit and C99 compatibility issues
-- 2176254 - a2ps-4.15.5 is available
-- SPDX migration done
-
-* Wed Jul 19 2023 Fedora Release Engineering - 4.14-53
-- Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild
-
-* Wed Jan 18 2023 Fedora Release Engineering - 4.14-52
-- Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild
-
-* Wed Jul 20 2022 Fedora Release Engineering - 4.14-51
-- Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild
-
-* Wed Jan 19 2022 Fedora Release Engineering - 4.14-50
-- Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild
-
-* Wed Jul 21 2021 Fedora Release Engineering - 4.14-49
-- Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild
-
-* Mon Jan 25 2021 Fedora Release Engineering - 4.14-48
-- Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild
-
-* Mon Jan 18 2021 Zdenek Dohnal - 4.14-47
-- make eln changes - remove dependency on ImageMagick and html2ps
-
-* Thu Nov 05 2020 Zdenek Dohnal - 4.14-46
-- make nor gcc are in buildroot anymore
-
-* Fri Jul 31 2020 Fedora Release Engineering - 4.14-45
-- Second attempt - Rebuilt for
- https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild
-
-* Mon Jul 27 2020 Fedora Release Engineering - 4.14-44
-- Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild
-
-* Tue Jan 28 2020 Fedora Release Engineering - 4.14-43
-- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild
-
-* Mon Jan 06 2020 Zdenek Dohnal - 4.14-42
-- a2ps: new texinfo needs to have documentencoding defined
-
-* Wed Jul 24 2019 Fedora Release Engineering - 4.14-41
-- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild
-
-* Thu Jan 31 2019 Fedora Release Engineering - 4.14-40
-- Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild
-
-* Thu Jul 12 2018 Fedora Release Engineering - 4.14-39
-- Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild
-
-* Mon Jun 18 2018 Zdenek Dohnal - 4.14-38
-- removing install-info, because now it is done automatically
-
-* Mon Feb 19 2018 Zdenek Dohnal - 4.14-37
-- fix tetex-fonts dependency - now provided by texlive-collections-fontsrecommended
-
-* Fri Feb 16 2018 Zdenek Dohnal - 4.14-36
-- remove tetex dependency
-
-* Thu Feb 08 2018 Zdenek Dohnal - 4.14-35
-- remove old stuff https://lists.fedoraproject.org/archives/list/devel@lists.fedoraproject.org/thread/MRWOMRZ6KPCV25EFHJ2O67BCCP3L4Y6N/
-
-* Wed Feb 07 2018 Fedora Release Engineering - 4.14-34
-- Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild
-
-* Tue Nov 07 2017 Igor Gnatenko - 4.14-33
-- Remove old crufty coreutils requires
-
-* Wed Aug 02 2017 Fedora Release Engineering - 4.14-32
-- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Binutils_Mass_Rebuild
-
-* Wed Jul 26 2017 Fedora Release Engineering - 4.14-31
-- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild
-
-* Fri Feb 10 2017 Fedora Release Engineering - 4.14-30
-- Rebuilt for https://fedoraproject.org/wiki/Fedora_26_Mass_Rebuild
-
-* Wed Feb 03 2016 Fedora Release Engineering - 4.14-29
-- Rebuilt for https://fedoraproject.org/wiki/Fedora_24_Mass_Rebuild
-
-* Tue Jun 23 2015 Tim Waugh - 4.14-28
-- Moved emacs sub-packages into main package (bug #1234582).
-
-* Tue Jun 16 2015 Fedora Release Engineering - 4.14-27
-- Rebuilt for https://fedoraproject.org/wiki/Fedora_23_Mass_Rebuild
-
-* Fri Aug 15 2014 Fedora Release Engineering - 4.14-26
-- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_22_Mass_Rebuild
-
-* Fri Jun 06 2014 Fedora Release Engineering - 4.14-25
-- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_Mass_Rebuild
-
-* Thu Apr 3 2014 Tim Waugh - 4.14-24
-- Prevent another build failure with -Werror=format-security.
-
-* Tue Apr 1 2014 Tim Waugh - 4.14-23
-- Invoke gs with the -dSAFER option in fixps (CVE-2014-0466, bug #1082411).
-
-* Tue Dec 3 2013 Tim Waugh - 4.14-22
-- Prevent build failure with -Werror=format-security (bug #1036979).
-
-* Sat Aug 03 2013 Fedora Release Engineering - 4.14-21
-- Rebuilt for https://fedoraproject.org/wiki/Fedora_20_Mass_Rebuild
-
-* Tue Apr 30 2013 Tim Waugh - 4.14-20
-- Avoid a bad free in the encoding handling logic (bug #954104).
-
-* Mon Apr 29 2013 Tim Waugh - 4.14-19
-- Support for building on aarch64 (bug #924962).
-
-* Tue Mar 26 2013 Tim Waugh - 4.14-18
-- Fixed texi build failure (bug #927633).
-
-* Wed Feb 13 2013 Fedora Release Engineering - 4.14-17
-- Rebuilt for https://fedoraproject.org/wiki/Fedora_19_Mass_Rebuild
-
-* Wed Jul 18 2012 Fedora Release Engineering - 4.14-16
-- Rebuilt for https://fedoraproject.org/wiki/Fedora_18_Mass_Rebuild
-
-* Wed Apr 4 2012 Tim Waugh - 4.14-15
-- Link to libm in liba2ps (bug #809673).
-
-* Thu Jan 12 2012 Fedora Release Engineering - 4.14-14
-- Rebuilt for https://fedoraproject.org/wiki/Fedora_17_Mass_Rebuild
-
-* Wed Aug 10 2011 Tim Waugh - 4.14-13
-- Coverity fixes (resource-leak, overrun-static, overrun-dynamic,
- forward-null).
-
-* Mon Feb 07 2011 Fedora Release Engineering - 4.14-12
-- Rebuilt for https://fedoraproject.org/wiki/Fedora_15_Mass_Rebuild
-
-* Sun Mar 14 2010 Jonathan G. Underwood - 4.14-11
-- Spec file fixes for Emacs add-on guideline compliance
-- Move *.el(c) files to their own directory
-- Use Emacs packaging macros
-- Remove unneeded pkgconfig macros
+* Mon Apr 26 2010 Dennis Gregorovic - 4.14-10.1
+- Rebuilt for RHEL 6
+Related: rhbz#566527
* Fri Jul 24 2009 Fedora Release Engineering - 4.14-10
- Rebuilt for https://fedoraproject.org/wiki/Fedora_12_Mass_Rebuild
@@ -764,7 +569,7 @@ exit 0
* Thu Apr 26 2001 Florian La Roche
- call libtoolize to allow easy porting to new archs
-* Wed Feb 28 2001 SATO Satoru
+* Thu Feb 28 2001 SATO Satoru
- bunzip2-ed all patches except eucjp
* Thu Feb 22 2001 SATO Satoru
diff --git a/sources b/sources
index 6e71d18..e950ddb 100644
--- a/sources
+++ b/sources
@@ -1,2 +1,2 @@
-SHA512 (a2ps-4.15.8.tar.gz) = b6c66c32f7b499fee19d0f6b4b3eed2ba5a5d6dcc74f99ac3434fa261d11b24c755345afc95b3839b1f21425d0aea17ccea5e13fda37f77e0f17da3f8e3ef786
-SHA512 (i18n-fonts-0.1.tar.gz) = 670853cd0acc5feca572c1b0969d8fd506d2cdee0114d41d0a615f994455bd8ce122bfb02d92b85d18ddd9daa7174b86ccb3fdab92c1769aab066cbc62811fde
+781ac3d9b213fa3e1ed0d79f986dc8c7 a2ps-4.14.tar.gz
+fee1456d0e6e94af4fc5b5a1bb9687b7 i18n-fonts-0.1.tar.gz