
2009-01-18

 * Released version 0.4
 * Fixed build with ICC 11.0
 * Fixed bug when user's and system's headers with similar names was
   recognized as duplicates.

2009-01-13

 * Now 'hlint -p' accept more than one file in command line.
 * Fixed false positive on comment symbols inside string.

2009-01-12

 * Added support for multiline comments (/* and */).
 * Run run_test.sh with -f option when debug enabled.
 * Fixed 'make unit-test' in case when srcdir != builddir.
 * Fixed 'make test' in case when srcdir != builddir.

2009-01-11

 * Print error messages for all #endif without #if condition.
 * Print different error messages for #if/#ifdef/#ifndef without #endif.

2009-01-07

 * Build with -DNDEBUG if debug not enabled (by default).

2008-11-06

 * Recognize header as duplicate when it located inside nested condition
   directives and order of these directives differ than order around original
   header.
 * Don't treat header as duplicate if it located inside nested condition
   directives and type of these directives differ then type of directives
   around original header.

2008-11-05

 * Recognize as duplicated headers with unknown type (like #include HDR_NAME).

2008-11-01

 * Improve error messages when one of system function fails.
 * Don't show hlint's banner when -p option uses and one of system function
   fails.
 * Fixed 'make valgrind-test` with valgrind >= 3.3.0

2008-10-23

 * Ignore spaces in #if during condition comparison.

2008-10-17

 * Fixed segmentation fault when header recursively include self.

2008-09-29

 * Fixed 'make unit-test' under FreeBSD.
 * Fixed build with gcc 3.3.6

2008-06-23

 * Recognize not empty file which doesn't contains any headers as file
   without headers.
 * Added digraphs support.
 * Added trigraphs support.

2008-04-26

 * Don't treat as duplicate two headers if between them exists #undef
   directive (because in most cases it's intended double inclusion).

2008-04-24

 * Properly recognize include directive with definition as argument.

2008-04-20

 * Fixed bug when last character in string which test for comment
   wasn't processed.

2008-04-14

 * Added --enable-boost option to configure script.

2008-04-07

 * Delete duplicate when original header and it duplicate located
   inside one #if and between them exists another #if with condition.
 * Don't treat as duplicate two headers which inside one #ifdef/#endif
   pair, but separated by #elif directive.

2008-04-05

 * Ignore spaces in #ifdef/#ifndef during condition comparison.

2008-04-03

 * Fixed abort when assertion `ret.second == true` fails.

2008-04-01

 * Don't treat as duplicate two headers which inside one #ifdef/#endif
   pair, but separated by #else directive.

2008-03-31

 * Added ability for replacing empty #if[n]def/#else pair (after
   removal of duplicate header) to #if[n]def with inverted condtition.

2008-03-19

 * Build with following flags by default:
   + -Wold-style-cast
   + -Wctor-dtor-privacy
   + -Wcast-qual
   + -Wredundant-decls
   + -Wwrite-strings

2008-03-17

 * String '#if /*comment*/' now treat as directive with empty
   condition.
 * Fixed bug when string with one letter may be recognized as comment.

2008-03-10

 * Added detection for empty condition in #ifdef/#ifndef/#if/#elif
   directives.
 * Added detection for empty macro name in #define/#undef.

2008-02-27

 * Fixed bug when single #else was removed around first header (when
   second included absolutely).

2008-02-26

 * Delete #ifdef's around duplicated headers recursively.

2008-02-20

 * Added detection for:
   - unterminated #ifdef
   - #endif without #if
   - empty filename in #include
   - unterminated quotes in #include

2008-02-18

 * Delete #if's directives around first header when it duplicate
   included absolutely.

2008-02-15

 * Fixed bug when #if condition around duplicate header wasn't removed
   because located at end of file.
 * Don't delete duplicated headers which located in different #if's
   directives.

2008-02-09

 * Fixed bug when user's and system's headers with similar names was
   recognized as duplicates (affected -p option).

2008-02-08

 * Delete empty lines between already removed lines (affected -p option).

2008-02-06

 * Pass option -O2 to compiler if --enable-debug not specified
   (by default).
 * Pass option -pipe to compiler if we use g++.

2008-01-31

 * When we remove lines around duplicate header also remove comments.
 * Introdused -s option: don't print our blurb at top of generated
   patch (used with -p option)

2008-01-28

 * If deleted duplicate header was between #if/#endif pair then
   remove their also (only for -p option).
 * If deleted duplicate header was between #else/#endif pair then
   remove #else also (only for -p option).
 * If deleted duplicate header was between #elif/#endif pair then
   remove #elif also (only for -p option).

2008-01-27

 * If deleted duplicate header was between #ifdef/#endif pair then
   remove their also (only for -p option).

2008-01-23

 * Released version 0.3
 * Show our blurb message in top of generated patch.

2008-01-22

 * Pass -W -Wall -Wshadow -ansi -pedantic -Werror options to compiler
   only if we use g++.
 * Explicitly use std::sort.
   Fixed build under SunOS 5.10 with Sun Studio 12
 * Fixed test suite under SunOS 5.10
 * Include iostream before ctdlib or cstring headers.
   Fixed build with Sun Studio 10 update 1

