Commits

Anonymous committed 2f62754

initial commit

Comments (0)

Files changed (67)

uniutils-2.25/AUTHORS

+Bill Poser (billposer@alum.mit.edu)

uniutils-2.25/COPYING

+                         GNU GENERAL PUBLIC LICENSE
+                            Version 2, June 1991
+
+           Copyright (C) 1989, 1991 Free Software Foundation, Inc.
+                         59 Temple Place, Suite 330,
+                          Boston, MA 02111-1307 USA
+
+                Everyone is permitted to copy and distribute
+                  verbatim copies of this license document,
+                       but changing it is not allowed.
+
+
+
+                                  Preamble
+
+    The licenses for most software are designed to take away your freedom
+   to share and change it. By contrast, the GNU General Public License is
+    intended to guarantee your freedom to share and change free software
+           -- to make sure the software is free for all its users.
+             This General Public License applies to most of the
+                 Free Software Foundation's software and to
+             any other program whose authors commit to using it.
+         (Some other Free Software Foundation software is covered by
+              the GNU Library General Public License instead.)
+                   You can apply it to your programs, too.
+
+   When we speak of free software, we are referring to freedom, not price.
+       Our General Public Licenses are designed to make sure that you
+           have the freedom to distribute copies of free software
+                 (and charge for this service if you wish),
+         that you receive source code or can get it if you want it,
+ that you can change the software or use pieces of it in new free programs;
+                 and that you know you can do these things.
+
+      To protect your rights, we need to make restrictions that forbid
+   anyone to deny you these rights or to ask you to surrender the rights.
+   These restrictions translate to certain responsibilities for you
+       if you distribute copies of the software, or if you modify it.
+
+          For example, if you distribute copies of such a program,
+                        whether gratis or for a fee,
+         you must give the recipients all the rights that you have.
+   You must make sure that they, too, receive or can get the source code.
+        And you must show them these terms so they know their rights.
+
+                   We protect your rights with two steps:
+                       (1) copyright the software, and
+         (2) offer you this license which gives you legal permission
+               to copy, distribute and/or modify the software.
+
+                Also, for each author's protection and ours,
+              we want to make certain that everyone understands
+              that there is no warranty for this free software.
+
+         If the software is modified by someone else and passed on,
+   we want its recipients to know that what they have is not the original,
+         so that any problems introduced by others will not reflect
+                    on the original authors' reputations.
+
+   Finally, any free program is threatened constantly by software patents.
+          We wish to avoid the danger that redistributors of a free
+              program will individually obtain patent licenses,
+                  in effect making the program proprietary.
+         To prevent this, we have made it clear that any patent must
+         be licensed for everyone's free use or not licensed at all.
+
+                The precise terms and conditions for copying,
+                    distribution and modification follow.
+
+
+
+
+                         GNU GENERAL PUBLIC LICENSE
+       TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+                                     0.
+      This License applies to any program or other work which contains
+    a notice placed by the copyright holder saying it may be distributed
+               under the terms of this General Public License.
+          The "Program", below, refers to any such program or work,
+         and a "work based on the Program" means either the Program
+                 or any derivative work under copyright law:
+      that is to say, a work containing the Program or a portion of it,
+                    either verbatim or with modifications
+                  and/or translated into another languaje.
+          (Hereinafter, translation is included without limitation
+                        in the term "modification".)
+                    Each licensee is addressed as "you".
+
+        Activities other than copying, distribution and modification
+        are not covered by this License; they are outside its scope.
+              The act of running the Program is not restricted,
+       and the output from the Program is covered only if its contents
+                   constitute a work based on the Program
+          (independent of having been made by running the Program).
+           Whether that is true depends on what the Program does.
+
+
+                                     1.
+        You may copy and distribute verbatim copies of the Program's
+       source code as you receive it, in any medium, provided that you
+     conspicuously and appropriately publish on each copy an appropriate
+                copyright notice and disclaimer of warranty;
+           keep intact all the notices that refer to this License
+                     and to the absence of any warranty;
+             and give any other recipients of the Program a copy
+                   of this License along with the Program.
+
+    You may charge a fee for the physical act of transferring a copy, and
+   you may at your option offer warranty protection in exchange for a fee.
+
+
+                                     2.
+   You may modify your copy or copies of the Program or any portion of it,
+                  thus forming a work based on the Program,
+             and copy and distribute such modifications or work
+                     under the terms of Section 1 above,
+            provided that you also meet all of these conditions:
+
+       a) You must cause the modified files to carry prominent notices
+       stating that you changed the files and the date of any change.
+
+         b) You must cause any work that you distribute or publish,
+      that in whole or in part contains or is derived from the Program
+         or any part thereof, to be licensed as a whole at no charge
+            to all third parties under the terms of this License.
+
+      c) If the modified program normally reads commands interactively
+         when run, you must cause it, when started running for such
+                  interactive use in the most ordinary way,
+        to print or display an announcement including an appropriate
+           copyright notice and a notice that there is no warranty
+                (or else, saying that you provide a warranty)
+     and that users may redistribute the program under these conditions,
+          and telling the user how to view a copy of this License.
+   (Exception: if the Program itself is interactive but does not normally
+         print such an announcement, your work based on the Program
+                 is not required to print an announcement.)
+
+          These requirements apply to the modified work as a whole.
+   If identifiable sections of that work are not derived from the Program,
+          and can be reasonably considered independent and separate
+           works in themselves, then this License, and its terms,
+ do not apply to those sections when you distribute them as separate works.
+
+        But when you distribute the same sections as part of a whole
+          which is a work based on the Program, the distribution of
+               the whole must be on the terms of this License,
+      whose permissions for other licensees extend to the entire whole,
+         and thus to each and every part regardless of who wrote it.
+
+         Thus, it is not the intent of this section to claim rights
+           or contest your rights to work written entirely by you;
+           rather, the intent is to exercise the right to control
+  the distribution of derivative or collective works based on the Program.
+
+   In addition, mere aggregation of another work not based on the Program
+           with the Program (or with a work based on the Program)
+       on a volume of a storage or distribution medium does not bring
+               the other work under the scope of this License.
+
+
+                                     3.
+       You may copy and distribute the Program (or a work based on it,
+    under Section 2) in object code or executable form under the terms of
+   Sections 1 and 2 above provided that you also do one of the following:
+
+               a) Accompany it with the complete corresponding
+                        machine-readable source code,
+     which must be distributed under the terms of Sections 1 and 2 above
+         on a medium customarily used for software interchange; or,
+
+                    b) Accompany it with a written offer,
+                       valid for at least three years,
+             to give any third party, for a charge no more than
+           your cost of physically performing source distribution,
+     a complete machine-readable copy of the corresponding source code,
+         to be distributed under the terms of Sections 1 and 2 above
+         on a medium customarily used for software interchange; or,
+
+            c) Accompany it with the information you received as
+            to the offer to distribute corresponding source code.
+      (This alternative is allowed only for noncommercial distribution
+   and only if you received the program in object code or executable form
+           with such an offer, in accord with Subsection b above.)
+
+             The source code for a work means the preferred form
+                 of the work for making modifications to it.
+             For an executable work, complete source code means
+              all the source code for all modules it contains,
+               plus any associated interface definition files,
+                plus the scripts used to control compilation
+                     and installation of the executable.
+        However, as a special exception, the source code distributed
+           need not include anything that is normally distributed
+         (in either source or binary form) with the major components
+            (compiler, kernel, and so on) of the operating system
+             on which the executable runs, unless that component
+                     itself accompanies the executable.
+
+            If distribution of executable or object code is made
+             by offering access to copy from a designated place,
+           then offering equivalent access to copy the source code
+       from the same place counts as distribution of the source code,
+                 even though third parties are not compelled
+               to copy the source along with the object code.
+
+
+                                     4.
+       You may not copy, modify, sublicense, or distribute the Program
+              except as expressly provided under this License.
+       Any attempt otherwise to copy, modify, sublicense or distribute
+      the Program is void, and will automatically terminate your rights
+       under this License. However, parties who have received copies,
+     or rights, from you under this License will not have their licenses
+        terminated so long as such parties remain in full compliance.
+
+
+                                     5.
+                You are not required to accept this License,
+                        since you have not signed it.
+          However, nothing else grants you permission to modify or
+               distribute the Program or its derivative works.
+   These actions are prohibited by law if you do not accept this License.
+             Therefore, by modifying or distributing the Program
+                     (or any work based on the Program),
+           you indicate your acceptance of this License to do so,
+                and all its terms and conditions for copying,
+         distributing or modifying the Program or works based on it.
+
+
+                                     6.
+                   Each time you redistribute the Program
+                     (or any work based on the Program),
+                    the recipient automatically receives
+                a license from the original licensor to copy,
+   distribute or modify the Program subject to these terms and conditions.
+       You may not impose any further restrictions on the recipients'
+                   exercise of the rights granted herein.
+              You are not responsible for enforcing compliance
+                      by third parties to this License.
+
+
+                                     7.
+                  If, as a consequence of a court judgment
+                    or allegation of patent infringement
+           or for any other reason (not limited to patent issues),
+                        conditions are imposed on you 
+              (whether by court order, agreement or otherwise)
+               that contradict the conditions of this License,
+         they do not excuse you from the conditions of this License.
+          If you cannot distribute so as to satisfy simultaneously
+  your obligations under this License and any other pertinent obligations,
+      then as a consequence you may not distribute the Program at all.
+       For example, if a patent license would not permit royalty-free
+   redistribution of the Program by all those who receive copies directly
+   or indirectly through you, then the only way you could satisfy both it
+                and this License would be to refrain entirely
+                      from distribution of the Program.
+
+              If any portion of this section is held invalid
+             or unenforceable under any particular circumstance,
+       the balance of the section is intended to apply and the section
+           as a whole is intended to apply in other circumstances.
+
+       It is not the purpose of this section to induce you to infringe
+      any patents or other property right claims or to contest validity
+     of any such claims; this section has the sole purpose of protecting
+           the integrity of the free software distribution system,
+              which is implemented by public license practices.
+       Many people have made generous contributions to the wide range
+           of software distributed through that system in reliance
+                  on consistent application of that system;
+       it is up to the author/donor to decide if he or she is willing
+               to distribute software through any other system
+                  and a licensee cannot impose that choice.
+
+           This section is intended to make thoroughly clear what
+        is believed to be a consequence of the rest of this License.
+
+
+                                     8.
+         If the distribution and/or use of the Program is restricted
+    in certain countries either by patents or by copyrighted interfaces,
+   the original copyright holder who places the Program under this License
+          may add an explicit geographical distribution limitation
+        excluding those countries, so that distribution is permitted
+                only in or among countries not thus excluded.
+           In such case, this License incorporates the limitation
+                 as if written in the body of this License.
+
+
+                                     9.
+           The Free Software Foundation may publish revised and/or
+        new versions of the General Public License from time to time.
+     Such new versions will be similar in spirit to the present version,
+        but may differ in detail to address new problems or concerns.
+
+           Each version is given a distinguishing version number.
+          If the Program specifies a version number of this License
+                which applies to it and "any later version",
+          you have the option of following the terms and conditions
+          either of that version or of any later version published
+                      by the Free Software Foundation.
+      If the Program does not specify a version number of this License,
+ you may choose any version ever published by the Free Software Foundation.
+
+
+                                     10.
+            If you wish to incorporate parts of the Program into
+      other free programs whose distribution conditions are different,
+                 write to the author to ask for permission.
+     For software which is copyrighted by the Free Software Foundation,
+                   write to the Free Software Foundation;
+                   we sometimes make exceptions for this.
+                Our decision will be guided by the two goals
+    of preserving the free status of all derivatives of our free software
+        and of promoting the sharing and reuse of software generally.
+
+
+                                 NO WARRANTY
+
+                                     11.
+               BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE,
+                    THERE IS NO WARRANTY FOR THE PROGRAM,
+                 TO THE EXTENT PERMITTED BY APPLICABLE LAW.
+        EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS
+          AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT
+        WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+        BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
+                    AND FITNESS FOR A PARTICULAR PURPOSE.
+              THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE
+       OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE,
+    YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
+
+
+                                     12.
+         IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO
+          IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY
+     WHO MAY MODIFY AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE,
+        BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL,
+               INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT
+                 OF THE USE OR INABILITY TO USE THE PROGRAM
+                 (INCLUDING BUT NOT LIMITED TO LOSS OF DATA
+                      OR DATA BEING RENDERED INACCURATE
+                 OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES
+      OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
+                     EVEN IF SUCH HOLDER OR OTHER PARTY
+            HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
+
+
+                         END OF TERMS AND CONDITIONS
+
+
+
+                How to Apply These Terms to Your New Programs
+
+     If you develop a new program, and you want it to be of the greatest
+   possible use to the public, the best way to achieve this is to make it
+ free software which everyone can redistribute and change under these terms.
+
+           To do so, attach the following notices to the program.
+        It is safest to attach them to the start of each source file
+            to most effectively convey the exclusion of warranty;
+           and each file should have at least the "copyright" line
+              and a pointer to where the full notice is found.
+
+   <one line to give the program's name and a brief idea of what it does.>
+                    Copyright (C) 19yy  <name of author>
+
+        This program is free software; you can redistribute it and/or
+         modify it under the terms of the GNU General Public License
+                as published by the Free Software Foundation;
+                      either version 2 of the License,
+                   or (at your option) any later version.
+
+       This program is distributed in the hope that it will be useful,
+       but WITHOUT ANY WARRANTY; without even the implied warranty of
+            MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+            See the GNU General Public License for more details.
+
+      You should have received a copy of the GNU General Public License
+                along with this program; if not, write to the
+                       Free Software Foundation, Inc.,
+                         59 Temple Place, Suite 330,
+                          Boston, MA 02111-1307 USA
+
+  Also add information on how to contact you by electronic and paper mail.
+
+        If the program is interactive, make it output a short notice
+              like this when it starts in an interactive mode:
+
+Gnomovision version 69, Copyright (C) 19yy name of author
+Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type 'show w'.
+This is free software, and you are welcome to redistribute it
+under certain conditions; type 'show c' for details.
+
+         The hypothetical commands 'show w' and 'show c' should show
+            the appropriate parts of the General Public License.
+        Of course, the commands you use may be called something other
+               than 'show w' and 'show c'; they could even be
+          mouse-clicks or menu items--whatever suits your program.
+
+       You should also get your employer (if you work as a programmer)
+  or your school, if any, to sign a "copyright disclaimer" for the program,
+              if necessary. Here is a sample; alter the names:
+
+Yoyodyne, Inc., hereby disclaims all copyright interest in the program
+'Gnomovision' (which makes passes at compilers) written by James Hacker.
+
+<signature of Ty Coon>, 1 April 1989
+Ty Coon, President of Vice
+
+   This General Public License does not permit incorporating your program
+     into proprietary programs. If your program is a subroutine library,
+        you may consider it more useful to permit linking proprietary
+       applications with the library. If this is what you want to do,
+     use the GNU Library General Public License instead of this License.

uniutils-2.25/CREDITS

+Dylan Thurston
+      Provided a patch to Get_UTF32_From_UTF8 that allows it to deal correctly
+      with interrupted UTF-8 sequences.
+
+H. Merijn Brand
+     Proposed and implemented -A option to ignore ASCII whitespace.
+ 
+

uniutils-2.25/ChangeLog

+2007-06-30  Bill Poser  <poser@khunekcho.khunek.poser.org>
+
+	* unidesc.c:
+	Added -r option to generate list of ranges encountered.
+
+	* uniname.c: 
+	Added -B option to ignore characters within the BMP.
+
+2007-02-10  Bill Poser  <poser@khunekcho.khunek.poser.org>
+
+	* unirange.c: 
+	Corrected range for Ewellic and added "undefined" range for gap. 
+
+2007-01-30  Bill Poser  <poser@khunekcho.khunek.poser.org>
+
+	* unirev.c: 
+	Minor code cleanup.
+
+2007-01-09  Bill Poser  <poser@khunekcho.khunek.poser.org>
+
+	* unirange.c (Range_Table): 
+	Added Conlang ranges within the Private Use Areas to the
+	list of ranges.
+
+2006-09-22  Bill Poser  <poser@khunekyaz.khunek.poser.org>
+
+	* uniname.c (main): 
+	Added option to skip ASCII whitespace characters
+	proposed and implemented by H. Merijn Brand.
+	
+2006-09-19  Bill Poser  <poser@khunekcho.khunek.poser.org>
+	* Version 2.21 released.
+	
+	* uniname.c (main): 
+	Added line number and character number to the error report
+	issued on encountering ill-formed input.
+
+	* unidesc.c (main): 
+	Added a detailed error report on ill-formed input.
+	
+	* unihist.c (main): 
+	Added a detailed error report on ill-formed input.
+
+2006-08-22  Bill Poser  <poser@khunekcho.khunek.poser.org>
+
+	* unihist.c unidesc.c:
+	Modified both to use non-buggy UTF-8 reader.
+
+2006-08-21  Bill Poser  <poser@khunekcho.khunek.poser.org>
+
+	* uniname.c: 
+	Added the command-line option -a, which causes ASCII characters to
+	be skipped. This is handy if you want to find out what non-ASCII characters
+	you are dealing with.
+
+2006-07-26  Bill Poser  <poser@khunekcho.khunek.poser.org>
+
+	* unirange.c unames.c:
+	Updated to Unicode 5.0.
+
+2006-07-12  Bill Poser  <poser@khunekyaz.khunek.poser.org>
+
+	* Get_UTF32_From_UTF8i.c Get_UTF32_From_UTF8.c:
+	Fixed bug in which read interrupted in midst of UTF8 sequence
+	was incorrectly treated as truncated.
+
+2006-05-20  Bill Poser  <poser@S010600023f310f85.ca.shawcable.net>
+
+	* unirange.c unames.c: 
+	Updated range list and character data to Unicode 4.1.
+
+2006-01-29  Bill Poser  <poser@S010600e0185aee1a.ca.shawcable.net>
+
+	* uniname.c: 
+	Added -l option to print line number.
+
+2005-10-29  Bill Poser  <poser@khunekcho.khunek.poser.org>
+
+	* unidesc.c:
+	Added options -l and -L for listing ranges respectively ordered
+	numerically 	and alphabetically. 
+
+2005-10-25  Bill Poser  <poser@khunekcho.khunek.poser.org>
+
+	* unidesc.c uniname.c unihist.c ExplicateUTF8.c: 
+	Autoconfiscated package.
+	

uniutils-2.25/ExplicateBadUTF8.c

+/* Time-stamp: <2005-10-25 17:40:48 poser>
+ *
+ * Copyright (C) 2004 William J. Poser (billposer@alum.mit.edu)
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ * or go to the web page:  http://www.gnu.org/licenses/gpl.txt.
+ *
+ * Given a bad UTF-8 sequence, explain why it is bad.
+ *  
+ * Author: Bill Poser (wjposer@unagi.cis.upenn.edu)
+ *
+ */
+
+#include <unistd.h>
+#include <stdlib.h>
+#include <stdio.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <fcntl.h>
+#include "unicode.h" 
+
+#define FALSE 0
+#define TRUE 1
+
+/*
+ * Index into the table below with the first byte of a UTF-8 sequence to
+ * get the number of bytes that should follow.
+ */
+
+static const char TrailingBytesForUTF8[256] = {
+	0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+	0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+	0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+	0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+	0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+	0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+	1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
+	2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, 3,3,3,3,3,3,3,3,4,4,4,4,5,5,5,5
+};
+
+/*
+ * Magic values subtracted from a buffer value during UTF8 conversion.
+ * This table contains as many values as there might be trailing bytes
+ * in a UTF-8 sequence.
+ */
+
+static const UTF32 OffsetsFromUTF8[6] = { 0x00000000UL, 0x00003080UL, 0x000E2080UL, 
+
+					 0x03C82080UL, 0xFA082080UL, 0x82082080UL };
+
+void
+ExplicateBadUTF8(FILE *fp, unsigned char *c){
+  int BytesNeeded;
+  int i;
+  unsigned char *cptr;
+
+  extern char * binfmtc(unsigned char);
+
+  cptr = c;
+
+  if( (c[0] & 0xC0) == 0x80){
+    fprintf(fp,"The first byte, value 0x%02X, with bit pattern %s,\nis not a valid first byte of a UTF-8 sequence because its high bits are 10.\nA valid first byte must be of the form 0nnnnnnn or 11nnnnnn.\n",c[0],binfmtc(c[0]));
+    return;
+  }
+
+  BytesNeeded = (int) TrailingBytesForUTF8[c[0]];
+
+  for (i = 1; i <= BytesNeeded; i++){
+    if (( c[i] & 0xC0) != 0x80){
+      fprintf(fp,"The sequence is not a valid UTF-8 character because\nthe first byte, value 0x%02X, bit pattern %s,\nrequires %d continuation bytes, but of the immediately\nfollowing bytes, byte %d, value 0x%02X, bit pattern\n%s is not a valid continuation byte, since\nits high bits are not 10.\n",c[0],binfmtc(c[0]),BytesNeeded,i,c[i],binfmtc(c[i]));
+      return;
+    }
+  }
+}

uniutils-2.25/ExplicateUTF8.1

+.TH ExplicateUTF8 1 "December, 2003"
+.SH NAME
+ExplicateUTF8 \- Explain the status of a sequence of bytes as a UTF8 encoding
+.SH SYNOPSIS
+.B ExplicateUTF8 ((-o <byte offset>) <file name>)
+.SH DESCRIPTION
+.I ExplicateUTF8
+examines its input and determines whether it begins with a valid UTF8 Unicode
+sequence. If the sequence is invalid, it explains why. If the sequence is valid,
+it explains why the sequence is valid, gives the equivalent UTF-32 code, and
+explains how this value was computed.
+.PP
+If no input file name is supplied,
+.I ExplicateUTF8
+reads from the standard input.
+.SH COMMAND LINE FLAGS
+.br
+.IP "-h"
+Print usage message.
+.IP "-o <byte offset>"
+Skip the first <byte offset> bytes of the input.
+.IP "-v"
+Print version information.
+.SH REFERENCES
+Unicode Standard, version 4.1
+.SH AUTHOR
+Bill Poser
+.br
+billposer@alum.mit.edu
+.SH LICENSE
+GNU General Public License
+
+
+
+
+

uniutils-2.25/ExplicateUTF8.c

+/* Time-stamp: <2006-12-29 21:36:57 poser>
+ *
+ * Copyright (C) 2003-2006 William J. Poser (billposer@alum.mit.edu)
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ * or go to the web page:  http://www.gnu.org/licenses/gpl.txt.
+ *
+ * Given a sequence of bytes, this program determines whether that sequence
+ * constitutes a valid UTF-8 code. If not, it explains why not.
+ * If so, it explains why and shows how the UTF32 value is assembled.
+ *  
+ * Author: Bill Poser (wjposer@unagi.cis.upenn.edu)
+ *
+ */
+
+#include "config.h"
+#include <unistd.h>
+#include <stdlib.h>
+#include <stdio.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <fcntl.h>
+#include "unicode.h" 
+
+#define FALSE 0
+#define TRUE 1
+
+char *pgname ="ExplicateUTF8";
+char compdate[]="Compiled " __DATE__ " " __TIME__ ;
+
+/*
+ * Index into the table below with the first byte of a UTF-8 sequence to
+ * get the number of bytes that should follow.
+ */
+
+static const char TrailingBytesForUTF8[256] = {
+	0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+	0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+	0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+	0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+	0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+	0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+	1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
+	2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, 3,3,3,3,3,3,3,3,4,4,4,4,5,5,5,5
+};
+
+/*
+ * Magic values subtracted from a buffer value during UTF8 conversion.
+ * This table contains as many values as there might be trailing bytes
+ * in a UTF-8 sequence.
+ */
+
+static const UTF32 OffsetsFromUTF8[6] = { 0x00000000UL, 0x00003080UL, 0x000E2080UL, 
+					 0x03C82080UL, 0xFA082080UL, 0x82082080UL };
+
+void
+Usage(void){
+  fprintf(stderr,"Determine and explain the validity of a potential UTF-8 byte sequence\n");
+  fprintf(stderr,"%s: ((-o Offset) <file name>)\n",pgname);
+}
+
+
+void
+ShowVersion(void){
+  fprintf(stderr,"\n%s  %s\n",pgname,PACKAGE_VERSION);
+  fprintf(stderr,"%s\n",compdate);
+  fprintf(stderr,"Copyright (C) 2003-2006 William J. Poser\n");
+  fprintf(stderr,"Released under the terms of the GNU General Public License.\n\n");
+}
+
+int
+main(int ac, char **av){
+
+  int BytesNeeded;
+  int BytesRead;
+  int UsefulBits;
+  unsigned char c[6];
+  int i;
+  UTF32 ch;
+  unsigned char *cptr;
+  unsigned char ShiftedByte;
+  char tempstr[33];
+  int GotBits;
+  int oc;
+  unsigned long Offset = 0L; 
+  int infd;
+  int spaces;
+
+  extern char * binfmtc(unsigned char);
+  extern char * binfmtl(unsigned long);
+  extern int opterr;
+  extern int optind;
+  extern char *optarg;
+  extern int optopt;
+
+  opterr=0;
+  cptr = &(c[0]);
+
+  while( (oc = getopt(ac,av,"ho:v")) != EOF){
+    switch(oc){
+    case 'h':
+      Usage();
+      exit(2);
+      break;			/* NOTREACHED */
+    case 'o':
+      Offset = atol(optarg);
+      break;
+    case 'v':
+      ShowVersion();
+      exit(2);
+      break;			/* NOTREACHED */
+    case '?':
+    default:
+      fprintf(stderr,"Unrecognized option %c\n",(char) optopt);
+      exit(1);
+    }
+  }
+
+  if(optind < ac) {
+    infd = open(av[optind], O_RDONLY);
+    if(infd < 0){
+      perror(NULL);
+      fprintf(stderr,"%s: unable to open file %s\n",pgname,av[optind]);
+      exit(2);
+    }
+    if(lseek(infd, (off_t)Offset,SEEK_SET) < 0){
+      perror(NULL);
+      exit(1);
+    }
+  }
+  else infd = fileno(stdin);
+
+
+  /* Get the first byte */
+  BytesRead = read(infd,(void *) c,1);
+  if (BytesRead == 0){
+    fprintf(stderr,"%s: could not read first byte from input.\n",pgname);
+    exit(2);
+  }
+  if (BytesRead < 0){
+    perror(NULL);
+    exit(2);
+  }
+
+  if( (c[0] & 0xC0) == 0x80){
+    printf("The first byte, value 0x%02X, with bit pattern %s,\nis not a valid first byte of a UTF-8\nsequence because its high bits are 10.\nA valid first byte must be of the form 0nnnnnnn or 11nnnnnn.\n",c[0],binfmtc(c[0]));
+    exit(0);
+  }
+
+  if(c[0] <= 0x7F){
+    printf("The first byte, value 0x%02X, bit pattern %s, is a valid UTF-8 code by itself\nsince its high bit is 0.\n",c[0],binfmtc(c[0]));    
+    exit(0);
+  }
+
+  BytesNeeded = (int) TrailingBytesForUTF8[c[0]];
+  BytesRead = read(infd,(void *) &c[1],(size_t) BytesNeeded);
+  if(BytesRead != BytesNeeded){
+    printf("The sequence is not a valid UTF-8 character\nbecause the first byte, value 0x%02X, bit pattern %s,\ntells us that a total of %d bytes are needed but\n only %d bytes are present.\n",
+	   c[0],binfmtc(c[0]),BytesNeeded+1,BytesRead+1);
+    exit(1);
+  } 
+
+  for (i = 1; i <= BytesRead; i++){
+    if (( c[i] & 0xC0) != 0x80){
+      printf("The sequence is not a valid UTF-8 character\nbecause byte %d, value 0x%02X, bit pattern %s\nis not a valid continuation byte, whose high bits must be 10.\n",i+1,c[i],binfmtc(c[i]));
+      exit(1);      
+    }
+  }
+
+  /* If we get here, everything is okay, so assemble the UTF32 value */
+
+  ch = 0;
+  switch (BytesNeeded) {
+    case 5:	ch += *cptr++; ch <<= 6;
+    case 4:	ch += *cptr++; ch <<= 6;
+    case 3:	ch += *cptr++; ch <<= 6;
+    case 2:	ch += *cptr++; ch <<= 6;
+    case 1:	ch += *cptr++; ch <<= 6;
+    case 0:	ch += *cptr++;
+  }
+  ch -= OffsetsFromUTF8[BytesNeeded];
+
+  printf("The sequence ");
+  for (i = 0; i <= BytesRead; i++) printf("0x%02X     ",c[i]);
+  printf("\n             ");
+  for (i = 0; i <= BytesRead; i++) printf("%s ",binfmtc(c[i]));
+  printf("\n");
+  printf("is a valid UTF-8 character encoding equivalent to UTF32 0x%08lX.\n",ch);
+  printf("The first byte tells us that there should be %d\ncontinuation bytes since it begins with %d contiguous 1s.\nThere are %d following bytes and all are valid\ncontinuation bytes since they all have high bits 10.\n",BytesNeeded,BytesNeeded+1,BytesNeeded);
+  UsefulBits = 6- BytesNeeded;
+  printf("The first byte contributes its low %d bits.\n",UsefulBits);
+  GotBits = UsefulBits + (6 * BytesNeeded);
+  printf("The remaining bytes each contribute their low 6 bits,\nfor a total of %d bits: ",GotBits);
+
+  ShiftedByte = c[0] << (BytesNeeded +2);
+  sprintf(tempstr,"%s",binfmtc(ShiftedByte));
+  tempstr[6-BytesNeeded] = '\0';
+  printf("%s ",tempstr); 
+  for(i = 1; i <= BytesNeeded; i++){
+    ShiftedByte = c[i] << 2;
+    sprintf(tempstr,"%s",binfmtc(ShiftedByte));
+    tempstr[6] = '\0';
+    printf("%s ",tempstr); 
+  }
+  printf("\n");
+  printf("This is padded to 32 places with %d zeros: %n%s\n",(32-GotBits),&spaces,binfmtl(ch));
+  sprintf(tempstr,"                                ");
+  sprintf(tempstr,"%08lX",ch);
+  tempstr[28] = tempstr[7];
+  tempstr[24] = tempstr[6];
+  tempstr[20] = tempstr[5];
+  tempstr[16] = tempstr[4];
+  tempstr[12] = tempstr[3];
+  tempstr[8]  = tempstr[2];
+  tempstr[4]  = tempstr[1];
+  tempstr[1] = 0x20;
+  tempstr[2] = 0x20;
+  tempstr[3] = 0x20;
+  tempstr[5] = 0x20;
+  tempstr[6] = 0x20;
+  tempstr[7] = (unsigned char) 0x20;
+  tempstr[29] =(unsigned char)  0x00;
+  printf("%*s%s\n",spaces,"",tempstr);
+
+  exit(0);
+}

uniutils-2.25/Get_UTF32_From_UTF8i.c

+/* Time-stamp: <2006-09-19 10:34:23 poser>
+ *
+ * This function reads from a file descriptor presumed to contain text encoded
+ * in UTF-8 and returns the next UTF-32 character. It performs the same
+ * conversion from UTF-8 to UTF-32 as the model function provided by the
+ * Unicode consortium but is intended for reading from streams. For some
+ * applications it may be more efficient to read large blocks of input
+ * and then use the buffer conversion function, but this is not compatible
+ * with reading from pipes.
+ *
+ * This version "returns" via pointers passed as arguments the number of bytes read
+ * and a pointer to the raw byte string.
+ * 
+ * Author: Bill Poser (billposer@alum.mit.edu)
+ * Patch by Dylan Thurston to resume read interrupted in mid-sequence.
+ *
+ */
+
+#include <unistd.h>
+#include <stdlib.h>
+#include <stdio.h>
+#include "unicode.h"
+#include "utf8error.h"
+
+#define FALSE 0
+#define TRUE 1
+
+/* 
+ * The following are based on the Unicode consortium code. 
+ */
+
+
+/*
+ * Index into the table below with the first byte of a UTF-8 sequence to
+ * get the number of bytes that should follow.
+ */
+
+static const char TrailingBytesForUTF8[256] = {
+	0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+	0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+	0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+	0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+	0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+	0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+	1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
+	2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, 3,3,3,3,3,3,3,3,4,4,4,4,5,5,5,5
+};
+
+/*
+ * Magic values subtracted from a buffer value during UTF8 conversion.
+ * This table contains as many values as there might be trailing bytes
+ * in a UTF-8 sequence.
+ */
+static const UTF32 OffsetsFromUTF8[6] = { 0x00000000UL, 0x00003080UL, 0x000E2080UL, 
+					 0x03C82080UL, 0xFA082080UL, 0x82082080UL };
+
+/*
+ * Utility routine to tell whether a sequence of bytes is legal UTF-8.
+ * This must be called with the length pre-determined by the first byte.
+ * If not calling this from ConvertUTF8to*, then the length can be set by:
+ *	length = TrailingBytesForUTF8[*source]+1;
+ */
+
+static int LegalUTF8P(const UTF8 *source, int length) {
+  UTF8 a;
+  const UTF8 *srcptr = source+length;
+  switch (length) {
+  default: return FALSE;
+    /* Everything else falls through when "TRUE"... */
+  case 4: if ((a = (*--srcptr)) < 0x80 || a > 0xBF) return FALSE;
+  case 3: if ((a = (*--srcptr)) < 0x80 || a > 0xBF) return FALSE;
+  case 2: if ((a = (*--srcptr)) > 0xBF) return FALSE;
+    switch (*source) {
+      /* no fall-through in this inner switch */
+    case 0xE0: if (a < 0xA0) return FALSE; break;
+    case 0xF0: if (a < 0x90) return FALSE; break;
+    case 0xF4: if (a > 0x8F) return FALSE; break;
+    default:  if (a < 0x80) return FALSE;
+    }
+  case 1: if (*source >= 0x80 && *source < 0xC2) return FALSE;
+    if (*source > 0xF4) return FALSE;
+  }
+  return TRUE;
+}
+
+/* End of Unicode Consortium code */
+
+
+UTF32 Get_UTF32_From_UTF8 (int fd, int *bytes, unsigned char **bstr)
+{
+  int BytesSoFar;
+  int BytesRead;
+  int BytesNeeded;		/* Additional bytes after initial byte */
+  static unsigned char c[6];
+  UTF32 ch;			/* Result character */
+
+  unsigned char *cptr;
+
+  cptr = &(c[0]);
+
+  /* Get the first byte */
+  BytesRead = read(fd,(void *) c,1);
+  if (BytesRead == 0) return (UTF8_ENDOFFILE);
+  if (BytesRead < 0) return (UTF8_IOERROR); 
+
+  /* Now get the remaining bytes */
+  BytesNeeded = (int) TrailingBytesForUTF8[c[0]];
+  BytesSoFar = 0;
+  do {
+    BytesRead = read(fd,(void *) &c[BytesSoFar+1],(size_t) (BytesNeeded-BytesSoFar));
+    BytesSoFar += BytesRead;
+  } while (BytesRead > 0 || ((BytesSoFar < BytesNeeded) && BytesRead != EOF));
+  if(BytesSoFar != BytesNeeded) return(UTF8_NOTENOUGHBYTES);
+  *bytes = BytesNeeded+1;
+  *bstr = &c[0];
+
+  /* Check validity of source */
+  if(! LegalUTF8P((void *) c,BytesNeeded+1)) return(UTF8_BADINCODE);
+
+  ch = 0;
+  switch (BytesNeeded) {
+    case 5:	ch += *cptr++; ch <<= 6;
+    case 4:	ch += *cptr++; ch <<= 6;
+    case 3:	ch += *cptr++; ch <<= 6;
+    case 2:	ch += *cptr++; ch <<= 6;
+    case 1:	ch += *cptr++; ch <<= 6;
+    case 0:	ch += *cptr++;
+  }
+  ch -= OffsetsFromUTF8[BytesNeeded];
+
+  if(ch <= UNI_MAX_UTF32) return(ch);
+  else return(UNI_REPLACEMENT_CHAR);
+}

uniutils-2.25/Get_UTF32i.c

+/* Time-stamp: <2006-07-12 23:12:12 poser>
+ *
+ * This function reads from a file descriptor presumed to contain text encoded
+ * in native order UTF-32 and returns the next UTF-32 character.
+ * No conversion is necessary in this case, so the function is trivial.
+ * It is provided for compatibility with functions that actually
+ * perform a conversion.
+ * 
+ * Author: Bill Poser (wjposer@unagi.cis.upenn.edu)
+ *
+ */
+
+#include <unistd.h>
+#include <stdlib.h>
+#include "utf8error.h"
+
+#define FALSE 0
+#define TRUE 1
+
+
+typedef unsigned long	UTF32;	/* At least 32 bits */
+
+#define UNI_MAX_UTF32 (UTF32)0x7FFFFFFF
+
+
+UTF32 Get_UTF32 (int fd, int *bytes,unsigned char **rb)
+{
+  int BytesRead;
+  UTF32 ch;
+
+  BytesRead = read(fd,(void *) &ch,sizeof(UTF32));
+  if (BytesRead == 0) return (UTF8_ENDOFFILE);
+  if (BytesRead < 0) return (UTF8_IOERROR); 
+  *bytes = 4;
+
+  *rb=(unsigned char *)&ch;
+  if(ch <= UNI_MAX_UTF32) return(ch);
+  else return(UTF8_BADOUTCODE);
+}

uniutils-2.25/INSTALL

+Copyright 1994, 1995, 1996, 1999, 2000, 2001 Free Software Foundation,
+Inc.
+
+   This file is free documentation; the Free Software Foundation gives
+unlimited permission to copy, distribute and modify it.
+
+Basic Installation
+==================
+
+   These are generic installation instructions.
+
+   The `configure' shell script attempts to guess correct values for
+various system-dependent variables used during compilation.  It uses
+those values to create a `Makefile' in each directory of the package.
+It may also create one or more `.h' files containing system-dependent
+definitions.  Finally, it creates a shell script `config.status' that
+you can run in the future to recreate the current configuration, and a
+file `config.log' containing compiler output (useful mainly for
+debugging `configure').
+
+   It can also use an optional file (typically called `config.cache'
+and enabled with `--cache-file=config.cache' or simply `-C') that saves
+the results of its tests to speed up reconfiguring.  (Caching is
+disabled by default to prevent problems with accidental use of stale
+cache files.)
+
+   If you need to do unusual things to compile the package, please try
+to figure out how `configure' could check whether to do them, and mail
+diffs or instructions to the address given in the `README' so they can
+be considered for the next release.  If you are using the cache, and at
+some point `config.cache' contains results you don't want to keep, you
+may remove or edit it.
+
+   The file `configure.ac' (or `configure.in') is used to create
+`configure' by a program called `autoconf'.  You only need
+`configure.ac' if you want to change it or regenerate `configure' using
+a newer version of `autoconf'.
+
+The simplest way to compile this package is:
+
+  1. `cd' to the directory containing the package's source code and type
+     `./configure' to configure the package for your system.  If you're
+     using `csh' on an old version of System V, you might need to type
+     `sh ./configure' instead to prevent `csh' from trying to execute
+     `configure' itself.
+
+     Running `configure' takes awhile.  While running, it prints some
+     messages telling which features it is checking for.
+
+  2. Type `make' to compile the package.
+
+  3. Optionally, type `make check' to run any self-tests that come with
+     the package.
+
+  4. Type `make install' to install the programs and any data files and
+     documentation.
+
+  5. You can remove the program binaries and object files from the
+     source code directory by typing `make clean'.  To also remove the
+     files that `configure' created (so you can compile the package for
+     a different kind of computer), type `make distclean'.  There is
+     also a `make maintainer-clean' target, but that is intended mainly
+     for the package's developers.  If you use it, you may have to get
+     all sorts of other programs in order to regenerate files that came
+     with the distribution.
+
+Compilers and Options
+=====================
+
+   Some systems require unusual options for compilation or linking that
+the `configure' script does not know about.  Run `./configure --help'
+for details on some of the pertinent environment variables.
+
+   You can give `configure' initial values for variables by setting
+them in the environment.  You can do that on the command line like this:
+
+     ./configure CC=c89 CFLAGS=-O2 LIBS=-lposix
+
+   *Note Defining Variables::, for more details.
+
+Compiling For Multiple Architectures
+====================================
+
+   You can compile the package for more than one kind of computer at the
+same time, by placing the object files for each architecture in their
+own directory.  To do this, you must use a version of `make' that
+supports the `VPATH' variable, such as GNU `make'.  `cd' to the
+directory where you want the object files and executables to go and run
+the `configure' script.  `configure' automatically checks for the
+source code in the directory that `configure' is in and in `..'.
+
+   If you have to use a `make' that does not support the `VPATH'
+variable, you have to compile the package for one architecture at a
+time in the source code directory.  After you have installed the
+package for one architecture, use `make distclean' before reconfiguring
+for another architecture.
+
+Installation Names
+==================
+
+   By default, `make install' will install the package's files in
+`/usr/local/bin', `/usr/local/man', etc.  You can specify an
+installation prefix other than `/usr/local' by giving `configure' the
+option `--prefix=PATH'.
+
+   You can specify separate installation prefixes for
+architecture-specific files and architecture-independent files.  If you
+give `configure' the option `--exec-prefix=PATH', the package will use
+PATH as the prefix for installing programs and libraries.
+Documentation and other data files will still use the regular prefix.
+
+   In addition, if you use an unusual directory layout you can give
+options like `--bindir=PATH' to specify different values for particular
+kinds of files.  Run `configure --help' for a list of the directories
+you can set and what kinds of files go in them.
+
+   If the package supports it, you can cause programs to be installed
+with an extra prefix or suffix on their names by giving `configure' the
+option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'.
+
+Optional Features
+=================
+
+   Some packages pay attention to `--enable-FEATURE' options to
+`configure', where FEATURE indicates an optional part of the package.
+They may also pay attention to `--with-PACKAGE' options, where PACKAGE
+is something like `gnu-as' or `x' (for the X Window System).  The
+`README' should mention any `--enable-' and `--with-' options that the
+package recognizes.
+
+   For packages that use the X Window System, `configure' can usually
+find the X include and library files automatically, but if it doesn't,
+you can use the `configure' options `--x-includes=DIR' and
+`--x-libraries=DIR' to specify their locations.
+
+Specifying the System Type
+==========================
+
+   There may be some features `configure' cannot figure out
+automatically, but needs to determine by the type of host the package
+will run on.  Usually `configure' can figure that out, but if it prints
+a message saying it cannot guess the host type, give it the
+`--build=TYPE' option.  TYPE can either be a short name for the system
+type, such as `sun4', or a canonical name which has the form:
+
+     CPU-COMPANY-SYSTEM
+
+where SYSTEM can have one of these forms:
+
+     OS KERNEL-OS
+
+   See the file `config.sub' for the possible values of each field.  If
+`config.sub' isn't included in this package, then this package doesn't
+need to know the host type.
+
+   If you are _building_ compiler tools for cross-compiling, you should
+use the `--target=TYPE' option to select the type of system they will
+produce code for.
+
+   If you want to _use_ a cross compiler, that generates code for a
+platform different from the build platform, you should specify the host
+platform (i.e., that on which the generated programs will eventually be
+run) with `--host=TYPE'.  In this case, you should also specify the
+build platform with `--build=TYPE', because, in this case, it may not
+be possible to guess the build platform (it sometimes involves
+compiling and running simple test programs, and this can't be done if
+the compiler is a cross compiler).
+
+Sharing Defaults
+================
+
+   If you want to set default values for `configure' scripts to share,
+you can create a site shell script called `config.site' that gives
+default values for variables like `CC', `cache_file', and `prefix'.
+`configure' looks for `PREFIX/share/config.site' if it exists, then
+`PREFIX/etc/config.site' if it exists.  Or, you can set the
+`CONFIG_SITE' environment variable to the location of the site script.
+A warning: not all `configure' scripts look for a site script.
+
+Defining Variables
+==================
+
+   Variables not defined in a site shell script can be set in the
+environment passed to `configure'.  However, some packages may run
+configure again during the build, and the customized values of these
+variables may be lost.  In order to avoid this problem, you should set
+them in the `configure' command line, using `VAR=value'.  For example:
+
+     ./configure CC=/usr/local2/bin/gcc
+
+will cause the specified gcc to be used as the C compiler (unless it is
+overridden in the site shell script).
+
+`configure' Invocation
+======================
+
+   `configure' recognizes the following options to control how it
+operates.
+
+`--help'
+`-h'
+     Print a summary of the options to `configure', and exit.
+
+`--version'
+`-V'
+     Print the version of Autoconf used to generate the `configure'
+     script, and exit.
+
+`--cache-file=FILE'
+     Enable the cache: use and save the results of the tests in FILE,
+     traditionally `config.cache'.  FILE defaults to `/dev/null' to
+     disable caching.
+
+`--config-cache'
+`-C'
+     Alias for `--cache-file=config.cache'.
+
+`--quiet'
+`--silent'
+`-q'
+     Do not print messages saying which checks are being made.  To
+     suppress all normal output, redirect it to `/dev/null' (any error
+     messages will still be shown).
+
+`--srcdir=DIR'
+     Look for the package's source code in directory DIR.  Usually
+     `configure' can determine that directory automatically.
+
+`configure' also accepts some other, not widely useful, options.  Run
+`configure --help' for more details.
+

uniutils-2.25/Makefile.am

+bin_PROGRAMS = unidesc uniname unihist ExplicateUTF8 unirev
+bin_SCRIPTS = utf8lookup
+dist_man_MANS = unidesc.1 uniname.1 ExplicateUTF8.1 unihist.1 unirev.1
+unidesc_SOURCES = Get_UTF32_From_UTF8i.c unidesc.c Get_UTF32i.c Read_UMagic_Number.c unirange.c ExplicateBadUTF8.c binfmt.c
+uniname_SOURCES = uniname.c Get_UTF32_From_UTF8i.c Get_UTF32i.c unames.c unirange.c offsettbl.c NelsonTbl.c putu8.c ExplicateBadUTF8.c binfmt.c
+unihist_SOURCES = unihist.c Get_UTF32_From_UTF8i.c  putu8.c ExplicateBadUTF8.c binfmt.c
+ExplicateUTF8_SOURCES = ExplicateUTF8.c binfmt.c
+unirev_SOURCES = unirev.c
+noinst_HEADERS = nelson.h  offsettbl.h  unicode.h  uniftypes.h  unirange.h  utf8error.h
+LOCALEDIR=/usr/local/share/locale
+AM_CFLAGS = -DLOCALEDIR=\"${LOCALEDIR}\"
+AUTOMAKE_OPTIONS = dist-zip dist-bzip2
+EXTRA_DIST = genunames.awk TestData utf8lookup CREDITS
+
+
+
+
+
+
+
+
+
+

uniutils-2.25/Makefile.in

+# Makefile.in generated by automake 1.9.6 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005  Free Software Foundation, Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+
+
+
+srcdir = @srcdir@
+top_srcdir = @top_srcdir@
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+top_builddir = .
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+INSTALL = @INSTALL@
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+bin_PROGRAMS = unidesc$(EXEEXT) uniname$(EXEEXT) unihist$(EXEEXT) \
+	ExplicateUTF8$(EXEEXT) unirev$(EXEEXT)
+subdir = .
+DIST_COMMON = README $(am__configure_deps) $(dist_man_MANS) \
+	$(noinst_HEADERS) $(srcdir)/Makefile.am $(srcdir)/Makefile.in \
+	$(srcdir)/config.h.in $(top_srcdir)/configure AUTHORS COPYING \
+	ChangeLog INSTALL NEWS TODO depcomp install-sh missing \
+	mkinstalldirs
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+	$(ACLOCAL_M4)
+am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \
+ configure.lineno configure.status.lineno
+mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+CONFIG_HEADER = config.h
+CONFIG_CLEAN_FILES =
+am__installdirs = "$(DESTDIR)$(bindir)" "$(DESTDIR)$(bindir)" \
+	"$(DESTDIR)$(man1dir)"
+binPROGRAMS_INSTALL = $(INSTALL_PROGRAM)
+PROGRAMS = $(bin_PROGRAMS)
+am_ExplicateUTF8_OBJECTS = ExplicateUTF8.$(OBJEXT) binfmt.$(OBJEXT)
+ExplicateUTF8_OBJECTS = $(am_ExplicateUTF8_OBJECTS)
+ExplicateUTF8_LDADD = $(LDADD)
+am_unidesc_OBJECTS = Get_UTF32_From_UTF8i.$(OBJEXT) unidesc.$(OBJEXT) \
+	Get_UTF32i.$(OBJEXT) Read_UMagic_Number.$(OBJEXT) \
+	unirange.$(OBJEXT) ExplicateBadUTF8.$(OBJEXT) binfmt.$(OBJEXT)
+unidesc_OBJECTS = $(am_unidesc_OBJECTS)
+unidesc_LDADD = $(LDADD)
+am_unihist_OBJECTS = unihist.$(OBJEXT) Get_UTF32_From_UTF8i.$(OBJEXT) \
+	putu8.$(OBJEXT) ExplicateBadUTF8.$(OBJEXT) binfmt.$(OBJEXT)
+unihist_OBJECTS = $(am_unihist_OBJECTS)
+unihist_LDADD = $(LDADD)
+am_uniname_OBJECTS = uniname.$(OBJEXT) Get_UTF32_From_UTF8i.$(OBJEXT) \
+	Get_UTF32i.$(OBJEXT) unames.$(OBJEXT) unirange.$(OBJEXT) \
+	offsettbl.$(OBJEXT) NelsonTbl.$(OBJEXT) putu8.$(OBJEXT) \
+	ExplicateBadUTF8.$(OBJEXT) binfmt.$(OBJEXT)
+uniname_OBJECTS = $(am_uniname_OBJECTS)
+uniname_LDADD = $(LDADD)
+am_unirev_OBJECTS = unirev.$(OBJEXT)
+unirev_OBJECTS = $(am_unirev_OBJECTS)
+unirev_LDADD = $(LDADD)
+binSCRIPT_INSTALL = $(INSTALL_SCRIPT)
+SCRIPTS = $(bin_SCRIPTS)
+DEFAULT_INCLUDES = -I. -I$(srcdir) -I.
+depcomp = $(SHELL) $(top_srcdir)/depcomp
+am__depfiles_maybe = depfiles
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+	$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+CCLD = $(CC)
+LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+SOURCES = $(ExplicateUTF8_SOURCES) $(unidesc_SOURCES) \
+	$(unihist_SOURCES) $(uniname_SOURCES) $(unirev_SOURCES)
+DIST_SOURCES = $(ExplicateUTF8_SOURCES) $(unidesc_SOURCES) \
+	$(unihist_SOURCES) $(uniname_SOURCES) $(unirev_SOURCES)
+man1dir = $(mandir)/man1
+NROFF = nroff
+MANS = $(dist_man_MANS)
+HEADERS = $(noinst_HEADERS)
+ETAGS = etags
+CTAGS = ctags
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+distdir = $(PACKAGE)-$(VERSION)
+top_distdir = $(distdir)
+am__remove_distdir = \
+  { test ! -d $(distdir) \
+    || { find $(distdir) -type d ! -perm -200 -exec chmod u+w {} ';' \
+         && rm -fr $(distdir); }; }
+DIST_ARCHIVES = $(distdir).tar.gz $(distdir).tar.bz2 $(distdir).zip
+GZIP_ENV = --best
+distuninstallcheck_listfiles = find . -type f -print
+distcleancheck_listfiles = find . -type f -print
+ACLOCAL = @ACLOCAL@
+AMDEP_FALSE = @AMDEP_FALSE@
+AMDEP_TRUE = @AMDEP_TRUE@
+AMTAR = @AMTAR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LDFLAGS = @LDFLAGS@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LTLIBOBJS = @LTLIBOBJS@
+MAKEINFO = @MAKEINFO@
+OBJEXT = @OBJEXT@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+VERSION = @VERSION@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_STRIP = @ac_ct_STRIP@
+am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
+am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build_alias = @build_alias@
+datadir = @datadir@
+exec_prefix = @exec_prefix@
+host_alias = @host_alias@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+bin_SCRIPTS = utf8lookup
+dist_man_MANS = unidesc.1 uniname.1 ExplicateUTF8.1 unihist.1 unirev.1
+unidesc_SOURCES = Get_UTF32_From_UTF8i.c unidesc.c Get_UTF32i.c Read_UMagic_Number.c unirange.c ExplicateBadUTF8.c binfmt.c
+uniname_SOURCES = uniname.c Get_UTF32_From_UTF8i.c Get_UTF32i.c unames.c unirange.c offsettbl.c NelsonTbl.c putu8.c ExplicateBadUTF8.c binfmt.c
+unihist_SOURCES = unihist.c Get_UTF32_From_UTF8i.c  putu8.c ExplicateBadUTF8.c binfmt.c
+ExplicateUTF8_SOURCES = ExplicateUTF8.c binfmt.c
+unirev_SOURCES = unirev.c
+noinst_HEADERS = nelson.h  offsettbl.h  unicode.h  uniftypes.h  unirange.h  utf8error.h
+LOCALEDIR = /usr/local/share/locale
+AM_CFLAGS = -DLOCALEDIR=\"${LOCALEDIR}\"
+AUTOMAKE_OPTIONS = dist-zip dist-bzip2
+EXTRA_DIST = genunames.awk TestData utf8lookup CREDITS
+all: config.h
+	$(MAKE) $(AM_MAKEFLAGS) all-am
+
+.SUFFIXES:
+.SUFFIXES: .c .o .obj
+am--refresh:
+	@:
+$(srcdir)/Makefile.in:  $(srcdir)/Makefile.am  $(am__configure_deps)
+	@for dep in $?; do \
+	  case '$(am__configure_deps)' in \
+	    *$$dep*) \
+	      echo ' cd $(srcdir) && $(AUTOMAKE) --gnu '; \
+	      cd $(srcdir) && $(AUTOMAKE) --gnu  \
+		&& exit 0; \
+	      exit 1;; \
+	  esac; \
+	done; \
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu  Makefile'; \
+	cd $(top_srcdir) && \
+	  $(AUTOMAKE) --gnu  Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+	@case '$?' in \
+	  *config.status*) \
+	    echo ' $(SHELL) ./config.status'; \
+	    $(SHELL) ./config.status;; \
+	  *) \
+	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)'; \
+	    cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe);; \
+	esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+	$(SHELL) ./config.status --recheck
+
+$(top_srcdir)/configure:  $(am__configure_deps)
+	cd $(srcdir) && $(AUTOCONF)
+$(ACLOCAL_M4):  $(am__aclocal_m4_deps)
+	cd $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS)
+
+config.h: stamp-h1
+	@if test ! -f $@; then \
+	  rm -f stamp-h1; \
+	  $(MAKE) stamp-h1; \
+	else :; fi
+
+stamp-h1: $(srcdir)/config.h.in $(top_builddir)/config.status
+	@rm -f stamp-h1
+	cd $(top_builddir) && $(SHELL) ./config.status config.h
+$(srcdir)/config.h.in:  $(am__configure_deps) 
+	cd $(top_srcdir) && $(AUTOHEADER)
+	rm -f stamp-h1
+	touch $@
+
+distclean-hdr:
+	-rm -f config.h stamp-h1
+install-binPROGRAMS: $(bin_PROGRAMS)
+	@$(NORMAL_INSTALL)
+	test -z "$(bindir)" || $(mkdir_p) "$(DESTDIR)$(bindir)"
+	@list='$(bin_PROGRAMS)'; for p in $$list; do \
+	  p1=`echo $$p|sed 's/$(EXEEXT)$$//'`; \
+	  if test -f $$p \
+	  ; then \
+	    f=`echo "$$p1" | sed 's,^.*/,,;$(transform);s/$$/$(EXEEXT)/'`; \
+	   echo " $(INSTALL_PROGRAM_ENV) $(binPROGRAMS_INSTALL) '$$p' '$(DESTDIR)$(bindir)/$$f'"; \
+	   $(INSTALL_PROGRAM_ENV) $(binPROGRAMS_INSTALL) "$$p" "$(DESTDIR)$(bindir)/$$f" || exit 1; \
+	  else :; fi; \
+	done
+
+uninstall-binPROGRAMS:
+	@$(NORMAL_UNINSTALL)
+	@list='$(bin_PROGRAMS)'; for p in $$list; do \
+	  f=`echo "$$p" | sed 's,^.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/'`; \
+	  echo " rm -f '$(DESTDIR)$(bindir)/$$f'"; \
+	  rm -f "$(DESTDIR)$(bindir)/$$f"; \
+	done
+
+clean-binPROGRAMS:
+	-test -z "$(bin_PROGRAMS)" || rm -f $(bin_PROGRAMS)
+ExplicateUTF8$(EXEEXT): $(ExplicateUTF8_OBJECTS) $(ExplicateUTF8_DEPENDENCIES) 
+	@rm -f ExplicateUTF8$(EXEEXT)
+	$(LINK) $(ExplicateUTF8_LDFLAGS) $(ExplicateUTF8_OBJECTS) $(ExplicateUTF8_LDADD) $(LIBS)
+unidesc$(EXEEXT): $(unidesc_OBJECTS) $(unidesc_DEPENDENCIES) 
+	@rm -f unidesc$(EXEEXT)
+	$(LINK) $(unidesc_LDFLAGS) $(unidesc_OBJECTS) $(unidesc_LDADD) $(LIBS)
+unihist$(EXEEXT): $(unihist_OBJECTS) $(unihist_DEPENDENCIES) 
+	@rm -f unihist$(EXEEXT)
+	$(LINK) $(unihist_LDFLAGS) $(unihist_OBJECTS) $(unihist_LDADD) $(LIBS)
+uniname$(EXEEXT): $(uniname_OBJECTS) $(uniname_DEPENDENCIES) 
+	@rm -f uniname$(EXEEXT)
+	$(LINK) $(uniname_LDFLAGS) $(uniname_OBJECTS) $(uniname_LDADD) $(LIBS)
+unirev$(EXEEXT): $(unirev_OBJECTS) $(unirev_DEPENDENCIES) 
+	@rm -f unirev$(EXEEXT)
+	$(LINK) $(unirev_LDFLAGS) $(unirev_OBJECTS) $(unirev_LDADD) $(LIBS)
+install-binSCRIPTS: $(bin_SCRIPTS)
+	@$(NORMAL_INSTALL)
+	test -z "$(bindir)" || $(mkdir_p) "$(DESTDIR)$(bindir)"
+	@list='$(bin_SCRIPTS)'; for p in $$list; do \
+	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+	  if test -f $$d$$p; then \
+	    f=`echo "$$p" | sed 's|^.*/||;$(transform)'`; \
+	    echo " $(binSCRIPT_INSTALL) '$$d$$p' '$(DESTDIR)$(bindir)/$$f'"; \
+	    $(binSCRIPT_INSTALL) "$$d$$p" "$(DESTDIR)$(bindir)/$$f"; \
+	  else :; fi; \
+	done
+
+uninstall-binSCRIPTS:
+	@$(NORMAL_UNINSTALL)
+	@list='$(bin_SCRIPTS)'; for p in $$list; do \
+	  f=`echo "$$p" | sed 's|^.*/||;$(transform)'`; \
+	  echo " rm -f '$(DESTDIR)$(bindir)/$$f'"; \
+	  rm -f "$(DESTDIR)$(bindir)/$$f"; \
+	done
+
+mostlyclean-compile:
+	-rm -f *.$(OBJEXT)
+
+distclean-compile:
+	-rm -f *.tab.c
+
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ExplicateBadUTF8.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ExplicateUTF8.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Get_UTF32_From_UTF8i.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Get_UTF32i.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/NelsonTbl.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Read_UMagic_Number.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/binfmt.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/offsettbl.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/putu8.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/unames.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/unidesc.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/unihist.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/uniname.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/unirange.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/unirev.Po@am__quote@
+
+.c.o:
+@am__fastdepCC_TRUE@	if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \
+@am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(COMPILE) -c $<
+
+.c.obj:
+@am__fastdepCC_TRUE@	if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ `$(CYGPATH_W) '$<'`; \
+@am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(COMPILE) -c `$(CYGPATH_W) '$<'`
+uninstall-info-am:
+install-man1: $(man1_MANS) $(man_MANS)
+	@$(NORMAL_INSTALL)
+	test -z "$(man1dir)" || $(mkdir_p) "$(DESTDIR)$(man1dir)"
+	@list='$(man1_MANS) $(dist_man1_MANS) $(nodist_man1_MANS)'; \
+	l2='$(man_MANS) $(dist_man_MANS) $(nodist_man_MANS)'; \
+	for i in $$l2; do \
+	  case "$$i" in \
+	    *.1*) list="$$list $$i" ;; \
+	  esac; \
+	done; \
+	for i in $$list; do \
+	  if test -f $(srcdir)/$$i; then file=$(srcdir)/$$i; \
+	  else file=$$i; fi; \
+	  ext=`echo $$i | sed -e 's/^.*\\.//'`; \
+	  case "$$ext" in \
+	    1*) ;; \
+	    *) ext='1' ;; \
+	  esac; \
+	  inst=`echo $$i | sed -e 's/\\.[0-9a-z]*$$//'`; \
+	  inst=`echo $$inst | sed -e 's/^.*\///'`; \
+	  inst=`echo $$inst | sed '$(transform)'`.$$ext; \
+	  echo " $(INSTALL_DATA) '$$file' '$(DESTDIR)$(man1dir)/$$inst'"; \
+	  $(INSTALL_DATA) "$$file" "$(DESTDIR)$(man1dir)/$$inst"; \
+	done
+uninstall-man1:
+	@$(NORMAL_UNINSTALL)
+	@list='$(man1_MANS) $(dist_man1_MANS) $(nodist_man1_MANS)'; \
+	l2='$(man_MANS) $(dist_man_MANS) $(nodist_man_MANS)'; \
+	for i in $$l2; do \
+	  case "$$i" in \
+	    *.1*) list="$$list $$i" ;; \
+	  esac; \
+	done; \
+	for i in $$list; do \
+	  ext=`echo $$i | sed -e 's/^.*\\.//'`; \
+	  case "$$ext" in \
+	    1*) ;; \
+	    *) ext='1' ;; \
+	  esac; \
+	  inst=`echo $$i | sed -e 's/\\.[0-9a-z]*$$//'`; \
+	  inst=`echo $$inst | sed -e 's/^.*\///'`; \
+	  inst=`echo $$inst | sed '$(transform)'`.$$ext; \
+	  echo " rm -f '$(DESTDIR)$(man1dir)/$$inst'"; \
+	  rm -f "$(DESTDIR)$(man1dir)/$$inst"; \
+	done
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+	list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+	unique=`for i in $$list; do \
+	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+	  done | \
+	  $(AWK) '    { files[$$0] = 1; } \
+	       END { for (i in files) print i; }'`; \
+	mkid -fID $$unique
+tags: TAGS
+
+TAGS:  $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \
+		$(TAGS_FILES) $(LISP)
+	tags=; \
+	here=`pwd`; \
+	list='$(SOURCES) $(HEADERS) config.h.in $(LISP) $(TAGS_FILES)'; \
+	unique=`for i in $$list; do \
+	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+	  done | \
+	  $(AWK) '    { files[$$0] = 1; } \
+	       END { for (i in files) print i; }'`; \
+	if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
+	  test -n "$$unique" || unique=$$empty_fix; \
+	  $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	    $$tags $$unique; \
+	fi
+ctags: CTAGS
+CTAGS:  $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \
+		$(TAGS_FILES) $(LISP)
+	tags=; \
+	here=`pwd`; \
+	list='$(SOURCES) $(HEADERS) config.h.in $(LISP) $(TAGS_FILES)'; \
+	unique=`for i in $$list; do \
+	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+	  done | \
+	  $(AWK) '    { files[$$0] = 1; } \
+	       END { for (i in files) print i; }'`; \
+	test -z "$(CTAGS_ARGS)$$tags$$unique" \
+	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+	     $$tags $$unique
+
+GTAGS:
+	here=`$(am__cd) $(top_builddir) && pwd` \
+	  && cd $(top_srcdir) \
+	  && gtags -i $(GTAGS_ARGS) $$here
+
+distclean-tags:
+	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+distdir: $(DISTFILES)
+	$(am__remove_distdir)
+	mkdir $(distdir)
+	@srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
+	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
+	list='$(DISTFILES)'; for file in $$list; do \
+	  case $$file in \
+	    $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
+	    $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
+	  esac; \
+	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+	  dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
+	  if test "$$dir" != "$$file" && test "$$dir" != "."; then \
+	    dir="/$$dir"; \
+	    $(mkdir_p) "$(distdir)$$dir"; \
+	  else \
+	    dir=''; \
+	  fi; \
+	  if test -d $$d/$$file; then \
+	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+	      cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+	    fi; \
+	    cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+	  else \
+	    test -f $(distdir)/$$file \
+	    || cp -p $$d/$$file $(distdir)/$$file \
+	    || exit 1; \
+	  fi; \
+	done
+	-find $(distdir) -type d ! -perm -777 -exec chmod a+rwx {} \; -o \
+	  ! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \
+	  ! -type d ! -perm -400 -exec chmod a+r {} \; -o \
+	  ! -type d ! -perm -444 -exec $(SHELL) $(install_sh) -c -m a+r {} {} \; \
+	|| chmod -R a+r $(distdir)
+dist-gzip: distdir
+	tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz
+	$(am__remove_distdir)
+dist-bzip2: distdir
+	tardir=$(distdir) && $(am__tar) | bzip2 -9 -c >$(distdir).tar.bz2
+	$(am__remove_distdir)
+
+dist-tarZ: distdir
+	tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z
+	$(am__remove_distdir)
+
+dist-shar: distdir
+	shar $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).shar.gz
+	$(am__remove_distdir)
+dist-zip: distdir
+	-rm -f $(distdir).zip
+	zip -rq $(distdir).zip $(distdir)
+	$(am__remove_distdir)
+
+dist dist-all: distdir
+	tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz
+	tardir=$(distdir) && $(am__tar) | bzip2 -9 -c >$(distdir).tar.bz2
+	-rm -f $(distdir).zip
+	zip -rq $(distdir).zip $(distdir)
+	$(am__remove_distdir)
+
+# This target untars the dist file and tries a VPATH configuration.  Then
+# it guarantees that the distribution is self-contained by making another
+# tarfile.
+distcheck: dist
+	case '$(DIST_ARCHIVES)' in \
+	*.tar.gz*) \
+	  GZIP=$(GZIP_ENV) gunzip -c $(distdir).tar.gz | $(am__untar) ;;\
+	*.tar.bz2*) \
+	  bunzip2 -c $(distdir).tar.bz2 | $(am__untar) ;;\
+	*.tar.Z*) \
+	  uncompress -c $(distdir).tar.Z | $(am__untar) ;;\
+	*.shar.gz*) \
+	  GZIP=$(GZIP_ENV) gunzip -c $(distdir).shar.gz | unshar ;;\
+	*.zip*) \
+	  unzip $(distdir).zip ;;\
+	esac
+	chmod -R a-w $(distdir); chmod a+w $(distdir)
+	mkdir $(distdir)/_build
+	mkdir $(distdir)/_inst
+	chmod a-w $(distdir)
+	dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \
+	  && dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \
+	  && cd $(distdir)/_build \
+	  && ../configure --srcdir=.. --prefix="$$dc_install_base" \
+	    $(DISTCHECK_CONFIGURE_FLAGS) \
+	  && $(MAKE) $(AM_MAKEFLAGS) \
+	  && $(MAKE) $(AM_MAKEFLAGS) dvi \
+	  && $(MAKE) $(AM_MAKEFLAGS) check \
+	  && $(MAKE) $(AM_MAKEFLAGS) install \
+	  && $(MAKE) $(AM_MAKEFLAGS) installcheck \
+	  && $(MAKE) $(AM_MAKEFLAGS) uninstall \
+	  && $(MAKE) $(AM_MAKEFLAGS) distuninstallcheck_dir="$$dc_install_base" \
+	        distuninstallcheck \
+	  && chmod -R a-w "$$dc_install_base" \
+	  && ({ \
+	       (cd ../.. && umask 077 && mkdir "$$dc_destdir") \
+	       && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" install \
+	       && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" uninstall \
+	       && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" \
+	            distuninstallcheck_dir="$$dc_destdir" distuninstallcheck; \
+	      } || { rm -rf "$$dc_destdir"; exit 1; }) \
+	  && rm -rf "$$dc_destdir" \
+	  && $(MAKE) $(AM_MAKEFLAGS) dist \
+	  && rm -rf $(DIST_ARCHIVES) \
+	  && $(MAKE) $(AM_MAKEFLAGS) distcleancheck
+	$(am__remove_distdir)
+	@(echo "$(distdir) archives ready for distribution: "; \
+	  list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \
+	  sed -e '1{h;s/./=/g;p;x;}' -e '$${p;x;}'
+distuninstallcheck:
+	@cd $(distuninstallcheck_dir) \
+	&& test `$(distuninstallcheck_listfiles) | wc -l` -le 1 \
+	   || { echo "ERROR: files left after uninstall:" ; \
+	        if test -n "$(DESTDIR)"; then \
+	          echo "  (check DESTDIR support)"; \
+	        fi ; \
+	        $(distuninstallcheck_listfiles) ; \
+	        exit 1; } >&2
+distcleancheck: distclean
+	@if test '$(srcdir)' = . ; then \
+	  echo "ERROR: distcleancheck can only run from a VPATH build" ; \
+	  exit 1 ; \
+	fi
+	@test `$(distcleancheck_listfiles) | wc -l` -eq 0 \
+	  || { echo "ERROR: files left in build directory after distclean:" ; \
+	       $(distcleancheck_listfiles) ; \
+	       exit 1; } >&2
+check-am: all-am
+check: check-am
+all-am: Makefile $(PROGRAMS) $(SCRIPTS) $(MANS) $(HEADERS) config.h
+installdirs:
+	for dir in "$(DESTDIR)$(bindir)" "$(DESTDIR)$(bindir)" "$(DESTDIR)$(man1dir)"; do \
+	  test -z "$$dir" || $(mkdir_p) "$$dir"; \
+	done
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	  `test -z '$(STRIP)' || \
+	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+
+maintainer-clean-generic:
+	@echo "This command is intended for maintainers to use"
+	@echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-binPROGRAMS clean-generic mostlyclean-am
+
+distclean: distclean-am
+	-rm -f $(am__CONFIG_DISTCLEAN_FILES)
+	-rm -rf ./$(DEPDIR)
+	-rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+	distclean-hdr distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+info: info-am
+
+info-am:
+
+install-data-am: install-man
+
+install-exec-am: install-binPROGRAMS install-binSCRIPTS
+
+install-info: install-info-am
+
+install-man: install-man1
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+	-rm -f $(am__CONFIG_DISTCLEAN_FILES)
+	-rm -rf $(top_srcdir)/autom4te.cache
+	-rm -rf ./$(DEPDIR)
+	-rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am: uninstall-binPROGRAMS uninstall-binSCRIPTS \
+	uninstall-info-am uninstall-man
+
+uninstall-man: uninstall-man1
+
+.PHONY: CTAGS GTAGS all all-am am--refresh check check-am clean \
+	clean-binPROGRAMS clean-generic ctags dist dist-all dist-bzip2 \
+	dist-gzip dist-shar dist-tarZ dist-zip distcheck distclean \
+	distclean-compile distclean-generic distclean-hdr \
+	distclean-tags distcleancheck distdir distuninstallcheck dvi \
+	dvi-am html html-am info info-am install install-am \
+	install-binPROGRAMS install-binSCRIPTS install-data \
+	install-data-am install-exec install-exec-am install-info \
+	install-info-am install-man install-man1 install-strip \
+	installcheck installcheck-am installdirs maintainer-clean \
+	maintainer-clean-generic mostlyclean mostlyclean-compile \
+	mostlyclean-generic pdf pdf-am ps ps-am tags uninstall \
+	uninstall-am uninstall-binPROGRAMS uninstall-binSCRIPTS \
+	uninstall-info-am uninstall-man uninstall-man1
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:

