 # This is ChangeLog for changes before enca became a library.
 # The new ChangeLog starts after that.
 # Unfortunately, there's no ChangeLog for the transition.

 # Note: EVERYTHING as changed file means global change, i.e. `every file where
 # this change was applicable was changed'.

2002-06-23 Yeti <yeti@physics.muni.cz>
    * src/texts.c, src/common.h, src/options.c: define e_isatty() as portable
      isatty in common.h, print help instead of wainting for input when stdin
      is a tty

v0.9.4
2002-03-04 Yeti <yeti@physics.muni.cz>
    * src/printresult.c: fixed print_detailed_report() not to truncate charset
      names in the table
    * src/convert.c: put a no-op file_seek() after file_write() to make
      subsequent file_read() work correctly (an ISO C ,feature`, not Enca's)

2002-03-03 Yeti <yeti@physics.muni.cz>
    * src/convert.c: fixed convert_builtin() to convert whole files, not just
      first 64kB

2001-08-16 Yeti <yeti@physics.muni.cz>
    * src/options.c: removed strange `:' from start of short_options

2001-08-01 Yeti <yeti@physics.muni.cz>
    * src/common.h: defined e_free(x) to set x to NULL after freeing it
    * src/EVERYTHING: formal changes

v0.9.3
2001-07-16 Yeti <yeti@physics.muni.cz>
    * configure.in, m4/librecode.m4, m4/iconv.m4, src/Makefile.am,
      src/epress.c: conversion libraries are put into CONVERTER_LIBS, so
      epress doesn't link with them (they are included in enca_LDADD), LIBS
      is not modified by librecode and iconv tests
    * iconvcap.c: added program_name definition for the case it would link
      with librecode (shouldn't happen)
    * configure.in: added AC_AIX
    * Makefile.am: added forgotten m4/crash-me to EXTRA_DIST
    * src/encnames.c: --list=encodings prints only `known' encodings
    * Makefile.am: added topline.sh (needed by update target) to dist
    * updated docs

2001-07-15 Yeti <yeti@physics.muni.cz>
    * src/lang.c: fixed giving random results due to usage of unitialized
      memory in get_charsets()
    * src/printresult.c: fixed using double instead of int for ambiguous and
      multibyte flags in T_EncDetails structure
    * src/guess.c, src/printresult.c, src/printresult.h: added
      GUESS_QP_RESOLVED flag to be able to print logically consistent -d output
      in case of quoted printables
    * src/fileio.c, configure.in: include sys/stat.h unconditionally, we
      cannot compile w/o it anyway, warning added to configure
    * src/common.h: include both string[s].h and memory.h. instead of just one
      of them
    * src/common.h: define PACKAGE, VERSION, DEFAULT_EXTERNAL_CONVERTER and
      DEFAULT_CONVERTER_LIST when don't have config.h to compile w/o it
    * src/options.c: fixed too many \n's in feature list
    * configure.in, src/texts.c: added isatty() and ttyname() test, defined
      stdout_isatty(), pager is run only when we are able to positively say
      stdout is a tty

2001-07-14 Yeti <yeti@physics.muni.cz>
    * src/options.c, src/common.h, src/texts.c: made USE_PAGER a feature +pager
    * m4/recode-bugs.m4: added TeX/..ISO-8859-2 recode crash test
    * m4/iconv.m4, src/convert_iconv.c: added ICONV_ARG2_CONST test
    * m4/typevar.m4, src/common.h, configure.in: removed the no longer needed
      long long int test, mere long int is used for mathint
    * configure.in: prepend "-Wall -pedantic" before CFLAGS when compiles is
      GCC
    * Makefile.am: add a new debian changelog entry when version or release
      changes, otherwise update time of the current entry

2001-07-13 Yeti <yeti@physics.muni.cz>
    * src/fileio.c, src/convert_recode.c: removed the no-buffering tricks
      making it slightly faster on modern GNU/Linux, but much slower everywhere
      else
    * src/EVERYTHING: put back the #ifdef HAVE_CONFIG_H stuff
    * src/texts.c: fixed typo expand_char() -> fputc() in poor man's compress
    * src/common.c: added const to stpcpy() *p declaration to keep qualifiers
    * m4/pager.m4, Makefile.am, configure.in, src/texts.c: test whether less
      accepts -F, possibility to disable pager at all

v0.9.2
2001-07-13 Yeti <yeti@physics.muni.cz>
    * src/guess.c: fixed reporting `7bit ASCII characters' after a successfull
      detection of a 7bit encoding (TeX, UTF-7)
    * src/convert_recode.c: fixed typo HAVE_RECODEEXT_H -> HAVE_RECODEXT_H

2001-07-12 Yeti <yeti@physics.muni.cz>
    * src/filters.c: fixed hdata->eid's comparsion before their initialization
      in lang_hook_2cs() (so the hook was never run)
    * src/convert_recode.c: more correct handling of the situation when we
      realise we cannot seek in temporary file during recode failure recovery
    * debian/Makefile.am, m4/Makefile.am, Makefile.am, configure.in: removed
      the first two, debian/ generated by toplevel Makefile, m4/ is just
      distributed
    * Makefile.am, src/Makefile.am: replaced $< with literal file names, some
      `make's don't always substitute first dependence name
    * src/epress.c: added program_name definition to placate librecode
    * src/common.h: stdlib.h and unistd.h are included unconditionally (we
      depend on them anyway)
    * src/texts.c: replaced the `is pager less?' test with a better one
    * configure.in, acconfig.h, m4/EVERYTHING: put descriptions directly to
      AC_DEFINE[_UNQUOTED]'s, almost get rid of acconfig.h
    * src/EVERYTHING: don't trust make passing `-DHAVE_CONFIG_H -I..' to
      compiler, #include "../config.h" unconditionally (we depend on it anyway)

2001-07-10 Yeti <yeti@physics.muni.cz>
    * debian/, Makefile.am: created debian/ and modified the Makefile.am to
      include it

2001-07-09 Yeti <yeti@physics.muni.cz>
    * configure.in, enca.spec.in: added MAINTAINER variable which can be used
      in rpm spec and debian/ files
    * src/texts.c: fixed wrong prototype putchar() -> expand_char() when
      no compressor is available
    * src/texts.c, acconfig.h, configure.in: compressed texts are displayed
      through a pager (if available)
    * autogen.sh, README.devel: added and make a note about it

v0.9.1
2001-06-25 Yeti <yeti@physics.muni.cz>
    * src/guess.c: fixed possible overflow in UCS-4 test (slightly changing
      what gets recognized as UCS-4)
    * src/guess.c: implemented unusual byteorders (3412 and 2143) tests using
      a single little-endian ucs-4 test what_if_it_was_ucs4() and shuffling
      bytes around shuffle_byte_order(), the same for UCS-4 EOL type tests
    * src/common.h: defined PVAR(f, v) [for debugging]
    * updated docs
    * packaged

2001-06-24 Yeti <yeti@physics.muni.cz>
    * src/encnames.h, src/encnames.c, src/guess.c: renamed SURF_PER_12[34] to
      more logical SURF_PER_[43]21

2001-06-02 Yeti <yeti@physics.muni.cz>
    * src/efilter.c, src/Makefile.am, src/texts.c, src/common.h: created
      efilter.c (filter making text files to compress better) and adding
      reverse filter to texts.c
    * m4/tolower.m4, configure.in, acconfig.h, src/common.h: define our own
      implementation of tolower and similar unconditionally
    * improved various docs
    * BUGS, Makefile.am: generated from manual page section of the same name
    * src/efilter.c, src/Makefile.am, src/texts.c, src/common.h: efilter was
      funny experiment but not much useful, removed again

2001-06-01 Yeti <yeti@physics.muni.cz>
    * src/getopt.c, src/getopt1.c, src/getopt_long.c, src/Makefile.am: removed
      the first two and made getopt_long.c non-generated, removed some unneeded
      stuff
    * src/common.c: put broken-{m,c,re}alloc fixes into conditionals (but no
      autoconf tests---I don't believe such a broken systems really do exist)

2001-05-28 Yeti <yeti@physics.muni.cz>
    * src/options.c: fixed prepend_env() segfault, improved diagnostics
    * revised temporary files usage, removed `/tmp bug' from docs
    * convert.c, convert_iconv.c, convert_recode.c: renamed tmpfile variable
      (synonymous to ISO function name) to tempfile, better not to tempt fate
    * script/b-map, script/b-cstocs, script/b-recode: added umask 077

2001-05-27 Yeti <yeti@physics.muni.cz>
    * src/encnames.c, src/encnames.h, man/enca.1: checks that all characters
      in charset/surface names are from some set of allowed characters
    * src/common.c: added hack for systems that fail on malloc(0) and similar

2001-05-20 Yeti <yeti@physics.muni.cz>
    * src/epress.c: forgotten [ISO C99] int16_t changed to int
    * src/filters.c, src/filters.h: added universal decide-between-2-cs hook
    * src/lang_cs.c, src/lang_sk.c: modified to use the universal hook,
      some formal changes
    * src/lang_ru.c: added maccyr/cp1251 hook (via the universal)
    * src/common.h, src/enca.c: sensible exit code (0, 1 or 2) returned
    * src/convert.c: convert() returns ERR_* error codes instead of just 0, 1
    * src/common.c, src/convert.c, src/convert_iconv.c, src/encnames.c,
      src/fileio.c, src/lang.c, src/locale_detect.c, src/options.c,
      src/texts.c: returned 2 on troubles
    * updated docs

2001-05-18 Yeti <yeti@physics.muni.cz>
    * src/license.c, src/license.h, src/texts.c, src/texts.h: renamed the
      former to the latter
    * src/epress.c, src/texts.c: implemented bzip2 and gz interface
    * m4/compress.m4, configure.in: added tests for libbz2 and libz, the best
      one found is used
    * configure.in, src/Makefile.am, src/options.c: COPYING.c and HELP.c are
      generated by epress and just linked with enca
    * src/Makefile.am: put getopt_long.c into BUILT_SOURCES
    * src/lang_ru.c, src/unicodemap.c, src/encnames.c: added maccyr charset
    * Makefile.am: added hook to delete BUILT_SOURCES before making dist

2001-05-17 Yeti <yeti@physics.muni.cz>
    * src/fileio.c: temporary files are created with umask 077

2001-05-06 Yeti <yeti@physics.muni.cz>
    * src/epress.c, src/COPYING.h, src/Makefile.am: created license compressor
    * src/license.c, src/options.c: license decompression and printing

2001-05-01 Yeti <yeti@physics.muni.cz>
    * m4/librecode.m4, m4/recode-bugs.m4, m4/long-text.l2: put test for bugs to
      recode-bugs.m4 (four bugs are checked, any will launch the warning)

2001-04-12 Yeti <yeti@physics.muni.cz>
    * m4/librecode.m4, configure.in: added a test for broken recode (no
      workaround [known], just prints a big warning message)

v0.9.0
2001-03-26 Yeti <yeti@physics.muni.cz>
    * just packaged

2001-03-25 Yeti <yeti@physics.muni.cz>
    * src/convert.c: fixed reading only first file block in copy_and_convert()
    * configure.in, src/EVERYTHING: memory.h test added, string/strings/memory
      header file inclusion put into common.h
    * src/fileio.c: fixed file_setvbuf() and file_open() (not enough magic)
    * src/convert_recode.c: fixed not opening original file
    * configure.in, src/convert_recode.c: added recodext.h test, is used when
      available for setting diacritics_only and ascii_graphics flags
    * src/convert_iconv.c: fixed not opening original file
    * src/convert_iconv.c: fixed writing no output in iconv_one_step()
    * src/convert.c: fixed intermixed child and parent process in
      convert_external()
    * src/fileio.c: added file_getline() requiring much less system calls
      than GNU libc's fgets()
    * src/locale_detect.c: fixed segfault when language detection failed
    * m4/tools.m4, configure.in, acconfig.h, src/options.c: consolidated
      autoconf macros regarding external converters
    * man/enca.1: minor corrections

2001-03-24 Yeti <yeti@physics.muni.cz>
    * src/encnames.c: added quoted printable surface
    * src/guess.c: integrated quoted printable into the guessing process
    * src/encnames.c, src/options.c: added print_public_surfaces() wrapper to
      allow printing --human-readable list of surfaces
    * src/lang_cs.c, src/lang_ru.c, src/lang_sk.c: replaced slovak and russian
      statistical data with some new (hope better), some hardcoded array sizes
      now computed from sizeof()
    * iconvcap.c: cosmetical changes

2001-03-20 Yeti <yeti@physics.muni.cz>
    * src/fileio.c, src/fileio.h, src/common.c, src/common.h: T_Buffer type
      moved from fileio to common
    * src/lang.c, src/lang.h, src/lang_cs.c, src/lang_ru.c, src/lang_sk.c:
      use the new T_Buffer type
    * configure.in: removed now-unused tests
    * src/EVERYTHING: removed redundant header inclusion, ensured satisfying
      header dependencies, try to use strings.h when string.h is not avaialble
    * src/guess.c: fixed not initializing memory buffer
    * src/options.c: exchagned -E and -C option letters (incompatibility!)
    * src/guess.c: implemented quoted printable recognition (unused now)

2001-03-19 Yeti <yeti@physics.muni.cz>
    * src/fileio.c, src/fileio.h: some more magic employed, only initiated
      can use them now
    * src/convert.c, src/convert_iconv.c, src/convert_recode.c, src/lang.c:
      changed to use the new file i/o interface
    * src/convert_iconv.c: fixed a memory leak

2001-03-18 Yeti <yeti@physics.muni.cz>
    * src/fileio.c, src/fileio.h: finished implementation
    * src/common.c, src/common.h: removed stuff belonging to fileio
    * src/locale_detect.c, src/guess.c, src.guess.h, src/lang.h, src/enca.c,
      src/convert.h: changed to use the new file i/o interface
    * src/guess.c: UCS tests check remainder of file length instead of buffer
      position (which is still used as a fallback in case of stdin)

2001-03-17 Yeti <yeti@physics.muni.cz>
    * configure.in, script/b-cstocs, script/b-cstocs.in, script/b-map,
      script/b-map.in, script/b-recode, script/b-recode.in, script/Makefile.am:
      (I'm stupid) reverted the last change
    * src/fileio.c, src/fileio.h: created (unique file i/o interface, at last)

2001-03-12 Yeti <yeti@physics.muni.cz>
    * m4/tools.m4: AC_MSG_WARN is used to print warnings
    * m4/iconv.m4: iconvenc.h is always created (the dark side is that iconv
      usability is no longer cached)
    * m4/tools.m4, configure.in, script/b-cstocs, script/b-cstocs.in,
      script/b-map, script/b-map.in, script/b-recode, script/b-recode.in,
      script/Makefile.am: external converters are located including path and
      it's then used for configure-time substitution in the scripts

v0.9.0pre5
2001-03-12 Yeti <yeti@physics.muni.cz>
    * src/common.h, src/common.c, src/encnames.h, src/guess.c, src/options.c,
      src/printresult.c, src/convert.c: eliminated rest of Settings, replaced
      by module methods, except read_limit which is still global
    * enca.spec.in: various improvements (see the spec file changelog)

2001-03-11 Yeti <yeti@physics.muni.cz>
    * src/EVERYTHING: Settings.ProgName and Settings.Verbose made globals:
      program_name and verbosity_level
    * src/common.h, src/options.c, src/convert.c: Settings.ExtConverter made
      convert.c module global extern_converter, set by set_external_converter()
    * src/common.h, src/options.c, src/printresult.c: Settings.PreFName made
      printresult.c module global extern_converter, set by
      print_set_prefix_filename()

2001-03-10 Yeti <yeti@physics.muni.cz>
    * enca.spec.in: use global cache file

2001-03-09 Yeti <yeti@physics.muni.cz>
    * Makefile.am: (generated!) enca.spec included to distribution (rpm -tb)

2001-03-02 Yeti <yeti@physics.muni.cz>
    * man/enca.1: spell-checked
    * src/options.c: corrected available lists in --list= help

2001-02-28 Yeti <yeti@physics.muni.cz>
    * src/lang.c: language is printed in lang_init() when verbose
    * src/guess.c: all Latin, Cyrillic and Greek letters have equal weight in
      UCS-2 and UCS-4 tests
    * src/guess.c: fixed bad default endianess and initial makes-sense-check in
      UCS-4 test
    * src/printresult.c: UCS-* rating is printed, too

v0.9.0pre4
2001-02-26 Yeti <yeti@physics.muni.cz>
    * just packaged

2001-02-25 Yeti <yeti@physics.muni.cz>
    * src/options.c, src/encnames.c, src/printresult.c: conversion from output
      type to what-name is done in encnames.c, introduced new output types
      and what-names ALIASES and NONE, --name=aliases prints list of aliases,
      removed --list=aliases, --list=encodings is sensitive to value of --name=
      instead, --list=names lists all valid --name= values, default output type
      is now NONE (initialized after option processing when needed)
    * updated rest of docs
    * configure.in, m4/libm.m4: fixed `make install' fail due to dependance on
      libtool: get rid of libtool dependance, created our own math library
      test

2001-02-24 Yeti <yeti@physics.muni.cz>
    * configure.in, acinclude.m4, m4/: removed acinclude.m4, created m4 dir and
      put the definitions there

v0.9.0pre3
2001-02-23 Yeti <yeti@physics.muni.cz>
    * src/options.c: added --list=lists listing
    * NEWS: updated
    * man/enca.1: partly updated

2001-02-22 Yeti <yeti@physics.muni.cz>
    * configure.in: added feature and failure lists
    * acinclude.m4: cleanup, defined some *_ok variables for feature list,
      fixed some `! test ... = ...' to `test ... != ...'
    * srcipt/b-cstocs, srcipt/b-map, srcipt/b-recode: `#!/bin/bash' changed
      to `#! /bin/sh' (even if I'm not sure whether the scripts are 100%
      sh-compatible)
    * iconvcap.c: initial ASCII test changed back to ISO-8859-1 since the
      former is not supported on some systems (SunOS, IRIX, ...) having
      otherwise-usable iconv
    * src/getopt_long.c: generated from getopt.c and getopt1.c, but distributed
      (mainly because automake is unable to understand something we have in
      LIBOBJS can be generated...)

v0.9.0pre2
2001-02-22 Yeti <yeti@physics.muni.cz>
    * configure.in, src/Makefile.am: merged src/getopt.c and src/getopt1.c to
      src/getopt_long.c to allow simple AC_REPLACE_FUNC() be used for
      getopt_long optional build
    * acinclude.m4: simplified iconv test and added check for libiconv

2001-02-21 Yeti <yeti@physics.muni.cz>
    * Makefile.am: corrected iconvconf.h to iconvenc.h
    * src/options.c: fixed undefined and misused ENCA_ENV_VAR when we don't
      have wordexp() to parse it
    * acinclude.m4: iconvenc.h is always created since I'm not able to explain
      automake we don't need it when we don't have iconv

v0.9.0pre1
2001-02-20 Yeti <yeti@physics.muni.cz>
    * src/convert.c: trivial conversions from ASCII are carried out in built-in
      converter
    * src/EVERYTHING: cleaned terminology encoding vs. charset; encoding means
      (charset,surface) pair
    * src/options.c: converter names are case sensitive again
    * config.h is included only when HAVE_CONFIG_H
    * iconvenc.nul.h, acinclude.c, src/encnames.c: iconvenc.nul.h merged into
      encnames.c (neede only there when !HAVE_ICONV)
    * configure.in, src/getopt.c, src/getopt.h, src/getopt1.c, src/options.c:
      added GNU getopt so long options can be used everywhere (needs testing)
    * src/options.c: -m as complement to -M resets affected options to defaults

2001-02-19 Yeti <yeti@physics.muni.cz>
    * src/common.h, src/options.c, src/printresult.c: added iconv name output
      type, `-i' (only when HAVE_ICONV)
    * src/options.c: `-n' changed to `-e'
    * src/options.c: output types (except `-x') can be specified as -n NAME
    * iconvcap.c: updated for the new encodings and changed ICONV_ prefix to
      ICONV_NAME_, also changed the suffixes to pure alphanumeric, ISO-8859-1
      test changed to ASCII
    * src/convert_iconv.c: updated to the new encoding/surface model
    * src/guess.c: try to detect swapped UCS-2 from the first byte pair, too
    * src/options.c: pointer woodoo to comply ISO C in print_some_list(): one
      more level of indirection in abbreviation table data
    * src/options.c, src/encnames.c: iconv name output type defined always, but
      when iconv names are not available error message is printed instead
    * iconvconf.h, iconvenc.h: the former renamed to the latter
    * iconvenc.h.nul: created. contains all iconv names defined to NULL
    * acinclude.m4, src/encnames.c, src/convert_iconv.c: iconvenc.h is either
      successfully generated by iconvcap or copied from iconvenc.h.nul so it
      always exists and is always #included
    * configure.in, src/options.c: getopt.h test (defines getopt_long(), etc.)
    * src/common.c: expand_abbreviation() returns pointer to whole abbreviation
      structure so it's possible to fetch the expanded name, too; all callers
      changed
    * script/bcstocs, script/brecode, script/b-cstocs, script/b-recode: the
      first two renamed to the second two
    * script/b-map: created. perl `map' wrapper

2001-02-18 Yeti <yeti@physics.muni.cz>
    * src/common.c: e_tmpfd() now returns empty string a file name when fails
    * src/options.c: max read limit increased to 16MB
    * src/options.c: default converter list changed, now is
      "built-in,librecode" for +librecode-interface, [+-]iconv-interface
      "built-in,iconv" for -librecode-interface, +iconv-interface
      "built-in" for -librecode-interface, -iconv-interface
    * src/convert_recode.c: cleaned-up to use the new encoding/surface model
    * src/convert.c, src/convert_common.h, src/convert_recode.c: request
      formatting (either for printing or for recode requests) function
      format_request_string()
    * src/convert_recode.c: temporary copy of original file is not deleted
      when rescue of damaged original fails (what a paranoia!)
    * src/common.c: e_fopen() and e_fclose(), fopen() and fclose() wrappers,
      unsed in various places
    * src/EVERYTHING: perror(NULL) changed to perror("") since some C libraries
      don't understand the former to print empty prefix string
    * src/encnames.c, src/options.c: added `surfaces' to --list option
    * src/convert.c: valid converter names are printed one per line
    * src/encnames.c: added iconv name to T_EncInfo, all defined to NULL when
      iconv interface is not build
    * src/common.c: implemented abbreviation searching expand_abbreviation()
    * src/options.c: print_some_list() uses the new abbreviation engine
    * src/convert.c: add_converter() uses the new abbreviation engine (needed
      some data types shake-up)
    * src/lang.c: got rid of `initialization discards qualifier...' warnings
      by shaking up with the consts (no functionality changed)

2001-02-17 Yeti <yeti@physics.muni.cz>
    * src/common.h: surface type formalized to surfint (instead of uint16)
    * src/encnames.c: implemented surface <-> name conversion
    * src/encnames.c, src/guess.c: changed UCS surfaces to recode style
    * src/options.c, src/enca.c: updated parse_x_arg(), removed
      dull-converter-like beahviour
    * src/locale_detect.c: get rid of str[c]spn() (they are ISO C, but autoscan
      tries to convince me I should check for them), flag-table approach is
      more efficient anyway
    * src/common.c: commented out strstrcount() (not needed)
    * src/encnames.c, src/encnames.h: empty surface SURF_REMOVE (to get only
      "/" as surface name) (dirty)

2001-02-14 Yeti <yeti@physics.muni.cz>
    * src/options.c: option letter space polluted by various listing options
      cleaned by introducing --list=WORD (incompatible with previous -l usage)
    * src/encnames.c: print_encoding_aliases() prints list of accepted encoding
      aliases (`recode -l' style)
    * src/encnames.c: encodings sorted alphabetically (by canonical name)
    * src/lang.c, src/lang_cs.c, src/lang_sk.c, src/lang_ru.c: ability to
      print what regular encodings belong to this particular language

2001-02-12 Yeti <yeti@physics.muni.cz>
    * src/lang.c: fixed not initializing language filter report for language
      `none'
    * src/encnames.h, src/encnames.c: introduced ENCF_MULTI flag marking
      multibyte encodings
    * src/printresults: heavily improved details (but still misses surfaces)
    * src/options.c: file name is printed with details except when user
      specifically asks not to print it
    * src/options.c: help texts updated
    * src/encnames.c, src/printresults.c: cstocs names of encodings not known
      to it changed to ???, but still printed the same in details
    * src/defaults.h: removed. all definitions moved to appropriate C files
      (or common.h)
    * src/encnames.c, src/options.c, src/prinresult.c: removed option `-g'
    * src/encnames.c: presqueezed aliases replaced by normal, we now squeeze
      names when needed (with hashing it's OK), also changes canonical names
    * config.h.top, configure.in: removed the former and add -D_GNU_SOURCE
      directly to CFLAGS
    * configure.in: removed warnings
    * configure.in: integer type sizes tested only when system doesn't provide
      stdint.h (and int's default changed to ISO C minimum)
    * configure.in, acinclude.h: moved my tests to the latter (newly created)
      to make the former more readable
    * guess.c: TEX_* and UTF_* defines moved to appropriate functions (as const)
    * guess.c: fixed missing print_flags_or() for language hooks (from ????)

2001-02-11 Yeti <yeti@physics.muni.cz>
    * src/encnames.c: hashing is used to find encoding names
    * src/options.c: fixed not recognizing output encoding (from 2000-02-02)
    * src/unicodemap.c: `-l' prints each group on separate line

2001-02-10 Yeti <yeti@physics.muni.cz>
    * src/guess.c: handle correctly case when a language has only one encoding
    * src/guess.c: multibyte tests use count table for fast rejecting
    * src/guess.c: surface detection, eol_surface()

2001-02-08 Yeti <yeti@physics.muni.cz>
    * src/lang_ru.c, src/encnames.c, src/unicodemap.c: added IBM 866 charset
    * src/filters.h: made ibm866 filter alias to keybcs2 filter (they're
      identical)
    * src/guess.c: saved stdin is not restored and `up' is not recomputed when
      nothing was filtered out

2001-02-06 Yeti <yeti@physics.muni.cz>
    * src/detect_lang.c, src/locale_detect.c: renamed the former to the latter
    * src/filters.c, src/filters.h, src/lang_cs.c: first two created (language
      filter repository) and all box-drawing filters moved there
    * src/filters.c: added bow-draing filters for more encodings
    * src/common.h, src/options.c, src/printresult.c: implemented -n output
      type (prints `canonical' encoding name used internally in enca)
    * src/lang_sk.c, src/lang_sk.h, src/lang_ru.c, src/lang_ru.h, src/lang.c,
      src/encnames.c, src/unicodemap.c: added Slovak and Russian languages and
      appropriate encodings
    * src/unicodemap.c: introduced the idea of compatible encodings; LATIN2
      and CYRILLIC groups defined
    * all headers: revised header file dependencies
    * src/lang.c, src/locale_detect.c: implemented the notion of no
      language---when user sets language to `none' no regular encodings are
      processed (so when you say `-UL none' only pure ascii gets recognized)
    * src/options.c: fixed broken `-P' (an old bug)

2001-02-05 Yeti <yeti@physics.muni.cz>
    * src/lang.c, src/lang.h, src/lang_cs.c, src/lang_cs.h: created the first
      two and moved all regular encoding routines to them
    * src/options.c: implemented language settings (added Language to Settings)

2001-02-04 Yeti <yeti@physics.muni.cz>
    * src/unicodemap.c: is_subset_consistent() now uses translation table for
      checking
    * src/guess.c: incorporated multibyte encodings into the guessing process
    * src/guess.c: implemented an absolute likehood test of the applied to the
      relative winner

2001-02-03 Yeti <yeti@physics.muni.cz>
    * src/common.c, src/common.h: introduced type flagint for tables of flags
      (defined as short int), all callers changed
    * src/options.c: fixed accepting invalid option values, ReadLimit must be
      a multiple of 4 (to make UCS tests more reliable)
    * src/guess.c, src/printresult.c: added number of 8bit's (up) to details
    * src/guess.c: finished is_valid_utf8(), is_valid_utf7(), looks_like_tex(),
      looks_like_ucs2() and looks_like_ucs4() tests (except surfaces)

2001-02-02 Yeti <yeti@physics.muni.cz>
    * src/unicodemap.c: added many missing characters to maps
    * src/unicodemap.c: shortened maps by starting them from first character
      that doesn't map to itself
    * src/options.c: finally removed old dull-conversion syntax
    * src/options.c, configure.in: long `GNU style' options---when
      getopt_long() function is available, configure test added
    * src/options.c, configure.in: program_invocation_short_name is used when
      offered by system, otherwise strip_path() is used to make it
    * src/options.c, configure.in: value of environment variable ENCAOPT is
      prepended before command line options---when wordexp() function is
      available, configure test added

2001-02-01 Yeti <yeti@physics.muni.cz>
    * src/EVERYTHING: encoding are no longer identified by name, but integer
      eid is used; T_Encoding contains---beside eid---surface, but it's not
      used for anything yet
    * implemented name squeezing and alias recognition---almost any sensible
      (and a whole bunch of stupid) encoding identifier is recognized
    * introduced new, less stupid, `canonical' names---passed to external
      converter and looked-up faster than the others
    * src/guess.c, src/enca.c, src/printresult.c: result is passed as
      T_Encoding type
    * src/guess.c, src/printresults.c, src/lang_cs.c: print implemented as
      `object', guess details are fed by different functions when needed
      (no globals and circular dependencies anymore)
    * src/printresults.c: mapping from output type to encoding name is used
      instead of ugly switch ()
    * src/unicodemap.c: character 0xa4 from koi8cs2 converted to tilde (0x7f)
    * src/options.c: refuse to serve as a dull converter when input encoding
      is not known to us
    * src/common.c, configure.in: implemented stpcpy() when not provided by
      system (configure test added)
    * src/guess.c, src/enca.c: 7bit ascii is no longer discriminated and no
      longer causes enca return nonzero error code

2001-01-30 Yeti <yeti@physics.muni.cz>
    * src/langdata_cs.c, src/langhook_cs.c, src/lang_cs.c: the first two merged
      to the third containing [almost?] all language specific stuff

2001-01-29 Yeti <yeti@physics.muni.cz>
    * src/encnames.c: created. (language independent encoding name handling)

2001-01-28 Yeti <yeti@physics.muni.cz>
    * src/common.h, configure.in: tests for stdint.h and integer type sizes
      used to define uint16 and uint32
    * src/unicodemap.c: changed map storage type to uint16 thus saving several
      kilobytes, removed need for an empty last table
    * src/guess.c: added looks_like_ucs2(), looks_like_ucs4() and partially
      looks_like_utf7()

2001-01-27 Yeti <yeti@physics.muni.cz>
    * src/guess:c reimplemented look_like_TeX() in a more efficient way
    * src/EVERYTHING: static file globals used only in one function moved into
      the appropriate function
    * man/enca.1: made more human readable, different macros are used

2001-01-26 Yeti <yeti@physics.muni.cz>
    * src/detect_lang.c, src/detect_lang.h: detect_lang() accepts string
      parameter now
    * src/guess.c: implemented utf-8 parse test is_valid_utf8() and
      (La)TeX-encoded accents test look_like_TeX()

2001-01-25 Yeti <yeti@physics.muni.cz>
    * src/detect_lang.c, src/detect_lang.h, src/Makefile.am, src/defaults.h:
      guessing user's preferred language from locale (not used yet)
    * configure.in, acconfig.h: implemented check for locale.alias

v0.7.7
2001-01-01 Yeti <yeti@physics.muni.cz>
    * e_read4() now consistently sets number of bytes in buffer to zero even
      when reading of zero bytes is requested (seems to break nothing, but...)
    * documentation synchronized

2000-12-31 Yeti <yeti@physics.muni.cz>
    * `none' is accepted as converter name and causes clearing the converter
      list
    * finished iconv interface
    * changed some messages, hope no one parses them
    * ssize_t availability checked by configure

2000-11-29 Yeti <yeti@physics.muni.cz>
    * long long int availability is now explicitely checked by configure
    * unsigned char -> byte
    * implemented e_write4() and e_read4() that allow to specify buffer address
      and size (e_read_with_limit replaced by e_read4())
    * fixed files closed twice in copy_and_convert()
    * fixed bad return value tests for e_read() and e_write() in
      copy_and_convert()
    * implemented iconv_one_step() and enc_trans() for iconv, so it is almost
      usable on iconv-transitive (GNU) systems now

2000-11-28 Yeti <yeti@physics.muni.cz>
    * iconv transitivity is now explicitely checked by iconvcap instead of
      checking for gconv

2000-11-26 Yeti <yeti@physics.muni.cz>
    * misspelled `Europian' corrected to `European' in macce long name

2000-11-21 Yeti <yeti@physics.muni.cz>
    * fixed some nonsubstantial stuff, redundant #includes, docs and comments
      forgotten in too hastily released v0.7.6
    * convert_iconv.c separated from convert.c

v0.7.6
2000-11-20 Yeti <yeti@physics.muni.cz>
    * unicode mapping data made NULL terminated instead of fixed-length
    * discovered bug in gcc :-(
    * all upper-half-of-ascii structures promoted to 256 characters (too many
      changes to record here)
    * support for cork encoding ceased
    * help text updated and divided to sections (thus fixing warning about
      too long, ISO C violating, string)
    * get_in_enc_list() and get_converters() changed to print_* printing the
      lists, called directly from process_opt()
    * convert_recode.c separated from convert.c to make the amount of #if's
      bearable
    * encoding list made NULL terminated instead of fixed-length
    * reversed order of generating recoding table so, character with lowest
      8bit code is always outputed for synonyms (instead of highest)
    * implemented converter flags CONV_EXTERN, we do not try to recover after
      external converter failure, since it's impossible by definition
    * xlat table cache bubble sorting on use
    * man page and other documentation synchronized

2000-11-19 Yeti <yeti@physics.muni.cz>
    * a simple test suite introduced in test/ (not distributed)
    * fixed stupid || -> && bug in e_close() causing failure in pipes
    * copy_and_convert() now processes what is saved in io_buffer always when
      called on stdin (not only when recoding is done too), this fixes bug in
      conversion to the same encoding in pipe
    * fixed comparing return value of e_tmpfd() with zero (instead of -1)
      causing not calling external converter in redirection
    * stdin is always copied to stdout when we are not able to perform
      conversion, irregardles of reason
    * some error messages improved

2000-11-18 Yeti <yeti@physics.muni.cz>
    * it's up to every converter to translate cstocs encoding names to its
      native names---implemented recode's enc_trans(), others use cstocs
    * rearranged converters to work in any order as expected, implemented ERR_*
      (internal) error codes in convert.c
    * implemented -c printing list of all valid converter names
      (get_converters())
    * implemented e_tolower that cannot fail (and appropriate autoconf test)
    * split process_opt() to make less monster from it
    * error messages begin with enca file name without path (strip_path())
    * some preliminary iconv support, the converter doesn't actually exist yet
    * errorneous values of most commandline parametres no longer cause enca to
      abort
    * request cache bubble sorting on use

2000-11-16 Yeti <yeti@physics.muni.cz>
    * fixed destroying outer and request after every use
    * implemented librecode request chache optimization
    * implemented e_unlink()
    * any converter combination/order can be specified on command line with
      -E option (meaning changed!)
    * external converter failure made non-fatal

2000-11-14 Yeti <yeti@physics.muni.cz>
    * bcstocs and brecode return exit status and message is printed when it
      fails

2000-11-05 Yeti <yeti@physics.muni.cz>
    * made iconv configure test, all configure results are cached

2000-10-31 Yeti <yeti@physics.muni.cz>
    * config.h is always included first (even before system headers)

2000-10-30 Yeti <yeti@physics.muni.cz>
    * fixed freeing not allocated request in convert_recode()
    * implemented some more verbosity in converter
    * strstr() alternative moved to common.c
    * implemented strstrcount() conting occurences of needle
    * '/' is added after both in_enc and out_enc when creating recode request
      string, partially helps with touchy librecode, but sometimes it fails
      anyway
    * monstrous convert_recode() split to several functions, nevertheless
      remains monstrous

2000-10-25 Yeti <yeti@physics.muni.cz>
    * more autoconf madness

v0.7.5
2000-10-25 Yeti <yeti@physics.muni.cz>
    * strstr() defined in options.c when not provided by system library

2000-10-22 Yeti <yeti@physics.muni.cz>
    * copying policy changed to GNU/GPL version 2, explicitely, instead of
      version 2 or any later version
    * librecode autoabort feature finally disabled
    * fixed request cache initialization bug
    * fixed O_RDONLY zero/nonzero portability problem
    * convert_recode() restores file from temporary copy when librecode
      converter fails
    * encoding names are not duplicated but assigned in get_encodings()
    * heavy use of const modifier (too many changes to record here)
    * solved cyclic dependancy between langdata and langhook headers by making
      hookdata plain pointer (i.e. void*) and moving T_HookData definition
      to .c file

2000-10-18 Yeti <yeti@physics.muni.cz>
    * removed ffname_[rw]() filename wrapper in cases we cannot get stdin/stdout
      (like e_lseek())
    * stdin/stdout is internally passed as NULL (instead of empty string) so
      one can no longer call enca '' '' to make it wait for several stdin's
    * return values of recode_new_outer() and recode_new_request() are checked
    * implemented librecode request caching, outer is now global and new
      request_cache too, neverhteless caching strategy is poor
    * implemented e_strdup() (strdup()) is not ISO/POSIX) and heavily used
      instead of strlen/malloc/strcpy sequences

2000-10-15 Yeti <yeti@physics.muni.cz>
    * fixed closing stderr in e_close() (though calling it with filedescriptor 2
      would be bug anyway)
    * cleaned types of variables library functions are called with
      (unsigned long int -> size_t, etc.)
    * unsigned long long int is used when available for weight/occurence
      computations, mathint type introduced
    * cleaned names possibly conflicting with POSIX reserved names and libc
      header reserved names
    * recode_scan_request() return value is now checked for success
    * fails back to external converter when librecode cannot convert due to
      errorneous request (as one would understand from man page)
    * prints error message when conversion is impossible
    * merged all file-copying code in convert.c to copy_and_convert(),
      convert_internal_stdin() optimized out of existence
    * return codes in convert.c changed, -1 is now returned as error code only
      by low level i/o from common.c
    * get/generate_xtable() are no longer able to generate identity (not needed)

2000-10-14 Yeti <yeti@physics.muni.cz>
    * cleaned some T_GResult.boxout residua
    * addresses of language filter/hook reports printing functions passed in
      T_GResult
    * some #include <...> corrected to "..." for local files
    * corrected filter reports in SMS mode

2000-10-13 Yeti <yeti@physics.muni.cz>
    * binary filter is more drastic, requires BIN_MIN_TEXT_CHAR letters
      (instead of non-binary characters) to switch back to text mode

v0.7.4
2000-10-11 Yeti <yeti@physics.muni.cz>
    * fixed behaviour in SMS mode (mismatched if([!]Settings.SMSMode); might
      even cause coredumps?)
    * implemented box-drawing character filter filter_boxdraw_out() and put it
      into langdata_cz.c, again with interface lang_filter(); not run in SMS
      mode (printresults.c updated accordingly)

v0.7.3
2000-10-08/09 Yeti <yeti@physics.muni.cz>
    * fixed reading only 4096 bytes from pipe (by a crude way, even if trying to
      lower number of system calls as much as possible) from 0.7.1
    * regenerated data (hope last time) and realized pair/... based guessing
      is nonsense
    * implemented filter that filters out blocks of probably binary data (stdin
      is saved when conversion is required), filter_binary_out() number of
      filtered characters is printed by -d
    * stdin is copied to stdout when its encoding is unknown (much more logical,
      but can break existing scripts)

v0.7.2
2000-10-05 Yeti <yeti@physics.muni.cz>
    * corrected F_EMPTY message (F_EMPTY now really means file is empty)
    * second best is marked in -d output by `-' (added p_esec to T_GResult)

2000-10-04 Yeti <yeti@physics.muni.cz>
    * *_cs filenames corrected to *_cz (Czechoslovakian -> Czech)
    * lang_hook() divided to interface lang_hook() and lang_hook_stz() doing
      the real work (preparation for more langhooks)
    * information about active language hooks saved in active_hooks (for
      printing)
    * perhaps solved language hook info printing dependency (when -d): new
      function print_lang_hook_data() is defined directly in langhook_cz and
      called in print_results

2000-10-02/03 Yeti <yeti@physics.muni.cz>
    * recoding chains made possible by starting -x parameter with `..'
    * BSD [s]random() changed to ISO [s]rand()
    * fixed all remaining warnings except 1.4 kB long string containing help
      text (compile tried with -Werror -Wall -pedantic -ansi
      -Wstrict-prototypes -Wmissing-prototypes -Wmissing-declarations
      -Wnested-externs)

v0.7.1
2000-10-01 Yeti <yeti@physics.muni.cz>
    * moved to low level i/o: e_fopen() changed to e_open(), etc., e_write(),
      etc. introduced, convert_die() abadoned
    * return codes slightly changed to distinguish between guessing failure
      and i/o failure
    * get_xtable() and generate_xtable() changed to be able to generate identity
      (that is then used in convert_internal_stdin())
    * not all i/o failures cause aborting
    * documentation improvements and corrections, as usual

2000-09-30 Yeti <yeti@physics.muni.cz>
    * temporary file creation is tried 3x and existing temporary files are not
      overwirtten

v0.7.0
2000-09-25/26 Yeti <yeti@physics.muni.cz>
    * removed option `disable external converter' (-e), empty -C parameter
      can be used instead
    * e_tmpf() divided to e_tmpf() creating the file and e_tmpfname() generating
      temporary file name
    * fixed memory leak (not freeing tmpfname) in convert_recode() and
      convert_external()
    * man page updated

2000-09-24/25 Yeti <yeti@physics.muni.cz>
    * fixed io_pos == 0 bug when enca converts stdin as dull converter
    * unicode.* renamed to unicodemap.*
    * -x encoding separator changed to .. to be compatible with recode and
      comply RFC 1345 (allowing comma in encoding names)
    * multiple .. allowed in -x argument to make possible specify recode chains
      (but only recode understand them)
    * ffname() divided to ffname_r() and ffname_w(), one returns stdin name one
      stdout name
    * implemented convert_recode() converting via recode library
    * conditionaly added program_name and other stuff requred by librecode
    * == changed to = in bcstocs and brecode to make them work in older bash
    * conversion to the same encoding no longer causes warnings
    * conversion to the same encoding works correctly even for stdin
    * ascii no longer considered unknown encoding
    * introduced verbose option (-V), converter now prints what is doing on
      -V not on -p
    * librecode interface _disabled_ by default in configure.in

2000-09-23/24 Yeti <yeti@physics.muni.cz>
    * two underscores removed from begin (and end) of #defines to comply ISO C
    * guess read buffer and convert read/write buffer merged (the same applies
      to BUFFER_SIZE and Settings.ReadLimit) and this io_buffer made persistent
      (created by new functions enca_init(), destroyed by enca_done()) so
      information from stdin does not get lost
    * user specified read limit is rounded up to nearest multiple of 16
    * convert_internal() splitted to convert_internal_file() and
      convert_internal_stdin(), that converts stdin to stdout
    * introduced e_tmpf() creating temporary files since none of glibc functions
      does The Right Thing (execept maybe non-POSIX tempnam())
    * convert_external() creates temporary file and put stdin there if stdin is
      to be converted and passes `-' as fourth parameter to converter
      instructing it to send output to stdout
    * bcstocs and brecode rewritten to recognize the fourth parameter and put
      under GNU GPL
    * a new output type OT_ALIAS (option -g) introduced that lists all known
      aliases and -f does approximately the same as in 0.6 serie again
    * resloved strange dependencies between langdata and langhook
    * fixed e_tmpf() passing-by-value bug
    * encoding names specified as -x parameters are converted to lowercase
    * fixed terrible typo || -> && in bcstocs and brecode

2000-09-22/23 Yeti <yeti@physics.muni.cz>
    * introduced recode wrapper script, brecode
    * introduced is_subset_consistent() checking if characters have the same
      meaning in two encodings (unfortunately makes guess.c dependent on
      unicode.h)
    * implemented -M (by function sms_hook())
    * activation and usefulness of sms_hook() reported by -d
    * added Cork encoding to unicode.c to make -M useful (but conversion from/to
      Cork is still quite bad, and should be done by cstocs/librecode only)
    * implemented e_malloc(), e_calloc() and e_realloc() aborting on failure,
      declared free() in common.h, defined NEW() allocator [this one is really
      braindead]

2000-09-21/22 Yeti <yeti@physics.muni.cz>
    * fixed not-initalizing-encoding-table coredump
    * added new output type OT_RFC1345 (option -r), some OT's renamed
    * added -r and -M options (-M accepted, but not implemented yet)
    * prefixing with filename is now on by default when run on more than one
      file
    * added RFC 1345 names and in consequence renamed name* memebers of
      S_EncRaw and S_EncStat to keep namespace consistent
    * much more (in fact all known) aliases listed in full names -- maybe too
      many
    * in detailed output is now file name printed on the top and cstocs and RFC
      1345 names are printed separately in (bottom) result part
    * hook name is not fixed, but part of langdata_cs.c (still not very clean,
      though)

2000-09-17/18 Yeti <yeti@physics.muni.cz>
    * moved to autoconf/automake (not respected by the C sources yet)
    * reorganized to deep package
    * fixed `cd . && pwd` bug in automake :-(
    * old config.h renamed to defaults.h
    * rawdata.c and rawuni.c merged with encdata.c and encuni.c mainly to avoid
      problems with automake
    * bcstocs now prints error message when it fails, to make things clear
    * encopt* renamed to options*, encuni* to unicode* and encdata* to
      langdata*
    * enca.c split to convert.c, guess.c, printresult.c and langhook.c,
      header files introduced, some functions renamed and their parameters
      changed (too many changes to list here)
      (greetings to Halef)
    * process_file() now only controls what actions should be taken and no
      longer does anything itself
    * print_results() no longer calls converter, this is done in process_file()
    * results of guessing passed encapsulated in struct S_GResult
    * language specific files (lang*) got _cs extension
    * HELP_TEXT and VERSION_TEXT defined as strings instead of macros
    * common stuff moved to common.c/common.h
      [enca now compiles but doesn't work yet]

v0.6.2
2000-08-17 Yeti <yeti@physics.muni.cz>
    * help texts (-h and -v) improved, thanx to Halef
    * some other minor changes in docs

v0.6.1
2000-08-15 Yeti <yeti@physics.muni.cz>
    * tarball repacked with files encuni.c, rawuni.c, rawuni.h missing in
      0.6.0 tarball
    * bcstocs magic line changed to #!/bin/bash
    * TODO updated to reflect current work on 0.7

v0.6.0
2000-07-20 Yeti <yeti@physics.muni.cz>
    * formal changes in rawdata.c
    * internal converter implemented (rawuni.c, encuni.c, enca.c)
    * -x can now take form -x in_enc,out_enc
    * introduced options -e and -E
    * introduced option -l
    * READLIMIT_MAX changed back to 1MB
    * man page improved(?)

v0.5.0
2000-07-17 Yeti<yeti@physics.muni.cz>
    * waits for converter to return (much slower conversion, but doesn't
      produce `cannot fork()'s)
    * -p makes -x print what is doing
    * fixed `Unrecognized encoding' when winner is 1250 (from 0.4.3)
    * _exit() in converter caller corrected to exit() since we don't use
      vfork()
    * use EXIT_SUCCESS and EXIT_FAILURE instead of 0 and 1
    * aborts when it cannot close open file (since it means something very
      bad is happening)
    * added forgotten z-with-check to il2/1250 hack
    * il2/1250 hack put to separate function
    * (minimalistic) config.h introduced
    * READLIMIT_MAX put to config.h and changed to 4MB
    * recomputed statistical data (probably not the last time)
    * also other defaults put to config.h
    * corrected -d table alignment
    * fixed not initializing significancy table
    * added -f to cp and rm in Makefile
    * some other code clean-ups

v0.4.3
2000-07-14 Yeti <yeti@physics.muni.cz>
    * corrected short encoding name t1 -> cork
    * corrected some dividing by zero resulting inf/nan rating
    * il2/1250 hack made more logical
    * -d prints encodings alphabetically sorted
    * significancy table is computed only once

v0.4.2
2000-07-13 Yeti <yeti@physics.muni.cz>
    * removed options -m/-M since it's nonsense to maintain something marked
      `do not use' in man page
    * -p now shows stdin as <STDIN>, instead of empty string
    * ascii and ??? made `encodings'
    * bcstocs doesn't depend on mktemp
    * some other code clean-ups

v0.4.1
2000-07-12 Yeti <yeti@physics.muni.cz>
    * silly default of 60 significant characters changed to 10
    * minor bugfixes and corrections

v0.4.0
2000-07-10 Yeti <yeti@physics.muni.cz>
    * rewritten from scratch in ISO C
