dktools Changelog

What's new in dktools 4.33.4

Jun 3, 2022
  • Wxdkdraw library elements:
  • Added JFET and MOSFET symbols to wxdkdraw libraries.

New in dktools 4.33.2 (May 9, 2022)

  • Modification to wxdkdraw: Symbol for constant current source modified
  • The symbol was modified to be standard compliant.
  • dklivesys-1.0.6:
  • Modified dklivesys-kernel-build
  • A call to
  • make olddefconfig
  • was added to choose the default answer for all new configuration questions.
  • The sed program is used to remove NVME support from the kernel .config file.
  • So the script requires less interactivity.

New in dktools 4.33.1 (Apr 26, 2022)

  • Modification to wxd2lat: Suppressed some warnings:
  • Some warnings about unusable arrow length and arrow width values are suppressed for arrow type “none”.
  • Modification in Debian package building:
  • The debconf mechansim is used only by the rshdown-data package, no longer by the libdk4gra-data package. So when installing dktools the administrator is not asked questions.
  • Removed “Priority” field from debconf templates.
  • Overlong text lines splitted.
  • Package descriptions start with uppercase letters.
  • More description text added.
  • Some “Recommends” replaced by “Suggests”.
  • Cleanup in package dependencies, only direct dependencies explicitly mentioned.
  • Correction in SPEC file to build RPM packages:
  • Name dkct replaced by dkcpre.

New in dktools 4.33.0 (Feb 19, 2022)

  • Programs renamed:
  • The former bmpp program was renamed to bitmap2pp, the former dkct program was renamed to dkcpre.
  • Reason: For some Linux distributions (i.e. Debian GNU/Linux) the packaging guidelines require a minimum binary name length of 5 characters.
  • Note: If you use the gxhconvert script from the “Graphics conversion hints” project — see [gxhints:wiki:Home] — you should upgrade to version 1.1.14.
  • Internal libraries:
  • The shared libraries are installed as internal libraries in ${libdir}/dktools instead of ${libdir} now when creating packages.
  • The libraries are intended for code consolidation only, not for use by the public. The library API is not long-time stable, it is changed as necessary during DK tools maintenance.
  • As a consequence, no developer packages for the libraries are provided.
  • Library API change: libdk4base:
  • Some functions and object-like macros in the module were renamed.
  • Library API change: libdk4ma:
  • Functions for greatest common divisor and least common multiple now available for all integer types.
  • Names corrected, in some function names a _t was missing.

New in dktools 4.32.0 (Jan 26, 2022)

  • Bugfix in developer package creation:
  • The dk4conf.h file was not packaged.
  • Modification in package building, separated packages dk3info and dk4info
  • Separated packages dk3info and dk4info. The libdk4*-dev packages do no longer have the API version in the name. Packages with API version in the name only contain files having API version in their names. So the dktools packages can be updated normally without file conflicts.
  • Modification in Debian package building, using debconf:
  • The debconf mechanism is used to create the /etc/dk4app-site/dk4gra.conf file containing the users choice about PS level and LZW compression usage.
  • Modification in Debian package building, using rdfind:
  • When building a repository structure for Debian, each *.deb file is present two times in the directory structure. The rdfind program from the rdfind package is used to replace one of the duplicated files by a hard link. This reduces disk usage by approximately 50 percent.
  • Security feature added:
  • When running with root privileges, the programs ignore configuration and preference files in the current working directory.
  • Library API change:
  • The dk4cs module in the libdk4bif library now exports the dk4cs_find_rgb_to_gray(), dk4cs_find_rgb_to_cmyk(), and dk4cs_find_alpha() functions.
  • These functions are used by the dk4grcoa module in the libdk4graa library.
  • Library API change:
  • Introduced the dk4_c8_keyword_t, dk4_wc_keyword_t, and dk4_dk_keyword_t data types to assign a numeric value to a keyword.
  • The dk4strx_keyword_index() functions were added to find one keyword in a sorted array of these data types.
  • The dk4strx_abbr_cmp() and dk4strx_abbr_casecmp() functions were added to compare a text against a pattern containing a keyword with abbreviation marker.
  • The dk4strx_keyword_abbr_index() function were added to find one keyword in a sorted array of keyword to integer mappings containing patterns with abbreviation marker.
  • Internal optimizations:
  • The dk4uc2l module (used by wxd2lat, fig2lat, and dk-t2l) was modified to optimize keyword regocnition when reading data or configuration files.
  • Developer documentation:
  • While restructuring the source archive, the HTML documentation for the DK libraries was removed temporarily.
  • Now this documentation is updated.

New in dktools 4.31.3 (Nov 28, 2021)

  • Change in dk-pwgen:
  • By default the special character set for dk-pwgen does no longer include single and double quotes. So we can set passwords created by dk-pwgen in quotes when using them in scripts.
  • Use option -a to restore the full special character set.

New in dktools 4.31.2 (Nov 16, 2021)

  • Bugfix for array size calculations:
  • The libdk4maiowd/dk4maowdbl.c and libdk4wx/Dk4WxApplicationHelper.cpp modules contained array size calculations dividing array size by type size using the wrong type. This can result in buffer overflows.
  • Everyone using DK tools and libraries should upgrade.
  • Scripts to build RPMs on Fedora 35:
  • The scripts/fedora35-prepare and scripts/fedora35-build-rpm scripts were added to build Fedora 35 RPMs.

New in dktools 4.31.1 (Sep 9, 2021)

  • Change in itadmin:
  • The itadmin program produces a netdocu.tex file and a licenses.tex file no longer using the pdfcprot package, the microtype package is used instead.

New in dktools 4.31.0 (Aug 5, 2021)

  • Change in bmpp:
  • LaTeX can only handle EPS and PDF objects with maximum width/height of 230 sp. This corresponds to 16322bp (72 bp=1 inch). The bmpp program can check bitmap image width/height and resolution whether the resulting bounding box is suitable for use with (pdf)LaTeX and apply corrections if necessary.
  • By default this check is enabled when producing EPS or PDF images or objects, the check is disabled when producing documents.
  • Use the “rsize=off” key/value pair to disable the check for image/object output.
  • Change in wxbmpp:
  • The same size check is available in the wxbmpp program.
  • Library API change:
  • The dk4bif_restrict_size_app() function was added to check image size and resolutions against the maximum image sizes supported by LaTeX.
  • For images too large, corrections are applied to the resolutions.
  • Bugfix in NetPBM reader module, affecting bmpp and wxbmpp
  • The number of components was retrieved incorrectly in previous versions.
  • Clean compilation at high warning levels
  • Changes to sources to silence compiler warnings at high warning levels.
  • Debian package building modified
  • The data packages for libraries do no longer contain the API version (major.minor) in the package name.
  • Man page source format changed
  • The man page source files are now written as POD files. Section 3 is under construction.

New in dktools 4.30.12 (Jun 16, 2021)

  • Bugfix in wxdkdraw:
  • For newly inserted dots the layer number is increased before registering the object with the drawing. So the layer manager can handle the new objects correctly.

New in dktools 4.30.10 (May 18, 2021)

  • Modified inductor symbol
  • The size of the inductor symbol in the wxdkdraw library was reduced.

New in dktools 4.30.9 (May 18, 2021)

  • Bugfix in package building
  • The dk4info program was moved from the libdk4base package into the libdk4app package.
  • The program depends on the libdk4app library. So we can not place it in the libdk4base package as this would result in a circular dependency between the libdk4base and libdk4app packages.
  • For those installing from source or using the Windows executable setup there is no need to upgrade.

New in dktools 4.30.8 (Mar 8, 2021)

  • Debian-ized:
  • The build process for Debian was modified to follow Debian policies.
  • This results in a large number of packages (one package for each library, one package for nearly each executable).
  • Package building files:
  • Scripts and SPEC files for RPM building were updated for Fedora 33, Oracle Linux 8, and Scientific Linux 7. The large number of packages is produced on these systems too.
  • Cleanup:
  • The scripts to build DKtoolian and Disklessian live systems are now in the dklivesys subproject.
  • In both live systems the DK tools programs are installed as Debian packages.
  • Windows build process modified:
  • The first copy step is skipped now, use the nmake makefiles from the place they are located.

New in dktools 4.30.7 (Dec 19, 2020)

  • Escape key in wxdkdraw:
  • The Esc key can be used instead of the right mouse button in wxdkdraw.
  • Rotate and flip library elements:
  • When inserting a library element, the "r", "v" and "h" keys can be used to rotate or flip (vertically and horizontally) the element. The keys are only available when inserting the library element, not later when moving the element.
  • Bugfix in wxdkdraw:
  • After rotating elements (groups or simple elements) we must re-calculate the bounding box.
  • ource archive in version 4.30.5.

New in dktools 4.30.6 (Nov 25, 2020)

  • Bugfix in bmpp: rotate setting
  • The rotate setting was ignored in previous versions of bmpp.

New in dktools 4.30.5 (Nov 14, 2020)

  • Source archive structure modified:
  • The directory structure of the source archive was modified.
  • The 2000+ source files are now placed in the src directory, a subdirectory is used for each program and library.
  • The formerly separated dktools-doc package was merged into the dktools package, so tools and user documentation are installed together.
  • The dktools-devdoc package was removed, there was no download of this package for more than 20 years.
  • Build process on Windows modified:
  • To allow building binaries for different platforms using different C runtime library versions and different wxWidgets version I changed the directories used to store the libs. Use a directory like PLIBwxWidgets3.1.416.0x64MT for wxWidgets and PLIB16.0x64MT as base directory for the other required libraries.
  • The path contains:
  • wxWidgets version number (3.1.4 here),
  • the Visual Studio short version number (16.0 here) typically found in the $(VisualStudioVersion) environment variable,
  • the platform to build for (x64 here) typically found in the $(Platform) environment variable, and
  • the C runtime library type (one from: MT, MD, MTd or MDd).

New in dktools 4.30.4 (Oct 20, 2020)

  • Paper sizes in wxdkdraw:
  • A menu item and a dialog were added to wxdkdraw to set the drawing size to a named paper size.
  • Bugfix in wxdkdraw:
  • The wxMessageBox() function returns wxYES or wxNO, the new Dk4WxYesNoDialog returns wxID_YES or wxID_NO. As I forgot to make appropriate changes in the results checks the program failed to save the drawing when closing an unsaved drawing.
  • Bugfix in build process (configure script):
  • Systems using the configure script were building shared libraries instead of static libraries even when using “--enable-static --disable-shared” due to an error in a condition in the configure script.
  • Compiler warnings fixed:
  • In the dk-t2db and dk-dbco programs the “trunc” variable was renamed to “truncdb” to avoid compiler warnings about hiding the “trunc()” function from math.h.

New in dktools 4.30.3 (Oct 10, 2020)

  • Bugfix in htmlbook:
  • The "Page content" option was shown multiple times in HTML output for nodes having a parent node. This is fixed now.

New in dktools 4.30.2 (Sep 16, 2020)

  • SPDX-License-Identifier
  • Added SPDX-License-Identifier tags to many files.

New in dktools 4.30.1 (Aug 25, 2020)

  • dkct upgrade: Can handle SPDX-License-Identifier:
  • The dkct program was updated, both equal sign (=) and colon (:) can be used to separate key and value in options sections.
  • The SPDX-License-Identifier key was added for license identifiers.
  • If an SPDX-License-Identifier is specified in the options section, dkct only writes an SPDX-License-Identifier comment to output files instead of a license text. The value of the SPDX-License-Identifier field is not checked by dkct, it is up to you to select a correct one. See https://spdx.org/licenses/ for a list of license identifiers.

New in dktools 4.30.0 (Aug 22, 2020)

  • wxdkdraw: Localized texts in yes/no dialogs:
  • The buttons in yes/no dialogs show localized texts now.
  • Bugfix in wxdkdraw: Menu items to create arcs added:
  • The menu items were still missing.
  • Bugfix in wxdkdraw: Cann add points to 2 point splines, polylines, and polygons:
  • In previous versions the same tests were applied when adding and removing points to and from objects. So adding points to splines, polylines, and polygons containing 2 points was denied. This is fixed now.
  • Bugfix in the dk4gra module: Pattern size for octagons:
  • The pattern size for octagons now matches the pattern size used for circles.
  • Library API change: Help file search changed for Dk4WxHelpController:
  • The Dk4WxHelpController::AttemptToLoadFile() method now uses the Dk4WxApplicationHelper::FindHelpFile() method instead of Dk4WxApplicationHelper::FindDataFile().
  • If there is no help file available in the users preferred language, the method checks for a help file in English.
  • Library API change: New Dk4WxYesNoDialog class:
  • The wxMessageBox() function in the libwxgtk3.0-0v5 package shows unlocalized texts "Yes" and "No" on Debian 10. The Dk4WxYesNoDialog class is intended as a workaround.