2008-01-20

 * Don't include unistd.h header for stat() in Windows.
   Fixed build under Windows with Visual C++ 2005
 * Don't use %F, %T and %z modifiers for strftime() in Windows.
   Fixed crash in patch mode under Windows.
 * Move assert() after checking of returned value from strftime().

2008-01-14

 * Fixes for two and more hunks in patch.

2008-01-13

 * Documented -p option.

2008-01-13

 * Added generation of coordinates for hunk.
   Now -p option works and produce complete patches!
 * Test generated patches by trying apply their by using patch command.

2008-01-11

 * Added generation of header of result patch.

2008-01-10

 * Introduce -p option which produce patch for removing duplicated
   headers to stdout. (Not completely finished yet.)
 * Exit with error message if user specified -p option and -r or -n.

2007-11-18

 * Added --disable-werror option to configure script.
 * Added --enable-debug option to configure script.

2007-06-17

 * Miscellaneous fixes for building under SunOS 5.10 with Sun Studio
   compiler.

2007-06-06

 * Build with -Wshadow flag.

2007-05-15

 * Recognize '+' symbol in names of headers. It's fix detection
   headers like <Magick++.h>

2007-05-02

 * Install Russian man page and include her in tarball which created
   by make dist. Thanks to Damir Shayhutdinov <damir / altlinux.org>

2007-04-28

 * Released version 0.2
 * Added NEWS and INSTALL files.
 * Create also tar.bz2 archive during 'make dist'
 * Include build.sh script into resulting tarball

2007-04-27

 * Build with -ansi and -pedantic flags.

2007-04-26

 * Print number of test and statistics about passes/failes tests

2007-04-24

 * Borrowed and improved autogen.sh and build.sh scripts from my
   OpenFM project.
 * Added man pages on English and Russian languages.

2007-04-19

 * Added detection of duplicate headers. Works only for file, which
   was specified in command line.

2007-04-13

 * Fixed calculation path to users header file in Windows.
 * Allow to using combined options in command line
   (-rn instead of -r -n)
 * Better command line parsing: recognize situation when user specified
   only options without file and when unknown option was specified.

2007-04-12

 * Don't use function dirname() which absent in Windows.
   Fixed build under Windows with Visual C++ 8.0
 * Fixed bug which was added during dirname() replacement. Added
   test-case for this situation.
 * Removed big generic test-cases (100, 101, 102).

2007-04-09

 * Use strspn() for skiping spaces instead of using non-standart
   isblank() with loop. No functional change.

2007-04-02

 * Whole removed support for detection duplicate headers.
 * Added checks for isblank() for systems which doesn't have them.
   Fixed build under SunOS 5.8/5.10
 * Avoid using uninitialized variable.
   Fixed build under RHEL4 with gcc 3.4.3

2007-03-22

 * Added guard from double inclusive to headers by using #ifndef's
 * Added detection of duplicate headers in recursive mode

2007-03-12

 * Added detection of duplicate headers (not tested for recursive mode)

2007-03-09

 * Added GPL header to all source files
 * Added COPYING file with GPL license
 * Simplify LineOfSourceCode class interface by removing recursive and
   prefix parameters from constructor. Moved code which creates
   SourceFile class for user headers to SourceFile class
 * Use list instead of vector for storage LineOfSourceCode classes.
   This should be slightly save processor time
 * Mark test rule in Makefile as .PHONY. Now 'make test' works always,
   even if file with name 'test' exist

2007-03-05

 * Use ifstream class for reading file instead of fopen/fgets/fclose
   functions
 * Don't exit from program when we can't open users header file and
   recursive mode was enabled. Just prints "not found" after showing
   name of user header
 * Use assert() function for checks return value from strchr() in
   LineOfSourceCode constructor
 * Replace _is{User,System}Header() functions to universal _isHeader()
 * Replace _is{Include,Ifdef,Ifndef,Endif}() functions to universal
   _DetectDirective()
 * Correct usage output. -r and -n options can't specified together
   as one parameter (like -rn)
 * Added 13 functional tests with full coverage. Use 'make test' for
   runing them
 * Fixed situation when source file in another directory and program
   tries search all users headers from him in current directory

2007-03-02

 * Declare as const all methods which not change class members
 * Print name of header before showing all files which his include
 * Print indent before showing name of header
 * Introduce -n option which allow prints line numbers where header
   was included
 * Fixed bug when lines numbering starts from 0
 * Hide pheader from user by use default value for him. Simplify
   interface of SourceFile class
 * Recognise headers which contains slash (like sys/types.h),
   underscore (like net/if_dl.h) or dash sign in name
 * If -r option not specified print "user defined" after showing name
   of user header

2007-03-01

 * Added autotools support

2007-02-28

 * All targets in Makefile should depends from source files. Now make
   will always build target if one of source files was changed
 * Introduce -r option which allow prints header names recursively
 * Generate functions _is{System,User}Header() from macros
 * Print only header name instead of entire line

2007-02-27

 * Initial project
 * Added AUTHORS, ChangeLog and TODO files
 * Print only lines, which contains #include directives
 * Build with -DDEBUG when make called as 'make debug'

