             Laurent Constantin's network library (netwib)


            ----------------------------------------------
            |              NETWIB 's CHANGELOG           |
            ----------------------------------------------


---------------------------------------------------------------------
Version 5.4.0 - 28-Oct-2003

 ++ bugs fixed ++
    None in this version

 ++ major evolutions ++
  - Function netwib_buf_append_char was renamed to
    netwib_buf_append_byte.
  - Function netwib_io_init_sock_tcp_ser is no more blocking
    awaiting for a client to connect. Function netwib_io_wait can
    now be used for waiting.

 ++ minor evolutions ++
  - Support for gcc 3.3.2 (and others) having -fstrict-aliasing in
    default O2 optimization. Flag -fno-strict-aliasing is now set.
    Note: ISO C changed to be more strict. However, this leads to
    complex code when two types are not exactly the same (forced
    usage of unions instead of cast). The major problem for netwib
    is allocator functions and ring/hash functions. Those functions
    are clean (there is no bug) but when the compiler optimize them,
    it introduce bugs... After looking around to see how other
    projects are dealing with this, I found that most of them are
    desactivating the optimization functionality. So, I'll do as my
    friends : gcc -O2 -fno-strict-aliasing.
  - Function netwib_dir_next now returns canonized filenames.
  - Creation of function netwib_unix_symlink.

 ++ internal evolutions (not seen by end users) ++
  - Under Windows, function LoadLibrary is now wrapped in a common
    function searching in system directories first. This is better
    for users loading netwib at run time, but it does not help
    when a program, such as netwox, is linked with netwib.
  - Several files contained tabulations instead of spaces.


---------------------------------------------------------------------
Version 5.3.0 - 19-Oct-2003

 ++ bugs fixed ++
  - Under Windows, functions netwib_filename_rename and
    netwib_dirname_rename did not work if destination file previously
    existed. This bug is the same as the one corrected in 5.2.0. This
    is not really clear to me, nor in msdn documentation, but rename
    can return errno EEXIST or EACCES depending on context. So now I
    just hope all error cases are checked :)
  - In functions displaying packets, if an header is not decoded,
    it is printed as data. However, a transition was not printed in
    this case. So, a space or a newline was not printed between the
    header and the data.
  - UDP header decoding had an useless/invalid test causing valid
    headers to be rejected.

 ++ major evolutions ++
  - A netwib_buf can be configured using a bitfield. A new kind of
    buffer management is provided : if an external array is too
    short, an allocated memory is used instead.
  - Several performance improvements in sys/io module.

 ++ minor evolutions ++
  - Creation of functions netwib_buf_append_pkt_data and
    netwib_pkt_data_display.
  - In netwib_localtime, a new parameter, named zoneoffset,
    corresponds to offset between localtime and GMT.

 ++ internal evolutions (not seen by end users) ++
  - Use of the new feature provided by dat/buf module.
  - Use of the new functionalities provided by sys/io module.


---------------------------------------------------------------------
Version 5.2.0 - 05-Oct-2003

 ++ bugs fixed ++
  - Under Windows, functions netwib_filename_rename and
    netwib_dirname_rename did not work if destination file previously
    existed.
  - In function netwib_threadlist_wait, when waiting for an infinite
    time (NETWIB_TIME_INFINITE), parameter pevent was not set.
  - In function netwib_io_init_sock, there was a memory leak if
    the socket could not be opened.

 ++ major evolutions ++
    None in this version

 ++ minor evolutions ++
  - Function netwib_buf_append_rand have two mode parameters.
    Creation of defines netwib_uint32_init_rand_all and
    netwib_buf_append_rand_all.
  - Function netwib_buf_init_ext_text can now be initialized
    with a NULL pointer. It will store an empty buffer.

 ++ internal evolutions (not seen by end users) ++
    None in this version


