Index: Makefile.am
===================================================================
--- Makefile.am	(revision d68a3f776b49ebef7031d8d117b0bb0eeed3a7ea)
+++ Makefile.am	(revision 18d7aafd7ba06df826cfd83e2f922f66fd91126b)
@@ -11,6 +11,6 @@
 ## Created On       : Sun May 31 22:14:18 2015
 ## Last Modified By : Peter A. Buhr
-## Last Modified On : Tue Jul 16 16:59:12 2024
-## Update Count     : 57
+## Last Modified On : Fri Jul 19 16:15:24 2024
+## Update Count     : 58
 ###############################################################################
 
@@ -22,5 +22,5 @@
 
 SUBDIRS = driver src . @LIBCFA_TARGET_DIRS@
-DIST_SUBDIRS = driver src . libcfa tests
+DIST_SUBDIRS = driver src . libcfa tests tools/prettyprinter
 
 @LIBCFA_TARGET_MAKEFILES@ : Makefile ${srcdir}/libcfa/configure
@@ -35,5 +35,5 @@
 man1_MANS = doc/man/cfa.1
 
-EXTRA_DIST = LICENSE doc/man/cfa.1 libcfa/configure libcfa/Makefile.dist.am libcfa/Makefile.dist.in tools/build/distcc_hash tools/build/push2dist.sh tools/prettyprinter
+EXTRA_DIST = LICENSE doc/man/cfa.1 libcfa/configure libcfa/Makefile.dist.am libcfa/Makefile.dist.in tools/build/distcc_hash tools/build/push2dist.sh
 
 debug ?= yes
Index: configure.ac
===================================================================
--- configure.ac	(revision d68a3f776b49ebef7031d8d117b0bb0eeed3a7ea)
+++ configure.ac	(revision 18d7aafd7ba06df826cfd83e2f922f66fd91126b)
@@ -273,4 +273,5 @@
 	libcfa/Makefile:libcfa/Makefile.dist.in
 	tests/Makefile
+	tools/prettyprinter/Makefile
 ])
 
@@ -283,5 +284,4 @@
 		benchmark/io/http/Makefile
 		tools/Makefile
-		tools/prettyprinter/Makefile
 		benchmark/Cargo.toml
 	])
Index: tests/meta/dumpable.cfa
===================================================================
--- tests/meta/dumpable.cfa	(revision d68a3f776b49ebef7031d8d117b0bb0eeed3a7ea)
+++ tests/meta/dumpable.cfa	(revision 18d7aafd7ba06df826cfd83e2f922f66fd91126b)
@@ -9,7 +9,7 @@
 // Author           : Thierry Delisle
 // Created On       : Wed Jan 05 13:53:22 2022
-// Last Modified By :
-// Last Modified On :
-// Update Count     :
+// Last Modified By : Peter A. Buhr
+// Last Modified On : Fri Jul 19 07:58:45 2024
+// Update Count     : 10
 //
 
@@ -17,4 +17,5 @@
 #include <limits.h>
 #include <string.h>
+#include <unistd.h>
 
 #include <fstream.hfa>
