| ← Previous | ↑ Home | Next → |
Current version: 4.39.0
Current dklivesys version: 1.0.22
Change in plpdftex
The program can only be run by non-administrative users.
Change in dk-eradisk
Default block size increased from 4K to 4M.
Changed configuration behaviour
For programs run by administrative users the current working directory is excluded from configuration file search and preference file search. Administrative users sometimes work in other users directories, so they should not accidently use configuration files they did not write theirselves.
Scripts reorganized in subdirectories
Scripts are now organized in subdirectories of the scripts directory to group them by OS and purpose.
The “debian”, “fedora”, and “oracle-linux” directories contain scripts to prepare package building as root and to do package building as unprivileged user.
The “configure” directory contains scripts run by the configure script.
The “make-dist” directory contains scripts used while building the distribution archive.
The “tools” directory contains scripts called from the scripts mentioned above.
Man pages changed
Options are now listed in alphabetical order instead of grouping them by purpose.
Library API changes
Added Brent-Dekker root finding algorithm to the dk4iter module.
Added oscillation detection to the dk4iter module.
Added check to dk4mem module, number of bytes to allocate must not exceed PTRDIFF_MAX.
Replaced complicated combination of conditions in dk4fput module by #if DK4_USE_SETMODE_UTF16.
Modified dk4memres module, now using DK4_USE_PARANOID_MEMORY_CHECK as condition for paranoid memory check.
Modified the dk4numco.h file, if SIZE_MAX is not yet defined, attempt to use UINTMAX_MAX, ULLONG_MAX, ULONG_MAX, or USHRT_MAX.
Removed modules from the libdk4c library:
Moved dk4mdch module from libdk4c to libdk4mdrnd library.
Moved some data types from dk4types.h to dk4mai8lineapp.ctr module.
Moved dk4stream_set_output_encoding() function from dk4strmo32 module to dk4strm module.
Now the dk4time_i_as_text_c8(), dk4time_convert_to_text_c8(), dk4time_as_text_c8(), dk4time_i_as_text_wc(), dk4time_convert_to_text_wc(), dk4time_as_text_wc(), dk4time_convert_to_text(), and dk4time_as_text() functions all use an output format identifier.
In dk4fopen() and dk4fopen_app() you can simply use DK4_FOPEN_SC_AUTO for the tests parameter. The dk4fopen_check() and alike functions automatically choose the test set based on (1) read or write access required and (2) for write access: is program running in administrative or unprivileged account.
Exception: For daemons not running as root (like printqd) or programs run by such a daemon (like pjsnmp) use DK4_FOPEN_SC_PRIVILEGED when opening files for write access.
A new dk4fopt module was added to support automatic test set selection.
Allow memory allocations up to PTRDIFF_MAX bytes only, as suggested by the GNU libc documentation. On larger memory blocks calculating pointer differences can result in numeric overflows.
Bugfix
In the dk4wreg8 and dk4wregw modules an identifier DK4_WREGKEY_KHUS was used instead of DK4_WREGKEY_HKUS. So compilation failed on Windows systems.
Package building tests
Linux package building and Windows installer building were tested on:
Debian 13
This version of dklivesys must be run on Debian 13 systems and produces Debian 13 live systems.
Replaced ntp by ntpsec
The ntp package was replaced by the ntpsec package.
Firefox policies to avoid translations
Policies for firefox were added to suppress the boring translation dialog.
Modified installation on Windows (the dkwxpath program)
The dkwxpath program was rewritten from scratch to use the libdk4wx library instead of the libdk3wx library used formerly.
In previous versions the installation modified the PATH variable and added context menu items for some file types. The registry entries created by the installation routine resulted in context menu items in previous Windows version, but not on Windows 10 and 11.
To avoid filling the registry with unused data, the installation routine now only modifies the PATH environment variable and does no longer attempt to create context menu items.
Program winprint rewritten
The winprint program was rewritten from scratch to use the libdk4wx library instead of the libdk3wx library used formerly.
Program wxdkhtb rewritten
The wxdkhtb program was rewritten from scratch to use the libdk4wx library instead of the libdk3wx library used formerly.
Modified htmlbook
The project file option “index output” allows to choose another root file instead of index.html.
The project file option “chm close li” can be used to write optional closing list item tags to hhk and hhc output files.
Modified dkwt
In “dkwt print” the “-d Name” option can be used to specify a device name (port name) or a printer name now.
MIME type entries
MIME type entries were added to some *.desktop files to register applications with file types.
MS Visual Studio 2022
Files involved in the build process for Windows applications were modified, so Visual Studio 2022 can be used to build Windows applications.
Help file modifications
PDF is used for online help now instead of CHM and HTB.
Users having both a PDF reader and PDF editing/publishing software installed should configure the PDF reader as default application to open PDF files.
Library API changes
The libdk3wx library was retired, it is no longer used.
The Dk4WxFrame class does not longer have a Dk4WxHelpController member nor does the constructor use a Dk4WxHelpController parameter.
The new pcdksBin member of the Dk4WxApplicationHelper class saves the bin directory. The GetDksBin() member function can be used to retrieve the directory.
The dk4wreg_get_allocated_string() and dk4wreg_get_string_size() functions were added to the dk4wregd module, similar functions were added to the dk4wreg8 and dk4wregw modules.
Package building tests
Linux package building and Windows installer building were tested on:
Note the switch from Fedora 40 + MinGW + NSIS to Debian 12 + MinGW + NSIS to build Windows binaries on Linux.
Configuration option ALLOWCUPSBROWSED
The boolean option can be used to allow or deny the cups-browsed service. Use “no” to prevent cups-browsed from starting. For “yes” it depends on your package configuration, cups-browsed is started if the „cups-browsed“ package is installed.
The default is “no” when producing a Disklessian live system, “yes” when producing a DKtoolian live system.
Configuration option ALLOWBLUETOOTH
The boolean option can be used to allow or deny the bluetooth service. Use “no” to prevent the bluetooth service from starting. For “yes” it depends on your package configuration, the bluetooth service is started if it is installed.
The default is “no” when producing a Disklessian live system, “yes” when producing a DKtoolian live system.
Internal changes
The libexec/dklivesys/hooks-* scripts were modified to make renumbering the hook scripts easier.
Bugfix in wxd2lat
Correct arrowhead width is used on splines now (multiplication of width specification with line width was missing).
Tea brewing time option for wxdkclock
A new option was added to the dkclock program. You can set a tea brewing time in minutes. When activating alert, the suggested alert time is calculated the specified number of minutes from the current time.
Fix in itadmin for use with TeXLive 2023
After switching to TeXLive 2023 I had problems processing many of my LaTeX documents. It turned out I had to move the \usepackage{ngerman} line after the \usepackage{latexsym} line.
Now package order is also corrected in the licenses.tex and netdocu.tex files produced by the itadmin program.
Library API change
The dk4str8_skip_words() function was added to the libdk4base/dk4str8 module. The function skips over the first n tokens in a char text line, finishes the string at the first space after the n tokens and returns the address after the finalizer.
The dk4mai8line_read_app() function was added to the libdk4app/dk4mai8lineapp module. The function splits a char text line into tokens and processes the tokens to numeric values.
The similar dk4mai8line_read() function in the libdk4maio8d/dk4mai8line module does not log errors directly, it fills an error report instead.
Package building tests
Package and/or installer building was tested on:
Bugfix for Windows
If the dkappop module failed to find the users home directory (user profile) via registry, programs did not attempt to use environment variables USERPROFILE or USERDRIVE+USERPATH due to a wrong combination of conditions.
Package building support for Ubuntu 20.04
Package building support for Ubuntu focal was added.
The scripts/debian-prepare and scripts/debian-build-deb can be used to build *.deb packages on Ubuntu focal, jammy, and mantic.
No further changes.
New configuration option PROXY
Set this option to an URL to reach a proxy. This URL is passed to “lb config” as --apt-http-proxy argument. Additionally the environment variables http_proxy and ALL_PROXY are passed to all subprocesses of dklivesys-build-livesys.
Users with slow internet access or limited transfer volume benefit from reduced network traffic while build live systems.
New configuration option SIDKERNEL
Set this boolean option to “yes” to build live systems using the latest SID kernel instead of the kernel from the stable release.
Hooks renumbered
The chroot stage hooks were renumbered. If additional packages are provided as *.deb files, the package set might contain a kernel package. So when building a Disklessian removal of NVME and (S)ATA related kernel modules must not happen before installing the additional packages.
Hook numbers documented
The package numbers for the hook scripts internally added by dklivesys are documented now. So if you want to add hooks which need to be run between two specific steps you can choose an appropriate hook number.
Modified box corner radius dialog in wxdkdraw
The slider now uses the entire available place.
Package building tests
Package and/or installer building was tested on:
API change
Algorithm for detail dialog placement moved from WxdkdrawMouse module into the Dk4WxApplicationHelper class.
Improved dialog placement
In wxdkdraw the placement of further detail modification dialogs was improved.
Package building tests
Package and/or installer building was tested on:
Improved dialog placement
In wxdkdraw the spline value modification dialog is now placed next to the spline point to modify.
Bugfix: Splash for network boot live systems
When producing a network boot livesystem the livesys/tftpboot/live.cfg file is modified if a plymouth theme was specified.
Bugfix in Dk4WxApplicationHelper.cpt module affecting wxdkclock
The ChooseChildPosition() method calculated wrong positions outside the current screen for dialogs when the parent window was a full-screen window or a large window. One program using this function is wxdkclock.
This is fixed now.
Package building support for Ubuntu added
The scripts/debian-prepare and scripts/debian-build-deb can be used to build *.deb packages on Ubuntu jammy and mantic.
Bugfix for users installing from source
In previous versions all man pages, all help files and all resource files were installed, no matter which suite was choosen for installation. Both types of help files (CHM and HTB) were installed.
Now when installing just the CLI programs, only man pages and resource files for CLI programs are installed.
When installing the full suite of programs including the GUI programs, help files are installed either as CHM or HTB files, depending on the system type.
Online help for wxdkdraw
Normally the wxdkdraw control sets focus on itself each time the mouse enters the control. A flag was added to deny this one time after displaying the help contents.
Local HTML documentation removed
Maintaining (a) man pages, (b) texts for “program --manual”, (c) MarkDown documentation for the SourceForge project Wiki, and (d) help files for GUI programs requires a lot of time.
Maintaining a HTML documentation required yet more time without additional benefits for users.
So the local documentation was removed.
Fedora 39 ready
Scripts and dktools-fedora.spec file were modified for RPM package building on Fedora 39.
Source archive reorganized
For resource files and man pages subdirectories “res”, “cli”, and “gui” are used for rescue system programs, CLI programs, and GUI programs. Help file are organized in separated directories for CHM and HTB files.
Package building tests
Package and/or installer building was tested on:
New configuration options PLYMOUTHTHEME and GRUB_GFXMODE
PLYMOUTHTHEME chooses a plymouth theme, GRUB_GFXMODE chooses a graphical mode for grub.
Using plymouth a Linux system can show a boot splash screen or a boot animation instead of showing log messages to the user.
DKtoolian shows log messages to the user by default, Disklessian by default uses plymouth instead so an unskilled user does not need to worry about boot messages.
Changed default value: UPDATESYSTEM
The default value for UPDATESYSTEM was changed from “yes” to “no”.
Additional configuration files
In addition to the custom/dklivesys.conf file two other files are searched for configuration options: ${HOME}/.dklivesys.conf and ${sysconfdir}/dklivesys/dklivesys.conf (i.e. /etc/dklivesys/dklivesys.conf).
The /etc/dklivesys/dklivesys.conf file is a good place to configure MIRRORBOOTSTRAP, MIRRORBINARY…
The ${HOME}/.dklivesys/dklivesys.conf file is a good place to configure PUBLISHER…
Configuration options changes
Replaced configuration file option BANKINGURLS by BOOKMARKURLS.
Added configuration file option BOOKMARKTITLE.
Removed configuration file options MIRRORCHROOTUPDATES, MIRRORCHROOTBACKPORTS, MIRRORBINARYUPDATES, MIRRORBINARYBACKPORTS, PARENTMIRRORCHROOTUPDATES, PARENTMIRRORCHROOTBACKPORTS, PARENTMIRRORBINARYUPDATES, and PARENTMIRRORBINARYBACKPORTS. The corresponding “lb config” options do no longer exist.
Warning added to wxd2lat
The wxd2lat program now shows a warning when the -d option is used to produce a document and a non-LaTeX text label containing non-ASCII characters is found.
Documentation bugfix
When renaming the former bmpp program to bitmap2pp the change was not applied to the help texts shown by the program. Now "bitmap2pp --help" and "bitmap2pp --manual" show the correct program name.
Package building tests
Package building was tested on:
Bugfix sbin/dklivesys-pkg-common
The package name “python” was corrected to “python3”.
Modified REPURLDKTOOLS default
New defaults for the REPURLDKTOOLS setting:
| Live system type | REPURLDKTOOLS default |
|---|---|
| Disklessian | none |
| DKtoolian | http://192.168.122.1/debian/${DEBVMNUM}/dktools/ |
Bugfix PUBKEYFILE
The PUBKEYFILE setting and the file presence are checked only if REPURLDKTOOLS is not set to “none”.
When building a Disklessian without DK tools packages there is not need to have a /etc/gpg-livesys/livesys.pub.asc file.
Bugfix in libexec/dklivesys/setup-repositories
The chmod command is called for the config/archives/dktools.list.chroot file only if the file exists.
Bugfix in libexec/dklivesys/check-wifi-files and libexec/dklivesys/config-permissions
Avoid “find” commands on non-existing directories.
Configuration option for Disklessian: BANKINGURLS
A new configuration variable BANKINGURLS for Disklessian was added to list names and URLs of banking websites to add to the bookmarks list.
Firefox policies file for Disklessian
A /usr/share/firefox-esr/distribution/policies.json file is written when building Disklessian to avoid Firefox telemetry, to show the menu bar by default and to build a bookmarks list if BANKINGURL is defined.
Firefox preferences
A file /etc/firefox-esr/firefox-esr.js is created for Disklessian. The file contains preference definitions to start Firefox with a blank screen and to avoid telemetry, health status, studies, and experiments.
Additional Firefox preferences to avoid telemetry
Items are added to the /etc/firefox-esr/firefox-esr.js file of the live system to avoid telemetry, health report, studies, experiments…
Automatic package selection for UEFI Secure Boot
Add packages grub-efi-amd64 and grub-imageboot automatically if UEFISECURE is set to "yes". For DKtoolian live systems, additionally add the efibootmgr package.
Bugfix in scripts/debian-build-deb file
Name of original source file corrected, must contain “bookworm”.
URL corrected in dklivesys-preparation.1.adoc
Underscores were used in the old file instead of spaces.
Just one Debian version supported
The dklivesys releases support just one Debian version now. Release 1.0.9 supports Debian 12 (Bookworm).
Using Debian standard kernel in Disklessian
To produce Disklessian systems we do no longer need to compile a patched kernel to disable (S)ATA and NVME access.
It is sufficient to blacklist and remove the nvme, nvme_core and libata kernel modules.
Disadvantage: You can not use DVD or CD to boot a Disklessian. In the running Disklessian DVD and CD drives are not usable.
Advantage: Use of a default Debian kernel allows to boot Disklessian on PCs having UEFI Secure Boot activated.
As a welcome side effect the number of scripts in the archive has been reduced, as has the number of settings to be configured.
Some DK tools programs use the OpenSSL libraries to create message digests.
The used OpenSSL API is marked as “lower level” and “deprecated”. Typically “deprecated” means the API will be removed in near future.
For DK tools this means:
These changes are not imminent, they will happen when the “lower” API is no longer available.
Just my opinion: The “lower level” API is the better API here. Just 3 functions (…_Init(), …_Update(), …_Finish()) instead of a large number of functions.
No dynamic memory allocations, no reference counting… No questions left after reading these 3 functions documentation.
Use the openssl program directly to obtain a message digest for a file:
openssl sha512 test.txt
Run “openssl help”, the “Message Digest commands” section lists the message digest types available.
On Windows use the certutil command to view file checksums:
certutil -hashfile c:\temp\example.txt SHA256
Use
certutil -hashfile -?
to see a list of available message digest (hash) algorithms.
Sorry, my mistake!
Unfortunately I updated this Wiki article too fast, before uploading the 4.35.1 archives and the installer.
I updated my computer from Debian 11 to Debian 12 and some of the virtual machines I use for testing and for building Windows binaries from Fedora 37 to Fedora 38.
This took me much more time than expected.
Default change in bitmap2pp and wxd2lat
LZW compression is now enabled by default when producing PS level 2 output from wxd2lat and bitmap2pp.
Diagnostic message corrected in wxd2lat
When attempting to use the document output type for an unsuitable output driver, the error message was misleading as it claimed the document output type would be available for tex, pdf and ps output.
For ps output the document output type is available in the bitmap2pp program only, not in wxd2lat.
The diagnostic message was corrected to "output type not available for this driver".
New warning in dkcpre
When using wxWidgets, an object must not have both the expand flag set and alignment flags set. Recent wxWidgets versions complain with an assert dialog.
The dkcpre program now issues warnings for such objects to detect them before compiling.
Style classes added to htmlbook
The "paddedbaselineleft", "paddedbaselinecenter", and "paddedbaselineright" classes were added to htmlbook's style.css file.
Modified wxkdraw.desktop file
More descriptive "Name" and "GenericName" attributes are used now.
Internal build process update
The configure.ac file was modified following the suggestions of Debian 12's autoconf program.
Package building tests
Package building was tested on:
Timeout for boot selection when booting via GRUB
The boot menu shown by GRUB now contains a 10 seconds timeout to select the item to boot.
No action when session is idle or inactive
The /etc/skel/.profile file is modified. It contains gsettings commands to avoid any actions when the session is idle or inactive for a while.
The KERNELKEEPDBGPKG variable was added to the dklivesys.conf file, it is used while building a kernel.
The default “no” prevents the kernel debug symbols package from being built.
This saves both time and disk space.
New executable setup for Windows
The Windows binaries are now created using Mingw64 on Fedora instead of the formerly used Visual Studio on Windows.
The installer is created using NSIS on Fedora instead of the formerly used InnoSetup on Windows.
When upgrading from a version before 4.35.0 to 4.35.0 or above, you should uninstall DK tools via system control before installing the new version.
New symbols for wxdkdraw
Added JFET and MOSFET symbols to wxdkdraw library.
Added voltage and current source and function generator symbols.
Corrections on some operational amplifier symbols.
Reorganized wxdkdraw library, removed duplicated symbols, renamed files.
Program wxdkclock rewritten completely
A feature was added to blank the entire screen, on wake-up-time a blinking clock is shown.
Using hypot() for distance calculations
The configure script was modified to check for the hypot() function in the math library. The function is used for distance calculations where applicable.
Default paper sizes now configured in library code
A dk3paper.conf file is now required only to use non-default sizes or to change values for default sizes.
Modified paper size collection module to use a more user-friendly sort order for paper size names (strcoll/wcscoll instead of strcmp/wcscmp).
Fixed memory leak in the dk3app module
The argv pointer array component of the dk3_app_t structure was not released.
Fixed out-of-bounds read access to array members in the libdk4wx library
A NULL finalizer is now added to wxChar string tables in the dk4wxstt module, so the Dk4WxApplicationHelper::StringTableSize() method correctly recognizes the finalizer.
Modified dkwxwiz data files
Member variable names now use “m_”.
Installation modified
Installing dk4gra.conf.sample instead of dk4gra.conf to avoid reading a large configuration file not changing any default.
Library API modified
Added const char * dk4font_get_ps_family(dk4_font_number_t fno) function.
Added int dk4font_by_name(const char *n, int cs) function.
In the Dk4WxApplicationHelper, Dk4WxAutostartController, Dk4WxColourPalette, Dk4WxColourPalette::Dk4WxColourPaletteItem, and Dk4WxColourView the member variables are private now.
In the Dk4WxControl, Dk4WxHelpController, and Dk4WxFrame classes member variables are renamed to have m_ at start of name.
Package building was tested on (in alphabetical order):
OpAmp symbols
Added further operational amplifier symbols containing power supply and balance pins. Input pin order (n for negative, p for positive) is now visible in the file name.
Library API change: dk4font_by_name(), dk4font_get_ps_family()
Functions were added to find a font number for a font name and to obtain the PostScript font family name for a font number.
dk4gra.conf.sample
The file previously installed as dk4gra.conf just contains comments and lists the built-in defaults. It is installed as dk4gra.conf.sample file now as there is no need to process a file containing just a large number of comment lines for each invokation of bitmap2pp or wxd2lat.
Package building was tested on (in alphabetical order):
Wxdkdraw library elements
Added JFET and MOSFET symbols to wxdkdraw libraries.
Better algorithm to find selection candidates in wxdkdraw
The algorithm to find a selection candidate in wxdkdraw when moving the mouse was modified:
Layer number
Objects in higher layers are preferred over objects in lower layers.
Small objects
Within a layer smaller objects are preferred over larger objects.
String table file correction
The german string table file for wxdkdraw was corrected, the program name appeared twice in the dialog box title.
Bugfix in spec file for EL7
Package building on EL7 failed as there was an unpackaged LICENSE file. This is fixed now.
Modification to wxdkdraw: Symbol for constant current source modified
The symbol was modified to be standard compliant.
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.
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 mechanism 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.
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.
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.
Modification in dklivesys-kernel-repo script, 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, for a linux kernel repository this is approximately 800 MB.
Bugfix in wxdkdraw
In previous versions after completing a copy operation both the former source object and the copied object were shown highlighted as copy candidates.
This is fixed now, only the copied object is highlighted as copy candidate now.
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.
Bugfixes in package building for Arch Linux
Corrections were applied to the PKGBUILD file to avoid usage of “denied” directories.
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.
Modifictions to build packages on Proxmox
The scripts/debian-build-deb script was modified to recognize xxx-pve kernels as used on Proxmox as amd64 architecture.
Modified behaviour: UEFISECURE for Disklessian
Configuring UEFISECURE=yes while building a Disklessian now results in use of an original (unpatched) Debian kernel.
Bugfix: Log message corrected
A log message printing information about installed packages was corrected.
Mark packages for hold
Packages as *.deb files in the pkgs and pkgs-xxx directories are marked for being hold using "apt-mark hold xxx".
Bugfix: Moved gui-img directory
The gui-img directory was moved into the livesys-data directory, scripts expect it there.
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.
Bugfix in package building for Debian
The renamed libdk*-data packages were not created correctly as the file names for the libdk*-data.install files were not changed. This is fixed now.
Debian users installing DK tools via package management should upgrade.
Debian 11 (Bullseye)
The build process was updated to work on Debian 11 (Bullseye).
Upgrade for Debian Bullseye
The livesys creation scripts were updated to work on Debian 11 Bullseye.
Change in installation mechanism
Installation using GNU stow is no longer recommended for dklivesys.
Some files “installed by GNU stow” are symbolic links. Some parts of the live system build process are executed in a chroot environment. The symbolic link targets are not accessable from within the chroot environment.
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.
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.
Bugfix in wxdkdraw
Newly inserted library elements are no longer shown as selected.
Modified inductor symbol
The size of the inductor symbol in the wxdkdraw library was reduced.
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.
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.
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.
Bugfix in package building for Debian
The ${datarootdir}/dk4app directory was not mentioned for installation in the dktools-data.install file after restructuring the source archive in version 4.30.5.
Bugfix in bmpp: rotate setting
The rotate setting was ignored in previous versions of bmpp.
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.
Debian packaging modified
Debian policies require to install just one shared library per package.
For 31 shared libraries this results in 93 packages (31 packages for the libraries, 31 developer packages containing the headers and 31 packages for the debug symbols).
I decided not to build shared libraries on Debian, fat binaries are used instead. So users have to install 2 or 3 packages only.
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 \P\LIB\wxWidgets\3.1.4\16.0\x64\MT for wxWidgets and \P\LIB\16.0\x64\MT as base directory for the other required libraries.
The path contains:
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.
Bugfix in htmlbook
The "Page content" option was shown multiple times in HTML output for nodes having a parent node. This is fixed now.
SPDX-License-Identifier
Added SPDX-License-Identifier tags to many files.
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.
An example options section now looks like:
%% options
copyright owner= Joe Exampleman
copyright year= 2020-xxxx
SPDX-License-Identifier: BSD-3-Clause
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.
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: Can 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.
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.
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.
Modified mklivesys.sh script used to build DKtoolian and Disklessian
We can now inject files into the initramfs file system.
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.
Bugfix in wxdkdraw: Removed spline modification dialog
The "Modify spline point s value" dialog was shown after aborting a spline point move operation.
As moving spline points and changing s value are separated actions now, the dialog is no longer shown during move spline point operations.
Modification in wxdkdraw: Automatic position correction after zooming out
The viewport position over the drawing is automatically corrected after
zooming out. The drawing is centered in the view automatically after changing drawing size.
New program: wxdkdraw
Wxdkdraw is a minimalistic drawing program for use with LaTeX. Use wxd2lat to convert *.wxd drawing files to formats usable with (pdf)LaTeX.
Program rewritten: wximgsz
The wximgsz program was rewritten to use DK libraries version 4. Spin controls are used for input instead of standard text fields.
An image file name can be specified as parameter.
Library API change: Dk4WxAutostartController class
The enum values DK4WX_AUTOSTART_REACTION_IGNORE and alike were moved into the class definition, so GetReaction() now returns one from:
Library API change: dk4grat module
The a and b parameters in the dk4gratool_dist_point_point()function were changed to const, the a, b and p parameters in dk4gratool_dist_point_track() too.
Library API change: dk4bb module
The dk4bb_add_bb() function was added. So we can create a drawing bounding box as collection of object bounding boxes.
The flag set in bounding boxes is now packaged into an unsigned char instead of an int to save memory.
Library API change: dk4error module
The DK4_E_HIGHEST_NUMBER value is the largest error code number used in the dk4error.h file.
When defining application specific error code numbers you should start at (DK4_E_HIGHEST_NUMBER+1).
Library API change: Function parameters changed to const
Some pointers used as function parameters were changed to const.
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.
Header file location changed
Header files are installed into ${includedir}/dktools-4 now instead of ${includedir}.
Rshdown and printqd are systemd compatible now
Both programs were modified to be controlled by systemd, service unit files were added.
When building RPM or DEB packages, separated packages are created for the daemons.
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.
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.
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.
Program pjsnmp now installed into libexecdir
The pjsnmp program is now installed into the libexec directory. It is not intended to be run manually, the LPRng print system invokes it as a filter.
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.
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:
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.
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 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.
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.
Modifications for Debian Buster
Scripts and some package files were modified to build Disklessian based on Debian Buster.
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.
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 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 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.
Bugfix in UNIX/Linux build process
Correction in Makefile.in to enable parallel build.
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
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.
dkct: 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.
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.
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
or
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.
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.
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.
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.
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.
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.
bmpp and wxbmpp rewritten
The bmpp and wxbmpp programs were rewritten completely. They can handle NetPBM input now. For PS level 2 output you can configure use of LZW compression. For a list of all changes, see the What's new in version 4.12.0 section on the bmpp page.
Modified htmlbook
When producing output to build online help (chm or htb) the program now writes
<body bgcolor="#FFFFFF">
instead of
<body>
On some systems the components to show *.htb files seem to ignore some information from the style.css file.
In the "[options:chm]" section you should have a line
html doctype = html-4.01-transitional
as HTML 5 does not allow the "bgcolor=…" attribute for the "<body>" tag.
Bugfix in htmlbook
When writing HTML for *.chm/*.htb creation the first page does not contain a table of contents or a keyword index. So we must not create links to …#hb_toc.
New libraries
The following new libraries were added:
Library API change: Dk4WxApplicationHelper.cpt modified
Functions added to obtain argv[0] and the application group name as dkChar strings.
Functions added to set and retrieve key/value pairs where key and value are wxString type.
Library API change: dk4align.h modified
The dk4align.h file was modified. Now we have separated enum types for text alignment and for image alignment.
Library API change: dk4mao8dns module added
The dk4mao8dns module was added containing the dk4ma_write_c8_double_no_sci_to_stream() function to write double values to streams avoiding scientific notation.
In contrast to the dk4c8dbl_double_to_stream() function from the dk4c8dbl module this function uses an eps parameter to simply write 0 for very small absolute values. Numeric computations may result in such very small values.
Library API change: Functions moved
The dk4fpe_is_finite() and dk4fpe_is_normal() functions from the dk4fpe module were moved to the dk4ma_is_finite and dk4ma_is_normal() in the dk4math module.
So the dk4fpe module only deals with floating point exceptions now.
Library API change: Checking for isgreater … changed
Checks were added to the configure script for isgreater() … Using C isgreater() is a macro and the check using defined() worked well. In C++ there is a function declaration for it. So we use constants like DK4_HAVE_ISGREATER now.
Library API change: New functions in dk4paper module
The dk4paper_difference() function calculates the maximum difference between two paper sizes.
The dk4paper_find_nearest() function searches for a an element "next" to a specified paper size in an array (minimum difference).
Bugfix in dk4path8 and dk4pathw modules
In previous versions there was a buffer overflow in the dk4path8_dup_change_suffix() and dk4pathw_dup_change_suffix() functions when replacing a file name suffix by a shorter file name suffix.
This function was not used in any of the DK tools before, only in a small test program.
Build process changes on Unix/Linux
The C compiler option -D_LARGEFILE64_SOURCE=1 was previously set by the configure script in the Makefile.
Unfortunately users might compile programs using the DK libraries later without that option. This results in data types ino64_t, off64_t and struct stat64 not found.
The following changes were applied:
#if DK4_HAVE_LARGEFILE64_SOURCE
#ifndef _LARGEFILE64_SOURCE
#define _LARGEFILE64_SOURCE 1
#endif
#endif
was added to define _LARGEFILE64_SOURCE if it was used while building the libraries.
Each header or module file using the DK libraries should include dk4conf.h as first include file before any non-DK-libraries include file, especially before stdio.h, sys/types.h or sys/stat.h.
* The configure script creates the programs dk4config and dk3config which in turn create the dk4conf.h and dk3conf.h include files. In the programs there are checks now to enable DK4_HAVE_LARGEFILE64_SOURCE only if ino64_t, off64_t and struct stat64 are larger than the normal counterparts.
Packaging changes
The commands to change ownership or remove the /var/lib/printqd, /var/log/printqd and /var/run/printqd directories are removed from package install/uninstall sections.
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.
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.
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.
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.
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.
BUG: This version contains a bug, some XPM image files used as toolbar button images are not usable on all systems. Please use version 4.11.1 instead.
itadmin
The co_gu field in the computers table allows to distinguish between the following types of computers:
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:
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
One script mklivesys.sh for both Disklessian and DKtoolian
For easier maintenance the debian-build-dktoolian.sh and debian-build-disklessian.sh scripts both call the mklivesys.sh script.
Configuration profile directory
All files to customize a Disklessian or DKtoolian live system can now be stored in the "custom" directory. So you can save and reuse configuration data more easily.
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 modified
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
int
my_summary( int a, int b, int c __attribute__((unused)) )
{
return (a + b);
}
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 hbconf module of htmlbook
Due to compiler warnings on Windows the data type for initializers in the hbconf_doctype_names array was changed from char to dkChar to correlate to the hbconf_doctype_names data type.
Bugfix in dkct-gui module of dkct
Modified
if((co->gridgapy > -1) || (co->gridgapy > -1))
to
if((co->gridgapx > -1) || (co->gridgapy > -1))
to check both gap specifications.
Bugfix in htmlbook
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.
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:
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.
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.
Bugfix in htmlbook: Write correct link destinations
When using hyperlink special commands like
%%a href=http://testserver.any.where/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.
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.
Modified script to build Debian Stretch packages
Modified Debian build script debian-stretch-prepare.sh to install both libmariadbclient-dev and libmariadb-dev before running the configure script. So the configure script finds the mariadb/mysql.h header and the -lmariadbclient library.
This update is only relevant for those building packages on Debian Stretch.
Statistics output from dk-send and dk-recv
If the log level is set to info or higher (command line option "--log.stderr.level=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 4.9.1 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.
Debian Stretch support
Different scripts and data files for building Debian Jessie and Debian Stretch based live systems.
Desktop choice
A choice of desktops (Xfce, Gnome, LXDE, Mate, LXQT, Cinnamon and KDE) is now available for Debian Stretch based live systems.
Xfce and Gnome are the recommended desktops for use in Disklessian.
I do not have practical experience in using the other desktops, so the integration of LXDE, Mate, LXQT, Cinnamon and KDE into Disklessian is probably not perfect. But you can experiment with Disklessian containing these desktops and send me improvement suggestions.
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.
Library API change: Functions to change file name suffix added
The dk4path_set_suffix() and dk4path_dup_change_suffix() functions were added to the dk4pathd module.
Library API change: 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.
Package changed
Followed some improvement suggestions made by the CTAN team.
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.
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.
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:
Build process update (configure script and Makefile.in)
DKtoolian update
The "lshw" package was added to the list of base packages.
Library API change: Library libdk4maioxd added
The library converts numeric values to and from wxChar strings.
Library API change: <wx/chartype.h> instead of <wx/wx.h>
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.
Library API change: Detailed debug output for preferences
For the "debug" log level the used preferences are shown.
Library API change: 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.
Packages removed
Some packages not really needed were removed from the pkg_base.txt list.
Bugfix
Added reprepro package to the base packages list.
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.
Library API change: New modules dk4paper and dk4papea
The modules read paper size configuration files dk4paper.conf and dk3paper.conf.
Library API change: 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.
dktools-el7.spec: Build RPM files for RHEL7 clones.
On Scientific Linux 7 yum complained about unresolved library dependencies for libdk*.so.x.y files although these files are contained in the RPM to install.
So I added "Provides:" lines for the libraries to the *.spec file.
dk-rand, dk-pwgen: Sanitizing seed buffer.
The programs were changed to use a specific buffer when reading seed data, this buffer is sanitized (0-filled) after seeding the OpenSSL PRNG.
The RAND_cleanup() function is used to sanitize the memory used by the PRNG itself before the program exits.
dk-pwgen: Bugfix for out-or-range array index.
In previous versions an index was running out of range when producing hexadecimal keys larger than 16 characters.
itadmin: Sanitizing credentials buffer
Now sanitizing memory used as file buffer while reading the credentials file containing the database user name and password.
Library API change: dk4mem.h and module
New function dk4mem_free_secure() in dk4memrs module combining sanitizing and releasing memory.
Library API change: New modules dk4svbuf and dk4svbufa.
The dk4setvbuf() and dk4setvbuf_app() functions set the buffering type (no buffering, line-by-line buffering or full buffering) and the buffer to use for a FILE. Call these functions immediately after opening a file before doing any real I/O.
Library API change: New functions and macros in the dk4str8, dk4strw and dk4strd modules:
Library API change: dk3mem.h and module:
Backport dk3mem_reset_secure() in the dk3mem module.
Mirrors
Instead of simply setting MIRROR to one mirror to use for all purposes you have now detailed control which mirror to use for which purpose.
WiFi setup
When building an image for your own, you can use the WIFISSID, WIFIPSK, WIFIMAC and WIFIUUID settings to set up a default connection to your WiFi network.
Security note: You should do this only for images you plan to use yourself. Distributing/publishing images with WiFi connection data discloses your WiFi access data to all recpipients, so use with care.
htmlbook: Additional icon in navigation bars
One more icon in the navigation menu produced by htmlbook: The left icon is used to go the the top of the start page, a new icon is inserted before the "go to keyword index" icon to go to the table of contents.
The "go to start page" button is only inactive in the first navigation menu of the start page. In later navigation menus (i.e. the navigation menu on the start page bottom) it is active to go to the top of page.
Note: You should provide a new button image "home.png" in your htmlbook projects in addition to the already used "prev.png", "next.png", "toc.png" and "index.png" images.
htmlbook: Support for some meta tags
Support for the
<meta name="description" content="This is the page description">
<meta name="keywords" content="some, words, to, search, for">
tags was added to htmlbook.
Simply add
.meta-description This is the page description
.meta-keywords words, to, search, for
lines at the beginning of a nodes text file.
htmlbook: Node configuration in the nodes text file
Some information can be provided in the text file for a node now instead of the project files contents section.
Use lines like:
.meta-description This is the page description
.meta-keywords words, to, search, for
.author My Name
.title Title shown in the browsers window decoration
.short Short title for navigation menu
.location Location of author
.page-toc boolean
.replace-ampersand boolean
.write-position boolean
.shortcut-icon icon file name
.js-file file name
.inherit-js boolean
.context-number number
Library API change: New modules dk4strms and dk4strmu
The modules contain functions to serialize data to stream and unserialize from stream.
Library API change: New modules dk4maai16, dk4maau16, dk4maai32, dk4maau32
The modules contain functions for arithmetic operations on int16_t, uint16_t, int32_t and uint32_t with error checking.
Library API change: New module dk4strmco
The module provides a dk4_stream_t interface to compress (run-length, flate) and/or encode (ASCII-Hex, ASCII-85) data. Data is written to a dk4_stream_t.
itadmin: Comments in dhcpd.conf output file
Two marker comments
# ##### ITADMIN_POINT_1: After options, before classes
and
# ##### ITADMIN_POINT_2: After classes, before VLAN
are written to the dhcpd.conf output file.
These marker lines should make post processing using programs like sed easier.
itadmin: Ask DHCP clients to release the lease on shutdown
The new itadmin.conf configuration file entries
msft release lease on shutdown = pool
or
msft release lease on shutdown = all
can be used to add contents to the dhcpd.conf file asking Windows clients to release the dynamic IP address obtained from DHCP on shutdown.
The first example adds appropriate contents to address pools only, the second example adds the contents at file level.
itadmin bugfix: Check for both mysql.h and mysql/mysql.h
Some code section in itadmin.ctr and itamysql.ctr were enclosed by
#if DK3_HAVE_MYSQL_MYSQL_H
...
#endif
instead of
#if DK3_HAVE_MYSQL_MYSQL_H || DK3_HAVE_MYSQL_H
...
#endif
This is fixed now.
wxdkfcs and wxpqdic bugfix: Application class corrected
The wxWidgets 3.x.x online documentation requires to call all destructors for wxXXX classes before the OnExit() method of the application class returns. After that point the wxWidgets library performs cleanup operations. Calling destructors later might result in access attempts to cleaned and/or released memory.
As a consequence there should be no wxXXX instances directly or indirectly as application class members or global variables. Instead we should use pointers as application class members and call new in OnInit() and delete in OnExit().
xxxApp.cpp bugfix: Avoid NULL pointer dereferencing
The documentation for wxImage::AddHandler() and wxFileSystem::AddHandler does not explicitly allow to pass NULL pointers as arguments.
So I replaced the
wxImage::AddHandler(new wxPNGHandler);
code sequences as found in /SHC2006/ by
wxPNGHandler *phPng = NULL;
...
phPng = new wxPNGHandler();
if (NULL != phPng) {
wxImage::AddHandler(phPng);
} else {
ShowMemoryErrorMessage();
goto finished;
}
to check for valid pointers before passing them to the AddHandler() calls.
dk4strw.c bugfix: dk4strw_abbr_index() and dk4strw_is_on() corrected
Pointer and counter were increased after loop, not in loop.
This is fixed now.
Keywords to indicate "false" are first in the array, not last.
dk3config.c bugfix: Check for MySQL corrected
In previous version the dk3config.c file contained
printf("\n#ifndef DK3_HAVE_MYSQL_H\n");
printf("/** DK3 version of HAVE_MYSQL_H.\n*/\n");
#if HAVE_MYSQL_MYSQL_H
printf("#define DK3_HAVE_MYSQL_H 1\n");
#else
printf("#define DK3_HAVE_MYSQL_H 0\n");
#endif
printf("#endif\n");
This is corrected to:
printf("\n#ifndef DK3_HAVE_MYSQL_H\n");
printf("/** DK3 version of HAVE_MYSQL_H.\n*/\n");
#if HAVE_MYSQL_H
printf("#define DK3_HAVE_MYSQL_H 1\n");
#else
printf("#define DK3_HAVE_MYSQL_H 0\n");
#endif
printf("#endif\n");
Bugfix in Debian packaging: Architecture for documentation
The documentation packages are architecture independent, so the "Architecture" setting was changed from "any" to "all" in the debian/control files for dktools-doc and dktools-devdoc.
Library API change: Mathematical operations on int16_t, uint16_t, int32_t, uint32_t
Modules dk4maai16, dk4maau16, dk4maai32, dk4maau32, dk4maci16 and dk4maci32 added for mathematical operations with error checking on int16_t, uint16_t, int32_t and uint32_t types.
Library API change: Reading doubles from string, writing doubles to string
The new dk4mai8dbl, dk4maiddbl, dk4maiwdbl, dk4mao8dbl, dk4maoddbl and dk4maowdbl modules contain functions to read a double value from string or to write a double value to string.
The values are expected and written in C notation, not localized.
Library API change: New dk4fpe module
The module provides portable functions to check for floating point exceptions.
Library API change: New dk4strmw module
The
dk4_stream_t *
dk4stream_open_file_writer(const dkChar *filename, dk4_er_t *erp);
opens a stream to write to a file. Depending on the file type suffix the file is written as plain file, gzip compressed file (*.gz, *.svgz) or bzip2 compressed file (*.bz2).
Library API change: API change and performance optimization for dk4stream_write()
The prototype was changed to:
int
dk4stream_write(dk4_stream_t *strm, const void *b, size_t sz, dk4_er_t *erp);
In previous versions the dk4stream_write_byte() function was called for each byte in the buffer.
Now we use the DK4_MEMCPY() inline function or macro for optimized copying into the stream buffer.
Library API change: Inline functions / macros for memory operations
If the "inline" keyword is available for you C compiler, the functions
static
inline
void
DK4_MEMCPY(void *dst, const void *src, size_t sz);
static
inline
void
DK4_MEMRES(void *dst, size_t sz);
static
inline
int
DK4_MEMCMP(const void *s1, const void *s2, size_t sz);
can be used for memory copy and reset operations.
Macros are defined if the "inline" keyword is not available.
Neither the inline functions nor the macros check their arguments. The caller must ensure to provide valid arguments.
Library API change: Modifications in DkWxBmepsApp.cpt, DkWxImgszApp.cpt and DkWxTraceApp.cpt
Code cleanup in the OnInit() method for better readability.
Build process modified
The debian/changelog files are created by the distribution generation script now, no longer by the configure script.
The change log of the previous versions is visible in the changes.html file of the documentation package.
| /SHC2006/ | Julian Smart and Kevin Hock with Stefan Csomor: Cross-Platform GUI Programming with wxWidgets Prentice Hall 2006 ISBN: 0131473816 |
| ← Previous | ↑ Home | Next → |