uniutils-2.25/NEWS

+Version 2.25 adds to unidesc the option -r which causes it to list the ranges
+detected after reading all input rather than listing them as they are encountered,
+and adds to uniname the option -B which causes it to ignore characters
+within the Basic Multilingual Plane.
+
+Version 2.24 adds the utility unirev, which reverses its input. 
+
+Version 2.22 adds the command line option -A, which causes ASCII whitespace to be skipped.
+
+Version 2.20 fixes bugs in unidesc and unihist and adds to uniname the
+option of skipping ASCII characters.
+
+Version 2.19 has been updated to Unicode 5.0.
+
+Version 2.18 fixes a bug in which a read interrupted in the midst of
+a UTF-8 sequence was incorrectly treated as a truncated sequence.
+

uniutils-2.25/NelsonTbl.c

+/*
+ * This table maps Unicode codepoints to entries in Nelson
+ * Note that there may be multiple entries in Nelson for a single
+ * Unicode codepoint.
+ */
+
+#include "unicode.h"
+#include "nelson.h"
+
+struct unmap NelsonTbl[]={
+0x3402,265,
+0x3427,127,
+0x34E4,677,
+0x353A,84,
+0x374D,1278,
+0x37AE,1408,
+0x3800,5343,
+0x384C,1476,
+0x3861,1487,
+0x3861,1491,
+0x39AE,133,
+0x3C16,2399,
+0x3C7E,2453,
+0x3C83,2459,
+0x3E03,2809,
+0x4096,28,
+0x432B,3629,
+0x43EE,3756,
+0x459F,300,
+0x4610,4208,
+0x4757,4477,
+0x4831,4600,
+0x4E00,1,
+0x4E01,2,
+0x4E03,261,
+0x4E07,3984,
+0x4E07,7,
+0x4E08,151,
+0x4E09,8,
+0x4E0A,798,
+0x4E0B,9,
+0x4E0D,17,
+0x4E0E,6,
+0x4E10,11,
+0x4E11,13,
+0x4E12,13,
+0x4E14,23,
+0x4E16,84,
+0x4E16,95,
+0x4E17,83,
+0x4E18,174,
+0x4E19,22,
+0x4E1A,20,
+0x4E1E,21,
+0x4E21,34,
+0x4E21,47,
+0x4E26,589,
+0x4E2A,340,
+0x4E2A,147,
+0x4E2B,76,
+0x4E2D,81,
+0x4E30,77,
+0x4E32,104,
+0x4E38,155,
+0x4E39,163,
+0x4E3B,285,
+0x4E3C,171,
+0x4E43,145,
+0x4E44,126,
+0x4E45,153,
+0x4E4B,280,
+0x4E4D,172,
+0x4E4E,170,
+0x4E4F,150,
+0x4E56,206,
+0x4E57,223,
+0x4E57,225,
+0x4E58,225,
+0x4E59,260,
+0x4E5D,146,
+0x4E5E,262,
+0x4E5F,75,