@@ -22,5 +23,4 @@
 extern "C" {
 	#include <fcntl.h>
-	#include <unistd.h>
 	#include <sys/prctl.h>
 	#include <sys/resource.h>
@@ -32,124 +32,111 @@
 void check_ulimit() {
 	struct rlimit rlp;
-	getrlimit(RLIMIT_CORE, &rlp);
-	if(rlp.rlim_cur < 536870912) {
+	getrlimit( RLIMIT_CORE, &rlp );
+	if ( rlp.rlim_cur < 536870912 ) {
 		serr | "Soft core limit is less than ~500Mb: " | rlp.rlim_cur;
-	}
+	} // if
 
-	if(rlp.rlim_max < 536870912) {
+	if ( rlp.rlim_max < 536870912 ) {
 		serr | "Hard core limit is less than ~500Mb: " | rlp.rlim_max;
-	}
+	} // if
 }
 
 void check_permission() {
-	{
-		char myExe[PATH_MAX];
-		ssize_t n = readlink("/proc/self/exe", myExe, sizeof(myExe));
-		if (n < 0) {
-			perror("readlink(/proc/self/exe) error");
-			return 1;
-		}
-		myExe[n] = '\0';
+	char myExe[PATH_MAX];
+	ssize_t n = readlink( "/proc/self/exe", myExe, sizeof(myExe));
+	if ( n < 0 ) {
+		perror( "readlink(/proc/self/exe ) error" );
+		return 1;
+	} // if
+	myExe[n] = '\0';
 
-		if(int r = access(myExe, F_OK); r != 0) serr | "Expected current executable does not exist!" | r | errno;
-		if(int r = access(myExe, R_OK); r != 0) serr | "No read access for current executable" | r | errno;
-	}
+	if ( int r = access( myExe, F_OK ); r != 0 ) serr | "Expected current executable does not exist!" | r | errno;
+	if ( int r = access( myExe, R_OK ); r != 0 ) serr | "No read access for current executable" | r | errno;
 
-	{
-		char myCwd[PATH_MAX];
-		if (getcwd(myCwd, sizeof(myCwd)) == 0p) {
-			perror("getcwd() error");
-			return;
-		}
+	char myCwd[PATH_MAX];
+	if ( getcwd( myCwd, sizeof(myCwd ) ) == 0p ) {
+		perror( "getcwd() error" );
+		return;
+	} // if
 
-		if(access(myCwd, F_OK) != 0) serr | "Expected current working directory does not exist!";
-		if(access(myCwd, R_OK) != 0) serr | "No read access for current working directory";
-		if(access(myCwd, W_OK) != 0) serr | "No write access for current working directory";
-	}
+	if ( access( myCwd, F_OK ) != 0 ) serr | "Expected current working directory does not exist!";
+	if ( access( myCwd, R_OK ) != 0 ) serr | "No read access for current working directory";
+	if ( access( myCwd, W_OK ) != 0 ) serr | "No write access for current working directory";
 }
 
 void check_free_space() {
 	struct statvfs buf;
-	if(statvfs(".", &buf) != 0) {
-		perror("statvfs() error");
+	if ( statvfs( ".", &buf ) != 0 ) {
+		perror( "statvfs() error" );
 		return;
-	}
+	} // if
 
 	uint64_t avail = buf.f_bavail;
 	avail *= buf.f_bsize;
-	if(avail < 536870912_l64u) {
+	if ( avail < 536870912_l64u ) {
 		serr | "Available diskspace is less than ~500Mb: " | avail;
-	}
+	} // if
 
-	if(buf.f_favail < 10) {
+	if ( buf.f_favail < 10 ) {
 		serr | "Available inodes is less than 10: " | buf.f_favail;
-	}
+	} // if
 
-	if(buf.f_flag & ST_RDONLY) {
+	if ( buf.f_flag & ST_RDONLY ) {
 		serr | "Filesystem is read only";
-	}
+	} // if
 }
 
 void check_noconflict() {
-	char * name = "./core";
-	if(access("./core", F_OK) == 0) serr | "A file of the core name ('" | name | "') already exists";
+	const char * name = "./core";
+	if ( access( name, F_OK ) == 0 ) serr | "File \"" | name | "\" already exists";
 }
 
 void check_dumpflag() {
-	int r = prctl(PR_GET_DUMPABLE, 0, 0, 0, 0);
-	if(r < 0) {
-		perror("prctl(PR_GET_DUMPABLE) error");
+	int r = prctl( PR_GET_DUMPABLE, 0, 0, 0, 0 );
+	if ( r < 0 ) {
+		perror( "prctl( PR_GET_DUMPABLE ) error" );
 		return;
-	}
+	} // if
 
-	if(r != 1) serr | "dumpable attribute not set to 1 \"(SUID_DUMP_USER, process is dumpable)\", was" | r;
+	if ( r != 1 ) serr | "dumpable attribute not set to 1 \"( SUID_DUMP_USER, process is dumpable )\", was" | r;
 }
 
 void check_core_pattern() {
 	int ret;
-	int cp = open("/proc/sys/kernel/core_pattern", 0, O_RDONLY);
-	if(cp < 0) {
-		perror("open(/proc/sys/kernel/core_pattern, O_RDONLY) error");
+	int cp = open( "/proc/sys/kernel/core_pattern", 0, O_RDONLY );
+
+	if ( cp < 0 ) {
+		perror( "open(/proc/sys/kernel/core_pattern, O_RDONLY ) error" );
 		return;
-	}
+	} // if
 
 	try {
 		const char * expected = "core\n";
-		const int sz = sizeof("core\n");
+		const int sz = sizeof( "core\n" );
 		char buf[512];
-		ret = read(cp, buf, 512);
-		if(ret < 0) {
-			perror("first core pattern read error");
+		ret = read( cp, buf, 512 );
+		if ( ret < 0 ) {
+			perror( "core pattern read error" );
 			return;
-		}
-		ret = strncmp(expected, buf, sz - 1);
-		if(ret != 0) {
-			serr | "/proc/sys/kernel/core_pattern does not contain 'core', was:" | nl | nl | buf | nl
-			     | "Test script expect cores files to be dumped with name 'core' in current working directory." | nl
-			     | "Apport is not supported, it should be deactivated in /etc/default/apport for the test suite to work with core dumps.";
+		} // if
 
-			return;
-		}
-	}
-	finally {
-		ret = close(cp);
-		if(ret < 0) perror("close(/proc/sys/kernel/core_pattern) error");
-	}
-
+		ret = strncmp( expected, buf, sz - 1 );
+		if ( ret != 0 ) {
+			serr | "Apport is supported on your system, which means the test-suite core-dump feature does not work." | nl
+				 | "This is not a test failure, just a limitation on debugging output should a test fail.";
+		} // if
+	} finally {
+		ret = close( cp );
+		if ( ret < 0 ) perror( "close( /proc/sys/kernel/core_pattern ) error" );
+	} // try
 }
 
 int main() {
 	check_ulimit();
-
 	check_permission();
-
 	check_free_space();
-
 	check_noconflict();
-
 	check_dumpflag();
-
 	check_core_pattern();
-
 	sout | "Done";
 }