---------------------------------------------------------------------
Version 5.1.0 - 23-Sep-2003

 ++ bugs fixed ++
  - Functions netwib_c_memmem, netwib_c_strcasecmp,
    netwib_c_strcasestr and netwib_c_strncasecmp were not exported
    in netwib51.dll. So, they were not available under Windows.
  - In netwib-doc_html, links were missing in section files, so
    it was not possible to naviguate in the different modules.
  - Function netwib_eth_init_ip always returned NETWIB_ERR_OK (even
    if address was not resolved).
  - When not called after a configuration function, functions
    netwib_eth_init_ip and netwib_ip_init_eth could not resolve
    address of a local device.
  - Under Linux, netwib_ips_add_buf could not add the local
    IP address (because getaddrinfo also returned an AF_UNIX).
  - In netwib_buf_append_icmp4code, "unknown" was displayed even
    if code was 0 for NETWIB_ICMP4TYPE_ECHOREP/SRCQUENCH/ECHOREQ/
    TIMESTAMPREQ/TIMESTAMPREP/INFOREQ/INFOREP.
  - Functions netwib_encodetype_init_kbd and
    netwib_record_encodetype_init_kbd returned pressed key number
    instead of associated encodetype value.
  - Function netwib_buf_encode did not store last line
    for NETWIB_ENCODETYPE_DUMP/MIXEDH_WRAP.
  - Function netwib_io_init_file did not truncate the file
    when opening it in write mode.
  - Function netwib_buf_append_pkt_ip displayed udp/tcp/icmp
    fragments as normal packets.

 ++ major evolutions ++
  - Name changed to netwib.
  - Parts of module dat/buf.c were rewritten to improve its
    performance and ease of use.
  - Meaning of netwib_time in netwib_io_wait has changed. Before,
    it corresponded to a duration (ie 3 seconds). Now, it is
    the absolute ending time (ie 2003/08/15 at 13:23:10). Like
    this, it is more efficient and easier to use (even if it
    does not at first sight). All other functions having a wait
    parameter have also changed.

 ++ minor evolutions ++
  - Define NETWIB_CHAR_INIT_KBD_NODEF was missing, so developer had
    to use 0 instead.
  - Function netwib_fmt_display now displays a netwib_bool as
    "true" "false" "yes" "no" etc. instead of only "0"/"1".
  - Function netwib_fmt_display now displays a netwib_cmp as
    "<" "=" ">" "lt" "eq" etc. instead of only "-1"/"0"/"+1".
  - In function netwib_fmt_decode, "%$" can be used to indicate
    string end.
  - Function netwib_io_init_sniff_ip now has one more parameter
    named ipreas.
  - Function netwib_io_init_spoof_ip now has one more parameter
    named inittype.
  - Creation of functions netwib_time_init_localtime and
    netwib_time_decode_localtime.
  - Creation of functions netwib_device_hwtype_init_kbd and
    netwib_device_dlttype_init_kbd.
  - Creation of function netwib_pkt_convert.
  - Now, a record file not ending with an empty line is accepted.
    Before, last packet was not read if user edited file by hand
    and forgot to put the newline.
  - Creation of function netwib_c_memcasemem.
  - Function netwib_buf_append_ips has one more parameter to
    specify how to display a netwib_ips.
  - Creation of type NETWIB_DECODETYPE_DATA.
  - Creation of function netwib_wait_init_thread_cond.
  - Creation of function netwib_buf_append_rand.
  - Creation of module dat/bufpool, to deal with a pool of buffers.
  - Creation of function netwib_io_init_data.

 ++ internal evolutions (not seen by end users) ++
  - Due to several incompatibility problems between systems,
    sys/priv/kbd.c was partially rewritten. Changes in
    character echo or line reading are now immediate.
  - Simplification of net/priv/sa.c dealing with sockaddr.


---------------------------------------------------------------------
Version 5.0.0 - 6-Jul-2003
  This version is a full rewrite. Everything changed.
