diff options
author | Karl Berry <karl@freefriends.org> | 2012-04-09 23:21:16 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2012-04-09 23:21:16 +0000 |
commit | 56c04f62eb3dd8c2c02959b67dd2d371d549521e (patch) | |
tree | 4fa217a02288c97f62c718ec10b0b907a30bbd82 /Build/source/utils | |
parent | d11263510f8254494eac555c9a8af2fd7dee02da (diff) |
original chktex-1.6.6 from CTAN and http://download.savannah.gnu.org/releases/chktex/
git-svn-id: svn://tug.org/texlive/trunk@25901 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Build/source/utils')
40 files changed, 15360 insertions, 260 deletions
diff --git a/Build/source/utils/chktex/ChkTeX.pdf b/Build/source/utils/chktex/ChkTeX.pdf Binary files differdeleted file mode 100644 index a9cfb22f813..00000000000 --- a/Build/source/utils/chktex/ChkTeX.pdf +++ /dev/null diff --git a/Build/source/utils/chktex/chktex-1.6.6/COPYING b/Build/source/utils/chktex/chktex-1.6.6/COPYING new file mode 100644 index 00000000000..d4e8cec1128 --- /dev/null +++ b/Build/source/utils/chktex/chktex-1.6.6/COPYING @@ -0,0 +1,357 @@ + 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + + The GNU General Public License version 2 is included below for your reference. + +------------------------------------------------------------------------ + GNU GENERAL PUBLIC LICENSE + Version 2, June 1991 + + Copyright (C) 1989, 1991 Free Software Foundation, Inc. + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +License is intended to guarantee your freedom to share and change free +software--to make sure the software is free for all its users. This +General Public License applies to most of the Free Software +Foundation's software and to any other program whose authors commit to +using it. (Some other Free Software Foundation software is covered by +the GNU Library General Public License instead.) You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +this service if you wish), that you receive source code or can get it +if you want it, that you can change the software or use pieces of it +in new free programs; and that you know you can do these things. + + To protect your rights, we need to make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if you +distribute copies of the software, or if you modify it. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must give the recipients all the rights that +you have. You must make sure that they, too, receive or can get the +source code. And you must show them these terms so they know their +rights. + + We protect your rights with two steps: (1) copyright the software, and +(2) offer you this license which gives you legal permission to copy, +distribute and/or modify the software. + + Also, for each author's protection and ours, we want to make certain +that everyone understands that there is no warranty for this free +software. If the software is modified by someone else and passed on, we +want its recipients to know that what they have is not the original, so +that any problems introduced by others will not reflect on the original +authors' reputations. + + Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that redistributors of a free +program will individually obtain patent licenses, in effect making the +program proprietary. To prevent this, we have made it clear that any +patent must be licensed for everyone's free use or not licensed at all. + + The precise terms and conditions for copying, distribution and +modification follow. + + GNU GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License applies to any program or other work which contains +a notice placed by the copyright holder saying it may be distributed +under the terms of this General Public License. The "Program", below, +refers to any such program or work, and a "work based on the Program" +means either the Program or any derivative work under copyright law: +that is to say, a work containing the Program or a portion of it, +either verbatim or with modifications and/or translated into another +language. (Hereinafter, translation is included without limitation in +the term "modification".) Each licensee is addressed as "you". + +Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running the Program is not restricted, and the output from the Program +is covered only if its contents constitute a work based on the +Program (independent of having been made by running the Program). +Whether that is true depends on what the Program does. + + 1. You may copy and distribute verbatim copies of the Program's +source code as you receive it, in any medium, provided that you +conspicuously and appropriately publish on each copy an appropriate +copyright notice and disclaimer of warranty; keep intact all the +notices that refer to this License and to the absence of any warranty; +and give any other recipients of the Program a copy of this License +along with the Program. + +You may charge a fee for the physical act of transferring a copy, and +you may at your option offer warranty protection in exchange for a fee. + + 2. You may modify your copy or copies of the Program or any portion +of it, thus forming a work based on the Program, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) You must cause the modified files to carry prominent notices + stating that you changed the files and the date of any change. + + b) You must cause any work that you distribute or publish, that in + whole or in part contains or is derived from the Program or any + part thereof, to be licensed as a whole at no charge to all third + parties under the terms of this License. + + c) If the modified program normally reads commands interactively + when run, you must cause it, when started running for such + interactive use in the most ordinary way, to print or display an + announcement including an appropriate copyright notice and a + notice that there is no warranty (or else, saying that you provide + a warranty) and that users may redistribute the program under + these conditions, and telling the user how to view a copy of this + License. (Exception: if the Program itself is interactive but + does not normally print such an announcement, your work based on + the Program is not required to print an announcement.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Program, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Program, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Program. + +In addition, mere aggregation of another work not based on the Program +with the Program (or with a work based on the Program) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may copy and distribute the Program (or a work based on it, +under Section 2) in object code or executable form under the terms of +Sections 1 and 2 above provided that you also do one of the following: + + a) Accompany it with the complete corresponding machine-readable + source code, which must be distributed under the terms of Sections + 1 and 2 above on a medium customarily used for software interchange; or, + + b) Accompany it with a written offer, valid for at least three + years, to give any third party, for a charge no more than your + cost of physically performing source distribution, a complete + machine-readable copy of the corresponding source code, to be + distributed under the terms of Sections 1 and 2 above on a medium + customarily used for software interchange; or, + + c) Accompany it with the information you received as to the offer + to distribute corresponding source code. (This alternative is + allowed only for noncommercial distribution and only if you + received the program in object code or executable form with such + an offer, in accord with Subsection b above.) + +The source code for a work means the preferred form of the work for +making modifications to it. For an executable work, complete source +code means all the source code for all modules it contains, plus any +associated interface definition files, plus the scripts used to +control compilation and installation of the executable. However, as a +special exception, the source code distributed need not include +anything that is normally distributed (in either source or binary +form) with the major components (compiler, kernel, and so on) of the +operating system on which the executable runs, unless that component +itself accompanies the executable. + +If distribution of executable or object code is made by offering +access to copy from a designated place, then offering equivalent +access to copy the source code from the same place counts as +distribution of the source code, even though third parties are not +compelled to copy the source along with the object code. + + 4. You may not copy, modify, sublicense, or distribute the Program +except as expressly provided under this License. Any attempt +otherwise to copy, modify, sublicense or distribute the Program is +void, and will automatically terminate your rights under this License. +However, parties who have received copies, or rights, from you under +this License will not have their licenses terminated so long as such +parties remain in full compliance. + + 5. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Program or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Program (or any work based on the +Program), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Program or works based on it. + + 6. Each time you redistribute the Program (or any work based on the +Program), the recipient automatically receives a license from the +original licensor to copy, distribute or modify the Program subject to +these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License. + + 7. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Program at all. For example, if a patent +license would not permit royalty-free redistribution of the Program by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Program. + +If any portion of this section is held invalid or unenforceable under +any particular circumstance, the balance of the section is intended to +apply and the section as a whole is intended to apply in other +circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system, which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 8. If the distribution and/or use of the Program is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Program under this License +may add an explicit geographical distribution limitation excluding +those countries, so that distribution is permitted only in or among +countries not thus excluded. In such case, this License incorporates +the limitation as if written in the body of this License. + + 9. The Free Software Foundation may publish revised and/or new versions +of the General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + +Each version is given a distinguishing version number. If the Program +specifies a version number of this License which applies to it and "any +later version", you have the option of following the terms and conditions +either of that version or of any later version published by the Free +Software Foundation. If the Program does not specify a version number of +this License, you may choose any version ever published by the Free Software +Foundation. + + 10. If you wish to incorporate parts of the Program into other free +programs whose distribution conditions are different, write to the author +to ask for permission. For software which is copyrighted by the Free +Software Foundation, write to the Free Software Foundation; we sometimes +make exceptions for this. Our decision will be guided by the two goals +of preserving the free status of all derivatives of our free software and +of promoting the sharing and reuse of software generally. + + NO WARRANTY + + 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY +FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN +OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES +PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED +OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS +TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE +PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, +REPAIR OR CORRECTION. + + 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, +INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING +OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED +TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY +YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER +PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE +POSSIBILITY OF SUCH DAMAGES. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + <one line to give the program's name and a brief idea of what it does.> + Copyright (C) 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, + 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. diff --git a/Build/source/utils/chktex/chktex-1.6.6/ChkTeX.c b/Build/source/utils/chktex/chktex-1.6.6/ChkTeX.c new file mode 100644 index 00000000000..b77904bbf76 --- /dev/null +++ b/Build/source/utils/chktex/chktex-1.6.6/ChkTeX.c @@ -0,0 +1,1035 @@ +/* + * ChkTeX, finds typographic errors in (La)TeX files. + * Copyright (C) 1995-96 Jens T. Berger Thielemann + * + * 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + * Contact the author at: + * Jens Berger + * Spektrumvn. 4 + * N-0666 Oslo + * Norway + * E-mail: <jensthi@ifi.uio.no> + * + * + */ + + +#include "getopt.h" +#include "ChkTeX.h" +#include "OpSys.h" +#include "Utility.h" +#include "FindErrs.h" +#include "Resource.h" +#include <string.h> + +#undef MSG +#define MSG(num, type, inuse, ctxt, text) {num, type, inuse, ctxt, text}, + +struct ErrMsg PrgMsgs[pmMaxFault + 1] = { + PRGMSGS {pmMaxFault, etErr, TRUE, 0, INTERNFAULT} +}; + +struct Stack CharStack = { + 0L +}, InputStack = + +{ +0L}, EnvStack = + +{ +0L}; + +/************************************************************************/ + +const char BrOrder[NUMBRACKETS + 1] = "()[]{}"; + +unsigned long Brackets[NUMBRACKETS]; + +/************************************************************************/ + + +/* + * Have to do things this way, to ease some checking throughout the + * program. + */ + + +NEWBUF(TmpBuffer, BUFSIZ); +NEWBUF(ReadBuffer, BUFSIZ); + +static const char *Banner = + "ChkTeX v" PACKAGE_VERSION " - Copyright 1995-96 Jens T. Berger Thielemann.\n" +#ifdef __OS2__ + "OS/2 port generated with emx compiler, by Wolfgang Fritsch, <fritsch@hmi.de>" +#elif defined(__MSDOS__) + "MS-DOS port by Bj\\o rn Ove Thue, <bjort@ifi.uio.no>" +#endif + "\n"; + +static const char *BigBanner = + "ChkTeX comes with ABSOLUTELY NO WARRANTY; details on this and\n" + "distribution conditions in the GNU General Public License file.\n" + "Type \"ChkTeX -h\" for help, \"ChkTeX -i\" for distribution info.\n" + "Author: Jens Berger, Spektrumvn. 4, N-0666 Oslo, Norway.\n" + "E-mail: <jensthi@ifi.uio.no>\n" + "Press " STDIN_BREAK " to terminate stdin input.\n"; + +static const char *Distrib = + "\n" + "This program is free software; you can redistribute it and/or modify\n" + "it under the terms of the GNU General Public License as published by\n" + "the Free Software Foundation; either version 2 of the License, or\n" + "(at your option) any later version.\n" + "\n" + "This program is distributed in the hope that it will be useful,\n" + "but WITHOUT ANY WARRANTY; without even the implied warranty of\n" + "MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n" + "GNU General Public License for more details.\n" + "\n" + "You should have received a copy of the GNU General Public License\n" + "along with this program; if not, write to the Free Software\n" + "Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n"; + +static const char *OnText = "On"; + +static const char *OffText = "Off"; + +static const char *HowHelp = + "-h or --help gives usage information. See also ChkTeX.{ps,dvi}.\n"; + +static const char *HelpText = + "\n" + "\n" + " Usage of ChkTeX v" PACKAGE_VERSION "\n" + " ~~~~~~~~~~~~~~~~~~~~\n" + "\n" + " Template\n" + " ~~~~~~~~\n" + "chktex [-hiqrW] [-v[0-...]] [-l <rcfile>] [-[wemn] <[1-42]|all>]\n" + " [-d[0-...]] [-p <name>] [-o <outfile>] [-[btxgI][0|1]]\n" + " file1 file2 ...\n" + "\n" + "----------------------------------------------------------------------\n" + " Description of options:\n" + " ~~~~~~~~~~~~~~~~~~~~~~~\n" + "Misc. options\n" + "~~~~~~~~~~~~~\n" + " -h --help : This text.\n" + " -i --license : Show distribution information\n" + " -l --localrc : Read local .chktexrc formatted file.\n" + " -d --debug : Debug information. Give it a number.\n" + " -r --reset : Reset settings to default.\n" + "\n" + "Muting warning messages:\n" + "~~~~~~~~~~~~~~~~~~~~~~~~\n" + " -w --warnon : Makes msg # given a warning and turns it on.\n" + " -e --erroron : Makes msg # given an error and turns it on.\n" + " -m --msgon : Makes msg # given a message and turns it on.\n" + " -n --nowarn : Mutes msg # given.\n" + "\n" + "Output control flags:\n" + "~~~~~~~~~~~~~~~~~~~~~\n" + " -v --verbosity : How errors are displayed.\n" + " Default 1, 0=Less, 2=Fancy, 3=lacheck.\n" + " -V --pipeverb : How errors are displayed when stdout != tty.\n" + " Defaults to the same as -v.\n" + " -s --splitchar : String used to split fields when doing -v0\n" + " -o --output : Redirect error report to a file.\n" + " -q --quiet : Shuts up about version information.\n" + " -p --pseudoname: Input file-name when reporting.\n" + " -f --format : Format to use for output\n" + "\n" + "Boolean switches (1 -> enables / 0 -> disables):\n" + "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n" + " -b --backup : Backup output file.\n" + " -x --wipeverb : Ignore contents of `\\verb' commands.\n" + " -g --globalrc : Read global .chktexrc file.\n" + " -I --inputfiles: Execute \\input statements.\n" + " -H --headererr : Show errors found in front of \\begin{document}\n" + "\n" + "Miscellaneous switches:\n" + "~~~~~~~~~~~~~~~~~~~~~~~\n" + " -W --version : Version information\n" + "\n" + "----------------------------------------------------------------------\n" + "If no LaTeX files are specified on the command line, we will read from\n" + "stdin. For explanation of warning/error messages, please consult the\n" + "main document ChkTeX.dvi or ChkTeX.ps.\n"; + + + + +/* + * Options we will set. + * + */ + +enum Quote Quote; + +char VerbNormal[] = "%k %n in %f line %l: %m\n" "%r%s%t\n" "%u\n"; + +#define DEF(type, name, value) type name = value; +OPTION_DEFAULTS STATE_VARS; +#undef DEF +FILE *OutputFile = NULL; + +char *PrgName; + +int StdInTTY, StdOutTTY; + +/* + * End of config params. + */ + +static int ParseArgs(int argc, char **argv); +static void ShowIntStatus(void); +static int OpenOut(void); +static int ShiftArg(char **Argument); + + +/* + * Duplicates all arguments, and appends an asterix to each of them. + */ + +static void AddStars(struct WordList *wl) +{ + unsigned long Count, CmdLen; + char *Data; + + FORWL(Count, *wl) + { + Data = wl->Stack.Data[Count]; + CmdLen = strlen(Data); + if (Data[CmdLen - 1] != '*') + { + strcpy(TmpBuffer, Data); + strcat(TmpBuffer, "*"); + InsertWord(TmpBuffer, wl); + } + } +} + +/* + * Sets up all the lists. + * + */ + +static void SetupLists(void) +{ + unsigned long i; + + AddStars(&VerbEnvir); + AddStars(&MathEnvir); + + MakeLower(&UserWarnCase); + + ListRep(&WipeArg, ':', 0); + ListRep(&NoCharNext, ':', 0); + +#define ThisItem ((char *) AbbrevCase.Stack.Data[i]) + + FORWL(i, AbbrevCase) + { + if (isalpha((unsigned char)ThisItem[0])) + { + ThisItem[0] = toupper((unsigned char)ThisItem[0]); + InsertWord(ThisItem, &Abbrev); + ThisItem[0] = tolower((unsigned char)ThisItem[0]); + } + InsertWord(ThisItem, &Abbrev); + } +} + +#define NOCOMMON(a,b) NoCommon(&a,#a,&b,#b) + +/* + * Checks that two lists don't have any common element. + */ + +static void +NoCommon(struct WordList *a, const char *aName, + struct WordList *b, const char *bName) +{ + unsigned long i; + + FORWL(i, *a) + { + if (HasWord((char *) a->Stack.Data[i], b)) + PrintPrgErr(pmNoCommon, a->Stack.Data[i], aName, bName); + } +} + +/* + * Expands the tabs in a string to regular intervals sized + * TSize. + */ + +static void ExpandTabs(char *From, char *To, long TSize) +{ + char *Next; + char *Orig; + unsigned long Diff; + + Next = From; + Orig = To; + + while ((Next = strchr(From, '\t'))) + { + if ((Diff = Next - From)) + { + strncpy(To, From, Diff); + To += Diff; + Diff = TSize - ((To - Orig) % TSize); + } + else + Diff = TSize; + + memset(To, ' ', Diff); + To += Diff; + + From = ++Next; + } + strcpy(To, From); +} + + +int main(int argc, char **argv) +{ + int retval = EXIT_FAILURE, CurArg; + unsigned long Count; + int StdInUse = FALSE; + long Tab = 8; + +#ifdef __LOCALIZED + + InitStrings(); +#endif + + OutputFile = stdout; + PrgName = argv[0]; + +#undef KEY +#undef LCASE +#undef LIST +#undef LNEMPTY +#define KEY(a, def) +#define LCASE(a) +#define LIST(a) +#define LNEMPTY(a) InsertWord("", &a); + + RESOURCE_INFO; + + while (SetupVars()) + ReadRC(ConfigFile); + + if (CmdLine.Stack.Used) + { + ParseArgs(CmdLine.Stack.Used, (char **) CmdLine.Stack.Data); + CmdLine.Stack.Used = 1L; + } + + if ((CurArg = ParseArgs((unsigned long) argc, argv))) + { + if (CmdLine.Stack.Used) + { + ParseArgs(CmdLine.Stack.Used, (char **) CmdLine.Stack.Data); + CmdLine.Stack.Used = 1L; + } + + if (!Quiet || LicenseOnly) + fprintf(stderr, Banner); + + if (CurArg == argc) + UsingStdIn = TRUE; + +#if defined(HAVE_FILENO) && defined(HAVE_ISATTY) + + StdInTTY = isatty(fileno(stdin)); + StdOutTTY = isatty(fileno(stdout)); +#else + + StdInTTY = StdOutTTY = TRUE; +#endif + + SetupTerm(); + + if ((UsingStdIn && StdInTTY && !Quiet) || LicenseOnly) + { + fprintf(stderr, BigBanner); + } + + if (!StdOutTTY && PipeOutputFormat) + OutputFormat = PipeOutputFormat; + + if (LicenseOnly) + { + fprintf(stderr, Distrib); + } + else + { + SetupLists(); + if (QuoteStyle) + { + if (!strcasecmp(QuoteStyle, "LOGICAL")) + Quote = quLogic; + else if (!strcasecmp(QuoteStyle, "TRADITIONAL")) + Quote = quTrad; + else + { + PrintPrgErr(pmQuoteStyle, QuoteStyle); + Quote = quTrad; + } + } + + if (DebugLevel) + ShowIntStatus(); + + NOCOMMON(Italic, NonItalic); + NOCOMMON(Italic, ItalCmd); + NOCOMMON(LowDots, CenterDots); + + if (TabSize && isdigit((unsigned char)*TabSize)) + Tab = strtol(TabSize, NULL, 10); + + if (OpenOut()) + { + for (;;) + { + for (Count = 0; Count < NUMBRACKETS; Count++) + Brackets[Count] = 0L; + +#define DEF(type, name, value) name = value; + + STATE_VARS +#undef DEF + if (UsingStdIn) + { + if (StdInUse) + break; + else + { + StdInUse = TRUE; + PushFile("stdin", stdin, &InputStack); + } + } + else + { + if (CurArg <= argc) + { + const char *filename = NULL; + if (CurArg < argc) + filename = argv[CurArg++]; + + if (!PushFileName(filename, &InputStack)) + break; + } + } + + if (StkTop(&InputStack) && OutputFile) + { + while (!ferror(OutputFile) + && StkTop(&InputStack) + && !ferror(CurStkFile(&InputStack)) + && FGetsStk(ReadBuffer, BUFSIZ - 1, + &InputStack)) + { + + /* Make all spaces ordinary spaces */ + + strrep(ReadBuffer, '\n', ' '); + strrep(ReadBuffer, '\r', ' '); + ExpandTabs(ReadBuffer, TmpBuffer, Tab); + strcpy(ReadBuffer, TmpBuffer); + + strcat(ReadBuffer, " "); + FindErr(ReadBuffer, CurStkLine(&InputStack)); + } + + PrintStatus(CurStkLine(&InputStack)); + retval = EXIT_SUCCESS; + } + } + } + } + } + return retval; +} + +/* + * Opens the output file handle & possibly renames + */ + +static int OpenOut(void) +{ + int Success = TRUE; + + if (*OutputName) + { + if (BackupOut && fexists(OutputName)) + { + strcpy(TmpBuffer, OutputName); + AddAppendix(TmpBuffer, BAKAPPENDIX); + + if (fexists(TmpBuffer)) + remove(TmpBuffer); + + if (!rename(OutputName, TmpBuffer)) + PrintPrgErr(pmRename, OutputName, TmpBuffer); + else + { + PrintPrgErr(pmRenameErr, OutputName, TmpBuffer); + Success = FALSE; + } + + } + + if (Success) + { + if (!(OutputFile = fopen(OutputName, "w"))) + { + PrintPrgErr(pmOutOpen); + Success = FALSE; + } + } + } + else + OutputFile = stdout; + + return (Success); +} + +#ifndef STRIP_DEBUG +static void ShowWL(const char *Name, const struct WordList *wl) +{ + unsigned long i, j, percent; + + fprintf(stderr, "Name: %12s", Name); + + if (DebugLevel & FLG_DbgListInfo) + { + fprintf(stderr, ", MaxLen: %3ld, Entries: %3ld, ", + wl->MaxLen, wl->Stack.Used); + + if (wl->Hash.Index && wl->Stack.Used) + { + for (i = j = 0; i < HASH_SIZE; i++) + { + if (wl->Hash.Index[i]) + j++; + } + percent = (j * 10000) / wl->Stack.Used; + + + fprintf(stderr, "Hash usage: %3ld.%02ld%%", + percent / 100, percent % 100); + } + else + fprintf(stderr, "No hash table."); + } + + fputc('\n', stderr); + + if (DebugLevel & FLG_DbgListCont) + { + FORWL(i, *wl) fprintf(stderr, "\t%s\n", (char *) wl->Stack.Data[i]); + } +} +#endif + +#define BOOLDISP(var) ((var)? OnText : OffText) +#define SHOWSTAT(text, arg) fprintf(stderr, "\t" text ": %s\n", arg) +#define BOOLSTAT(name, var) SHOWSTAT(name, BOOLDISP(var)) +#define SHOWSTR(text, arg) fprintf(stderr, "%s:\n\t%s\n", text, arg); + + +/* + * Prints some of the internal flags; mainly for debugging purposes + */ + +static void ShowIntStatus(void) +{ +#ifndef STRIP_DEBUG + unsigned long Cnt; + const char *String; + const char *iuStr = ""; + + if (DebugLevel & FLG_DbgMsgs) + { + fprintf(stderr, "There are %d warnings/error messages available:\n", + emMaxFault - emMinFault - 1); + + for (Cnt = emMinFault + 1; Cnt < emMaxFault; Cnt++) + { + switch (LaTeXMsgs[Cnt].Type) + { + case etWarn: + String = "Warning"; + break; + case etErr: + String = "Error"; + break; + case etMsg: + String = "Message"; + break; + default: + String = ""; + break; + } + + switch (LaTeXMsgs[Cnt].InUse) + { + case iuOK: + iuStr = "In use"; + break; + case iuNotUser: + iuStr = "User muted"; + break; + case iuNotSys: + iuStr = "System muted"; + break; + } + + fprintf(stderr, "Number: %2ld, Type: %s, Status: %s\n" + "\tText: %s\n\n", + Cnt, String, iuStr, LaTeXMsgs[Cnt].Message); + } + } + +#undef KEY +#undef LCASE +#undef LNEMPTY +#undef LIST + +#define LNEMPTY LIST +#define LIST(a) ShowWL(#a, &a); +#define LCASE(a) LIST(a); LIST(a ## Case); +#define KEY(a,def) SHOWSTR(#a, a); + + + if (DebugLevel & (FLG_DbgListInfo | FLG_DbgListCont)) + { + RESOURCE_INFO; + } + + if (DebugLevel & FLG_DbgOtherInfo) + { + SHOWSTR("Outputformat", OutputFormat); + + fprintf(stderr, "Current flags include:\n"); + + BOOLSTAT("Read global resource", GlobalRC); + BOOLSTAT("Wipe verbose commands", WipeVerb); + BOOLSTAT("Backup outfile", BackupOut); + BOOLSTAT("Quiet mode", Quiet); + BOOLSTAT("Show license", LicenseOnly); + BOOLSTAT("Use stdin", UsingStdIn); + BOOLSTAT("\\input files", InputFiles); + BOOLSTAT("Output header errors", HeadErrOut); + } +#endif +} + +/* + * Resets all stacks. + * + */ + +#undef KEY +#undef LCASE +#undef LNEMPTY +#undef LIST + +#define LNEMPTY LIST +#define LIST(a) ClearWord(&a); +#define LCASE(a) LIST(a); LIST(a ## Case); +#define KEY(a,def) a = def; + +static void ResetStacks(void) +{ + RESOURCE_INFO; + +} + +/* + * Resets all flags (not wordlists) to their default values. Sets + * Outputfile to stdout. + * + */ + +static void ResetSettings(void) +{ + +#define DEF(type, name, value) name = value; + OPTION_DEFAULTS +#undef DEF + if (OutputFile != stdout) + { + fclose(OutputFile); + OutputFile = stdout; + } +} + +/* + * Reads a numerical argument from the argument. Supports concatenation + * of arguments (main purpose) + */ + +static int ParseNumArg(long *Dest, /* Where to put the value */ + long Default, /* Value to put in if no in argue */ + char **Argument) /* optarg or similar */ +{ + if (Argument && *Argument && isdigit((unsigned char)**Argument)) + *Dest = strtol(*Argument, Argument, 10); + else + *Dest = Default; + + return (ShiftArg(Argument)); +} + +/* + * Same as above; however, will toggle the boolean if user doesn't + * supply value + */ + +static int ParseBoolArg(int *Dest, /* Boolean value */ + char **Argument) /* optarg or similar */ +{ + long D = *Dest ? 1L : 0L; + int Retval; + + Retval = ParseNumArg(&D, *Dest ? 0L : 1L, Argument); + + *Dest = D ? TRUE : FALSE; + + return (Retval); +} + +/* + * Returns the first character in the string passed, updates the + * string pointer, if the string is non-empty. + * + * 0 if the string is empty. + */ + +static int ShiftArg(char **Argument) /* optarg or similar */ +{ + if (Argument && *Argument && **Argument) + return (*((char *) (*Argument)++)); + else + return 0; +} + +/* + * Parses an argv similar array. + */ + +static int ParseArgs(int argc, char **argv) +{ + /* Needed for option parsing. */ + + static const struct option long_options[] = { + {"help", no_argument, 0L, 'h'}, + {"localrc", required_argument, 0L, 'l'}, + {"output", required_argument, 0L, 'o'}, + {"warnon", required_argument, 0L, 'w'}, + {"erroron", required_argument, 0L, 'e'}, + {"msgon", required_argument, 0L, 'm'}, + {"nowarn", required_argument, 0L, 'n'}, + {"verbosity", optional_argument, 0L, 'v'}, + {"pipeverb", optional_argument, 0L, 'V'}, + {"debug", required_argument, 0L, 'd'}, + {"reset", no_argument, 0L, 'r'}, + {"quiet", no_argument, 0L, 'q'}, + {"license", no_argument, 0L, 'i'}, + {"splitchar", required_argument, 0L, 's'}, + {"format", required_argument, 0L, 'f'}, + {"pseudoname", required_argument, 0L, 'p'}, + + {"inputfiles", optional_argument, 0L, 'I'}, + {"backup", optional_argument, 0L, 'b'}, + {"globalrc", optional_argument, 0L, 'g'}, + {"wipeverb", optional_argument, 0L, 'x'}, + {"tictoc", optional_argument, 0L, 't'}, + {"headererr", optional_argument, 0L, 'H'}, + {"version", no_argument, 0L, 'W'}, + + {0L, 0L, 0L, 0L} + }; + + int option_index = 0L, c, i, nextc, ErrType; + + int Retval = FALSE, InUse; + int Success, Foo; + long Err, Verb = 1, PipeVerb = 1; + + enum + { + aeNoErr = 0, + aeArg, /* missing/bad required argument */ + aeOpt, /* unknown option returned */ + aeHelp, /* just a call for help */ + aeMem /* no memory */ + } ArgErr = aeNoErr; + + optind = 0; + + while (!ArgErr && + ((c = getopt_long((int) argc, argv, + "b::d:e:f:g::hH::I::il:m:n:o:p:qrs:t::v::V::w:Wx::", + long_options, &option_index)) != EOF)) + { + while (c) + { + nextc = 0; + switch (c) + { + case 's': + if (!(Delimit = strdup(optarg))) + { + PrintPrgErr(pmStrDupErr); + ArgErr = aeMem; + } + + break; + case 'p': + if (!(PseudoInName = strdup(optarg))) + { + PrintPrgErr(pmStrDupErr); + ArgErr = aeMem; + } + + break; + + case 'd': +#ifdef STRIP_DEBUG + + PrintPrgErr(pmNoDebugFlag); +#else + + nextc = ParseNumArg(&DebugLevel, 0xffff, &optarg); +#endif + + break; + case 'i': + LicenseOnly = TRUE; + + nextc = ShiftArg(&optarg); + break; + case 'q': + Quiet = TRUE; + + nextc = ShiftArg(&optarg); + break; + + LOOP(warntype, case 'w': + ErrType = etWarn; InUse = iuOK; LAST(warntype); case 'e': + ErrType = etErr; InUse = iuOK; LAST(warntype); case 'm': + ErrType = etMsg; InUse = iuOK; LAST(warntype); case 'n': + ErrType = etMsg; InUse = iuNotUser; LAST(warntype);) if (isdigit((unsigned char)*optarg)) + { + nextc = ParseNumArg(&Err, -1, &optarg); + if (betw(emMinFault, Err, emMaxFault)) + { + LaTeXMsgs[Err].Type = ErrType; + LaTeXMsgs[Err].InUse = InUse; + } + else + { + ArgErr = aeOpt; + PrintPrgErr(pmWarnNumErr); + } + } + else if (!strcasecmp(optarg, "all")) + { + for (i = emMinFault + 1; i < emMaxFault; i++) + { + LaTeXMsgs[i].Type = ErrType; + LaTeXMsgs[i].InUse = InUse; + } + } + else + { + ArgErr = aeOpt; + PrintPrgErr(pmWarnNumErr); + } + + break; + + case 'g': + nextc = ParseBoolArg(&GlobalRC, &optarg); + if (!GlobalRC) + { + ResetStacks(); + } + break; + + case 'r': + ResetSettings(); + nextc = ShiftArg(&optarg); + break; + + case 'l': + if (optarg) + ReadRC(optarg); + break; + + case 'f': + if (!(OutputFormat = strdup(optarg))) + { + PrintPrgErr(pmStrDupErr); + ArgErr = aeMem; + } + break; + + case 'v': + nextc = ParseNumArg(&Verb, 2, &optarg); + + if (Verb < (long) OutFormat.Stack.Used) + OutputFormat = strdup(OutFormat.Stack.Data[Verb]); + else + { + PrintPrgErr(pmVerbLevErr); + ArgErr = aeArg; + } + break; + case 'V': + nextc = ParseNumArg(&PipeVerb, 1, &optarg); + + if (PipeVerb < (long) OutFormat.Stack.Used) + PipeOutputFormat = strdup(OutFormat.Stack.Data[PipeVerb]); + else + { + PrintPrgErr(pmVerbLevErr); + ArgErr = aeArg; + } + break; + + case 'o': + if (optarg) + { + if (*OutputName) + { + PrintPrgErr(pmOutTwice); + ArgErr = aeOpt; + } + else + { + if (!(OutputName = strdup(optarg))) + { + PrintPrgErr(pmStrDupErr); + ArgErr = aeMem; + } + } + } + + break; + + case 't': + nextc = ParseBoolArg(&Foo, &optarg); + break; + case 'x': + nextc = ParseBoolArg(&WipeVerb, &optarg); + break; + case 'b': + nextc = ParseBoolArg(&BackupOut, &optarg); + break; + case 'I': + nextc = ParseBoolArg(&InputFiles, &optarg); + break; + case 'H': + nextc = ParseBoolArg(&HeadErrOut, &optarg); + break; + case 'W': + printf(Banner); + exit(EXIT_SUCCESS); + case '?': + default: + fputs(Banner, stderr); + fputs(HowHelp, stderr); + exit(EXIT_FAILURE); + break; + case 'h': + ArgErr = aeHelp; + break; + } + c = nextc; + } + } + + if ((argc > optind) && !strcmp(argv[optind], "?")) + ArgErr = aeHelp; + + if (ArgErr) + { + fputs(Banner, stderr); + fputs(BigBanner, stderr); + fputs(HelpText, stderr); + Success = FALSE; + } + else + Success = TRUE; + + if (Success) + Retval = optind; + + return (Retval); +} + +/* + * Outputs a program error. + */ + + +void PrintPrgErr(enum PrgErrNum Error, ...) +{ + const char *Type; + va_list MsgArgs; + + if (betw(pmMinFault, Error, pmMaxFault)) + { + switch (PrgMsgs[Error].Type) + { + case etWarn: + Type = "WARNING"; + break; + case etMsg: + Type = "NOTE"; + break; + default: + case etErr: + Type = "ERROR"; + break; + } + fprintf(stderr, "%s: %s -- ", PrgName, Type); + + va_start(MsgArgs, Error); + vfprintf(stderr, PrgMsgs[Error].Message, MsgArgs); + va_end(MsgArgs); + fputc('\n', stderr); + + if (PrgMsgs[Error].Type == etErr) + exit(EXIT_FAILURE); + } +} + +void ErrPrintf(const char *fmt, ...) +{ + va_list MsgArgs; + + va_start(MsgArgs, fmt); + vfprintf(stderr, fmt, MsgArgs); + va_end(MsgArgs); +} diff --git a/Build/source/utils/chktex/chktex-1.6.6/ChkTeX.h b/Build/source/utils/chktex/chktex-1.6.6/ChkTeX.h new file mode 100644 index 00000000000..a934b3536da --- /dev/null +++ b/Build/source/utils/chktex/chktex-1.6.6/ChkTeX.h @@ -0,0 +1,318 @@ +/* + * ChkTeX, header file for main program. + * Copyright (C) 1995-96 Jens T. Berger Thielemann + * + * 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + * Contact the author at: + * Jens Berger + * Spektrumvn. 4 + * N-0666 Oslo + * Norway + * E-mail: <jensthi@ifi.uio.no> + * + * + */ + +#ifndef CHKTEX_H +#define CHKTEX_H 1 +#if defined(HAVE_CONFIG_H) || defined(CONFIG_H_NAME) +# ifndef CONFIG_H_NAME +# define CONFIG_H_NAME "config.h" +# endif +# ifndef HAVE_CONFIG_H +# define HAVE_CONFIG_H 1 +# endif +# include CONFIG_H_NAME +#endif + +#include <ctype.h> +#include <math.h> +#include <stdio.h> + +#ifdef HAVE_STDARG_H +# include <stdarg.h> +#else +#error Sorry, ChkTeX needs an _ANSI_ compiler w/stdarg.h installed to compile. +#endif + +#ifndef HAVE_VPRINTF +#error Sorry, ChkTeX needs an _ANSI_ compiler w/vprintf() to compile. +#endif + +#include <stddef.h> +#include <stdlib.h> +#include <string.h> + +#ifdef HAVE_UNISTD_H +# include <unistd.h> +#endif + +#ifdef HAVE_LIMITS_H +# include <limits.h> +#endif + +#ifdef HAVE_STRINGS_H +# include <strings.h> +#endif + +#include "types.h" + +#ifndef LONG_MAX +# define LONG_MAX (0x7fffffff) +#endif + +#ifndef CHAR_BIT +# define CHAR_BIT (8) +#endif + +#include "FindErrs.h" + +#if defined(HAVE_FILENO) && defined(HAVE_ISATTY) +# include <stdio.h> +#endif + +/* + * Define aliases for preprocessor statements + */ + +#if defined(__unix__) || defined(__unix) || defined(unix) +#undef __unix__ +#define __unix__ 1 +#elif defined(MSDOS) || defined(__MSDOS__) || defined(__msdos__) +#undef __MSDOS__ +#define __MSDOS__ 1 +#endif + +/* -=><=- -=><=- -=><=- -=><=- -=><=- -=><=- -=><=- -=><=- -=><=- */ + +/* + * NOTE: All macros below should return FALSE (0) if the input + * character is 0. + * + * The next macro should return TRUE if LaTeX (and you?) considers + * the character `c' as a space, which should be detected when + * we're checking whether commands are terminated by spaces. + * + * Note: If you wish to change this macro, you'll have to update + * the main loop in FindErrs.c as well. + */ + +#define LATEX_SPACE(c) (c > 0 && c <= ' ') + +/* -=><=- -=><=- -=><=- -=><=- -=><=- -=><=- -=><=- -=><=- -=><=- */ + + + + + + +#define betw(a,b,c) ((a < b) && (b < c)) +#define within(a,b,c) ((a <= b) && (b <= c)) + +#ifndef min +# define min(a,b) ((a)<=(b)?(a):(b)) +#endif + +#ifndef max +# define max(a,b) ((a)>(b)?(a):(b)) +#endif + +#ifndef abs +# define abs(a) (a>=0?a:(-a)) +#endif + +#define LOOP(name, body) {{body} _end__##name:;} +#define LAST(name) goto _end__##name + +#define NUMBRACKETS 6 + +#define NEWBUF(name,len) \ +static char _ ## name [len + (WALLBYTES<<1)] = {0}; \ +char *name = &_ ## name[WALLBYTES] + +#define INTFAULTMSG "INTERNAL FAULT OCCURED! PLEASE SUBMIT A BUG REPORT!\n" + +#define INTERNFAULT INTFAULTMSG + +#define BITDEF1(a) BIT_ ## a +#define BITDEF2(a) FLG_ ## a = (1<<BIT_ ## a) + +/* + * Debugging info + */ + +#define DEBUGBITS(a) enum a { \ + BIT(DbgMsgs), /* Dump messages */ \ + BIT(DbgListInfo), /* Dump list info */ \ + BIT(DbgListCont), /* Dump list contents */ \ + BIT(DbgOtherInfo), /* Dump misc. other info */ \ + BIT(DbgRunTime) /* Dump runtime info */ \ +}; + +#undef BIT +#define BIT BITDEF1 +DEBUGBITS(Debug_BIT) +#undef BIT +#define BIT BITDEF2 + DEBUGBITS(Debug_FLG) +#ifdef STRIP_DEBUG +# define DEBUG(a) +#else +# define DEBUG(a) if(DebugLevel & FLG_DbgRunTime) ErrPrintf a +#endif +#define PRGMSGS \ + MSG(pmMinFault, etWarn, TRUE, 0, INTERNFAULT)\ + MSG(pmNoFileMatch, etWarn, TRUE, 0,\ + "No files matched the pattern `%s'.")\ + MSG(pmNoTeXOpen, etWarn, TRUE, 0,\ + "Unable to open the TeX file `%s'.")\ + MSG(pmRename, etMsg, TRUE, 0,\ + "Renaming `%s' as `%s'.")\ + MSG(pmRenameErr, etErr, TRUE, 0,\ + "Could not rename `%s' to `%s'.")\ + MSG(pmOutOpen, etErr, TRUE, 0,\ + "Unable to open output file.")\ + MSG(pmOutTwice, etErr, TRUE, 0,\ + "You can specify output file only once.")\ + MSG(pmStrDupErr, etErr, TRUE, 0,\ + "Unable to duplicate strings - no memory?")\ + MSG(pmWordListErr, etErr, TRUE, 0,\ + "Unable to create wordlist - no memory?")\ + MSG(pmNoStackMem, etErr, TRUE, 0,\ + "Unable to create stack - no memory?\n")\ + MSG(pmWarnNumErr, etErr, TRUE, 0,\ + "Illegal warning number used.")\ + MSG(pmVerbLevErr, etErr, TRUE, 0,\ + "Illegal verbosity level.")\ + MSG(pmNotPSDigit, etWarn, TRUE, 0,\ + "`%c' is not a %s digit - ignored!")\ + MSG(pmEscCode, etWarn, TRUE, 0,\ + "Unknown escape code `%c%c' - ignored!")\ + MSG(pmKeyWord, etErr, TRUE, 0,\ + "Unsupported control word (`%s') encountered in file `%s'.")\ + MSG(pmFaultFmt, etErr, TRUE, 0,\ + "\"%s\", line %d: Faulty format - unexpected %s found.")\ + MSG(pmRsrcOpen, etWarn, TRUE, 0,\ + "Could not open `%s', may cause unwanted behaviour.")\ + MSG(pmSlowAbbr, etMsg, FALSE, 0,\ + "The abbreviation `%s' requires slow abbreviation searching.")\ + MSG(pmEmptyToken, etWarn, TRUE, 0,\ + "Empty token isolated in `%s' - probably faulty format")\ + MSG(pmAssert, etErr, TRUE, 0,\ + "Assertion failed. Please report bug.")\ + MSG(pmNoRsrc, etWarn, TRUE, 0,\ + "Could not find global resource file.")\ + MSG(pmQuoteStyle, etWarn, TRUE, 0,\ + "Illegal quotestyle `%s'.")\ + MSG(pmWrongWipeTemp, etWarn, TRUE, 0,\ + "Wrong template for wiping arguments, \"%s\"")\ + MSG(pmSpecifyTerm, etErr, TRUE, 0,\ + "Specify a terminal type with `setenv TERM <yourtype>'.")\ + MSG(pmNoTermData, etErr, TRUE, 0,\ + "Could not access the termcap data base.")\ + MSG(pmNoTermDefd, etErr, TRUE, 0,\ + "Terminal type `%s' is not defined.")\ + MSG(pmNoRegExp, etWarn, TRUE, 0,\ + "Regular expressions not compiled in. Please recompile.")\ + MSG(pmNoCommon, etErr, TRUE, 0,\ + "`%s' can't be a member of both `%s' and `%s'.") \ + MSG(pmNoOpenDir, etWarn, TRUE, 0, \ + "Could not open the directory `%s'.") \ + MSG(pmNoDebugFlag, etWarn, TRUE, 0, \ + "This version of doesn't support the -d flag. Please recompile.") +#undef MSG +#define MSG(num, type, inuse, ctxt, text) num, + enum PrgErrNum + { + PRGMSGS pmMaxFault + }; +#undef MSG + + extern struct ErrMsg PrgMsgs[pmMaxFault + 1]; + + struct ErrInfo + { + char *Data; + const char *LineBuf; + const char *File; + unsigned long Line, Column, ErrLen; + enum + { + efNone = 0x00, + efNoItal = 0x01, + efItal = 0x02 + } Flags; + }; + + extern char *ReadBuffer; + extern char *CmdBuffer; + extern char *TmpBuffer; + + extern const char BrOrder[NUMBRACKETS + 1]; + + extern unsigned long Brackets[NUMBRACKETS]; + + + extern FILE *OutputFile, *InputFile; + +#define OPTION_DEFAULTS \ + DEF(int, GlobalRC, TRUE) \ + DEF(int, WipeVerb, TRUE) \ + DEF(int, BackupOut, TRUE) \ + DEF(int, Quiet, FALSE) \ + DEF(int, LicenseOnly, FALSE) \ + DEF(int, UsingStdIn, FALSE) \ + DEF(int, InputFiles, TRUE) \ + DEF(int, HeadErrOut, TRUE) \ + DEF(const char *, OutputName, "") \ + DEF(const char *, PseudoInName, NULL) \ + DEF(char *, OutputFormat, VerbNormal) \ + DEF(char *, PipeOutputFormat, NULL) \ + DEF(const char *, Delimit, ":") \ + DEF(long, DebugLevel, 0) + +#define STATE_VARS \ + DEF(enum ItState, ItState, itOff) /* Are we doing italics? */ \ + DEF(int, AtLetter, FALSE) /* Whether `@' is a letter or not. */ \ + DEF(int, InHeader, TRUE) /* Whether we're in the header */ \ + DEF(int, VerbMode, FALSE) /* Whether we're in complete ignore-mode */ \ + DEF(long, MathMode, 0) /* Whether we're in math mode or not */ \ + DEF(const char *, VerbStr, "") /* String we'll terminate verbmode upon */ \ + DEF(unsigned long, ErrPrint, 0) /* # errors printed */ \ + DEF(unsigned long, WarnPrint, 0) /* # warnings printed */ \ + DEF(unsigned long, UserSupp, 0) /* # user suppressed warnings */ + +#define DEF(type, name, value) extern type name; + OPTION_DEFAULTS STATE_VARS +#undef DEF + extern struct Stack CharStack, InputStack, EnvStack; + + enum Quote + { + quLogic, + quTrad + }; + + extern enum Quote Quote; + extern int StdInTTY, StdOutTTY, UsingStdIn; + + int main(int argc, char **argv); + void PrintPrgErr(enum PrgErrNum, ...); + void ErrPrintf(const char *fmt, ...); + + extern char *PrgName; + +#endif /* CHKTEX_H */ diff --git a/Build/source/utils/chktex/chktex-1.6.6/ChkTeX.pdf b/Build/source/utils/chktex/chktex-1.6.6/ChkTeX.pdf Binary files differnew file mode 100644 index 00000000000..9bc5f24e639 --- /dev/null +++ b/Build/source/utils/chktex/chktex-1.6.6/ChkTeX.pdf diff --git a/Build/source/utils/chktex/ChkTeX.tex b/Build/source/utils/chktex/chktex-1.6.6/ChkTeX.tex.in index 1c78de64473..aa6e61d2a5e 100644 --- a/Build/source/utils/chktex/ChkTeX.tex +++ b/Build/source/utils/chktex/chktex-1.6.6/ChkTeX.tex.in @@ -1,5 +1,5 @@ %% -%% ChkTeX v1.6.4, LaTeX documentation for ChkTeX program. +%% ChkTeX v@PACKAGE_VERSION@, LaTeX documentation for ChkTeX program. %% Copyright (C) 1995-96 Jens T. Berger Thielemann %% %% This program is free software; you can redistribute it and/or modify @@ -14,7 +14,7 @@ %% %% 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., 675 Mass Ave, Cambridge, MA 02139, USA. +%% Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. %% %% Contact the author at: %% Jens Berger @@ -35,15 +35,17 @@ -\documentstyle[a4, array, tabularx, verbatim, multicol]{article} +\documentclass[a4paper]{article} %latex +\usepackage{array, tabularx, verbatim, multicol} +\usepackage[T1]{fontenc} \nonfrenchspacing \newcounter{errornum} \setcounter{errornum}{1} %endlatex \newcommand{\jtbt}{Jens~T. Berger~Thielemann} -\newcommand{\Cmd}[1]{``{\tt{}#1}''} -\newcommand{\rsrc}{``{\tt{}chktexrc}''} +\newcommand{\Cmd}[1]{``\texttt{#1}''} +\newcommand{\rsrc}{``\texttt{chktexrc}''} \newcommand{\chktex}{Chk\TeX} %latex @@ -51,7 +53,7 @@ \newcommand{\fmted}[1]{% {\noindent\large% \begin{tabularx}{\linewidth}{lY}% - \bf Warning \theerrornum: & \tt #1% + \bf Warning \theerrornum: & \texttt{#1}% \end{tabularx}}\stepcounter{errornum}\nopagebreak[4]} \newenvironment{errdesc}[1]{\noindent\fmted{#1}\begin{quote}}{\end{quote}% @@ -61,10 +63,8 @@ \newenvironment{rawhtml}{\comment}{\endcomment} \makeatletter -\@namedef{errdesc*}#1{\begin{errdesc}{\textit{#1\/}}} +\@namedef{errdesc*}#1{\begin{errdesc}{\textit{#1}}} \@namedef{enderrdesc*}{\end{errdesc}} -\@ifundefined{textit}{\gdef\textit#1{{\it #1\/}}}\relax -\@ifundefined{LaTeXe}{\gdef\LaTeXe{\LaTeX2${}_{\textstyle\varepsilon}$}}\relax \makeatother @@ -82,7 +82,7 @@ %endlatex -\title{\chktex\ v1.6.4} +\title{\chktex\ v@PACKAGE_VERSION@} \author{Jens~T. Berger~Thielemann} \date{\today} @@ -96,8 +96,8 @@ \section{Introduction} This program has been written in frustration because some constructs in -\LaTeX\ are sometimes non-intuitive, and easy to forget. It is {\em - not\/} a replacement for the built-in checker in \LaTeX\@; however it +\LaTeX\ are sometimes non-intuitive, and easy to forget. It is +\emph{not} a replacement for the built-in checker in \LaTeX\@; however it catches some typographic errors \LaTeX\ oversees. In other words, it is Lint for \LaTeX. Filters are also provided for checking the \LaTeX\ parts of CWEB documents. @@ -123,125 +123,6 @@ should be aware of that in most cases, all this is transparent to the user. As you will see, \chktex\ offers the ability to adapt to many environments and configurations. -\subsection{New features} - -Modifications and additions since v1.6: -\begin{itemize} - \item Improved the build system - \item Better fixes for memory access errors -\end{itemize} - -Modifications and additions since v1.5: -\begin{itemize} - \item Fixed a crash when running from emacs - \item Fixed a crash when checking our own manual - \item Added \tt{\BS{}verb*} support -\end{itemize} - -Modifications and additions since v1.4: - -\subsubsection{Program} - -Modifications to the executable itself: -\begin{itemize} -\item As usual, a few more warnings: - \begin{itemize} - \item No space or similar in front/after parenthesis. - \item Demands a consistent quote style. - \item Double spaces in input which will not be rendered as one. - \item Punctuation malplaced regarding to math mode. - \item Warns about \TeX\ primitives. - \item Space in front of footnotes. - \item Bogus {\tt\BS{}left} and {\tt\BS{}right} commands. - \end{itemize} - -\item The abbreviation recognizer has (for the last time?) been - redesigned. We now produce far less false warnings, catch more - cases and do all this faster than before. Seems like a win. - - Done much of the same with the italic correction detection part, - too\ldots -\item Some bugs have been silently fixed. Hot spots in the program - have been optimized; in certain cases this in fact doubles the - speed! - - Along with this goes more code elegance and utilization of macro - processing and the C language. Take a look at \Cmd{Resource.[ch]}. - -\item It's possible to specify separate output-formats depending on - whether you are sending the output to a file/pipe or to a - terminal. - -\item Column positions are finally correct; we now expand tabs - correctly. -\item \chktex\ will now recursively search for {\tt\BS{}input}'ed - files, both in the document and on the commandline. See the - \rsrc\ file for more info. -\item The debug switch is now more intelligent; if you wish to hack - a bit on \chktex\ for yourself, it is possible to produce - selective debugging output. The feature can also be disabled - altogether. -\item MS-DOS and OS/2 version of the program is now more flexible - and well-behaved, thanks to Gerd B\"ohm. -\item You may now say \Cmd{-wall} to make all messages warnings, and - turn them on. -\item Uses termcap on UNIX boxes; this should ensure that \Cmd{-v2} - (or more precisely: \Cmd{\%i} and \Cmd{\%I}) works regardless to - what terminal you are using. -\end{itemize} - -\subsubsection{Resource file} - -New concepts introduced in the setup file: -\begin{itemize} -\item You may now specify both case-sensitive and case-insensitive - user patterns in the \rsrc\ file. In addition; it is now possible - to reset/clear lists. -\item It is possible to specify how many arguments - (optional/required) \Cmd{WIPEARG} should wipe; it behaves also - somewhat more intelligent when the arguments stretch over multiple - lines. -\item Global files will be read {\em in addition\/} to local ones. The - searching order has also been reversed in order to make this more - intelligent. -\end{itemize} - - -\subsubsection{Other} -Various other stuff I've done to the product: - -\begin{itemize} -\item The documentation has been polished and should now be easier - to use in practical situations. -\item \Cmd{check} target in \Cmd{Makefile}, so you can check that - the installation succeeded. In fact, the \Cmd{Makefile} has been - enhanced in several other ways too, amongst other it is now GNU - conforming. -\item \Cmd{deweb} is now documented; you may say \Cmd{man~deweb} to - get a few words of advice. The support script ({\tt chkweb}) does - now behave as the remaining package (accepting stdin input and flags). -\item I've written an Emacs hack which magically adds \chktex\ to the - list of AUC-\TeX\ commands; thus making the use of the program even - more trivial. - - For those of you who don't wish to mess with Emacs, I've included a trivial -%latex - $\mbox{lacheck}\leftrightarrow\mbox{\chktex}$ -%!lacheck <-> \chktex\ % -%endlatex - interface. - - This means that you now can use \chktex\ just as easily as lacheck - when you're running AUC-\TeX. - -\item Added an ARexx script which lets \chktex\ talk to VBrowse, the - message browser of Volker Barthelmann's freely distributable ANSI - C compiler. The browser itself is available on Aminet as - \Cmd{dev/c/vbcc.lha}. -\end{itemize} - -\subsection{Feature list} - \begin{itemize} \item Supports over 40 warnings. Warnings include: %latex @@ -307,7 +188,7 @@ Various other stuff I've done to the product: \end{itemize} Still, it is important to realize that the output from \chktex\ is -only intended as a {\em guide\/} to fixing faults. However, it is by +only intended as a \emph{guide} to fixing faults. However, it is by no means always correct. This means that correct \LaTeX\ code may produce errors in \chktex, and vice versa: Incorrect \LaTeX\ code may pass silently through. @@ -334,21 +215,18 @@ You should have received a copy of the GNU General Public License along with this program; if not, write to: \begin{quote} The Free Software Foundation, Inc. \\ - 675 Mass Ave \\ - Cambridge \\ - MA 02139 \\ + 51 Franklin Street \\ + Fifth Floor \\ + Boston \\ + MA 02110-1301 \\ USA \end{quote} - - -\begin{html} \section{Availability} This program will be uploaded to CTAN\@; thus it can be found at any mirrors of those. -\end{html} \section{Installation} @@ -467,12 +345,12 @@ A few words on installation on various platforms: file, and edit it appropiately, for more comfort. This should not be necessary, though, at least not the first time. - - Finally, you may now compile and link all \verb@.c@ files. Define - \Cmd{HAVE\_CONFIG\_H} to 1 (on the command-line, for instance). If - the \Cmd{config.h} you wish to use has another name, define - \Cmd{CONFIG\_H\_NAME} to that (in that case, don't define - \Cmd{HAVE\_CONFIG\_H}). + + Finally, you may now compile and link all \verb@.c@ files. Do not + forget to define \Cmd{HAVE\_CONFIG\_H} to 1 (on the command-line, + for instance). If the \Cmd{config.h} you wish to use has another + name, define \Cmd{CONFIG\_H\_NAME} to that (in that case, don't + define \Cmd{HAVE\_CONFIG\_H}). Put the directory path of the \rsrc\ file in a environment variable named \Cmd{CHKTEXRC}. The files \Cmd{deweb.in} and \Cmd{chkweb} @@ -496,8 +374,8 @@ A few words on installation on various platforms: identifier is significant. \end{enumerate} \end{description} -{\bf Note:\/} You {\em must\/} install the new \rsrc\ file; \chktex\ will -fail to function unless! +\paragraph{Note:} You \emph{must} install the new \rsrc\ file; \chktex\ will +fail to function otherwise! After doing this, you may enhance \chktex' behaviour by reading/editing the \rsrc\ file. @@ -505,13 +383,15 @@ reading/editing the \rsrc\ file. %latex \section{Usage} +\subsection{\chktex} + \subsubsection{Synopsis} A UNIX-compliant template format follows: \newcommand{\Group}[1]{\mbox{[#1]}} -\begin{tabularx}\textwidth{lY} - \tt chktex & \tt \Group{-hiqrW} \Group{-v[0-\dots]} \Group{-l +\begin{tabularx}{.95\linewidth}{lY} + \texttt{chktex} & \ttfamily \Group{-hiqrW} \Group{-v[0-\dots]} \Group{-l <rcfile>} \Group{-[wemn] <[1-42]|all>} \Group{-d[0-\ldots]} \Group{-p <pseudoname>} \Group{-o <outputfile>} \Group{-[btxgI][0|1]} file1 file2 \dots @@ -532,17 +412,17 @@ options: \item[Misc.\ options:] General options which aren't related to some specific subpart of \chktex. \begin{description} - \item[{\tt -h [--help]}] Gives you a command summary. - \item[{\tt -i [--license]}] Shows distribution information. - \item[{\tt -l [--localrc]}] Reads a resource-file formatted + \item[\texttt{-h [--help]}] Gives you a command summary. + \item[\texttt{-i [--license]}] Shows distribution information. + \item[\texttt{-l [--localrc]}] Reads a resource-file formatted as the global resource-file \rsrc, in addition to the global resource-file. This option needs the name of the resource-file - as a parameter. See also {\tt -g}. - \item[{\tt -r [--reset]}] This will reset all settings to their - defaults. This may be useful if you use the {\tt CMDLINE} + as a parameter. See also \texttt{-g}. + \item[\texttt{-r [--reset]}] This will reset all settings to their + defaults. This may be useful if you use the \texttt{CMDLINE} directive in your \rsrc\ file, and wish to do something unusual. - \item[{\tt -d [--debug]}] Needs a numeric argument; a bitmask + \item[\texttt{-d [--debug]}] Needs a numeric argument; a bitmask telling what to output. The values below may be added in order to output multiple debugging info. @@ -559,47 +439,47 @@ options: It is possible to install versions of \chktex\ that ignore this flag; this means that it is not certain that this flag works. - \item[{\tt -W [--version]}] Displays version information, and exits. + \item[\texttt{-W [--version]}] Displays version information, and exits. \end{description} \item[Muting warning messages:] Controls whether and in what form error messages will appear. Usually they accept a specific warning number (e.g.\ \Cmd{-w2}), but you may also say \Cmd{all} (e.g.\ - \Cmd{-wall}) which does the operation on {\em all\/} warnings. + \Cmd{-wall}) which does the operation on \emph{all} warnings. \begin{description} - \item[{\tt -w [--warnon]}] Makes the message number passed as + \item[\texttt{-w [--warnon]}] Makes the message number passed as parameter a warning and turns it on. - \item[{\tt -e [--erroron]}] Makes the message number passed as + \item[\texttt{-e [--erroron]}] Makes the message number passed as parameter an error and turns it on. - \item[{\tt -m [--msgon]}] Makes the message number passed as + \item[\texttt{-m [--msgon]}] Makes the message number passed as parameter a message and turns it on. Messages are not counted. - \item[{\tt -n [--nowarn]}] Turns the warning/error number passed + \item[\texttt{-n [--nowarn]}] Turns the warning/error number passed as a parameter off. \end{description} \item[Output control flags:] Determines the appearance and destination of the error reports. \begin{description} - \item[{\tt -q [--quiet]}] Shuts up about copyright information. - \item[{\tt -o [--output]}] Normally, all errors are piped to {\tt stdout}. + \item[\texttt{-q [--quiet]}] Shuts up about copyright information. + \item[\texttt{-o [--output]}] Normally, all errors are piped to \texttt{stdout}. Using this option with a parameter, errors will be sent to the named file instead. Only information relative to the \LaTeX\ file will be sent to that file. Memory problems and similar will as as - always be sent to {\tt stderr}. If a file with the name given + always be sent to \texttt{stderr}. If a file with the name given already exists, it will be renamed to \Cmd{foobar.bak} (\Cmd{foobar.\$cl} under MS-DOS), \Cmd{foobar} being the name of the file. See also \Cmd{-b}. - \item[{\tt -v [--verbosity]}] Specifies how much and how you + \item[\texttt{-v [--verbosity]}] Specifies how much and how you wish the error reports to be displayed. This is specified in the \rsrc\ file; we'll list the default values below. If you wish, you may thus edit the \rsrc\ file to add or modify new formats. - The default is mode 1 (that is, the {\em second\/} entry in the - \rsrc\ file), using {\tt -v} without any parameter will give you + The default is mode 1 (that is, the \emph{second} entry in the + \rsrc\ file), using \texttt{-v} without any parameter will give you mode 2. \begin{description} \item[0] Will show the information in a way that should be - suitable for further parsing by {\tt awk}, {\tt sed} or + suitable for further parsing by \texttt{awk}, \texttt{sed} or similar. The format is as follows: \begin{verbatim} File:Line:Column:Warning number:Warning message @@ -618,7 +498,7 @@ File:Line:Column:Warning number:Warning message at compilation time. UNIX boxes, however, will find the information automatically. \item[3] Shows the information suitable for parsing by Emacs; - this is the same format as {\tt lacheck} uses. More formally, + this is the same format as \texttt{lacheck} uses. More formally, it is the following: \begin{verbatim} "File", line Line: Warning message @@ -634,31 +514,30 @@ File:Line:Column:Warning number:Warning message longer time to parse, but much more informative in use. \end{description} - \item[{\tt -f [--format]}] Specifies the format of the output. + \item[\texttt{-f [--format]}] Specifies the format of the output. This is done using a format similar to \Cmd{printf()}, where we support the specifiers listed below. \smallskip - \newcommand{\Pf}[1]{\tt \%#1 &} + \newcommand{\Pf}[1]{\texttt{\%#1} &} \begin{tabularx}{\linewidth}{cX} \bf Code & \bf Description \\ - \Pf{b} String to print {\bf b\/}etween fields (from {\tt - -s} option). \\ - \Pf{c} {\bf C\/}olumn position of error. \\ - \Pf{d} Length of error ({\bf d\/}igit). \\ - \Pf{f} Current {\bf f\/}ilename.\\ - \Pf{i} Turn on {\bf i\/}nverse printing mode.\\ - \Pf{I} Turn off {\bf i\/}nverse printing mode.\\ - \Pf{k} {\bf k\/}ind of error (warning, error, message).\\ - \Pf{l} {\bf l\/}ine number of error.\\ - \Pf{m} Warning {\bf m\/}essage.\\ - \Pf{n} Warning {\bf n\/}umber.\\ - \Pf{u} An {\bf u\/}nderlining line (like the one which + \Pf{b} String to print \textbf{b}etween fields (from \texttt{-s} + option).\\ + \Pf{c} \textbf{C}olumn position of error. \\ + \Pf{d} Length of error (\textbf{d}igit). \\ + \Pf{f} Current \textbf{f}ilename.\\ + \Pf{i} Turn on \textbf{i}nverse printing mode.\\ + \Pf{I} Turn off \textbf{i}nverse printing mode.\\ + \Pf{k} \textbf{k}ind of error (warning, error, message).\\ + \Pf{l} \textbf{l}ine number of error.\\ + \Pf{m} Warning \textbf{m}essage.\\ + \Pf{n} Warning \textbf{n}umber.\\ + \Pf{u} An \textbf{u}nderlining line (like the one which appears when using \Cmd{-v1}).\\ \Pf{r} Part of line in front of error ($\mbox{`S'} - 1$).\\ - \Pf{s} Part of line which contains error ({\bf - s\/}tring).\\ + \Pf{s} Part of line which contains error (\textbf{s}tring).\\ \Pf{t} Part of line after error ($\mbox{`S'} + 1$). \end{tabularx} \smallskip @@ -668,18 +547,18 @@ File:Line:Column:Warning number:Warning message Please note that we may introduce other specifiers in the future, so don't abuse this feature for other characters. - Also, note that we do {\em not\/} support field lengths (yet). + Also, note that we do \emph{not} support field lengths (yet). This may come in the future, if I get the time\dots - The {\tt -v} command is implemented by indexing into the \rsrc\ + The \texttt{-v} command is implemented by indexing into the \rsrc\ file; read that for seeing how each format is implemented. If you find yourself using a particular format often by using the -f switch, consider putting it in the \rsrc\ file instead. - \item[{\tt -V [--pipeverb]}] Which entry we'll use in the \rsrc\ - file whenever {\tt stdout} isn't a terminal. + \item[\texttt{-V [--pipeverb]}] Which entry we'll use in the \rsrc\ + file whenever \texttt{stdout} isn't a terminal. The default is to use the same mode as specified with the - {\tt -v} switch; using {\tt -V} without any parameter will give you + \texttt{-v} switch; using \texttt{-V} without any parameter will give you mode 1. This switch was implemented because GNU less has problems with @@ -690,7 +569,7 @@ File:Line:Column:Warning number:Warning message setenv LESS -r \end{verbatim} - \item[{\tt -p [--pseudoname]}] With this switch, you can provide + \item[\texttt{-p [--pseudoname]}] With this switch, you can provide the filename which will be used when we report the errors. This may be useful in scripts, especially when doing pipes. It is in other words similar to C's \verb@#line@ directive. @@ -699,35 +578,35 @@ setenv LESS -r this one in turn \verb@\@\verb@input@ are presented under their original names. This seems most logical to me. - \item[{\tt -s [--splitchar]}] String to use instead of the - colons when doing {\tt -v0}; e.g.\ this string will be output + \item[\texttt{-s [--splitchar]}] String to use instead of the + colons when doing \texttt{-v0}; e.g.\ this string will be output between the fields. \end{description} \item[Boolean switches:] Common for all of these are that they - take an optional parameter. If it is {\tt 0}, the feature will - be disabled, if it is {\tt 1}, it will be enabled. All these + take an optional parameter. If it is \texttt{0}, the feature will + be disabled, if it is \texttt{1}, it will be enabled. All these features are on by default; and are toggled if you don't give any parameter. \begin{description} - \item[{\tt -b [--backup]}] If you use the {\tt -o} switch, and the - named outputfile exists, it will be renamed to {\tt filename.bak}. - \item[{\tt -I [--inputfiles]}] Execute \verb@\@\verb@input@ + \item[\texttt{-b [--backup]}] If you use the \texttt{-o} switch, and the + named outputfile exists, it will be renamed to \texttt{filename.bak}. + \item[\texttt{-I [--inputfiles]}] Execute \verb@\@\verb@input@ statements; e.g.\ include the file in the input. Our input parsing does of course nest; we use an input-stack to keep track of this. - \item[{\tt -H [--headererr]}] Show errors found in front of the - \verb@\begin{document}@ line. Some people keep {\em lots\/} of + \item[\texttt{-H [--headererr]}] Show errors found in front of the + \verb@\begin{document}@ line. Some people keep \emph{lots} of pure \TeX\ code there, which errors can't be detected reliably (in other words, we will in most cases just produce a lot of garbage). - \item[{\tt -g [--globalrc]}] Read in the global resource file. This - switch may be useful together with the {\tt -l} option. - \item[{\tt -t [--tictoc]}] Display a twirling baton, to show that - we're working. {\tt -v0} does an {\tt -t0}, too, as it assumes + \item[\texttt{-g [--globalrc]}] Read in the global resource file. This + switch may be useful together with the \texttt{-l} option. + \item[\texttt{-t [--tictoc]}] Display a twirling baton, to show that + we're working. \texttt{-v0} does an \texttt{-t0}, too, as it assumes that the user then uses the program non-interactively. This is now a no-op. - \item[{\tt -x [--wipeverb]}] Ignore the ``\verb@\verb@'' command + \item[\texttt{-x [--wipeverb]}] Ignore the ``\verb@\verb@'' command found within the \LaTeX\ file and its argument is completely by the checking routines. This is done by simply overwriting them. If you somehow don't like that (for instance, you would like to @@ -737,14 +616,14 @@ setenv LESS -r If you don't specify any input \LaTeX-files on the commandline, we'll -read from {\tt stdin}. To abort {\tt stdin} input, press the +read from \texttt{stdin}. To abort \texttt{stdin} input, press the following keycombinations: \smallskip \begin{tabular}{ll} \bf Machine & \bf Key-combination \\ - UNIX & $\fbox{\tt Ctrl} + \fbox{\tt D}$ \\ - MS-DOS & $\fbox{\tt Ctrl} + \fbox{Z}$, followed by return. + UNIX & $\fbox{\texttt{Ctrl}} + \fbox{\texttt{D}}$ \\ + MS-DOS & $\fbox{\texttt{Ctrl}} + \fbox{Z}$, followed by return. \end{tabular} \smallskip @@ -766,9 +645,9 @@ routine. \subsubsection{The \rsrc\ file} -You should also take a look at the \rsrc\ file. As the file is -self-documenting; you should be able to get the meaning of each -keyword by simply reading the file. The method for {\em finding it}, +You should also take a look at the \rsrc\ file. As it is +self-documenting, you should be able to get the meaning of each +keyword by simply reading the file. The method for \emph{finding it}, however, has grown rather complex. An outline is given below. If \chktex\ finds multiple files when searching, each and everyone @@ -781,8 +660,9 @@ In this list, \Cmd{\$foo} is assumed to be the environment variable \begin{enumerate} \item First, we'll take a look at the directory which was specified as - \Cmd{DATADIR} during compilation. On UNIX boxes, this usually evaluates to - \Cmd{/usr/local/share/chktexrc} or similar, under MS-DOS it is set + \Cmd{DATADIR} during compilation. On UNIX boxes, this usually + evaluates to something similar to + \Cmd{/usr/local/share/chktexrc}, under MS-DOS it is set to \Cmd{\BS{}emtex\BS{}data\BS{}chktexrc}. \item Look in the following system directories: @@ -871,14 +751,14 @@ as follows: chkweb [options] file1 file2 ... \end{verbatim} As you may see from the script, it is only a trivial interface towards -{\tt deweb} and \chktex. It does not support any individual options +\texttt{deweb} and \chktex. It does not support any individual options on the command line --- all options found will be passed onto \chktex. If \Cmd{--} or a filename is found, the remaining parameters will be ignored. The only real intelligence it features is that it will try to append \verb@.w@ to filenames it can't find. -If no filenames are given, we will read from {\tt stdin}. +If no filenames are given, we will read from \texttt{stdin}. \subsection{DeWEB} @@ -889,36 +769,36 @@ It is called with the following synopsis: deweb file1 file2 ... \end{verbatim} -{\tt deweb} filters away all C \&\ CWEB commands from a CWEB source code. -This leaves only the \LaTeX\ code. This stripped code, in turn, may then -be passed to a suitable syntax checker for \LaTeX, like \chktex\ and {\tt - lacheck}, or spell-checkers like {\tt ispell}. +\texttt{deweb} filters away all C \&\ CWEB commands from a CWEB source +code. This leaves only the \LaTeX\ code. This stripped code, in turn, +may then be passed to a suitable syntax checker for \LaTeX, like +\chktex\ and \texttt{lacheck}, or spell-checkers like \texttt{ispell}. -When {\tt deweb} strips away the C code from your CWEB source, it tries to +When \texttt{deweb} strips away the C code from your CWEB source, it tries to preserve line breaks. This means that the error reports from {\it your favorite tool\/} will be correct regarding to line numbers. In most cases, the column position will also be correct. This significantly simplifies finding the errors in the \LaTeX\ source (in contrast to the -output from {\tt cweave}, which output is truly difficult to figure +output from \texttt{cweave}, which output is truly difficult to figure anything out from). -{\tt deweb} accepts a list of filenames on the argument line, and will send -its output to {\tt stdout}. If no filenames are given, it will read from +\texttt{deweb} accepts a list of filenames on the argument line, and will send +its output to \texttt{stdout}. If no filenames are given, it will read from stdin, acting as a filter. No options are currently accepted. -Macho users may try to pipe the output from {\tt deweb} directly into +Macho users may try to pipe the output from \texttt{deweb} directly into \LaTeX, theoretically, this should work. This would ease the debugging of the \LaTeX\ code significantly, as when \LaTeX\ complains about wrong syntax, you'll be able to find the erroneous line much more easily. Don't expect that the output looks very much like the final one, though. -{\tt deweb} should now understand all correct {\tt CWEB} opcodes. If it +\texttt{deweb} should now understand all correct \texttt{CWEB} opcodes. If it complains about not understanding a correct opcode, please inform the author. \subsubsection{Bugs} -{\tt deweb} will not even {\em compile\/} under Perl versions before perl +\texttt{deweb} will not even \emph{compile} under Perl versions before perl v5. Unfortunately, this means that we can't even tell the user why we failed; Perl will just complain about not being able to compile the regexps. @@ -929,7 +809,7 @@ Error messages set in {\it italic type\/} are turned off by default. Where margin paragraphs are listed in the text, they refer to the keyword in the \rsrc\ file which controls the discussed warning. -\newcommand\Keyword[1]{\marginpar{\large\tt\hfill\\ #1}} +\newcommand\Keyword[1]{\marginpar{\texttt{\hfill\\ #1}}} \smallskip\pagebreak[2] \Keyword{Silent} @@ -1049,9 +929,9 @@ keyword in the \rsrc\ file which controls the discussed warning. \begin{tabular}{ll} \bf Character type & \bf Keyword in \rsrc\ file \\* - Space & \tt WordDash \\* - Number & \tt NumDash \\* - Alphabetic character & \tt HyphDash \\* + Space & \texttt{WordDash} \\* + Number & \texttt{NumDash} \\* + Alphabetic character & \texttt{HyphDash} \\* \end{tabular} This is more or less correct, according to my references. Hopefully @@ -1070,8 +950,8 @@ keyword in the \rsrc\ file which controls the discussed warning. \fmted{`\%s' expected, found `\%s'.} \begin{errdesc}{Solo `\%s' found.} - You get this warning whenever brackets or environments don't match. - \chktex\ expect to find matching brackets/environments in the + Either brackets or environments don't match. + \chktex\ expects to find matching brackets/environments in the same order as their opposites were found, and no closing delimiters which haven't been preceded by an opening one. @@ -1139,7 +1019,7 @@ keyword in the \rsrc\ file which controls the discussed warning. detect an error. As \chktex\ currently processes the \LaTeX\ file on a line-by-line basis, it won't find the argument if the command which needed it was on the previous line. On the other hand, this - {\em may\/} also be an error; you ought to check it to be safe. + \emph{may} also be an error; you ought to check it to be safe. \begin{errexam} \verb@$\hat$@ \\* @@ -1152,7 +1032,7 @@ keyword in the \rsrc\ file which controls the discussed warning. \begin{errdesc}{No match found for `\%s'.} - This warning is triggered if we find a single, {\em opening\/} + This warning is triggered if we find a single, \emph{opening} bracket or environment. While bracket matching is not an explicit error, it is usually a sign that something is wrong. @@ -1187,7 +1067,7 @@ keyword in the \rsrc\ file which controls the discussed warning. \begin{errdesc}{You should use "'" (ASCII 39) instead of "'" (ASCII 180).} On some keyboards you might get the wrong quote. - This quote looks, IMHO, {\em ugly\/} compared to the standard + This quote looks, IMHO, \emph{ugly} compared to the standard quotes, it doesn't even come out as a quote! Just see in the example. @@ -1204,7 +1084,7 @@ keyword in the \rsrc\ file which controls the discussed warning. \Keyword{Userwarn} \begin{errdesc}{User-specified pattern found.} - A substring you've specified using {\tt USERWARN} in the \rsrc\ file, + A substring you've specified using \texttt{USERWARN} in the \rsrc\ file, has been found. \end{errdesc} @@ -1304,7 +1184,7 @@ keyword in the \rsrc\ file which controls the discussed warning. \Keyword{Italic\\ItalCmd\\NonItalic} \begin{errdesc}{Don't use \BS/ in front of small punctuation.} - Italic correction should generally {\em not\/} be used in front of + Italic correction should generally \emph{not} be used in front of small punctuation characters like `.' and `,'; as it looks better when the preceding italic character leans ``over'' the punctum or comma. @@ -1336,7 +1216,7 @@ keyword in the \rsrc\ file which controls the discussed warning. \begin{errdesc*}{Multiple spaces detected in output.} This warning, intended for the novice, will remind you that even if - you {\em type\/} multiple spaces in your input, only a single space + you \emph{type} multiple spaces in your input, only a single space will come out. Some ways to come around this is listed below. \begin{errexam} @@ -1423,7 +1303,7 @@ keyword in the \rsrc\ file which controls the discussed warning. description on each style follows: \begin{description} \item[Traditional:] This style is the most visually pleasing. It - always puts the punctuation {\em in front of\/} the quotes, which + always puts the punctuation \emph{in front of} the quotes, which gives a continuous bottom line. However, it may in certain cases be ambigious. Consider the @@ -1436,7 +1316,7 @@ keyword in the \rsrc\ file which controls the discussed warning. That would be very bad --- because the reader would be prone to type the string d-d-dot, and it happens that in \Cmd{vi(1)} dot repeats the last command accepted. The net result would be to - delete {\em two\/} lines! This problem is avoided using logical + delete \emph{two} lines! This problem is avoided using logical style, described below. \pagebreak[3] \item[Logical:] This style uses quotes as balanced delimiters like @@ -1523,8 +1403,8 @@ program --- if I have the time. \begin{itemize} \item Do a final fix for maths mode. Currently, \chktex\ doesn't - recognize embedded math mode (i.e.\ constructions like - \verb@$$a+b\text{for $a \leq 0$}$$@). + recognize constructions like + \verb@$$a+b\text{for $a \leq 0$}$$@, i.e.\ embedded math mode. \item Support for regular expressions as user patterns. I'll do it at once I get the GNU \Cmd{rx} package up and running (it doesn't @@ -1559,7 +1439,7 @@ you like \chktex\ and would like to help improving it, here's a few things I would like to receive. The following ideas are given: \begin{itemize} -\item Does anyone have a $\mbox{\LaTeX}\rightarrow \mbox{{\tt troff}}$ +\item Does anyone have a $\mbox{\LaTeX}\rightarrow \mbox{\texttt{troff}}$ conversion program? It would be really nice if I could extract the relevant sections from this manual, and present them as a man page. I will not, however, convert this manual to \TeX{}info in order to @@ -1568,8 +1448,8 @@ I would like to receive. The following ideas are given: This doesn't mean that I'm not willing to restructure the document at all. This manual already uses some kind of preprocessing in order - to achieve HTML output via \LaTeX2{\tt html}, I'm willing to do the - same in order to produce {\tt troff} output. + to achieve HTML output via \LaTeX2\texttt{html}, I'm willing to do the + same in order to produce \texttt{troff} output. \item Help me port the program! This is a prioritized one. It's no fun writing ANSI C when people haven't got a C compiler. @@ -1580,7 +1460,7 @@ I would like to receive. The following ideas are given: credit where appropiate. Just one request: If you have to modify the sources in order to make - \chktex\ compile \& work on the new platform, {\em please\/} enclose your + \chktex\ compile \& work on the new platform, \emph{please} enclose your changes in something like \Cmd{\#ifdef \_\_PLATFORM\_\_\dots code\dots\#endif}! It makes life so much easier later, when we try to merge the two source trees. @@ -1612,7 +1492,7 @@ I would like to receive. The following ideas are given: tell me so, so I can remove this item. I don't have GoldEd in my possession; the script was just modelled - after Juergen Zeschky's, ({\tt <juergen@sokrates.nbg.de>}) + after Juergen Zeschky's, (\texttt{<juergen@sokrates.nbg.de>}) $\mbox{PGP}\leftrightarrow\mbox{GoldED}$ interface. \item If you update the \rsrc\ file in anyway that is not strictly @@ -1649,10 +1529,10 @@ mathematical analysis, statistics \& probability calculations plus studying the relationship between society and computers. At home I now possess 4 computers, of which 1 is regular use: A -vanilla Amiga 1200, expanded only by a HD\@. The others are a {\tt - 80286} PC and an Amiga 500, both semi-out-of-order. The last one is -a Commodore VIC-20, which for some peculiar reason never seems to be -used. Plans are to get a Linux-capable PC, though. +vanilla Amiga 1200, expanded only by a HD\@. The others are a +\texttt{80286} PC and an Amiga 500, both semi-out-of-order. The last +one is a Commodore VIC-20, which for some peculiar reason never seems +to be used. Plans are to get a Linux-capable PC, though. Most of the time in front of these computers (including SGI Indy's and SPARC stations at our university) is spent on C and shell programming, @@ -1667,7 +1547,7 @@ plus some text-processing. C and shell programming are not my only knowledge areas regarding computers, however. I write the following languages more or less: -Perl, Motorola {\tt 68000} assembly code, ARexx, Simula, C++, \LaTeX, +Perl, Motorola \texttt{68000} assembly code, ARexx, Simula, C++, \LaTeX, HTML, AmigaGuide, Amos Basic and Installer LISP\@. Once I also mastered Commodore Basic V2, the ``language'' included with my VIC-20. @@ -1691,8 +1571,8 @@ The author wishes to thank the following people (in alphabetical order): \item[] \setbox0=\hbox{ \begin{tabular}{l} - \bf #1 \\ - \tt #2 \\ + \textbf{#1} \\ + \texttt{#2} \\ \end{tabular} } \usebox0\\ } @@ -1784,7 +1664,7 @@ the development of \chktex, please write to: Spektrumvn. 4 \\ N-0666 Oslo \\ Norway \\ - E-mail: {\tt <jensthi@ifi.uio.no>} + E-mail: \texttt{<jensthi@ifi.uio.no>} \end{quote} %latex \end{samepage} @@ -1797,7 +1677,7 @@ Since the original author is unreachable, the maintainer these days is: %endlatex \begin{quote} Baruch Even \\ - E-mail: {\tt <chktex@ev-en.org>} + E-mail: \texttt{<chktex@ev-en.org>} \end{quote} %latex \end{samepage} diff --git a/Build/source/utils/chktex/chktex-1.6.6/ChkTeX.texrc b/Build/source/utils/chktex/chktex-1.6.6/ChkTeX.texrc new file mode 100644 index 00000000000..e990c71d1be --- /dev/null +++ b/Build/source/utils/chktex/chktex-1.6.6/ChkTeX.texrc @@ -0,0 +1,6 @@ +# Ignore file for ChkTeX.tex, since it shows many errors in its examples +# it raises many errors when checking ChkTeX.tex with chktex itself. + +VerbEnvir { errexam errdesc } + +WipeArg { \Cmd:{} } diff --git a/Build/source/utils/chktex/chktex-1.6.6/FindErrs.c b/Build/source/utils/chktex/chktex-1.6.6/FindErrs.c new file mode 100644 index 00000000000..45a6b02bfe5 --- /dev/null +++ b/Build/source/utils/chktex/chktex-1.6.6/FindErrs.c @@ -0,0 +1,1537 @@ +/* + * ChkTeX, error searching & report routines. + * Copyright (C) 1995-96 Jens T. Berger Thielemann + * + * 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + * Contact the author at: + * Jens Berger + * Spektrumvn. 4 + * N-0666 Oslo + * Norway + * E-mail: <jensthi@ifi.uio.no> + * + * + */ + + +#include "ChkTeX.h" +#include "FindErrs.h" +#include "OpSys.h" +#include "Utility.h" +#include "Resource.h" + +/***************************** ERROR MESSAGES ***************************/ + +#undef MSG +#define MSG(num, type, inuse, ctxt, text) {num, type, inuse, ctxt, text}, + +struct ErrMsg LaTeXMsgs[emMaxFault + 1] = { + ERRMSGS {emMaxFault, etErr, iuOK, 0, INTERNFAULT} +}; + +#define istex(c) (isalpha((unsigned char)c) || (AtLetter && (c == '@'))) +#define CTYPE(func) \ +static int my_##func(int c) \ +{ \ + return(func(c)); \ +} + +#define INUSE(c) (LaTeXMsgs[(enum ErrNum) c].InUse == iuOK) + +#define PSERR2(pos,len,err,a,b) \ + PrintError(CurStkName(&InputStack), RealBuf, pos, len, Line, err, a, b) + +#define PSERRA(pos,len,err,a) \ + PrintError(CurStkName(&InputStack), RealBuf, pos, len, Line, err, a) + +#define HEREA(len, err, a) PSERRA(BufPtr - Buf - 1, len, err, a) +#define PSERR(pos,len,err) PSERRA(pos,len,err,"") + +#define HERE(len, err) HEREA(len, err, "") + +#define SKIP_BACK(ptr, c, check) \ + while((c = *ptr--)) \ + { \ + if (!(check)) break; \ + } \ + ptr++; + +#define SKIP_AHEAD(ptr, c, check) \ + while((c = *ptr++)) \ + { \ + if (!(check)) \ + break; \ + } \ + ptr--; + + +/* -=><=- -=><=- -=><=- -=><=- -=><=- -=><=- -=><=- -=><=- -=><=- */ + +/* + * A list of characters LaTeX considers as an end-of-sentence characters, which + * should be detected when whether sentence spacing is correct. + * + */ +static const char LTX_EosPunc[] = { '.', ':', '?', '!', 0 }; + +/* + * General punctuation characters used on your system. + */ +static const char LTX_GenPunc[] = { ',', ';', 0 }; + +/* + * A list of characters LaTeX considers as an small punctuation characters, + * which should not be preceded by a \/. + */ +static const char LTX_SmallPunc[] = { '.', ',', 0 }; + + +static unsigned long Line; + +static const char *RealBuf; +static char *LineCpy; +static char *BufPtr; + +static int ItFlag = efNone; + +NEWBUF(Buf, BUFSIZ); +NEWBUF(CmdBuffer, BUFSIZ); +NEWBUF(ArgBuffer, BUFSIZ); + +static enum ErrNum PerformCommand(const char *Cmd, char *Arg); + +#ifdef isdigit +CTYPE(isdigit) +#else +# define my_isdigit isdigit +#endif + +#ifdef isalpha +CTYPE(isalpha) +#else +# define my_isalpha isalpha +#endif + +/* + * Reads in a TeX token from Src and puts it in Dest. + * + */ + + +static char *GetLTXToken(char *Src, char *Dest) +{ + int Char; + + if (Src && *Src) + { + if (*Src == '\\') + { + *Dest++ = *Src++; + Char = *Dest++ = *Src++; + + if (istex(Char)) + { + while (istex(Char)) + Char = *Dest++ = *Src++; + + Src--; + Dest--; + } + + } + else + *Dest++ = *Src++; + *Dest = 0; + } + else + Src = NULL; + + return (Src); +} + + +/* + * Scans the `SrcBuf' for a LaTeX arg, and puts that arg into `Dest'. + * `Until' specifies what we'll copy. Assume the text is + * "{foo}bar! qux} baz". + * GET_TOKEN => "{foo}" + * GET_STRIP_TOKEN => "foo" + * '!' => "{foo}bar!" (i.e. till the first "!") + * Returns NULL if we can't find the argument, ptr to the first character + * after the argument in other cases. + * + * If one of the tokens found is in the wl wordlist, and we're in the + * outer most paren, and Until isn't a single character, we'll stop. + * You may pass NULL as wl. + * + * We assume that you've previously skipped over leading spaces. + * + */ + +#define GET_TOKEN 256 +#define GET_STRIP_TOKEN 257 + +static char *GetLTXArg(char *SrcBuf, char *OrigDest, const int Until, + struct WordList *wl) +{ + char *Retval; + char *TmpPtr; + char *Dest = OrigDest; + unsigned long DeliCnt = 0; + + *Dest = 0; + TmpPtr = SrcBuf; + + switch (Until) + { + case GET_STRIP_TOKEN: + case GET_TOKEN: + while ((Retval = GetLTXToken(TmpPtr, Dest))) + { + switch (*Dest) + { + case '{': + DeliCnt++; + break; + case '}': + DeliCnt--; + } + Dest += Retval - TmpPtr; + TmpPtr = Retval; + + if (!DeliCnt || ((DeliCnt == 1) && wl && HasWord(Dest, wl))) + break; + } + + if (Retval && (*OrigDest == '{') && (Until == GET_STRIP_TOKEN)) + { + int len = strlen(OrigDest+1); + memmove(OrigDest, OrigDest + 1, len + 1); + /* Strip the last '}' off */ + OrigDest[len-1] = 0; + } + break; + default: + DeliCnt = TRUE; + while ((Retval = GetLTXArg(TmpPtr, Dest, GET_TOKEN, NULL))) + { + if (*Dest == Until) + DeliCnt = FALSE; + + Dest += Retval - TmpPtr; + TmpPtr = Retval; + + if (!DeliCnt) + break; + } + break; + } + *Dest = 0; + + return (Retval); +} + + +static char *MakeCpy(void) +{ + if (!LineCpy) + LineCpy = strdup(RealBuf); + + if (!LineCpy) + PrintPrgErr(pmStrDupErr); + + return (LineCpy); +} + +static char *PreProcess(void) +{ + /* First, kill comments. */ + + char *TmpPtr; + + strcpy(Buf, RealBuf); + + TmpPtr = Buf; + + while ((TmpPtr = strchr(TmpPtr, '%'))) + { + if (TmpPtr == Buf || TmpPtr[-1] != '\\') + { + PSERR(TmpPtr - Buf, 1, emComment); + *TmpPtr = 0; + break; + } + TmpPtr++; + } + return (Buf); +} + +/* + * Interpret environments + */ + +static void PerformEnv(char *Env, int Begin) +{ + static char VBStr[BUFSIZ] = ""; + + if (HasWord(Env, &MathEnvir)) + { + MathMode += Begin ? 1 : -1; + MathMode = max(MathMode, 0); + } + + if (Begin && HasWord(Env, &VerbEnvir)) + { + VerbMode = TRUE; + strcpy(VBStr, "\\end{"); + strcat(VBStr, Env); + strcat(VBStr, "}"); + VerbStr = VBStr; + } +} + +static char *SkipVerb(void) +{ + char *TmpPtr = BufPtr; + int TmpC; + + if (VerbMode && BufPtr) + { + if (!(TmpPtr = strstr(BufPtr, VerbStr))) + BufPtr = &BufPtr[strlen(BufPtr)]; + else + { + VerbMode = FALSE; + BufPtr = &TmpPtr[strlen(VerbStr)]; + SKIP_AHEAD(BufPtr, TmpC, LATEX_SPACE(TmpC)); + if (*BufPtr) + PSERR(BufPtr - Buf, strlen(BufPtr) - 2, emIgnoreText); + } + } + return (TmpPtr); +} + +#define CHECKDOTS(wordlist, dtval) \ +for(i = 0; (i < wordlist.Stack.Used) && !(Back && Front); i++) \ + { if(!strafter(PstPtr, wordlist.Stack.Data[i])) \ + Back = dtval; \ + if(!strinfront(PrePtr, wordlist.Stack.Data[i])) \ + Front = dtval; } + + + +/* + * Checks that the dots are correct + */ + +static enum DotLevel CheckDots(char *PrePtr, char *PstPtr) +{ + unsigned long i; + int TmpC; + enum DotLevel Front = dtUnknown, Back = dtUnknown; + + if (MathMode) + { + PrePtr--; +#define SKIP_EMPTIES(macro, ptr) macro(ptr, TmpC, \ +(LATEX_SPACE(TmpC) || (TmpC == '{') || (TmpC == '}'))) + + SKIP_EMPTIES(SKIP_BACK, PrePtr); + SKIP_EMPTIES(SKIP_AHEAD, PstPtr); + + CHECKDOTS(CenterDots, dtCDots); + + if (!(Front && Back)) + { + CHECKDOTS(LowDots, dtLDots); + } + return (Front & Back); + } + else + return (dtLDots); + +} + +static const char *Dot2Str(enum DotLevel dl) +{ + const char *Retval = INTERNFAULT; + switch (dl) + { + case dtUnknown: + Retval = "\\cdots or \\ldots"; + break; + case dtDots: + Retval = "\\dots"; + break; + case dtCDots: + Retval = "\\cdots"; + break; + case dtLDots: + Retval = "\\ldots"; + break; + } + return Retval; +} + +/* + * Wipes a command, according to the definition in WIPEARG + */ + +static void WipeArgument(const char *Cmd, char *CmdPtr) +{ + unsigned long CmdLen = strlen(Cmd); + const char *Format; + char *TmpPtr; + int c, TmpC; + + if (Cmd && *Cmd) + { + TmpPtr = &CmdPtr[CmdLen]; + Format = &Cmd[CmdLen + 1]; + + while (TmpPtr && *TmpPtr && *Format) + { + switch (c = *Format++) + { + case '*': + SKIP_AHEAD(TmpPtr, TmpC, LATEX_SPACE(TmpC)); + if (*TmpPtr == '*') + TmpPtr++; + break; + case '[': + SKIP_AHEAD(TmpPtr, TmpC, LATEX_SPACE(TmpC)); + if (*TmpPtr == '[') + TmpPtr = GetLTXArg(TmpPtr, ArgBuffer, ']', NULL); + break; + case '{': + SKIP_AHEAD(TmpPtr, TmpC, LATEX_SPACE(TmpC)); + TmpPtr = GetLTXArg(TmpPtr, ArgBuffer, GET_TOKEN, NULL); + case '}': + case ']': + break; + default: + PrintPrgErr(pmWrongWipeTemp, &Cmd[strlen(Cmd) + 1]); + break; + } + } + + if (TmpPtr) + strwrite(CmdPtr, VerbClear, TmpPtr - CmdPtr); + else + strxrep(CmdPtr, "()[]{}", *VerbClear); + } +} + +/* + * Checks italic. + * + */ + +static void CheckItal(const char *Cmd) +{ + int TmpC; + char *TmpPtr; + if (HasWord(Cmd, &NonItalic)) + ItState = itOff; + else if (HasWord(Cmd, &Italic)) + ItState = itOn; + else if (HasWord(Cmd, &ItalCmd)) + { + TmpPtr = BufPtr; + SKIP_AHEAD(TmpPtr, TmpC, LATEX_SPACE(TmpC)); + if (*TmpPtr == '{') + { + ItFlag = ItState ? efItal : efNoItal; + ItState = itOn; + } + } +} + +/* + * Interpret isolated commands. + * + */ + +static void PerformBigCmd(char *CmdPtr) +{ + char *TmpPtr; + const char *ArgEndPtr; + unsigned long CmdLen = strlen(CmdBuffer); + int TmpC; + enum ErrNum ErrNum; + struct ErrInfo *ei; + + enum DotLevel dotlev, realdl = dtUnknown; + + TmpPtr = BufPtr; + SKIP_AHEAD(TmpPtr, TmpC, LATEX_SPACE(TmpC)); + + ArgEndPtr = GetLTXArg(TmpPtr, ArgBuffer, GET_STRIP_TOKEN, NULL); + + /* Kill `\verb' commands */ + + if (WipeVerb) + { + if (!strcmp(CmdBuffer, "\\verb")) + { + if (*BufPtr && (*BufPtr != '*' || BufPtr[1])) + { + if (*BufPtr == '*') + TmpPtr = strchr(&BufPtr[2], BufPtr[1]); + else + TmpPtr = strchr(&BufPtr[1], *BufPtr); + if (TmpPtr) + strwrite(CmdPtr, VerbClear, (TmpPtr - CmdPtr) + 1); + else + PSERR(CmdPtr - Buf, 5, emNoArgFound); + } + } + } + + if (HasWord(CmdBuffer, &IJAccent)) + { + if (ArgEndPtr) + { + TmpPtr = ArgBuffer; + SKIP_AHEAD(TmpPtr, TmpC, TmpC == '{'); /* } */ + + if ((*TmpPtr == 'i') || (*TmpPtr == 'j')) + PrintError(CurStkName(&InputStack), RealBuf, + CmdPtr - Buf, + (long) strlen(CmdBuffer), Line, + emAccent, CmdBuffer, *TmpPtr, + MathMode ? "math" : ""); + } + else + PSERR(CmdPtr - Buf, CmdLen, emNoArgFound); + } + + if (HasWord(CmdBuffer, &NotPreSpaced) && isspace((unsigned char)CmdPtr[-1])) + PSERRA(CmdPtr - Buf - 1, 1, emRemPSSpace, CmdBuffer); + + if ((TmpPtr = HasWord(CmdBuffer, &NoCharNext))) + { + char *BPtr = BufPtr; + + TmpPtr += strlen(TmpPtr) + 1; + SKIP_AHEAD(BPtr, TmpC, LATEX_SPACE(TmpC)); + + if (strchr(TmpPtr, *BPtr)) + { + PSERR2(CmdPtr - Buf, CmdLen, emNoCharMean, CmdBuffer, *BPtr); + } + } + + if (!strcmp(CmdBuffer, "\\begin") || !strcmp(CmdBuffer, "\\end")) + { + if (ArgEndPtr) + { + if (!strcmp(ArgBuffer, "document")) + InHeader = FALSE; + + if (CmdBuffer[1] == 'b') + { + if (!(PushErr(ArgBuffer, Line, CmdPtr - Buf, + CmdLen, MakeCpy(), &EnvStack))) + PrintPrgErr(pmNoStackMem); + } + else + { + if ((ei = PopErr(&EnvStack))) + { + if (strcmp(ei->Data, ArgBuffer)) + PrintError(CurStkName(&InputStack), RealBuf, + CmdPtr - Buf, + (long) strlen(CmdBuffer), + Line, emExpectC, ei->Data, ArgBuffer); + + FreeErrInfo(ei); + } + else + PrintError(CurStkName(&InputStack), RealBuf, + CmdPtr - Buf, + (long) strlen(CmdBuffer), + Line, emSoloC, ArgBuffer); + } + + PerformEnv(ArgBuffer, (int) CmdBuffer[1] == 'b'); + } + else + PSERR(CmdPtr - Buf, CmdLen, emNoArgFound); + } + + CheckItal(CmdBuffer); + + if ((ErrNum = PerformCommand(CmdBuffer, BufPtr))) + PSERR(CmdPtr - Buf, CmdLen, ErrNum); + + if (!strcmp(CmdBuffer, "\\cdots")) + realdl = dtCDots; + + if (!strcmp(CmdBuffer, "\\ldots")) + realdl = dtLDots; + + if (!strcmp(CmdBuffer, "\\dots")) + realdl = dtLDots; + + if (realdl != dtUnknown) + { + dotlev = CheckDots(CmdPtr, BufPtr); + if (dotlev && (dotlev != realdl)) + { + const char *cTmpPtr = Dot2Str(dotlev); + PSERRA(CmdPtr - Buf, CmdLen, emEllipsis, cTmpPtr); + } + } + + if ((TmpPtr = HasWord(CmdBuffer, &WipeArg))) + WipeArgument(TmpPtr, CmdPtr); +} + +/* + * Check user abbreviations. Pass a pointer to the `.'; + * also ensure that it's followed by spaces, etc. + * + * Note: We assume that all abbrevs have been transferred from + * AbbrevCase into Abbrev. + */ + +static void CheckAbbrevs(const char *Buffer) +{ + long i; + char *TmpPtr; + const char *AbbPtr; + + if (INUSE(emInterWord)) + { + TmpPtr = TmpBuffer + Abbrev.MaxLen + 2; + *TmpPtr = 0; + AbbPtr = Buffer; + + for (i = Abbrev.MaxLen; i >= 0; i--) + { + *--TmpPtr = *AbbPtr--; + if (!isalpha((unsigned char)*AbbPtr) && HasWord(TmpPtr, &Abbrev)) + PSERR(Buffer - Buf + 1, 1, emInterWord); + if (!*AbbPtr) + break; + } + } +} + + +/* + * Check misc. things which can't be included in the main loop. + * + */ + +static void CheckRest(void) +{ + unsigned long Count; + long CmdLen; + char *UsrPtr; + + /* Search for user-specified warnings */ + + if (INUSE(emUserWarn)) + { + strcpy(TmpBuffer, Buf); + FORWL(Count, UserWarn) + { + for (UsrPtr = TmpBuffer; + (UsrPtr = strstr(UsrPtr, UserWarn.Stack.Data[Count])); + UsrPtr++) + { + CmdLen = strlen(UserWarn.Stack.Data[Count]); + PSERR(UsrPtr - TmpBuffer, CmdLen, emUserWarn); + } + } + + + strlwr(TmpBuffer); + + FORWL(Count, UserWarnCase) + { + for (UsrPtr = TmpBuffer; + (UsrPtr = strstr(UsrPtr, UserWarnCase.Stack.Data[Count])); + UsrPtr++) + { + CmdLen = strlen(UserWarnCase.Stack.Data[Count]); + PSERR(UsrPtr - TmpBuffer, CmdLen, emUserWarn); + } + } + } +} + + +/* + * Checks that the dash-len is correct. + */ + +static void CheckDash(void) +{ + char *TmpPtr; + int TmpC; + long TmpCount, Len; + struct WordList *wl = NULL; + unsigned long i; + int Errored; + char *PrePtr = &BufPtr[-2]; + + TmpPtr = BufPtr; + SKIP_AHEAD(TmpPtr, TmpC, TmpC == '-'); + TmpCount = TmpPtr - BufPtr + 1; + + if (MathMode) + { + if (TmpCount > 1) + HERE(TmpCount, emWrongDash); + } + else + { + if (LATEX_SPACE(*PrePtr) && LATEX_SPACE(*TmpPtr)) + wl = &WordDash; + if (isdigit((unsigned char)*PrePtr) && isdigit((unsigned char)*TmpPtr)) + wl = &NumDash; + if (isalpha((unsigned char)*PrePtr) && isalpha((unsigned char)*TmpPtr)) + wl = &HyphDash; + + if (wl) + { + Errored = TRUE; + FORWL(i, *wl) + { + Len = strtol(wl->Stack.Data[i], NULL, 0); + if (TmpCount == Len) + { + Errored = FALSE; + break; + } + } + if (Errored) + HERE(TmpCount, emWrongDash); + } + } +} + +/* + * Pushes and pops nesting characters. + * + */ + +static void HandleBracket(int Char) +{ + unsigned long BrOffset; /* Offset into BrOrder array */ + struct ErrInfo *ei; + int TmpC, Match; + char ABuf[2], BBuf[2]; + char *TmpPtr; + + AddBracket(Char); + + if ((BrOffset = BrackIndex(Char)) != ~0UL) + { + if (BrOffset & 1) /* Closing bracket of some sort */ + { + if ((ei = PopErr(&CharStack))) + { + Match = MatchBracket(*(ei->Data)); + if (ei->Flags & efNoItal) + { + if (ItState == itOn) + { + TmpPtr = BufPtr; + SKIP_AHEAD(TmpPtr, TmpC, TmpC == '}'); + + if (!strchr(LTX_SmallPunc, *TmpPtr)) + HERE(1, emNoItFound); + } + + ItState = FALSE; + } + else if (ei->Flags & efItal) + ItState = TRUE; + FreeErrInfo(ei); + } + else + Match = 0; + + if (Match != Char) + { + ABuf[0] = Match; + BBuf[0] = Char; + ABuf[1] = BBuf[1] = 0; + if (Match) + PrintError(CurStkName(&InputStack), RealBuf, + BufPtr - Buf - 1, 1, Line, emExpectC, + ABuf, BBuf); + else + HEREA(1, emSoloC, BBuf); + } + + } + else /* Opening bracket of some sort */ + { + if ((ei = PushChar(Char, Line, BufPtr - Buf - 1, + &CharStack, MakeCpy()))) + { + if (Char == '{') + { + switch (ItFlag) + { + default: + ei->Flags = ItFlag; + ItFlag = efNone; + break; + case efNone: + ei->Flags |= ItState ? efItal : efNoItal; + } + } + } + + else + PrintPrgErr(pmNoStackMem); + } + } +} + + + +/* + * Searches the `Buf' for possible errors, and prints the errors. `Line' + * is supplied for error printing. + */ + +int FindErr(const char *_RealBuf, const unsigned long _Line) +{ + char *CmdPtr; /* We'll have to copy each command out. */ + char *PrePtr; /* Ptr to char in front of command, NULL if + * the cmd appears as the first character */ + char *TmpPtr; /* Temporary pointer */ + char *ErrPtr; /* Ptr to where an error started */ + + int TmpC, /* Just a temp var used throughout the proc. */ + MatchC, Char; /* Char. currently processed */ + unsigned long CmdLen; /* Length of misc. things */ + int MixingQuotes; + + int (*pstcb) (int c); + + enum DotLevel dotlev; + + LineCpy = NULL; + + if (_RealBuf) + { + RealBuf = _RealBuf; + Line = _Line; + + BufPtr = PreProcess(); + + BufPtr = SkipVerb(); + + while (BufPtr && *BufPtr) + { + PrePtr = BufPtr - 1; + Char = *BufPtr++; + if (isspace((unsigned char)Char)) + Char = ' '; + + switch (Char) + { + case '~': + TmpPtr = NULL; + if (isspace((unsigned char)*PrePtr)) + TmpPtr = PrePtr; + else if (isspace((unsigned char)*BufPtr)) + TmpPtr = BufPtr; + + if (TmpPtr) + PSERR(TmpPtr - Buf, 1, emDblSpace); + break; + + case 'X': + case 'x': + TmpPtr = PrePtr; + + SKIP_BACK(TmpPtr, TmpC, + (LATEX_SPACE(TmpC) || strchr("{}$", TmpC))); + + if (isdigit((unsigned char)*TmpPtr)) + { + TmpPtr = BufPtr; + + SKIP_AHEAD(TmpPtr, TmpC, + (LATEX_SPACE(TmpC) || strchr("{}$", TmpC))); + + if (isdigit((unsigned char)*TmpPtr)) + HERE(1, emUseTimes); + } + /* FALLTHRU */ + /* CTYPE: isalpha() */ + case 'a': + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'u': + case 'v': + case 'w': /* case 'x': */ + case 'y': + case 'z': + + case 'A': + case 'B': + case 'C': + case 'D': + case 'E': + case 'F': + case 'G': + case 'H': + case 'I': + case 'J': + case 'K': + case 'L': + case 'M': + case 'N': + case 'O': + case 'P': + case 'Q': + case 'R': + case 'S': + case 'T': + case 'U': + case 'V': + case 'W': /* case 'X': */ + case 'Y': + case 'Z': + if (!isalpha((unsigned char)*PrePtr) && (*PrePtr != '\\') && MathMode) + { + TmpPtr = BufPtr; + CmdPtr = CmdBuffer; + do + { + *CmdPtr++ = Char; + Char = *TmpPtr++; + } + while (isalpha((unsigned char)Char)); + + *CmdPtr = 0; + + if (HasWord(CmdBuffer, &MathRoman)) + HEREA(strlen(CmdBuffer), emWordCommand, CmdBuffer); + } + + break; + case ' ': + TmpPtr = BufPtr; + SKIP_AHEAD(TmpPtr, TmpC, LATEX_SPACE(TmpC)); + + if (*TmpPtr && *PrePtr) + { + if ((TmpPtr - BufPtr) > 0) + { + HERE(TmpPtr - BufPtr + 1, emMultiSpace); + strwrite(BufPtr, VerbClear, TmpPtr - BufPtr - 1); + } + } + break; + + case '.': + if ((Char == *BufPtr) && (Char == BufPtr[1])) + { + const char *cTmpPtr; + dotlev = CheckDots(&PrePtr[1], &BufPtr[2]); + cTmpPtr = Dot2Str(dotlev); + HEREA(3, emEllipsis, cTmpPtr); + } + + /* Regexp: "([^A-Z@.])\.[.!?:;]*\s+[a-z]" */ + + TmpPtr = BufPtr; + SKIP_AHEAD(TmpPtr, TmpC, strchr(LTX_GenPunc, TmpC)); + if (LATEX_SPACE(*TmpPtr)) + { + if (!isupper((unsigned char)*PrePtr) && (*PrePtr != '@') && + (*PrePtr != '.')) + { + SKIP_AHEAD(TmpPtr, TmpC, LATEX_SPACE(TmpC)); + if (islower((unsigned char)*TmpPtr)) + PSERR(BufPtr - Buf, 1, emInterWord); + else + CheckAbbrevs(&BufPtr[-1]); + } + } + + /* FALLTHRU */ + case ':': + case '?': + case '!': + case ';': + /* Regexp: "[A-Z][A-Z][.!?:;]\s+" */ + + if (isspace((unsigned char)*BufPtr) && isupper((unsigned char)*PrePtr) && + (isupper((unsigned char)PrePtr[-1]) || (Char != '.'))) + HERE(1, emInterSent); + + /* FALLTHRU */ + case ',': + if (isspace((unsigned char)*PrePtr) && + !(isdigit((unsigned char)*BufPtr) && + ((BufPtr[-1] == '.') || (BufPtr[-1] == ',')))) + PSERR(PrePtr - Buf, 1, emSpacePunct); + + if (MathMode && + (((*BufPtr == '$') && (BufPtr[1] != '$')) || + (!strafter(BufPtr, "\\)")))) + HEREA(1, emPunctMath, "outside inner"); + + if (!MathMode && + (((*PrePtr == '$') && (PrePtr[-1] == '$')) || + (!strinfront(PrePtr, "\\]")))) + HEREA(1, emPunctMath, "inside display"); + + break; + case '\'': + case '`': + if ((Char == *BufPtr) && (Char == BufPtr[1])) + { + PrintError(CurStkName(&InputStack), RealBuf, + BufPtr - Buf - 1, 3, Line, + emThreeQuotes, + Char, Char, Char, Char, Char, Char); + } + + if (Char == '\'') + MatchC = '`'; + else + MatchC = '\''; + + TmpPtr = BufPtr; + SKIP_AHEAD(TmpPtr, TmpC, TmpC == Char); + + MixingQuotes = FALSE; + + if ((*TmpPtr == MatchC) || (*TmpPtr == '\"') || + (*TmpPtr == '´')) + MixingQuotes = TRUE; + + SKIP_AHEAD(TmpPtr, TmpC, strchr("`\'\"´", TmpC)); + + if (MixingQuotes) + HERE(TmpPtr - BufPtr + 1, emQuoteMix); + + switch (Char) + { + case '\'': + if (isalpha((unsigned char)*TmpPtr) && + (strchr(LTX_GenPunc, *PrePtr) || isspace((unsigned char)*PrePtr))) + HERE(TmpPtr - BufPtr + 1, emBeginQ); + + /* Now check quote style */ +#define ISPUNCT(ptr) (strchr(LTX_GenPunc, *ptr) && (ptr[-1] != '\\')) + + /* We ignore all single words/abbreviations in quotes */ + + { + char *WordPtr = PrePtr; + SKIP_BACK(WordPtr, TmpC, (isalnum((unsigned char)TmpC) || + strchr(LTX_GenPunc, TmpC))); + + if (*WordPtr != '`') + { + if (*PrePtr && (Quote != quTrad) + && ISPUNCT(PrePtr)) + PSERRA(PrePtr - Buf, 1, + emQuoteStyle, "in front of"); + + if (*TmpPtr && (Quote != quLogic) + && ISPUNCT(TmpPtr)) + PSERRA(TmpPtr - Buf, 1, + emQuoteStyle, "after"); + } + } + + break; + case '`': + if (isalpha((unsigned char)*PrePtr) && + (strchr(LTX_GenPunc, *TmpPtr) || isspace((unsigned char)*TmpPtr))) + HERE(TmpPtr - BufPtr + 1, emEndQ); + break; + } + BufPtr = TmpPtr; + break; + case '"': + HERE(1, emUseQuoteLiga); + break; + + /* One of these are unnecessary, but what the heck... */ + case 180: /* ´. NOTE: '\xb4' gets converted to - something */ + case ~(0xff & (~180)): /* This yields 0xff...fb4 in */ + /* arbitrary precision. */ + + HERE(1, emUseOtherQuote); + break; + + case '_': + case '^': + if (*PrePtr != '\\') + { + TmpPtr = PrePtr; + SKIP_BACK(TmpPtr, TmpC, LATEX_SPACE(TmpC)); + + CmdLen = 1; + + switch (*TmpPtr) + { + /*{ */ + case '}': + if (PrePtr[-1] != '\\') + break; + + CmdLen++; + PrePtr--; + /* FALLTHRU */ + /*[( */ + case ')': + case ']': + PSERR(PrePtr - Buf, CmdLen, emEnclosePar); + } + + TmpPtr = BufPtr; + SKIP_AHEAD(TmpPtr, TmpC, LATEX_SPACE(TmpC)); + + ErrPtr = TmpPtr; + + if (isalpha((unsigned char)*TmpPtr)) + pstcb = &my_isalpha; + else if (isdigit((unsigned char)*TmpPtr)) + pstcb = &my_isdigit; + else + break; + + while ((*pstcb) (*TmpPtr++)) + ; + TmpPtr--; + + if ((TmpPtr - ErrPtr) > 1) + PSERR(ErrPtr - Buf, TmpPtr - ErrPtr, emEmbrace); + } + break; + case '-': + CheckDash(); + break; + case '\\': /* Command encountered */ + BufPtr = GetLTXToken(--BufPtr, CmdBuffer); + + if (LATEX_SPACE(*PrePtr)) + { + if (HasWord(CmdBuffer, &Linker)) + PSERR(PrePtr - Buf, 1, emNBSpace); + if (HasWord(CmdBuffer, &PostLink)) + PSERR(PrePtr - Buf, 1, emFalsePage); + } + + if (LATEX_SPACE(*BufPtr) && !MathMode && + (!HasWord(CmdBuffer, &Silent)) && + (strlen(CmdBuffer) != 2)) + { + PSERR(BufPtr - Buf, 1, emSpaceTerm); + } + else if ((*BufPtr == '\\') && (!isalpha((unsigned char)BufPtr[1])) && + (!LATEX_SPACE(BufPtr[1]))) + PSERR(BufPtr - Buf, 2, emNotIntended); + + PerformBigCmd(PrePtr + 1); + BufPtr = SkipVerb(); + + break; + + case '(': + if (*PrePtr && !LATEX_SPACE(*PrePtr) && !isdigit((unsigned char)*PrePtr) + && !strchr("([{`~", *PrePtr)) + { + if (PrePtr[-1] != '\\') /* Short cmds */ + { + TmpPtr = PrePtr; + SKIP_BACK(TmpPtr, TmpC, istex(TmpC)); + if (*TmpPtr != '\\') /* Long cmds */ + PSERRA(BufPtr - Buf - 1, 1, emSpaceParen, + "in front of"); + } + } + if (isspace((unsigned char)*BufPtr)) + PSERRA(BufPtr - Buf, 1, emNoSpaceParen, "after"); + HandleBracket(Char); + break; + + case ')': + if (isspace((unsigned char)*PrePtr)) + PSERRA(BufPtr - Buf - 1, 1, emNoSpaceParen, + "in front of"); + if (isalpha((unsigned char)*BufPtr)) + PSERRA(BufPtr - Buf, 1, emSpaceParen, "after"); + HandleBracket(Char); + break; + + case '}': + case '{': + case '[': + case ']': + HandleBracket(Char); + break; + case '$': + if (*PrePtr != '\\') + { + if (*BufPtr == '$') + BufPtr++; + MathMode ^= TRUE; + } + + break; + } + } + + if (!VerbMode) + { + CheckRest(); + } + } + + return (TRUE); +} + +/* + * Tries to create plural forms for words. Put a '%s' where a + * suffix should be put, e.g. "warning%s". Watch your %'s! + */ + +static void Transit(FILE * fh, unsigned long Cnt, const char *Str) +{ + switch (Cnt) + { + case 0: + fputs("No ", fh); + fprintf(fh, Str, "s"); + break; + case 1: + fputs("One ", fh); + fprintf(fh, Str, ""); + break; + default: + fprintf(fh, "%ld ", Cnt); + fprintf(fh, Str, "s"); + break; + } +} + +/* + * Prints the status/conclusion after doing all the testing, including + * bracket stack status, math mode, etc. + */ + +void PrintStatus(unsigned long Lines) +{ + unsigned long Cnt; + struct ErrInfo *ei; + + + while ((ei = PopErr(&CharStack))) + { + PrintError(ei->File, ei->LineBuf, ei->Column, + ei->ErrLen, ei->Line, emNoMatchC, (char *) ei->Data); + FreeErrInfo(ei); + } + + while ((ei = PopErr(&EnvStack))) + { + PrintError(ei->File, ei->LineBuf, ei->Column, + ei->ErrLen, ei->Line, emNoMatchC, (char *) ei->Data); + FreeErrInfo(ei); + } + + if (MathMode) + { + PrintError(CurStkName(&InputStack), "", 0L, 0L, Lines, emMathStillOn); + } + + for (Cnt = 0L; Cnt < (NUMBRACKETS >> 1); Cnt++) + { + if (Brackets[Cnt << 1] != Brackets[(Cnt << 1) + 1]) + { + PrintError(CurStkName(&InputStack), "", 0L, 0L, Lines, + emNoMatchCC, + BrOrder[Cnt << 1], BrOrder[(Cnt << 1) + 1]); + } + } + + if (!Quiet) + { + Transit(stderr, ErrPrint, "error%s printed; "); + Transit(stderr, WarnPrint, "warning%s printed; "); + Transit(stderr, UserSupp, "user suppressed warning%s printed.\n"); + } +} + + + +/* + * Uses OutputFormat. Be sure that `String' + * does not contain tabs, newlines, etc. + * Prints a formatted string. Formatting codes understood: + * %b - string to print Between fields (from -s option) + * %c - Column position of error + * %d - lenght of error (Digit) + * %f - current Filename + * %i - Turn on inverse printing mode. + * %I - Turn off inverse printing mode. + * %k - Kind of error (warning, error, message) + * %l - Line number of error + * %m - warning Message + * %n - warning Number + * %u - an Underlining line (like the one which appears when using -v1) + * %r - part of line in front of error ('S' - 1) + * %s - part of line which contains error (String) + * %t - part of line after error ('S' + 1) + */ + + +void +PrintError(const char *File, const char *String, + const long Position, const long Len, + const long LineNo, const enum ErrNum Error, ...) +{ + static /* Just to reduce stack usage... */ + char PrintBuffer[BUFSIZ]; + va_list MsgArgs; + + char *LastNorm = OutputFormat; + char *of; + int c; + + enum Context Context; + + if (betw(emMinFault, Error, emMaxFault)) + { + switch (LaTeXMsgs[Error].InUse) + { + case iuOK: + do + { + Context = LaTeXMsgs[Error].Context; + + if (!HeadErrOut) + Context |= ctOutHead; + +#define RGTCTXT(Ctxt, Var) if((Context & Ctxt) && !(Var)) break; + + RGTCTXT(ctInMath, MathMode); + RGTCTXT(ctOutMath, !MathMode); + RGTCTXT(ctInHead, InHeader); + RGTCTXT(ctOutHead, !InHeader); + + switch (LaTeXMsgs[Error].Type) + { + case etWarn: + WarnPrint++; + break; + case etErr: + ErrPrint++; + break; + case etMsg: + break; + } + + while ((of = strchr(LastNorm, '%'))) + { + c = *of; + *of = 0; + + fputs(LastNorm, OutputFile); + + *of++ = c; + + switch (c = *of++) + { + case 'b': + fputs(Delimit, OutputFile); + break; + case 'c': + fprintf(OutputFile, "%ld", Position + 1); + break; + case 'd': + fprintf(OutputFile, "%ld", Len); + break; + case 'f': + fputs(File, OutputFile); + break; + case 'i': + fputs(ReverseOn, OutputFile); + break; + case 'I': + fputs(ReverseOff, OutputFile); + break; + case 'k': + switch (LaTeXMsgs[Error].Type) + { + case etWarn: + fprintf(OutputFile, "Warning"); + break; + case etErr: + fprintf(OutputFile, "Error"); + break; + case etMsg: + fprintf(OutputFile, "Message"); + break; + } + break; + case 'l': + fprintf(OutputFile, "%ld", LineNo); + break; + case 'm': + va_start(MsgArgs, Error); + vfprintf(OutputFile, + LaTeXMsgs[Error].Message, MsgArgs); + va_end(MsgArgs); + break; + case 'n': + fprintf(OutputFile, "%d", Error); + break; + case 'u': + sfmemset(PrintBuffer, ' ', (long) Position); + + sfmemset(&PrintBuffer[Position], '^', Len); + PrintBuffer[Position + Len] = 0; + fputs(PrintBuffer, OutputFile); + break; + case 'r': + substring(String, PrintBuffer, 0L, Position); + fputs(PrintBuffer, OutputFile); + break; + case 's': + substring(String, PrintBuffer, Position, Len); + fputs(PrintBuffer, OutputFile); + break; + case 't': + substring(String, PrintBuffer, + Position + Len, LONG_MAX); + fputs(PrintBuffer, OutputFile); + break; + default: + fputc(c, OutputFile); + break; + } + LastNorm = of; + } + fputs(LastNorm, OutputFile); + } + while (FALSE); + break; + case iuNotUser: + UserSupp++; + break; + case iuNotSys: + break; + } + } +} + +/* + * All commands isolated is routed through this command, so we can + * update global statuses like math mode and whether @ is a letter + * or not. + */ + +static enum ErrNum PerformCommand(const char *Cmd, char *Arg) +{ + const char *Argument = ""; + enum ErrNum en = emMinFault; + int TmpC; + + if (!strcmp(Cmd, "\\makeatletter")) + AtLetter = TRUE; + else if (!strcmp(Cmd, "\\makeatother")) + AtLetter = FALSE; + else if (InputFiles && + !(strcmp(Cmd, "\\input") && strcmp(Cmd, "\\include"))) + { + SKIP_AHEAD(Arg, TmpC, LATEX_SPACE(TmpC)); + if (*Arg == '{') /* } */ + { + if (GetLTXArg(Arg, TmpBuffer, GET_STRIP_TOKEN, NULL)) + Argument = TmpBuffer; + } + else + Argument = strip(Arg, STRP_BTH); + + if (!(Argument && PushFileName(Argument, &InputStack))) + en = emNoCmdExec; + } + else if (HasWord(Cmd, &Primitives)) + en = emTeXPrim; + else if (*Cmd == '\\') + { + /* Quicker check of single lettered commands. */ + switch (Cmd[1]) + { + case '(': + case '[': + MathMode = TRUE; + break; + case ']': + case ')': + MathMode = FALSE; + break; + case '/': + switch (ItState) + { + case itOn: + ItState = itCorrected; + Argument = Arg; + + SKIP_AHEAD(Argument, TmpC, TmpC == '{' || TmpC == '}'); + + if (strchr(".,", *Argument)) + en = emItPunct; + + break; + case itCorrected: + en = emItDup; + break; + case itOff: + en = emItInNoIt; + } + break; + } + } + + return (en); +} diff --git a/Build/source/utils/chktex/chktex-1.6.6/FindErrs.h b/Build/source/utils/chktex/chktex-1.6.6/FindErrs.h new file mode 100644 index 00000000000..47f98c5e6aa --- /dev/null +++ b/Build/source/utils/chktex/chktex-1.6.6/FindErrs.h @@ -0,0 +1,193 @@ +/* + * ChkTeX, header file for main program. + * Copyright (C) 1995-96 Jens T. Berger Thielemann + * + * 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + * Contact the author at: + * Jens Berger + * Spektrumvn. 4 + * N-0666 Oslo + * Norway + * E-mail: <jensthi@ifi.uio.no> + * + * + */ + +#ifndef FINDERRS_H +#define FINDERRS_H +#include "ChkTeX.h" + + +#undef ERRMSGS +#undef MSG + +#define ERRMSGS \ + MSG(emMinFault, etErr, iuOK, ctNone,\ + INTERNFAULT)\ + MSG(emSpaceTerm, etWarn, iuOK, ctOutMath,\ + "Command terminated with space.")\ + MSG(emNBSpace, etWarn, iuOK, ctNone,\ + "Non-breaking space (`~') should have been used.")\ + MSG(emEnclosePar, etWarn, iuOK, ctInMath,\ + "You should enclose the previous parenthesis with `{}\'.")\ + MSG(emItInNoIt, etWarn, iuOK, ctNone,\ + "Italic correction (`\\/') found in non-italic buffer.")\ + MSG(emItDup, etWarn, iuOK, ctNone,\ + "Italic correction (`\\/') found more than once.")\ + MSG(emNoItFound, etWarn, iuOK, ctNone,\ + "No italic correction (`\\/') found.")\ + MSG(emAccent, etWarn, iuOK, ctNone,\ + "Accent command `%s' needs use of `\\%c%s'.")\ + MSG(emWrongDash, etWarn, iuOK, ctOutMath,\ + "Wrong length of dash may have been used.")\ + MSG(emExpectC, etWarn, iuOK, ctNone,\ + "`%s' expected, found `%s'.")\ + MSG(emSoloC, etWarn, iuOK, ctNone,\ + "Solo `%s' found.")\ + MSG(emEllipsis, etWarn, iuOK, ctNone,\ + "You should use %s to achieve an ellipsis.")\ + MSG(emInterWord, etWarn, iuOK, ctOutMath,\ + "Interword spacing (`\\ ') should perhaps be used.")\ + MSG(emInterSent, etWarn, iuOK, ctOutMath,\ + "Intersentence spacing (`\\@') should perhaps be used.")\ + MSG(emNoArgFound, etErr, iuOK, ctNone,\ + "Could not find argument for command.")\ + MSG(emNoMatchC, etWarn, iuOK, ctOutMath,\ + "No match found for `%s'.")\ + MSG(emMathStillOn, etWarn, iuOK, ctNone,\ + "Mathmode still on at end of LaTeX file.")\ + MSG(emNoMatchCC, etWarn, iuOK, ctNone,\ + "Number of `%c' doesn't match the number of `%c'!")\ + MSG(emUseQuoteLiga, etWarn, iuOK, ctNone,\ + "Use either `` or '' as an alternative to `\"'.")\ + MSG(emUseOtherQuote, etWarn, iuOK, ctNone,\ + "Use \"'\" (ASCII 39) instead of \"´\" (ASCII 180).")\ + MSG(emUserWarn, etWarn, iuOK, ctNone,\ + "User-specified pattern found.")\ + MSG(emNotIntended, etWarn, iuNotSys, ctNone,\ + "This command might not be intended.")\ + MSG(emComment, etMsg, iuNotSys, ctNone,\ + "Comment displayed.")\ + MSG(emThreeQuotes, etWarn, iuOK, ctNone,\ + "Either %c\\,%c%c or %c%c\\,%c will look better.")\ + MSG(emFalsePage, etWarn, iuOK, ctOutMath,\ + "Delete this space to maintain correct pagereferences.")\ + MSG(emEmbrace, etWarn, iuOK, ctInMath,\ + "You might wish to put this between a pair of `{}'")\ + MSG(emSpacePunct, etWarn, iuOK, ctOutMath,\ + "You ought to remove spaces in front of punctuation.")\ + MSG(emNoCmdExec, etWarn, iuOK, ctNone,\ + "Could not execute LaTeX command.")\ + MSG(emItPunct, etWarn, iuOK, ctNone,\ + "Don't use \\/ in front of small punctuation.")\ + MSG(emUseTimes, etWarn, iuOK, ctNone,\ + "$\\times$ may look prettier here.")\ + MSG(emMultiSpace, etWarn, iuNotSys, ctOutMath,\ + "Multiple spaces detected in input.")\ + MSG(emIgnoreText, etWarn, iuOK, ctNone,\ + "This text may be ignored.")\ + MSG(emBeginQ, etWarn, iuOK, ctOutMath,\ + "Use ` to begin quotation, not '.")\ + MSG(emEndQ, etWarn, iuOK, ctOutMath,\ + "Use ' to end quotation, not `.")\ + MSG(emQuoteMix, etWarn, iuOK, ctNone,\ + "Don't mix quotes.")\ + MSG(emWordCommand, etWarn, iuOK, ctInMath,\ + "You should perhaps use `\\%s' instead.")\ + MSG(emSpaceParen, etWarn, iuOK, ctOutMath,\ + "You should put a space %s parenthesis.")\ + MSG(emNoSpaceParen, etWarn, iuOK, ctOutMath,\ + "You should avoid spaces %s parenthesis.")\ + MSG(emQuoteStyle, etWarn, iuOK, ctOutMath,\ + "You should not use punctuation %s quotes.")\ + MSG(emDblSpace, etWarn, iuOK, ctOutMath,\ + "Double space found.")\ + MSG(emPunctMath, etWarn, iuOK, ctNone,\ + "You should put punctuation %s math mode.")\ + MSG(emTeXPrim, etWarn, iuNotSys, ctNone,\ + "You ought to not use primitive TeX in LaTeX code.")\ + MSG(emRemPSSpace, etWarn, iuOK, ctOutMath,\ + "You should remove spaces in front of `%s'") \ + MSG(emNoCharMean, etWarn, iuOK, ctNone,\ + "`%s' is normally not followed by `%c'.") + +#undef MSG +#define MSG(num, type, inuse, ctxt, text) num, + +enum ErrNum +{ + ERRMSGS emMaxFault +}; +#undef MSG + +enum Context +{ + ctNone = 0x00, + ctInMath = 0x01, + ctOutMath = 0x02, + ctInHead = 0x04, + ctOutHead = 0x08 +}; + +struct ErrMsg +{ + enum ErrNum Number; + enum + { + etMsg, + etWarn, + etErr + } Type; + + enum + { + iuNotSys, + iuNotUser, + iuOK + } InUse; + + /* Requirements posed upon environment */ + enum Context Context; + + const char *Message; +}; + +enum ItState +{ + itOff, + itOn, + itCorrected +}; + + +enum DotLevel +{ + dtUnknown = 0x0, + dtCDots = 0x1, + dtLDots = 0x2, + dtDots = 0x4 +}; + +extern struct ErrMsg LaTeXMsgs[emMaxFault + 1]; + +extern char *OutputFormat; + +int FindErr(const char *, const unsigned long); +void PrintError(const char *, const char *, const long, const long, + const long, const enum ErrNum, ...); +void PrintStatus(unsigned long Lines); + +#endif /* FINDERRS */ diff --git a/Build/source/utils/chktex/chktex-1.6.6/MakeHTML.pl b/Build/source/utils/chktex/chktex-1.6.6/MakeHTML.pl new file mode 100644 index 00000000000..6bdbadcf127 --- /dev/null +++ b/Build/source/utils/chktex/chktex-1.6.6/MakeHTML.pl @@ -0,0 +1,20 @@ +# Remove parts of code enclosed in %latex/%endlatex tags + +$latexonly = 0; + +while(<>) +{ + $latexonly = 1 if /^%latex/i; + $latexonly = 0 if /^%endlatex/i; + + + if($latexonly) { + if(/^%!(.*)/) + { + print $1; + } + } + else { + print; + } +} diff --git a/Build/source/utils/chktex/chktex-1.6.6/Makefile.in b/Build/source/utils/chktex/chktex-1.6.6/Makefile.in new file mode 100644 index 00000000000..ed28c2d92a2 --- /dev/null +++ b/Build/source/utils/chktex/chktex-1.6.6/Makefile.in @@ -0,0 +1,317 @@ +# +# Makefile for ChkTeX project, creates the stuff. +# Copyright (C) 1996 Jens T. Berger Thielemann +# +# 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +# +# Contact the author at: +# Jens Berger +# Spektrumvn. 4 +# N-0666 Oslo +# Norway +# E-mail: <jensthi@ifi.uio.no> +# + + +prefix=@prefix@ +exec_prefix=@exec_prefix@ +bindir=@bindir@ +datarootdir=@datarootdir@ +datadir=@datadir@ +sysconfdir=@sysconfdir@ +srcdir=@srcdir@ +mandir=@mandir@ +INSTALL=@INSTALL@ +INSTALL_PROGRAM=@INSTALL_PROGRAM@ +INSTALL_DATA=@INSTALL_DATA@ +MKDIR_P=@MKDIR_P@ +ELISPDIR=@ELISPDIR@ +CLEAN=@CLEAN@ + +CC=@CC@ +CFLAGS=@CFLAGS@ +CPPFLAGS=@CPPFLAGS@ -I$(srcdir) -I. $(DEFS) $(USRDEFS) +DEFS=@DEFS@ +LIBS=@LIBS@ +LDFLAGS=@LDFLAGS@ +LN_S=@LN_S@ +LATEX=@LATEX@ +DVIPS=@DVIPS@ +PS2PDF=ps2pdf +PERL5=@PERL5@ +LATEX2HTML=@LATEX2HTML@ +LYNX=@LYNX@ +GROFF=@GROFF@ +SHELL=/bin/sh + +BUILT_SCRIPTS=@BUILT_SCRIPTS@ +SCRIPTS=@SCRIPTS@ + +USRDEFS=-DSYSCONFDIR=\"$(sysconfdir)\" -D__unix__ + +VPATH=$(srcdir) + +##################################################################### + +EXTRA_DIST=configure.in Makefile.in stamp-h.in config.h.in rmeheader.in \ + MakeHTML.pl ChkTeX.tex.in aclocal.m4 NEWS \ + chktex.el chkweb deweb.in COPYING chktex.1 chkweb.1 deweb.1 \ + Test.tex input.tex Test.out configure install-sh lacheck chktexrc \ + $(wildcard m4/*.m4) + +# created by configure +CONFIG_DIST=ChkTeX.tex + +# created at make time +BUILT_DIST=chktex.doc chkweb.doc deweb.doc README ChkTeX.dvi + +CSOURCES=ChkTeX.c FindErrs.c OpSys.c Resource.c Utility.c + +# The sources are the C sources and possibly the files with the same base name +# but ending with .h +SOURCEFILES=$(CSOURCES) $(wildcard $(CSOURCES:.c=.h)) types.h + +DISTFILES=$(EXTRA_DIST) $(SOURCEFILES) + +all: chktex + +DISTDIR:=chktex-@PACKAGE_VERSION@ +dist: $(DISTDIR).tar.gz +$(DISTDIR).tar.gz: $(DISTFILES) $(CONFIG_DIST) $(BUILT_DIST) html + rm -r $(DISTDIR) 2>/dev/null ; true + $(MKDIR_P) $(DISTDIR) + for f in $(DISTFILES) ; do \ + cp $(srcdir)/$$f $(DISTDIR) ; \ + done + cp $(CONFIG_DIST) $(BUILT_DIST) $(DISTDIR) + $(MKDIR_P) $(DISTDIR)/html + cp HTML/ChkTeX/*.{html,css} $(DISTDIR)/html + rm -f $(DISTDIR).tar.gz + tar --owner=0 --group=0 -chzf $@ $(DISTDIR) + rm -rf $(DISTDIR) + +######################################################################## + +.c.o: + $(CC) $(CPPFLAGS) $(CFLAGS) -c $< -o $@ +CLEAN+=$(CSOURCES:.c=.o) + +.%.d: %.c + $(CC) -M $(CPPFLAGS) $< > $@.tmp + sed 's,\($*\)\.o *:,\1.o $@ : Makefile,g' $@.tmp > $@ + -rm -f $@.tmp 2>/dev/null + +DEPFILES=$(patsubst %.c,.%.d,$(CSOURCES)) +CLEAN+=$(DEPFILES) + +ifeq ($(findstring clean,$(MAKECMDGOALS)),) +include $(DEPFILES) +endif + +###################### MAIN DEPENDENCIES ################################ + +OBJS= ChkTeX.o FindErrs.o OpSys.o Resource.o Utility.o + +MAKETEST= (builddir=`pwd` ; cd $(srcdir) ; $${builddir}/chktex -mall -r -g0 -lchktexrc -v5 Test.tex) + +$(srcdir)/Test.out: + -rm -f $(srcdir)/Test.out + $(MAKETEST) 1> $(srcdir)/Test.out + +check: chktex + @echo ">>> Testing that checking algorithms work correctly..." + @-rm -f chktest + $(MAKETEST) 1> chktest + @if cmp -s chktest $(srcdir)/Test.out; then \ + echo ">>> OK!"; \ + rm -f chktest; \ + else \ + echo "***WARNING***"; \ + echo "Problems when checking compilation. This may or may not"; \ + echo "be a problem; anyway, I'm giving you a diff from what the"; \ + echo "results were *supposed* to be..."; \ + diff -u chktest $(srcdir)/Test.out; \ + fi + + +chktex: $(OBJS) + $(CC) $(LDFLAGS) -o chktex $(OBJS) $(LIBS) + +install: chktex ChkTeX.dvi + $(MKDIR_P) $(DESTDIR)$(bindir) + for program in chktex $(BUILT_SCRIPTS); do \ + $(INSTALL_PROGRAM) $$program $(DESTDIR)$(bindir); \ + done + for program in $(SCRIPTS); do \ + $(INSTALL_PROGRAM) $(srcdir)/$$program $(DESTDIR)$(bindir); \ + done + $(MKDIR_P) $(DESTDIR)$(sysconfdir) + $(INSTALL_DATA) $(srcdir)/chktexrc $(DESTDIR)$(sysconfdir) + if (eval echo "$(BUILT_SCRIPTS)") | egrep deweb >/dev/null 2>&1; then \ + $(MKDIR_P) $(DESTDIR)$(mandir)/man1; \ + cp $(srcdir)/deweb.1 $(DESTDIR)$(mandir)/man1; \ + fi + if (eval echo "$(ELISPDIR)") | egrep "/" >/dev/null 2>&1; then \ + $(INSTALL_DATA) $(srcdir)/chktex.el $(DESTDIR)$(ELISPDIR); \ + fi + + + +uninstall: + for program in chktex $(SCRIPTS) $(BUILT_SCRIPTS); do \ + rm -f $(DESTDIR)$(bindir)/$$program; \ + done + rm -f $(DESTDIR)$(sysconfdir)/chktexrc $(DESTDIR)$(mandir)/man1/deweb.1 + if (eval echo "$(ELISPDIR)") | egrep "/" >/dev/null 2>&1; then \ + rm -f $(DESTDIR)$(ELISPDIR)/chktex.el ; \ + fi + +test: + chktex -v2 -mall $(srcdir)/Test.tex | less -r + +indent: + indent -npsl -bli0 -npcs -nut -i4 $(SOURCEFILES) + +mostlyclean: clean + +clean: + rm -rf $(CLEAN) $(BUILT_DIST) $(DISTDIR).tar.gz \ + *.aux *.log *.pdf *.dvi *.ps \ + chktex HTML rme chktest + +distclean: clean + rm -rf $(CONFIG_DIST) *.cache *.status *.log *.tar.gz \ + deweb Makefile autom4te.cache config.h + +maintainer-clean: distclean + rm -rf *.rme install-sh config.guess config.sub aclocal.m4 \ + configure missing rmeheader stamp-h mkinstalldirs tags + +dvi: ChkTeX.dvi + +ifneq ($(LATEX2HTML),) +html: ChkTeX.tex MakeHTML.pl + -rm -r HTML + $(MKDIR_P) HTML + $(PERL5) $(srcdir)/MakeHTML.pl ChkTeX.tex > HTML/ChkTeX.tex + cd HTML; $(LATEX2HTML) ChkTeX.tex + $(PERL5) -i -pe 's%</code> %</code>%gi;s%\s+([.,?!])%$$1%g;' HTML/ChkTeX/*.html + +README: ChkTeX.tex rmeheader MakeHTML.pl + rm -rf rme + $(MKDIR_P) rme + $(PERL5) $(srcdir)/MakeHTML.pl ChkTeX.tex > rme/ChkTeX.tex + cd rme; $(LATEX2HTML) -split 0 ChkTeX.tex + $(PERL5) -i -pe 's%L<SUP><SMALL>A</SMALL></SUP>%La%g;s%T<SMALL>E</SMALL>X%TeX%g;s%<SUB>(.*)</SUB>%$$1%g' rme/ChkTeX/*.html + $(PERL5) -i -pe 's%</code> %</code>%gi;s%\s+([.,?!])%$$1%g;' rme/ChkTeX/*.html + $(LYNX) -dump rme/ChkTeX/ChkTeX.html > rme/ChkTeX.rme + cp rmeheader README + $(PERL5) -e 'undef $$/;$$_=<>;($$_)=/(.*INTRODUCTION(.|\n)*?)[ \t]+ABOUT THIS DOCUMENT/i;s/[ \t]+\n/\n/g;s/\n\n\n/\n/g;s/\[\d+\]//g;print;' rme/ChkTeX.rme >> README + rm -rf rme +else +html README: + @echo "latex2html is unavailable on this system, cant create target $@."; exit 1 +endif + +###################### AUTOCONF REMAKING ################################ + +$(srcdir)/configure: configure.in aclocal.m4 + cd $(srcdir) && autoconf + +#autoheader might not change config.h.in, so touch a stamp file. +$(srcdir)/config.h.in: stamp-h.in +$(srcdir)/stamp-h.in: configure.in aclocal.m4 + cd $(srcdir) && autoheader + echo timestamp > $(srcdir)/stamp-h.in + +config.h: stamp-h +stamp-h: config.h.in config.status + ./config.status + +ChkTeX.tex: ChkTeX.tex.in + ./config.status ChkTeX.tex + +Makefile: Makefile.in config.status + ./config.status + +config.status: configure + ./config.status --recheck + +###################### INDIVIDUAL DEPENDENCIES ########################## + +%.doc: %.1 + $(GROFF) $< > $@ + +ChkTeX.dvi: ChkTeX.tex +ifdef LATEX + $(LATEX) ChkTeX.tex +else + echo "No latex program found by configure" + false +endif + +ChkTeX.ps: ChkTeX.dvi + $(DVIPS) -o ChkTeX.ps ChkTeX.dvi + +ChkTeX.pdf: ChkTeX.ps + $(PS2PDF) $< $@ + +cover: + -./chktex -h + -./chktex Test.tex + -./chktex -v2 -t -o tmptmptmp <Test.tex + -./chktex -v2 -t -o tmptmptmp Test.tex + -./chktex Test.tex -v + -./chktex Test.tex -v0 + -./chktex Test.tex -v1 + -./chktex Test.tex -v2 + -./chktex Test.tex -v3 + -./chktex Test.tex -v4 + -./chktex -t -v0s::: Test.tex -x + -./chktex -p FOO Test.tex + -./chktex -t Test.tex + -./chktex -o tmptmptmp -o tmptmptmptmp Test.tex + -./chktex -l t:faultrc test.tex + -./chktex -e30w22n1 Test.tex + -./chktex -w33e-n1 Test.tex + -./chktex -i + -./chktex -v2 -t -o tmptmptmp <Test.tex + -./chktex -I Test.tex + -./chktex -rd2 Test.tex + -./chktex -gd2 Test.tex + -./chktex -f "*N\ +Between: %b*N\ +Column: %c*N\ +Length: %d*N\ +File: %f*N\ +%iInverse%I*N\ +Kind: %k*N\ +Line: %l*N\ +Msg: %m*N\ +Num: %n*N\ +Und: %u*N\ +Pre: %r*N\ +Str: %s*N\ +Post: %t*N\ +*N\ +%k in %f line %l: %m*N\ +%r%i%s%I%t*N\ +%u*N\ +*N" Test.tex + -./chktex -o tmptmptmp -r -d2 Test.tex + -./chktex -qv0 Test.tex + -./chktex -w30 Test.tex + -./chktex -g --localrc=.testrc -d2 Test.tex + for file in $(CSOURCES); do gcov $(GCOVOPTS) $$file; done diff --git a/Build/source/utils/chktex/chktex-1.6.6/NEWS b/Build/source/utils/chktex/chktex-1.6.6/NEWS new file mode 100644 index 00000000000..b525e1983d8 --- /dev/null +++ b/Build/source/utils/chktex/chktex-1.6.6/NEWS @@ -0,0 +1,123 @@ +Development of ChkTeX is now in a maintainance mode. All versions +after 1.6 are essentially bug fixes. + +1.6.6 (2012-04-07), released by Ivan Andrus <darthandrus@gmail.com> + + * Fixed some memory issues + * Do not increase line number when the line was very long + * Some fixes for TexLive + +1.6.5 (??), released by Jean-Marc Lasgouttes <lasgouttes@lyx.org> + + * Fix bug where ChkTeX generates a warning about missing space before + parenthesis when the parenthesis is at start of line. + * Update ChkTeX.tex.in to use proper LaTeX2e markup. + * Update the build machinery a bit. + +1.6.4 (2007-10-20), released by Baruch Even + + * For some reason 1.6.3 did not include all the changes it was supposed to + have, this release should fix it. One such issue is the MacOS X + compilation. + * Include some updates to the default chktexrc from Jean-Marc Lasgouttes. + +1.6.3, released by Baruch Even + + * Support DESTDIR for installation to help distributions. + * Apply old standing patch from Jean-Marc Lasgouttes to compile outside the + directory. + * Enable compilation on MacOS X. + * Fix various coding issues. + + +Original versions from Jens T. Berger Thielemann: +================================================= + +Modifications and additions since v1.6: + + * Improved the build system + * Better fixes for memory access errors + +Modifications and additions since v1.5: + + * Fixed a crash when running from emacs + * Fixed a crash when checking our own manual + * Added \verb* support + +Modifications and additions since v1.4: + + ** New warnings + + * No space or similar in front/after parenthesis. + * Demands a consistent quote style. + * Double spaces in input which will not be rendered as one. + * Punctuation malplaced regarding to math mode. + * Warns about TeX primitives. + * Space in front of footnotes. + * Bogus \left and \right commands. + + ** Program + + * The abbreviation recognizer has (for the last time?) been + redesigned. We now produce far less false warnings, catch more + cases and do all this faster than before. Seems like a win. Done + much of the same with the italic correction detection part, + too. + * Some bugs have been silently fixed. Hot spots in the program have + been optimized; in certain cases this in fact doubles the speed! + * Along with this goes more code elegance and utilization of macro + processing and the C language. Take a look at Resource.[ch]. + + * It's possible to specify separate output-formats depending on + whether you are sending the output to a file/pipe or to a + terminal. + + * Column positions are finally correct; we now expand tabs + correctly. + * ChkTeX will now recursively search for \input'ed + files, both in the document and on the commandline. See the + chktexrc file for more info. + * The debug switch is now more intelligent; if you wish to hack + a bit on ChkTeX for yourself, it is possible to produce + selective debugging output. The feature can also be disabled + altogether. + * MS-DOS and OS/2 version of the program is now more flexible + and well-behaved, thanks to Gerd Boehm. + * You may now say -wall to make all messages warnings, and + turn them on. + * Uses termcap on UNIX boxes; this should ensure that -v2 + (or more precisely: %i and %I works regardless to + what terminal you are using. + + ** Resource file + + * You may now specify both case-sensitive and case-insensitive user + patterns in the chktexrc file. In addition; it is now possible to + reset/clear lists. + * You can now specify how many optional or required arguments + WIPEARG should wipe; it also behaves somewhat more intelligently + when the arguments stretch over multiple lines. + * Global files will be read in addition to local ones. The searching + order has also been reversed in order to make this more + intelligent. + + ** Other + + * The documentation has been polished and should now be easier + to use in practical situations. + * check target in Makefile, so you can check that the installation + succeeded. In fact, the Makefile has been enhanced in several other + ways too, amongst other it is now GNU conforming. + * deweb is now documented; you may say "man deweb" to get a few + words of advice. The support script (chkweb) does now behave as the + remaining package (accepting stdin input and flags). + * I've written an Emacs hack which magically adds ChkTeX to the list + of AUC-TeX commands; thus making the use of the program even more + trivial. For those of you who don't wish to mess with Emacs, I've + included a trivial lacheck <-> ChkTeX interface. This means that you + now can use ChkTeX just as easily as lacheck when you're running + AUC-TeX. + * Added an ARexx script which lets ChkTeX talk to VBrowse, the + message browser of Volker Barthelmann's freely distributable ANSI + C compiler. The browser itself is available on Aminet as + dev/c/vbcc.lha. diff --git a/Build/source/utils/chktex/chktex-1.6.6/OpSys.c b/Build/source/utils/chktex/chktex-1.6.6/OpSys.c new file mode 100644 index 00000000000..d2891b08581 --- /dev/null +++ b/Build/source/utils/chktex/chktex-1.6.6/OpSys.c @@ -0,0 +1,485 @@ +/* + * ChkTeX, operating system specific code for ChkTeX. + * Copyright (C) 1995-96 Jens T. Berger Thielemann + * + * 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + * Contact the author at: + * Jens Berger + * Spektrumvn. 4 + * N-0666 Oslo + * Norway + * E-mail: <jensthi@ifi.uio.no> + * + * + */ + + +/* + * Some functions which have to be made different from OS to OS, + * unfortunately...:\ + * + */ + +#include "ChkTeX.h" +#include "OpSys.h" +#include "Utility.h" + +#ifdef HAVE_SYS_STAT_H +# include <sys/stat.h> +#endif +#ifdef HAVE_STAT_H +# include <stat.h> +#endif + +#if HAVE_DIRENT_H +# include <dirent.h> +# define NAMLEN(dirent) strlen((dirent)->d_name) +#else +# define dirent direct +# define NAMLEN(dirent) (dirent)->d_namlen +# if HAVE_SYS_NDIR_H +# include <sys/ndir.h> +# endif +# if HAVE_SYS_DIR_H +# include <sys/dir.h> +# endif +# if HAVE_NDIR_H +# include <ndir.h> +# endif +#endif + +#if defined(HAVE_OPENDIR) && defined(HAVE_CLOSEDIR) && \ + defined(HAVE_READDIR) && defined(HAVE_STAT) && \ + defined(S_IFDIR) && defined(SLASH) +# define USE_RECURSE 1 +#else +# define USE_RECURSE 0 +#endif + +#if defined(HAVE_LIBTERMCAP) || defined(HAVE_LIBTERMLIB) +# define USE_TERMCAP 1 +#endif + + +#ifdef USE_TERMCAP +# ifdef HAVE_TERMCAP_H +# include <termcap.h> +# elif HAVE_TERMLIB_H +# include <termlib.h> +# else +int tgetent(char *BUFFER, char *TERMTYPE); +char *tgetstr(char *NAME, char **AREA); +# endif +static char term_buffer[2048]; +#endif + +/* -=><=- -=><=- -=><=- -=><=- -=><=- -=><=- -=><=- -=><=- -=><=- */ + +/* + * This is the name of the global resource file. + */ + +#ifndef SYSCONFDIR +# if defined(__unix__) +# define SYSCONFDIR "/usr/local/lib/" +# elif defined(__MSDOS__) +# define SYSCONFDIR "\\emtex\\data\\" +# else +# define SYSCONFDIR +# endif +#endif +#define RCBASENAME "chktexrc" + +#ifdef __MSDOS__ +# define LOCALRCFILE RCBASENAME +#else +# define LOCALRCFILE "." RCBASENAME +#endif + +char ConfigFile[BUFSIZ] = LOCALRCFILE; +const char *ReverseOn; +const char *ReverseOff; + + +static int HasFile(char *Dir, const char *Filename, const char *App); + +#if USE_RECURSE +static int SearchFile(char *Dir, const char *Filename, const char *App); +#endif /* USE_RECURSE */ + +/* -=><=- -=><=- -=><=- -=><=- -=><=- -=><=- -=><=- -=><=- -=><=- */ + + +/* + * Modify this one to suit your needs. In any case, it should fill + * the ConfigFile (sized BUFLEN) buffer above with full name & path + * for the configuration file. The macro RCFILE will give you the + * filename part of the file, if you need that. + * + * Note: This routine will be called several times. Your mission will + * be to look in each location, and see whether a .chktexrc file exist + * there. + * + * If you choose to do nothing, only the current directory will be + * searched. + * + */ + + +enum LookIn +{ + liMin, + liSysDir, + liUsrDir, + liEnvir, + liCurDir, + liNFound, + liMax +}; + + +int SetupVars(void) +{ + char *Env; +#ifdef __MSDOS__ + + char *Ptr; +#endif + + static enum LookIn i = liMin; + static int FoundFile; + + while (++i < liMax) + { + switch (i) + { + case liCurDir: /* Current directory */ + strcpy(ConfigFile, LOCALRCFILE); + break; + case liEnvir: /* Environment defined */ +#ifdef __MSDOS__ + + if ((Env = getenv("CHKTEXRC")) || (Env = getenv("CHKTEX_HOME"))) +#else + + if ((Env = getenv("CHKTEXRC"))) +#endif + + { + strcpy(ConfigFile, Env); + tackon(ConfigFile, LOCALRCFILE); + } + else +#ifdef __MSDOS__ + if ((Env = getenv("EMTEXDIR"))) + { + strcpy(ConfigFile, Env); + tackon(ConfigFile, "data"); + tackon(ConfigFile, LOCALRCFILE); + } + else +#endif + + *ConfigFile = 0; + break; + case liUsrDir: /* User dir for resource files */ +#if defined(__unix__) + + if ((Env = getenv("HOME")) || (Env = getenv("LOGDIR"))) + { + strcpy(ConfigFile, Env); + tackon(ConfigFile, LOCALRCFILE); + } + else +#elif defined(__MSDOS__) + + strcpy(ConfigFile, PrgName); + if ((Ptr = strrchr(ConfigFile, '\\')) || + (Ptr = strchr(ConfigFile, ':'))) + strcpy(++Ptr, RCBASENAME); + else +#endif + *ConfigFile = 0; + + break; + case liSysDir: /* System dir for resource files */ +#ifdef TEX_LIVE + if ((Env = getenv("CHKTEX_CONFIG"))) + { + strcpy(ConfigFile, Env); + } + else + { + FILE *f; + *ConfigFile = 0; + if ((f = popen("kpsewhich -expand-var='$TEXMFMAIN'", "r"))) + { + if (1 == fscanf(f, "%1024s", ConfigFile)) + { + tackon(ConfigFile, "chktex"); + tackon(ConfigFile, RCBASENAME); + } + (void)pclose(f); + } + } +#else /* TEX_LIVE */ +#if defined(__unix__) || defined(__MSDOS__) + strcpy(ConfigFile, SYSCONFDIR); + tackon(ConfigFile, RCBASENAME); +#else + *ConfigFile = 0; +#endif +#endif /* TEX_LIVE */ + + break; + case liNFound: + case liMin: + case liMax: + *ConfigFile = 0; + if (!FoundFile) + PrintPrgErr(pmNoRsrc); + } + + if (*ConfigFile && fexists(ConfigFile)) + break; + } + FoundFile |= *ConfigFile; + + return (*ConfigFile); +} + + +/* -=><=- -=><=- -=><=- -=><=- -=><=- -=><=- -=><=- -=><=- -=><=- */ + +/* + * This function should initialize the global variables ReverseOn + * and ReverseOff to magic cookies, which when printed, makes the + * text in between stand out. + */ + +void SetupTerm(void) +{ +#ifdef USE_TERMCAP + char *termtype = getenv("TERM"); + int success; + char *buffer; + static char str_so[3] = "so", str_se[3] = "se"; + + if (termtype) + { + + success = tgetent(term_buffer, termtype); + if (success < 0) + PrintPrgErr(pmNoTermData); + if (success == 0) + PrintPrgErr(pmNoTermDefd); + + buffer = (char *) malloc(sizeof(term_buffer)); + ReverseOn = tgetstr(str_so, &buffer); + ReverseOff = tgetstr(str_se, &buffer); + + if (ReverseOn && ReverseOff) + return; + } +#endif + + ReverseOn = PRE_ERROR_STR; + ReverseOff = POST_ERROR_STR; +} + +/* -=><=- -=><=- -=><=- -=><=- -=><=- -=><=- -=><=- -=><=- -=><=- */ + +/* + * Concatenates the `File' string to the `Dir' string, leaving the result + * in the `Dir' buffer. Takes care of inserting `directory' characters; + * if we've got the strings "/usr/foo" and "bar", we'll get + * "/usr/foo/bar". + * + * Behaviour somewhat controlled by the macros SLASH and DIRCHARS in the + * OpSys.h file. + * + */ + +void tackon(char *Dir, const char *File) +{ + int EndC; + unsigned long SLen; + + if (Dir && (SLen = strlen(Dir))) + { + EndC = Dir[SLen - 1]; + if (!(strchr(DIRCHARS, EndC))) + { + Dir[SLen++] = SLASH; + Dir[SLen] = 0L; + } + } + + strcat(Dir, File); +} + +/* + * This function should add the appendix App to the filename Name. + * If the resulting filename gets too long due to this, it may + * overwrite the old appendix. + * + * Name may be assumed to be a legal filename under your OS. + * + * The appendix should contain a leading dot. + */ + +void AddAppendix(char *Name, const char *App) +{ +#ifdef __MSDOS__ + char *p; + + if ((p = strrchr(Name, '.'))) + strcpy(p, App); + else + strcat(Name, App); +#else + /* + * NOTE! This may fail if your system has a claustrophobic file + * name length limit. + */ + strcat(Name, App); +#endif + +} + +/* -=><=- -=><=- -=><=- -=><=- -=><=- -=><=- -=><=- -=><=- -=><=- */ + + +/* + * Locates a file, given a wordlist containing paths. If a + * dir ends in a double SLASH, we'll search it recursively. + * + * We assume that + * a) a deeper level in the dir. tree. has a longer path than + * one above. + * b) adding a level doesn't change any of the previous levels. + * + * If this function returns TRUE, Dest is guaranteed to contain + * path & name of the found file. + * + * FALSE indicates that the file was not found; Dest is then + * unspecified. + */ + + +int LocateFile(const char *Filename, /* File to search for */ + char *Dest, /* Where to put final file */ + const char *App, /* Extra optional appendix */ + struct WordList *wl) /* List of paths, entries + * ending in // will be recursed + */ +{ + unsigned long i; +#if USE_RECURSE + + unsigned long Len; +#endif + + FORWL(i, *wl) + { + strcpy(Dest, wl->Stack.Data[i]); + +#if USE_RECURSE + + Len = strlen(Dest); + + if (Len && (Dest[Len - 1] == SLASH) && (Dest[Len - 2] == SLASH)) + { + Dest[Len - 1] = Dest[Len - 2] = 0; + if (SearchFile(Dest, Filename, App)) + return (TRUE); + } + else +#endif /* USE_RECURSE */ + + { + if (HasFile(Dest, Filename, App)) + return (TRUE); + } + } + return (FALSE); +} + +static int HasFile(char *Dir, const char *Filename, const char *App) +{ + int DirLen = strlen(Dir); + + tackon(Dir, Filename); + if (fexists(Dir)) + return (TRUE); + + if (App) + { + AddAppendix(Dir, App); + if (fexists(Dir)) + return (TRUE); + } + + Dir[DirLen] = 0; + return (FALSE); + +} + + +#if USE_RECURSE +static int SearchFile(char *Dir, const char *Filename, const char *App) +{ + struct stat *statbuf; + struct dirent *de; + DIR *dh; + + int DirLen = strlen(Dir); + int Found = FALSE; + + DEBUG(("Searching %s for %s\n", Dir, Filename)); + + if (HasFile(Dir, Filename, App)) + return (TRUE); + else + { + if ((statbuf = malloc(sizeof(struct stat)))) + { + if ((dh = opendir(Dir))) + { + while (!Found && (de = readdir(dh))) + { + Dir[DirLen] = 0; + if (strcmp(de->d_name, ".") && strcmp(de->d_name, "..")) + { + tackon(Dir, de->d_name); + + if (!stat(Dir, statbuf)) + { + if ((statbuf->st_mode & S_IFMT) == S_IFDIR) + Found = SearchFile(Dir, Filename, App); + } + } + } + closedir(dh); + } + else + PrintPrgErr(pmNoOpenDir, Dir); + free(statbuf); + } + } + return (Found); +} +#endif /* USE_RECURSE */ diff --git a/Build/source/utils/chktex/chktex-1.6.6/OpSys.h b/Build/source/utils/chktex/chktex-1.6.6/OpSys.h new file mode 100644 index 00000000000..7ce3f1b5270 --- /dev/null +++ b/Build/source/utils/chktex/chktex-1.6.6/OpSys.h @@ -0,0 +1,207 @@ +/* + * ChkTeX, operating system specific code for ChkTeX. + * Copyright (C) 1995-96 Jens T. Berger Thielemann + * + * 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + * Contact the author at: + * Jens Berger + * Spektrumvn. 4 + * N-0666 Oslo + * Norway + * E-mail: <jensthi@ifi.uio.no> + * + * + */ + +#ifndef OPSYS_H +#define OPSYS_H + +#include "ChkTeX.h" +#include "Utility.h" + +/********************************************************************/ +/**************** START OF USER SETTABLE PREFERENCES ****************/ + +/* + * Note: This file contains most defines you'll wish to change if you + * wish to adopt ChkTeX to a new system. It is, as you might notice, + * heavily documented. If you wish to get into the internals of ChkTeX, + * the interesting stuff is at the bottom of this file, and in the .c + * files. However, you should also take a look at the "config.h.in" file + * in this directory if you haven't got a shell able to run the "configure" + * script. + * + * This program relies heavily on that the system which + * automagically free()'s all malloc()'ed memory, works. The program + * itself does not call free() very much. This is because we're doing + * lots of tiny allocations, and a properly designed pooling system will + * hopefully do a quicker job than we'll be able to do. So there. + * + * To keep things simple, we trust that the fclose()'ing of fopen()'ed + * also happens automagically. + * + * Please use the getopt included, as we will modify optarg during + * command processing. + * + * You may wish to modify the SetupVars() (OpSys.c) to better suit your + * preferences. In any case, it should put the filename (and full path) + * of the `.chktexrc' file into the ConfigFile array. The array is sized + * BUFSIZ bytes. + * + * The program does also assume that __unix__ is defined if the source is + * compiled on a UNIX machine. + * + */ + + +/* -=><=- -=><=- -=><=- -=><=- -=><=- -=><=- -=><=- -=><=- -=><=- */ + +/* + * Here you should define what codes which should be returned to the + * shell upon success/failure. + * + */ + +#ifndef EXIT_FAILURE +# define EXIT_FAILURE 1 +#endif + +#ifndef EXIT_SUCCESS +# define EXIT_SUCCESS 0 +#endif + +/* -=><=- -=><=- -=><=- -=><=- -=><=- -=><=- -=><=- -=><=- -=><=- */ + +/* + * SLASH should be defined to the character your computer uses to + * separate files/directories. Most systems use '/', messydos uses + * '\'. + * + * DIRCHARS should be defined to the characters a directory entry + * may end on. On Amigas, this is ":/" (either "FOO:BAR/" or "FOO:"), + * Unix uses only "/", while messydos uses ":\\". + * + * This data will be used to automatically concatenate a directory + * path and a filename. + * + * Adjust both to suit your needs. + */ + + +#ifdef TEX_LIVE +#if defined(__MSDOS__) || defined(WIN32) +# define SLASH '\\' +# define DIRCHARS ":\\" +#else +# define SLASH '/' +# define DIRCHARS "/" +#endif +#else /* TEX_LIVE */ +#if defined(__unix__) +# define SLASH '/' +#elif defined(__MSDOS__) +# define SLASH '\\' +#endif + +#if defined(__unix__) +# define DIRCHARS "/" +#elif defined(__MSDOS__) +# define DIRCHARS ":\\" +#endif +#endif /* TEX_LIVE */ + +/* -=><=- -=><=- -=><=- -=><=- -=><=- -=><=- -=><=- -=><=- -=><=- */ + +/* + * Here, define what key-combination which is used to abort stdin + * keyboard input. It should be a string, as we we'll type it out as + * information to the user. + */ + +#if defined(__unix__) +# define STDIN_BREAK "Ctrl-D" +#elif defined(__MSDOS__) +# define STDIN_BREAK "Ctrl-Z + Enter" +#else +# define STDIN_BREAK "stdin break combination" +#endif + +/* -=><=- -=><=- -=><=- -=><=- -=><=- -=><=- -=><=- -=><=- -=><=- */ + +/* + * For fancy printing of commands, we'll use these strings to turn + * on/off the error indication. The codes listed here are ANSI + * compatible; if you don't have that type of terminal, you may wish + * to adjust this. Use "chktex -v2 Test.tex" to check the effects of + * these macros. Note: These strings will be printf()'ed, so watch your + * %'s. + * + * Under UNIX, we'll ignore these values and use termcap instead, where + * that is installed. + * + * If these strings can't be specified statically, you'll have to add + * code in the SetupTerm() function. + * + * PRE_ERROR_STR is of course printed in front of each location we + * wish to show as an error, and POST_ERROR_STR after each location. + * + * The codes #defined here, will switch back- and foreground colours. + * We're using '\033[' as escape character, some terminals may like + * '\233' better. + * + */ + +# define PRE_ERROR_STR "\033[7m" +# define POST_ERROR_STR "\033[0m" + + +/* -=><=- -=><=- -=><=- -=><=- -=><=- -=><=- -=><=- -=><=- -=><=- */ + +/* + * This macro should contain the appendix for backup files, which + * will be appended onto the original filename. It should contain + * a leading dot. + */ + +#ifdef __MSDOS__ +# define BAKAPPENDIX ".$cl" +#else +# define BAKAPPENDIX ".bak" +#endif + +/***************** END OF USER SETTABLE PREFERENCES *****************/ +/********************************************************************/ + +#ifndef WORDLIST_DEFINED +struct WordList; +#endif +/* Sorry; there are now cyclic dependencies in the +* source tree. :-/ +*/ + +extern const char *ReverseOn; +extern const char *ReverseOff; +extern char ConfigFile[BUFSIZ]; + +char *MatchFileName(char *String); +int SetupVars(void); +void SetupTerm(void); +void AddAppendix(char *Name, const char *App); +void tackon(char *, const char *); +int LocateFile(const char *Filename, char *Dest, const char *App, + struct WordList *wl); + +#endif /* OPSYS_H */ diff --git a/Build/source/utils/chktex/chktex-1.6.6/Resource.c b/Build/source/utils/chktex/chktex-1.6.6/Resource.c new file mode 100644 index 00000000000..c30e73acd6d --- /dev/null +++ b/Build/source/utils/chktex/chktex-1.6.6/Resource.c @@ -0,0 +1,510 @@ +/* + * ChkTeX, resource file reader. + * Copyright (C) 1995-96 Jens T. Berger Thielemann + * + * 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + * Contact the author at: + * Jens Berger + * Spektrumvn. 4 + * N-0666 Oslo + * Norway + * E-mail: <jensthi@ifi.uio.no> + * + * + */ + +#include "ChkTeX.h" +#include "OpSys.h" +#include "Utility.h" +#include "Resource.h" + +#define LNEMPTY(a) struct WordList a = {0, 1, {0}, {0}}; +#define LIST(a) struct WordList a = {0, 0, {0}, {0}}; +#define LCASE(a) LIST(a) LIST(a ## Case) +#define KEY(a,def) const char *a = def; + +RESOURCE_INFO +#undef KEY +#undef LCASE +#undef LNEMPTY +#undef LIST + struct KeyWord +{ + const char *Name; + const char **String; /* Keyword = item */ + struct WordList *List, /* Case-sensitive strings */ + *CaseList; /* Case-insensitive strings */ +}; + +#define LNEMPTY LIST +#define LIST(name) {#name, NULL, &name, NULL}, +#define LCASE(name) {#name, NULL, &name, &name ## Case}, +#define KEY(name,def) {#name, &name, NULL, NULL}, + +struct KeyWord Keys[] = { + RESOURCE_INFO {NULL, NULL, NULL, NULL} +}; + +#undef KEY +#undef LCASE +#undef LNEMPTY +#undef LIST + + +/***************************** RESOURCE HANDLING **************************/ + +#define TOKENBITS(name) enum name { \ + BIT(Eof), /* End-of-file */ \ + BIT(Open), /* { */ \ + BIT(Close), /* } */ \ + BIT(BrOpen), /* [ */ \ + BIT(BrClose), /* ] */ \ + BIT(Equal), /* = */ \ + BIT(Word), /* Keyword */ \ + BIT(Item) /* List item */ \ +}; + +#undef BIT +#define BIT BITDEF1 +TOKENBITS(Token_BIT) +#undef BIT +#define BIT BITDEF2 + TOKENBITS(Token) + static enum Token Expect; + static unsigned long RsrcLine; + + static enum Token ReadWord(char *, FILE *); + static char MapChars(char **String); + + + +/* + * Parses the contents of a resource file. + * + * Format: + * Keyword { item1 item2 ... } [ item1 item2 ... ] + * Keyword [ item1 item2 ... ] { item1 item2 ... } + * Keyword = { item1 item2 ... } + * Keyword = [ item1 item2 ... ] + * Keyword = item + * + * Returns whether the attempt was a successful one. + */ + + int ReadRC(const char *Filename) +{ + const char *String = NULL; + int Success = FALSE; + FILE *fh; + enum Token Token; + unsigned long Counter; + + struct KeyWord *CurWord = NULL; + + /* Interpret incoming words as ... */ + enum + { + whList, /* List elements */ + whCaseList, /* Case insensitive list elements */ + whEqual, /* Solo elements */ + whNone /* List items not accepted */ + } What = whNone; + + + RsrcLine = 0; + Expect = FLG_Word | FLG_Eof; + + if ((fh = fopen(Filename, "r"))) + { + Success = TRUE; + do + { + Token = ReadWord(ReadBuffer, fh); + if (!(Expect & Token)) + { + switch (Token) + { + case FLG_Item: + String = "item"; + break; + case FLG_Word: + String = "word"; + break; + case FLG_Equal: + String = "`='"; + break; + case FLG_Open: + String = "`{'"; + break; + case FLG_Close: + String = "`}'"; + break; + case FLG_BrOpen: + String = "`['"; + break; + case FLG_BrClose: + String = "`]'"; + break; + case FLG_Eof: + String = "EOF"; + break; + } + PrintPrgErr(pmFaultFmt, Filename, RsrcLine, String); + Success = FALSE; + Token = FLG_Eof; + } + + switch (Token) + { + case FLG_Word: + for (Counter = 0; Keys[Counter].Name; Counter++) + { + if (!strcasecmp(ReadBuffer, Keys[Counter].Name)) + { + CurWord = &Keys[Counter]; + Expect = (CurWord->List ? FLG_Open : 0) | + (CurWord->CaseList ? FLG_BrOpen : 0) | FLG_Equal; + break; + } + } + if (!Keys[Counter].Name) + { + PrintPrgErr(pmKeyWord, ReadBuffer, Filename); + Success = FALSE; + Token = FLG_Eof; + } + break; + case FLG_Item: + switch (What) + { + case whEqual: + if (!(*(CurWord->String) = strdup(ReadBuffer))) + { + PrintPrgErr(pmStrDupErr); + Token = FLG_Eof; + Success = FALSE; + } + + What = whNone; + Expect = FLG_Word | FLG_Eof; + break; + case whCaseList: + if (!InsertWord(ReadBuffer, CurWord->CaseList)) + { + Token = FLG_Eof; + Success = FALSE; + } + break; + case whList: + if (!InsertWord(ReadBuffer, CurWord->List)) + { + Token = FLG_Eof; + Success = FALSE; + } + break; + case whNone: + PrintPrgErr(pmAssert); + } + break; + case FLG_Equal: + What = whEqual; + Expect = (CurWord->List ? FLG_Open : 0) | + (CurWord->CaseList ? FLG_BrOpen : 0) | + (CurWord->String ? FLG_Item : 0); + break; + case FLG_BrOpen: + if (What == whEqual) + ClearWord(CurWord->CaseList); + What = whCaseList; + Expect = FLG_Item | FLG_BrClose; + break; + case FLG_Open: + if (What == whEqual) + ClearWord(CurWord->List); + What = whList; + Expect = FLG_Item | FLG_Close; + break; + case FLG_BrClose: + case FLG_Close: + Expect = (CurWord->List ? FLG_Open : 0) | + (CurWord->CaseList ? FLG_BrOpen : 0) | + FLG_Equal | FLG_Word | FLG_Eof; + What = whNone; + break; + case FLG_Eof: + break; + } + } + while (Token != FLG_Eof); + + fclose(fh); + } + else + PrintPrgErr(pmRsrcOpen, Filename); + + return (Success); +} + +/* + * Reads a token from the `.chktexrc' file; if the token is + * FLG_Item or FLG_Word, Buffer will contain the plaintext of the + * token. If not, the contents are undefined. + */ + +static enum Token ReadWord(char *Buffer, FILE * fh) +{ + static char *String = NULL; + static char StatBuf[BUFSIZ]; + enum Token Retval = FLG_Eof; + + unsigned short Chr; + + char *Ptr; + int OnceMore = TRUE, Cont = TRUE; + + if (Buffer) + { + do + { + if (!(String && *String)) + { + if (fgets(StatBuf, BUFSIZ - 1, fh)) + String = strip(StatBuf, STRP_RGT); + RsrcLine++; + } + + Ptr = Buffer; + if (String && (String = strip(String, STRP_LFT))) + { + switch (Chr = *String) + { + case 0: + case CMNT: + String = NULL; + break; + case QUOTE: /* Quoted argument */ + Cont = TRUE; + String++; + + while (Cont) + { + switch (Chr = *String++) + { + case 0: + case QUOTE: + Cont = FALSE; + break; + case ESCAPE: + if (!(Chr = MapChars(&String))) + break; + + /* FALLTHRU */ + default: + *Ptr++ = Chr; + } + } + *Ptr = 0; + Retval = FLG_Item; + OnceMore = FALSE; + break; + +#define DONEKEY (FLG_Open | FLG_Equal | FLG_BrOpen) +#define DONELIST (FLG_Close | FLG_BrClose) +#define TOKEN(c, ctxt, tk) case c: if(Expect & (ctxt)) Retval = tk; LAST(token); + + LOOP(token, + TOKEN('{', DONEKEY, FLG_Open); + TOKEN('[', DONEKEY, FLG_BrOpen); + TOKEN('=', DONEKEY, FLG_Equal); + TOKEN(']', DONELIST, FLG_BrClose); + TOKEN('}', DONELIST, FLG_Close); + ); + if (Retval != FLG_Eof) + { + OnceMore = FALSE; + String++; + break; + } + + /* FALLTHRU */ + + default: /* Non-quoted argument */ + OnceMore = FALSE; + if (Expect & FLG_Word) + { + while (Cont) + { + Chr = *String++; + if (isalpha((unsigned char)Chr)) + *Ptr++ = Chr; + else + Cont = FALSE; + } + String--; + Retval = FLG_Word; + } + else /* Expect & FLG_Item */ + { + while (Cont) + { + switch (Chr = *String++) + { + case CMNT: + case 0: + String = NULL; + Cont = FALSE; + break; + case ESCAPE: + if (!(Chr = MapChars(&String))) + break; + + *Ptr++ = Chr; + break; + default: + if (!isspace((unsigned char)Chr)) + *Ptr++ = Chr; + else + Cont = FALSE; + } + } + Retval = FLG_Item; + } + + if (!(Buffer[0])) + { + PrintPrgErr(pmEmptyToken); + if (*String) + String++; + } + *Ptr = 0; + break; + } + } + else + OnceMore = FALSE; + } + while (OnceMore); + } + return (Retval); +} + + + +/* + * Translates escape codes. Give it a pointer to the char after the + * escape char, and we'll return what it maps to. + */ + +#define MAP(a,b) case a: Tmp = b; break; + +static char MapChars(char **String) +{ + int Chr, Tmp = 0; + unsigned short Cnt; + + Chr = *((char *) (*String)++); + + switch (tolower((unsigned char)Chr)) + { + MAP(QUOTE, QUOTE); + MAP(ESCAPE, ESCAPE); + MAP(CMNT, CMNT); + MAP('n', '\n'); + MAP('r', '\r'); + MAP('b', '\b'); + MAP('t', '\t'); + MAP('f', '\f'); + MAP('{', '{'); + MAP('}', '}'); + MAP('[', '['); + MAP(']', ']'); + MAP('=', '='); + MAP(' ', ' '); + case 'x': + Tmp = 0; + + for (Cnt = 0; Cnt < 2; Cnt++) + { + Chr = *((*String)++); + if (isxdigit((unsigned char)Chr)) + { + Chr = toupper((unsigned char)Chr); + Tmp = (Tmp << 4) + Chr; + + if (isdigit((unsigned char)Chr)) + Tmp -= '0'; + else + Tmp -= 'A' - 10; + } + else + { + if (Chr) + { + PrintPrgErr(pmNotPSDigit, Chr, "hex"); + Tmp = 0; + } + break; + } + } + break; + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + + Tmp = Chr - '0'; + + for (Cnt = 0; Cnt < 2; Cnt++) + { + Chr = *((*String)++); + if (within('0', Chr, '7')) + Tmp = (Tmp * 8) + Chr - '0'; + else + { + if (Chr) + { + PrintPrgErr(pmNotPSDigit, Chr, "octal"); + Tmp = 0; + } + break; + } + } + break; + case 'd': + for (Cnt = 0; Cnt < 3; Cnt++) + { + if (isdigit((unsigned char)(Chr = *((*String)++)))) + Tmp = (Tmp * 10) + Chr - '0'; + else + { + if (Chr) + { + PrintPrgErr(pmNotPSDigit, Chr, ""); + Tmp = 0; + } + break; + } + } + break; + default: + PrintPrgErr(pmEscCode, ESCAPE, Chr); + } + return (Tmp); +} diff --git a/Build/source/utils/chktex/chktex-1.6.6/Resource.h b/Build/source/utils/chktex/chktex-1.6.6/Resource.h new file mode 100644 index 00000000000..7f23333d3ff --- /dev/null +++ b/Build/source/utils/chktex/chktex-1.6.6/Resource.h @@ -0,0 +1,61 @@ +/* + * ChkTeX, resource file reader. + * Copyright (C) 1995-96 Jens T. Berger Thielemann + * + * 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + * Contact the author at: + * Jens Berger + * Spektrumvn. 4 + * N-0666 Oslo + * Norway + * E-mail: <jensthi@ifi.uio.no> + * + * + */ + +#ifndef RESOURCE_H +#define RESOURCE_H + +#include "ChkTeX.h" + +#define QUOTE '\"' /* Char used to quote text containing blanks */ +#define ESCAPE '!' /* Char used to access special characters */ +#define CMNT '#' /* Char used as comment */ + +#define RESOURCE_INFO \ + LIST(Silent) LIST(Linker) LIST(IJAccent) LIST(Italic)\ + LIST(ItalCmd) LIST(PostLink) LIST(WipeArg) LIST(VerbEnvir)\ + LIST(MathEnvir) LIST(MathRoman) LIST(HyphDash) LIST(NumDash)\ + LIST(WordDash) LIST(CenterDots) LIST(LowDots) LIST(OutFormat)\ + LIST(Primitives) LIST(NotPreSpaced) LIST(NonItalic) LIST(NoCharNext)\ + LNEMPTY(CmdLine) LNEMPTY(TeXInputs)\ + LCASE(Abbrev) LCASE(UserWarn)\ + KEY(VerbClear, "|") KEY(QuoteStyle, "Traditional") KEY(TabSize, "8") + +#define LIST(a) extern struct WordList a; +#define LNEMPTY LIST +#define LCASE(a) LIST(a) LIST(a ## Case) +#define KEY(a,def) extern const char *a; + +RESOURCE_INFO +#undef KEY +#undef LCASE +#undef LNEMPTY +#undef LIST +int ReadRC(const char *); + + +#endif /* RESOURCE */ diff --git a/Build/source/utils/chktex/chktex-1.6.6/Test.tex b/Build/source/utils/chktex/chktex-1.6.6/Test.tex new file mode 100644 index 00000000000..c848fac7837 --- /dev/null +++ b/Build/source/utils/chktex/chktex-1.6.6/Test.tex @@ -0,0 +1,186 @@ +Note: This file was written with only two purposes in mind: + o To test the program upon it + o To show off some of the features + +Most of the file does thus consist of lots of pseudo-commands, which +are nonsense in a TeXnical manner. + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +% Warning 1 + +\foo This is an error. +\smallskip This is a not. $\foo Neither$ is this. + +% Warning 2 + +This is a faulty reference to \ref{foo} +This is not a faulty reference to~\ref{foo} + +% Warning 3 + +$[(ab)^{-1}]^{-2}$ is not beautiful +${{[{(ab)}^{-1}]}}^{-2}$ is beautiful + +% Warning 4-6, 28 + +Testing {\it italic} in \/ this {\em sentence\/}, as {\em you \/ see\/}. +Testing {\it italic\/} in this {\em sentence}, as {\em you see}. + +% LaTeX2e + +Testing \textem{italic} in \/ this \textit{sentence\/}, as \textem{you \/ see\/}. +Testing \textem{italic\/} in this \textit{sentence}, as \textem{you see}. + +% Warning 7 + +This \'is a test of $\hat{j}$ accents. +This \'{\i}s a test of $\hat{\jmath}$ accents. + +% Warning 8 + +It wasn't anything - just a 2---3 star--shots. +It wasn't anything --- just a 2--3 star-shots. +It's just a start-shot. +is also used to send cross-calls (xc) and cross-traps (xt) to other +% From Knuths TeXbook Chapter 14 +% "How TeX Breaks Paragraphs into Lines", fourth paragraph: +in plain TeX---are the key + +% Warning 9-10 + +% Brackets: + +)}{[])} }}}]]]))) +{[]} ((([[[{{{}}}]]]))) + +% Envs: + +\begin{quux} \begin{baz} \end{quux} \end{baz} \end{asoi} \begin{dobedo} + +\begin{foo} \begin{bar} \end{bar}\end{foo} + +% Warning 11 + +Foo...bar. $1,...,3$. $1+...+3$. $1,\cdots,3$. $1\cdot\ldots\cdot3$. +Foo\dots bar. $1,\ldots,3$. $1+\cdots+3$. $1,\ldots,3$. $1\cdot\cdots\cdot3$. + +% Warning 12 + +1st. Foo Inc. Ab.cd. foo ab.cd. Foo. bar +1st.\ foo Inc.\ ab.cd.\ foo ab.cd.\ Foo.\ bar + +% Warning 13 + +Look at THIS! It's an error. +Look at THIS\@! It's an error. D. E. Knuth. + +% Warning 14 + +\hat +\hat{a} + +% Warning 18,19 + +Is this an "example", or is it an ´example´. +Is this an `example', or is it an `example'. + +% Warning 20 + +That bug is \unknown\ to me. + +% Warning 21 + +\LaTeX\ is an extension of \TeX\. Right? +\LaTeX\ is an extension of \TeX. Right? + +% Warning 23 + +```Hello', I heard him said'', she remembered. +``\,`Hello', I heard him said'', she remembered. + +% Warning 24 + +Indexing text \index{text} is fun! +Indexing text\index{text} is fun! + +% Warning 25 + +$5\cdot10^10$ +$5\cdot10^{10}$ + +% Warning 26 + +Do you understand ? +Do you understand? + +% Warning 27 + +\input input.tex +\input input + +% Warning 29 +The program opens a screen sized 640x200 pixels +The program opens a screen sized $640\times200$ pixels + +% Warning 30 + +White is a beautiful colour. +White is a beautiful colour. + +% Warning 31 +\begin{verbatim} +\this is +\end{verbatim} foo bar + +% Warning 32-34 + +This is either an 'example`, an ''example`` or an `"`example'`'. +This is either an `example', an ``example'' or an ``example''. + +% Warning 35 + +$sin^2 + cos^2 = 1$ +$\sin^2 + \cos^2 = 1$ + +% Warning 36-37 + +This( an example( Nuff said )), illustrates( ``my'' )point. +This (an example (Nuff said)), illustrates (``my'') point. + +% Warning 38 +``An example,'' he said, ``would be great.'' +``An example'', he said, ``would be great''. + +% Warning 39 + +For output codes, see table ~\ref{tab:fmtout}. +For output codes, see table~\ref{tab:fmtout}. + +% Warning 40 +$\this,$ and $$this$$. +$\this$, and $$this.$$ + +% Warning 41 +foo \above qux +\frac{foo}{qux} + +% Warning 42 +This is a footnote \footnote{foo}. +This is a footnote\footnote{foo}. + + +% Verb check + +\verb@\this is )() lots of errors, etc. Or what?@ +\verb# + +\begin{verbatim} +\this is +\end{verbatim} FOO + +% Warning 16,15 + +$$( + + diff --git a/Build/source/utils/chktex/chktex-1.6.6/Utility.c b/Build/source/utils/chktex/chktex-1.6.6/Utility.c new file mode 100644 index 00000000000..9c027629c2a --- /dev/null +++ b/Build/source/utils/chktex/chktex-1.6.6/Utility.c @@ -0,0 +1,944 @@ +/* + * ChkTeX, utility functions. + * Copyright (C) 1995-96 Jens T. Berger Thielemann + * + * 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + * Contact the author at: + * Jens Berger + * Spektrumvn. 4 + * N-0666 Oslo + * Norway + * E-mail: <jensthi@ifi.uio.no> + * + * + */ + +#include "ChkTeX.h" +#include "Utility.h" +#include "Resource.h" +#include "OpSys.h" + +#ifdef ASM_HASHWORD +extern unsigned short HashWord(const char *a); +typedef unsigned short HASH_TYPE; +#else +typedef unsigned long HASH_TYPE; +#endif + +/***************************** SUPPORT FUNCTIONS ************************/ + + +/* + * Copies a string with a maximum length of `len' starting at `pos' in + * `source' into `dest'. + * Returns -1 if the pos value is beyond the length of the source value, + * else NULL. + */ + + +short substring(const char *source, char *dest, unsigned long pos, long len) +{ + const char *Start; + short Retval = -1; + + if (len >= 0) + { + if (strlen(source) > pos) + { + Start = &source[pos]; + + while ((len-- > 0) && (*dest++ = *Start++)) + ; + + if (len == -1) + Retval = 0; + } + } + else + Retval = 0L; + + *dest = 0; + + return (Retval); +} + + +/* + * Determine whether a file exists. + * + */ + + +int fexists(const char *Filename) +{ + int Retval; + +#if defined(F_OK) && defined(R_OK) && defined(HAVE_ACCESS) + + Retval = access(Filename, F_OK | R_OK) == 0; +#else + + FILE *fh; + + if (fh = fopen(Filename, "r")) + { + Retval = TRUE; + fclose(fh); + } + else + Retval = FALSE; +#endif + + return (Retval); +} + + + +/* + * 'Safe' memset() replacement. + * Just tries to check the parameters, so that the risk of killing + * innocent memory is lowered. + * Please note that the `n' parameter now is an signed longword, not + * an size_t. Won't permit that `n' exceeds BUFLEN, nor negative sizes. + * Returns `to' if some memset()'ing was done, NULL if not. + */ + +void *sfmemset(void *to, int c, long n) +{ + if (to && (n > 0)) + { + n = min(n, BUFSIZ); + + return (memset(to, c, (size_t) n)); + } + return (NULL); +} + + +/* + * Quick replace function + * Replaces every occurrence of a character in a string with another one. + */ + +void strrep(char *String, /* String to replace within. */ + const char From, /* Character to search for. */ + const char To) /* Character to put instead. */ +{ + register int c; + while ((c = *String++)) + { + if (c == From) + String[-1] = To; + } +} + +/* + * Replaces every char not in Prot with To in Buf + */ + +void strxrep(char *Buf, const char *Prot, const char To) +{ + int c; + + while ((c = *Buf)) + { + if (!strchr(Prot, c)) + *Buf = To; + Buf++; + } +} + +/* + * Strips tail and/or front of a string + * Kills trailing/leading spaces. The macro/function LATEX_SPACE(char c) + * is used to decide whether a space should be skipped. This function + * should return TRUE if the character should be skipped, FALSE if not. + * Returns the string which was passed onto it. + */ + + +char *strip(char *str, /* String to strip */ + const enum Strip flags) +/* One of the following: */ +/* STRP_LFT - Strips leading blanks */ +/* STRP_RGT - Strips trailing blanks */ +/* STRP_BTH - Strips on both sides */ +{ + char *bufptr = str; + char *nlptr; + char c; + + if (bufptr && (c = *bufptr)) + { + if (flags & STRP_LFT) + { + if (LATEX_SPACE(c) && c) + { + do + { + c = *++bufptr; + } + while (LATEX_SPACE(c) && c); + } + } + + if (flags & STRP_RGT) + { + if (c && *bufptr) + { + nlptr = bufptr; + + while (*++nlptr) + ; + + do + { + *nlptr = 0; + c = *--nlptr; + } + while (LATEX_SPACE(c) && c && (nlptr > bufptr)); + + } + else + *bufptr = 0; + } + } + return (bufptr); +} + + +/* + * Converts all the chars in the string passed into lowercase. + */ + +#ifndef HAVE_STRLWR +char *strlwr(char *String) +{ + char *Bufptr; + char TmpC; + + for (Bufptr = String; (TmpC = *Bufptr); Bufptr++) + *Bufptr = tolower((unsigned char)TmpC); + + return (String); +} +#endif + +/* + * Returns a duplicate of the string passed. + */ + +#ifndef HAVE_STRDUP +char *strdup(const char *String) +{ + char *Retval = NULL; + size_t Len; + + if (String) + { + Len = strlen(String) + 1; + if ((Retval = malloc(Len))) + memcpy(Retval, String, Len); + } + + return (Retval); +} +#endif + +/* + * Does the same as strdup, but adds a zero-filled padding, length extra bytes. + */ + +char *strdupx(const char *String, int Extra) +{ + char *Retval = NULL; + size_t Len; + + if (String) + { + Len = strlen(String) + 1 + Extra; + if ((Retval = malloc(Len))) + strncpy(Retval, String, Len); + } + + return (Retval); +} + +/* + * Case-insensitive comparison of two strings. + */ + +#ifndef HAVE_STRCASECMP +int strcasecmp(const char *a, const char *b) +{ + int aa, bb; + + do + { + aa = *a++; + bb = *b++; + } + while (aa && (tolower((unsigned char)aa) == tolower((unsigned char)bb))); + /* bb != 0 is implicit */ + + return (tolower((unsigned char)aa) - tolower((unsigned char)bb)); +} +#endif + +/* + * Not all reallocs are intelligent enough to handle NULL's as + * parameters. This fixes this. + */ + +void *saferealloc(void *b, size_t n) +{ + void *Retval = NULL; + + if (b) + { + if (n) + Retval = realloc(b, n); + else + free(b); + } + else + Retval = malloc(n); + + return (Retval); +} + +/* + * Repeatedly writes the From string over To so that we overwrite Len bytes. + * Does nothing if passed empty/NULL string. + */ + +void strwrite(char *To, const char *From, unsigned long Len) +{ + unsigned long i, j; + unsigned long FromLen = strlen(From); + + Len = min(Len, BUFSIZ); + + if (To && From) + { + switch (FromLen) + { + case 0: + break; + case 1: + memset(To, *From, Len); + break; + default: + for (i = j = 0; i < Len; i++, j++) + { + if (j >= FromLen) + j = 0; + To[i] = From[j]; + } + } + } +} + +/* + * Checks whether Cmp comes after Str. + * + */ + +int strafter(const char *Str, const char *Cmp) +{ + return (strncmp(Str, Cmp, strlen(Cmp))); +} + +/* + * Checks whether Cmp comes before Str. Returns 0 if so, non-zero if not. + * + */ + +int strinfront(const char *Str, const char *Cmp) +{ + int CmpLen; + + if ((CmpLen = strlen(Cmp))) + { + Cmp += CmpLen; + Str++; + + while ((*--Cmp == *--Str) && (--CmpLen > 0)) + ; + + return (CmpLen); + } + else + return (1); +} + + +/*************************** HASH INDEX **************************/ + +/* + * Hashes a string. The string ought be rather short. We use an asm + * version the Amiga; note that this returns an unsigned short instead. + * + * The algorithm was designed by Peter Weinberger. This version was + * adapted from Dr Dobb's Journal April 1996 page 26. + */ + +#ifndef ASM_HASHWORD +static unsigned long HashWord(const char *str) +{ + register unsigned long h = 0, hbit, c; + + while ((c = *str++)) + { + h = (h << 4) ^ c; + if ((hbit = h & 0xf0000000)) + h ^= hbit >> 24; + h &= ~hbit; + } + + return (h); +} +#endif + +/* + * Inserts a string into a hash index. Note: You'll have to + * duplicate the string yourself. + */ + +void InsertHash(char *a, struct Hash *h) +{ + struct HashEntry **he, *newhe; + + if (!h->Index) + { + if (!((h->Index = calloc(HASH_SIZE, sizeof(struct HashEntry *))))) + PrintPrgErr(pmWordListErr); + } + + he = &h->Index[HashWord(a) % HASH_SIZE]; + + if ((newhe = malloc(sizeof(struct HashEntry)))) + { + newhe->Next = *he; + newhe->Str = a; + *he = newhe; + } + else + PrintPrgErr(pmWordListErr); +} + +/* + * Checks whether a string previously has been registered in a + * hash index. + */ + +char *HasHash(const char *a, const struct Hash *h) +{ + struct HashEntry *he; + HASH_TYPE i; /* Special magic to optimize SAS/C */ + + /* Do we have a hash? */ + if (!h->Index) + return NULL; + + /* Find entry in hash */ + i = HashWord(a); + i %= HASH_SIZE; + he = h->Index[i]; + + /* Search in the entry for the item */ + while (he) + { + if (!strcmp(he->Str, a)) + return (he->Str); + else + he = he->Next; + } + return (NULL); +} + +/* + * Clears a hash table. + */ + +void ClearHash(struct Hash *h) +{ + if (h && h->Index) + memset(h->Index, '\0', HASH_SIZE * sizeof(struct HashEntry *)); +} + +/* + * Rehashes a wordlist. If you change any of the elem's, you must + * call this. + * + */ + +static void ReHash(struct WordList *WL) +{ + unsigned long i = 0; + + ClearHash(&WL->Hash); + FORWL(i, *WL) InsertHash(WL->Stack.Data[i], &WL->Hash); +} + +/*************************** WORDLIST HANDLING **************************/ + +/* + * Inserts a duplicate of `Word' into the `Wordlist' structure. You do thus + * not need to make a duplicate of `Word' yourself. + */ + +int InsertWord(const char *Word, struct WordList *WL) +{ + char *WrdCpy; + unsigned long Len; + + if ((WrdCpy = strdupx(Word, WALLBYTES))) + { + if (StkPush(WrdCpy, &WL->Stack)) + { + Len = strlen(Word); + if (WL->MaxLen < Len) + WL->MaxLen = Len; + + InsertHash(WrdCpy, &WL->Hash); + return (TRUE); + } + + free(WrdCpy); + } + + return (FALSE); +} + +/* + * Clears a WordList; removing all items. + */ + +void ClearWord(struct WordList *WL) +{ + if (WL) + { + WL->Stack.Used = 0; + WL->MaxLen = 0; + ClearHash(&WL->Hash); + if (WL->NonEmpty) + InsertWord("", WL); + } +} + +/* + * Query whether a `Word' is previously InsertWord()'ed into the WL + * structure. Does case-sensitive comparison. + * + * Returns the data in the list. + */ + + +char *HasWord(const char *Word, struct WordList *WL) +{ + return HasHash(Word, &WL->Hash); +} + +/* + * Make all the words in a list lower case for later case-insensitive + * comparison. + */ + +void MakeLower(struct WordList *wl) +{ + unsigned long i; + FORWL(i, *wl) strlwr(wl->Stack.Data[i]); + ReHash(wl); +} + +/* + * Calls strrep on each argument in a list. + */ + +void ListRep(struct WordList *wl, const char From, const char To) +{ + unsigned long i; + FORWL(i, *wl) strrep(wl->Stack.Data[i], From, To); + ReHash(wl); +} + + + +/************************** GENERIC STACK ******************************/ + +/* + * Push something onto a stack. Returns TRUE if successful, else FALSE. + * Note: You can not push a NULL Data element. + */ + +int StkPush(void *Data, struct Stack *Stack) +{ + unsigned long NewSize; + void **NewBuf; + + if (Data && Stack) + { + if (Stack->Used >= Stack->Size) + { + NewSize = Stack->Size + MINPUDDLE; + + if ((NewBuf = saferealloc(Stack->Data, + (size_t) NewSize * sizeof(void *)))) + { + Stack->Size = NewSize; + Stack->Data = NewBuf; + } + else + return (FALSE); + } + + Stack->Data[Stack->Used++] = Data; + return (TRUE); + } + + return (FALSE); +} + +/* + * Pops an element from the stack. + * + */ + +void *StkPop(struct Stack *Stack) +{ + void *Retval = NULL; + + if (Stack && (Stack->Used > 0)) + { + Retval = Stack->Data[--Stack->Used]; + +#ifdef NO_DIRTY_TRICKS + + { + void **NewBuf; + + if (Stack->Used < (Stack->Size / 2)) + { + unsigned long NewSize; + NewSize = Stack->Size - MINPUDDLE; + NewSize = max(NewSize, MINPUDDLE); + + if (NewBuf = saferealloc(Stack->Data, + (size_t) NewSize * sizeof(void *))) + { + Stack->Size = NewSize; + Stack->Data = NewBuf; + } + } + } +#endif + + } + return (Retval); +} + +/* + * Returns the topmost element of the stack. + */ + +void *StkTop(struct Stack *Stack) +{ + if (Stack && (Stack->Used > 0)) + return (Stack->Data[Stack->Used - 1]); + else + return (NULL); +} + +/****************************** INPUT STACK *****************************/ + +int PushFileName(const char *Name, struct Stack *stack) +{ + FILE *fh = NULL; + static char NameBuf[BUFSIZ]; + + if (Name && stack) + { + if (LocateFile(Name, NameBuf, ".tex", &TeXInputs)) + { + if ((fh = fopen(NameBuf, "r"))) + { + return (PushFile(NameBuf, fh, stack)); + } + } + PrintPrgErr(pmNoTeXOpen, Name); + } + return (FALSE); +} + + +int PushFile(const char *Name, FILE * fh, struct Stack *stack) +{ + struct FileNode *fn; + + if (Name && fh && stack) + { + if ((fn = malloc(sizeof(struct FileNode)))) + { + if ((fn->Name = strdup(Name))) + { + fn->fh = fh; + fn->Line = 0L; + if (StkPush(fn, stack)) + return (TRUE); + free(fn->Name); + } + free(fn); + } + PrintPrgErr(pmNoStackMem); + } + + return (FALSE); +} + +char *FGetsStk(char *Dest, unsigned long len, struct Stack *stack) +{ + struct FileNode *fn; + char *Retval = NULL; + + if ((fn = StkTop(stack))) + { + do + { + Retval = fgets(Dest, (int)len, fn->fh); + if (Retval) { + if (Retval[strlen(Retval)-1] == '\n') + fn->Line++; + break; + } + + fn = StkPop(stack); + fclose(fn->fh); + free(fn); + + } + while (!Retval && (fn = StkTop(stack))); + } + + return (Retval); +} + +const char *CurStkName(struct Stack *stack) +{ + struct FileNode *fn; + static const char *LastName = ""; + + if (PseudoInName && (stack->Used <= 1)) + return (PseudoInName); + else + { + if ((fn = StkTop(stack))) + return (LastName = fn->Name); + else + return (LastName); + } +} + + +FILE *CurStkFile(struct Stack * stack) +{ + struct FileNode *fn; + + if ((fn = StkTop(stack))) + return (fn->fh); + else + return (NULL); +} + +unsigned long CurStkLine(struct Stack *stack) +{ + struct FileNode *fn; + static unsigned long LastLine = 0L; + + if ((fn = StkTop(stack))) + return (LastLine = fn->Line); + else + return (LastLine); +} + + + +/************************** CHARACTER STACK ******************************/ + +/* + * Pushes the character on the stack. + */ + +struct ErrInfo *PushChar(const char c, const unsigned long Line, + const unsigned long Column, struct Stack *Stk, + const char *LineCpy) +{ + char Buf[2]; + + Buf[0] = c; + Buf[1] = 0; + + return (PushErr(Buf, Line, Column, 1, LineCpy, Stk)); +} + +struct ErrInfo *PushErr(const char *Data, const unsigned long Line, + const unsigned long Column, + const unsigned long ErrLen, const char *LineCpy, + struct Stack *Stk) +{ + struct ErrInfo *ci; + + if ((ci = malloc(sizeof(struct ErrInfo)))) + { + if ((ci->Data = strdup(Data))) + { + ci->File = CurStkName(&InputStack); + ci->Line = Line; + ci->ErrLen = ErrLen; + ci->Column = Column; + ci->LineBuf = LineCpy; + ci->Flags = efNone; + + if (StkPush(ci, Stk)) + return (ci); + } + else + PrintPrgErr(pmStrDupErr); + free(ci); + } + + return (NULL); +} + +/* + * Finds the uppermost entry in the stack with a data matching + * String. + */ + +struct ErrInfo *TopMatch(struct Stack *Stack, char *String) +{ + int i; + struct ErrInfo *retval = NULL; + + if (Stack && String) + { + for (i = Stack->Used - 1; i >= 0; i--) + { + if (!strcmp(String, ((struct ErrInfo *) Stack->Data[i])->Data)) + { + retval = (struct ErrInfo *) Stack->Data[i]; + break; + } + } + } + return (retval); +} + +/* + * Returns and removes a character from the stack, returns NULL if + * the stack is empty. + */ + + +struct ErrInfo *PopErr(struct Stack *Stack) +{ + return ((struct ErrInfo *) StkPop(Stack)); +} + +/* + * Same as PopChar(), but lets the error alone on the stack. + */ + + +struct ErrInfo *TopErr(struct Stack *Stack) +{ + return ((struct ErrInfo *) StkTop(Stack)); +} + +/* + * Free all resources associated with a struct FreeInfo. + */ + +void FreeErrInfo(struct ErrInfo *ei) +{ + if (ei) + { + if (ei->Data) + free(ei->Data); + + free(ei); + } +} + + +/************************* OPEN/CLOSE COUNTING **************************/ + +/* + * Returns the index a given bracket (`()[]{}') character has in the + * BrOrder array. Returns ~0 if the character was not a bracket. + */ + +long BrackIndex(const char c) +{ + switch (c) + { + case '(': + return (0); + case ')': + return (1); + case '[': + return (2); + case ']': + return (3); + case '{': + return (4); + case '}': + return (5); + default: + return (~0L); + } +} + +/* + * Counts brackets for you. Give it a bracket, and it will update the + * corresponding counter. + */ + +void AddBracket(const char c) +{ + long Index; + + if ((Index = BrackIndex(c)) != -1) + Brackets[Index]++; + +} + +/* + * Returns the character that matches the given bracket, NULL if `c' + * wasn't a bracket character. + */ + +char MatchBracket(const char c) +{ + unsigned long Index; + char Char = 0; + + + if ((Index = BrackIndex(c)) != ~0UL) + Char = BrOrder[Index ^ 1]; + + return (Char); +} diff --git a/Build/source/utils/chktex/chktex-1.6.6/Utility.h b/Build/source/utils/chktex/chktex-1.6.6/Utility.h new file mode 100644 index 00000000000..1293b8548f4 --- /dev/null +++ b/Build/source/utils/chktex/chktex-1.6.6/Utility.h @@ -0,0 +1,172 @@ +/* + * ChkTeX, utility functions -- header file. + * Copyright (C) 1995-96 Jens T. Berger Thielemann + * + * 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + * Contact the author at: + * Jens Berger + * Spektrumvn. 4 + * N-0666 Oslo + * Norway + * E-mail: <jensthi@ifi.uio.no> + * + * + */ + +#ifndef UTILITY_H +#define UTILITY_H 1 + +#include "ChkTeX.h" +#include "OpSys.h" + +/* + * How many indexes we'll allocate first time + */ +#define MINPUDDLE 256 + +/* + * How many bytes we want in front/end of each char buffer. > 2 + */ +#define WALLBYTES 4 + +#ifndef HASH_SIZE +# define HASH_SIZE 1009 /* A reasonably large prime */ +#endif + +#define FORWL(ind, list) for(ind = 0; ind < (list).Stack.Used; ind++) + + +enum Strip +{ + STRP_LFT = 0x01, + STRP_RGT = 0x02, + STRP_BTH = 0x03 +}; + +struct HashEntry +{ + struct HashEntry *Next; + char *Str; +}; + +struct Hash +{ + struct HashEntry **Index; +}; + +struct Stack +{ + void **Data; + unsigned long Size, Used; +}; + +struct WordList +{ + unsigned long MaxLen; + int NonEmpty; + struct Stack Stack; + struct Hash Hash; +}; +#define WORDLIST_DEFINED + +struct FileNode +{ + char *Name; + FILE *fh; + unsigned long Line; +}; + +/* Rotates x n bits left (should be an int, long, etc.) */ +#define ROTATEL(x,n) ((x<<n) | (x>>((CHAR_BIT*sizeof(x)) - n))) + +/* Rotates x n bits right (should be an int, long, etc.) */ +#define ROTATER(x,n) ((x>>n) | (x<<((CHAR_BIT*sizeof(x)) - n))) + +int fexists(const char *Filename); + +void *sfmemset(void *to, int c, long n); +void *saferealloc(void *old, size_t newsize); + +int strafter(const char *Str, const char *Cmp); +void strrep(char *String, const char From, const char To); +void strxrep(char *Buf, const char *Prot, const char To); +char *strip(char *String, const enum Strip What); +void strwrite(char *To, const char *From, unsigned long Len); +int strinfront(const char *Str, const char *Cmp); +char *strdupx(const char *String, int Extra); +void strmove(char *a, const char *b); + +void ClearHash(struct Hash *h); +void InsertHash(char *a, struct Hash *h); +char *HasHash(const char *a, const struct Hash *h); + +int InsertWord(const char *Word, struct WordList *WL); +char *HasWord(const char *Word, struct WordList *WL); +void MakeLower(struct WordList *wl); +void ListRep(struct WordList *wl, const char From, const char To); +void ClearWord(struct WordList *WL); + +int StkPush(void *Data, struct Stack *Stack); +void *StkPop(struct Stack *Stack); +void *StkTop(struct Stack *Stack); + +FILE *CurStkFile(struct Stack *stack); +const char *CurStkName(struct Stack *stack); +unsigned long CurStkLine(struct Stack *stack); +char *FGetsStk(char *Dest, unsigned long len, struct Stack *stack); +int PushFileName(const char *Name, struct Stack *stack); +int PushFile(const char *, FILE *, struct Stack *); + + +void FreeErrInfo(struct ErrInfo *ei); +struct ErrInfo *PushChar(const char c, const unsigned long Line, + const unsigned long Column, struct Stack *Stk, + const char *LineCpy); +struct ErrInfo *PushErr(const char *Data, const unsigned long Line, + const unsigned long Column, + const unsigned long ErrLen, const char *LineCpy, + struct Stack *Stk); +struct ErrInfo *TopChar(struct Stack *Stack); +struct ErrInfo *TopErr(struct Stack *Stack); +struct ErrInfo *PopErr(struct Stack *Stack); +struct ErrInfo *TopMatch(struct Stack *Stack, char *String); + +long BrackIndex(char const c); +void AddBracket(char const c); +char MatchBracket(char const); + + + +short substring(const char *source, char *dest, unsigned long pos, long len); + +#ifndef HAVE_STRLWR +# define strlwr mystrlwr +char *mystrlwr(char *String); +#endif + +#ifndef HAVE_STRDUP +# define strdup mystrdup +char *mystrdup(const char *String); +#endif + + +#ifndef HAVE_STRCASECMP +int strcasecmp(char *a, char *b); +#endif + + + +#endif /* UTILITY_H */ diff --git a/Build/source/utils/chktex/chktex-1.6.6/aclocal.m4 b/Build/source/utils/chktex/chktex-1.6.6/aclocal.m4 new file mode 100644 index 00000000000..52c43e7af14 --- /dev/null +++ b/Build/source/utils/chktex/chktex-1.6.6/aclocal.m4 @@ -0,0 +1,15 @@ +# generated automatically by aclocal 1.10 -*- Autoconf -*- + +# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, +# 2005, 2006 Free Software Foundation, Inc. +# This file 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. + +m4_include([m4/ax_cflags_strict_prototypes.m4]) +m4_include([m4/vl_prog_cc_warnings.m4]) diff --git a/Build/source/utils/chktex/chktex-1.6.6/autogen.sh b/Build/source/utils/chktex/chktex-1.6.6/autogen.sh new file mode 100755 index 00000000000..0982233b129 --- /dev/null +++ b/Build/source/utils/chktex/chktex-1.6.6/autogen.sh @@ -0,0 +1,49 @@ +#!/bin/sh + +ACLOCAL="aclocal -I m4" +AUTOHEADER="autoheader" +AUTOMAKE="automake --add-missing --copy --foreign" +AUTOCONF="autoconf" + +# Delete old cache directories. +# automake will stop if their contents was created by an earlier version. +rm -rf autom4te.cache + +# Generate the Makefiles and configure files +echo "Building macros..." +if ( $ACLOCAL --version ) < /dev/null > /dev/null 2>&1; then + $ACLOCAL +else + echo "aclocal not found -- aborting" + exit 1 +fi + +echo "Building config header template..." +if ( $AUTOHEADER --version ) < /dev/null > /dev/null 2>&1; then + $AUTOHEADER + echo timestamp > stamp-h.in +else + echo "autoheader not found -- aborting" + exit 1 +fi + +# We do not really need automake, but want to install programs like install-sh. +echo "Installing some useful programs..." +if ( $AUTOMAKE --version ) < /dev/null > /dev/null 2>&1; then + $AUTOMAKE 2>/dev/null +else + echo "automake not found -- aborting" + exit 1 +fi + +echo "Building configure..." +if ( $AUTOCONF --version ) < /dev/null > /dev/null 2>&1; then + $AUTOCONF +else + echo "autoconf not found -- aborting" + exit 1 +fi + +echo +echo 'run "./configure ; make"' +echo diff --git a/Build/source/utils/chktex/chktex-1.6.6/chktex.1 b/Build/source/utils/chktex/chktex-1.6.6/chktex.1 new file mode 100644 index 00000000000..914076926a8 --- /dev/null +++ b/Build/source/utils/chktex/chktex-1.6.6/chktex.1 @@ -0,0 +1,139 @@ +.TH chktex 1 "March 30, 2001" +.AT 3 +.SH NAME +chktex \- finds typographic errors in LaTeX. +.SH SYNOPSIS +.B chktex +.I [-hiqrW] [-v[0-...]] [-l <rcfile>] [-[wemn] <[1-42]|all>] +.I [-d[0-...]] [-p <name>] [-o <outfile>] [-[btxgI][0|1]] +.B file1 file2 ... +.SH DESCRIPTION +.I chktex +finds typographic errors in +.I LaTeX +. +.SH OPTIONS +.PP +Miscellaneous options: +.TP +.B "-h --help" +Print a help screen. +.TP +.B "-i --license" +Show distribution information. +.TP +.B "-l --localrc" +Read local .chktexrc formatted file. +.TP +.B "-d --debug" +Debug information. Give it a number. +.TP +.B "-r --reset" +Reset settings to default. +.PP +Muting warning messages: +.TP +.B "-w --warnon" +Makes msg # given a warning and turns it on. +.TP +.B "-e --erroron" +Makes msg # given an error and turns it on. +.TP +.B "-m --msgon" +Makes msg # given a message and turns it on. +.TP +.B "-n --nowarn" +Mutes msg # given. + +.PP +Output control flags: +.TP +.B "-v --verbosity" +How errors are displayed. +Default 1, 0=Less, 2=Fancy, 3=lacheck. +.TP +.B "-V --pipeverb" +How errors are displayed when stdout != tty. +Defaults to the same as -v. +.TP +.B "-s --splitchar" +String used to split fields when doing -v0 +.TP +.B "-o --output" +Redirect error report to a file. +.TP +.B "-q --quiet" +Shuts up about version information. +.TP +.B "-p --pseudoname" +Input file-name when reporting. +.TP +.B "-f --format" +Format to use for output + +.PP +Boolean switches (1 -> enables / 0 -> disables): +.TP +.B "-b --backup" +Backup output file. +.TP +.B "-x --wipeverb" +Ignore contents of `\\verb' commands. +.TP +.B "-g --globalrc" +Read global .chktexrc file. +.TP +.B "-I --inputfiles" +Execute \\input statements. +.TP +.B "-H --headererr" +Show errors found in front of \\begin{document} +.PP Miscellaneous switches: +.TP +.B "-W --version" +Version information + +.PP +If no LaTeX files are specified on the command line, we will read from +stdin. For explanation of warning/error messages, please consult the +main document /usr/share/doc/chktex/ChkTeX.dvi.gz. + +.SH DISTRIBUTION +Copyright (C) 1996 Jens T. Berger Thielemann +.PP +This program is free software; you can redistribute it and/or modify +it under the terms of the +.I GNU General Public License +as published by +the Free Software Foundation; either version 2 of the License, or +(at your option) any later version. +.PP +This program is distributed in the hope that it will be useful, +but +.B WITHOUT ANY WARRANTY; +without even the implied warranty of +.B MERCHANTABILITY +or +.B FITNESS FOR A PARTICULAR PURPOSE. +See the +.I GNU General Public License +for more details. +.PP +You should have received a copy of the +.B GNU General Public License +along with this program; if not, write to the +.I Free Software Foundation, Inc., +59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + +.SH ENVIRONMENT +No environment variables are used. +.SH FILES +None. +.SH AUTHOR +Jens T. Berger Thielemann, +.I <jensthi@ifi.uio.no> +.PP +This manual page was cobbled together by Clint Adams <schizo@debian.org>, +based on the output of "chktex --help" and deweb(1). +.SH "SEE ALSO" +.B deweb(1), chkweb(1) diff --git a/Build/source/utils/chktex/chktex-1.6.6/chktex.el b/Build/source/utils/chktex/chktex-1.6.6/chktex.el new file mode 100644 index 00000000000..8e02be26c9e --- /dev/null +++ b/Build/source/utils/chktex/chktex-1.6.6/chktex.el @@ -0,0 +1,56 @@ +;;; chktex.el --- quick hack to add ChkTeX capability to AUC-TeX mode +;; +;; +;; Keywords: LaTeX, AUC-TeX, ChkTeX +;; +;; ChkTeX, quick hack to add ChkTeX in LaTeX menu. +;; Copyright (C) 1995-96 Jens T. Berger Thielemann +;; +;; 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +;; +;; Contact the author at: +;; Jens Berger +;; Spektrumvn. 4 +;; N-0666 Oslo +;; Norway +;; E-mail: <jensthi@ifi.uio.no> +;; +;; +;;; Commentary: +;; +;; This tiny hack will add a "ChkTeX" item to the command menu of +;; AUC-TeX, thus making the use of ChkTeX much more comfortable from +;; within AUC-TeX (`LaTeX-mode'). +;; +;; INSTALLATION +;; +;; 1. Put this file somewhere in your loading path. +;; 2. Add the line +;; (require 'chktex) +;; to your .emacs file +;; +;; It is doubtful whether byte-compiling this file gains anything. +;; +;;; Code: +;; + +(eval-after-load 'tex + '(progn + (add-to-list 'TeX-command-list + '("ChkTeX" "chktex -v3 %s" TeX-run-compile nil t)))) + +(provide 'chktex) + +;;; chktex.el ends here diff --git a/Build/source/utils/chktex/chktex-1.6.6/chktexrc b/Build/source/utils/chktex/chktex-1.6.6/chktexrc new file mode 100644 index 00000000000..72889e2d707 --- /dev/null +++ b/Build/source/utils/chktex/chktex-1.6.6/chktexrc @@ -0,0 +1,678 @@ +## +## ChkTeX, example resource file for ChkTeX. +## Copyright (C) 1995-96 Jens T. Berger Thielemann +## +## 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +## +## Contact the author at: +## Jens Berger +## Spektrumvn. 4 +## N-0666 Oslo +## Norway +## E-mail: <jensthi@ifi.uio.no> +## + +##################################################################### +# +# Note: The format has changed slightly (again). The { ... } +# syntax does now mean case-sensitive comparing, while [ ... ] means +# case-insensitive comparing of the keywords. Case-insensitive +# comparing of the keywords is only supported on a few of the +# keywords (it's not meaningful in all contexts, and it slows ChkTeX +# down). Keywords supporting this are marked throughout the file. +# +# You may also reset a list by saying "KEYWORD = { ... }"; it will +# then be set equal to the contents of the list you specify. +# +# Comments begin with `#', and continues for the rest of the line. +# Blank lines plus leading and trailing spaces are of course ignored. +# +# The general format of this file is the following: +# +# KEYWORD { item item ...} [ item item ... ] /* Adds items */ +# +# KEYWORD [ item item ...] { item item ... } /* Adds items */ +# +# KEYWORD = item +# +# KEYWORD = { item item ... } /* Clears list before adding */ +# +# KEYWORD = [ item item ... ] /* Clears list before adding */ +# +# This does _not_ mean that you may alternate the forms; certain +# keywords demands a list, other a single value. You thus have to +# look at the examples of their use. +# +# Please also note that if you specify a list-keyword twice, we'll +# concatenate the lists. If you you specify a item-keyword twice, +# we'll kill the previous value. +# +# We are slightly context-sensitive when detecting tokens like "}" +# and "]"; they have to be preceded by a space. This generally makes +# life easier. +# +# Items are separated by spaces. Newlines are considered as spaces, +# but can't be escaped. You may surround items with quotes (`"') to +# easily put spaces into them. +# +# Escape sequences available: +# +# Sequence Resulting character +# ! A space (type `! ', not just a exclamation mark) +# !" " +# !# # +# !! ! +# !{ { +# !} } +# ![ [ +# !] ] +# != = +# !b Backspace +# !n New line +# !r Carriage return +# !t Tab +# !f Form feed +# !xNN NN must be a hexadecimal number (00 - ff), +# _both_ characters must be included. +# !dNNN DDD must be a decimal number (000 - 255), all +# three characters must be included. Unspecified +# results if DDD > 255. +# !NNN DDD must be a octal number (000 - 377), all +# three characters must be included. Unspecified +# results if DDD > 377. +# +# Minor note: As you can see, most of these escape sequences are +# equal to those in C (with some extensions); however, we use ! +# instead of \ as escape character for obvious reasons. +# +# +# Quick summary of keywords follows. Keywords marked with a * accept +# keywords accepting case-insensitive lists. +# +# Abbrev* - A list of abbreviations not automatically catched. +# CenterDots - Commands/characters which should have \cdots in +# between. +# CmdLine - Default commandline options. These will be +# processed before the ones you give on the command +# line. +# HyphDash \ +# NumDash - No. of dashes allowed in different contexts. +# WordDash / +# IJAccent - Commands which puts an accent _over_ their +# argument. +# Italic - Commands immediately turning on italic mode. +# ItalCmd - Commands putting their argument into italic. +# Linker - Commands which should have a non-breaking space in +# front. +# LowDots - Commands/characters which should have \ldots in +# between. +# MathEnvir - Environments which turn on math mode. +# MathRoman - Mathematical operators with LaTeX replacement +# defined. +# NoCharNext - Insists on that certain commands aren't followed by +# certain characters. +# NonItalic - Commands immediately turning off italic mode. +# NotPreSpaced- Commands which should not have a space in front of +# them. +# Primitives - Primitive TeX commands. +# PostLink - Commands which generates a page reference. +# OutFormat - Formats to use for output. See the -f & -v switch +# in the main doc. +# QuoteStyle - Either "Traditional" or "Logical". See main doc, +# warning 38. +# Silent - These commands do not produce any textual output; +# and are thus allowed to have a space after them. +# TabSize - Tab size you are using. +# TeXInputs - Paths to search \input and \include files for. +# UserWarn* - These strings will be searched for throughout the +# text. +# VerbEnvir - Environments which contents should be ignored. +# VerbClear - String we will overwrite unwanted data with. +# WipeArg - Commands (with arguments) which should be ignored +# in the checking. +# + + +##################################################################### +# +# Enter which type of quote-style you are using here. Currently, we +# support the following styles: +# +# Style Example of use +# Traditional "An example," he said, "would be great." +# Logical "An example", he said, "would be great". +# + +QuoteStyle = Logical + +##################################################################### +# +# Enter here what interval you have between your tabs. Only regular +# intervals are supported. +# + +TabSize = 8 + +##################################################################### +# +# Here, you can put default commandline options; most users would for +# instance like to put -v2 here. +# + +CmdLine +{ + +} + +##################################################################### +# +# These patterns will be searched for through the text; no matter +# whether they appear as normal text, commands or whatever. +# Currently case-sensitive. +# +# I usually define a special command like this: +# +# \def\unknown{\large\bf??} +# +# which I use whenever there is some information I don't have at the +# moment of writing. Thus, it makes sense to search for it. +# +# You should be able to develop your own uses for this. +# + +UserWarn +{ + + \unknown +### +# +# Another example; one should write \chktex or Chk\TeX - never ChkTeX. +# +### + + ChkTeX +} +[ + +### +# +# You may put case-insensitive patterns here. +# +### + +] + +##################################################################### +# +# Here you can list the path of where ChkTeX should look for files it +# \inputs. The // postfix is now supported; if you append a double +# path-separator we'll recursively search that directory directories. +# MS-DOS users must append \\ instead, e.g. "C:\EMTEX\\". +# +# If you under either MS-DOS or UNIX wish to search an entire +# partition or the complete directory tree, you must use *three* +# slashes, e.g. "c:\\\" or "///". This may be considered to be a bug. +# +# By default, we'll search the current directory (not recursively, +# put "//" in the list for this); any paths specified below will be +# searched in addition to this. +# + +TeXInputs +{ + +} + +##################################################################### +# +# Here you may specify more outputformats for use with the -v option, +# it simply indexes into this list. Remember to use ! instead of \, +# though. +# +# For explanation of how % fields expand; look at ChkTeX.{dvi,ps}. +# +# We will by default select entry number _two_ in this list (we count +# from 0), and -v without any parameter selects entry number _three_. +# + +OutFormat +{ + +# -v0; silent mode +%f%b%l%b%c%b%n%b%m!n + +# -v1; normal mode +"%k %n in %f line %l: %m!n%r%s%t!n%u!n" + +# -v2; fancy mode +"%k %n in %f line %l: %m!n%r%i%s%I%t!n!n" + +# -v3; lacheck mode +"!"%f!", line %l: %m!n" + +# -v4; verbose lacheck mode +"!"%f!", line %l: %m!n%r%s%t!n%u!n" + +# -v5; no line number, ease auto-test +"%k %n in %f: %m!n%r%s%t!n%u!n" + +} + + + +##################################################################### +# +# These commands should be ignored when detecting whether a command +# is ended by a space. +# + +Silent +{ + \rm \em \bf \it \sl \sf \sc \tt \selectfont + \rmfamily \sffamily \ttfamily \mdseries \bfseries + \slshape \scshape \relax + \vskip \pagebreak \nopagebreak + + \textrm \textem \textbf \textit \textsl \textsf \textsc \texttt + + \clearpage \ddots \dotfill \flushbottom \fussy \indent \linebreak + \onecolumn \pagebreak \pushtabs \poptabs \scriptsize \sloppy + \twocolumn \vdots + \today \kill \newline \thicklines \thinlines + + \columnsep \space \item \tiny \footnotesize \small \normalsize + \normal \large \Large \LARGE \huge \Huge \printindex + + \newpage \listoffigures \listoftables \tableofcontents + \maketitle \makeindex + + \hline \hrule \vrule + + \centering + + \bigskip \medskip \smallskip + + \noindent \expandafter + + \makeatletter \makeatother + + \columnseprule + + \textwidth \textheight \hsize \vsize + + \if \fi + + \csname \endcsname + + \z@ \p@ \@warning \typeout + + \dots \ldots \input \endinput \nextline \leavevmode \cdots +- \appendix \listfiles \and \quad + \vfill \vfil \hfill \hfil \topmargin \oddsidemargin + \frenchspacing \nonfrenchspacing + \begingroup \endgroup \par + + \vrefwarning \upshape \headheight \headsep \hoffset \voffset + \cdot \qquad + \left \right +} + +##################################################################### +# +# Here, you can specify the length of various dashes. We sort the +# dash according to which type of characters that are on the left and +# right of of it. We are only conclusive if they are the same. +# +# We associate as follows: +# +# Name Type of character on each side +# HyphDash Alphabetic (foo-bar) +# NumDash Numeric (2--3) +# WordDash Space (like this --- see?) +# +# Below you specify how many dashes which are legal in each case. We +# define 0 as an magic constant which always generates an error. You +# may specify more than one legal dash-length. +# +# Let's look at an example. You use the following dash-syntax: +# +# foo-bar +# 2--3 +# like this---see? +# +# +# HYPHDASH { 1 3 } # Either a hyphen, or inter-word +# NUMDASH { 2 } # Between words +# WORDDASH { 0 } # We never use this +# + +HyphDash +{ + 1 3 +} + +NumDash +{ + 2 +} + +WordDash +{ + 3 +} + +##################################################################### +# +# This keyword indicates commands which argument isn't LaTeX code, +# and which thus should be ignored. +# +# After the command, you may place arguments that you wish that +# should be wiped in the process; use [] for optional arguments, {} +# for required ones and * if the command supports an alternative +# variant. These should be separated from the command with a colon. +# +# For instance, if you would like to wipe the \newcommand command, +# you would declare it as \newcommand:*[][]{} +# +# These commands may be "executed" before they're wiped, so you will +# typically also wish to list filehandling commands and similar here. +# + +WipeArg +{ + \label:{} \ref:{} \vref:{} \pageref:{} \index:{} \cite:[]{} + \input:{} \verbatiminput:[]{} \listinginput:[]{}{} + \verbatimtabinput:[]{} \include:{} \includeonly:{} + \bibitem:[]{} +} + +##################################################################### +# +# These environments contains material which will be typeset as +# mathematics by LaTeX. This turns on/off some warnings. +# +# We will automagically append a * to each keyword. +# + +MathEnvir +{ + displaymath math eqnarray array equation + align alignat gather flalign multline +} + +##################################################################### +# +# These environments contains material which contents should be +# ignored. +# +# We will automagically append a * to each keyword. +# + +VerbEnvir +{ + verbatim comment listing verbatimtab rawhtml errexam picture texdraw +} + +##################################################################### +# +# ChkTeX does automagically catch most abbreviations; the ones we +# need to list here, are those which are most likely to be followed +# by a word with an upper-case letter (that is not the beginning of a +# new sentence). +# +# The case-insensitive abbreviations are not really case-insensitive, +# it seems to be more practical to only let the first character be +# case-insensitive, while the remaining are case-sensitive. +# +# To speed up the searching process somewhat, we require that these +# end in a `.', this should not be a problem. +# +# Much of this work (both the abbreviations below, and the regexps +# necessary to catch the remaining automatically) have been provided +# by Russ Bubley, <russ@scs.leeds.ac.uk>. +# + + +Abbrev +{ +# Ordinals +1st. 2nd. 3rd. 4th. +# Titles +Mr. Mrs. Miss. Ms. Dr. Prof. St. + +# +# Days +# Mon. Tue. Wed. Thu. Fri. Sat. Sun. +# +# Months +# Jan. Feb. Mar. Apr. May. Jun. Jul. Aug. Sep. Oct. Nov. Dec. +# +# Letters +# Kt. Jr. +# +# Corporate +# Co. Ltd. +# +# Addresses +# Rd. Dr. St. Ave. Cres. Gdns. Sq. Circ. Terr. Pl. Arc. La. Clo. Ho. Est. Gn. +# +# Misc. +# oe. pbab. ps. rsvp. Tx. +} +[ +### +# +# The first letter is case-insensitive in the abbrevs in this +# list. Due to the nature of the checking algorithm used for +# this, entries consisting of only one character will be +# silently ignored. +# +## + +# Latin +# cf. "et al." etc. qed. qv. viz. +# +# Corporate +# inc. plc. +# +# Misc +# fax. pcs. qty. tel. misc. +] + +##################################################################### +# +# Commands which accent characters, meaning that \i or \j (\imath and +# \jmath in mathmode) should be used instead of `i' and `j' +# + +IJAccent +{ + \hat \check \breve \acute \grave \tilde \bar \vec \dot \ddot + + \' \` \^ \" \~ \= \. \u \v \H \t + +### +# +# The remaining accent commands (\c,\d,\b) put their accent _under_ +# the character, not above, and should thus be used with normal i's +# and j's. +# +### + +} + +##################################################################### +# +# Commands which, when the group is terminated, needs italic +# correction. +# + +Italic +{ + \it \em \sl + \itshape \slshape +} + +##################################################################### +# +# Commands which makes the font non-italic. +# + +NonItalic +{ + \bf \rm \sf \tt \sc + \upshape +} + +##################################################################### +# +# Commands which puts their argument into italic (and thus possibly +# needs italic correction in the end). +# +# This is currently empty, since \textit, \textsl and \emph do that +# automatically. +# + +ItalCmd +{ +} + +##################################################################### +# +# These commands all have in common that a pagebreak right in front +# of them is highly undesirable; thus there should be no space in +# front of them. +# + +PostLink +{ + \index \label +} + +##################################################################### +# +# These commands should not have a space in front of them for various +# reasons. I.e. much the same as POSTLINK, but produces another +# warning. +# + +NotPreSpaced +{ + \footnote \footnotemark \/ +} + +##################################################################### +# +# The commands listed here, should be prepended with a `~', as in +# "look in table~\ref{foo}", to avoid the references being split +# across lines. +# + +Linker +{ + \ref \vref \pageref \cite +} + +##################################################################### +# +# Commands/characters which should have \cdots in between, e.g. +# $1+2+3+\cdots+n$. +# + +CenterDots +{ + = + - \cdot \div & \times \geq \leq < > +} + +##################################################################### +# +# Commands/characters which should have \ldots in between, e.g. +# $1,2,3,\ldots,n$. +# + +LowDots +{ + . , ; +} + +##################################################################### +# +# In maths mode, there are certain aliases for mathematical operators +# like sin, cos, etc. Ignore the leading backslash in the commands, +# and so forth. You should list these below. +# + +MathRoman +{ + log lg ln lim limsup liminf sin arcsin sinh cos arccos cosh tan + arctan tanh cot coth sec csc max min sup inf arg ker dim hom det + exp Pr gcd deg bmod pmod mod +} + +##################################################################### +# +# These TeX commands have become unnecessary, as there are LaTeX cmds +# that does the same. Purists should thus avoid these in their code. +# +# (These are a spell-corrected version of those lacheck uses). +# + +Primitives +{ + \above \advance \catcode \chardef \closein \closeout \copy \count + \countdef \cr \crcr \csname \delcode \dimendef \dimen \divide + \expandafter \font \hskip \vskip \openout +} + +##################################################################### +# +# Format: \command:characters +# +# We'll emit a warning if any of characters are found after the +# command. +# + +NoCharNext +{ + \left:{}$ \right:{}$ +} + +##################################################################### +# +# We're killing \verb@...@ commands and the arguments of the commands +# listed above in WIPEARG by overwriting them with a string or a +# single character. +# +# This should not contain an alphabetic character (in case the user +# writes (\foo\verb@bar@), neither should it contain be one of LaTeX' +# reserved characters (`#$%&~_^\{}'), or any parenthesis character +# ('()[]{}'). If possible, don't use a punctuation character, +# either, or any spacing character. +# +# The asterix is also unsuitable, as some commands behave in another +# way if they are postpended with an asterix. Which more or less +# leaves us with the pipe. +# +# Please note that this may also be a _string_, which will be +# repeated until the proper length is reached. +# + +VerbClear = "|" + +# +# All for now - have fun. +# +##################################################################### + diff --git a/Build/source/utils/chktex/chktex-1.6.6/chkweb b/Build/source/utils/chktex/chktex-1.6.6/chkweb new file mode 100644 index 00000000000..8d6361d1097 --- /dev/null +++ b/Build/source/utils/chktex/chktex-1.6.6/chkweb @@ -0,0 +1,56 @@ +#! /bin/sh + +# ChkWEB v1.0, runs the LaTeX parts of a CWEB file through ChkTeX. +# Copyright (C) 1996 Jens T. Berger Thielemann +# +# 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +# +# Contact the author at: +# Jens Berger +# Spektrumvn. 4 +# N-0666 Oslo +# Norway +# E-mail: <jensthi@ifi.uio.no> + + +params= + +for p +do + case $p in + --) break + ;; + -*) params="$params $p" + shift + ;; + *) break + ;; + esac +done + + +if test "$1" = ""; then + deweb | chktex -v3 $params +else + for file + do + if test -f $file; then + deweb $file | chktex -p $file -v3 $params + else + deweb $file.w | chktex -p $file.w -v3 $params + fi + done +fi + diff --git a/Build/source/utils/chktex/chktex-1.6.6/chkweb.1 b/Build/source/utils/chktex/chktex-1.6.6/chkweb.1 new file mode 100644 index 00000000000..5cb7063f786 --- /dev/null +++ b/Build/source/utils/chktex/chktex-1.6.6/chkweb.1 @@ -0,0 +1,132 @@ +.TH chkweb 1 "March 30, 2001" +.AT 3 +.SH NAME +chkweb \- runs the LaTeX parts of a CWEB file through chktex +.SH SYNOPSIS +.B chkweb +.I [-hiqrW] [-l <rcfile>] [-[wemn] <[1-42]|all>] +.I [-d[0-...]] [-o <outfile>] [-[btxgI][0|1]] +.B file1 file2 ... +.SH DESCRIPTION +.I chkweb +runs the +.I LaTeX +parts of a CWEB file through chktex. +.SH OPTIONS +.PP +Miscellaneous options: +.TP +.B "-h --help" +Print a help screen. +.TP +.B "-i --license" +Show distribution information. +.TP +.B "-l --localrc" +Read local .chktexrc formatted file. +.TP +.B "-d --debug" +Debug information. Give it a number. +.TP +.B "-r --reset" +Reset settings to default. +.PP +Muting warning messages: +.TP +.B "-w --warnon" +Makes msg # given a warning and turns it on. +.TP +.B "-e --erroron" +Makes msg # given an error and turns it on. +.TP +.B "-m --msgon" +Makes msg # given a message and turns it on. +.TP +.B "-n --nowarn" +Mutes msg # given. + +.PP +Output control flags: +.TP +.B "-V --pipeverb" +How errors are displayed when stdout != tty. +Defaults to the same as -v. +.TP +.B "-s --splitchar" +String used to split fields when doing -v0 +.TP +.B "-o --output" +Redirect error report to a file. +.TP +.B "-q --quiet" +Shuts up about version information. +.TP +.B "-f --format" +Format to use for output + +.PP +Boolean switches (1 -> enables / 0 -> disables): +.TP +.B "-b --backup" +Backup output file. +.TP +.B "-x --wipeverb" +Ignore contents of `\\verb' commands. +.TP +.B "-g --globalrc" +Read global .chktexrc file. +.TP +.B "-I --inputfiles" +Execute \\input statements. +.TP +.B "-H --headererr" +Show errors found in front of \\begin{document} +.PP Miscellaneous switches: +.TP +.B "-W --version" +Version information + +.PP +If no LaTeX files are specified on the command line, we will read from +stdin. For explanation of warning/error messages, please consult the +main document /usr/share/doc/chktex/ChkTeX.dvi.gz. + +.SH DISTRIBUTION +Copyright (C) 1996 Jens T. Berger Thielemann +.PP +This program is free software; you can redistribute it and/or modify +it under the terms of the +.I GNU General Public License +as published by +the Free Software Foundation; either version 2 of the License, or +(at your option) any later version. +.PP +This program is distributed in the hope that it will be useful, +but +.B WITHOUT ANY WARRANTY; +without even the implied warranty of +.B MERCHANTABILITY +or +.B FITNESS FOR A PARTICULAR PURPOSE. +See the +.I GNU General Public License +for more details. +.PP +You should have received a copy of the +.B GNU General Public License +along with this program; if not, write to the +.I Free Software Foundation, Inc., +59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + +.SH ENVIRONMENT +No environment variables are used. +.SH FILES +None. +.SH AUTHOR +Jens T. Berger Thielemann, +.I <jensthi@ifi.uio.no> +.PP +This manual page was cobbled together by Clint Adams <schizo@debian.org>, +based on the output of "chktex --help" and deweb(1). +.SH "SEE ALSO" +.B deweb(1), chktex(1) diff --git a/Build/source/utils/chktex/chktex-1.6.6/config.h.in b/Build/source/utils/chktex/chktex-1.6.6/config.h.in new file mode 100644 index 00000000000..273502cac45 --- /dev/null +++ b/Build/source/utils/chktex/chktex-1.6.6/config.h.in @@ -0,0 +1,136 @@ +/* config.h.in. Generated from configure.in by autoheader. */ + +/* Define to 1 if you have the `access' function. */ +#undef HAVE_ACCESS + +/* Define to 1 if you have the `closedir' function. */ +#undef HAVE_CLOSEDIR + +/* Define to 1 if you have the <dirent.h> header file, and it defines `DIR'. + */ +#undef HAVE_DIRENT_H + +/* Define to 1 if you don't have `vprintf' but do have `_doprnt.' */ +#undef HAVE_DOPRNT + +/* Define to 1 if you have the `fileno' function. */ +#undef HAVE_FILENO + +/* Define to 1 if you have the <inttypes.h> header file. */ +#undef HAVE_INTTYPES_H + +/* Define to 1 if you have the `isatty' function. */ +#undef HAVE_ISATTY + +/* Define to 1 if you have the `termcap' library (-ltermcap). */ +#undef HAVE_LIBTERMCAP + +/* Define to 1 if you have the `termlib' library (-ltermlib). */ +#undef HAVE_LIBTERMLIB + +/* Define to 1 if you have the <limits.h> header file. */ +#undef HAVE_LIMITS_H + +/* Define to 1 if you have the <memory.h> header file. */ +#undef HAVE_MEMORY_H + +/* Define to 1 if you have the <ndir.h> header file, and it defines `DIR'. */ +#undef HAVE_NDIR_H + +/* Define to 1 if you have the `opendir' function. */ +#undef HAVE_OPENDIR + +/* Define to 1 if you have the `readdir' function. */ +#undef HAVE_READDIR + +/* Define to 1 if you have the `stat' function. */ +#undef HAVE_STAT + +/* Define to 1 if you have the <stat.h> header file. */ +#undef HAVE_STAT_H + +/* Define to 1 if you have the <stdarg.h> header file. */ +#undef HAVE_STDARG_H + +/* Define to 1 if you have the <stdint.h> header file. */ +#undef HAVE_STDINT_H + +/* Define to 1 if you have the <stdlib.h> header file. */ +#undef HAVE_STDLIB_H + +/* Define to 1 if you have the `strcasecmp' function. */ +#undef HAVE_STRCASECMP + +/* Define to 1 if you have the `strdup' function. */ +#undef HAVE_STRDUP + +/* Define to 1 if you have the <strings.h> header file. */ +#undef HAVE_STRINGS_H + +/* Define to 1 if you have the <string.h> header file. */ +#undef HAVE_STRING_H + +/* Define to 1 if you have the `strlwr' function. */ +#undef HAVE_STRLWR + +/* Define to 1 if you have the `strtol' function. */ +#undef HAVE_STRTOL + +/* Define to 1 if you have the <sys/dir.h> header file, and it defines `DIR'. + */ +#undef HAVE_SYS_DIR_H + +/* Define to 1 if you have the <sys/ndir.h> header file, and it defines `DIR'. + */ +#undef HAVE_SYS_NDIR_H + +/* Define to 1 if you have the <sys/stat.h> header file. */ +#undef HAVE_SYS_STAT_H + +/* Define to 1 if you have the <sys/types.h> header file. */ +#undef HAVE_SYS_TYPES_H + +/* Define to 1 if you have the <termcap.h> header file. */ +#undef HAVE_TERMCAP_H + +/* Define to 1 if you have the <termlib.h> header file. */ +#undef HAVE_TERMLIB_H + +/* Define to 1 if you have the <unistd.h> header file. */ +#undef HAVE_UNISTD_H + +/* Define to 1 if you have the `vprintf' function. */ +#undef HAVE_VPRINTF + +/* Define to the address where bug reports for this package should be sent. */ +#undef PACKAGE_BUGREPORT + +/* Define to the full name of this package. */ +#undef PACKAGE_NAME + +/* Define to the full name and version of this package. */ +#undef PACKAGE_STRING + +/* Define to the one symbol short name of this package. */ +#undef PACKAGE_TARNAME + +/* Define to the version of this package. */ +#undef PACKAGE_VERSION + +/* Define to 1 if you have the ANSI C header files. */ +#undef STDC_HEADERS + +/* "Strip debug info" */ +#undef STRIP_DEBUG + +/* Define to empty if `const' does not conform to ANSI C. */ +#undef const + +/* Define to `__inline__' or `__inline' if that's what the C compiler + calls it, or to nothing if 'inline' is not supported under any name. */ +#ifndef __cplusplus +#undef inline +#endif + +/* Define to `unsigned int' if <sys/types.h> does not define. */ +#undef size_t diff --git a/Build/source/utils/chktex/chktex-1.6.6/configure b/Build/source/utils/chktex/chktex-1.6.6/configure new file mode 100755 index 00000000000..e0c6b5a3fc1 --- /dev/null +++ b/Build/source/utils/chktex/chktex-1.6.6/configure @@ -0,0 +1,6239 @@ +#! /bin/sh +# Guess values for system-dependent variables and create Makefiles. +# Generated by GNU Autoconf 2.61 for ChkTeX 1.6.6. +# +# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, +# 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc. +# This configure script is free software; the Free Software Foundation +# gives unlimited permission to copy, distribute and modify it. +## --------------------- ## +## M4sh Initialization. ## +## --------------------- ## + +# Be more Bourne compatible +DUALCASE=1; export DUALCASE # for MKS sh +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then + emulate sh + NULLCMD=: + # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else + case `(set -o) 2>/dev/null` in + *posix*) set -o posix ;; +esac + +fi + + + + +# PATH needs CR +# Avoid depending upon Character Ranges. +as_cr_letters='abcdefghijklmnopqrstuvwxyz' +as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' +as_cr_Letters=$as_cr_letters$as_cr_LETTERS +as_cr_digits='0123456789' +as_cr_alnum=$as_cr_Letters$as_cr_digits + +# The user is always right. +if test "${PATH_SEPARATOR+set}" != set; then + echo "#! /bin/sh" >conf$$.sh + echo "exit 0" >>conf$$.sh + chmod +x conf$$.sh + if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then + PATH_SEPARATOR=';' + else + PATH_SEPARATOR=: + fi + rm -f conf$$.sh +fi + +# Support unset when possible. +if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then + as_unset=unset +else + as_unset=false +fi + + +# IFS +# We need space, tab and new line, in precisely that order. Quoting is +# there to prevent editors from complaining about space-tab. +# (If _AS_PATH_WALK were called with IFS unset, it would disable word +# splitting by setting IFS to empty value.) +as_nl=' +' +IFS=" "" $as_nl" + +# Find who we are. Look in the path if we contain no directory separator. +case $0 in + *[\\/]* ) as_myself=$0 ;; + *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break +done +IFS=$as_save_IFS + + ;; +esac +# We did not find ourselves, most probably we were run as `sh COMMAND' +# in which case we are not to be found in the path. +if test "x$as_myself" = x; then + as_myself=$0 +fi +if test ! -f "$as_myself"; then + echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 + { (exit 1); exit 1; } +fi + +# Work around bugs in pre-3.0 UWIN ksh. +for as_var in ENV MAIL MAILPATH +do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var +done +PS1='$ ' +PS2='> ' +PS4='+ ' + +# NLS nuisances. +for as_var in \ + LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \ + LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \ + LC_TELEPHONE LC_TIME +do + if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then + eval $as_var=C; export $as_var + else + ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var + fi +done + +# Required to use basename. +if expr a : '\(a\)' >/dev/null 2>&1 && + test "X`expr 00001 : '.*\(...\)'`" = X001; then + as_expr=expr +else + as_expr=false +fi + +if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then + as_basename=basename +else + as_basename=false +fi + + +# Name of the executable. +as_me=`$as_basename -- "$0" || +$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ + X"$0" : 'X\(//\)$' \| \ + X"$0" : 'X\(/\)' \| . 2>/dev/null || +echo X/"$0" | + sed '/^.*\/\([^/][^/]*\)\/*$/{ + s//\1/ + q + } + /^X\/\(\/\/\)$/{ + s//\1/ + q + } + /^X\/\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + +# CDPATH. +$as_unset CDPATH + + +if test "x$CONFIG_SHELL" = x; then + if (eval ":") 2>/dev/null; then + as_have_required=yes +else + as_have_required=no +fi + + if test $as_have_required = yes && (eval ": +(as_func_return () { + (exit \$1) +} +as_func_success () { + as_func_return 0 +} +as_func_failure () { + as_func_return 1 +} +as_func_ret_success () { + return 0 +} +as_func_ret_failure () { + return 1 +} + +exitcode=0 +if as_func_success; then + : +else + exitcode=1 + echo as_func_success failed. +fi + +if as_func_failure; then + exitcode=1 + echo as_func_failure succeeded. +fi + +if as_func_ret_success; then + : +else + exitcode=1 + echo as_func_ret_success failed. +fi + +if as_func_ret_failure; then + exitcode=1 + echo as_func_ret_failure succeeded. +fi + +if ( set x; as_func_ret_success y && test x = \"\$1\" ); then + : +else + exitcode=1 + echo positional parameters were not saved. +fi + +test \$exitcode = 0) || { (exit 1); exit 1; } + +( + as_lineno_1=\$LINENO + as_lineno_2=\$LINENO + test \"x\$as_lineno_1\" != \"x\$as_lineno_2\" && + test \"x\`expr \$as_lineno_1 + 1\`\" = \"x\$as_lineno_2\") || { (exit 1); exit 1; } +") 2> /dev/null; then + : +else + as_candidate_shells= + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + case $as_dir in + /*) + for as_base in sh bash ksh sh5; do + as_candidate_shells="$as_candidate_shells $as_dir/$as_base" + done;; + esac +done +IFS=$as_save_IFS + + + for as_shell in $as_candidate_shells $SHELL; do + # Try only shells that exist, to save several forks. + if { test -f "$as_shell" || test -f "$as_shell.exe"; } && + { ("$as_shell") 2> /dev/null <<\_ASEOF +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then + emulate sh + NULLCMD=: + # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else + case `(set -o) 2>/dev/null` in + *posix*) set -o posix ;; +esac + +fi + + +: +_ASEOF +}; then + CONFIG_SHELL=$as_shell + as_have_required=yes + if { "$as_shell" 2> /dev/null <<\_ASEOF +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then + emulate sh + NULLCMD=: + # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else + case `(set -o) 2>/dev/null` in + *posix*) set -o posix ;; +esac + +fi + + +: +(as_func_return () { + (exit $1) +} +as_func_success () { + as_func_return 0 +} +as_func_failure () { + as_func_return 1 +} +as_func_ret_success () { + return 0 +} +as_func_ret_failure () { + return 1 +} + +exitcode=0 +if as_func_success; then + : +else + exitcode=1 + echo as_func_success failed. +fi + +if as_func_failure; then + exitcode=1 + echo as_func_failure succeeded. +fi + +if as_func_ret_success; then + : +else + exitcode=1 + echo as_func_ret_success failed. +fi + +if as_func_ret_failure; then + exitcode=1 + echo as_func_ret_failure succeeded. +fi + +if ( set x; as_func_ret_success y && test x = "$1" ); then + : +else + exitcode=1 + echo positional parameters were not saved. +fi + +test $exitcode = 0) || { (exit 1); exit 1; } + +( + as_lineno_1=$LINENO + as_lineno_2=$LINENO + test "x$as_lineno_1" != "x$as_lineno_2" && + test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2") || { (exit 1); exit 1; } + +_ASEOF +}; then + break +fi + +fi + + done + + if test "x$CONFIG_SHELL" != x; then + for as_var in BASH_ENV ENV + do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var + done + export CONFIG_SHELL + exec "$CONFIG_SHELL" "$as_myself" ${1+"$@"} +fi + + + if test $as_have_required = no; then + echo This script requires a shell more modern than all the + echo shells that I found on your system. Please install a + echo modern shell, or manually run the script under such a + echo shell if you do have one. + { (exit 1); exit 1; } +fi + + +fi + +fi + + + +(eval "as_func_return () { + (exit \$1) +} +as_func_success () { + as_func_return 0 +} +as_func_failure () { + as_func_return 1 +} +as_func_ret_success () { + return 0 +} +as_func_ret_failure () { + return 1 +} + +exitcode=0 +if as_func_success; then + : +else + exitcode=1 + echo as_func_success failed. +fi + +if as_func_failure; then + exitcode=1 + echo as_func_failure succeeded. +fi + +if as_func_ret_success; then + : +else + exitcode=1 + echo as_func_ret_success failed. +fi + +if as_func_ret_failure; then + exitcode=1 + echo as_func_ret_failure succeeded. +fi + +if ( set x; as_func_ret_success y && test x = \"\$1\" ); then + : +else + exitcode=1 + echo positional parameters were not saved. +fi + +test \$exitcode = 0") || { + echo No shell found that supports shell functions. + echo Please tell autoconf@gnu.org about your system, + echo including any error possibly output before this + echo message +} + + + + as_lineno_1=$LINENO + as_lineno_2=$LINENO + test "x$as_lineno_1" != "x$as_lineno_2" && + test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2" || { + + # Create $as_me.lineno as a copy of $as_myself, but with $LINENO + # uniformly replaced by the line number. The first 'sed' inserts a + # line-number line after each line using $LINENO; the second 'sed' + # does the real work. The second script uses 'N' to pair each + # line-number line with the line containing $LINENO, and appends + # trailing '-' during substitution so that $LINENO is not a special + # case at line end. + # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the + # scripts with optimization help from Paolo Bonzini. Blame Lee + # E. McMahon (1931-1989) for sed's syntax. :-) + sed -n ' + p + /[$]LINENO/= + ' <$as_myself | + sed ' + s/[$]LINENO.*/&-/ + t lineno + b + :lineno + N + :loop + s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ + t loop + s/-\n.*// + ' >$as_me.lineno && + chmod +x "$as_me.lineno" || + { echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2 + { (exit 1); exit 1; }; } + + # Don't try to exec as it changes $[0], causing all sort of problems + # (the dirname of $[0] is not the place where we might find the + # original and so on. Autoconf is especially sensitive to this). + . "./$as_me.lineno" + # Exit status is that of the last command. + exit +} + + +if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then + as_dirname=dirname +else + as_dirname=false +fi + +ECHO_C= ECHO_N= ECHO_T= +case `echo -n x` in +-n*) + case `echo 'x\c'` in + *c*) ECHO_T=' ';; # ECHO_T is single tab character. + *) ECHO_C='\c';; + esac;; +*) + ECHO_N='-n';; +esac + +if expr a : '\(a\)' >/dev/null 2>&1 && + test "X`expr 00001 : '.*\(...\)'`" = X001; then + as_expr=expr +else + as_expr=false +fi + +rm -f conf$$ conf$$.exe conf$$.file +if test -d conf$$.dir; then + rm -f conf$$.dir/conf$$.file +else + rm -f conf$$.dir + mkdir conf$$.dir +fi +echo >conf$$.file +if ln -s conf$$.file conf$$ 2>/dev/null; then + as_ln_s='ln -s' + # ... but there are two gotchas: + # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. + # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. + # In both cases, we have to default to `cp -p'. + ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || + as_ln_s='cp -p' +elif ln conf$$.file conf$$ 2>/dev/null; then + as_ln_s=ln +else + as_ln_s='cp -p' +fi +rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file +rmdir conf$$.dir 2>/dev/null + +if mkdir -p . 2>/dev/null; then + as_mkdir_p=: +else + test -d ./-p && rmdir ./-p + as_mkdir_p=false +fi + +if test -x / >/dev/null 2>&1; then + as_test_x='test -x' +else + if ls -dL / >/dev/null 2>&1; then + as_ls_L_option=L + else + as_ls_L_option= + fi + as_test_x=' + eval sh -c '\'' + if test -d "$1"; then + test -d "$1/."; + else + case $1 in + -*)set "./$1";; + esac; + case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in + ???[sx]*):;;*)false;;esac;fi + '\'' sh + ' +fi +as_executable_p=$as_test_x + +# Sed expression to map a string onto a valid CPP name. +as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" + +# Sed expression to map a string onto a valid variable name. +as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" + + + +exec 7<&0 </dev/null 6>&1 + +# Name of the host. +# hostname on some systems (SVR3.2, Linux) returns a bogus exit status, +# so uname gets run too. +ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` + +# +# Initializations. +# +ac_default_prefix=/usr/local +ac_clean_files= +ac_config_libobj_dir=. +LIBOBJS= +cross_compiling=no +subdirs= +MFLAGS= +MAKEFLAGS= +SHELL=${CONFIG_SHELL-/bin/sh} + +# Identity of this package. +PACKAGE_NAME='ChkTeX' +PACKAGE_TARNAME='chktex' +PACKAGE_VERSION='1.6.6' +PACKAGE_STRING='ChkTeX 1.6.6' +PACKAGE_BUGREPORT='' + +# Factoring default headers for most tests. +ac_includes_default="\ +#include <stdio.h> +#ifdef HAVE_SYS_TYPES_H +# include <sys/types.h> +#endif +#ifdef HAVE_SYS_STAT_H +# include <sys/stat.h> +#endif +#ifdef STDC_HEADERS +# include <stdlib.h> +# include <stddef.h> +#else +# ifdef HAVE_STDLIB_H +# include <stdlib.h> +# endif +#endif +#ifdef HAVE_STRING_H +# if !defined STDC_HEADERS && defined HAVE_MEMORY_H +# include <memory.h> +# endif +# include <string.h> +#endif +#ifdef HAVE_STRINGS_H +# include <strings.h> +#endif +#ifdef HAVE_INTTYPES_H +# include <inttypes.h> +#endif +#ifdef HAVE_STDINT_H +# include <stdint.h> +#endif +#ifdef HAVE_UNISTD_H +# include <unistd.h> +#endif" + +ac_subst_vars='SHELL +PATH_SEPARATOR +PACKAGE_NAME +PACKAGE_TARNAME +PACKAGE_VERSION +PACKAGE_STRING +PACKAGE_BUGREPORT +exec_prefix +prefix +program_transform_name +bindir +sbindir +libexecdir +datarootdir +datadir +sysconfdir +sharedstatedir +localstatedir +includedir +oldincludedir +docdir +infodir +htmldir +dvidir +pdfdir +psdir +libdir +localedir +mandir +DEFS +ECHO_C +ECHO_N +ECHO_T +LIBS +build_alias +host_alias +target_alias +SCRIPTS +BUILT_SCRIPTS +ELISPDIR +CLEAN +CC +CFLAGS +LDFLAGS +CPPFLAGS +ac_ct_CC +EXEEXT +OBJEXT +INSTALL_PROGRAM +INSTALL_SCRIPT +INSTALL_DATA +LN_S +PERL5 +GROFF +LATEX +DVIPS +LYNX +LATEX2HTML +CPP +GREP +EGREP +LIBOBJS +LTLIBOBJS' +ac_subst_files='' + ac_precious_vars='build_alias +host_alias +target_alias +CC +CFLAGS +LDFLAGS +LIBS +CPPFLAGS +CPP' + + +# Initialize some variables set by options. +ac_init_help= +ac_init_version=false +# The variables have the same names as the options, with +# dashes changed to underlines. +cache_file=/dev/null +exec_prefix=NONE +no_create= +no_recursion= +prefix=NONE +program_prefix=NONE +program_suffix=NONE +program_transform_name=s,x,x, +silent= +site= +srcdir= +verbose= +x_includes=NONE +x_libraries=NONE + +# Installation directory options. +# These are left unexpanded so users can "make install exec_prefix=/foo" +# and all the variables that are supposed to be based on exec_prefix +# by default will actually change. +# Use braces instead of parens because sh, perl, etc. also accept them. +# (The list follows the same order as the GNU Coding Standards.) +bindir='${exec_prefix}/bin' +sbindir='${exec_prefix}/sbin' +libexecdir='${exec_prefix}/libexec' +datarootdir='${prefix}/share' +datadir='${datarootdir}' +sysconfdir='${prefix}/etc' +sharedstatedir='${prefix}/com' +localstatedir='${prefix}/var' +includedir='${prefix}/include' +oldincludedir='/usr/include' +docdir='${datarootdir}/doc/${PACKAGE_TARNAME}' +infodir='${datarootdir}/info' +htmldir='${docdir}' +dvidir='${docdir}' +pdfdir='${docdir}' +psdir='${docdir}' +libdir='${exec_prefix}/lib' +localedir='${datarootdir}/locale' +mandir='${datarootdir}/man' + +ac_prev= +ac_dashdash= +for ac_option +do + # If the previous option needs an argument, assign it. + if test -n "$ac_prev"; then + eval $ac_prev=\$ac_option + ac_prev= + continue + fi + + case $ac_option in + *=*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;; + *) ac_optarg=yes ;; + esac + + # Accept the important Cygnus configure options, so we can diagnose typos. + + case $ac_dashdash$ac_option in + --) + ac_dashdash=yes ;; + + -bindir | --bindir | --bindi | --bind | --bin | --bi) + ac_prev=bindir ;; + -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) + bindir=$ac_optarg ;; + + -build | --build | --buil | --bui | --bu) + ac_prev=build_alias ;; + -build=* | --build=* | --buil=* | --bui=* | --bu=*) + build_alias=$ac_optarg ;; + + -cache-file | --cache-file | --cache-fil | --cache-fi \ + | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) + ac_prev=cache_file ;; + -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ + | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) + cache_file=$ac_optarg ;; + + --config-cache | -C) + cache_file=config.cache ;; + + -datadir | --datadir | --datadi | --datad) + ac_prev=datadir ;; + -datadir=* | --datadir=* | --datadi=* | --datad=*) + datadir=$ac_optarg ;; + + -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \ + | --dataroo | --dataro | --datar) + ac_prev=datarootdir ;; + -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \ + | --dataroot=* | --dataroo=* | --dataro=* | --datar=*) + datarootdir=$ac_optarg ;; + + -disable-* | --disable-*) + ac_feature=`expr "x$ac_option" : 'x-*disable-\(.*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_feature" : ".*[^-._$as_cr_alnum]" >/dev/null && + { echo "$as_me: error: invalid feature name: $ac_feature" >&2 + { (exit 1); exit 1; }; } + ac_feature=`echo $ac_feature | sed 's/[-.]/_/g'` + eval enable_$ac_feature=no ;; + + -docdir | --docdir | --docdi | --doc | --do) + ac_prev=docdir ;; + -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*) + docdir=$ac_optarg ;; + + -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv) + ac_prev=dvidir ;; + -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*) + dvidir=$ac_optarg ;; + + -enable-* | --enable-*) + ac_feature=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_feature" : ".*[^-._$as_cr_alnum]" >/dev/null && + { echo "$as_me: error: invalid feature name: $ac_feature" >&2 + { (exit 1); exit 1; }; } + ac_feature=`echo $ac_feature | sed 's/[-.]/_/g'` + eval enable_$ac_feature=\$ac_optarg ;; + + -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ + | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ + | --exec | --exe | --ex) + ac_prev=exec_prefix ;; + -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ + | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ + | --exec=* | --exe=* | --ex=*) + exec_prefix=$ac_optarg ;; + + -gas | --gas | --ga | --g) + # Obsolete; use --with-gas. + with_gas=yes ;; + + -help | --help | --hel | --he | -h) + ac_init_help=long ;; + -help=r* | --help=r* | --hel=r* | --he=r* | -hr*) + ac_init_help=recursive ;; + -help=s* | --help=s* | --hel=s* | --he=s* | -hs*) + ac_init_help=short ;; + + -host | --host | --hos | --ho) + ac_prev=host_alias ;; + -host=* | --host=* | --hos=* | --ho=*) + host_alias=$ac_optarg ;; + + -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht) + ac_prev=htmldir ;; + -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \ + | --ht=*) + htmldir=$ac_optarg ;; + + -includedir | --includedir | --includedi | --included | --include \ + | --includ | --inclu | --incl | --inc) + ac_prev=includedir ;; + -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ + | --includ=* | --inclu=* | --incl=* | --inc=*) + includedir=$ac_optarg ;; + + -infodir | --infodir | --infodi | --infod | --info | --inf) + ac_prev=infodir ;; + -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) + infodir=$ac_optarg ;; + + -libdir | --libdir | --libdi | --libd) + ac_prev=libdir ;; + -libdir=* | --libdir=* | --libdi=* | --libd=*) + libdir=$ac_optarg ;; + + -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ + | --libexe | --libex | --libe) + ac_prev=libexecdir ;; + -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ + | --libexe=* | --libex=* | --libe=*) + libexecdir=$ac_optarg ;; + + -localedir | --localedir | --localedi | --localed | --locale) + ac_prev=localedir ;; + -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*) + localedir=$ac_optarg ;; + + -localstatedir | --localstatedir | --localstatedi | --localstated \ + | --localstate | --localstat | --localsta | --localst | --locals) + ac_prev=localstatedir ;; + -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ + | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*) + localstatedir=$ac_optarg ;; + + -mandir | --mandir | --mandi | --mand | --man | --ma | --m) + ac_prev=mandir ;; + -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) + mandir=$ac_optarg ;; + + -nfp | --nfp | --nf) + # Obsolete; use --without-fp. + with_fp=no ;; + + -no-create | --no-create | --no-creat | --no-crea | --no-cre \ + | --no-cr | --no-c | -n) + no_create=yes ;; + + -no-recursion | --no-recursion | --no-recursio | --no-recursi \ + | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) + no_recursion=yes ;; + + -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \ + | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \ + | --oldin | --oldi | --old | --ol | --o) + ac_prev=oldincludedir ;; + -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \ + | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ + | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) + oldincludedir=$ac_optarg ;; + + -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) + ac_prev=prefix ;; + -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) + prefix=$ac_optarg ;; + + -program-prefix | --program-prefix | --program-prefi | --program-pref \ + | --program-pre | --program-pr | --program-p) + ac_prev=program_prefix ;; + -program-prefix=* | --program-prefix=* | --program-prefi=* \ + | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) + program_prefix=$ac_optarg ;; + + -program-suffix | --program-suffix | --program-suffi | --program-suff \ + | --program-suf | --program-su | --program-s) + ac_prev=program_suffix ;; + -program-suffix=* | --program-suffix=* | --program-suffi=* \ + | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) + program_suffix=$ac_optarg ;; + + -program-transform-name | --program-transform-name \ + | --program-transform-nam | --program-transform-na \ + | --program-transform-n | --program-transform- \ + | --program-transform | --program-transfor \ + | --program-transfo | --program-transf \ + | --program-trans | --program-tran \ + | --progr-tra | --program-tr | --program-t) + ac_prev=program_transform_name ;; + -program-transform-name=* | --program-transform-name=* \ + | --program-transform-nam=* | --program-transform-na=* \ + | --program-transform-n=* | --program-transform-=* \ + | --program-transform=* | --program-transfor=* \ + | --program-transfo=* | --program-transf=* \ + | --program-trans=* | --program-tran=* \ + | --progr-tra=* | --program-tr=* | --program-t=*) + program_transform_name=$ac_optarg ;; + + -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd) + ac_prev=pdfdir ;; + -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*) + pdfdir=$ac_optarg ;; + + -psdir | --psdir | --psdi | --psd | --ps) + ac_prev=psdir ;; + -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*) + psdir=$ac_optarg ;; + + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil) + silent=yes ;; + + -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) + ac_prev=sbindir ;; + -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ + | --sbi=* | --sb=*) + sbindir=$ac_optarg ;; + + -sharedstatedir | --sharedstatedir | --sharedstatedi \ + | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ + | --sharedst | --shareds | --shared | --share | --shar \ + | --sha | --sh) + ac_prev=sharedstatedir ;; + -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \ + | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ + | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ + | --sha=* | --sh=*) + sharedstatedir=$ac_optarg ;; + + -site | --site | --sit) + ac_prev=site ;; + -site=* | --site=* | --sit=*) + site=$ac_optarg ;; + + -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) + ac_prev=srcdir ;; + -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) + srcdir=$ac_optarg ;; + + -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ + | --syscon | --sysco | --sysc | --sys | --sy) + ac_prev=sysconfdir ;; + -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ + | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) + sysconfdir=$ac_optarg ;; + + -target | --target | --targe | --targ | --tar | --ta | --t) + ac_prev=target_alias ;; + -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) + target_alias=$ac_optarg ;; + + -v | -verbose | --verbose | --verbos | --verbo | --verb) + verbose=yes ;; + + -version | --version | --versio | --versi | --vers | -V) + ac_init_version=: ;; + + -with-* | --with-*) + ac_package=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_package" : ".*[^-._$as_cr_alnum]" >/dev/null && + { echo "$as_me: error: invalid package name: $ac_package" >&2 + { (exit 1); exit 1; }; } + ac_package=`echo $ac_package | sed 's/[-.]/_/g'` + eval with_$ac_package=\$ac_optarg ;; + + -without-* | --without-*) + ac_package=`expr "x$ac_option" : 'x-*without-\(.*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_package" : ".*[^-._$as_cr_alnum]" >/dev/null && + { echo "$as_me: error: invalid package name: $ac_package" >&2 + { (exit 1); exit 1; }; } + ac_package=`echo $ac_package | sed 's/[-.]/_/g'` + eval with_$ac_package=no ;; + + --x) + # Obsolete; use --with-x. + with_x=yes ;; + + -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ + | --x-incl | --x-inc | --x-in | --x-i) + ac_prev=x_includes ;; + -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ + | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) + x_includes=$ac_optarg ;; + + -x-libraries | --x-libraries | --x-librarie | --x-librari \ + | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) + ac_prev=x_libraries ;; + -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ + | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) + x_libraries=$ac_optarg ;; + + -*) { echo "$as_me: error: unrecognized option: $ac_option +Try \`$0 --help' for more information." >&2 + { (exit 1); exit 1; }; } + ;; + + *=*) + ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` + # Reject names that are not valid shell variable names. + expr "x$ac_envvar" : ".*[^_$as_cr_alnum]" >/dev/null && + { echo "$as_me: error: invalid variable name: $ac_envvar" >&2 + { (exit 1); exit 1; }; } + eval $ac_envvar=\$ac_optarg + export $ac_envvar ;; + + *) + # FIXME: should be removed in autoconf 3.0. + echo "$as_me: WARNING: you should use --build, --host, --target" >&2 + expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && + echo "$as_me: WARNING: invalid host type: $ac_option" >&2 + : ${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option} + ;; + + esac +done + +if test -n "$ac_prev"; then + ac_option=--`echo $ac_prev | sed 's/_/-/g'` + { echo "$as_me: error: missing argument to $ac_option" >&2 + { (exit 1); exit 1; }; } +fi + +# Be sure to have absolute directory names. +for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \ + datadir sysconfdir sharedstatedir localstatedir includedir \ + oldincludedir docdir infodir htmldir dvidir pdfdir psdir \ + libdir localedir mandir +do + eval ac_val=\$$ac_var + case $ac_val in + [\\/$]* | ?:[\\/]* ) continue;; + NONE | '' ) case $ac_var in *prefix ) continue;; esac;; + esac + { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2 + { (exit 1); exit 1; }; } +done + +# There might be people who depend on the old broken behavior: `$host' +# used to hold the argument of --host etc. +# FIXME: To remove some day. +build=$build_alias +host=$host_alias +target=$target_alias + +# FIXME: To remove some day. +if test "x$host_alias" != x; then + if test "x$build_alias" = x; then + cross_compiling=maybe + echo "$as_me: WARNING: If you wanted to set the --build type, don't use --host. + If a cross compiler is detected then cross compile mode will be used." >&2 + elif test "x$build_alias" != "x$host_alias"; then + cross_compiling=yes + fi +fi + +ac_tool_prefix= +test -n "$host_alias" && ac_tool_prefix=$host_alias- + +test "$silent" = yes && exec 6>/dev/null + + +ac_pwd=`pwd` && test -n "$ac_pwd" && +ac_ls_di=`ls -di .` && +ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` || + { echo "$as_me: error: Working directory cannot be determined" >&2 + { (exit 1); exit 1; }; } +test "X$ac_ls_di" = "X$ac_pwd_ls_di" || + { echo "$as_me: error: pwd does not report name of working directory" >&2 + { (exit 1); exit 1; }; } + + +# Find the source files, if location was not specified. +if test -z "$srcdir"; then + ac_srcdir_defaulted=yes + # Try the directory containing this script, then the parent directory. + ac_confdir=`$as_dirname -- "$0" || +$as_expr X"$0" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$0" : 'X\(//\)[^/]' \| \ + X"$0" : 'X\(//\)$' \| \ + X"$0" : 'X\(/\)' \| . 2>/dev/null || +echo X"$0" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + srcdir=$ac_confdir + if test ! -r "$srcdir/$ac_unique_file"; then + srcdir=.. + fi +else + ac_srcdir_defaulted=no +fi +if test ! -r "$srcdir/$ac_unique_file"; then + test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .." + { echo "$as_me: error: cannot find sources ($ac_unique_file) in $srcdir" >&2 + { (exit 1); exit 1; }; } +fi +ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work" +ac_abs_confdir=`( + cd "$srcdir" && test -r "./$ac_unique_file" || { echo "$as_me: error: $ac_msg" >&2 + { (exit 1); exit 1; }; } + pwd)` +# When building in place, set srcdir=. +if test "$ac_abs_confdir" = "$ac_pwd"; then + srcdir=. +fi +# Remove unnecessary trailing slashes from srcdir. +# Double slashes in file names in object file debugging info +# mess up M-x gdb in Emacs. +case $srcdir in +*/) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;; +esac +for ac_var in $ac_precious_vars; do + eval ac_env_${ac_var}_set=\${${ac_var}+set} + eval ac_env_${ac_var}_value=\$${ac_var} + eval ac_cv_env_${ac_var}_set=\${${ac_var}+set} + eval ac_cv_env_${ac_var}_value=\$${ac_var} +done + +# +# Report the --help message. +# +if test "$ac_init_help" = "long"; then + # Omit some internal or obsolete options to make the list less imposing. + # This message is too long to be a string in the A/UX 3.1 sh. + cat <<_ACEOF +\`configure' configures ChkTeX 1.6.6 to adapt to many kinds of systems. + +Usage: $0 [OPTION]... [VAR=VALUE]... + +To assign environment variables (e.g., CC, CFLAGS...), specify them as +VAR=VALUE. See below for descriptions of some of the useful variables. + +Defaults for the options are specified in brackets. + +Configuration: + -h, --help display this help and exit + --help=short display options specific to this package + --help=recursive display the short help of all the included packages + -V, --version display version information and exit + -q, --quiet, --silent do not print \`checking...' messages + --cache-file=FILE cache test results in FILE [disabled] + -C, --config-cache alias for \`--cache-file=config.cache' + -n, --no-create do not create output files + --srcdir=DIR find the sources in DIR [configure dir or \`..'] + +Installation directories: + --prefix=PREFIX install architecture-independent files in PREFIX + [$ac_default_prefix] + --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX + [PREFIX] + +By default, \`make install' will install all the files in +\`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify +an installation prefix other than \`$ac_default_prefix' using \`--prefix', +for instance \`--prefix=\$HOME'. + +For better control, use the options below. + +Fine tuning of the installation directories: + --bindir=DIR user executables [EPREFIX/bin] + --sbindir=DIR system admin executables [EPREFIX/sbin] + --libexecdir=DIR program executables [EPREFIX/libexec] + --sysconfdir=DIR read-only single-machine data [PREFIX/etc] + --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] + --localstatedir=DIR modifiable single-machine data [PREFIX/var] + --libdir=DIR object code libraries [EPREFIX/lib] + --includedir=DIR C header files [PREFIX/include] + --oldincludedir=DIR C header files for non-gcc [/usr/include] + --datarootdir=DIR read-only arch.-independent data root [PREFIX/share] + --datadir=DIR read-only architecture-independent data [DATAROOTDIR] + --infodir=DIR info documentation [DATAROOTDIR/info] + --localedir=DIR locale-dependent data [DATAROOTDIR/locale] + --mandir=DIR man documentation [DATAROOTDIR/man] + --docdir=DIR documentation root [DATAROOTDIR/doc/chktex] + --htmldir=DIR html documentation [DOCDIR] + --dvidir=DIR dvi documentation [DOCDIR] + --pdfdir=DIR pdf documentation [DOCDIR] + --psdir=DIR ps documentation [DOCDIR] +_ACEOF + + cat <<\_ACEOF +_ACEOF +fi + +if test -n "$ac_init_help"; then + case $ac_init_help in + short | recursive ) echo "Configuration of ChkTeX 1.6.6:";; + esac + cat <<\_ACEOF + +Optional Features: + --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) + --enable-FEATURE[=ARG] include FEATURE [ARG=yes] + + --enable-lacheck-replace: Installs a lacheck replacement for the + AUC-TeX interface. (Default: no). + + --enable-emacs-hack: Installs a Elisp file, which makes ChkTeX + available in Emacs. Must be followed by + the path of your elisp files (e.g. + "--enable-emacs-hack=/usr/lib/emacs/"). + (Default: no). + + --enable-debug-info: Compile in miscellaneous runtime debugging + information. (Default: yes). + + --enable-coverage-testing: Activate coverage testing with gcov. (Default: no) + +Some influential environment variables: + CC C compiler command + CFLAGS C compiler flags + LDFLAGS linker flags, e.g. -L<lib dir> if you have libraries in a + nonstandard directory <lib dir> + LIBS libraries to pass to the linker, e.g. -l<library> + CPPFLAGS C/C++/Objective C preprocessor flags, e.g. -I<include dir> if + you have headers in a nonstandard directory <include dir> + CPP C preprocessor + +Use these variables to override the choices made by `configure' or to help +it to find libraries and programs with nonstandard names/locations. + +_ACEOF +ac_status=$? +fi + +if test "$ac_init_help" = "recursive"; then + # If there are subdirs, report their specific --help. + for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue + test -d "$ac_dir" || continue + ac_builddir=. + +case "$ac_dir" in +.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; +*) + ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` + # A ".." for each directory in $ac_dir_suffix. + ac_top_builddir_sub=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,/..,g;s,/,,'` + case $ac_top_builddir_sub in + "") ac_top_builddir_sub=. ac_top_build_prefix= ;; + *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; + esac ;; +esac +ac_abs_top_builddir=$ac_pwd +ac_abs_builddir=$ac_pwd$ac_dir_suffix +# for backward compatibility: +ac_top_builddir=$ac_top_build_prefix + +case $srcdir in + .) # We are building in place. + ac_srcdir=. + ac_top_srcdir=$ac_top_builddir_sub + ac_abs_top_srcdir=$ac_pwd ;; + [\\/]* | ?:[\\/]* ) # Absolute name. + ac_srcdir=$srcdir$ac_dir_suffix; + ac_top_srcdir=$srcdir + ac_abs_top_srcdir=$srcdir ;; + *) # Relative name. + ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix + ac_top_srcdir=$ac_top_build_prefix$srcdir + ac_abs_top_srcdir=$ac_pwd/$srcdir ;; +esac +ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix + + cd "$ac_dir" || { ac_status=$?; continue; } + # Check for guested configure. + if test -f "$ac_srcdir/configure.gnu"; then + echo && + $SHELL "$ac_srcdir/configure.gnu" --help=recursive + elif test -f "$ac_srcdir/configure"; then + echo && + $SHELL "$ac_srcdir/configure" --help=recursive + else + echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2 + fi || ac_status=$? + cd "$ac_pwd" || { ac_status=$?; break; } + done +fi + +test -n "$ac_init_help" && exit $ac_status +if $ac_init_version; then + cat <<\_ACEOF +ChkTeX configure 1.6.6 +generated by GNU Autoconf 2.61 + +Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, +2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc. +This configure script is free software; the Free Software Foundation +gives unlimited permission to copy, distribute and modify it. +_ACEOF + exit +fi +cat >config.log <<_ACEOF +This file contains any messages produced by compilers while +running configure, to aid debugging if configure makes a mistake. + +It was created by ChkTeX $as_me 1.6.6, which was +generated by GNU Autoconf 2.61. Invocation command line was + + $ $0 $@ + +_ACEOF +exec 5>>config.log +{ +cat <<_ASUNAME +## --------- ## +## Platform. ## +## --------- ## + +hostname = `(hostname || uname -n) 2>/dev/null | sed 1q` +uname -m = `(uname -m) 2>/dev/null || echo unknown` +uname -r = `(uname -r) 2>/dev/null || echo unknown` +uname -s = `(uname -s) 2>/dev/null || echo unknown` +uname -v = `(uname -v) 2>/dev/null || echo unknown` + +/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown` +/bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown` + +/bin/arch = `(/bin/arch) 2>/dev/null || echo unknown` +/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown` +/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown` +/usr/bin/hostinfo = `(/usr/bin/hostinfo) 2>/dev/null || echo unknown` +/bin/machine = `(/bin/machine) 2>/dev/null || echo unknown` +/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown` +/bin/universe = `(/bin/universe) 2>/dev/null || echo unknown` + +_ASUNAME + +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + echo "PATH: $as_dir" +done +IFS=$as_save_IFS + +} >&5 + +cat >&5 <<_ACEOF + + +## ----------- ## +## Core tests. ## +## ----------- ## + +_ACEOF + + +# Keep a trace of the command line. +# Strip out --no-create and --no-recursion so they do not pile up. +# Strip out --silent because we don't want to record it for future runs. +# Also quote any args containing shell meta-characters. +# Make two passes to allow for proper duplicate-argument suppression. +ac_configure_args= +ac_configure_args0= +ac_configure_args1= +ac_must_keep_next=false +for ac_pass in 1 2 +do + for ac_arg + do + case $ac_arg in + -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;; + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil) + continue ;; + *\'*) + ac_arg=`echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; + esac + case $ac_pass in + 1) ac_configure_args0="$ac_configure_args0 '$ac_arg'" ;; + 2) + ac_configure_args1="$ac_configure_args1 '$ac_arg'" + if test $ac_must_keep_next = true; then + ac_must_keep_next=false # Got value, back to normal. + else + case $ac_arg in + *=* | --config-cache | -C | -disable-* | --disable-* \ + | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \ + | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \ + | -with-* | --with-* | -without-* | --without-* | --x) + case "$ac_configure_args0 " in + "$ac_configure_args1"*" '$ac_arg' "* ) continue ;; + esac + ;; + -* ) ac_must_keep_next=true ;; + esac + fi + ac_configure_args="$ac_configure_args '$ac_arg'" + ;; + esac + done +done +$as_unset ac_configure_args0 || test "${ac_configure_args0+set}" != set || { ac_configure_args0=; export ac_configure_args0; } +$as_unset ac_configure_args1 || test "${ac_configure_args1+set}" != set || { ac_configure_args1=; export ac_configure_args1; } + +# When interrupted or exit'd, cleanup temporary files, and complete +# config.log. We remove comments because anyway the quotes in there +# would cause problems or look ugly. +# WARNING: Use '\'' to represent an apostrophe within the trap. +# WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug. +trap 'exit_status=$? + # Save into config.log some information that might help in debugging. + { + echo + + cat <<\_ASBOX +## ---------------- ## +## Cache variables. ## +## ---------------- ## +_ASBOX + echo + # The following way of writing the cache mishandles newlines in values, +( + for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do + eval ac_val=\$$ac_var + case $ac_val in #( + *${as_nl}*) + case $ac_var in #( + *_cv_*) { echo "$as_me:$LINENO: WARNING: Cache variable $ac_var contains a newline." >&5 +echo "$as_me: WARNING: Cache variable $ac_var contains a newline." >&2;} ;; + esac + case $ac_var in #( + _ | IFS | as_nl) ;; #( + *) $as_unset $ac_var ;; + esac ;; + esac + done + (set) 2>&1 | + case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #( + *${as_nl}ac_space=\ *) + sed -n \ + "s/'\''/'\''\\\\'\'''\''/g; + s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p" + ;; #( + *) + sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" + ;; + esac | + sort +) + echo + + cat <<\_ASBOX +## ----------------- ## +## Output variables. ## +## ----------------- ## +_ASBOX + echo + for ac_var in $ac_subst_vars + do + eval ac_val=\$$ac_var + case $ac_val in + *\'\''*) ac_val=`echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; + esac + echo "$ac_var='\''$ac_val'\''" + done | sort + echo + + if test -n "$ac_subst_files"; then + cat <<\_ASBOX +## ------------------- ## +## File substitutions. ## +## ------------------- ## +_ASBOX + echo + for ac_var in $ac_subst_files + do + eval ac_val=\$$ac_var + case $ac_val in + *\'\''*) ac_val=`echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; + esac + echo "$ac_var='\''$ac_val'\''" + done | sort + echo + fi + + if test -s confdefs.h; then + cat <<\_ASBOX +## ----------- ## +## confdefs.h. ## +## ----------- ## +_ASBOX + echo + cat confdefs.h + echo + fi + test "$ac_signal" != 0 && + echo "$as_me: caught signal $ac_signal" + echo "$as_me: exit $exit_status" + } >&5 + rm -f core *.core core.conftest.* && + rm -f -r conftest* confdefs* conf$$* $ac_clean_files && + exit $exit_status +' 0 +for ac_signal in 1 2 13 15; do + trap 'ac_signal='$ac_signal'; { (exit 1); exit 1; }' $ac_signal +done +ac_signal=0 + +# confdefs.h avoids OS command line length limits that DEFS can exceed. +rm -f -r conftest* confdefs.h + +# Predefined preprocessor variables. + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_NAME "$PACKAGE_NAME" +_ACEOF + + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_TARNAME "$PACKAGE_TARNAME" +_ACEOF + + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_VERSION "$PACKAGE_VERSION" +_ACEOF + + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_STRING "$PACKAGE_STRING" +_ACEOF + + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT" +_ACEOF + + +# Let the site file select an alternate cache file if it wants to. +# Prefer explicitly selected file to automatically selected ones. +if test -n "$CONFIG_SITE"; then + set x "$CONFIG_SITE" +elif test "x$prefix" != xNONE; then + set x "$prefix/share/config.site" "$prefix/etc/config.site" +else + set x "$ac_default_prefix/share/config.site" \ + "$ac_default_prefix/etc/config.site" +fi +shift +for ac_site_file +do + if test -r "$ac_site_file"; then + { echo "$as_me:$LINENO: loading site script $ac_site_file" >&5 +echo "$as_me: loading site script $ac_site_file" >&6;} + sed 's/^/| /' "$ac_site_file" >&5 + . "$ac_site_file" + fi +done + +if test -r "$cache_file"; then + # Some versions of bash will fail to source /dev/null (special + # files actually), so we avoid doing that. + if test -f "$cache_file"; then + { echo "$as_me:$LINENO: loading cache $cache_file" >&5 +echo "$as_me: loading cache $cache_file" >&6;} + case $cache_file in + [\\/]* | ?:[\\/]* ) . "$cache_file";; + *) . "./$cache_file";; + esac + fi +else + { echo "$as_me:$LINENO: creating cache $cache_file" >&5 +echo "$as_me: creating cache $cache_file" >&6;} + >$cache_file +fi + +# Check that the precious variables saved in the cache have kept the same +# value. +ac_cache_corrupted=false +for ac_var in $ac_precious_vars; do + eval ac_old_set=\$ac_cv_env_${ac_var}_set + eval ac_new_set=\$ac_env_${ac_var}_set + eval ac_old_val=\$ac_cv_env_${ac_var}_value + eval ac_new_val=\$ac_env_${ac_var}_value + case $ac_old_set,$ac_new_set in + set,) + { echo "$as_me:$LINENO: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 +echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} + ac_cache_corrupted=: ;; + ,set) + { echo "$as_me:$LINENO: error: \`$ac_var' was not set in the previous run" >&5 +echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} + ac_cache_corrupted=: ;; + ,);; + *) + if test "x$ac_old_val" != "x$ac_new_val"; then + { echo "$as_me:$LINENO: error: \`$ac_var' has changed since the previous run:" >&5 +echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} + { echo "$as_me:$LINENO: former value: $ac_old_val" >&5 +echo "$as_me: former value: $ac_old_val" >&2;} + { echo "$as_me:$LINENO: current value: $ac_new_val" >&5 +echo "$as_me: current value: $ac_new_val" >&2;} + ac_cache_corrupted=: + fi;; + esac + # Pass precious variables to config.status. + if test "$ac_new_set" = set; then + case $ac_new_val in + *\'*) ac_arg=$ac_var=`echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; + *) ac_arg=$ac_var=$ac_new_val ;; + esac + case " $ac_configure_args " in + *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. + *) ac_configure_args="$ac_configure_args '$ac_arg'" ;; + esac + fi +done +if $ac_cache_corrupted; then + { echo "$as_me:$LINENO: error: changes in the environment can compromise the build" >&5 +echo "$as_me: error: changes in the environment can compromise the build" >&2;} + { { echo "$as_me:$LINENO: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&5 +echo "$as_me: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&2;} + { (exit 1); exit 1; }; } +fi + + + + + + + + + + + + + + + + + + + + + + + + + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + + + + +ELISPDIR= + +CLEAN= + +# Check whether --enable-lacheck-replace was given. +if test "${enable_lacheck_replace+set}" = set; then + enableval=$enable_lacheck_replace; +else + enable_lacheck_replace=no +fi + + +# Check whether --enable-emacs-hack was given. +if test "${enable_emacs_hack+set}" = set; then + enableval=$enable_emacs_hack; +else + enable_emacs_hack=no +fi + + +# Check whether --enable-debug-info was given. +if test "${enable_debug_info+set}" = set; then + enableval=$enable_debug_info; +else + enable_debug_info=yes +fi + + +# Check whether --enable-coverage-testing was given. +if test "${enable_coverage_testing+set}" = set; then + enableval=$enable_coverage_testing; +else + enable_coverage_testing=no +fi + + +{ echo "$as_me:$LINENO: checking whether lacheck replacement should be installed" >&5 +echo $ECHO_N "checking whether lacheck replacement should be installed... $ECHO_C" >&6; } +if test "$enable_lacheck_replace" = "yes"; then + SCRIPTS="$SCRIPTS lacheck" + { echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6; } +else + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } +fi + +{ echo "$as_me:$LINENO: checking whether runtime debug info should be used" >&5 +echo $ECHO_N "checking whether runtime debug info should be used... $ECHO_C" >&6; } +if test "$enable_debug_info" = "yes"; then + { echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6; } +else + +cat >>confdefs.h <<\_ACEOF +#define STRIP_DEBUG 1 +_ACEOF + + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } +fi + +{ echo "$as_me:$LINENO: checking whether the emacs hack should be installed" >&5 +echo $ECHO_N "checking whether the emacs hack should be installed... $ECHO_C" >&6; } +case $enable_emacs_hack in + no) { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } + ;; + /*|*/*) ELISPDIR=$enable_emacs_hack + { echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6; } + ;; + *) echo; + { { echo "$as_me:$LINENO: error: --enable-emacs-hack needs the *full path* of Elisp files" >&5 +echo "$as_me: error: --enable-emacs-hack needs the *full path* of Elisp files" >&2;} + { (exit 1); exit 1; }; } + ;; +esac + +{ echo "$as_me:$LINENO: checking whether coverage testing is enabled" >&5 +echo $ECHO_N "checking whether coverage testing is enabled... $ECHO_C" >&6; } +if test "$enable_coverage_testing" = "yes"; then + { echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6; } + CFLAGS="${CFLAGS} -fprofile-arcs -ftest-coverage -O0" + CLEAN="${CLEAN} \$(wildcard *.bb *.bbg *.da *.gcov)" +else + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } +fi + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. +set dummy ${ac_tool_prefix}gcc; ac_word=$2 +{ echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } +if test "${ac_cv_prog_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_CC="${ac_tool_prefix}gcc" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done +IFS=$as_save_IFS + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { echo "$as_me:$LINENO: result: $CC" >&5 +echo "${ECHO_T}$CC" >&6; } +else + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_CC"; then + ac_ct_CC=$CC + # Extract the first word of "gcc", so it can be a program name with args. +set dummy gcc; ac_word=$2 +{ echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } +if test "${ac_cv_prog_ac_ct_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$ac_ct_CC"; then + ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_ac_ct_CC="gcc" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done +IFS=$as_save_IFS + +fi +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + { echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 +echo "${ECHO_T}$ac_ct_CC" >&6; } +else + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } +fi + + if test "x$ac_ct_CC" = x; then + CC="" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools +whose name does not start with the host triplet. If you think this +configuration is useful to you, please write to autoconf@gnu.org." >&5 +echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools +whose name does not start with the host triplet. If you think this +configuration is useful to you, please write to autoconf@gnu.org." >&2;} +ac_tool_warned=yes ;; +esac + CC=$ac_ct_CC + fi +else + CC="$ac_cv_prog_CC" +fi + +if test -z "$CC"; then + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. +set dummy ${ac_tool_prefix}cc; ac_word=$2 +{ echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } +if test "${ac_cv_prog_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_CC="${ac_tool_prefix}cc" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done +IFS=$as_save_IFS + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { echo "$as_me:$LINENO: result: $CC" >&5 +echo "${ECHO_T}$CC" >&6; } +else + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } +fi + + + fi +fi +if test -z "$CC"; then + # Extract the first word of "cc", so it can be a program name with args. +set dummy cc; ac_word=$2 +{ echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } +if test "${ac_cv_prog_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else + ac_prog_rejected=no +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then + ac_prog_rejected=yes + continue + fi + ac_cv_prog_CC="cc" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done +IFS=$as_save_IFS + +if test $ac_prog_rejected = yes; then + # We found a bogon in the path, so make sure we never use it. + set dummy $ac_cv_prog_CC + shift + if test $# != 0; then + # We chose a different compiler from the bogus one. + # However, it has the same basename, so the bogon will be chosen + # first if we set CC to just the basename; use the full file name. + shift + ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@" + fi +fi +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { echo "$as_me:$LINENO: result: $CC" >&5 +echo "${ECHO_T}$CC" >&6; } +else + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } +fi + + +fi +if test -z "$CC"; then + if test -n "$ac_tool_prefix"; then + for ac_prog in cl.exe + do + # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. +set dummy $ac_tool_prefix$ac_prog; ac_word=$2 +{ echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } +if test "${ac_cv_prog_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_CC="$ac_tool_prefix$ac_prog" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done +IFS=$as_save_IFS + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { echo "$as_me:$LINENO: result: $CC" >&5 +echo "${ECHO_T}$CC" >&6; } +else + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } +fi + + + test -n "$CC" && break + done +fi +if test -z "$CC"; then + ac_ct_CC=$CC + for ac_prog in cl.exe +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } +if test "${ac_cv_prog_ac_ct_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$ac_ct_CC"; then + ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_ac_ct_CC="$ac_prog" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done +IFS=$as_save_IFS + +fi +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + { echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 +echo "${ECHO_T}$ac_ct_CC" >&6; } +else + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } +fi + + + test -n "$ac_ct_CC" && break +done + + if test "x$ac_ct_CC" = x; then + CC="" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools +whose name does not start with the host triplet. If you think this +configuration is useful to you, please write to autoconf@gnu.org." >&5 +echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools +whose name does not start with the host triplet. If you think this +configuration is useful to you, please write to autoconf@gnu.org." >&2;} +ac_tool_warned=yes ;; +esac + CC=$ac_ct_CC + fi +fi + +fi + + +test -z "$CC" && { { echo "$as_me:$LINENO: error: no acceptable C compiler found in \$PATH +See \`config.log' for more details." >&5 +echo "$as_me: error: no acceptable C compiler found in \$PATH +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } + +# Provide some information about the compiler. +echo "$as_me:$LINENO: checking for C compiler version" >&5 +ac_compiler=`set X $ac_compile; echo $2` +{ (ac_try="$ac_compiler --version >&5" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compiler --version >&5") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } +{ (ac_try="$ac_compiler -v >&5" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compiler -v >&5") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } +{ (ac_try="$ac_compiler -V >&5" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compiler -V >&5") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } + +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +ac_clean_files_save=$ac_clean_files +ac_clean_files="$ac_clean_files a.out a.exe b.out" +# Try to create an executable without -o first, disregard a.out. +# It will help us diagnose broken compilers, and finding out an intuition +# of exeext. +{ echo "$as_me:$LINENO: checking for C compiler default output file name" >&5 +echo $ECHO_N "checking for C compiler default output file name... $ECHO_C" >&6; } +ac_link_default=`echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'` +# +# List of possible output files, starting from the most likely. +# The algorithm is not robust to junk in `.', hence go to wildcards (a.*) +# only as a last resort. b.out is created by i960 compilers. +ac_files='a_out.exe a.exe conftest.exe a.out conftest a.* conftest.* b.out' +# +# The IRIX 6 linker writes into existing files which may not be +# executable, retaining their permissions. Remove them first so a +# subsequent execution test works. +ac_rmfiles= +for ac_file in $ac_files +do + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.o | *.obj ) ;; + * ) ac_rmfiles="$ac_rmfiles $ac_file";; + esac +done +rm -f $ac_rmfiles + +if { (ac_try="$ac_link_default" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link_default") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; then + # Autoconf-2.13 could set the ac_cv_exeext variable to `no'. +# So ignore a value of `no', otherwise this would lead to `EXEEXT = no' +# in a Makefile. We should not override ac_cv_exeext if it was cached, +# so that the user can short-circuit this test for compilers unknown to +# Autoconf. +for ac_file in $ac_files '' +do + test -f "$ac_file" || continue + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.o | *.obj ) + ;; + [ab].out ) + # We found the default executable, but exeext='' is most + # certainly right. + break;; + *.* ) + if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no; + then :; else + ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` + fi + # We set ac_cv_exeext here because the later test for it is not + # safe: cross compilers may not add the suffix if given an `-o' + # argument, so we may need to know it at that point already. + # Even if this section looks crufty: it has the advantage of + # actually working. + break;; + * ) + break;; + esac +done +test "$ac_cv_exeext" = no && ac_cv_exeext= + +else + ac_file='' +fi + +{ echo "$as_me:$LINENO: result: $ac_file" >&5 +echo "${ECHO_T}$ac_file" >&6; } +if test -z "$ac_file"; then + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +{ { echo "$as_me:$LINENO: error: C compiler cannot create executables +See \`config.log' for more details." >&5 +echo "$as_me: error: C compiler cannot create executables +See \`config.log' for more details." >&2;} + { (exit 77); exit 77; }; } +fi + +ac_exeext=$ac_cv_exeext + +# Check that the compiler produces executables we can run. If not, either +# the compiler is broken, or we cross compile. +{ echo "$as_me:$LINENO: checking whether the C compiler works" >&5 +echo $ECHO_N "checking whether the C compiler works... $ECHO_C" >&6; } +# FIXME: These cross compiler hacks should be removed for Autoconf 3.0 +# If not cross compiling, check that we can run a simple program. +if test "$cross_compiling" != yes; then + if { ac_try='./$ac_file' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + cross_compiling=no + else + if test "$cross_compiling" = maybe; then + cross_compiling=yes + else + { { echo "$as_me:$LINENO: error: cannot run C compiled programs. +If you meant to cross compile, use \`--host'. +See \`config.log' for more details." >&5 +echo "$as_me: error: cannot run C compiled programs. +If you meant to cross compile, use \`--host'. +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } + fi + fi +fi +{ echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6; } + +rm -f a.out a.exe conftest$ac_cv_exeext b.out +ac_clean_files=$ac_clean_files_save +# Check that the compiler produces executables we can run. If not, either +# the compiler is broken, or we cross compile. +{ echo "$as_me:$LINENO: checking whether we are cross compiling" >&5 +echo $ECHO_N "checking whether we are cross compiling... $ECHO_C" >&6; } +{ echo "$as_me:$LINENO: result: $cross_compiling" >&5 +echo "${ECHO_T}$cross_compiling" >&6; } + +{ echo "$as_me:$LINENO: checking for suffix of executables" >&5 +echo $ECHO_N "checking for suffix of executables... $ECHO_C" >&6; } +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; then + # If both `conftest.exe' and `conftest' are `present' (well, observable) +# catch `conftest.exe'. For instance with Cygwin, `ls conftest' will +# work properly (i.e., refer to `conftest.exe'), while it won't with +# `rm'. +for ac_file in conftest.exe conftest conftest.*; do + test -f "$ac_file" || continue + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.o | *.obj ) ;; + *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` + break;; + * ) break;; + esac +done +else + { { echo "$as_me:$LINENO: error: cannot compute suffix of executables: cannot compile and link +See \`config.log' for more details." >&5 +echo "$as_me: error: cannot compute suffix of executables: cannot compile and link +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } +fi + +rm -f conftest$ac_cv_exeext +{ echo "$as_me:$LINENO: result: $ac_cv_exeext" >&5 +echo "${ECHO_T}$ac_cv_exeext" >&6; } + +rm -f conftest.$ac_ext +EXEEXT=$ac_cv_exeext +ac_exeext=$EXEEXT +{ echo "$as_me:$LINENO: checking for suffix of object files" >&5 +echo $ECHO_N "checking for suffix of object files... $ECHO_C" >&6; } +if test "${ac_cv_objext+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.o conftest.obj +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; then + for ac_file in conftest.o conftest.obj conftest.*; do + test -f "$ac_file" || continue; + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf ) ;; + *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` + break;; + esac +done +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +{ { echo "$as_me:$LINENO: error: cannot compute suffix of object files: cannot compile +See \`config.log' for more details." >&5 +echo "$as_me: error: cannot compute suffix of object files: cannot compile +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } +fi + +rm -f conftest.$ac_cv_objext conftest.$ac_ext +fi +{ echo "$as_me:$LINENO: result: $ac_cv_objext" >&5 +echo "${ECHO_T}$ac_cv_objext" >&6; } +OBJEXT=$ac_cv_objext +ac_objext=$OBJEXT +{ echo "$as_me:$LINENO: checking whether we are using the GNU C compiler" >&5 +echo $ECHO_N "checking whether we are using the GNU C compiler... $ECHO_C" >&6; } +if test "${ac_cv_c_compiler_gnu+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ +#ifndef __GNUC__ + choke me +#endif + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + ac_compiler_gnu=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_compiler_gnu=no +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +ac_cv_c_compiler_gnu=$ac_compiler_gnu + +fi +{ echo "$as_me:$LINENO: result: $ac_cv_c_compiler_gnu" >&5 +echo "${ECHO_T}$ac_cv_c_compiler_gnu" >&6; } +GCC=`test $ac_compiler_gnu = yes && echo yes` +ac_test_CFLAGS=${CFLAGS+set} +ac_save_CFLAGS=$CFLAGS +{ echo "$as_me:$LINENO: checking whether $CC accepts -g" >&5 +echo $ECHO_N "checking whether $CC accepts -g... $ECHO_C" >&6; } +if test "${ac_cv_prog_cc_g+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_save_c_werror_flag=$ac_c_werror_flag + ac_c_werror_flag=yes + ac_cv_prog_cc_g=no + CFLAGS="-g" + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + ac_cv_prog_cc_g=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + CFLAGS="" + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + : +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_c_werror_flag=$ac_save_c_werror_flag + CFLAGS="-g" + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + ac_cv_prog_cc_g=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + ac_c_werror_flag=$ac_save_c_werror_flag +fi +{ echo "$as_me:$LINENO: result: $ac_cv_prog_cc_g" >&5 +echo "${ECHO_T}$ac_cv_prog_cc_g" >&6; } +if test "$ac_test_CFLAGS" = set; then + CFLAGS=$ac_save_CFLAGS +elif test $ac_cv_prog_cc_g = yes; then + if test "$GCC" = yes; then + CFLAGS="-g -O2" + else + CFLAGS="-g" + fi +else + if test "$GCC" = yes; then + CFLAGS="-O2" + else + CFLAGS= + fi +fi +{ echo "$as_me:$LINENO: checking for $CC option to accept ISO C89" >&5 +echo $ECHO_N "checking for $CC option to accept ISO C89... $ECHO_C" >&6; } +if test "${ac_cv_prog_cc_c89+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_cv_prog_cc_c89=no +ac_save_CC=$CC +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include <stdarg.h> +#include <stdio.h> +#include <sys/types.h> +#include <sys/stat.h> +/* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ +struct buf { int x; }; +FILE * (*rcsopen) (struct buf *, struct stat *, int); +static char *e (p, i) + char **p; + int i; +{ + return p[i]; +} +static char *f (char * (*g) (char **, int), char **p, ...) +{ + char *s; + va_list v; + va_start (v,p); + s = g (p, va_arg (v,int)); + va_end (v); + return s; +} + +/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has + function prototypes and stuff, but not '\xHH' hex character constants. + These don't provoke an error unfortunately, instead are silently treated + as 'x'. The following induces an error, until -std is added to get + proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an + array size at least. It's necessary to write '\x00'==0 to get something + that's true only with -std. */ +int osf4_cc_array ['\x00' == 0 ? 1 : -1]; + +/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters + inside strings and character constants. */ +#define FOO(x) 'x' +int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1]; + +int test (int i, double x); +struct s1 {int (*f) (int a);}; +struct s2 {int (*f) (double a);}; +int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int); +int argc; +char **argv; +int +main () +{ +return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; + ; + return 0; +} +_ACEOF +for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \ + -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" +do + CC="$ac_save_CC $ac_arg" + rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + ac_cv_prog_cc_c89=$ac_arg +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + +fi + +rm -f core conftest.err conftest.$ac_objext + test "x$ac_cv_prog_cc_c89" != "xno" && break +done +rm -f conftest.$ac_ext +CC=$ac_save_CC + +fi +# AC_CACHE_VAL +case "x$ac_cv_prog_cc_c89" in + x) + { echo "$as_me:$LINENO: result: none needed" >&5 +echo "${ECHO_T}none needed" >&6; } ;; + xno) + { echo "$as_me:$LINENO: result: unsupported" >&5 +echo "${ECHO_T}unsupported" >&6; } ;; + *) + CC="$CC $ac_cv_prog_cc_c89" + { echo "$as_me:$LINENO: result: $ac_cv_prog_cc_c89" >&5 +echo "${ECHO_T}$ac_cv_prog_cc_c89" >&6; } ;; +esac + + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + +{ echo "$as_me:$LINENO: checking CFLAGS for strict prototypes" >&5 +echo $ECHO_N "checking CFLAGS for strict prototypes... $ECHO_C" >&6; } +if test "${ac_cv_cflags_strict_prototypes+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_cv_cflags_strict_prototypes="no, unknown" + + ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + ac_save_CFLAGS="$CFLAGS" +for ac_arg in "-pedantic % -fstrict-prototypes -Wstrict-prototypes" "-pedantic % -Wstrict-prototypes" "-pedantic % -Wmissing-prototypes" "-pedantic % -Werror-implicit-function-declaration" "-pedantic % -Wimplicit-function-declaration" # +do CFLAGS="$ac_save_CFLAGS "`echo $ac_arg | sed -e 's,%%.*,,' -e 's,%,,'` + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ +return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + ac_cv_cflags_strict_prototypes=`echo $ac_arg | sed -e 's,.*% *,,'` ; break +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +done +case ".$ac_cv_cflags_strict_prototypes" in + .|.no|.no,*) ;; + *) # sanity check with signal() from sys/signal.h + cp config.log config.tmp + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include <signal.h> +int +main () +{ + + if (signal (SIGINT, SIG_IGN) == SIG_DFL) return 1; + if (signal (SIGINT, SIG_IGN) != SIG_DFL) return 2; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + if test `diff config.log config.tmp | grep -i warning | wc -l` != 0 +then if test `diff config.log config.tmp | grep -i warning | wc -l` != 1 +then ac_cv_cflags_strict_prototypes="no, suppressed, signal.h," ; fi ; fi +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_cv_cflags_strict_prototypes="no, suppressed, signal.h" +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + rm config.tmp + ;; +esac + CFLAGS="$ac_save_CFLAGS" + ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + +fi +{ echo "$as_me:$LINENO: result: $ac_cv_cflags_strict_prototypes" >&5 +echo "${ECHO_T}$ac_cv_cflags_strict_prototypes" >&6; } +case ".$ac_cv_cflags_strict_prototypes" in + .ok|.ok,*) ;; + .|.no|.no,*) + ;; + *) + if echo " $CFLAGS " | grep " $ac_cv_cflags_strict_prototypes " 2>&1 >/dev/null + then { (echo "$as_me:$LINENO: : CFLAGS does contain \$ac_cv_cflags_strict_prototypes") >&5 + (: CFLAGS does contain $ac_cv_cflags_strict_prototypes) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } + else { (echo "$as_me:$LINENO: : CFLAGS=\"\$CFLAGS \$ac_cv_cflags_strict_prototypes\"") >&5 + (: CFLAGS="$CFLAGS $ac_cv_cflags_strict_prototypes") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } + CFLAGS="$CFLAGS $ac_cv_cflags_strict_prototypes" + fi + ;; +esac + + + ansi= + if test -z "$ansi"; then + msg="for C compiler warning flags" + else + msg="for C compiler warning and ANSI conformance flags" + fi + { echo "$as_me:$LINENO: checking $msg" >&5 +echo $ECHO_N "checking $msg... $ECHO_C" >&6; } +if test "${vl_cv_prog_cc_warnings+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + + if test -n "$CC"; then + cat > conftest.c <<EOF +int main(int argc, char **argv) { return 0; } +EOF + + if test "$GCC" = "yes"; then + if test -z "$ansi"; then + vl_cv_prog_cc_warnings="-Wall" + else + vl_cv_prog_cc_warnings="-Wall -ansi -pedantic" + fi + + + elif $CC -V 2>&1 | grep -i "WorkShop" > /dev/null 2>&1 && + $CC -c -v -Xc conftest.c > /dev/null 2>&1 && + test -f conftest.o; then + if test -z "$ansi"; then + vl_cv_prog_cc_warnings="-v" + else + vl_cv_prog_cc_warnings="-v -Xc" + fi + + elif $CC -V 2>&1 | grep -i "Digital UNIX Compiler" > /dev/null 2>&1 && + $CC -c -verbose -w0 -warnprotos -std1 conftest.c > /dev/null 2>&1 && + test -f conftest.o; then + if test -z "$ansi"; then + vl_cv_prog_cc_warnings="-verbose -w0 -warnprotos" + else + vl_cv_prog_cc_warnings="-verbose -w0 -warnprotos -std1" + fi + + elif $CC 2>&1 | grep -i "C for AIX Compiler" > /dev/null 2>&1 && + $CC -c -qlanglvl=ansi -qinfo=all conftest.c > /dev/null 2>&1 && + test -f conftest.o; then + if test -z "$ansi"; then + vl_cv_prog_cc_warnings="-qsrcmsg -qinfo=all:noppt:noppc:noobs:nocnd" + else + vl_cv_prog_cc_warnings="-qsrcmsg -qinfo=all:noppt:noppc:noobs:nocnd -qlanglvl=ansi" + fi + + elif $CC -version 2>&1 | grep -i "MIPSpro Compilers" > /dev/null 2>&1 && + $CC -c -fullwarn -ansi -ansiE conftest.c > /dev/null 2>&1 && + test -f conftest.o; then + if test -z "$ansi"; then + vl_cv_prog_cc_warnings="-fullwarn" + else + vl_cv_prog_cc_warnings="-fullwarn -ansi -ansiE" + fi + + elif what $CC 2>&1 | grep -i "HP C Compiler" > /dev/null 2>&1 && + $CC -c -Aa +w1 conftest.c > /dev/null 2>&1 && + test -f conftest.o; then + if test -z "$ansi"; then + vl_cv_prog_cc_warnings="+w1" + else + vl_cv_prog_cc_warnings="+w1 -Aa" + fi + + elif $CC -V 2>&1 | grep "/SX" > /dev/null 2>&1 && + $CC -c -pvctl,fullmsg -Xc conftest.c > /dev/null 2>&1 && + test -f conftest.o; then + if test -z "$ansi"; then + vl_cv_prog_cc_warnings="-pvctl,fullmsg" + else + vl_cv_prog_cc_warnings="-pvctl,fullmsg -Xc" + fi + + elif $CC -V 2>&1 | grep -i "Cray" > /dev/null 2>&1 && + $CC -c -h msglevel 2 conftest.c > /dev/null 2>&1 && + test -f conftest.o; then + if test -z "$ansi"; then + vl_cv_prog_cc_warnings="-h msglevel 2" + else + vl_cv_prog_cc_warnings="-h msglevel 2 -h conform" + fi + + fi + rm -f conftest.* + fi + if test -n "$vl_cv_prog_cc_warnings"; then + CFLAGS="$CFLAGS $vl_cv_prog_cc_warnings" + else + vl_cv_prog_cc_warnings="unknown" + fi + +fi +{ echo "$as_me:$LINENO: result: $vl_cv_prog_cc_warnings" >&5 +echo "${ECHO_T}$vl_cv_prog_cc_warnings" >&6; } + + +ac_aux_dir= +for ac_dir in "$srcdir" "$srcdir/.." "$srcdir/../.."; do + if test -f "$ac_dir/install-sh"; then + ac_aux_dir=$ac_dir + ac_install_sh="$ac_aux_dir/install-sh -c" + break + elif test -f "$ac_dir/install.sh"; then + ac_aux_dir=$ac_dir + ac_install_sh="$ac_aux_dir/install.sh -c" + break + elif test -f "$ac_dir/shtool"; then + ac_aux_dir=$ac_dir + ac_install_sh="$ac_aux_dir/shtool install -c" + break + fi +done +if test -z "$ac_aux_dir"; then + { { echo "$as_me:$LINENO: error: cannot find install-sh or install.sh in \"$srcdir\" \"$srcdir/..\" \"$srcdir/../..\"" >&5 +echo "$as_me: error: cannot find install-sh or install.sh in \"$srcdir\" \"$srcdir/..\" \"$srcdir/../..\"" >&2;} + { (exit 1); exit 1; }; } +fi + +# These three variables are undocumented and unsupported, +# and are intended to be withdrawn in a future Autoconf release. +# They can cause serious problems if a builder's source tree is in a directory +# whose full name contains unusual characters. +ac_config_guess="$SHELL $ac_aux_dir/config.guess" # Please don't use this var. +ac_config_sub="$SHELL $ac_aux_dir/config.sub" # Please don't use this var. +ac_configure="$SHELL $ac_aux_dir/configure" # Please don't use this var. + + +# Find a good install program. We prefer a C program (faster), +# so one script is as good as another. But avoid the broken or +# incompatible versions: +# SysV /etc/install, /usr/sbin/install +# SunOS /usr/etc/install +# IRIX /sbin/install +# AIX /bin/install +# AmigaOS /C/install, which installs bootblocks on floppy discs +# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag +# AFS /usr/afsws/bin/install, which mishandles nonexistent args +# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" +# OS/2's system install, which has a completely different semantic +# ./install, which can be erroneously created by make from ./install.sh. +{ echo "$as_me:$LINENO: checking for a BSD-compatible install" >&5 +echo $ECHO_N "checking for a BSD-compatible install... $ECHO_C" >&6; } +if test -z "$INSTALL"; then +if test "${ac_cv_path_install+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + # Account for people who put trailing slashes in PATH elements. +case $as_dir/ in + ./ | .// | /cC/* | \ + /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \ + ?:\\/os2\\/install\\/* | ?:\\/OS2\\/INSTALL\\/* | \ + /usr/ucb/* ) ;; + *) + # OSF1 and SCO ODT 3.0 have their own names for install. + # Don't use installbsd from OSF since it installs stuff as root + # by default. + for ac_prog in ginstall scoinst install; do + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$ac_prog$ac_exec_ext"; }; then + if test $ac_prog = install && + grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then + # AIX install. It has an incompatible calling convention. + : + elif test $ac_prog = install && + grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then + # program-specific install script used by HP pwplus--don't use. + : + else + ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c" + break 3 + fi + fi + done + done + ;; +esac +done +IFS=$as_save_IFS + + +fi + if test "${ac_cv_path_install+set}" = set; then + INSTALL=$ac_cv_path_install + else + # As a last resort, use the slow shell script. Don't cache a + # value for INSTALL within a source directory, because that will + # break other packages using the cache if that directory is + # removed, or if the value is a relative name. + INSTALL=$ac_install_sh + fi +fi +{ echo "$as_me:$LINENO: result: $INSTALL" >&5 +echo "${ECHO_T}$INSTALL" >&6; } + +# Use test -z because SunOS4 sh mishandles braces in ${var-val}. +# It thinks the first close brace ends the variable substitution. +test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' + +test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}' + +test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' + +{ echo "$as_me:$LINENO: checking whether ln -s works" >&5 +echo $ECHO_N "checking whether ln -s works... $ECHO_C" >&6; } +LN_S=$as_ln_s +if test "$LN_S" = "ln -s"; then + { echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6; } +else + { echo "$as_me:$LINENO: result: no, using $LN_S" >&5 +echo "${ECHO_T}no, using $LN_S" >&6; } +fi + +{ echo "$as_me:$LINENO: checking for a thread-safe mkdir -p" >&5 +echo $ECHO_N "checking for a thread-safe mkdir -p... $ECHO_C" >&6; } +if test -z "$MKDIR_P"; then + if test "${ac_cv_path_mkdir+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH$PATH_SEPARATOR/opt/sfw/bin +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_prog in mkdir gmkdir; do + for ac_exec_ext in '' $ac_executable_extensions; do + { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$ac_prog$ac_exec_ext"; } || continue + case `"$as_dir/$ac_prog$ac_exec_ext" --version 2>&1` in #( + 'mkdir (GNU coreutils) '* | \ + 'mkdir (coreutils) '* | \ + 'mkdir (fileutils) '4.1*) + ac_cv_path_mkdir=$as_dir/$ac_prog$ac_exec_ext + break 3;; + esac + done + done +done +IFS=$as_save_IFS + +fi + + if test "${ac_cv_path_mkdir+set}" = set; then + MKDIR_P="$ac_cv_path_mkdir -p" + else + # As a last resort, use the slow shell script. Don't cache a + # value for MKDIR_P within a source directory, because that will + # break other packages using the cache if that directory is + # removed, or if the value is a relative name. + test -d ./--version && rmdir ./--version + MKDIR_P="$ac_install_sh -d" + fi +fi +{ echo "$as_me:$LINENO: result: $MKDIR_P" >&5 +echo "${ECHO_T}$MKDIR_P" >&6; } + +for ac_prog in perl5 perl +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } +if test "${ac_cv_path_PERL5+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + case $PERL5 in + [\\/]* | ?:[\\/]*) + ac_cv_path_PERL5="$PERL5" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +as_dummy="$PATH:/usr/bin:/usr/local/bin" +for as_dir in $as_dummy +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_path_PERL5="$as_dir/$ac_word$ac_exec_ext" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done +IFS=$as_save_IFS + + ;; +esac +fi +PERL5=$ac_cv_path_PERL5 +if test -n "$PERL5"; then + { echo "$as_me:$LINENO: result: $PERL5" >&5 +echo "${ECHO_T}$PERL5" >&6; } +else + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } +fi + + + test -n "$PERL5" && break +done +test -n "$PERL5" || PERL5="no" + +if test "$PERL5" != no; then + { echo "$as_me:$LINENO: checking whether perl is v5 or higher" >&5 +echo $ECHO_N "checking whether perl is v5 or higher... $ECHO_C" >&6; } + if $PERL5 -e 'exit($] >= 5)'; then + PERL5=no + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } + else + { echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6; } + fi +fi + +if test "$PERL5" != no; then + BUILT_SCRIPTS="$BUILT_SCRIPTS deweb" + SCRIPTS="$SCRIPTS chkweb" +else + { echo "$as_me:$LINENO: WARNING: chkweb will not be installed since you do not have perl5." >&5 +echo "$as_me: WARNING: chkweb will not be installed since you do not have perl5." >&2;} +fi + +for ac_prog in 'groff -man -P-bu -Tlatin1' 'nroff -man' +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } +if test "${ac_cv_prog_GROFF+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$GROFF"; then + ac_cv_prog_GROFF="$GROFF" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_GROFF="$ac_prog" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done +IFS=$as_save_IFS + +fi +fi +GROFF=$ac_cv_prog_GROFF +if test -n "$GROFF"; then + { echo "$as_me:$LINENO: result: $GROFF" >&5 +echo "${ECHO_T}$GROFF" >&6; } +else + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } +fi + + + test -n "$GROFF" && break +done +test -n "$GROFF" || GROFF="'nroff -man'" + + +# Extract the first word of "latex", so it can be a program name with args. +set dummy latex; ac_word=$2 +{ echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } +if test "${ac_cv_path_LATEX+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + case $LATEX in + [\\/]* | ?:[\\/]*) + ac_cv_path_LATEX="$LATEX" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_path_LATEX="$as_dir/$ac_word$ac_exec_ext" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done +IFS=$as_save_IFS + + test -z "$ac_cv_path_LATEX" && ac_cv_path_LATEX="no" + ;; +esac +fi +LATEX=$ac_cv_path_LATEX +if test -n "$LATEX"; then + { echo "$as_me:$LINENO: result: $LATEX" >&5 +echo "${ECHO_T}$LATEX" >&6; } +else + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } +fi + + + +# Extract the first word of "dvips", so it can be a program name with args. +set dummy dvips; ac_word=$2 +{ echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } +if test "${ac_cv_path_DVIPS+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + case $DVIPS in + [\\/]* | ?:[\\/]*) + ac_cv_path_DVIPS="$DVIPS" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_path_DVIPS="$as_dir/$ac_word$ac_exec_ext" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done +IFS=$as_save_IFS + + ;; +esac +fi +DVIPS=$ac_cv_path_DVIPS +if test -n "$DVIPS"; then + { echo "$as_me:$LINENO: result: $DVIPS" >&5 +echo "${ECHO_T}$DVIPS" >&6; } +else + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } +fi + + + +# Extract the first word of "lynx", so it can be a program name with args. +set dummy lynx; ac_word=$2 +{ echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } +if test "${ac_cv_path_LYNX+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + case $LYNX in + [\\/]* | ?:[\\/]*) + ac_cv_path_LYNX="$LYNX" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_path_LYNX="$as_dir/$ac_word$ac_exec_ext" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done +IFS=$as_save_IFS + + ;; +esac +fi +LYNX=$ac_cv_path_LYNX +if test -n "$LYNX"; then + { echo "$as_me:$LINENO: result: $LYNX" >&5 +echo "${ECHO_T}$LYNX" >&6; } +else + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } +fi + + +# Extract the first word of "latex2html", so it can be a program name with args. +set dummy latex2html; ac_word=$2 +{ echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } +if test "${ac_cv_path_LATEX2HTML+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + case $LATEX2HTML in + [\\/]* | ?:[\\/]*) + ac_cv_path_LATEX2HTML="$LATEX2HTML" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_path_LATEX2HTML="$as_dir/$ac_word$ac_exec_ext" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done +IFS=$as_save_IFS + + ;; +esac +fi +LATEX2HTML=$ac_cv_path_LATEX2HTML +if test -n "$LATEX2HTML"; then + { echo "$as_me:$LINENO: result: $LATEX2HTML" >&5 +echo "${ECHO_T}$LATEX2HTML" >&6; } +else + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } +fi + + + + +{ echo "$as_me:$LINENO: checking for tgetent in -ltermlib" >&5 +echo $ECHO_N "checking for tgetent in -ltermlib... $ECHO_C" >&6; } +if test "${ac_cv_lib_termlib_tgetent+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-ltermlib $LIBS" +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char tgetent (); +int +main () +{ +return tgetent (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && + $as_test_x conftest$ac_exeext; then + ac_cv_lib_termlib_tgetent=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_cv_lib_termlib_tgetent=no +fi + +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ echo "$as_me:$LINENO: result: $ac_cv_lib_termlib_tgetent" >&5 +echo "${ECHO_T}$ac_cv_lib_termlib_tgetent" >&6; } +if test $ac_cv_lib_termlib_tgetent = yes; then + cat >>confdefs.h <<_ACEOF +#define HAVE_LIBTERMLIB 1 +_ACEOF + + LIBS="-ltermlib $LIBS" + +fi + + +{ echo "$as_me:$LINENO: checking for tgetent in -ltermcap" >&5 +echo $ECHO_N "checking for tgetent in -ltermcap... $ECHO_C" >&6; } +if test "${ac_cv_lib_termcap_tgetent+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-ltermcap $LIBS" +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char tgetent (); +int +main () +{ +return tgetent (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && + $as_test_x conftest$ac_exeext; then + ac_cv_lib_termcap_tgetent=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_cv_lib_termcap_tgetent=no +fi + +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ echo "$as_me:$LINENO: result: $ac_cv_lib_termcap_tgetent" >&5 +echo "${ECHO_T}$ac_cv_lib_termcap_tgetent" >&6; } +if test $ac_cv_lib_termcap_tgetent = yes; then + cat >>confdefs.h <<_ACEOF +#define HAVE_LIBTERMCAP 1 +_ACEOF + + LIBS="-ltermcap $LIBS" + +fi + + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu +{ echo "$as_me:$LINENO: checking how to run the C preprocessor" >&5 +echo $ECHO_N "checking how to run the C preprocessor... $ECHO_C" >&6; } +# On Suns, sometimes $CPP names a directory. +if test -n "$CPP" && test -d "$CPP"; then + CPP= +fi +if test -z "$CPP"; then + if test "${ac_cv_prog_CPP+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + # Double quotes because CPP needs to be expanded + for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp" + do + ac_preproc_ok=false +for ac_c_preproc_warn_flag in '' yes +do + # Use a header file that comes with gcc, so configuring glibc + # with a fresh cross-compiler works. + # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since + # <limits.h> exists even on freestanding compilers. + # On the NeXT, cc -E runs the code through the compiler's parser, + # not just through cpp. "Syntax error" is here to catch this case. + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#ifdef __STDC__ +# include <limits.h> +#else +# include <assert.h> +#endif + Syntax error +_ACEOF +if { (ac_try="$ac_cpp conftest.$ac_ext" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null && { + test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || + test ! -s conftest.err + }; then + : +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + # Broken: fails on valid input. +continue +fi + +rm -f conftest.err conftest.$ac_ext + + # OK, works on sane cases. Now check whether nonexistent headers + # can be detected and how. + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include <ac_nonexistent.h> +_ACEOF +if { (ac_try="$ac_cpp conftest.$ac_ext" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null && { + test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || + test ! -s conftest.err + }; then + # Broken: success on invalid input. +continue +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + # Passes both tests. +ac_preproc_ok=: +break +fi + +rm -f conftest.err conftest.$ac_ext + +done +# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. +rm -f conftest.err conftest.$ac_ext +if $ac_preproc_ok; then + break +fi + + done + ac_cv_prog_CPP=$CPP + +fi + CPP=$ac_cv_prog_CPP +else + ac_cv_prog_CPP=$CPP +fi +{ echo "$as_me:$LINENO: result: $CPP" >&5 +echo "${ECHO_T}$CPP" >&6; } +ac_preproc_ok=false +for ac_c_preproc_warn_flag in '' yes +do + # Use a header file that comes with gcc, so configuring glibc + # with a fresh cross-compiler works. + # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since + # <limits.h> exists even on freestanding compilers. + # On the NeXT, cc -E runs the code through the compiler's parser, + # not just through cpp. "Syntax error" is here to catch this case. + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#ifdef __STDC__ +# include <limits.h> +#else +# include <assert.h> +#endif + Syntax error +_ACEOF +if { (ac_try="$ac_cpp conftest.$ac_ext" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null && { + test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || + test ! -s conftest.err + }; then + : +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + # Broken: fails on valid input. +continue +fi + +rm -f conftest.err conftest.$ac_ext + + # OK, works on sane cases. Now check whether nonexistent headers + # can be detected and how. + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include <ac_nonexistent.h> +_ACEOF +if { (ac_try="$ac_cpp conftest.$ac_ext" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null && { + test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || + test ! -s conftest.err + }; then + # Broken: success on invalid input. +continue +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + # Passes both tests. +ac_preproc_ok=: +break +fi + +rm -f conftest.err conftest.$ac_ext + +done +# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. +rm -f conftest.err conftest.$ac_ext +if $ac_preproc_ok; then + : +else + { { echo "$as_me:$LINENO: error: C preprocessor \"$CPP\" fails sanity check +See \`config.log' for more details." >&5 +echo "$as_me: error: C preprocessor \"$CPP\" fails sanity check +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } +fi + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + +{ echo "$as_me:$LINENO: checking for grep that handles long lines and -e" >&5 +echo $ECHO_N "checking for grep that handles long lines and -e... $ECHO_C" >&6; } +if test "${ac_cv_path_GREP+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + # Extract the first word of "grep ggrep" to use in msg output +if test -z "$GREP"; then +set dummy grep ggrep; ac_prog_name=$2 +if test "${ac_cv_path_GREP+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_path_GREP_found=false +# Loop through the user's path and test for each of PROGNAME-LIST +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_prog in grep ggrep; do + for ac_exec_ext in '' $ac_executable_extensions; do + ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext" + { test -f "$ac_path_GREP" && $as_test_x "$ac_path_GREP"; } || continue + # Check for GNU ac_path_GREP and select it if it is found. + # Check for GNU $ac_path_GREP +case `"$ac_path_GREP" --version 2>&1` in +*GNU*) + ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;; +*) + ac_count=0 + echo $ECHO_N "0123456789$ECHO_C" >"conftest.in" + while : + do + cat "conftest.in" "conftest.in" >"conftest.tmp" + mv "conftest.tmp" "conftest.in" + cp "conftest.in" "conftest.nl" + echo 'GREP' >> "conftest.nl" + "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break + diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break + ac_count=`expr $ac_count + 1` + if test $ac_count -gt ${ac_path_GREP_max-0}; then + # Best one so far, save it but keep looking for a better one + ac_cv_path_GREP="$ac_path_GREP" + ac_path_GREP_max=$ac_count + fi + # 10*(2^10) chars as input seems more than enough + test $ac_count -gt 10 && break + done + rm -f conftest.in conftest.tmp conftest.nl conftest.out;; +esac + + + $ac_path_GREP_found && break 3 + done +done + +done +IFS=$as_save_IFS + + +fi + +GREP="$ac_cv_path_GREP" +if test -z "$GREP"; then + { { echo "$as_me:$LINENO: error: no acceptable $ac_prog_name could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&5 +echo "$as_me: error: no acceptable $ac_prog_name could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&2;} + { (exit 1); exit 1; }; } +fi + +else + ac_cv_path_GREP=$GREP +fi + + +fi +{ echo "$as_me:$LINENO: result: $ac_cv_path_GREP" >&5 +echo "${ECHO_T}$ac_cv_path_GREP" >&6; } + GREP="$ac_cv_path_GREP" + + +{ echo "$as_me:$LINENO: checking for egrep" >&5 +echo $ECHO_N "checking for egrep... $ECHO_C" >&6; } +if test "${ac_cv_path_EGREP+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if echo a | $GREP -E '(a|b)' >/dev/null 2>&1 + then ac_cv_path_EGREP="$GREP -E" + else + # Extract the first word of "egrep" to use in msg output +if test -z "$EGREP"; then +set dummy egrep; ac_prog_name=$2 +if test "${ac_cv_path_EGREP+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_path_EGREP_found=false +# Loop through the user's path and test for each of PROGNAME-LIST +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_prog in egrep; do + for ac_exec_ext in '' $ac_executable_extensions; do + ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext" + { test -f "$ac_path_EGREP" && $as_test_x "$ac_path_EGREP"; } || continue + # Check for GNU ac_path_EGREP and select it if it is found. + # Check for GNU $ac_path_EGREP +case `"$ac_path_EGREP" --version 2>&1` in +*GNU*) + ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;; +*) + ac_count=0 + echo $ECHO_N "0123456789$ECHO_C" >"conftest.in" + while : + do + cat "conftest.in" "conftest.in" >"conftest.tmp" + mv "conftest.tmp" "conftest.in" + cp "conftest.in" "conftest.nl" + echo 'EGREP' >> "conftest.nl" + "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break + diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break + ac_count=`expr $ac_count + 1` + if test $ac_count -gt ${ac_path_EGREP_max-0}; then + # Best one so far, save it but keep looking for a better one + ac_cv_path_EGREP="$ac_path_EGREP" + ac_path_EGREP_max=$ac_count + fi + # 10*(2^10) chars as input seems more than enough + test $ac_count -gt 10 && break + done + rm -f conftest.in conftest.tmp conftest.nl conftest.out;; +esac + + + $ac_path_EGREP_found && break 3 + done +done + +done +IFS=$as_save_IFS + + +fi + +EGREP="$ac_cv_path_EGREP" +if test -z "$EGREP"; then + { { echo "$as_me:$LINENO: error: no acceptable $ac_prog_name could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&5 +echo "$as_me: error: no acceptable $ac_prog_name could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&2;} + { (exit 1); exit 1; }; } +fi + +else + ac_cv_path_EGREP=$EGREP +fi + + + fi +fi +{ echo "$as_me:$LINENO: result: $ac_cv_path_EGREP" >&5 +echo "${ECHO_T}$ac_cv_path_EGREP" >&6; } + EGREP="$ac_cv_path_EGREP" + + +{ echo "$as_me:$LINENO: checking for ANSI C header files" >&5 +echo $ECHO_N "checking for ANSI C header files... $ECHO_C" >&6; } +if test "${ac_cv_header_stdc+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include <stdlib.h> +#include <stdarg.h> +#include <string.h> +#include <float.h> + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + ac_cv_header_stdc=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_cv_header_stdc=no +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + +if test $ac_cv_header_stdc = yes; then + # SunOS 4.x string.h does not declare mem*, contrary to ANSI. + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include <string.h> + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "memchr" >/dev/null 2>&1; then + : +else + ac_cv_header_stdc=no +fi +rm -f -r conftest* + +fi + +if test $ac_cv_header_stdc = yes; then + # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include <stdlib.h> + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "free" >/dev/null 2>&1; then + : +else + ac_cv_header_stdc=no +fi +rm -f -r conftest* + +fi + +if test $ac_cv_header_stdc = yes; then + # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. + if test "$cross_compiling" = yes; then + : +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include <ctype.h> +#include <stdlib.h> +#if ((' ' & 0x0FF) == 0x020) +# define ISLOWER(c) ('a' <= (c) && (c) <= 'z') +# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) +#else +# define ISLOWER(c) \ + (('a' <= (c) && (c) <= 'i') \ + || ('j' <= (c) && (c) <= 'r') \ + || ('s' <= (c) && (c) <= 'z')) +# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) +#endif + +#define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) +int +main () +{ + int i; + for (i = 0; i < 256; i++) + if (XOR (islower (i), ISLOWER (i)) + || toupper (i) != TOUPPER (i)) + return 2; + return 0; +} +_ACEOF +rm -f conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + : +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +( exit $ac_status ) +ac_cv_header_stdc=no +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +fi + + +fi +fi +{ echo "$as_me:$LINENO: result: $ac_cv_header_stdc" >&5 +echo "${ECHO_T}$ac_cv_header_stdc" >&6; } +if test $ac_cv_header_stdc = yes; then + +cat >>confdefs.h <<\_ACEOF +#define STDC_HEADERS 1 +_ACEOF + +fi + + + + + + +ac_header_dirent=no +for ac_hdr in dirent.h sys/ndir.h sys/dir.h ndir.h; do + as_ac_Header=`echo "ac_cv_header_dirent_$ac_hdr" | $as_tr_sh` +{ echo "$as_me:$LINENO: checking for $ac_hdr that defines DIR" >&5 +echo $ECHO_N "checking for $ac_hdr that defines DIR... $ECHO_C" >&6; } +if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include <sys/types.h> +#include <$ac_hdr> + +int +main () +{ +if ((DIR *) 0) +return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + eval "$as_ac_Header=yes" +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + eval "$as_ac_Header=no" +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +ac_res=`eval echo '${'$as_ac_Header'}'` + { echo "$as_me:$LINENO: result: $ac_res" >&5 +echo "${ECHO_T}$ac_res" >&6; } +if test `eval echo '${'$as_ac_Header'}'` = yes; then + cat >>confdefs.h <<_ACEOF +#define `echo "HAVE_$ac_hdr" | $as_tr_cpp` 1 +_ACEOF + +ac_header_dirent=$ac_hdr; break +fi + +done +# Two versions of opendir et al. are in -ldir and -lx on SCO Xenix. +if test $ac_header_dirent = dirent.h; then + { echo "$as_me:$LINENO: checking for library containing opendir" >&5 +echo $ECHO_N "checking for library containing opendir... $ECHO_C" >&6; } +if test "${ac_cv_search_opendir+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_func_search_save_LIBS=$LIBS +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char opendir (); +int +main () +{ +return opendir (); + ; + return 0; +} +_ACEOF +for ac_lib in '' dir; do + if test -z "$ac_lib"; then + ac_res="none required" + else + ac_res=-l$ac_lib + LIBS="-l$ac_lib $ac_func_search_save_LIBS" + fi + rm -f conftest.$ac_objext conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && + $as_test_x conftest$ac_exeext; then + ac_cv_search_opendir=$ac_res +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + +fi + +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext + if test "${ac_cv_search_opendir+set}" = set; then + break +fi +done +if test "${ac_cv_search_opendir+set}" = set; then + : +else + ac_cv_search_opendir=no +fi +rm conftest.$ac_ext +LIBS=$ac_func_search_save_LIBS +fi +{ echo "$as_me:$LINENO: result: $ac_cv_search_opendir" >&5 +echo "${ECHO_T}$ac_cv_search_opendir" >&6; } +ac_res=$ac_cv_search_opendir +if test "$ac_res" != no; then + test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" + +fi + +else + { echo "$as_me:$LINENO: checking for library containing opendir" >&5 +echo $ECHO_N "checking for library containing opendir... $ECHO_C" >&6; } +if test "${ac_cv_search_opendir+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_func_search_save_LIBS=$LIBS +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char opendir (); +int +main () +{ +return opendir (); + ; + return 0; +} +_ACEOF +for ac_lib in '' x; do + if test -z "$ac_lib"; then + ac_res="none required" + else + ac_res=-l$ac_lib + LIBS="-l$ac_lib $ac_func_search_save_LIBS" + fi + rm -f conftest.$ac_objext conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && + $as_test_x conftest$ac_exeext; then + ac_cv_search_opendir=$ac_res +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + +fi + +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext + if test "${ac_cv_search_opendir+set}" = set; then + break +fi +done +if test "${ac_cv_search_opendir+set}" = set; then + : +else + ac_cv_search_opendir=no +fi +rm conftest.$ac_ext +LIBS=$ac_func_search_save_LIBS +fi +{ echo "$as_me:$LINENO: result: $ac_cv_search_opendir" >&5 +echo "${ECHO_T}$ac_cv_search_opendir" >&6; } +ac_res=$ac_cv_search_opendir +if test "$ac_res" != no; then + test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" + +fi + +fi + +# On IRIX 5.3, sys/types and inttypes.h are conflicting. + + + + + + + + + +for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \ + inttypes.h stdint.h unistd.h +do +as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` +{ echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } +if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default + +#include <$ac_header> +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + eval "$as_ac_Header=yes" +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + eval "$as_ac_Header=no" +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +ac_res=`eval echo '${'$as_ac_Header'}'` + { echo "$as_me:$LINENO: result: $ac_res" >&5 +echo "${ECHO_T}$ac_res" >&6; } +if test `eval echo '${'$as_ac_Header'}'` = yes; then + cat >>confdefs.h <<_ACEOF +#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF + +fi + +done + + + + + + + + + + +for ac_header in limits.h stat.h strings.h stdarg.h sys/stat.h termcap.h termlib.h unistd.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 + { echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } +if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +fi +ac_res=`eval echo '${'$as_ac_Header'}'` + { echo "$as_me:$LINENO: result: $ac_res" >&5 +echo "${ECHO_T}$ac_res" >&6; } +else + # Is the header compilable? +{ echo "$as_me:$LINENO: checking $ac_header usability" >&5 +echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6; } +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +#include <$ac_header> +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + ac_header_compiler=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_header_compiler=no +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +echo "${ECHO_T}$ac_header_compiler" >&6; } + +# Is the header present? +{ echo "$as_me:$LINENO: checking $ac_header presence" >&5 +echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6; } +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include <$ac_header> +_ACEOF +if { (ac_try="$ac_cpp conftest.$ac_ext" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null && { + test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || + test ! -s conftest.err + }; then + ac_header_preproc=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_header_preproc=no +fi + +rm -f conftest.err conftest.$ac_ext +{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +echo "${ECHO_T}$ac_header_preproc" >&6; } + +# So? What about this header? +case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in + yes:no: ) + { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 +echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5 +echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;} + ac_header_preproc=yes + ;; + no:yes:* ) + { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 +echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 +echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5 +echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5 +echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 +echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 +echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} + + ;; +esac +{ echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } +if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + eval "$as_ac_Header=\$ac_header_preproc" +fi +ac_res=`eval echo '${'$as_ac_Header'}'` + { echo "$as_me:$LINENO: result: $ac_res" >&5 +echo "${ECHO_T}$ac_res" >&6; } + +fi +if test `eval echo '${'$as_ac_Header'}'` = yes; then + cat >>confdefs.h <<_ACEOF +#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF + +fi + +done + + +{ echo "$as_me:$LINENO: checking for an ANSI C-conforming const" >&5 +echo $ECHO_N "checking for an ANSI C-conforming const... $ECHO_C" >&6; } +if test "${ac_cv_c_const+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ +/* FIXME: Include the comments suggested by Paul. */ +#ifndef __cplusplus + /* Ultrix mips cc rejects this. */ + typedef int charset[2]; + const charset cs; + /* SunOS 4.1.1 cc rejects this. */ + char const *const *pcpcc; + char **ppc; + /* NEC SVR4.0.2 mips cc rejects this. */ + struct point {int x, y;}; + static struct point const zero = {0,0}; + /* AIX XL C 1.02.0.0 rejects this. + It does not let you subtract one const X* pointer from another in + an arm of an if-expression whose if-part is not a constant + expression */ + const char *g = "string"; + pcpcc = &g + (g ? g-g : 0); + /* HPUX 7.0 cc rejects these. */ + ++pcpcc; + ppc = (char**) pcpcc; + pcpcc = (char const *const *) ppc; + { /* SCO 3.2v4 cc rejects this. */ + char *t; + char const *s = 0 ? (char *) 0 : (char const *) 0; + + *t++ = 0; + if (s) return 0; + } + { /* Someone thinks the Sun supposedly-ANSI compiler will reject this. */ + int x[] = {25, 17}; + const int *foo = &x[0]; + ++foo; + } + { /* Sun SC1.0 ANSI compiler rejects this -- but not the above. */ + typedef const int *iptr; + iptr p = 0; + ++p; + } + { /* AIX XL C 1.02.0.0 rejects this saying + "k.c", line 2.27: 1506-025 (S) Operand must be a modifiable lvalue. */ + struct s { int j; const int *ap[3]; }; + struct s *b; b->j = 5; + } + { /* ULTRIX-32 V3.1 (Rev 9) vcc rejects this */ + const int foo = 10; + if (!foo) return 0; + } + return !cs[0] && !zero.x; +#endif + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + ac_cv_c_const=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_cv_c_const=no +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ echo "$as_me:$LINENO: result: $ac_cv_c_const" >&5 +echo "${ECHO_T}$ac_cv_c_const" >&6; } +if test $ac_cv_c_const = no; then + +cat >>confdefs.h <<\_ACEOF +#define const +_ACEOF + +fi + +{ echo "$as_me:$LINENO: checking for inline" >&5 +echo $ECHO_N "checking for inline... $ECHO_C" >&6; } +if test "${ac_cv_c_inline+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_cv_c_inline=no +for ac_kw in inline __inline__ __inline; do + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#ifndef __cplusplus +typedef int foo_t; +static $ac_kw foo_t static_foo () {return 0; } +$ac_kw foo_t foo () {return 0; } +#endif + +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + ac_cv_c_inline=$ac_kw +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + test "$ac_cv_c_inline" != no && break +done + +fi +{ echo "$as_me:$LINENO: result: $ac_cv_c_inline" >&5 +echo "${ECHO_T}$ac_cv_c_inline" >&6; } + + +case $ac_cv_c_inline in + inline | yes) ;; + *) + case $ac_cv_c_inline in + no) ac_val=;; + *) ac_val=$ac_cv_c_inline;; + esac + cat >>confdefs.h <<_ACEOF +#ifndef __cplusplus +#define inline $ac_val +#endif +_ACEOF + ;; +esac + +{ echo "$as_me:$LINENO: checking for size_t" >&5 +echo $ECHO_N "checking for size_t... $ECHO_C" >&6; } +if test "${ac_cv_type_size_t+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +typedef size_t ac__type_new_; +int +main () +{ +if ((ac__type_new_ *) 0) + return 0; +if (sizeof (ac__type_new_)) + return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + ac_cv_type_size_t=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_cv_type_size_t=no +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ echo "$as_me:$LINENO: result: $ac_cv_type_size_t" >&5 +echo "${ECHO_T}$ac_cv_type_size_t" >&6; } +if test $ac_cv_type_size_t = yes; then + : +else + +cat >>confdefs.h <<_ACEOF +#define size_t unsigned int +_ACEOF + +fi + + + +for ac_func in vprintf +do +as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` +{ echo "$as_me:$LINENO: checking for $ac_func" >&5 +echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6; } +if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func. + For example, HP-UX 11i <limits.h> declares gettimeofday. */ +#define $ac_func innocuous_$ac_func + +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char $ac_func (); below. + Prefer <limits.h> to <assert.h> if __STDC__ is defined, since + <limits.h> exists even on freestanding compilers. */ + +#ifdef __STDC__ +# include <limits.h> +#else +# include <assert.h> +#endif + +#undef $ac_func + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char $ac_func (); +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined __stub_$ac_func || defined __stub___$ac_func +choke me +#endif + +int +main () +{ +return $ac_func (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && + $as_test_x conftest$ac_exeext; then + eval "$as_ac_var=yes" +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + eval "$as_ac_var=no" +fi + +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext +fi +ac_res=`eval echo '${'$as_ac_var'}'` + { echo "$as_me:$LINENO: result: $ac_res" >&5 +echo "${ECHO_T}$ac_res" >&6; } +if test `eval echo '${'$as_ac_var'}'` = yes; then + cat >>confdefs.h <<_ACEOF +#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 +_ACEOF + +{ echo "$as_me:$LINENO: checking for _doprnt" >&5 +echo $ECHO_N "checking for _doprnt... $ECHO_C" >&6; } +if test "${ac_cv_func__doprnt+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +/* Define _doprnt to an innocuous variant, in case <limits.h> declares _doprnt. + For example, HP-UX 11i <limits.h> declares gettimeofday. */ +#define _doprnt innocuous__doprnt + +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char _doprnt (); below. + Prefer <limits.h> to <assert.h> if __STDC__ is defined, since + <limits.h> exists even on freestanding compilers. */ + +#ifdef __STDC__ +# include <limits.h> +#else +# include <assert.h> +#endif + +#undef _doprnt + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char _doprnt (); +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined __stub__doprnt || defined __stub____doprnt +choke me +#endif + +int +main () +{ +return _doprnt (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && + $as_test_x conftest$ac_exeext; then + ac_cv_func__doprnt=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_cv_func__doprnt=no +fi + +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext +fi +{ echo "$as_me:$LINENO: result: $ac_cv_func__doprnt" >&5 +echo "${ECHO_T}$ac_cv_func__doprnt" >&6; } +if test $ac_cv_func__doprnt = yes; then + +cat >>confdefs.h <<\_ACEOF +#define HAVE_DOPRNT 1 +_ACEOF + +fi + +fi +done + + + + + + + + + + + + + +for ac_func in access closedir fileno isatty opendir readdir stat strcasecmp strdup strlwr strtol +do +as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` +{ echo "$as_me:$LINENO: checking for $ac_func" >&5 +echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6; } +if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func. + For example, HP-UX 11i <limits.h> declares gettimeofday. */ +#define $ac_func innocuous_$ac_func + +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char $ac_func (); below. + Prefer <limits.h> to <assert.h> if __STDC__ is defined, since + <limits.h> exists even on freestanding compilers. */ + +#ifdef __STDC__ +# include <limits.h> +#else +# include <assert.h> +#endif + +#undef $ac_func + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char $ac_func (); +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined __stub_$ac_func || defined __stub___$ac_func +choke me +#endif + +int +main () +{ +return $ac_func (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && + $as_test_x conftest$ac_exeext; then + eval "$as_ac_var=yes" +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + eval "$as_ac_var=no" +fi + +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext +fi +ac_res=`eval echo '${'$as_ac_var'}'` + { echo "$as_me:$LINENO: result: $ac_res" >&5 +echo "${ECHO_T}$ac_res" >&6; } +if test `eval echo '${'$as_ac_var'}'` = yes; then + cat >>confdefs.h <<_ACEOF +#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 +_ACEOF + +fi +done + + +ac_config_headers="$ac_config_headers config.h" + +ac_config_files="$ac_config_files stamp-h" + +ac_config_files="$ac_config_files Makefile deweb rmeheader ChkTeX.tex" + +cat >confcache <<\_ACEOF +# This file is a shell script that caches the results of configure +# tests run on this system so they can be shared between configure +# scripts and configure runs, see configure's option --config-cache. +# It is not useful on other systems. If it contains results you don't +# want to keep, you may remove or edit it. +# +# config.status only pays attention to the cache file if you give it +# the --recheck option to rerun configure. +# +# `ac_cv_env_foo' variables (set or unset) will be overridden when +# loading this file, other *unset* `ac_cv_foo' will be assigned the +# following values. + +_ACEOF + +# The following way of writing the cache mishandles newlines in values, +# but we know of no workaround that is simple, portable, and efficient. +# So, we kill variables containing newlines. +# Ultrix sh set writes to stderr and can't be redirected directly, +# and sets the high bit in the cache file unless we assign to the vars. +( + for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do + eval ac_val=\$$ac_var + case $ac_val in #( + *${as_nl}*) + case $ac_var in #( + *_cv_*) { echo "$as_me:$LINENO: WARNING: Cache variable $ac_var contains a newline." >&5 +echo "$as_me: WARNING: Cache variable $ac_var contains a newline." >&2;} ;; + esac + case $ac_var in #( + _ | IFS | as_nl) ;; #( + *) $as_unset $ac_var ;; + esac ;; + esac + done + + (set) 2>&1 | + case $as_nl`(ac_space=' '; set) 2>&1` in #( + *${as_nl}ac_space=\ *) + # `set' does not quote correctly, so add quotes (double-quote + # substitution turns \\\\ into \\, and sed turns \\ into \). + sed -n \ + "s/'/'\\\\''/g; + s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" + ;; #( + *) + # `set' quotes correctly as required by POSIX, so do not add quotes. + sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" + ;; + esac | + sort +) | + sed ' + /^ac_cv_env_/b end + t clear + :clear + s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/ + t end + s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ + :end' >>confcache +if diff "$cache_file" confcache >/dev/null 2>&1; then :; else + if test -w "$cache_file"; then + test "x$cache_file" != "x/dev/null" && + { echo "$as_me:$LINENO: updating cache $cache_file" >&5 +echo "$as_me: updating cache $cache_file" >&6;} + cat confcache >$cache_file + else + { echo "$as_me:$LINENO: not updating unwritable cache $cache_file" >&5 +echo "$as_me: not updating unwritable cache $cache_file" >&6;} + fi +fi +rm -f confcache + +test "x$prefix" = xNONE && prefix=$ac_default_prefix +# Let make expand exec_prefix. +test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' + +DEFS=-DHAVE_CONFIG_H + +ac_libobjs= +ac_ltlibobjs= +for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue + # 1. Remove the extension, and $U if already installed. + ac_script='s/\$U\././;s/\.o$//;s/\.obj$//' + ac_i=`echo "$ac_i" | sed "$ac_script"` + # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR + # will be set to the directory where LIBOBJS objects are built. + ac_libobjs="$ac_libobjs \${LIBOBJDIR}$ac_i\$U.$ac_objext" + ac_ltlibobjs="$ac_ltlibobjs \${LIBOBJDIR}$ac_i"'$U.lo' +done +LIBOBJS=$ac_libobjs + +LTLIBOBJS=$ac_ltlibobjs + + + +: ${CONFIG_STATUS=./config.status} +ac_clean_files_save=$ac_clean_files +ac_clean_files="$ac_clean_files $CONFIG_STATUS" +{ echo "$as_me:$LINENO: creating $CONFIG_STATUS" >&5 +echo "$as_me: creating $CONFIG_STATUS" >&6;} +cat >$CONFIG_STATUS <<_ACEOF +#! $SHELL +# Generated by $as_me. +# Run this file to recreate the current configuration. +# Compiler output produced by configure, useful for debugging +# configure, is in config.log if it exists. + +debug=false +ac_cs_recheck=false +ac_cs_silent=false +SHELL=\${CONFIG_SHELL-$SHELL} +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF +## --------------------- ## +## M4sh Initialization. ## +## --------------------- ## + +# Be more Bourne compatible +DUALCASE=1; export DUALCASE # for MKS sh +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then + emulate sh + NULLCMD=: + # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else + case `(set -o) 2>/dev/null` in + *posix*) set -o posix ;; +esac + +fi + + + + +# PATH needs CR +# Avoid depending upon Character Ranges. +as_cr_letters='abcdefghijklmnopqrstuvwxyz' +as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' +as_cr_Letters=$as_cr_letters$as_cr_LETTERS +as_cr_digits='0123456789' +as_cr_alnum=$as_cr_Letters$as_cr_digits + +# The user is always right. +if test "${PATH_SEPARATOR+set}" != set; then + echo "#! /bin/sh" >conf$$.sh + echo "exit 0" >>conf$$.sh + chmod +x conf$$.sh + if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then + PATH_SEPARATOR=';' + else + PATH_SEPARATOR=: + fi + rm -f conf$$.sh +fi + +# Support unset when possible. +if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then + as_unset=unset +else + as_unset=false +fi + + +# IFS +# We need space, tab and new line, in precisely that order. Quoting is +# there to prevent editors from complaining about space-tab. +# (If _AS_PATH_WALK were called with IFS unset, it would disable word +# splitting by setting IFS to empty value.) +as_nl=' +' +IFS=" "" $as_nl" + +# Find who we are. Look in the path if we contain no directory separator. +case $0 in + *[\\/]* ) as_myself=$0 ;; + *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break +done +IFS=$as_save_IFS + + ;; +esac +# We did not find ourselves, most probably we were run as `sh COMMAND' +# in which case we are not to be found in the path. +if test "x$as_myself" = x; then + as_myself=$0 +fi +if test ! -f "$as_myself"; then + echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 + { (exit 1); exit 1; } +fi + +# Work around bugs in pre-3.0 UWIN ksh. +for as_var in ENV MAIL MAILPATH +do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var +done +PS1='$ ' +PS2='> ' +PS4='+ ' + +# NLS nuisances. +for as_var in \ + LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \ + LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \ + LC_TELEPHONE LC_TIME +do + if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then + eval $as_var=C; export $as_var + else + ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var + fi +done + +# Required to use basename. +if expr a : '\(a\)' >/dev/null 2>&1 && + test "X`expr 00001 : '.*\(...\)'`" = X001; then + as_expr=expr +else + as_expr=false +fi + +if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then + as_basename=basename +else + as_basename=false +fi + + +# Name of the executable. +as_me=`$as_basename -- "$0" || +$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ + X"$0" : 'X\(//\)$' \| \ + X"$0" : 'X\(/\)' \| . 2>/dev/null || +echo X/"$0" | + sed '/^.*\/\([^/][^/]*\)\/*$/{ + s//\1/ + q + } + /^X\/\(\/\/\)$/{ + s//\1/ + q + } + /^X\/\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + +# CDPATH. +$as_unset CDPATH + + + + as_lineno_1=$LINENO + as_lineno_2=$LINENO + test "x$as_lineno_1" != "x$as_lineno_2" && + test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2" || { + + # Create $as_me.lineno as a copy of $as_myself, but with $LINENO + # uniformly replaced by the line number. The first 'sed' inserts a + # line-number line after each line using $LINENO; the second 'sed' + # does the real work. The second script uses 'N' to pair each + # line-number line with the line containing $LINENO, and appends + # trailing '-' during substitution so that $LINENO is not a special + # case at line end. + # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the + # scripts with optimization help from Paolo Bonzini. Blame Lee + # E. McMahon (1931-1989) for sed's syntax. :-) + sed -n ' + p + /[$]LINENO/= + ' <$as_myself | + sed ' + s/[$]LINENO.*/&-/ + t lineno + b + :lineno + N + :loop + s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ + t loop + s/-\n.*// + ' >$as_me.lineno && + chmod +x "$as_me.lineno" || + { echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2 + { (exit 1); exit 1; }; } + + # Don't try to exec as it changes $[0], causing all sort of problems + # (the dirname of $[0] is not the place where we might find the + # original and so on. Autoconf is especially sensitive to this). + . "./$as_me.lineno" + # Exit status is that of the last command. + exit +} + + +if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then + as_dirname=dirname +else + as_dirname=false +fi + +ECHO_C= ECHO_N= ECHO_T= +case `echo -n x` in +-n*) + case `echo 'x\c'` in + *c*) ECHO_T=' ';; # ECHO_T is single tab character. + *) ECHO_C='\c';; + esac;; +*) + ECHO_N='-n';; +esac + +if expr a : '\(a\)' >/dev/null 2>&1 && + test "X`expr 00001 : '.*\(...\)'`" = X001; then + as_expr=expr +else + as_expr=false +fi + +rm -f conf$$ conf$$.exe conf$$.file +if test -d conf$$.dir; then + rm -f conf$$.dir/conf$$.file +else + rm -f conf$$.dir + mkdir conf$$.dir +fi +echo >conf$$.file +if ln -s conf$$.file conf$$ 2>/dev/null; then + as_ln_s='ln -s' + # ... but there are two gotchas: + # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. + # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. + # In both cases, we have to default to `cp -p'. + ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || + as_ln_s='cp -p' +elif ln conf$$.file conf$$ 2>/dev/null; then + as_ln_s=ln +else + as_ln_s='cp -p' +fi +rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file +rmdir conf$$.dir 2>/dev/null + +if mkdir -p . 2>/dev/null; then + as_mkdir_p=: +else + test -d ./-p && rmdir ./-p + as_mkdir_p=false +fi + +if test -x / >/dev/null 2>&1; then + as_test_x='test -x' +else + if ls -dL / >/dev/null 2>&1; then + as_ls_L_option=L + else + as_ls_L_option= + fi + as_test_x=' + eval sh -c '\'' + if test -d "$1"; then + test -d "$1/."; + else + case $1 in + -*)set "./$1";; + esac; + case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in + ???[sx]*):;;*)false;;esac;fi + '\'' sh + ' +fi +as_executable_p=$as_test_x + +# Sed expression to map a string onto a valid CPP name. +as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" + +# Sed expression to map a string onto a valid variable name. +as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" + + +exec 6>&1 + +# Save the log message, to keep $[0] and so on meaningful, and to +# report actual input values of CONFIG_FILES etc. instead of their +# values after options handling. +ac_log=" +This file was extended by ChkTeX $as_me 1.6.6, which was +generated by GNU Autoconf 2.61. Invocation command line was + + CONFIG_FILES = $CONFIG_FILES + CONFIG_HEADERS = $CONFIG_HEADERS + CONFIG_LINKS = $CONFIG_LINKS + CONFIG_COMMANDS = $CONFIG_COMMANDS + $ $0 $@ + +on `(hostname || uname -n) 2>/dev/null | sed 1q` +" + +_ACEOF + +cat >>$CONFIG_STATUS <<_ACEOF +# Files that config.status was made for. +config_files="$ac_config_files" +config_headers="$ac_config_headers" + +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF +ac_cs_usage="\ +\`$as_me' instantiates files from templates according to the +current configuration. + +Usage: $0 [OPTIONS] [FILE]... + + -h, --help print this help, then exit + -V, --version print version number and configuration settings, then exit + -q, --quiet do not print progress messages + -d, --debug don't remove temporary files + --recheck update $as_me by reconfiguring in the same conditions + --file=FILE[:TEMPLATE] + instantiate the configuration file FILE + --header=FILE[:TEMPLATE] + instantiate the configuration header FILE + +Configuration files: +$config_files + +Configuration headers: +$config_headers + +Report bugs to <bug-autoconf@gnu.org>." + +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF +ac_cs_version="\\ +ChkTeX config.status 1.6.6 +configured by $0, generated by GNU Autoconf 2.61, + with options \\"`echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`\\" + +Copyright (C) 2006 Free Software Foundation, Inc. +This config.status script is free software; the Free Software Foundation +gives unlimited permission to copy, distribute and modify it." + +ac_pwd='$ac_pwd' +srcdir='$srcdir' +INSTALL='$INSTALL' +MKDIR_P='$MKDIR_P' +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF +# If no file are specified by the user, then we need to provide default +# value. By we need to know if files were specified by the user. +ac_need_defaults=: +while test $# != 0 +do + case $1 in + --*=*) + ac_option=`expr "X$1" : 'X\([^=]*\)='` + ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'` + ac_shift=: + ;; + *) + ac_option=$1 + ac_optarg=$2 + ac_shift=shift + ;; + esac + + case $ac_option in + # Handling of the options. + -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) + ac_cs_recheck=: ;; + --version | --versio | --versi | --vers | --ver | --ve | --v | -V ) + echo "$ac_cs_version"; exit ;; + --debug | --debu | --deb | --de | --d | -d ) + debug=: ;; + --file | --fil | --fi | --f ) + $ac_shift + CONFIG_FILES="$CONFIG_FILES $ac_optarg" + ac_need_defaults=false;; + --header | --heade | --head | --hea ) + $ac_shift + CONFIG_HEADERS="$CONFIG_HEADERS $ac_optarg" + ac_need_defaults=false;; + --he | --h) + # Conflict between --help and --header + { echo "$as_me: error: ambiguous option: $1 +Try \`$0 --help' for more information." >&2 + { (exit 1); exit 1; }; };; + --help | --hel | -h ) + echo "$ac_cs_usage"; exit ;; + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil | --si | --s) + ac_cs_silent=: ;; + + # This is an error. + -*) { echo "$as_me: error: unrecognized option: $1 +Try \`$0 --help' for more information." >&2 + { (exit 1); exit 1; }; } ;; + + *) ac_config_targets="$ac_config_targets $1" + ac_need_defaults=false ;; + + esac + shift +done + +ac_configure_extra_args= + +if $ac_cs_silent; then + exec 6>/dev/null + ac_configure_extra_args="$ac_configure_extra_args --silent" +fi + +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF +if \$ac_cs_recheck; then + echo "running CONFIG_SHELL=$SHELL $SHELL $0 "$ac_configure_args \$ac_configure_extra_args " --no-create --no-recursion" >&6 + CONFIG_SHELL=$SHELL + export CONFIG_SHELL + exec $SHELL "$0"$ac_configure_args \$ac_configure_extra_args --no-create --no-recursion +fi + +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF +exec 5>>config.log +{ + echo + sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX +## Running $as_me. ## +_ASBOX + echo "$ac_log" +} >&5 + +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF + +# Handling of arguments. +for ac_config_target in $ac_config_targets +do + case $ac_config_target in + "config.h") CONFIG_HEADERS="$CONFIG_HEADERS config.h" ;; + "stamp-h") CONFIG_FILES="$CONFIG_FILES stamp-h" ;; + "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;; + "deweb") CONFIG_FILES="$CONFIG_FILES deweb" ;; + "rmeheader") CONFIG_FILES="$CONFIG_FILES rmeheader" ;; + "ChkTeX.tex") CONFIG_FILES="$CONFIG_FILES ChkTeX.tex" ;; + + *) { { echo "$as_me:$LINENO: error: invalid argument: $ac_config_target" >&5 +echo "$as_me: error: invalid argument: $ac_config_target" >&2;} + { (exit 1); exit 1; }; };; + esac +done + + +# If the user did not use the arguments to specify the items to instantiate, +# then the envvar interface is used. Set only those that are not. +# We use the long form for the default assignment because of an extremely +# bizarre bug on SunOS 4.1.3. +if $ac_need_defaults; then + test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files + test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers +fi + +# Have a temporary directory for convenience. Make it in the build tree +# simply because there is no reason against having it here, and in addition, +# creating and moving files from /tmp can sometimes cause problems. +# Hook for its removal unless debugging. +# Note that there is a small window in which the directory will not be cleaned: +# after its creation but before its name has been assigned to `$tmp'. +$debug || +{ + tmp= + trap 'exit_status=$? + { test -z "$tmp" || test ! -d "$tmp" || rm -fr "$tmp"; } && exit $exit_status +' 0 + trap '{ (exit 1); exit 1; }' 1 2 13 15 +} +# Create a (secure) tmp directory for tmp files. + +{ + tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` && + test -n "$tmp" && test -d "$tmp" +} || +{ + tmp=./conf$$-$RANDOM + (umask 077 && mkdir "$tmp") +} || +{ + echo "$me: cannot create a temporary directory in ." >&2 + { (exit 1); exit 1; } +} + +# +# Set up the sed scripts for CONFIG_FILES section. +# + +# No need to generate the scripts if there are no CONFIG_FILES. +# This happens for instance when ./config.status config.h +if test -n "$CONFIG_FILES"; then + +_ACEOF + + + +ac_delim='%!_!# ' +for ac_last_try in false false false false false :; do + cat >conf$$subs.sed <<_ACEOF +SHELL!$SHELL$ac_delim +PATH_SEPARATOR!$PATH_SEPARATOR$ac_delim +PACKAGE_NAME!$PACKAGE_NAME$ac_delim +PACKAGE_TARNAME!$PACKAGE_TARNAME$ac_delim +PACKAGE_VERSION!$PACKAGE_VERSION$ac_delim +PACKAGE_STRING!$PACKAGE_STRING$ac_delim +PACKAGE_BUGREPORT!$PACKAGE_BUGREPORT$ac_delim +exec_prefix!$exec_prefix$ac_delim +prefix!$prefix$ac_delim +program_transform_name!$program_transform_name$ac_delim +bindir!$bindir$ac_delim +sbindir!$sbindir$ac_delim +libexecdir!$libexecdir$ac_delim +datarootdir!$datarootdir$ac_delim +datadir!$datadir$ac_delim +sysconfdir!$sysconfdir$ac_delim +sharedstatedir!$sharedstatedir$ac_delim +localstatedir!$localstatedir$ac_delim +includedir!$includedir$ac_delim +oldincludedir!$oldincludedir$ac_delim +docdir!$docdir$ac_delim +infodir!$infodir$ac_delim +htmldir!$htmldir$ac_delim +dvidir!$dvidir$ac_delim +pdfdir!$pdfdir$ac_delim +psdir!$psdir$ac_delim +libdir!$libdir$ac_delim +localedir!$localedir$ac_delim +mandir!$mandir$ac_delim +DEFS!$DEFS$ac_delim +ECHO_C!$ECHO_C$ac_delim +ECHO_N!$ECHO_N$ac_delim +ECHO_T!$ECHO_T$ac_delim +LIBS!$LIBS$ac_delim +build_alias!$build_alias$ac_delim +host_alias!$host_alias$ac_delim +target_alias!$target_alias$ac_delim +SCRIPTS!$SCRIPTS$ac_delim +BUILT_SCRIPTS!$BUILT_SCRIPTS$ac_delim +ELISPDIR!$ELISPDIR$ac_delim +CLEAN!$CLEAN$ac_delim +CC!$CC$ac_delim +CFLAGS!$CFLAGS$ac_delim +LDFLAGS!$LDFLAGS$ac_delim +CPPFLAGS!$CPPFLAGS$ac_delim +ac_ct_CC!$ac_ct_CC$ac_delim +EXEEXT!$EXEEXT$ac_delim +OBJEXT!$OBJEXT$ac_delim +INSTALL_PROGRAM!$INSTALL_PROGRAM$ac_delim +INSTALL_SCRIPT!$INSTALL_SCRIPT$ac_delim +INSTALL_DATA!$INSTALL_DATA$ac_delim +LN_S!$LN_S$ac_delim +PERL5!$PERL5$ac_delim +GROFF!$GROFF$ac_delim +LATEX!$LATEX$ac_delim +DVIPS!$DVIPS$ac_delim +LYNX!$LYNX$ac_delim +LATEX2HTML!$LATEX2HTML$ac_delim +CPP!$CPP$ac_delim +GREP!$GREP$ac_delim +EGREP!$EGREP$ac_delim +LIBOBJS!$LIBOBJS$ac_delim +LTLIBOBJS!$LTLIBOBJS$ac_delim +_ACEOF + + if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 63; then + break + elif $ac_last_try; then + { { echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5 +echo "$as_me: error: could not make $CONFIG_STATUS" >&2;} + { (exit 1); exit 1; }; } + else + ac_delim="$ac_delim!$ac_delim _$ac_delim!! " + fi +done + +ac_eof=`sed -n '/^CEOF[0-9]*$/s/CEOF/0/p' conf$$subs.sed` +if test -n "$ac_eof"; then + ac_eof=`echo "$ac_eof" | sort -nru | sed 1q` + ac_eof=`expr $ac_eof + 1` +fi + +cat >>$CONFIG_STATUS <<_ACEOF +cat >"\$tmp/subs-1.sed" <<\CEOF$ac_eof +/@[a-zA-Z_][a-zA-Z_0-9]*@/!b end +_ACEOF +sed ' +s/[,\\&]/\\&/g; s/@/@|#_!!_#|/g +s/^/s,@/; s/!/@,|#_!!_#|/ +:n +t n +s/'"$ac_delim"'$/,g/; t +s/$/\\/; p +N; s/^.*\n//; s/[,\\&]/\\&/g; s/@/@|#_!!_#|/g; b n +' >>$CONFIG_STATUS <conf$$subs.sed +rm -f conf$$subs.sed +cat >>$CONFIG_STATUS <<_ACEOF +:end +s/|#_!!_#|//g +CEOF$ac_eof +_ACEOF + + +# VPATH may cause trouble with some makes, so we remove $(srcdir), +# ${srcdir} and @srcdir@ from VPATH if srcdir is ".", strip leading and +# trailing colons and then remove the whole line if VPATH becomes empty +# (actually we leave an empty line to preserve line numbers). +if test "x$srcdir" = x.; then + ac_vpsub='/^[ ]*VPATH[ ]*=/{ +s/:*\$(srcdir):*/:/ +s/:*\${srcdir}:*/:/ +s/:*@srcdir@:*/:/ +s/^\([^=]*=[ ]*\):*/\1/ +s/:*$// +s/^[^=]*=[ ]*$// +}' +fi + +cat >>$CONFIG_STATUS <<\_ACEOF +fi # test -n "$CONFIG_FILES" + + +for ac_tag in :F $CONFIG_FILES :H $CONFIG_HEADERS +do + case $ac_tag in + :[FHLC]) ac_mode=$ac_tag; continue;; + esac + case $ac_mode$ac_tag in + :[FHL]*:*);; + :L* | :C*:*) { { echo "$as_me:$LINENO: error: Invalid tag $ac_tag." >&5 +echo "$as_me: error: Invalid tag $ac_tag." >&2;} + { (exit 1); exit 1; }; };; + :[FH]-) ac_tag=-:-;; + :[FH]*) ac_tag=$ac_tag:$ac_tag.in;; + esac + ac_save_IFS=$IFS + IFS=: + set x $ac_tag + IFS=$ac_save_IFS + shift + ac_file=$1 + shift + + case $ac_mode in + :L) ac_source=$1;; + :[FH]) + ac_file_inputs= + for ac_f + do + case $ac_f in + -) ac_f="$tmp/stdin";; + *) # Look for the file first in the build tree, then in the source tree + # (if the path is not absolute). The absolute path cannot be DOS-style, + # because $ac_f cannot contain `:'. + test -f "$ac_f" || + case $ac_f in + [\\/$]*) false;; + *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";; + esac || + { { echo "$as_me:$LINENO: error: cannot find input file: $ac_f" >&5 +echo "$as_me: error: cannot find input file: $ac_f" >&2;} + { (exit 1); exit 1; }; };; + esac + ac_file_inputs="$ac_file_inputs $ac_f" + done + + # Let's still pretend it is `configure' which instantiates (i.e., don't + # use $as_me), people would be surprised to read: + # /* config.h. Generated by config.status. */ + configure_input="Generated from "`IFS=: + echo $* | sed 's|^[^:]*/||;s|:[^:]*/|, |g'`" by configure." + if test x"$ac_file" != x-; then + configure_input="$ac_file. $configure_input" + { echo "$as_me:$LINENO: creating $ac_file" >&5 +echo "$as_me: creating $ac_file" >&6;} + fi + + case $ac_tag in + *:-:* | *:-) cat >"$tmp/stdin";; + esac + ;; + esac + + ac_dir=`$as_dirname -- "$ac_file" || +$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$ac_file" : 'X\(//\)[^/]' \| \ + X"$ac_file" : 'X\(//\)$' \| \ + X"$ac_file" : 'X\(/\)' \| . 2>/dev/null || +echo X"$ac_file" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + { as_dir="$ac_dir" + case $as_dir in #( + -*) as_dir=./$as_dir;; + esac + test -d "$as_dir" || { $as_mkdir_p && mkdir -p "$as_dir"; } || { + as_dirs= + while :; do + case $as_dir in #( + *\'*) as_qdir=`echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #( + *) as_qdir=$as_dir;; + esac + as_dirs="'$as_qdir' $as_dirs" + as_dir=`$as_dirname -- "$as_dir" || +$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_dir" : 'X\(//\)[^/]' \| \ + X"$as_dir" : 'X\(//\)$' \| \ + X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || +echo X"$as_dir" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + test -d "$as_dir" && break + done + test -z "$as_dirs" || eval "mkdir $as_dirs" + } || test -d "$as_dir" || { { echo "$as_me:$LINENO: error: cannot create directory $as_dir" >&5 +echo "$as_me: error: cannot create directory $as_dir" >&2;} + { (exit 1); exit 1; }; }; } + ac_builddir=. + +case "$ac_dir" in +.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; +*) + ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` + # A ".." for each directory in $ac_dir_suffix. + ac_top_builddir_sub=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,/..,g;s,/,,'` + case $ac_top_builddir_sub in + "") ac_top_builddir_sub=. ac_top_build_prefix= ;; + *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; + esac ;; +esac +ac_abs_top_builddir=$ac_pwd +ac_abs_builddir=$ac_pwd$ac_dir_suffix +# for backward compatibility: +ac_top_builddir=$ac_top_build_prefix + +case $srcdir in + .) # We are building in place. + ac_srcdir=. + ac_top_srcdir=$ac_top_builddir_sub + ac_abs_top_srcdir=$ac_pwd ;; + [\\/]* | ?:[\\/]* ) # Absolute name. + ac_srcdir=$srcdir$ac_dir_suffix; + ac_top_srcdir=$srcdir + ac_abs_top_srcdir=$srcdir ;; + *) # Relative name. + ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix + ac_top_srcdir=$ac_top_build_prefix$srcdir + ac_abs_top_srcdir=$ac_pwd/$srcdir ;; +esac +ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix + + + case $ac_mode in + :F) + # + # CONFIG_FILE + # + + case $INSTALL in + [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;; + *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;; + esac + ac_MKDIR_P=$MKDIR_P + case $MKDIR_P in + [\\/$]* | ?:[\\/]* ) ;; + */*) ac_MKDIR_P=$ac_top_build_prefix$MKDIR_P ;; + esac +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF +# If the template does not know about datarootdir, expand it. +# FIXME: This hack should be removed a few years after 2.60. +ac_datarootdir_hack=; ac_datarootdir_seen= + +case `sed -n '/datarootdir/ { + p + q +} +/@datadir@/p +/@docdir@/p +/@infodir@/p +/@localedir@/p +/@mandir@/p +' $ac_file_inputs` in +*datarootdir*) ac_datarootdir_seen=yes;; +*@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*) + { echo "$as_me:$LINENO: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 +echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF + ac_datarootdir_hack=' + s&@datadir@&$datadir&g + s&@docdir@&$docdir&g + s&@infodir@&$infodir&g + s&@localedir@&$localedir&g + s&@mandir@&$mandir&g + s&\\\${datarootdir}&$datarootdir&g' ;; +esac +_ACEOF + +# Neutralize VPATH when `$srcdir' = `.'. +# Shell code in configure.ac might set extrasub. +# FIXME: do we really want to maintain this feature? +cat >>$CONFIG_STATUS <<_ACEOF + sed "$ac_vpsub +$extrasub +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF +:t +/@[a-zA-Z_][a-zA-Z_0-9]*@/!b +s&@configure_input@&$configure_input&;t t +s&@top_builddir@&$ac_top_builddir_sub&;t t +s&@srcdir@&$ac_srcdir&;t t +s&@abs_srcdir@&$ac_abs_srcdir&;t t +s&@top_srcdir@&$ac_top_srcdir&;t t +s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t +s&@builddir@&$ac_builddir&;t t +s&@abs_builddir@&$ac_abs_builddir&;t t +s&@abs_top_builddir@&$ac_abs_top_builddir&;t t +s&@INSTALL@&$ac_INSTALL&;t t +s&@MKDIR_P@&$ac_MKDIR_P&;t t +$ac_datarootdir_hack +" $ac_file_inputs | sed -f "$tmp/subs-1.sed" >$tmp/out + +test -z "$ac_datarootdir_hack$ac_datarootdir_seen" && + { ac_out=`sed -n '/\${datarootdir}/p' "$tmp/out"`; test -n "$ac_out"; } && + { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' "$tmp/out"`; test -z "$ac_out"; } && + { echo "$as_me:$LINENO: WARNING: $ac_file contains a reference to the variable \`datarootdir' +which seems to be undefined. Please make sure it is defined." >&5 +echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir' +which seems to be undefined. Please make sure it is defined." >&2;} + + rm -f "$tmp/stdin" + case $ac_file in + -) cat "$tmp/out"; rm -f "$tmp/out";; + *) rm -f "$ac_file"; mv "$tmp/out" $ac_file;; + esac + ;; + :H) + # + # CONFIG_HEADER + # +_ACEOF + +# Transform confdefs.h into a sed script `conftest.defines', that +# substitutes the proper values into config.h.in to produce config.h. +rm -f conftest.defines conftest.tail +# First, append a space to every undef/define line, to ease matching. +echo 's/$/ /' >conftest.defines +# Then, protect against being on the right side of a sed subst, or in +# an unquoted here document, in config.status. If some macros were +# called several times there might be several #defines for the same +# symbol, which is useless. But do not sort them, since the last +# AC_DEFINE must be honored. +ac_word_re=[_$as_cr_Letters][_$as_cr_alnum]* +# These sed commands are passed to sed as "A NAME B PARAMS C VALUE D", where +# NAME is the cpp macro being defined, VALUE is the value it is being given. +# PARAMS is the parameter list in the macro definition--in most cases, it's +# just an empty string. +ac_dA='s,^\\([ #]*\\)[^ ]*\\([ ]*' +ac_dB='\\)[ (].*,\\1define\\2' +ac_dC=' ' +ac_dD=' ,' + +uniq confdefs.h | + sed -n ' + t rset + :rset + s/^[ ]*#[ ]*define[ ][ ]*// + t ok + d + :ok + s/[\\&,]/\\&/g + s/^\('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/ '"$ac_dA"'\1'"$ac_dB"'\2'"${ac_dC}"'\3'"$ac_dD"'/p + s/^\('"$ac_word_re"'\)[ ]*\(.*\)/'"$ac_dA"'\1'"$ac_dB$ac_dC"'\2'"$ac_dD"'/p + ' >>conftest.defines + +# Remove the space that was appended to ease matching. +# Then replace #undef with comments. This is necessary, for +# example, in the case of _POSIX_SOURCE, which is predefined and required +# on some systems where configure will not decide to define it. +# (The regexp can be short, since the line contains either #define or #undef.) +echo 's/ $// +s,^[ #]*u.*,/* & */,' >>conftest.defines + +# Break up conftest.defines: +ac_max_sed_lines=50 + +# First sed command is: sed -f defines.sed $ac_file_inputs >"$tmp/out1" +# Second one is: sed -f defines.sed "$tmp/out1" >"$tmp/out2" +# Third one will be: sed -f defines.sed "$tmp/out2" >"$tmp/out1" +# et cetera. +ac_in='$ac_file_inputs' +ac_out='"$tmp/out1"' +ac_nxt='"$tmp/out2"' + +while : +do + # Write a here document: + cat >>$CONFIG_STATUS <<_ACEOF + # First, check the format of the line: + cat >"\$tmp/defines.sed" <<\\CEOF +/^[ ]*#[ ]*undef[ ][ ]*$ac_word_re[ ]*\$/b def +/^[ ]*#[ ]*define[ ][ ]*$ac_word_re[( ]/b def +b +:def +_ACEOF + sed ${ac_max_sed_lines}q conftest.defines >>$CONFIG_STATUS + echo 'CEOF + sed -f "$tmp/defines.sed"' "$ac_in >$ac_out" >>$CONFIG_STATUS + ac_in=$ac_out; ac_out=$ac_nxt; ac_nxt=$ac_in + sed 1,${ac_max_sed_lines}d conftest.defines >conftest.tail + grep . conftest.tail >/dev/null || break + rm -f conftest.defines + mv conftest.tail conftest.defines +done +rm -f conftest.defines conftest.tail + +echo "ac_result=$ac_in" >>$CONFIG_STATUS +cat >>$CONFIG_STATUS <<\_ACEOF + if test x"$ac_file" != x-; then + echo "/* $configure_input */" >"$tmp/config.h" + cat "$ac_result" >>"$tmp/config.h" + if diff $ac_file "$tmp/config.h" >/dev/null 2>&1; then + { echo "$as_me:$LINENO: $ac_file is unchanged" >&5 +echo "$as_me: $ac_file is unchanged" >&6;} + else + rm -f $ac_file + mv "$tmp/config.h" $ac_file + fi + else + echo "/* $configure_input */" + cat "$ac_result" + fi + rm -f "$tmp/out12" + ;; + + + esac + + + case $ac_file$ac_mode in + "stamp-h":F) echo timestamp > stamp-h ;; + + esac +done # for ac_tag + + +{ (exit 0); exit 0; } +_ACEOF +chmod +x $CONFIG_STATUS +ac_clean_files=$ac_clean_files_save + + +# configure is writing to config.log, and then calls config.status. +# config.status does its own redirection, appending to config.log. +# Unfortunately, on DOS this fails, as config.log is still kept open +# by configure, so config.status won't be able to write to it; its +# output is simply discarded. So we exec the FD to /dev/null, +# effectively closing config.log, so it can be properly (re)opened and +# appended to by config.status. When coming back to configure, we +# need to make the FD available again. +if test "$no_create" != yes; then + ac_cs_success=: + ac_config_status_args= + test "$silent" = yes && + ac_config_status_args="$ac_config_status_args --quiet" + exec 5>/dev/null + $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false + exec 5>>config.log + # Use ||, not &&, to avoid exiting from the if with $? = 1, which + # would make configure fail if this is the last instruction. + $ac_cs_success || { (exit 1); exit 1; } +fi + diff --git a/Build/source/utils/chktex/chktex-1.6.6/configure.in b/Build/source/utils/chktex/chktex-1.6.6/configure.in new file mode 100644 index 00000000000..5637cb68662 --- /dev/null +++ b/Build/source/utils/chktex/chktex-1.6.6/configure.in @@ -0,0 +1,158 @@ +dnl +dnl ChkTeX, configuration file. +dnl Copyright (C) 1995-96 Jens T. Berger Thielemann +dnl +dnl This program is free software; you can redistribute it and/or modify +dnl it under the terms of the GNU General Public License as published by +dnl the Free Software Foundation; either version 2 of the License, or +dnl (at your option) any later version. +dnl +dnl This program is distributed in the hope that it will be useful, +dnl but WITHOUT ANY WARRANTY; without even the implied warranty of +dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +dnl GNU General Public License for more details. +dnl +dnl You should have received a copy of the GNU General Public License +dnl along with this program; if not, write to the Free Software +dnl Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +dnl +dnl Contact the author at: +dnl Jens Berger +dnl Spektrumvn. 4 +dnl N-0666 Oslo +dnl Norway +dnl E-mail: <jensthi@ifi.uio.no> +dnl +dnl + + +dnl Process this file with autoconf to produce a configure script. +AC_INIT(ChkTeX, 1.6.6) +AC_SUBST(SCRIPTS) +AC_SUBST(BUILT_SCRIPTS) +AC_SUBST(ELISPDIR) +ELISPDIR= +AC_SUBST(CLEAN) +CLEAN= + +AC_ARG_ENABLE(lacheck-replace,[ + --enable-lacheck-replace: Installs a lacheck replacement for the + AUC-TeX interface. (Default: no).],, +enable_lacheck_replace=no) + +AC_ARG_ENABLE(emacs-hack,[ + --enable-emacs-hack: Installs a Elisp file, which makes ChkTeX + available in Emacs. Must be followed by + the path of your elisp files (e.g. + "--enable-emacs-hack=/usr/lib/emacs/"). + (Default: no).],, +enable_emacs_hack=no) + +AC_ARG_ENABLE(debug-info,[ + --enable-debug-info: Compile in miscellaneous runtime debugging + information. (Default: yes).],, +enable_debug_info=yes) + +AC_ARG_ENABLE(coverage-testing,[ + --enable-coverage-testing: Activate coverage testing with gcov. (Default: no)],, +enable_coverage_testing=no) + +AC_MSG_CHECKING(whether lacheck replacement should be installed) +if test "$enable_lacheck_replace" = "yes"; then + SCRIPTS="$SCRIPTS lacheck" + AC_MSG_RESULT(yes) +else + AC_MSG_RESULT(no) +fi + +AC_MSG_CHECKING(whether runtime debug info should be used) +if test "$enable_debug_info" = "yes"; then + AC_MSG_RESULT(yes) +else + AC_DEFINE(STRIP_DEBUG, 1, "Strip debug info") + AC_MSG_RESULT(no) +fi + +AC_MSG_CHECKING(whether the emacs hack should be installed) +case $enable_emacs_hack in + no) AC_MSG_RESULT(no) + ;; + /*|*/*) ELISPDIR=$enable_emacs_hack + AC_MSG_RESULT(yes) + ;; + *) echo; + AC_MSG_ERROR(--enable-emacs-hack needs the *full path* of Elisp files) + ;; +esac + +AC_MSG_CHECKING(whether coverage testing is enabled) +if test "$enable_coverage_testing" = "yes"; then + AC_MSG_RESULT(yes) + CFLAGS="${CFLAGS} -fprofile-arcs -ftest-coverage -O0" + CLEAN="${CLEAN} \$(wildcard *.bb *.bbg *.da *.gcov)" +else + AC_MSG_RESULT(no) +fi + +dnl Check compiler and flags +AC_PROG_CC +AX_CFLAGS_STRICT_PROTOTYPES +VL_PROG_CC_WARNINGS + +dnl Checks for programs. +AC_PROG_INSTALL +AC_PROG_LN_S +AC_PROG_MKDIR_P +AC_PATH_PROGS(PERL5, perl5 perl, no, $PATH:/usr/bin:/usr/local/bin) +if test "$PERL5" != no; then + AC_MSG_CHECKING(whether perl is v5 or higher) + if $PERL5 -e 'exit($] >= 5)'; then + PERL5=no + AC_MSG_RESULT(no) + else + AC_MSG_RESULT(yes) + fi +fi + +if test "$PERL5" != no; then + BUILT_SCRIPTS="$BUILT_SCRIPTS deweb" + SCRIPTS="$SCRIPTS chkweb" +else + AC_MSG_WARN(chkweb will not be installed since you do not have perl5.) +fi + +AC_CHECK_PROGS(GROFF, 'groff -man -P-bu -Tlatin1' 'nroff -man', 'nroff -man') + +AC_PATH_PROG(LATEX, latex, no) +dnl if test "$LATEX" = no; then +dnl AC_MSG_ERROR([No LaTeX on the system, cannot find latex program.]) +dnl fi + +AC_PATH_PROG(DVIPS, dvips) + +AC_PATH_PROG(LYNX, lynx) +AC_PATH_PROG(LATEX2HTML, latex2html) + +dnl Checks for libraries. +AC_CHECK_LIB(termlib, tgetent) +AC_CHECK_LIB(termcap, tgetent) + +dnl Checks for header files. +AC_HEADER_STDC +AC_HEADER_DIRENT +AC_CHECK_HEADERS(limits.h stat.h strings.h stdarg.h dnl +sys/stat.h termcap.h termlib.h unistd.h) + +dnl Checks for typedefs, structures, and compiler characteristics. +AC_C_CONST +AC_C_INLINE +AC_TYPE_SIZE_T + +dnl Checks for library functions. +AC_FUNC_VPRINTF +AC_CHECK_FUNCS(access closedir fileno isatty opendir readdir stat dnl +strcasecmp strdup strlwr strtol) + +AC_CONFIG_HEADER(config.h) +AC_CONFIG_FILES([stamp-h], [echo timestamp > stamp-h]) +AC_OUTPUT(Makefile deweb rmeheader ChkTeX.tex) diff --git a/Build/source/utils/chktex/chktex-1.6.6/deweb.1 b/Build/source/utils/chktex/chktex-1.6.6/deweb.1 new file mode 100644 index 00000000000..43770aa1fd3 --- /dev/null +++ b/Build/source/utils/chktex/chktex-1.6.6/deweb.1 @@ -0,0 +1,116 @@ +.TH deweb 1 "June 8, 1996" +.AT 3 +.SH NAME +deweb \- strips away C & CWEB commands from CWEB sources +.SH SYNOPSIS +.B deweb +[ +.B file1 file2 ... +] +.SH DESCRIPTION +.I deweb +filters away all C & CWEB commands from a CWEB source code. This +leaves only the +.I LaTeX +code. This stripped code, in turn, may then +be passed to a suitable syntax checker for LaTeX, like +.I ChkTeX +and +.I lacheck, +or spell-checkers like +.I ispell. +.PP +The +.I chkweb +tool, included in the +.I ChkTeX +distribution will do just this; writing similar scripts should be +trivial. +.PP +When +.I deweb +strips away the C code from your CWEB source, it tries to preserve line breaks. +This means that the error reports from +.I <your favorite tool> +will be correct regarding to line numbers. In most cases, +the column position +will also be correct. This significantly simplifies +finding the errors in the +.I LaTeX +source (in contrast to the output from +.I cweave, +which output is truly difficult to figure anything out from). +.PP +.I deweb +accepts a list of filenames on the argument line, and will send its output +to +.I stdout. +If no filenames are given, it will read from stdin, acting as +a filter. No options are currently accepted. +.PP +Macho users may try to pipe the output from +.I deweb +directly into +.I LaTeX, +theoretically, this should work. This would ease the debugging +of the +.I LaTeX +code significantly, as when +.I LaTeX +complains about wrong syntax, you'll be able to find the erroneous +line much more easily. Don't expect that the output looks very much +like the final one, though. +.PP +.I deweb +should now understand all correct +.I CWEB +opcodes. If it complains about not understanding a correct opcode, +please inform the author. +.SH DISTRIBUTION +Copyright (C) 1996 Jens T. Berger Thielemann +.PP +This program is free software; you can redistribute it and/or modify +it under the terms of the +.I GNU General Public License +as published by +the Free Software Foundation; either version 2 of the License, or +(at your option) any later version. +.PP +This program is distributed in the hope that it will be useful, +but +.B WITHOUT ANY WARRANTY; +without even the implied warranty of +.B MERCHANTABILITY +or +.B FITNESS FOR A PARTICULAR PURPOSE. +See the +.I GNU General Public License +for more details. +.PP +You should have received a copy of the +.B GNU General Public License +along with this program; if not, write to the +.I Free Software Foundation, Inc., +51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +.SH ENVIRONMENT +No environment variables are used. +.SH FILES +None. +.SH AUTHOR +Jens T. Berger Thielemann, +.I <jensthi@ifi.uio.no> +.SH "SEE ALSO" +.B cweave(1), perl(1), chktex, lacheck(1), ispell(1) +.SH BUGS +Doesn't even +.B compile +under +.I Perl +versions before perl v5. Unfortunately, this means that we can't even +tell the user why we failed; +.I Perl +will just complain about not being able to compile the regexps. +.PP +The program will try to swallow the whole input file at once, instead of +processing it on a line\-by\-line basis. +.ex diff --git a/Build/source/utils/chktex/chktex-1.6.6/deweb.in b/Build/source/utils/chktex/chktex-1.6.6/deweb.in new file mode 100644 index 00000000000..91750e636a2 --- /dev/null +++ b/Build/source/utils/chktex/chktex-1.6.6/deweb.in @@ -0,0 +1,122 @@ +#! @PERL5@ +# deweb v1.2, kills the C sections of a CWEB file, for passing to ChkTeX. +# Copyright (C) 1996 Jens T. Berger Thielemann +# +# 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +# +# Contact the author at: +# Jens Berger +# Spektrumvn. 4 +# N-0666 Oslo +# Norway +# E-mail: <jensthi@ifi.uio.no> +# +# +# + +print STDERR "DeWEB v1.2 - Copyright 1996 Jens T. Berger Thielemann\n"; + +undef $/; +$texmode = 1; +$_ = <>; + +while(/\@/) +{ + &out($`); + $_ = $'; + + if(/^@/) { + $_ = $'; + &out('@'); + next; + } + + if(/^([\s\n])/) { + $_ = $'; + print "\n" if $1 eq "\n"; + $texmode = 1; + next; + } + + if(/^[cpd]/i) { + $_ = $'; + $texmode = 0; + next; + } + + if(/^\,/i) { + $_ = $'; + print '\,'; + next; + } + + if(m!^/!) { + $_ = $'; + print '\\\\'; + next; + } + + if(/^[h\&\|\;\#\+]/i || /^i.*/i) { + $_ = $'; + next; + } + + if(/^\*[0-9\*]?((.|\n)*?\.)/) { + $_ = $'; + print $1; + $texmode = 1; + next; + } + + if(/^[<(^.t!]((.|\n)*?)\@\>/i) { + $_ = $'; + print '{'.$1.'}'; + $texmode = 0; + next; + } + + if(/^[=]((.|\n)*?)\@\>/) { + $_ = $'; + print &printnl($1); + next; + } + + if(/^[fsl](\s+\S+\s+\S+)|^\'(.|\n)*?\'|^\[((.|\n)*?)\@\]/i) { + $_ = $'; + print &printnl($+); + next; + } + + @line = split(/\n/, $_, 2); + print STDERR "Unknown opcode, ignored. Buffer:\n$line[0]\n"; + +} + +print $_; + +sub printnl { + my($foo); + if(defined $_[0]) { + $foo = $_[0]; + $foo =~ s/.//g; + } else { + $foo = ""; + } + $foo; +} + +sub out { + print $texmode? $_[0] : &printnl($_[0]); +} diff --git a/Build/source/utils/chktex/chktex-1.6.6/input.tex b/Build/source/utils/chktex/chktex-1.6.6/input.tex new file mode 100644 index 00000000000..76bc301ff25 --- /dev/null +++ b/Build/source/utils/chktex/chktex-1.6.6/input.tex @@ -0,0 +1 @@ +\this is a test of whether the file is actually inputted... diff --git a/Build/source/utils/chktex/chktex-1.6.6/install-sh b/Build/source/utils/chktex/chktex-1.6.6/install-sh new file mode 100755 index 00000000000..4fbbae7b7ff --- /dev/null +++ b/Build/source/utils/chktex/chktex-1.6.6/install-sh @@ -0,0 +1,507 @@ +#!/bin/sh +# install - install a program, script, or datafile + +scriptversion=2006-10-14.15 + +# This originates from X11R5 (mit/util/scripts/install.sh), which was +# later released in X11R6 (xc/config/util/install.sh) with the +# following copyright and license. +# +# Copyright (C) 1994 X Consortium +# +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the "Software"), to +# deal in the Software without restriction, including without limitation the +# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or +# sell copies of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in +# all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN +# AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNEC- +# TION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +# +# Except as contained in this notice, the name of the X Consortium shall not +# be used in advertising or otherwise to promote the sale, use or other deal- +# ings in this Software without prior written authorization from the X Consor- +# tium. +# +# +# FSF changes to this file are in the public domain. +# +# Calling this script install-sh is preferred over install.sh, to prevent +# `make' implicit rules from creating a file called install from it +# when there is no Makefile. +# +# This script is compatible with the BSD install script, but was written +# from scratch. + +nl=' +' +IFS=" "" $nl" + +# set DOITPROG to echo to test this script + +# Don't use :- since 4.3BSD and earlier shells don't like it. +doit="${DOITPROG-}" +if test -z "$doit"; then + doit_exec=exec +else + doit_exec=$doit +fi + +# Put in absolute file names if you don't have them in your path; +# or use environment vars. + +mvprog="${MVPROG-mv}" +cpprog="${CPPROG-cp}" +chmodprog="${CHMODPROG-chmod}" +chownprog="${CHOWNPROG-chown}" +chgrpprog="${CHGRPPROG-chgrp}" +stripprog="${STRIPPROG-strip}" +rmprog="${RMPROG-rm}" +mkdirprog="${MKDIRPROG-mkdir}" + +posix_glob= +posix_mkdir= + +# Desired mode of installed file. +mode=0755 + +chmodcmd=$chmodprog +chowncmd= +chgrpcmd= +stripcmd= +rmcmd="$rmprog -f" +mvcmd="$mvprog" +src= +dst= +dir_arg= +dstarg= +no_target_directory= + +usage="Usage: $0 [OPTION]... [-T] SRCFILE DSTFILE + or: $0 [OPTION]... SRCFILES... DIRECTORY + or: $0 [OPTION]... -t DIRECTORY SRCFILES... + or: $0 [OPTION]... -d DIRECTORIES... + +In the 1st form, copy SRCFILE to DSTFILE. +In the 2nd and 3rd, copy all SRCFILES to DIRECTORY. +In the 4th, create DIRECTORIES. + +Options: +-c (ignored) +-d create directories instead of installing files. +-g GROUP $chgrpprog installed files to GROUP. +-m MODE $chmodprog installed files to MODE. +-o USER $chownprog installed files to USER. +-s $stripprog installed files. +-t DIRECTORY install into DIRECTORY. +-T report an error if DSTFILE is a directory. +--help display this help and exit. +--version display version info and exit. + +Environment variables override the default commands: + CHGRPPROG CHMODPROG CHOWNPROG CPPROG MKDIRPROG MVPROG RMPROG STRIPPROG +" + +while test $# -ne 0; do + case $1 in + -c) shift + continue;; + + -d) dir_arg=true + shift + continue;; + + -g) chgrpcmd="$chgrpprog $2" + shift + shift + continue;; + + --help) echo "$usage"; exit $?;; + + -m) mode=$2 + shift + shift + case $mode in + *' '* | *' '* | *' +'* | *'*'* | *'?'* | *'['*) + echo "$0: invalid mode: $mode" >&2 + exit 1;; + esac + continue;; + + -o) chowncmd="$chownprog $2" + shift + shift + continue;; + + -s) stripcmd=$stripprog + shift + continue;; + + -t) dstarg=$2 + shift + shift + continue;; + + -T) no_target_directory=true + shift + continue;; + + --version) echo "$0 $scriptversion"; exit $?;; + + --) shift + break;; + + -*) echo "$0: invalid option: $1" >&2 + exit 1;; + + *) break;; + esac +done + +if test $# -ne 0 && test -z "$dir_arg$dstarg"; then + # When -d is used, all remaining arguments are directories to create. + # When -t is used, the destination is already specified. + # Otherwise, the last argument is the destination. Remove it from $@. + for arg + do + if test -n "$dstarg"; then + # $@ is not empty: it contains at least $arg. + set fnord "$@" "$dstarg" + shift # fnord + fi + shift # arg + dstarg=$arg + done +fi + +if test $# -eq 0; then + if test -z "$dir_arg"; then + echo "$0: no input file specified." >&2 + exit 1 + fi + # It's OK to call `install-sh -d' without argument. + # This can happen when creating conditional directories. + exit 0 +fi + +if test -z "$dir_arg"; then + trap '(exit $?); exit' 1 2 13 15 + + # Set umask so as not to create temps with too-generous modes. + # However, 'strip' requires both read and write access to temps. + case $mode in + # Optimize common cases. + *644) cp_umask=133;; + *755) cp_umask=22;; + + *[0-7]) + if test -z "$stripcmd"; then + u_plus_rw= + else + u_plus_rw='% 200' + fi + cp_umask=`expr '(' 777 - $mode % 1000 ')' $u_plus_rw`;; + *) + if test -z "$stripcmd"; then + u_plus_rw= + else + u_plus_rw=,u+rw + fi + cp_umask=$mode$u_plus_rw;; + esac +fi + +for src +do + # Protect names starting with `-'. + case $src in + -*) src=./$src ;; + esac + + if test -n "$dir_arg"; then + dst=$src + dstdir=$dst + test -d "$dstdir" + dstdir_status=$? + else + + # Waiting for this to be detected by the "$cpprog $src $dsttmp" command + # might cause directories to be created, which would be especially bad + # if $src (and thus $dsttmp) contains '*'. + if test ! -f "$src" && test ! -d "$src"; then + echo "$0: $src does not exist." >&2 + exit 1 + fi + + if test -z "$dstarg"; then + echo "$0: no destination specified." >&2 + exit 1 + fi + + dst=$dstarg + # Protect names starting with `-'. + case $dst in + -*) dst=./$dst ;; + esac + + # If destination is a directory, append the input filename; won't work + # if double slashes aren't ignored. + if test -d "$dst"; then + if test -n "$no_target_directory"; then + echo "$0: $dstarg: Is a directory" >&2 + exit 1 + fi + dstdir=$dst + dst=$dstdir/`basename "$src"` + dstdir_status=0 + else + # Prefer dirname, but fall back on a substitute if dirname fails. + dstdir=` + (dirname "$dst") 2>/dev/null || + expr X"$dst" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$dst" : 'X\(//\)[^/]' \| \ + X"$dst" : 'X\(//\)$' \| \ + X"$dst" : 'X\(/\)' \| . 2>/dev/null || + echo X"$dst" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q' + ` + + test -d "$dstdir" + dstdir_status=$? + fi + fi + + obsolete_mkdir_used=false + + if test $dstdir_status != 0; then + case $posix_mkdir in + '') + # Create intermediate dirs using mode 755 as modified by the umask. + # This is like FreeBSD 'install' as of 1997-10-28. + umask=`umask` + case $stripcmd.$umask in + # Optimize common cases. + *[2367][2367]) mkdir_umask=$umask;; + .*0[02][02] | .[02][02] | .[02]) mkdir_umask=22;; + + *[0-7]) + mkdir_umask=`expr $umask + 22 \ + - $umask % 100 % 40 + $umask % 20 \ + - $umask % 10 % 4 + $umask % 2 + `;; + *) mkdir_umask=$umask,go-w;; + esac + + # With -d, create the new directory with the user-specified mode. + # Otherwise, rely on $mkdir_umask. + if test -n "$dir_arg"; then + mkdir_mode=-m$mode + else + mkdir_mode= + fi + + posix_mkdir=false + case $umask in + *[123567][0-7][0-7]) + # POSIX mkdir -p sets u+wx bits regardless of umask, which + # is incompatible with FreeBSD 'install' when (umask & 300) != 0. + ;; + *) + tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$ + trap 'ret=$?; rmdir "$tmpdir/d" "$tmpdir" 2>/dev/null; exit $ret' 0 + + if (umask $mkdir_umask && + exec $mkdirprog $mkdir_mode -p -- "$tmpdir/d") >/dev/null 2>&1 + then + if test -z "$dir_arg" || { + # Check for POSIX incompatibilities with -m. + # HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or + # other-writeable bit of parent directory when it shouldn't. + # FreeBSD 6.1 mkdir -m -p sets mode of existing directory. + ls_ld_tmpdir=`ls -ld "$tmpdir"` + case $ls_ld_tmpdir in + d????-?r-*) different_mode=700;; + d????-?--*) different_mode=755;; + *) false;; + esac && + $mkdirprog -m$different_mode -p -- "$tmpdir" && { + ls_ld_tmpdir_1=`ls -ld "$tmpdir"` + test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1" + } + } + then posix_mkdir=: + fi + rmdir "$tmpdir/d" "$tmpdir" + else + # Remove any dirs left behind by ancient mkdir implementations. + rmdir ./$mkdir_mode ./-p ./-- 2>/dev/null + fi + trap '' 0;; + esac;; + esac + + if + $posix_mkdir && ( + umask $mkdir_umask && + $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir" + ) + then : + else + + # The umask is ridiculous, or mkdir does not conform to POSIX, + # or it failed possibly due to a race condition. Create the + # directory the slow way, step by step, checking for races as we go. + + case $dstdir in + /*) prefix=/ ;; + -*) prefix=./ ;; + *) prefix= ;; + esac + + case $posix_glob in + '') + if (set -f) 2>/dev/null; then + posix_glob=true + else + posix_glob=false + fi ;; + esac + + oIFS=$IFS + IFS=/ + $posix_glob && set -f + set fnord $dstdir + shift + $posix_glob && set +f + IFS=$oIFS + + prefixes= + + for d + do + test -z "$d" && continue + + prefix=$prefix$d + if test -d "$prefix"; then + prefixes= + else + if $posix_mkdir; then + (umask=$mkdir_umask && + $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir") && break + # Don't fail if two instances are running concurrently. + test -d "$prefix" || exit 1 + else + case $prefix in + *\'*) qprefix=`echo "$prefix" | sed "s/'/'\\\\\\\\''/g"`;; + *) qprefix=$prefix;; + esac + prefixes="$prefixes '$qprefix'" + fi + fi + prefix=$prefix/ + done + + if test -n "$prefixes"; then + # Don't fail if two instances are running concurrently. + (umask $mkdir_umask && + eval "\$doit_exec \$mkdirprog $prefixes") || + test -d "$dstdir" || exit 1 + obsolete_mkdir_used=true + fi + fi + fi + + if test -n "$dir_arg"; then + { test -z "$chowncmd" || $doit $chowncmd "$dst"; } && + { test -z "$chgrpcmd" || $doit $chgrpcmd "$dst"; } && + { test "$obsolete_mkdir_used$chowncmd$chgrpcmd" = false || + test -z "$chmodcmd" || $doit $chmodcmd $mode "$dst"; } || exit 1 + else + + # Make a couple of temp file names in the proper directory. + dsttmp=$dstdir/_inst.$$_ + rmtmp=$dstdir/_rm.$$_ + + # Trap to clean up those temp files at exit. + trap 'ret=$?; rm -f "$dsttmp" "$rmtmp" && exit $ret' 0 + + # Copy the file name to the temp name. + (umask $cp_umask && $doit_exec $cpprog "$src" "$dsttmp") && + + # and set any options; do chmod last to preserve setuid bits. + # + # If any of these fail, we abort the whole thing. If we want to + # ignore errors from any of these, just make sure not to ignore + # errors from the above "$doit $cpprog $src $dsttmp" command. + # + { test -z "$chowncmd" || $doit $chowncmd "$dsttmp"; } \ + && { test -z "$chgrpcmd" || $doit $chgrpcmd "$dsttmp"; } \ + && { test -z "$stripcmd" || $doit $stripcmd "$dsttmp"; } \ + && { test -z "$chmodcmd" || $doit $chmodcmd $mode "$dsttmp"; } && + + # Now rename the file to the real destination. + { $doit $mvcmd -f "$dsttmp" "$dst" 2>/dev/null \ + || { + # The rename failed, perhaps because mv can't rename something else + # to itself, or perhaps because mv is so ancient that it does not + # support -f. + + # Now remove or move aside any old file at destination location. + # We try this two ways since rm can't unlink itself on some + # systems and the destination file might be busy for other + # reasons. In this case, the final cleanup might fail but the new + # file should still install successfully. + { + if test -f "$dst"; then + $doit $rmcmd -f "$dst" 2>/dev/null \ + || { $doit $mvcmd -f "$dst" "$rmtmp" 2>/dev/null \ + && { $doit $rmcmd -f "$rmtmp" 2>/dev/null; :; }; }\ + || { + echo "$0: cannot unlink or rename $dst" >&2 + (exit 1); exit 1 + } + else + : + fi + } && + + # Now rename the file to the real destination. + $doit $mvcmd "$dsttmp" "$dst" + } + } || exit 1 + + trap '' 0 + fi +done + +# Local variables: +# eval: (add-hook 'write-file-hooks 'time-stamp) +# time-stamp-start: "scriptversion=" +# time-stamp-format: "%:y-%02m-%02d.%02H" +# time-stamp-end: "$" +# End: diff --git a/Build/source/utils/chktex/chktex-1.6.6/lacheck b/Build/source/utils/chktex/chktex-1.6.6/lacheck new file mode 100755 index 00000000000..da75d360dee --- /dev/null +++ b/Build/source/utils/chktex/chktex-1.6.6/lacheck @@ -0,0 +1,27 @@ +#! /bin/sh + +# lacheck replacement 1.0, lacheck <-> ChkTeX interface (UNIX). +# Copyright (C) 1996 Jens T. Berger Thielemann +# +# 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +# +# Contact the author at: +# Jens Berger +# Spektrumvn. 4 +# N-0666 Oslo +# Norway +# E-mail: <jensthi@ifi.uio.no> + +chktex -v3 $* diff --git a/Build/source/utils/chktex/chktex-1.6.6/m4/ax_cflags_strict_prototypes.m4 b/Build/source/utils/chktex/chktex-1.6.6/m4/ax_cflags_strict_prototypes.m4 new file mode 100644 index 00000000000..06ec9e2f27b --- /dev/null +++ b/Build/source/utils/chktex/chktex-1.6.6/m4/ax_cflags_strict_prototypes.m4 @@ -0,0 +1,170 @@ +# =========================================================================== +# http://autoconf-archive.cryp.to/ax_cflags_strict_prototypes.html +# =========================================================================== +# +# SYNOPSIS +# +# AX_CFLAGS_STRICT_PROTOTYPES [(shellvar [,default, [A/NA]] +# +# DESCRIPTION +# +# Try to find a compiler option that requires strict prototypes. +# +# The sanity check is done by looking at sys/signal.h which has a set of +# macro-definitions SIG_DFL and SIG_IGN that are cast to the local +# signal-handler type. If that signal-handler type is not fully qualified +# then the system headers are not seen as strictly prototype clean. +# +# For the GNU CC compiler it will be -fstrict-prototypes +# -Wstrict-prototypes The result is added to the shellvar being CFLAGS by +# default. +# +# DEFAULTS: +# +# - $1 shell-variable-to-add-to : CFLAGS +# - $2 add-value-if-not-found : nothing +# - $3 action-if-found : add value to shellvariable +# - $4 action-if-not-found : nothing +# +# LAST MODIFICATION +# +# 2008-04-12 +# +# COPYLEFT +# +# Copyright (c) 2008 Guido U. Draheim <guidod@gmx.de> +# +# 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, see <http://www.gnu.org/licenses/>. +# +# As a special exception, the respective Autoconf Macro's copyright owner +# gives unlimited permission to copy, distribute and modify the configure +# scripts that are the output of Autoconf when processing the Macro. You +# need not follow the terms of the GNU General Public License when using +# or distributing such scripts, even though portions of the text of the +# Macro appear in them. The GNU General Public License (GPL) does govern +# all other use of the material that constitutes the Autoconf Macro. +# +# This special exception to the GPL applies to versions of the Autoconf +# Macro released by the Autoconf Macro Archive. When you make and +# distribute a modified version of the Autoconf Macro, you may extend this +# special exception to the GPL to apply to your modified version as well. + +AC_DEFUN([AX_CFLAGS_STRICT_PROTOTYPES],[dnl +AS_VAR_PUSHDEF([FLAGS],[CFLAGS])dnl +AS_VAR_PUSHDEF([VAR],[ac_cv_cflags_strict_prototypes])dnl +AC_CACHE_CHECK([m4_ifval($1,$1,FLAGS) for strict prototypes], +VAR,[VAR="no, unknown" + AC_LANG_SAVE + AC_LANG_C + ac_save_[]FLAGS="$[]FLAGS" +for ac_arg dnl +in "-pedantic % -fstrict-prototypes -Wstrict-prototypes" dnl GCC + "-pedantic % -Wstrict-prototypes" dnl try to warn atleast + "-pedantic % -Wmissing-prototypes" dnl or another warning + "-pedantic % -Werror-implicit-function-declaration" dnl + "-pedantic % -Wimplicit-function-declaration" dnl + # +do FLAGS="$ac_save_[]FLAGS "`echo $ac_arg | sed -e 's,%%.*,,' -e 's,%,,'` + AC_TRY_COMPILE([],[return 0;], + [VAR=`echo $ac_arg | sed -e 's,.*% *,,'` ; break]) +done +case ".$VAR" in + .|.no|.no,*) ;; + *) # sanity check with signal() from sys/signal.h + cp config.log config.tmp + AC_TRY_COMPILE([#include <signal.h>],[ + if (signal (SIGINT, SIG_IGN) == SIG_DFL) return 1; + if (signal (SIGINT, SIG_IGN) != SIG_DFL) return 2;], + dnl the original did use test -n `$CC testprogram.c` + [if test `diff config.log config.tmp | grep -i warning | wc -l` != 0 +then if test `diff config.log config.tmp | grep -i warning | wc -l` != 1 +then VAR="no, suppressed, signal.h," ; fi ; fi], + [VAR="no, suppressed, signal.h"]) + rm config.tmp + ;; +esac + FLAGS="$ac_save_[]FLAGS" + AC_LANG_RESTORE +]) +case ".$VAR" in + .ok|.ok,*) m4_ifvaln($3,$3) ;; + .|.no|.no,*) m4_ifvaln($4,$4,[m4_ifval($2,[ + AC_RUN_LOG([: m4_ifval($1,$1,FLAGS)="$m4_ifval($1,$1,FLAGS) $2"]) + m4_ifval($1,$1,FLAGS)="$m4_ifval($1,$1,FLAGS) $2"])]) ;; + *) m4_ifvaln($3,$3,[ + if echo " $[]m4_ifval($1,$1,FLAGS) " | grep " $VAR " 2>&1 >/dev/null + then AC_RUN_LOG([: m4_ifval($1,$1,FLAGS) does contain $VAR]) + else AC_RUN_LOG([: m4_ifval($1,$1,FLAGS)="$m4_ifval($1,$1,FLAGS) $VAR"]) + m4_ifval($1,$1,FLAGS)="$m4_ifval($1,$1,FLAGS) $VAR" + fi ]) ;; +esac +AS_VAR_POPDEF([VAR])dnl +AS_VAR_POPDEF([FLAGS])dnl +]) + +dnl the only difference - the LANG selection... and the default FLAGS + +AC_DEFUN([AX_CXXFLAGS_STRICT_PROTOTYPES],[dnl +AS_VAR_PUSHDEF([FLAGS],[CXXFLAGS])dnl +AS_VAR_PUSHDEF([VAR],[ac_cv_cxxflags_strict_prototypes])dnl +AC_CACHE_CHECK([m4_ifval($1,$1,FLAGS) for strict prototypes], +VAR,[VAR="no, unknown" + AC_LANG_SAVE + AC_LANG_CPLUSPLUS + ac_save_[]FLAGS="$[]FLAGS" +for ac_arg dnl +in "-pedantic -Werror % -fstrict-prototypes -Wstrict-prototypes" dnl GCC + "-pedantic -Werror % -Wstrict-prototypes" dnl try to warn atleast + "-pedantic -Werror % -Wmissing-prototypes" dnl try to warn atleast + "-pedantic -Werror % -Werror-implicit-function-declaration" dnl + "-pedantic -Werror % -Wimplicit-function-declaration" dnl + "-pedantic % -Wstrict-prototypes %% no, unsupported in C++" dnl oops + # +do FLAGS="$ac_save_[]FLAGS "`echo $ac_arg | sed -e 's,%%.*,,' -e 's,%,,'` + AC_TRY_COMPILE([],[return 0;], + [VAR=`echo $ac_arg | sed -e 's,.*% *,,'` ; break]) +done +case ".$VAR" in + .|.no|.no,*) ;; + *) # sanity check with signal() from sys/signal.h + cp config.log config.tmp + AC_TRY_COMPILE([#include <signal.h>],[ + if (signal (SIGINT, SIG_IGN) == SIG_DFL) return 1; + if (signal (SIGINT, SIG_IGN) != SIG_DFL) return 2;], + dnl the original did use test -n `$CC testprogram.c` + [if test `diff config.log config.tmp | grep -i warning | wc -l` != 0 +then if test `diff config.log config.tmp | grep -i warning | wc -l` != 1 +then VAR="no, suppressed, signal.h," ; fi ; fi], + [VAR="no, suppressed, signal.h"]) + rm config.tmp + ;; +esac + FLAGS="$ac_save_[]FLAGS" + AC_LANG_RESTORE +]) +case ".$VAR" in + .ok|.ok,*) m4_ifvaln($3,$3) ;; + .|.no|.no,*) m4_ifvaln($4,$4,[m4_ifval($2,[ + AC_RUN_LOG([: m4_ifval($1,$1,FLAGS)="$m4_ifval($1,$1,FLAGS) $2"]) + m4_ifval($1,$1,FLAGS)="$m4_ifval($1,$1,FLAGS) $2"])]) ;; + *) m4_ifvaln($3,$3,[ + if echo " $[]m4_ifval($1,$1,FLAGS) " | grep " $VAR " 2>&1 >/dev/null + then AC_RUN_LOG([: m4_ifval($1,$1,FLAGS) does contain $VAR]) + else AC_RUN_LOG([: m4_ifval($1,$1,FLAGS)="$m4_ifval($1,$1,FLAGS) $VAR"]) + m4_ifval($1,$1,FLAGS)="$m4_ifval($1,$1,FLAGS) $VAR" + fi ]) ;; +esac +AS_VAR_POPDEF([VAR])dnl +AS_VAR_POPDEF([FLAGS])dnl +]) diff --git a/Build/source/utils/chktex/chktex-1.6.6/m4/vl_prog_cc_warnings.m4 b/Build/source/utils/chktex/chktex-1.6.6/m4/vl_prog_cc_warnings.m4 new file mode 100644 index 00000000000..fe2f6145450 --- /dev/null +++ b/Build/source/utils/chktex/chktex-1.6.6/m4/vl_prog_cc_warnings.m4 @@ -0,0 +1,111 @@ +AC_DEFUN([VL_PROG_CC_WARNINGS], [ + ansi=$1 + if test -z "$ansi"; then + msg="for C compiler warning flags" + else + msg="for C compiler warning and ANSI conformance flags" + fi + AC_CACHE_CHECK($msg, vl_cv_prog_cc_warnings, [ + if test -n "$CC"; then + cat > conftest.c <<EOF +int main(int argc, char **argv) { return 0; } +EOF + + dnl GCC + if test "$GCC" = "yes"; then + if test -z "$ansi"; then + vl_cv_prog_cc_warnings="-Wall" + else + vl_cv_prog_cc_warnings="-Wall -ansi -pedantic" + fi + + dnl Most compilers print some kind of a version string with some command + dnl line options (often "-V"). The version string should be checked + dnl before doing a test compilation run with compiler-specific flags. + dnl This is because some compilers (like the Cray compiler) only + dnl produce a warning message for unknown flags instead of returning + dnl an error, resulting in a false positive. Also, compilers may do + dnl erratic things when invoked with flags meant for a different + dnl compiler. + + dnl Solaris C compiler + elif $CC -V 2>&1 | grep -i "WorkShop" > /dev/null 2>&1 && + $CC -c -v -Xc conftest.c > /dev/null 2>&1 && + test -f conftest.o; then + if test -z "$ansi"; then + vl_cv_prog_cc_warnings="-v" + else + vl_cv_prog_cc_warnings="-v -Xc" + fi + + dnl Digital Unix C compiler + elif $CC -V 2>&1 | grep -i "Digital UNIX Compiler" > /dev/null 2>&1 && + $CC -c -verbose -w0 -warnprotos -std1 conftest.c > /dev/null 2>&1 && + test -f conftest.o; then + if test -z "$ansi"; then + vl_cv_prog_cc_warnings="-verbose -w0 -warnprotos" + else + vl_cv_prog_cc_warnings="-verbose -w0 -warnprotos -std1" + fi + + dnl C for AIX Compiler + elif $CC 2>&1 | grep -i "C for AIX Compiler" > /dev/null 2>&1 && + $CC -c -qlanglvl=ansi -qinfo=all conftest.c > /dev/null 2>&1 && + test -f conftest.o; then + if test -z "$ansi"; then + vl_cv_prog_cc_warnings="-qsrcmsg -qinfo=all:noppt:noppc:noobs:nocnd" + else + vl_cv_prog_cc_warnings="-qsrcmsg -qinfo=all:noppt:noppc:noobs:nocnd -qlanglvl=ansi" + fi + + dnl IRIX C compiler + elif $CC -version 2>&1 | grep -i "MIPSpro Compilers" > /dev/null 2>&1 && + $CC -c -fullwarn -ansi -ansiE conftest.c > /dev/null 2>&1 && + test -f conftest.o; then + if test -z "$ansi"; then + vl_cv_prog_cc_warnings="-fullwarn" + else + vl_cv_prog_cc_warnings="-fullwarn -ansi -ansiE" + fi + + dnl HP-UX C compiler + elif what $CC 2>&1 | grep -i "HP C Compiler" > /dev/null 2>&1 && + $CC -c -Aa +w1 conftest.c > /dev/null 2>&1 && + test -f conftest.o; then + if test -z "$ansi"; then + vl_cv_prog_cc_warnings="+w1" + else + vl_cv_prog_cc_warnings="+w1 -Aa" + fi + + dnl The NEC SX-5 (Super-UX 10) C compiler + elif $CC -V 2>&1 | grep "/SX" > /dev/null 2>&1 && + $CC -c -pvctl[,]fullmsg -Xc conftest.c > /dev/null 2>&1 && + test -f conftest.o; then + if test -z "$ansi"; then + vl_cv_prog_cc_warnings="-pvctl[,]fullmsg" + else + vl_cv_prog_cc_warnings="-pvctl[,]fullmsg -Xc" + fi + + dnl The Cray C compiler (Unicos) + elif $CC -V 2>&1 | grep -i "Cray" > /dev/null 2>&1 && + $CC -c -h msglevel 2 conftest.c > /dev/null 2>&1 && + test -f conftest.o; then + if test -z "$ansi"; then + vl_cv_prog_cc_warnings="-h msglevel 2" + else + vl_cv_prog_cc_warnings="-h msglevel 2 -h conform" + fi + + fi + rm -f conftest.* + fi + if test -n "$vl_cv_prog_cc_warnings"; then + CFLAGS="$CFLAGS $vl_cv_prog_cc_warnings" + else + vl_cv_prog_cc_warnings="unknown" + fi + ]) +])dnl + diff --git a/Build/source/utils/chktex/chktex-1.6.6/rmeheader.in b/Build/source/utils/chktex/chktex-1.6.6/rmeheader.in new file mode 100644 index 00000000000..56ca58ae76e --- /dev/null +++ b/Build/source/utils/chktex/chktex-1.6.6/rmeheader.in @@ -0,0 +1,19 @@ +Short: v@PACKAGE_VERSION@. Finds typographic errors in LaTeX +Author: <chktex@ev-en.org> (Baruch Even) +Uploader: <chktex@ev-en.org> (Baruch Even) +Type: text/tex +Replaces: text/tex/ChkTeX.lha +Version: @PACKAGE_VERSION@ +URL: http://www.freesoftware.fsf.org/chktex + + + ##### ### ### ######## ### ## + ### ## ## ## ## ## # + @@ @@ @@@ @@ @@ @@ ####### @@ @ + @@ @@@ @@ @@ @@ @@ ## # @@ + && && && &&&& && @@ & && + &&& && && && && && && @@@@ & && + %%%%% %%% %%% %%% %%% %% && %%% %%% v@PACKAGE_VERSION@ + && & + %%%%%%% + diff --git a/Build/source/utils/chktex/chktex-1.6.6/stamp-h.in b/Build/source/utils/chktex/chktex-1.6.6/stamp-h.in new file mode 100644 index 00000000000..9788f70238c --- /dev/null +++ b/Build/source/utils/chktex/chktex-1.6.6/stamp-h.in @@ -0,0 +1 @@ +timestamp diff --git a/Build/source/utils/chktex/chktex-1.6.6/types.h b/Build/source/utils/chktex/chktex-1.6.6/types.h new file mode 100644 index 00000000000..a26b95295e4 --- /dev/null +++ b/Build/source/utils/chktex/chktex-1.6.6/types.h @@ -0,0 +1,17 @@ +/* + * Clone of <exec/types.h>, which could not be included because it's + * (c) Commodore/Escom/Amiga/whatever. + * + */ + +#ifndef EXEC_TYPES_H +#define EXEC_TYPES_H + +#ifndef TRUE +# define TRUE 1L +#endif +#ifndef FALSE +# define FALSE 0L +#endif + +#endif diff --git a/Build/source/utils/chktex/configure.ac b/Build/source/utils/chktex/configure.ac index 64622564d40..d75abdbf90e 100644 --- a/Build/source/utils/chktex/configure.ac +++ b/Build/source/utils/chktex/configure.ac @@ -1,6 +1,6 @@ dnl Process this file with autoconf to produce a configure script. dnl -dnl Copyright (C) 2010, 2011 Peter Breitenlohner <tex-live@tug.org> +dnl Copyright (C) 2010-2012 Peter Breitenlohner <tex-live@tug.org> dnl dnl This file is free software; the copyright holder dnl gives unlimited permission to copy and/or distribute it, @@ -8,11 +8,11 @@ dnl with or without modifications, as long as this notice is preserved. dnl dnl ********************************************************************* dnl -dnl Adapted for TeX Live from chktex-1.6.4/configure.in +dnl Adapted for TeX Live from chktex-*/configure.in dnl dnl ********************************************************************* dnl -m4_define([chktex_version], [1.6.4])[]dnl using unmodified chktex source tree +m4_define([chktex_version], [1.6.6])[]dnl using unmodified chktex source tree AC_INIT([ChkTeX for TeX Live], chktex_version, [tex-k@tug.org]) AC_PREREQ([2.65]) AC_CONFIG_SRCDIR([chktex-]chktex_version[/ChkTeX.c]) |