Index: tests/time.cfa
===================================================================
--- tests/time.cfa	(revision d68a3f776b49ebef7031d8d117b0bb0eeed3a7ea)
+++ tests/time.cfa	(revision 18d7aafd7ba06df826cfd83e2f922f66fd91126b)
@@ -10,6 +10,6 @@
 // Created On       : Tue Mar 27 17:24:56 2018
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Thu Jul 18 21:56:01 2024
-// Update Count     : 64
+// Last Modified On : Fri Jul 19 08:06:59 2024
+// Update Count     : 75
 //
 
@@ -18,9 +18,10 @@
 #include <stdlib.h>										// putenv
 
-extern "C" size_t malloc_unfreed() { return 337; }		// unfreed storage from tzset
+extern "C" size_t malloc_unfreed() { return 1024; }		// guess at unfreed storage from putenv
 
 int main() {
 	// Set fixed time location to obtain repeatable output where ever run.
-	putenv("TZ=America/Toronto");						// set fixed time zone
+	putenv( "TZ=America/Toronto" );						// set fixed time zone
+	// tzset has the stupidest interface I have ever seen.
 	tzset();											// set time zone
 
@@ -81,8 +82,2 @@
     sout | buf;
 } // main
-
-// Local Variables: //
-// mode: c //
-// tab-width: 4 //
-// compile-command: "cfa time.cfa" //
-// End: //