New in dktools 4.29.3 (Jul 17, 2020)

  • wxdkdraw: Bugfix to highlight 0 line width elements:
  • In previous versions elements having line width 0 (filled elements) were not highlighted as selection/copy/move/delete/grouping candidates.
  • This is fixed now.
  • htmlbook: Better navigation menu placement:
  • The navigation menu is now implemented as a sequence of short lists instead of one long list. This allows flexbox placement of the lists if the nav is shown below the main.

New in dktools 4.29.2 (Jul 16, 2020)

  • htmlbook: Better support for responsive designs using HTML 5
  • Default template and style file were changed. Options were added to the project file to specify a JavaScript file to fold and expand the page table of contents.

New in dktools 4.29.1 (Jul 7, 2020)

  • Modified mklivesys.sh script used to build DKtoolian and Disklessian
  • We can now inject files into the initramfs file system.

New in dktools 4.29.0 (Apr 16, 2020)

  • Library version upgrades in the Windows binaries
  • The following library versions are used to build Windows binaries:
  • Zlib 1.2.11, bzip2 1.0.8, libpng 1.6.37, libjpeg 9d, libtiff 4.1.0, openssl 1.1.1f, wxWidgets 3.0.4.
  • For wxWidgets we have a downgrade as the 3.1.x versions are marked as development versions, 3.0.4 is the latest stable release.
  • Bugfix in wxdkdraw: Set focus on draw control
  • Moving the mouse into the draw control or clicking into the draw control now explicitly sets focus to the control when compiled on Windows.
  • I hope this brings mouse wheel to work on Windows.
  • Bugfix in wximgsz: String table completed
  • Due to an incomplete string table for German language all texts were shown in English.
  • Bugfix in wxd2lat: Correct non-LaTeX text handling on Windows
  • In previous versions wxd2lat program passed text to output to a function designed for UTF-16 text on Windows. This is fixed now.

New in dktools 4.27.0 (Dec 2, 2019)

  • Size specifications changed:
  • Check and update scripts using the programs mentioned below!
  • Size specifications can use suffixes K, M, G, T, P, E, Z, Y for multiples of powers of 1024 (kibibytes, mibibytes, gibibytes...).
  • Suffixes k, m, g, t, p, e, z, y can be used for multiples of powers of 1000 (kilobytes, megabytes, gigabytes...).
  • So the size specifications in DK tools and libraries follow the convention used by GNU dd now.
  • On 64 bit computers as used today (2019) 1Z, 1Y, 1z, 1y can not be expressed as size_t, these suffixes are planned for later use on larger computers.
  • Size specifications are used by programs dk-blks, dk-eradisk, dk-rand, dk-pwgen, dk-cat, dk-db2t, dk-dbco, dk-t2db, dk-fic, dk-lines, dk-sort.
  • Library API change: Functions to read size_t added:
  • The functions dk4ma_input_c8_dec_size_t_simple(), dk4ma_input_wc_dec_size_t_simple() and dk4ma_input_dk_dec_size_t_simple() were added to read size_t without multiplicator suffixes.
  • Bugfix in build process:
  • In 4.26.0 I modified the build process and forgot to rebuild the dk3wxcs.h file. This resulted in a wrong character size for wxChar characters. In turn some of the GUI programs using DK3 libraries did not work properly.
  • I'm sorry for that, my failure.
  • Anyone using GUI programs from DK tools and libraries on Unix/Linux should upgrade.
  • Program removed: wxdkct:
  • After reading some more documentation about programming with threads I found there are likely some issues in wxdkct as both GUI thread and worker thread used memory allocations and some library functions not thread-safe.
  • So I removed the wxdkct program, please use the dkct program instead.
  • Library API change: Functions to read size_t without multiplicators:
  • The functions dk4ma_input_c8_dec_size_t_simple(), dk4ma_input_wc_dec_size_t_simple() and dk4ma_input_dk_dec_size_t_simple() were added to read size_t values from text without multiplicators.

New in dktools 4.26.0 (Nov 12, 2019)

  • Header file location changed
  • Header files are installed into ${includedir}/dktools-4 now instead of ${includedir}.
  • PID file location changed
  • The PID file for the rshdown daemon is now /var/run/rshdown/rshdown.pid on systems without systemd, /run/rshdown/rshdown.pid on systems with systemd instead of /var/run/rshdown.pid.
  • A similar change was used for printqd.
  • Library API change: dk4dmt module modified.
  • The dk4dmt module was modified, modifications include API changes. When using a systemd service unit to start a "traditional" forking daemon, the master process must not exit until the forked daemon process has created the PID file.
  • So the master process creates a pipe, the daemon process sends an exit status code to the master process after creating the PID file. The master process reads that data from the pipe and exits.
  • Modifications in configure.ac and Makefile.in for cross-compiling
  • Some cleanup, preparations to build using MinGW. On Fedora I successfully cross-compiled the CLI suite for Windows.
  • Some code cleanup related to compiler warnings.
  • Modifications in configure.ac and Makefile.in for systemd
  • The configure script checks the presence of the /lib/systemd/system directory. Systemd service units for rshdown and printqd are copied into the directory if it exists. Otherwise start scripts are placed in the /etc/init.d directory.
  • Modification in Debian packages
  • The rshdown and printqd daemons were separated from the command line tools into the rshdown and printqd packages.
  • Installing the packages automatically enables and starts the services.
  • To change configuration you must stop the service, modify the configuration and start the service again.
  • Modification in Fedora packages
  • The rshdown and printqd daemons were separated from the command line tools into the dktools-rshdown and dktools-printqd packages.
  • Installing the packages just brings the files in place. The services are not automatically enabled or started.
  • New modules: dk4bm and dk4bml
  • The dk4bm module implements bit matrices. The dk4bml module levelizes a graph represented in a bit matrix.
  • Bugfix in the dk4apref module
  • The pv parameter of the dk4app_pref_apply() function is declared const, but in previous versions the string was modified.
  • Now the string is copied into a temporary buffer, modifications are applied to the buffer instead of the original string.
  • Bugfix in dk4sock25 and dk4sock31 modules
  • FreeAddrInfo() replaced by FreeAddrInfoW() now.
  • Modification in the dk4mem module
  • The code sections containing fallback functions are only compiled if the fallback functions are needed because the real functions are either not available or use is denied by disabling CRT on Windows.

New in dktools 4.25.0 (Oct 2, 2019)

  • Bugfix in the dk-cat program:
  • Previous versions contained a bug and attempted to issue a byte order marker (BOM, Unicode character 0xFEFF) if the system encoding indicates using a BOM regardless of the output encoding currently used.
  • This is fixed now, the BOM is issued only in two situations:
  • Writing a BOM is explicitly required (i.e. "-o utf-16,bom") or
  • The system encoding is used (no -o option) and typically requires a BOM.
  • New dk4itmin module:
  • The dk4itmin_interval() function does an iteration to search for a local minimum of a unimodal function on an interval.
  • The golden section method is used.
  • In this context "unimodal" means: The function has exactly one minimum and no maximum on the specified interval.

New in dktools 4.24.2 (Aug 21, 2019)

  • Bugfix in the dkwt program:
  • The dkwt/dkwtadm program did not properly notify all windows about environment modifications.
  • Windows users should upgrade. The bug is not relevant for other users as dkwt/dkwtadm is available for Windows only.

New in dktools 4.24.1 (Aug 21, 2019)

  • New program dk-bin2c:
  • The program converts binary data to C source code (array of unsigned char literals).
  • New special function $!binary-file in dkct:
  • The new special function converts binary data from file into an array of unsigned char literals in C output.
  • Modifications for C++11 and C++17:
  • The Dk4Comparable and Dk4Container classes were modified, the throws(...) statements were removed and an empty virtual destructor was added to the Dk4Comparable class. The test-container program was modified too.
  • Live system documentation:
  • Markdown documentation was added how to build and use the live systems.

New in dktools 4.24.0 (Aug 21, 2019)

  • Modifications for wxWidgets 3.0.0:
  • Applied modifications as described on the Updating to the latest version of wxWidgets page.
  • Modified debian/control for Debian 10 Buster:
  • The debian/control file and some scripts were modified to build Debian packages on Debian GNU/Linux 10 Buster.
  • Modified mklivesys.sh script for Debian 10 Buster:
  • The script and some package files were modified to build DKtoolian based on Debian Buster.

New in dktools 4.23.0 (Aug 21, 2019)

  • Bug fix in build process for 32 bit Linux/Unix:
  • In earlier versions the dk4config program used to produce the dk4conf.h file was in C++, the WXCPPFLAGS were used to compile the program.
  • On 32 bit Linux these flags include _FILE_OFFSET_BITS=64, so the program detected no size difference between off64_t and off_t and thus no need to activate _LARGEFILE64_SOURCE. So all library modules were compiled without 64 bit files size support on 32 bit systems.
  • In this version the former dk4config program is splitted into two programs:
  • dk4config, now implemented in C and compiled without the WXCPPFLAGS and
  • dk4wxcs, implemented in C++ and compiled with WXCPPFLAGS.
  • Modification in build process: wxGTK3 on EL6 and EL7:
  • Configure script and spec files were modified to use wxGTK3 when building RPMs for EL6 and EL7.
  • Font feature added:
  • A feature to indicate script font family was added to the font features in the dk4font module. Enumeration values for font features were changed.
  • Modified dkct: wxScrolled<wxPanel> treated like wxScrolledWindow:
  • The dkct program was modified, wxScrolled<wxPanel> is now recognized as container widget like wxScrolledWindow.
  • Variables for strings:
  • Variables were added to store the lightweight class object returned by the
  • wxString c_str() method to modules using this method.

New in dktools 4.22.0 (Apr 19, 2019)

  • Configuration default changed: fig2lat program:
  • The cosp configuration default was changed from "off" to "on".
  • The programs XFig and fig2dev use an incorrect formula q=-s for interpolated splines, the X-splines paper requires q=-s/2.
  • A fix would break existing drawings (the look of these drawings would changed), so the XFig maintainers decided to keep the formula as is but to use s=-1/2 instead of s=-1 as default for new interpolated splines.
  • You can use a preference file segment like
  • [application=fig2lat]
  • /fig/compatible-splines=no
  • to change the default value per user or per system.
  • Library API change: Graphics configuration:
  • The new "x-spline sub segments" item was added to the dk4gra.conf file to specify the number of Bezier segments to draw for each X-spline segment.
  • Library API change: Text rotation:
  • A new "rot" parameter was added to the text functions in the dk4grpgf and dk4pppt modules to specify the text rotation.
  • Library API change: Functions added to API:
  • Some previously internal functions were added to the API.
  • Library API change: X-spline segment length:
  • Functions were added for an iterative calculation of 2D and 3D X-spline segment lengths.
  • Library API change: Function dk4gra_set_pattern_line_width()
  • The function sets the line width used for fill pattern drawing.
  • Library API change: Dk4WxFrame::FindFileAndLaunch()
  • The
  • bool
  • FindFileAndLaunch(dkChar const *fn);
  • method was added to the Dk4WxFrame class to search for a localized file and to run browser or default application on it.
  • Library API change: Window positioning:
  • A new parameter cn (center negative) was added to the Dk4WxApplicationHelper::CorrectPosition() method to control the behaviour for negative x and y coordinates. If the parameter is true, the window is centered. If the parameter is false, the coordinate is corrected to 0.
  • Library API change: Data directory as wxChar:
  • The GetWxsShare() method was added to the Dk4WxApplicationHelper class to retrieve the data directory.
  • Build process modified:
  • Now there is a choice between release build and debug build.
  • The release build is intended for normal installation, it is the default build produced when running configure and make.
  • For the debug build the DK4_USE_ASSERT macro is defined, activating code running assert() instructions. Most library functions are designed to return a special error code when called with invalid arguments. In a debug build the functions assert their arguments and abort the program on the first failed assertion. Debug builds are not intended for end users.
  • Bugfix in the dk-lines program:
  • Fixed possible dereferencing of a NULL pointer.
  • Bugfix in the dk4maai16 and dk4maai32 modules:
  • Functions to calculate absolute values for int32_t and int16_t returned wrong results for positive values.
  • Source code reorganized: Images moved:
  • A new directory gui-img with some subdirectories was created.
  • Icons and XPM images except favicon.ico were move out of the souce code directory into the subdirectories of gui-img.

