Commit eae236c8 authored by Paolo Greppi's avatar Paolo Greppi

Import Upstream version 5.2.1

parents
Numdiff
Copyright (C) 2005, 2006, 2007, 2008, 2009, 2010 - Ivano Primi <ivprimi(at)libero(dot)it>
(Ivano Primi <ivprimi(at)libero(dot)it> is also the author of the program)
Note:
Numdiff includes source code from
* GNU BC 1.06, Copyright (C) 1991, 1992, 1993, 1994, 1997, 2000
Free Software Foundation, Inc.
* GNU C Library, Copyright (C) 1989-1994,1996-1999,2001,2003,2004
Free Software Foundation, Inc.
and source code from
GNU DIFF, Copyright (C) 1988, 1989, 1992, 1993, 1994, 1995, 1998, 2001, 2002
Free Software Foundation, Inc.
Bug reports have to be sent to the address
<ivprimi(at)libero(dot)it> . Please, put Numdiff
in the subject and indicate the version of Numdiff
you are using, the version of the operating system you
are running and, if you know it, the version of the compiler
used to build Numdiff.
This diff is collapsed.
2010-01-24 Ivano Primi <ivprimi(at)libero(dot)it>
Version 5.2.1 released.
2010-01-24 Ivano Primi <ivprimi(at)libero(dot)it>
* Makefile.in: VERSION changed to 5.2.1.
* config.h.in: (VERSION): From 5.2.0 to 5.2.1.
* NEWS: Added news for version 5.2.1.
* system.h: [!ENABLE_NLS] (ngettext): Macro definition.
2010-01-07 Ivano Primi <ivprimi(at)libero(dot)it>
Version 5.2.0 released.
2010-01-07 Ivano Primi <ivprimi(at)libero(dot)it>
* util.c: Doc fixes.
* util.c: New file.
* side.c: Doc fixes.
* side.c: New file.
* inout.c: Doc fixes.
* inout.c: New file.
* analyze.c: Doc fixes.
* analyze.c: New file.
* number.c: Doc fixes.
* options.c: (print_version) [!USE_GMP]: Message string fixed.
(print_help): Message string fixed.
2010-01-06 Ivano Primi <ivprimi(at)libero(dot)it>
* NEWS, INSTALL: Doc fixes.
2010-01-05 Ivano Primi <ivprimi(at)libero(dot)it>
* ndselect.c (print_selversion): Fixed Copyright string.
* read_line.c: Doc fixes.
* options.c: Doc fixes.
(print_version): Fixed Copyright string.
* numutil.c, numdiff.h, number.c: Doc fixes.
* number.c: New file.
* new.c, ndselect.h: Doc fixes.
* ndselect.h: New file.
* ndselect.c, main.c, io.c, flags.c: Doc fixes.
* flags.c: New file.
* errors.c, configure.ac, config.h.in, cmpfns.c, arith.c, README:
Doc fixes.
* README: New file.
* Makefile.in, INSTALL: Doc fixes.
* INSTALL, BUGS: New file.
* AUTHORS: Doc fixes.
* AUTHORS: New file.
2010-01-03 Ivano Primi <ivprimi(at)libero(dot)it>
* ndselect.c: [USE_GMP]: Removed zalloc.
string.h and numutil.c are not anymore included.
Removed declaration of read_line.
Include read_line.c.
* Makefile.in (SOURCESONE): Added $(srcdir)/read_line.c.
(OBJECTSTWO): Removed ./arith.o and ./io.o.
(SOURCESTWO): Removed $(srcdir)/arith.c and $(srcdir)/io.c.
Added $(srcdir)/read_line.c.
(copy): Added instruction to copy read_line.c
from source directory to tarball directory.
* io.c: Doc-fixes: Removed unuseful comments.
(read_line): Moved to file read_line.c.
Added instruction to include read_line.c.
* read_line.c, io.c: New file.
* arith.c: [USE_GMP] (str2C): Replaced isspace by is_space.
Replaced '+' by POS_SIGN and '-' by NEG_SIGN.
[!USE_GMP] (str2C): Replaced isspace by is_space.
Replaced '+' by POS_SIGN and '-' by NEG_SIGN.
* ndselect.c (setargs): Replaced isspace by is_space.
* numdiff.h (is_digit, is_punct, is_print): Macro re-definition.
(is_space): Macro definition. The macro isspace has been
replaced everywhere by is_space.
* system.h: New file.
* numutil.c (anum, snum): Replaced toupper by TOLOWER.
(anum, acxnum, snum, scxnum): Replaced isspace by is_space.
* cmpfns.c (strNcasecmp): Replaced tolower by TOLOWER.
* new.c (bc_a2num): Replaced toupper by TOLOWER.
Replaced isspace by is_space.
* new.c: New file.
2009-12-30 Ivano Primi <ivprimi(at)libero(dot)it>
* NEWS: Added news for version 5.2.0.
* NEWS: New file.
* configure.ac: New option --enable-gmp / --disable-gmp.
Usage of GNU MP is enabled by default.
* arith.c: HAVE_LIBGMP has been replaced by USE_GMP.
(Epsilon, MEpsilon): Removed.
(mpa_define_epsilon, mpa_undef_epsilon): Removed.
[USE_GMP] (init_mpa): Signature and definition (argument
iscale is used in place of MAX_ISCALE) changed.
All callers in other files changed.
[!USE_GMP] (init_mpa): Signature changed.
All callers in other files changed.
(copyR, copyC): Signature and definition changed.
All callers in other files changed.
[USE_GMP] (str2R, str2C): Calls to mpf_a2num() changed.
(cmp, is0): Signature and definition changed.
All callers in other files changed.
[USE_GMP] (fprintno): Test (u == Inf) has been correctly rewritten.
[USE_GMP] (end_mpa): Variable Inf is also cleared now.
* main.c (init_mpa_support): Call to init_mpa() changed.
(print_statistics) [USE_GMP]: Added code to initialize qm_abserr and qm_relerr.
(print_statistics): Removed commented out old code.
(print_statistics): Changed calls to copyR().
(main): Removed calls to mpa_define_epsilon() and mpa_undef_epsilon().
* ndselect.c: [USE_GMP] (zalloc): New function.
[USE_GMP]: Include numutil.c.
* options.c:
(print_version) [USE_GMP]: Added statement on the way the program has been built.
(print_version) [!USE_GMP]: Modified statement on the way the program has been built.
(set_args) [!USE_GMP]: Removed code to avoid memory leak (not needed in this case
and even dangerous).
* errors.c (out_of_memory):
Added missing argument in the call to fprintf().
* numutil.c: HAVE_LIBGMP has been replaced by USE_GMP.
[USE_GMP](mpf_a2num): The case when the number returned by snum()
is zero is now correctly handled.
* cmpfns.c (cmp, is0, copyR): Calls changed.
* numdiff.h (USE_GMP): New Macro.
HAVE_LIBGMP has been replaced by USE_GMP.
(MAX_EPXN, MIN_EXPN): They are now constant values of 'long int' type.
(cmp, is0, init_mpa, copyR, copyC): Redefinition of signature.
All callers changed.
(mpa_define_epsilon, mpa_undef_epsilon): Removed.
* errors.c, options.c, ndselect.c, main.c, cmpfns.c: New file.
2009-12-29 Ivano Primi <ivprimi(at)libero(dot)it>
* configure.ac: AC_INIT(...): From version 5.0 to 5.2.
* config.h.in (HAVE_LIBGMP): New Macro.
(HAVE_LOCALECONV): New Macro.
(VERSION): From 5.0.0 to 5.2.0.
* Makefile.in: VERSION changed to 5.2.0.
* config.h.in: New file.
* numutil.c:
[HAVE_LIBGMP] (mpf_a2num): Bug fixes after running a text program.
* numutil.c:
[HAVE_LIBGMP] (mpf_a2num): Removed memory leak + Doc fixes.
* arith.c: [HAVE_LIBGMP] (fprintno): Memory leak removed
2009-12-28 Ivano Primi <ivprimi(at)libero(dot)it>
* numutil.c: [HAVE_LOCALECONV && HAVE_LIBGMP]: Include locale.h.
[HAVE_LIBGMP] (mpf_a2num): New function.
* numutil.c: New file.
* configure.ac: AC_CHECK_FUNCS(...): Check for localeconv added.
* numdiff.h (CHAR_ONE CHAR_NINE): Macro definition.
[HAVE_LIBGMP] (mpf_a2num): Declaration.
* arith.c: [HAVE_LIBGMP] (round_far_from_zero fprintno): New functions.
[HAVE_LIBGMP] (printno, debug_printno): Transformed into wrappers of the function fprintno.
[HAVE_LIBGMP] (str2R): Call to mpf_a2num changed in view of the actual definition of this function.
* arith.c:
[HAVE_LIBGMP] (Zero, Ten, Inf, Epsilon, MEpsilon): Definition of variables.
[HAVE_LIBGMP] (init_mpa, mpa_define_epsilon, initR, initC, copyR, copyC)
(str2R, str2C, add, square, divide, divide_by_int, square_root)
(Cabs, Csub, cmp, is0, smart_cmp, printno, debug_printno)
(delR, delC, mpa_undef_epsilon, end_mpa): New functions.
[!HAVE_LIBGMP] (copyR, copyC): Re-definition according to the new signature.
* numdiff.h (copyR copyC): Redefinition of signature.
All callers changed.
2009-12-13 Ivano Primi <ivprimi(at)libero(dot)it>
* Makefile.in: Added createdirs, copy and tarball targets.
Target dist rewritten.
* Makefile.in, arith.c: New file.
2009-12-12 Ivano Primi <ivprimi(at)libero(dot)it>
* numdiff.h: [HAVE_LIBGMP] (Real Complex): Definition of types.
* numdiff.h: New file.
* configure.ac: AC_CHECK_LIB(gmp, __gmpz_init): Check for GNUMP added.
* configure.ac: New file.
2009-11-31 Ivano Primi <ivprimi(at)libero(dot)it>
Version 5.0.0 released.
This diff is collapsed.
This diff is collapsed.
5.2.0 --> 5.2.1 (Ivano Primi <ivprimi(at)libero(dot)it>) :
* Corrected a bug which prevented Numdiff to be built on MacOS X(R).
Thanks to Antoine Dechaume for the report.
5.0.0 --> 5.2.0 (Ivano Primi <ivprimi(at)libero(dot)it>) :
* Numdiff uses now the GNU Multiple Precision Arithmetic Library
(also called GNU MP or GMP) if this library is available
at build-time.
The old internal support for multiple precision arithmetic
is a fall-back in case GNU MP is absent.
However it is possible to use the internal support for
multiple precision arithmetic even when GNU MP is available:
it is sufficient to pass the option --disable-gmp
(or --enable-gmp=no) to the configure script
before building the program.
After building and installing Numdiff,
it is possible to know whether it has been
linked against GNU MP or not just by calling the program
with the option -v. In case of link against GMP
the program tells also which version of
GNU MP it uses to perform its computations.
5.0.0 beta4 --> 5.0.0 (Ivano Primi <ivprimi(at)libero(dot)it>) :
* The filter has been improved, now it gets no more confused if
the same value is represented in scientific notation in one file
and in common decimal notation in the other file.
* The Makefile.in (and consequently the Makefile) has
been modified to conform to the GNU Coding Standards.
* Now numdiff and ndselect accept long options too
(for instance --separator='\n\t %' instead of -s '\n\t %').
* The option -r accepts now an additional parameter which tells
to compute the relative differences always with respect
to the values in one file, instead of using the classic
formula for the relative error.
* The argument of the option -f has been made optional.
* Documentation, i18n and italian l10n have been updated.
5.0.0 beta1 --> 5.0.0 beta4 (Ivano Primi <ivprimi(at)libero(dot)it>) :
* Added additional information to the report printed by
the option -S.
* Now the program can accept the options with argument
-z INT, -Z INT, -X INT
as short equivalent forms of
-z 1:INT -z 2:INT,
-Z 1:INT -Z 2:INT and
-X 1:INT -X 2:INT respectively.
* The option -R has been removed since not useful.
* The option -s has now an extended syntax allowing to specify
different sets of field delimiters for the two files to compare.
* Adoption of the version 1.3 of the GNU Free Documentation License
for the TeXinfo documentation.
* Now the test programs are not anymore distributed together with
the source code of Numdiff.
4.2.0 --> 5.0.0 beta1 (Ivano Primi <ivprimi(at)libero(dot)it>) :
* Removed the support for double, long double
and high precision arithmetic. Now only multiple
precision arithmetic is available (but it is not a limitation :) ).
* Removed the option -L, since the tool ndselect made it obsolete.
* Implemented a synchronization procedure to detect insertions/deletions
of lines. To accomplish this, source code from GNU diff (diffutils 2.8.1)
has been used (with the necessary modifications).
Added the options -f, -z, -Z, -R, -m, -H, -T.
* Removed the option -F, -X is now used in place of it.
* Added new entries to the help which explain how to use the new options.
* The output format has been slightly changed.
* Makefile and configuration scripts have been changed, since
the code has become much more complex than it was.
* Added more tests to check that the new features are correctly working.
* Change of the license: from GPL version 2 or later to GPL version 3 or later.
The copyright statement of my files has been consequently updated.
Also the message shown by 'numdiff -v'.
4.0.0 --> 4.2.0 (Ivano Primi <ivprimi(at)libero(dot)it>) :
* Changed the way the options -V and -b interact when they are both set.
* Added new tests.
* Now, when the options -v and -h are both set, Numdiff displays before
the information about version, Copyright and NO-Warranty and then
the help message.
* The Copyright has been updated.
* Added the tools `ndfilter' and `ndselect'.
* i18n and italian l10n updated.
* The documentation has been consequently updated.
3.0.2 --> 4.0.0 (Ivano Primi <ivprimi(at)libero(dot)it>) :
* New output format.
At the same time the code printing the output has been cleaned.
* Added the -V option for the "verbose" mode.
* Better handling of the last line of a file.
* i18n, l10n and documentation have been consequently
updated.
3.0.1 --> 3.0.2 (Ivano Primi <ivprimi(at)libero(dot)it>) :
* The code of the function Cabs() has been improved
for both double and long-double precision.
* Fixed a compilation error which occurred when one
chose to activate the double, the long-double or the high
precision instead of the multiple precision arithmetic.
This compilation error was introduced just before releasing
the version 3.0 of Numdiff .
3.0 --> 3.0.1 (Ivano Primi <ivprimi(at)libero(dot)it>) :
* The code of the function Cabs() has been modified
in order to speed up the execution when working with
real numbers (the change concerned only the code
for multiple precision arithmetic).
3.0 (Ivano Primi <ivprimi(at)libero(dot)it>) :
* First public release
Copyright (C) 2005, 2006, 2007, 2008, 2009, 2010 Ivano Primi <ivprimi@libero.it>
Copying and distribution of this file, with or without modification,
are permitted in any medium without royalty provided the copyright
notice and this notice are preserved.
***********************************************************************************
Numdiff
~~~~~~~
This README file is distributed together with the source code
of Numdiff, a program which compares
putatively similar files line by line and field by field,
ignoring small numeric differences or/and different numeric formats.
Numdiff is Copyright (C) of Ivano Primi <ivprimi(at)libero(dot)it>,
which is also its author.
Numdiff (also written numdiff) is free software;
you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 3 of the License, or
(at your option) any later version.
Numdiff 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 in a file called COPYING.
If not, see <http://www.gnu.org/licenses/>.
Detailed instructions on how to install Numdiff can be found in the
file INSTALL.
The full documentation of Numdiff can be found in the directory ./docs .
* At the moment Numdiff manages perfectly only text files with an
8-bit encoding (ASCII and ISO 8859-* text files).
The use of Numdiff with UTF-8 text files has some restrictions.
Sooner or later Numdiff should fully support UTF-8 encoding.
# generated automatically by aclocal 1.10.1 -*- Autoconf -*-
# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
# 2005, 2006, 2007, 2008 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/setmode.m4])
m4_include([m4/st_mtim.m4])
This diff is collapsed.
This diff is collapsed.
/* Buffer primitives for comparison operations.
Copyright (C) 1993, 1995, 1998, 2001, 2002 Free Software Foundation, Inc.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2, or (at your option)
any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; see the file COPYING.
If not, write to the Free Software Foundation,
59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
#if HAVE_CONFIG_H
# include <config.h>
#endif
#include <errno.h>
#include <limits.h>
#include <signal.h>
#ifndef SA_RESTART
# ifdef SA_INTERRUPT /* e.g. SunOS 4.1.x */
# define SA_RESTART SA_INTERRUPT
# else
# define SA_RESTART 0
# endif
#endif
#if HAVE_UNISTD_H
# include <unistd.h>
#endif
#if HAVE_INTTYPES_H
# include <inttypes.h>
#endif
#include <sys/types.h>
#include "cmpbuf.h"
/* Determine whether an integer type is signed, and its bounds.
This code assumes two's (or one's!) complement with no holes. */
/* The extra casts work around common compiler bugs,
e.g. Cray C 5.0.3.0 when t == time_t. */
#ifndef TYPE_SIGNED
# define TYPE_SIGNED(t) (! ((t) 0 < (t) -1))
#endif
#ifndef TYPE_MINIMUM
# define TYPE_MINIMUM(t) ((t) (TYPE_SIGNED (t) \
? ~ (t) 0 << (sizeof (t) * CHAR_BIT - 1) \
: (t) 0))
#endif
#ifndef TYPE_MAXIMUM
# define TYPE_MAXIMUM(t) ((t) (~ (t) 0 - TYPE_MINIMUM (t)))
#endif
#ifndef PTRDIFF_MAX
# define PTRDIFF_MAX TYPE_MAXIMUM (ptrdiff_t)
#endif
#ifndef SIZE_MAX
# define SIZE_MAX TYPE_MAXIMUM (size_t)
#endif
#ifndef SSIZE_MAX
# define SSIZE_MAX TYPE_MAXIMUM (ssize_t)
#endif
#undef MIN
#define MIN(a, b) ((a) <= (b) ? (a) : (b))
/* Read NBYTES bytes from descriptor FD into BUF.
NBYTES must not be SIZE_MAX.
Return the number of characters successfully read.
On error, return SIZE_MAX, setting errno.
The number returned is always NBYTES unless end-of-file or error. */
size_t
block_read (int fd, char *buf, size_t nbytes)
{
char *bp = buf;
char const *buflim = buf + nbytes;
size_t readlim = SSIZE_MAX;
do
{
size_t bytes_to_read = MIN (buflim - bp, readlim);
ssize_t nread = read (fd, bp, bytes_to_read);
if (nread <= 0)
{
if (nread == 0)
break;
/* Accommodate Tru64 5.1, which can't read more than INT_MAX
bytes at a time. They call that a 64-bit OS? */
if (errno == EINVAL && INT_MAX < bytes_to_read)
{
readlim = INT_MAX;
continue;
}
/* This is needed for programs that have signal handlers on
older hosts without SA_RESTART. It also accommodates
ancient AIX hosts that set errno to EINTR after uncaught
SIGCONT. See <news:1r77ojINN85n@ftp.UU.NET>
(1993-04-22). */
if (! SA_RESTART && errno == EINTR)
continue;
return SIZE_MAX;
}
bp += nread;
}
while (bp < buflim);
return bp - buf;
}
/* Least common multiple of two buffer sizes A and B. However, if
either A or B is zero, or if the multiple is greater than LCM_MAX,
return a reasonable buffer size. */
size_t
buffer_lcm (size_t a, size_t b, size_t lcm_max)
{
size_t lcm, m, n, q, r;
/* Yield reasonable values if buffer sizes are zero. */
if (!a)
return b ? b : 8 * 1024;
if (!b)
return a;
/* n = gcd (a, b) */
for (m = a, n = b; (r = m % n) != 0; m = n, n = r)
continue;
/* Yield a if there is an overflow. */
q = a / n;
lcm = q * b;
return lcm <= lcm_max && lcm / b == q ? lcm : a;
}
/* Buffer primitives for comparison operations.
Copyright (C) 2002 Free Software Foundation, Inc.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2, or (at your option)
any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; see the file COPYING.
If not, write to the Free Software Foundation,
59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
size_t block_read (int, char *, size_t);
size_t buffer_lcm (size_t, size_t, size_t);
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
dnl
dnl Autoconf configuration script for Numdiff - version 5.x .
dnl
dnl Copyright 2005, 2006, 2007, 2008, 2009, 2010 Ivano Primi <ivprimi(at)libero(dot)it>.
dnl
dnl Permission is granted to use, copy, modify, and redistribute this file as
dnl needed.
dnl
dnl Process this file with autoconf to produce a configure script.
dnl
dnl --------------------------------------
dnl Minimal required version of
dnl autoconf
dnl --------------------------------------
dnl
AC_PREREQ(2.62)
dnl --------------------------------------
dnl Initialization
dnl --------------------------------------
dnl
AC_INIT(Numdiff, 5.2, <ivprimi at libero dot it>, numdiff)
AC_CONFIG_SRCDIR(numdiff.h)
AC_CONFIG_HEADER(config.h)
dnl --------------------------------------
dnl My own flags
dnl --------------------------------------
dnl
if test "x$DBGFLAGS" = "x"; then
DBGFLAGS="-g"
fi
if test "x$OPTFLAGS" = "x"; then
OPTFLAGS="-O"
fi
dnl --------------------------------------
dnl Getting environment variables
dnl --------------------------------------
dnl
CPPFLAGS="${CPPFLAGS:=}"
CFLAGS="${CFLAGS:=}"
LDFLAGS="${LDFLAGS:=}"
LIBS="${LIBS:=}"
CPPFLAGS="$CPPFLAGS -DHAVE_CONFIG_H"
dnl --------------------------------------
dnl Check whether to add /usr/local or not
dnl (this is somewhat a religious problem)
dnl --------------------------------------
dnl
if test "`$CPP -v < /dev/null 2>&1 | grep '/usr/local/include' 2>&1`" = ""; then
CPPFLAGS="$CPPFLAGS -I/usr/local/include"
LDFLAGS="$LDFLAGS -L/usr/local/lib"
fi
dnl --------------------------------------
dnl If possible, enable
dnl extensions to C or Posix on hosts
dnl that normally disable the extensions,
dnl typically due to standards-conformance
dnl namespace issues. This should be
dnl called before any macros that run the
dnl C compiler.
dnl --------------------------------------
AC_USE_SYSTEM_EXTENSIONS
dnl --------------------------------------
dnl Checks for programs
dnl --------------------------------------
dnl
AC_PROG_CC
AC_PROG_CC_C_O
AC_PROG_CPP
dnl AC_PROG_INSTALL
AC_PATH_PROG(FIND,find)
dnl * Debian uses ginstall-info instead of install-info
dnl * to install info files.
AC_PATH_PROGS(INSTINFO,install-info ginstall-info)
dnl --------------------------------------
dnl Checks for header files
dnl --------------------------------------
dnl
AC_HEADER_STDC
if test $ac_cv_header_stdc = yes; then
AC_MSG_RESULT(Ok! I have just found them.)
else
AC_MSG_ERROR(Cannot find ANSI C header files!)