New in dktools 4.21.0 (Nov 24, 2018)

  • New diagnostics in dkct:
  • If an object is defined without being declared by another objects contents line, a warning is issued.
  • Library API change: Dk4WxColourView modified:
  • The new
  • void
  • SetPlaceColourChooser(bool b = true);
  • method controls whether the colour chooser dialog is placed over the colour view object. This only works for the Dk4WxColourPalette colour chooser, not for the system colour chooser.
  • If the colour viewer is active (a click on the colour viewer opens a colour chooser) the entire colour view area is filled with the currently selected colour.
  • If the viewer is inactive (just used to show a colour) the selected colour is shown in the center of the view surrounded by black and gray border.
  • The new
  • void
  • SetMarkActiveInactive(bool b = true);
  • method can be used to enable/disable showing the state.
  • Library API change: Dk4WxColourPalette modified:
  • An optional parameter withborder defaulting to true was added to the constructor.

New in dktools 4.20.0 (Nov 8, 2018)

  • New function $!string in dkct
  • To produce a long string you can write
  • static const char example[] = {
  • $!string
  • This is a string consisting
  • of multiple parts and containing
  • "double quoted text".
  • $!end
  • instead of
  • static const char example[] = {
  • "This is a string consisting "
  • "of multiple parts and containing"
  • ""double quoted text"."
  • in the *.ctr file.
  • Library API change: Conversion from double to integer values
  • The functions dm4ma_char_from_double(), dk4ma_uchar_from_double(), dk4ma_short_from_double(), dk4ma_ushort_from_double(), dk4ma_int_from_double(), dk4ma_uint_from_double(), dk4ma_int16_from_double(), dk4ma_uint16_from_double(), dk4ma_int32_from_double(), dk4ma_uint32_from_double(), dk4ma_long_from_double(), dk4ma_ulong_from_double(), dk4ma_ll_from_double(), dk4ma_ull_from_double(), dk4ma_size_t_from_double() were added to convert double values to various integer types.

New in dktools 4.19.1 (Oct 18, 2018)

  • Bugfix in UNIX/Linux build process:
  • Correction in Makefile.in to enable parallel build.

New in dktools 4.19.0 (Oct 18, 2018)

  • Library API change: Greatest common divisor / least common multiple:
  • The dk4ma_im_gcd(), dk4ma_im_lcm(), dk4ma_um_gcd() and dk4ma_um_lcm() functions were added to calculate greatest common divisor and least common multiple for dk4_im_t and dk4_um_t values.
  • Library API change: Conversions between integer types:
  • The functions dm4ma_char_from(), dk4ma_uchar_from(), dk4ma_short_from(), dk4ma_ushort_from(), dk4ma_int_from(), dk4ma_uint_from(), dk4ma_int16_from(), dk4ma_uint16_from(), dk4ma_int32_from(), dk4ma_uint32_from(), dk4ma_long_from(), dk4ma_ulong_from(), dk4ma_ll_from(), dk4ma_ull_from(), dk4ma_size_t_from() were added to convert dk4_im_t/dk4_um_t values to shorter signed/unsigned integer types.
  • Library API change: Function dk4recwx_utf8_to_wxchar():
  • The function converts UTF-8 encoded strings to wxChar strings.
  • Library API change: Event from Dk4WxColourView:
  • The Dk4WxColourView schedules a wxCommandEvent of type wxEVT_DK4_COLOUR_VIEW_EVENT after colour changes if:
  • A non-NULL parent window was specified in the constructor and the ID is not wxID_ANY.
  • Improved printqd installation on Unix/Linux
  • The printqd program is installed to /usr/.../sbin now, the rshdown program too.
  • A start/stop script /etc/init.d/printqd is created during installation.

New in dktools 4.18.1 (Oct 18, 2018)

  • kct: Bugfix, removed misleading warning:
  • Previous versions of dkct issued a warning about an unused/unsupported attribute when assigning a "direction" attribute to a wxScrollBar object although the attribute was used and processed. The warning is removed now.

New in dktools 4.18.0 (Oct 18, 2018)

  • dkct: New option --no-modification-warning:
  • This options suppresses the warning at the beginning of output files advising users to modify the source files processed by dkct instead of the output files produced by the program.
  • Library API change: New modules:
  • Added new modules dk4mai8du8, dk4mai8di8, dk4mai8du16, dk4mai8di16, dk4mai8du32 and dk4mai8di32 to read uint8_t, int8_t, uint16_t, int16_t, uint32_t and int32_t.

New in dktools 4.17.0 (Jul 11, 2018)

  • htmlbook: HTML comment lines
  • HTML comments <!-- xxx --> are written for POSITION_START, POSITION_END, NODE_CONTENTS_START, NODE_CONTENTS_END, FILE_CONTENTS_START, FILE_CONTENTS_END, LINK_LIST_START, LINK_LIST_END, SITE_TOC_START, SITE_TOC_END, KEYWORD_INDEX_START, KEYWORD_INDEX_END for easier postprocessing using programs like sed.
  • htmlbook: Added configuration options for privacy statement page
  • The new configuration options
  • privacy page = file.txt
  • privacy link = url
  • can be used in index.prj to add a link to a privacy statement to all pages.
  • This statement can be either a file included in the HTML book webspace or a web page specified by URL.
  • fig2lat and libdk3fig: Faster iteration algorithm
  • Drawing arrowheads on splines requires to calculate t values for given distances to the curve end. This is an iterative calculation.
  • This version uses the Anderson‑Björck variant of regula falsi instead of the previously used simple bisection algorithm.
  • Library API change: Module dk4iter added to libdk4c
  • The module contains functions for numeric iterations using bisection, regula falsi (primitive form and variants Illinois, Pegasus and Anderson-Björck), Newton iteration and fixpoint iteration.
  • Using the Wiki
  • URLs pointing to the web space are replaced by URLs pointing into the Wiki now.

New in dktools 4.16.0 (Jun 1, 2018)

  • Library API change: Standard and alternative colour chooser on Dk4WxColourView
  • A left click opens the systems (or wxWidgets) default colour chooser. A right click opens the new Dk4WxColourPalette colour chooser instead.
  • Use the new SetPalettePreferred() method to swap the mouse keys.
  • Library API change: Dk4WxColourView can be inactive
  • Using the new SetActive() method one can switch a Dk4WxColourView object to inactive state. Mouse clicks on an inactive Dk4WxColourView do not open a colour chooser.
  • Library API change: New class Dk4WxColourPalette added
  • This is an alternative color chooser to choose colors from an XFig predefined colors palette (shading in 5 percent steps available here), the HTML named colors palette and the web 216 palette.
  • Library API change: Some methods of Dk4WxColourView renamed
  • This is for consistency with wxWidgets classes, the method names have an uppercase character at start.
  • Library API change: Renamed Dk4WxColorView to Dk4WxColourView
  • This is for consistency with wxWidgets classes, they use "Colour" instead of "Color" in the class names.
  • Dkct: Further containers supported
  • Support for wxChoicebook, wxListbook, wxSimplebook, wxToolbook and wxTreebook was added.
  • Dkct: wxPanel accepts text attribute
  • When adding a wxPanel to a wxNotebook or other book control, a text is required. Use the "text" attribute to specify the text.
  • Bugfix in dkct: wxNotebook no longer requires a size specification
  • There is no need to specify a size attribute for wxNotebook objects.
  • Bugfix in dkct: Stock menu items and stock buttons
  • A wxButton or wxMenuItem can be defined without a text to use stock button or menu item texts.
  • Bugfix in dkct: Attribute "text" for wxStaticBox
  • For wxStaticBox the constructor is now written including the required text attribute, wxEmptyString is used as default.

New in dktools 4.15.0 (May 23, 2018)

  • dkct: New special command $!string-table-file:
  • The new special command $!string-table-file reads a string table from a specified file and writes a string array to output.
  • Library API change: dk4xsp module added:
  • The module contains functions for X-spline calculations.
  • Bugfix in build process on Linux and UNIX:
  • Package building on Debian wrote warnings about symbols not found in any library. I attempted to fix this.
  • New constant definitions:
  • Added definitions for DK4_UINT8_0, DK4_UINT16_0, DK4_UINT32_0, DK4_INT8_0, DK4_INT16_0, DK4_INT32_0 to dktypes.h file.

New in dktools 4.14.1 (May 23, 2018)

  • Bugfix in build process on Linux and UNIX:
  • The libdk4ma.so library was not mentioned as dependency to build the libdk4maio8d.so library. This resulted in an aborted build when using multiple jobs with make.
  • The -ldk3bmeps library was removed from the fig2lat library list when building static binaries. The modules in libdk3bmeps.a are already available via -ldk3 (the libdk3.a library).

New in dktools 4.14.0 (May 23, 2018)

  • plpdftex rewritten:
  • The plpdftex program is an output driver for the pgfplot() function in the octpgfpl package for GNU Octave.
  • The plpdftex program was rewritten to use the version 4 libraries. It does no longer use temporary files to store compressed data, all data is kept in memory now.
  • The program can now generate PDF+TeX and EPS+TeX file pairs.
  • Note: The plpdftex program from DK tools and libraries 4.14.0 is for use with octpgfpl version 1.2.0.
  • It does not work with previous versions of octpgfpl.
  • Library API change: dk4gra, dk4graa and dk4pppt:
  • A flag set was added as parameter to the text handling functions so we can order a white box and/or an oval box for the text.
  • Library API change: dk4fpe.h:
  • The header file does no longer contain compiler pragmas to enable access to the floating point environment. Users might want to set this pragma for code portions of a file, not necessarily for entire source files.
  • Modification in build process:
  • The configure script now checks for the presence of the search.h include file and the availability of the qsort() and bsearch() functions.

New in dktools 4.13.0 (Apr 16, 2018)

  • Bugfix in the dkrgraa module, i.e. used by bmpp and wxbmpp:
  • For some error messages a wrong index number was used. This resulted in misleading error messages.
  • Library API change: Library dk4pppt added:
  • The library produces graphics output files or file pairs (i.e. EPS+TeX, PDF+TeX).
  • Library API change: dk4gra and dk4graa modules:
  • Functions were added to configure document font size and to configure preamble lines for PGF output.
  • Library API change: Added module dk4rec27:
  • The dk4recode_c8_to_dk() function converts char strings in plain, Win1252 or UTF-8 encoding to dkChar strings.
  • Library API change: dk4uc2l and dk4uc2la modules:
  • Functions dk4uc2l_string_c8() and dk4uc2l_string_c8_app() added to write a char string to a stream. The encoding is specified in the ie parameter.

New in dktools 4.12.1 (Apr 14, 2018)

  • Modified dk-t2l and dk-t2h
  • Both programs check whether they are run from inside vim by testing the presence of the VIM and VIMRUNTIME environment variables. If one of the variables is defined, the program is run from within vim and must operate silently on Windows without issuing any diagnostics.
  • Both programs produce 16 bit text for diagnostic messages on Windows. When editing an 8 bit text file and filtering text parts through dk-t2l or dk-t2h any 16 bit diagnostic message from the programs would have interesting results.
  • Default encoding on Windows changed
  • The default for the expected encoding when processing standard input or input from a file was changed from DK4_FILE_ENCODING_PLAIN to DK4_FILE_ENCODING_WIN1252.
  • This allows processing of text containing the Euro currency symbol.
  • Encodings renamed
  • The former encodings DK4_FILE_ENCODING_ASCII, DK4_ENCODING_ASCII, DK4_FILE_ENCODING_ANSI, and DK4_ENCODING_ANSI were renamed to DK4_FILE_ENCODING_PLAIN, DK4_ENCODING_PLAIN, DK4_FILE_ENCODING_WIN1252, and DK4_ENCODING_WIN1252.

New in dktools 4.11.4 (Feb 12, 2018)

  • dkct:
  • Checks added for state machine sections. A state machine section not passing the checks below will result in compiler errors when attempting to compile the resulting code.
  • Checking state machine name, state names, input names and output names. Valid identifiers in the C programming language are required.
  • If fixed numbers are assigned to states, inputs or outputs, the program checks for duplicated values.
  • Duplicates are reported as errors because they result in duplicate case branches in the C code.
  • configure:
  • The configure script was changed, the choice "auto" was removed from the --with-man option.
  • Man pages are installed unless --with-man=no is used.

New in dktools 4.11.3 (Feb 9, 2018)

  • itadmin:
  • The new value 7 was added to the computers/co_gu field to indicate that a device or computer is retired, no longer in use.

New in dktools 4.11.2 (Feb 9, 2018)

  • Bugfix in configure script:
  • Corrected "[" to "[[" and "]" to "]]" in configure.ac file. The wrong command may have resulted in incorrect recognition of Debian and derivative systems in turn resulting in problems when creating Debian packages.

New in dktools 4.11.1 (Jan 29, 2018)

  • Bugfix: XPM files:
  • Some XPM files used for toolbar buttons in version 4.11.0 contained named colors instead of hexadecimal values. Loading these images fails on systems without a color map.
  • Background information: I switched my private computer from Debian Stretch to Fedora 27. The netpbm package used to create the XPM files differs between these distributions, on Fedora the ppmtoxpm program needs the -hexonly option to avoid named colors.
  • So I updated my gxhints package containing the gxhconvert script first, reproduced the XPM files and released this version.
  • Bugfix: GUI applications restore window position and size:
  • I changed the order of the RestorePosition() and Show() methods, now restoring the position works properly with wxWidgets 3.x libraries.

New in dktools 4.11.0 (Jan 26, 2018)

  • itadmin:
  • The co_gu field in the computers table allows to distinguish between the following types of computers:
  • Physical and virtual machines which are subject to license management.
  • Private computers (bring your own device). The device owner is responsible for correct licensing.
  • Computers outside our department (i.e. hosts in neighbourhood departments our computers need to communicate to). The hosts owner is responsible for correct licensing.
  • Dynamic IP addresses assigned by DHCP servers, WiFi access points or VPN software. Licenses are assigned to the real host name.
  • Secondary (and further) network interfaces of a computer. Licenses are assigned to the computers real name typically connected to the primary network interface.
  • Network interfaces in non-computer devices without user-installable software (i.e. measurement devices, oscilloscopes, control units...). As we can not install software on the device, there is no need to include the device in license management.
  • printqd:
  • Due to hints from rpmlint I added calls to setgroups() or initgroups() before using setuid(). The configure script was modified to check for both functions.
  • Library API change:
  • The former dk4uc2l module was splitted into two modules:
  • dk4uc2la. This module contains functions with error reporting using the dk4_app_t data type.
  • dk4uc2l. This module contains functions with error reporting using the dk4_er_t data type.
  • Appropriate modifications to dk-t2l:
  • The dk-t2l program was modified to use the changed dk4uc2la and dk4uc2l modules.
  • Bugfix in Makefile.in:
  • Added dependency "install-directories" to target "i-incl", the $(includedir) must exist before we can copy files into the directory.
  • Errors occured only if multiple jobs were allowed in "make install".
  • Scripts merged:
  • debian-prepare.sh
  • replaces the former scripts debian-jessie-prepare.sh and debian-stretch-prepare.sh.
  • debian-build-deb.sh
  • replaces the former scripts debian-jessie-build-deb.sh and debian-stretch-build-deb.sh.

New in dktools 4.10.0 (Nov 23, 2017)

  • New program: dk-lines:
  • The dk-lines program extracts specific lines from input text from file(s) or standard input based on text at the beginning of lines and/or line numbers.
  • The program is mainly intended for the Windows platforms as I do not know about any "head" and "tail" program for Windows supporting wide characters (UTF-16).
  • Configure script changed:
  • The DK4_HAVE_ATTRIBUTE_UNUSED macro was added to the dk4conf.h file to indicate that GCC attribute mechanism as used in the example function
  • is available. The test to set the macro was added to the configure script.
  • New module dk4math:
  • The rint(), isgreater(), isgreaterequal(), isless() and islessequal() macros usually defined in the math.h header are missing on some platforms.
  • The new dk4math module provides fallback versions.
  • DK4_HAVE_INLINE and DK4_USE_INLINE:
  • The configure script now defines DK4_HAVE_INLINE if the compiler is able to handle the ``inline'' keyword.
  • You can use the configure scripts --enable-inline option to enable use of inline functions (i.e. for DK4_MEMCPY(), DK4_MEMRES(), DK4_MEMCMP() which are normally implemented as macros). Note: Use of inline functions instead of macros will slightly increase module size of all modules including headers defining inline functions.
  • Bugfix in dkct-gui module of dkct:
  • The former code if((co->gridgapy > -1) || (co->gridgapy > -1)) was changed to if((co->gridgapx > -1) || (co->gridgapy > -1)) as we want to check both gap specifications.

New in dktools 4.9.7 (Oct 16, 2017)

  • htmlbook: bugfix:
  • Previous versions warned about a leading backslash raute sequence in a line. We must escape raute characters at start of lines, so we do no longer issue a warning.

New in dktools 4.9.6 (Oct 11, 2017)

  • htmlbook: new option:
  • The "html doctype" option lets you specify the HTML version used in the DOCTYPE line of HTML output files.
  • htmlbook: docu improved:
  • A note in the "replace ampersand" description explains, that this option is ignored for the contents of:
  • %%a href="..."%%
  • %%a hreflang="..."%%
  • %%a onblur="..."%%
  • %%a onfocus="..."%%
  • %%a rel="..."%%
  • %%a name="..."%%
  • %%a title="..."%%
  • %%img src="..."%%
  • %%img svg="..."%%
  • %%img pdf="..."%%
  • %%img longdesc="..."%%
  • Ampersands in these attributes must be encoded as & manually.
  • Modification in DKtoolian build script for Debian Stretch:
  • The SHORTIFNAMES configuration option was added, set to "yes" by default. Some WiFi device drivers can not use the longer network interface device names used in Debian Stretch by default. So I decided to stay with traditional short interface names previously. Now you can configure whether to use the longer new or the shorter traditional names.

New in dktools 4.9.5 (Oct 9, 2017)

  • Default change and new option in htmlbook
  • The "svg wh" option in the options section of the project file configures a default value for the "svgwh" option in the %%img ...%% special command. The option now defaults to yes. A "%%img src=x.png svg=x.svg pdf=x.pdf%%" now produces an <svg> tag with width and height attribute. Previously <svg> tags without these attributes were produced as all browsers — execpt one — automatically obtain width and height information from the *.svg file.

New in dktools 4.9.4 (Oct 5, 2017)

  • Bugfix in htmlbook: Write correct link destinations:
  • When using hyperlink special commands like "%%a href=http://dktools.sourceforge.net/test.php?a=b&c=d title%%" the & character is now converted to & for the hyperlink text and title attribute and to %26 for the href attribute.

New in dktools 4.9.3 (Oct 2, 2017)

  • Design change in htmlbook:
  • In former versions of htmlbook internal links were shown in green instead of in the usual link color.
  • In version 4.9.3 and above both external links and internal links are both shown in the usual link color. The tooltip text for external links can be configured to show a globe symbol (U+01F310) or another symbol in the hyperlinks title text.
  • No table summaries in htmlbook output by default:
  • Although previous versions of tidy complained if the summary attribute in table tags was missing, current versions complain if it is present.
  • So the default setting in htmlbook is not to write a summary tag to tables created by htmlbook. You can use "table summaries = on" in the options section to write summary attributes.

New in dktools 4.9.1 (Sep 19, 2017)

  • Statistics output from dk-send and dk-recv:
  • If the log level is set to info or higher (command line option "--logstderrlevel=info") both programs report the time used for connecting, the time used for transmission and the transmission size at program end
  • Modifications in DKtoolian build script for Debian Stretch:
  • Choice between command line interface (CLI) and different desktops CLI, Xfce and Gnome are supported LXDE, Mate, LXQT, Cinnamon and KDE are available for experiments
  • Script rewritten to be more maintenance-friendly
  • Changes for build process on Debian Stretch:
  • Build dependencies modified in debian/control file
  • Search for RAND_egd() function now compiles a sample code and checks for function presence in libcrypto library
  • Bugfix in dk4strm module:
  • When closing a stream we have to write the contents of the input buffer downwards Previous versions did not check the used buffer amount, so closing a stream immediately after a buffer flush resulted in a 0 bytes write attempt which is reported as an error for some stream destinations
  • In version 491 the 0 byte write attempt is avoided by checking the used buffer size
  • Bugfix in dk3bezcu module:
  • Bounding box calculation corrected A symmetric layout of points and control points may result in 2nd degree polynomials instead of 3rd degree polynomials These situations were not recognized properly by previous versions

New in dktools 4.9.0 (Aug 7, 2017)

  • Bugfix in debian-jessie-build-live.sh:
  • An unterminated quoted string was in line 1906 of the script, probably introduced by the changes I made for version 4.8.3.
  • Windows makefile.vc modification:
  • Build and install the dkpwd.exe program.
  • Libraries: Functions to change file name suffix added:
  • The dk4path_set_suffix() and dk4path_dup_change_suffix() functions were added to the dk4pathd module.
  • Libraries: Functions to concatenate directory name and entry name:
  • Functions were added to the dk4path and dk4dir modules to build the full file name from directory and component name.
  • There are both functions constructing the full name in an existing buffer and functions allocating memory for the result buffer.
  • Code cleanup: Reduced warnings:
  • To compile cleanly after ./configure --enable-warnings --enable-more-warnings I removed many unused arguments from function calls. Some unused arguments couldn't be removed, here I silenced the gcc and clang compilers.

New in dktools 4.8.3 (Aug 7, 2017)

  • Package changed, followed some improvement suggestions made by the CTAN team.

New in dktools 4.8.2 (Aug 7, 2017)

  • bmpp modification: /CropBox:
  • Previous versions of bmpp only wrote a /MediaBox to PDF output, current versions write a /CropBox too.
  • bmpp modification: /CreationTime and /ModTime:
  • Timestamps are included in PDF output.

New in dktools 4.8.1 (Aug 7, 2017)

  • dk-send: Abort if all recipients disconnected:
  • If all recipients of a dk-send process have disconnected, there is no need to read further input.

New in dktools 4.8.0 (Aug 7, 2017)

  • ChangeScreenSize: New program for Windows platforms:
  • The ChangeScreenSize program changes the screen size. It is intended for use on Windows systems running on virtual machines. When switching the virtual machine viewer program between full size mode and normal window, you might want to change Windows screen resolution too.
  • Build process update for Windows:
  • Documentation and makefiles for Visual Studio were updated to use library versions:
  • zlib 1.2.11
  • bzip2 1.0.6
  • libpng 1.6.28
  • libjpeg 9b
  • libtiff 4.0.7
  • OpenSSL 1.1.0e
  • wxWidgets 3.1.0
  • Build process update (configure script and Makefile.in):
  • Inline functions are used only if the inline keyword is available and the use of inline functions is explicitly allowed by passing --enable-inline to the configure script.
  • Shared libraries linking was changed to reduce the number of warnings generated by Debian package building tools.
  • When creating a program A using a shared library B which in turn uses functions from another shared library C there are two options for linking:
  • Build both libraries independently and link A against both B and C.
  • Link against C when building shared library B, link only against B when building the program A.
  • Previously option 1 was used, but the Debian package building tools issued lots of warnings. So I switched to option 2.
  • DKtoolian update:
  • The "lshw" package was added to the list of base packages.
  • Libraries: Library libdk4maioxd added:
  • The library converts numeric values to and from wxChar strings.
  • Libraries: Include file <wx/chartype.h> is used instead of <wx/wx.h> if just the wxChar data type is needed. Using <wx/chartype.h> reduces object file size significantly.
  • Libraries: Detailed debug output for preferences:
  • For the "debug" log level the used preferences are shown.
  • Libraries: Detailed debug output for file search:
  • For the "debug" log level the application based file search functions now report the name of each tested path name.

New in dktools 4.7.0 (Aug 7, 2017)

  • dkct: Copyright end year "xxxx":
  • In "copyright year" lines in options sections of *.ctr, *.cpt and *.wxc files "xxxx" can be used to specify the current year.
  • Libraries: New modules dk4paper and dk4papea:
  • The modules read paper size configuration files dk4paper.conf and dk3paper.conf.
  • Libraries: New module dk4c8dbl:
  • The module contains the dk4c8dbl_double_to_stream() and dk4c8dbl_double_to_file() functions to write a double value to a dk4_stream_t or FILE without scientific notation (no exponents used).
  • Some file formats - i.e. PS and PDF - do not allow scientific notation.
  • DKtoolian: Clonezilla package added:
  • The clonezilla package and some related packages (partclone, partimage, cifs-utils, smbclient, dialog, sshfs, udpcast) were added to livesys-data/pkg_base.txt to make clonezilla available in DKtoolian live systems.
  • Bugfix: File and directory names corrected:
  • Some scripts in the livesys-data directory still used the name ``bankian'' instead of ``dktoolian''.
  • Bugfix: dk4strmco module:
  • The hexadecimal digit for the most significant 4 bits in each byte must be written first, followed by the digit for the least significant 4 bits.

New in dktools 4.6.0 (Aug 7, 2017)

  • dktools-el7.spec: Build RPM files for RHEL7 clones.
  • dk-rand, dk-pwgen: Sanitizing seed buffer.
  • dk-pwgen: Bugfix for out-or-range array index.
  • itadmin: Now sanitizing memory used as file buffer while reading the credentials file containing the database user name and password.
  • Libraries: New function dk4mem_free_secure() in dk4memrs module combining sanitizing and releasing memory.
  • Libraries: New modules dk4svbuf and dk4svbufa.
  • Libraries: New functions and macros in the dk4str8, dk4strw and dk4strd modules
  • Libraries: Backport dk3mem_reset_secure() in the dk3mem module.

New in dktools 4.5.0 (Aug 7, 2017)

  • htmlbook: Additional icon in navigation bars
  • htmlbook: Support for some meta tags
  • htmlbook: Node configuration in the nodes text file
  • New modules: dk4strms and dk4strmu
  • New modules: dk4maai16, dk4maau16, dk4maai32, dk4maau32
  • New module: dk4strmco

New in dktools 4.4.0 (Sep 16, 2016)

  • itadmin: Comments in dhcpd.conf output file
  • itadmin: Ask DHCP clients to release the lease on shutdown
  • itadmin bugfix: Check for both mysql.h and mysql/mysql.h
  • wxdkfcs and wxpqdic bugfix: Application class corrected
  • *App.cpp bugfix: Avoid NULL pointer dereferencing
  • dk4strw.c bugfix: dk4strw_abbr_index() and dk4strw_is_on() corrected
  • dk3config.c bugfix: Check for MySQL corrected
  • Libraries: Mathematical operations on int16_t, uint16_t, int32_t, uint32_t
  • Libraries: Reading doubles from string, writing doubles to string
  • Libraries: New dk4fpe module
  • Libraries: New dk4strmw module
  • Libraries: API change and performance optimization for dk4stream_write()
  • Libraries: Inline functions / macros for memory operations
  • Libraries: Modifications in DkWxBmepsApp.cpt, DkWxImgszApp.cpt and DkWxTraceApp.cpt
  • Modifications in build process

New in dktools 4.3.6 (Sep 16, 2016)

  • Bugfix in Windows binaries:
  • Previous versions did not work properly when run by domain users on a domain member computer. The problem was in the dk4user module, it failed to find the home directory. The function queried the local computer for information about the user only.
  • Now the following information sources are used:
  • NetUserGetInfo() on the local computer,
  • USERPROFILE environment variable,
  • HOMEDRIVE and HOMEPATH environment variables.
  • NetUserGetInfo() on the computer specified in the LOGONSERVER environment variable,
  • Replaced GetVersionEx() by version helper functions:
  • The dkwt-ev module checks the Windows version to decide whether to use cacls or icacls and to decide whether or not to do automatic profile cleanup.
  • If we have _MSC_VER >= 1800 we have Windows SDK 8.1 installed. Unless we are compiling for legacy Windows versions we use the new version helper functions as GetVersionEx() is marked deprecated.

New in dktools 4.3.5 (Sep 16, 2016)

  • %%hint%% special command for htmlbook

New in dktools 4.3.4 (Sep 16, 2016)

  • Style file change in htmlbook style.css

New in dktools 4.3.3 (Sep 16, 2016)

  • Small changes in RPM packaging:
  • The shared library symbolic links are moved to the devel package
  • The dk-ls program was added to the rescue package
  • Script scripts/create-debian-changelog.pl added:
  • The scripts automatically generated debian/changelog from dktools-el6.spec.in

New in dktools 4.3.2 (Sep 16, 2016)

  • New special command for htmlbook: htmlname:
  • The %%htmlname%% special command is replaced by the name of the HTML output file.
  • Enhancements in directory structure:
  • Directory /var/run/printqd is created by printqd, not by installation.
  • Directory /var/lib/printqd is now the default database directory instead creating a new top level directory /var/printqd below /var.
  • Bugfix in dktools.pc (pkgconfig file)
  • Libs.private is now set correctly.
  • Renamed itaclean.sh to itaclean
  • The lintian program complained about scripts having a script language suffix.

New in dktools 4.3.1 (Sep 16, 2016)

  • Modification in printqdc:
  • In interactive mode the printqdc program now accepts empty lines without complaining.

New in dktools 4.3.0 (Sep 16, 2016)

  • printqd and related programs rewritten
  • rshdown rewritten
  • Print order character `N' added to dk-ls
  • Option -b added to dk-pwgen
  • New program: dk-rand
  • Modified dk4app.h header and dk4appop and dk4applog modules
  • Modified the dk4inst header
  • Module dk4dmt added
  • Modified dk4sock13 module
  • Modified DkWxFrame and Dk4WxFrame class and derived classes
  • Bugfix in dkwxwizard data files
  • Bugfix in the dk4dbi module
  • Bugfix in dkwxwiz data files
  • dk3sock module retired

New in dktools 4.2.2 (Jan 25, 2016)

  • Modified dk-cat, dk-hex, dk-pwgen, dk-t2h, dk-t2l, dk-db2t:
  • Error messages for SIGPIPE only in verbose mode.
  • For these programs a typical use case is to pipe output to a more program, the user might quit the more program without inspecting the entire output.
  • Followed some suggestions from clang static code analysis.

New in dktools 4.2.1 (Jan 25, 2016)

  • Fix in Makefile.in:
  • Neither -lbz2 nor -lz are needed for the dk3conf program.
  • Fix in Makefile.in:
  • For Solaris we have to specify the required libraries not just in the build command line but in the dependency list too.
  • Fix in scripts/dkmproto.pl:
  • Symbolic links are now listed as such in the prototype file (only relevant when building as package on Solaris using shared libraries).

New in dktools 4.2.0 (Jan 25, 2016)

  • Performance fix for dk-send/dk-recv
  • Previously buffers of 1460 bytes were used for fread()/send() and recv()/fwrite() in the hope to match the MTU.
  • Articles about network programming suggest to use large buffers to reduce the number of send() and recv() calls. So the buffer size is now 1048576 for normal systems (the size_t data type is 32 bit or larger) and 16384 for small systems (size_t is 16 bit wide).
  • Performance fix for dk-ls
  • For the option combination ``-p...s... -tf'' we do no longer process directories recursively.
  • In previous versions we processed all directories recursively if size information was requested by ``-p...s...''. In combination with ``-tf'' (show information for files only) the processing result was not used at all.
  • Program dkdbt replaced by dk-t2db, dk-db2t and dk-dbco
  • The dk-t2db program converts a text to a simple text database.
  • The dk-db2t program writes a simple text database as text to standard output.
  • The dk-dbco program copies and converts simple databases.
  • Libraries dk4dbi and dk4dbia added
  • The libraries provide a simple interface to Berkeley DB, NDBM and in-memory databases.
  • Bugfix in the dk4loc_get_settings() function on non-Windows systems:
  • In previous versions the encoding variable remained unset if the LANG environment variable was not found. Fixed now.

New in dktools 4.1.0 (Jan 25, 2016)

  • Added -s option to dk-ls
  • Show a summary at end (number of reported directories and files, total reported size in bytes).
  • Debian-style manpage installation
  • If the configure script detects a Debian system, man pages are not installed by "make install". The man pages are listed in the debian/dktools.manpages file so the Debian package management installs the man pages.
  • Functions added
  • The dk4wreg_get_expanded_string(), dk4wreg_get_expanded_string_c8() and dk4wreg_get_expanded_string_wc() functions retrieve a string from the Windows registry. If the entry type is REG_EXPAND_SZ, the string is expanded. Two intermediate buffers are used: b1 for the RegQueryValueEx() result and b2 for the ExpandEnvironmentStrings() result. The size of b1 should be the same as the result buffer size, b2 should be 2 characters larger.
  • Changes in Windows makefiles for Visual Studio Express for Desktop:
  • Upgraded used libraries to zlib 1.2.8, bzip2 1.0.6, libpng 1.6.19, libjpeg 9a, libtiff 4.0.6, OpenSSL 1.0.2e, wxWidgets 3.0.2.
  • Use wxzlib.lib, wxpng.lib, wxjpeg.lib and wxtiff.lib.
  • Library rpcrt4.lib added.
  • Bugfix in the dk4user module
  • On some systems the registry entry for the user profile is a REG_EXPAND_SZ string containing %SystemDrive%. In previous versions the string was not expanded.
  • Bugfix in DkClockFrame.wxc
  • A minimum size definition for the clock view was added.
  • Bugfix in DkWxImgszFrame.wxc
  • Corrected format specifier in runForNumbers() method in ("%d" changed to "%ld" for the denominator).
  • Modification in DkWxImgszApp.cpt
  • Replaced adding multiple image handlers by one wxInitAllImageHandlers() call to avoid warnings about loading an image handler multiple times.

New in dktools 4.0.10 (Jan 25, 2016)

  • Man pages added. The policies for some Linux distributions require man pages, without man pages there is no chance to see dktools in the distributions package management.
  • Build process changes on Windows: Now we use directories like C:\p\lib-stt64-vs2012 or C:\p\lib-stt64-vs2013... so we can have libraries compiled by different Visual Studio versions on the computer.
  • Bugfix in the dkdbt program: The "dkdbt make" function reported input errors for lines containing comments (forgot to set the line handlers result to success for processing comments).
  • First release after changing the Linux distribution on my laptop.

New in dktools 4.0.9 (Jan 25, 2016)

  • Bugfix: Corrections in Makefile.in and configure.ac.
  • Some programs to install were mentioned twice in Makefile.in.
  • The configure script now sets explicit permissions to scripts in the scripts subdirectory.

New in dktools 4.0.8 (Jan 25, 2016)

  • Changes in build process for Linux/UNIX, modified configure.ac and Makefile.in in an attempt to cross compile for Windows on Linux.
  • Unfortunately I didn't succeed in this.
  • Reduced number of duplicated files in source archive by using hard links.

New in dktools 4.0.7 (Jan 25, 2016)

  • Changed dk4loc module: If the LANG environment variable value is an empty string, use ``en'' as default language.
  • Bugfix in configure.ac: When installing DK tools for a rescue system with packaging enabled, the shared libraries must be installed.

New in dktools 4.0.6 (Jan 25, 2016)

  • Added option -t to dk-sort for sorting by file type suffix.
  • Modified Makefile.in: Only one AC_OUTPUT() instruction to create all output files.
  • Added subdirectory ``debian'', hope I can use it to create a *.deb package on Debian systems. Still experimental.
  • Added scripts sl6-prepare.sh (run as root first) and sl6-build-rpm.sh (run as unprivileged user after running sl6-prepare.sh) for easier RPM file building.
  • Added scripts debian-jessie-prepare.sh (run as root first) and debian-jessie-build-deb.sh (run as unprivileged user after running debian-jessie-prepare.sh) for easier *.deb file building.
  • Modified Makefile.in and configure.ac: Check for wget or curl, "make get-orig-source" downloads the source archive from SourceForge.

New in dktools 4.0.5 (Jan 25, 2016)

  • Correction in help text shown by dk-recv: Host name and port number are mandatory arguments.
  • Correction in Makefile.in: Compiler flags to set include path for wxWidgets are required to build the wxcs program.
  • Changes due to the results of static code analysis using clang: Removed dead assignments. Modifications for warnings about probable NULL pointer dereferencing.

New in dktools 4.0.4 (Jan 25, 2016)

  • Corrections for build process on Linux/UNIX
  • Correction in Makefile.in and configure.ac: The C++ compiler command is used now to invoke the linker if any C++ module is used for a program.
  • Previously the C compiler command was used, this was sufficient on my Scientific Linux 6.x machine (gcc 4.4.7, wxGTK 2.8.11) but did not work on Debian 8.2.0 (gcc 4.9.2, wxGTK 2.8.12).
  • Correction in Makefile.in: The libdk4wx.a library must be in the library list for the GUI suite (LIB_ST_GUI), not for the CLI suite (LIB_ST_CLI).
  • Correction in dktools.pc.in: @VERSNO@ is now used instead of @VERSION@, so the installed dktools.pc file contains the correct version number.
  • Changes for compiling on Solaris systems.
  • S_ERROR renamed to ST_ERROR in the dk3strkv and dk-sqlsplit modules as S_ERROR did hide a definition from a system include file.
  • Change to configure.ac: Do not use "-Bdynamic -dy -KPIC -D_REENTRANT" in static builds.
  • Change to configure.ac: Added the --with-corrections option for use on some Solaris machines. This option is not intended by the majority of users, just for use by myself on some machines with a special setup.

New in dktools 4.0.3 (Jan 25, 2016)

  • The dk3uc2l module was rewritten.
  • It uses the same *.t2l files in dktools/charmap as the dk4uc2l module. So there is no longer a need to maintain two sets of data files for text conversion to LaTeX.

New in dktools 4.0.2 (Jan 25, 2016)

  • Change in dkct: The "tooltip flag" setting in wxWidgets GUI descriptions can be used to enable/disable tool tips.

New in dktools 4.0.1 (Jan 25, 2016)

  • Changes in dkct:
  • Special placeholders in $? format string.
  • You can use the new special placeholders %!8c %!dc %!wc %!8s %!ds %!ws to indicate 8bit, dkChar or wxChar characters or strings. They are replaced by the appropriate %c %lc %hc %s %ls %hs placeholders depending on debug output settings (produce wide character debug file or 8 bit character file, running on Windows or non-Windows system, use 8-bit or wchar_t for dkChar and wxChar).
  • Option -p added for portable debug output code.
  • Without the -p option debug code is generated for the current computer system (Windows/non-Windows, dkChar and wxChar size).
  • If you run dkct on one computer but you plan to compile the source on another computer, use -p to produce source code for all variants with #if branches.

New in dktools 4.0.0 (Jan 25, 2016)

  • New rewritten library modules dk4*:
  • Micro-controller friendly.
  • Error reporting from callee to caller is now through a structure containing some integer components. In dk3* modules the dk3_app_t structure was used, pulling large modules into each project.
  • Use of printf()/scanf() reduced, as functions from these families might increase the size of executable files significantly.
  • Windows system programs and driver friendly.
  • You can use compiler constants DK4_WIN_AVOID_CRT or DK4_WIN_DENY_CRT to reduce or completely deny the use of the C runtime library when compiling dk4* modules.
  • Text stream processing functions analyse a data stream on the fly for a leading BOM (byte oder marker). So there is no need to save the entire input to a temporary file just for BOM inspection.
  • Instead of one very large dk3sock module we have now multiple smaller dk4sock* modules which are easier to maintain.
  • New wxdkfcs program, GUI program to inspect file checksums.
  • Programs rewritten, programs for rescue systems (block size correction, file listing...) should be as small as possible.
  • The former dkt program is replaced by a number of single purpose programs.
  • New features in dkct: in a wx gui section you can set the cell contents of a wxGrid and auto-size data cells and row/column labels.

New in dktools 3.18.10 (Jan 25, 2016)

  • Code simplified in dkt-tape.ctr file.

New in dktools 3.18.9 (Apr 18, 2015)

  • Modifications in configure script and Makefile.in: The option ``--enable-packaging'' was added to the configure script. Instead of one large static library the binaries are linked against the shared libraries, resulting in significantly smaller binaries. This option is intended for package builders. Make sure the shared libraries are installed into a suitable directory, i.e. /usr/lib or /usr/lib64.
  • Change in dkct: In a $!text section one can use preprocessor directives now, see dkct FAQ ? How do I create string table and help text file templates.
  • text sections with preprocessor directives should be marked by the ``preprocessor'' keyword in the $!text line and should not have a file=... argument.
  • New default level DK3_LL_NONE for file log level and log file keep level to avoid filling up $HOME/log with more and more log files.
  • The directory $HOME/tmp/application-pid is created when the first file name for a temporary file is retrieved. This avoids filling up the $HOME/tmp directory.
  • The ${datadir}/dkt-3 directory was renamed to ${datadir}/dktools to allow versions 3.x.x and later versions 4.x.x to share one data directory.

New in dktools 3.18.8 (Apr 18, 2015)

  • Configure script and Makefile renewed. Now we can enable/disable both shared and static libraries.
  • A summary about found / not found external libraries is printed by the configure script.

New in dktools 3.18.7 (Feb 23, 2015)

  • Bugfix in the dkct program:
  • Doxygen also allows a pure @file without a file name appended. In previous versions we did not properly recognize such a line as ``@file'' line present, so a further @file comment was added.

New in dktools 3.18.6 (Feb 4, 2015)

  • Bugfix in the plpdftex program: The \smash instruction is used only for those texts vertically aligned to the base line.

New in dktools 3.18.5 (Jan 28, 2015)

  • Bugfix in the ``dkt tape'' program: When switching to version 3.16.0 I replaced many occurances of sprintf()... by simple number to text conversion routines. Accidently I passed the current day index to the conversion routine instead of the tape number. This is fixed now.
  • Bugfix in the plpdftex program: A \smash instruction was added to align text to the baseline (only texts without boxes).
  • The pjsnmpreadystates configuration option was added to the pjsnmp program.
  • Some message texts in pjsnmp changed for better distinction between errors and warnings.

New in dktools 3.18.4 (Dec 9, 2014)

  • Bugfix in the plpdftex program: Previous versions of plpdftex sometimes created invalid *.tex output when producing a *.pdf/*.tex file pair.

New in dktools 3.18.3 (Dec 2, 2014)

  • Library bugfix in UTF-16 encoding: Test, whether a 32 bit character is in the surrogates range was wrong. Fixed now.

New in dktools 3.18.2 (Dec 2, 2014)

  • Change in dkct: If a '/ * * @file ...* /' comment is detected in a header or module no additional comment is added by dkct.
  • The detection algorithm is not perfect. If you have strings like: const char example_text[] = { "/** @file bla blubb */" }; in the source code, they are misinterpreted as ``doxygen comment is present''.
  • Normally there is no reason to have such strings in program. If you have a reason for such strings, split them over two lines like:
  • const char example_text[] = {
  • "/**"
  • " @file bla blubb */"
  • Changed data type for dk3_c32_t from ``unsigned long'' to ``unsigned'' if ``unsigned int'' is 4 bytes long. Now the ``unsigned long'' data type is used only if ``unsigned int'' is too short.
  • On some 64 bit systems the ``unsigned long'' data type is 8 bytes long, using it for 32 bit data types would be waste of memory.
  • Verifying success of password memory cleaning.
  • After resetting the memory used to store passwords in ``dkt crp'' and ``itadmin'', the memory is traversed and the byte are read and compared against 0.
  • In previous versions there was no read access to the memory after resetting it, so compilers might skip the memory reset to optimize the program.

New in dktools 3.18.1 (Nov 3, 2014)

  • Bugfix in dk3mas, dk3mai, and dk3mal: In previous version there were false overflow detections in multiplications if a*b=MIN.
  • Example: A multiplication of two short values -2 and 16384 results in -32768 which is a correct result -215. In previous versions an overflow was reported as |-2|*|16384|>215-1.
  • This is fixed now.

New in dktools 3.18.0 (Oct 17, 2014)

  • The dkct program now checks the "copyright year" and issues a warning if the time range does not end in the current year.
  • API change in dk3str_c32_normalize() and dk3str_c16_normalize(): The final parameter must be a character of same size as used for the strings before.
  • Warnings related to dkChar/char conversions on Windows resolved for the htmlbook and dkdbt programs.
  • API change: The dk3mastr module was splitted into several modules:
  • dk3maid8 - Retrieve numbers from char strings in decimal notation.
  • dk3maih8 - Retrieve numbers from char strings in hexadecimal notation.
  • dk3maidd - Retrieve numbers from dkChar strings in decimal notation.
  • dk3maihd - Retrieve numbers from dkChar strings in hexadecimal notation.
  • dk3maod8 - Write dk3_um_t/dk3_im_t to char string in decimal notation.
  • dk3maoh8 - Write dk3_um_t/dk3_im_t to char string in hexadecimal notation.
  • dk3maodd - Write dk3_um_t/dk3_im_t to dkChar string in decimal notation.
  • dk3maohd - Write dk3_um_t/dk3_im_t to dkChar string in hexadecimal notation.
  • dk3masts - Retrieve size_t from dkChar string.
  • All sscanf() and dk3sf_sscanf3() calls replaced in library modules (dk3*.c files) except dk3figrd.

New in dktools 3.17.2 (Sep 25, 2014)

  • Bugfix in the Windows code of the dk3sock module: Windows uses the WSAEWOULDBLOCK error code (not WSAEINPROGRESS) to indicate a connect operation is not yet finished when calling connect() on a non-blocking socket. As other systems use EINPROGRESS for that purpose I attempted to use WSAEINPROGRESS. This is corrected now.

New in dktools 3.17.1 (Sep 25, 2014)

  • Changes in scripts to create the source archive for distribution.
  • When I attempted to upload version 3.17.0 to CTAN, the CTAN team suggested changes, mainly related to file permissions.
  • Due to the "umask 027" in my .bash_profile the directories and files after unpacking the source archive had permissions 750 or 640. The CTAN team suggested to use 755 and 644 instead.
  • For some files I corrected line ends to Linux/Unix style.
  • No changes in functionality, no bug fixes...

New in dktools 3.17.0 (Sep 25, 2014)

  • Appendix `k', `M', or `G' allowed when specifying the block size for ``dkt blks'', ``dkt ed'', and ``dkt rnd'' (-b option).
  • Recommended sizes are 4k for traditional hard disks, 1M for SSD drives.
  • Bugfix in fig2lat EPS/PDF/PGF output driver:
  • In previous versions a wrong formula was used to calculate the corner radius for rounded boxes (corner radius in Fig file is specified as multiples of 1/80 inch, not 1/1200 inch).
  • Bugfix in wxbmpp (dk3paper module):
  • While replacing sscanf() and dk3sf_sscanf3() by dk3ma_d_from_string() I accidently inverted the logic and reset the result variable to "failed" when dk3ma_d_from_string() indicated "success". Fixed now.
  • Bugfix in wxbmpp:
  • Failed to create documents fitted to a paper size. Fixed now.
  • Bugfix in distribution scripts: When building the source archive for distribution we have to correct the shared object version SOVERS in the GNUmakefile.in. This correction was lost in the changes from 3.14.0 to 3.15.0. Now it's back.

New in dktools 3.16.3 (Sep 25, 2014)

  • Changes in the build process for Linux/UNIX. No changes in functionality. Now I use #if wxCHECK_VERSION(2, 9, 0)
  • wxFileDialog dlg(this, sTexts[48], sCurrentDir, wxT(""), s, wxFD_OPEN);
  • #else
  • wxFileDialog dlg(this, sTexts[48], sCurrentDir, wxT(""), s, wxOPEN);
  • #endif
  • to switch between wxOPEN and wxFD_OPEN depending on the wxWidgets version.

New in dktools 3.16.2 (Sep 25, 2014)

  • Changes in the build process for Linux/UNIX. No changes in functionality.
  • The options --with-fallback-string-functions and --with-fallback-string-functions did have no effect since version 3.15.0 and 3.16.0. Now I removed them from configure script.

New in dktools 3.16.1 (Sep 25, 2014)

  • Changes in the build process for Linux/UNIX. No changes in functionality.
  • The C++ compiler command is used now to start the linker for those binaries with *.cpp modules involved.
  • Recent versions of wxWidgets do not longer use wxOPEN, wxFD_OPEN is used instead.
  • Typo corrected in the makefile, CLFAGS was used instead of CFLAGS.

New in dktools 3.16.0 (Jul 29, 2014)

  • New application plpdftex added, an output driver for the pgfplot() function in the octpgfpl package for GNU Octave.
  • Internal code changes, not visible to end user:
  • Use sigaction() instead of sigset() if available. This also eliminates warnings about missing prototypes for sigset().
  • Many function-like macros replaced by functions (PRE00-C). Preprocessor definitions for int values replaced by enums.
  • Modified overflow checking in conversions from unsigned long to unsigned short or size_t. In the previous versions the compiler could optimize the checking out.
  • The dk3ma module is splitted into several modules now:
  • dk3mad: Operations on double.
  • dk3mas: Operations on short.
  • dk3maus: Operations on unsigned short.
  • dk3mai: Operations on int.
  • dk3maui: Operations on unsigned int.
  • dk3mal: Operations on long, long long, intmax_t and dk3_im_t.
  • dk3maul: Operations on unsigned long, unsigned long long, uintmax_t and dk3_um_t.
  • dk3mastr: Conversion from dk3_im_t and dk3_um_t to strings.
  • dk3madsc: Conversion from double to short and unsigned short.
  • dk3madic: Conversion from double to int and unsigned.
  • dk3madlc: Conversion from double to long, unsigned long, long long, unsigned long long, intmax_t, uintmax_t, dk3_im_t and dk3_um_t.
  • dk3madfo: Output function to write a double value to file avoiding exponential notation (scientific notation).
  • dk3madso: Output functions to write a double to a string.
  • dk3madsi: Input function to read a double from a string.
  • For the prototypes, just include dk3ma.h as usual, this file in turn includes the header files for all the modules. When linking, use just the modules needed.
  • Functions dk3strm_double_c8_no_sci() and dk3of_double_to_c8_no_sci() were added to write a double number to a dk3_stream_t or a dk3_of_t without using scientific notation.
  • The dk3pdf_write_double() function was modified. Values smaller than 1.0e-8 are rounded to 0. Scientific notation is avoided.
  • The dk3md module is no longer placed in the libdk3c.* library, as the size of long double differs between system and I did not yet find a way to retrieve the maximum long double value in the configure script.

New in dktools 3.15.0 (Jul 4, 2014)

  • Source archive structure reorganized
  • The "size-check" target was added to the Windows makefile to test correct DK3_SIZEOF_... definitions before building the software
  • Code changes aware of miscompiled volatile-qualified variables in the dkt-ed, dkt-rnd, pjsnmp, printqd and printqdi module following Rule DCL17-C from the CERT secure coding standards

New in dktools 3.14.0 (Jul 4, 2014)

  • Option "-S character" added to dkct and wxdkct to specify the comment character for splint.
  • Changes for bit matrices:
  • Data structure: In previous versions each row was saved as one stripe in memory. For a 1024 rows, 7 columns matrix this resulted in an array of 1024 pointers pointing to 1 byte of dynamically allocated memory each.
  • Now if the number of columns is smaller than the number of rows we use memory stripes per column, resulting in 7 stripes of 128 bytes.
  • Cache friendly algorithm: You can use the /bitmatrix/expand/cache-friendly preference to set a size level to switch from simple bit matrix expansion algorithm to a cache friendly algorithm.
  • The default 0 indicates to always use the simple algorithm.
  • You can specify a size in bytes for the bit matrix data.

New in dktools 3.13.0 (May 28, 2014)

  • In htmlbook you can generate code for line numbering automatically in sourcefile and code special commands
  • Option -l for the dkt html command to produce line numbering for max. 999 lines
  • desktop files for GUI programs, so they appear in the menus of Linux desktops

New in dktools 3.12.0 (May 2, 2014)

  • New application wxdkhtb to view *.htb online help files
  • Change in htmlbook: We can enable/disable full text search in *.chm output in the project file
  • Installation bugfix: The libdk3wx.so library was not installed
  • HTML files for online help are now prepared using htmlbook
  • API change: The methods
  • void openHelpSectionByName(wxString const & name)
  • void openHelpSectionByNumber(int number)
  • were added to the DkWxFrame class

New in dktools 3.11.0 (Apr 24, 2014)

  • New features in htmlbook
  • When producing output for a HTML help compiler project, we also write an index.xml file for use with the chmcmd program from Free Pascal
  • In position and index we can write the section number before the section title (configurable)
  • The links in the keyword index have a title now, resulting in a tool tip if mouse is moved over link
  • Bugfixes in htmlbook, related to HTML generation for HTML help compiler
  • When producing output for a HTML help compiler project, the *.hhp file must list all *.html files in the [files] section, not just the additional files
  • The closing OBJECT tag was missing in the index.hhk file
  • The script (*.sh or *.cmd file) generated by the htmlbook program must copy index.hhp, index.hhc and optionally index.hhk to the destination directory
  • The root object is now inserted into the table of contents as the first entry (it was ignored previously)
  • Change in printqd: Before opening the UNIX domain socket for listening the program removes an existing socket (if present) to avoid errors
  • Bugfix in printqd: I forgot to increment a pointer in a while loop, this caused the program to hang if a limit was specified for a group with a member list
  • New subfunction "env" for dkwt to manipulate system and user environment variables
  • The dkwxclock program now saves option changes immediately

New in dktools 3.10.0 (Apr 2, 2014)

  • Fig2lat now uses fast splines to draw arrowheads on curved lines (arcs and open splines). This results in smaller output files
  • According to the Fig file format specification previous versions of fig2lat used a base line width of 1/80 inch. Object line widths are multiples of the base line width
  • In version 3.10.0 and above you can specify the base line width using the "lw" option
  • API changes in the dk3fig and dk3fig... modules for the changes above

New in dktools 3.9.0 (Mar 25, 2014)

  • API change in the dk3_pixel_resample_t structure
  • Algorithm for bits per component analysis in bmpp and fig2lat changed. Algorithm for pixel resampling (changing the number of bits per component) changed. When resampling a value x from old number of bits per component o to the new number n we now use the formula: y=x*(2^n-1)/(2^o-1)
  • The new algorithms are more accurat but may take a little more time

New in dktools 3.8.2 (Feb 7, 2014)

  • New "no-vspace"option for the %%img%% special command. This option is intended for formula images typeset between text paragraphs. The div.hb_img_div_no_vspace class without a margin-top and margin-bottom setting is used instead of div.hb_img_div_outer
  • New shortcuts:
  • %%img.suffix file=basename.suffix ...%%
  • %%img.suffix file=basename ...%%
  • which are treated as
  • %%img src=basename.png svg=basename.svg pdf=basename.pdf table title download ...%%
  • For "img.tex" the additional option "no-vspace" is added too

New in dktools 3.8.1 (Feb 7, 2014)

  • Bugfix in htmlbook: The program crashed if a file name was specified without a suffix and no suffix was configured for the node. Fixed now.
  • Changes in the style.css file for htmlbook. Added top and bottom margin to div.hb_navigation.

New in dktools 3.8.0 (Jan 27, 2014)

  • New htmlbook application to publish HTML like a book
  • Bugfix in the dk3enc module: While RFC 3629 allows 32-bit characters up to 0x0010FFFFUL I used a comparison against 0x0010FFUL in previous versions. This is fixed now.

New in dktools 3.7.0 (Nov 29, 2013)

  • The Euro currency symbol was added to the translation tables for "dkt latex".
  • API changes in the dk3ma module:
  • Support for the "long long", "unsigned long long", "intmax_t", and "uintmax_t" data type added if available on the system.
  • The dk3_im_t/dk3_um_t typedefs are mapped to intmax_t/uintmax_t if available on the system, to long long/unsigned long long or long/unsigned long otherwise.
  • Optimizations for smaller code.
  • The following library versions were used to build the Windows binaries: zlib 1.2.8, bzip2 1.0.6, libpng 1.6.7, libjpeg 9, libtiff 4.0.3, OpenSSL 1.0.1e, wxWidgets 2.8.12.

New in dktools 3.6.0 (Nov 29, 2013)

  • Changes in the fig2lat application:
  • New option: The new cofop option (enabled by default) automatically converts open graphics paths to closed graphics paths if fill options are set for the path.
  • Bugfix: When putting text to SVG output we must encode some characters (i.e. &, ...). In previous versions text was written to SVG output "as is", without the necessary encoding.
  • API change: Some constants and functions were renamed in the dk3ma module for consistent naming.

New in dktools 3.5.0 (Oct 24, 2013)

  • During installation on Windows the dkwxpath.exe application adds context menu entries:
  • WxBmpp: Convert
  • JPEG to EPS or PDF image,
  • PNG to EPS or PDF image or PDF object for use with pdfLaTeX,
  • TIFF to EPS or PDF image, PS or PDF document or PDF object for use with pdfLaTeX.
  • WinPrint: Send *.prn or *.ps file to default print queue or specify a destination printer.
  • Module dk3wreg added for Windows registry operations.
  • Change in wxbmpp: No automatic start when running on a directory, the "-r" option is required to run automatically.

New in dktools 3.4.0 (Oct 2, 2013)

  • Further performance optimization in "dkt blocksize", now we use system functions like memcpy() instead of a self-made function to copy memory.
  • Incomplete send() requests are now handled in the dk3sock module. The previous dk3socket_send() function calls send() just once even if the buffer was sent only partially. So the function was renamed to dk3socket_send_attempt(), the new dk3socket_send() function calls dk3socket_send_attempt() multiple times if necessary.
  • Modifications in the dk3str module:
  • New default for dk3str_len(), dk3str_c8_len()... macros: The system function (strlen(), wcslen() or _wcslen()) is used if available.
  • Only for dk3str..._cpy() and dk3str..._ncpy() we use the self-made dk3str..._cpy_fb() and dk3str..._ncpy_fb() fallback functions as these allow string modifications (copying within the string from left to right).
  • Use the macros DK3STR..._CPY() and DK3STR..._NCPY() if you are sure source and destination do not overlap.
  • Convenience macros to call xxx_app() functions without the final app argument removed.

New in dktools 3.3.3 (Sep 21, 2013)

  • Option -s for "dkt blocksize" to increase performance when processing standard input.
  • Bugfix in itadmin: DHCP options for hosts were not written to dhcpd.conf. This is fixed now.
  • Length for DHCP options value increased in the dhcpoptions table in the initial *.sql files for itadmin.

New in dktools 3.3.2 (Jul 31, 2013)

  • The const keyword was added to dk3sto_it_find_exact() and dk3sto_it_find_like().

New in dktools 3.3.1 (Jul 31, 2013)

  • Bugfix in the distribution and build system for Linux/Unix:
  • Due to expired header files in the gui subdirectory of version 3.3.0 the GUI applications were not built by "configure; make; make install". Also the RPMs did not contain the GUI applications.

New in dktools 3.3.0 (Jul 31, 2013)

  • No change in functionality of programs, only library API changed.
  • API change in the dk3sto module: The comparison and evaluation functions use void const * pointers now (instead of the void * pointers used previously).
  • Improvements in itadmin code to allow compilation by C++ compiler (explicit type casts inserted).

New in dktools 3.2.2 (Jul 25, 2013)

  • Error message text in "dkt ls" and problem description for file name quoting on Windows systems resulting in backslash escape sequences and passing wrong arguments (i.e. the text "C:\" typed in cmd.exe results in C:" passed as argument to external programs, tested on Windows 7 Prof., 2013-07-23).

New in dktools 3.2.1 (Jul 23, 2013)

  • The "Graphics conversion hints" page was moved out into a separated project, you can find it on SourceForge too: http://gxhints.sourceforge.net
  • There is not just a description of procedures, the new project also contains a perl script gxhconvert implementing the procedures. The script runs the conversion programs, finally it cleans up and removes temporary files.
  • If you run "dkt ls" on drives or mapped drives - i.e. "C:" or "\\server\share" - on Windows the program automatically corrects these names to "C:\" or "\\server\share\" if necessary as the system functions do not recognize "C:" or "\\server\share" as a directory.
  • Bugfix for the "dkt ls" command on Windows platforms: When printing the summary information I used fputc() to print spaces although standard output was brought to to UTF-16 mode before. So the program crashed when printing the summary.
  • This is fixed now, dk3sf_fputc() is used instead.
  • Changes in configure script and makefiles for building on Ubuntu.
  • Bugfix in dk3strm.ctr (used by dkt): A misleading error message "failed to convert to UTF-16" was written in previous versions instead of "failed to convert to UTF-8". This is fixed now.

New in dktools 3.2.0 (Jun 15, 2013)

  • New option ste=encoding for the fig2lat program.
  • The "dkt latex" command now reports conflicts in font encoding requirements.
  • Library changes, a font encoding component was introduced into the dk3_uc2lat_range_t and dk3_uc2lat_t data types. So we can keep track of font encoding requirements and report conflicts using the new dk3uc2lat_font_encoding_report() function.
  • The following library versions were used to build the Windows binaries: zlib 1.2.8, bzip2 1.0.6, libpng 1.6.2, libjpeg 9, libtiff 4.0.3, OpenSSL 1.0.1e, wxWidgets 2.8.12.

New in dktools 3.1.0 (Jun 15, 2013)

  • The "dkt tape-report file" command was added to produce a report of tapes sorted by use date.
  • Function dk3stream_strnl() added to dk3strm.
  • Option changes for "dkt tape" and "dkt tape-set".
  • The dkt-tape module was rewritten completely.
  • Bugfix for build problem: The file was not explicitly included in the dk3bif module.

New in dktools 3.0.9 (May 15, 2013)

  • No changes in functionality of the programs, just changes in the distribution archive.
  • In previous versions symbolic links to *.c files in the base directory were created in the gui subdirectory before building the *.zip file.
  • These links are created during the "make" run now, so the *.zip file is a little smaller.

New in dktools 3.0.8 (May 15, 2013)

  • No changes in functionality of the programs, only changes in the libraries.
  • The const keyword was applied to more function arguments.
  • The developer documentation now contains the doxygen output for the libraries only.
  • The previous static variables last_log_file and last_log_stderr are now member variables t_last_log_file and t_last_log_stderr of dk3_app_t.
  • As DkWxColorView is a control, it is derived from wxControl now.
  • The former DkWxBufferedWindow class is derived from wxControl now. It was renamed to DkWxBufferedControl to reflect the change.
  • API changes, a wxValidator argument was added to constructor and Create() function.

New in dktools 3.0.7 (Apr 26, 2013)

  • Modifications in wxdkclock:
  • When run with -t option the program hides behind the task bar icon when iconized.
  • Clock colour for normal state and alert state configurable.

New in dktools 3.0.6 (Apr 26, 2013)

  • Windows executable setup for 64-bit Windows only.
  • I switched the build process for Windows binaries from using Visual Studio 2008 with Windows Platform SDK 7 on 32-bit and 64-bit computers to one 64-bit computer with Visual Studio 2012 Express.
  • So if you have a 32-bit system only or an older Windows version not capable of running these binaries, please use version 3.0.5 or below.
  • For 3.0.6 the Windows binaries are linked using the following library versions: zlib 1.2.7, bzip2 1.0.6, libpng 1.6.1, libjpeg 9, libtiff 4.0.3, OpenSSL 1.0.1e, Net-SNMP 5.7.2, wxWidgets 2.8.12.
  • New program wxdkclock showing a simple clock with configurable alert.
  • New preferences /gui/restore/maximized and /gui/restore/iconized.
  • Using these preferences you can control whether the maximized and/or iconized state is restored when an application window restores the position. Default: off.
  • Option "complete constructor specified" added to wx-gui sections of dkct.
  • For unknown/unsupported classes dkct inserts parent and id before the arguments specified in the "constructor" attribute if the "complete constructor specified" attribute is not set (and follows my own guidelines for self-made canvas classes).
  • Classes DkWxProcessingController and DkWxProcessingIdleController added. They can be used to avoid concurrent execution of the same code, especially in timer event handlers (processing takes longer than timer period) and idle event handlers.
  • In contrast to a critical section delaying operations these controllers skip operations.
  • The new DkWxBufferedWindow class can be used as parent class for custom canvas classes (classes responding to paint events).
  • This class is triple-buffered. In a double-buffered wxWindow the drawing is created in an in-memory bitmap first, after completion the result is transferred to the device context. The DkWxBufferedWindow class additionally saves the bitmap between invokations of the paint event handler, so the image can be reused.
  • Argument order in DkWxColorView constructor changed, it now uses parent and id as first two arguments.

New in dktools 3.0.5 (Apr 26, 2013)

  • Bugfix in dkct: When adding buttons to a wxStdButtonSizer we have to use the sizers AddButton() method, not Add().
  • Bugfix in wxbmpp, wxdkct, wximgsz: For option dialogs the buttons are shown in correct order.
  • Change in Windows installation: No reboot required after installation/uninstallation.
  • Change in the build system: On Solaris when using Workshop compilers the current LD_LIBRARY_PATH value is configured as -Rpath when linking binaries.
  • Option to show license unified: Formerly we had both --license and --license-terms, now all (most) programs use --license-terms.

New in dktools 3.0.4 (Apr 26, 2013)

  • For Windows XP I created a special module dk3sockx. This module provides nearly the same functionality as dk3sock but uses only Winsock functions available in Windows XP SP2.
  • For the networking programs dknet, lprngcl and wxpqdic there are Windows XP variants dknet-xp, lprngcl-xp and wxpqdic-xp now.

New in dktools 3.0.3 (Mar 18, 2013)

  • The -f option for dknet is now documented in the online help.
  • Correction in the HTML documentation for dknet: The number of clients for a sender is specified using -n, not -c.

New in dktools 3.0.2 (Mar 18, 2013)

  • The dknet program is more verbose now when running as sender.
  • The -f option was added for controlled output flush.

New in dktools 3.0.1 (Mar 18, 2013)

  • The winprint program was added. The program schedules a print job data file to a Windows print queue.
  • The wprclean program removes all print jobs created by the current user from local Windows print queues. Intended for PC classrooms.
  • The lprngcl program removes all print jobs created by the current user from LPRng/LPD print queues. Intended for PC classrooms.
  • The dkwxwiz program was added to create source code skeletons for GUI applications based on wxWidgets, using the dktools libraries and the dkct program.
  • The "bbts" option was added to fig2lat.
  • Bugfix in the 32-bit distribution for Windows: The dk3paper.conf file was not installed in version 3.0.0.
  • Bugfix in dkct: The \r character was not written correctly in string tables and texts.

New in dktools 3.0.0 (Mar 14, 2013)

  • bmpp (formerly bmeps):
  • Binary data is written to PDF output. PDF files created by bmpp can be approximately 20% smaller then files from bmeps.
  • PS level 3 is used for PS output by default (2 was used by bmeps).
  • Switching back to PS level 2 is possible.
  • Easier configuration, all options to reduce output file size are turned on by default.
  • Image analysis: Number of significant bits, color usage, alpha usage.
  • Interpolation turned on by default (except for DCT-compressed data from JPEG files).
  • fig2lat (formerly fig2vect):
  • Primary output driver changed, PDF+TeX now.
  • PGF driver added.
  • MetaPost and Java output drivers removed.
  • dkt (formerly various programs):
  • The functionality of multiple formerly separated programs (i.e. kls, fchksum, blks, showhex, dkpwd, text2lat, echo2lat, text2htm, uid, edbp, tape) was merged into the dkt program with subcommands.
  • dkct (formerly tracecc):
  • Support for state machines (formerly genau) was included.
  • Generation of GUI-code for use with the wxWidgets library.
  • Module and header file produced from one dkct source file.
  • itadmin (formerly hostsadm):
  • Binary file now, no need to have Perl and the MySQL perl modules.
  • dkwt:
  • Tool to list Windows users, groups, printers. The program also provides some functionality needed for PC classrooms: Cleaning up public writable directories, cleaning up profile directories.
  • dknet (formerly tcptool):
  • IPv6 ready. The dknet4 program can be used on legacy systems without IPv6 support in the system libraries.
  • printqd (formerly prqd):
  • The information daemon printqdi is now a standing daemon (threaded), no longer a one-session daemon started by inetd. So users should receive the response significantly faster.

New in dktools 2.2.27 (Mar 14, 2013)

  • The addctrld program is no longer installed.
  • The intended reason is coexistence of dktools-2.x.x and dkt-3.x.x when installed using package management.
  • Only one package can contain the addctrld program, now it's in the dkt package.
  • If you install via RPM you should upgrade dktools to version 2.2.27 first before installing dkt 3.0.0.

New in dktools 2.2.26 (Mar 14, 2013)

  • Bugfix in fig2vect: One-point polylines were treated as errors in previous versions of fig2vect.
  • Now a one-point polyline creates a single point, the shape is either a dot or a square, depending on the line cap setting.

New in dktools 2.2.25e (Mar 14, 2013)

  • Bugfix in Windows installer: Previous versions installed context menu items referring to the Java application from dktools-gui although these applications are now replaced by the programs from dktools 3-preview.
  • The installer version 2.2.25e only sets the PATH environment variable, it does not install any context menu items.
  • You should uninstall any previous version before installing 2.2.25e to get rid of the context menu items.

New in dktools 2.2.25a (Mar 14, 2013)

  • he 3-preview branch now contains C/C++ programs replacing all the Java applications from the dktools-gui subproject.
  • So if you install dktools 2.2.25 and dktools 3-preview-20120625 there is no longer a need to install a Java runtime environment (JRE) to use dktools GUI applications.
  • The executable setup for windows contains the new programs:
  • wxbmpp: Replaces the bmeps GUI, can be used to convert PNG/JPEG/TIFF images to PS/EPS/PDF.
  • wxdkct: Replaces the tracecc GUI, can be used for debugging/tracing C/C++/Objective-C/Java programs.
  • Additionally wxdkct contains a code generator to create constructors for wxFrame and wxDialog derived classes.
  • iwximgsz: Replaces the photoscale application, suggests new width/height combinations to resize an image, evaluates the scale factors.

New in dktools 2.2.25 (Mar 14, 2013)

  • Change to fsnmp: If the file name specified for accounting is a UNIX domain socket, fsnmp connects to the socket and sends accounting information.

New in dktools 2.2.24 (Mar 14, 2013)

  • Documentation changes only.
  • Notes about the new programs from version 3 already available in the 3-preview archives and in the binary Windows distribution were added.

New in dktools 2.2.23 (Mar 14, 2013)

  • Bugfix in fig2vect.
  • When the program was not properly installed it wrote misleading error messages "not enough memory". The message is corrected now.

New in dktools 2.2.22 (Mar 14, 2013)

  • Bugfix in the configure script for Unix/Linux. There was an unnecessary program invokation of wx-config with wrong arguments. This is removed now.print accounts and page counts with value 0.
  • Dependencies on netpbm and gdbm removed.
  • This removed support for NetPBM image files and GDBM databases.

New in dktools 2.2.21 (Mar 14, 2013)

  • The hostsadm.pl script now also adds netgroup triples containing a hosts IP address to the netgroup.ldif file.
  • After upgrading a Solaris server to Solaris 10 Upgrade 9 with Samba 3.5.8 some PCs failed to access the Samba shares. In the log files I found that Samba asked whether or not the IP address is a netgroup member. Adding also a nisNetgroupTriple containing the IP address ensures the netgroup memberships are found correctly.
  • The "ctrl database-cleanup" operation for prqd now removes print accounts and page counts with value 0.
  • Dependencies on netpbm and gdbm removed.
  • This removed support for NetPBM image files and GDBM databases.

New in dktools 2.2.20 (Mar 14, 2013)

  • Program imgsize renamed to chimgsize to resolve name conflict with the perl-Image-Size RPM.
  • The former DKrause::Diagram Perl module is now available on CPAN as LaTeX::PGF::Diagram2D.