summaryrefslogtreecommitdiffstats
path: root/src/common
diff options
context:
space:
mode:
Diffstat (limited to 'src/common')
-rw-r--r--src/common/common_w32res.rc5
-rw-r--r--src/common/mythread.h30
-rw-r--r--src/common/sysdefs.h18
-rw-r--r--src/common/tuklib_common.h27
-rw-r--r--src/common/tuklib_config.h2
-rw-r--r--src/common/tuklib_cpucores.c5
-rw-r--r--src/common/tuklib_cpucores.h5
-rw-r--r--src/common/tuklib_exit.c5
-rw-r--r--src/common/tuklib_exit.h9
-rw-r--r--src/common/tuklib_gettext.h5
-rw-r--r--src/common/tuklib_integer.h56
-rw-r--r--src/common/tuklib_mbstr.h5
-rw-r--r--src/common/tuklib_mbstr_fw.c5
-rw-r--r--src/common/tuklib_mbstr_width.c5
-rw-r--r--src/common/tuklib_open_stdxxx.c5
-rw-r--r--src/common/tuklib_open_stdxxx.h5
-rw-r--r--src/common/tuklib_physmem.c25
-rw-r--r--src/common/tuklib_physmem.h5
-rw-r--r--src/common/tuklib_progname.c5
-rw-r--r--src/common/tuklib_progname.h5
20 files changed, 130 insertions, 102 deletions
diff --git a/src/common/common_w32res.rc b/src/common/common_w32res.rc
index d05d22e..97aa58a 100644
--- a/src/common/common_w32res.rc
+++ b/src/common/common_w32res.rc
@@ -1,8 +1,7 @@
+/* SPDX-License-Identifier: 0BSD */
+
/*
* Author: Lasse Collin
- *
- * This file has been put into the public domain.
- * You can do whatever you want with this file.
*/
#include <winresrc.h>
diff --git a/src/common/mythread.h b/src/common/mythread.h
index 4495e01..10ea2d4 100644
--- a/src/common/mythread.h
+++ b/src/common/mythread.h
@@ -1,3 +1,5 @@
+// SPDX-License-Identifier: 0BSD
+
///////////////////////////////////////////////////////////////////////////////
//
/// \file mythread.h
@@ -5,9 +7,6 @@
//
// Author: Lasse Collin
//
-// This file has been put into the public domain.
-// You can do whatever you want with this file.
-//
///////////////////////////////////////////////////////////////////////////////
#ifndef MYTHREAD_H
@@ -112,6 +111,25 @@ mythread_sigmask(int how, const sigset_t *restrict set,
# include <sys/time.h>
#endif
+// MinGW-w64 with winpthreads:
+//
+// NOTE: Typical builds with MinGW-w64 don't use this code (MYTHREAD_POSIX).
+// Instead, native Windows threading APIs are used (MYTHREAD_VISTA or
+// MYTHREAD_WIN95).
+//
+// MinGW-w64 has _sigset_t (an integer type) in <sys/types.h>.
+// If _POSIX was #defined, the header would add the alias sigset_t too.
+// Let's keep this working even without _POSIX.
+//
+// There are no functions that actually do something with sigset_t
+// because signals barely exist on Windows. The sigfillset macro below
+// is just to silence warnings. There is no sigfillset() in MinGW-w64.
+#ifdef __MINGW32__
+# include <sys/types.h>
+# define sigset_t _sigset_t
+# define sigfillset(set_ptr) do { *(set_ptr) = 0; } while (0)
+#endif
+
#define MYTHREAD_RET_TYPE void *
#define MYTHREAD_RET_VALUE NULL
@@ -140,11 +158,13 @@ typedef struct timespec mythread_condtime;
// Use pthread_sigmask() to set the signal mask in multi-threaded programs.
// Do nothing on OpenVMS since it lacks pthread_sigmask().
+// Do nothing on MinGW-w64 too to silence warnings (its pthread_sigmask()
+// is #defined to 0 so it's a no-op).
static inline void
mythread_sigmask(int how, const sigset_t *restrict set,
sigset_t *restrict oset)
{
-#ifdef __VMS
+#if defined(__VMS) || defined(__MINGW32__)
(void)how;
(void)set;
(void)oset;
@@ -180,7 +200,7 @@ mythread_join(mythread thread)
}
-// Initiatlizes a mutex. Returns zero on success and non-zero on error.
+// Initializes a mutex. Returns zero on success and non-zero on error.
static inline int
mythread_mutex_init(mythread_mutex *mutex)
{
diff --git a/src/common/sysdefs.h b/src/common/sysdefs.h
index f04e45d..5f3785b 100644
--- a/src/common/sysdefs.h
+++ b/src/common/sysdefs.h
@@ -1,3 +1,5 @@
+// SPDX-License-Identifier: 0BSD
+
///////////////////////////////////////////////////////////////////////////////
//
/// \file sysdefs.h
@@ -8,9 +10,6 @@
//
// Author: Lasse Collin
//
-// This file has been put into the public domain.
-// You can do whatever you want with this file.
-//
///////////////////////////////////////////////////////////////////////////////
#ifndef LZMA_SYSDEFS_H
@@ -159,13 +158,16 @@ typedef unsigned char _Bool;
#include <string.h>
-// As of MSVC 2013, inline and restrict are supported with
-// non-standard keywords.
-#if defined(_WIN32) && defined(_MSC_VER)
-# ifndef inline
+// Visual Studio 2013 update 2 supports only __inline, not inline.
+// MSVC v19.0 / VS 2015 and newer support both.
+//
+// MSVC v19.27 (VS 2019 version 16.7) added support for restrict.
+// Older ones support only __restrict.
+#ifdef _MSC_VER
+# if _MSC_VER < 1900 && !defined(inline)
# define inline __inline
# endif
-# ifndef restrict
+# if _MSC_VER < 1927 && !defined(restrict)
# define restrict __restrict
# endif
#endif
diff --git a/src/common/tuklib_common.h b/src/common/tuklib_common.h
index b1f531e..7554dfc 100644
--- a/src/common/tuklib_common.h
+++ b/src/common/tuklib_common.h
@@ -1,3 +1,5 @@
+// SPDX-License-Identifier: 0BSD
+
///////////////////////////////////////////////////////////////////////////////
//
/// \file tuklib_common.h
@@ -5,9 +7,6 @@
//
// Author: Lasse Collin
//
-// This file has been put into the public domain.
-// You can do whatever you want with this file.
-//
///////////////////////////////////////////////////////////////////////////////
#ifndef TUKLIB_COMMON_H
@@ -57,8 +56,28 @@
# define TUKLIB_GNUC_REQ(major, minor) 0
#endif
-#if TUKLIB_GNUC_REQ(2, 5)
+// tuklib_attr_noreturn attribute is used to mark functions as non-returning.
+// We cannot use "noreturn" as the macro name because then C23 code that
+// uses [[noreturn]] would break as it would expand to [[ [[noreturn]] ]].
+//
+// tuklib_attr_noreturn must be used at the beginning of function declaration
+// to work in all cases. The [[noreturn]] syntax is the most limiting, it
+// must be even before any GNU C's __attribute__ keywords:
+//
+// tuklib_attr_noreturn
+// __attribute__((nonnull(1)))
+// extern void foo(const char *s);
+//
+// FIXME: Update __STDC_VERSION__ for the final C23 version. 202000 is used
+// by GCC 13 and Clang 15 with -std=c2x.
+#if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 202000
+# define tuklib_attr_noreturn [[noreturn]]
+#elif defined(__STDC_VERSION__) && __STDC_VERSION__ >= 201112
+# define tuklib_attr_noreturn _Noreturn
+#elif TUKLIB_GNUC_REQ(2, 5)
# define tuklib_attr_noreturn __attribute__((__noreturn__))
+#elif defined(_MSC_VER)
+# define tuklib_attr_noreturn __declspec(noreturn)
#else
# define tuklib_attr_noreturn
#endif
diff --git a/src/common/tuklib_config.h b/src/common/tuklib_config.h
index 9d470ba..b27251d 100644
--- a/src/common/tuklib_config.h
+++ b/src/common/tuklib_config.h
@@ -1,3 +1,5 @@
+// SPDX-License-Identifier: 0BSD
+
// If config.h isn't available, assume that the headers required by
// tuklib_common.h are available. This is required by crc32_tablegen.c.
#ifdef HAVE_CONFIG_H
diff --git a/src/common/tuklib_cpucores.c b/src/common/tuklib_cpucores.c
index bb3f2f7..c4a781a 100644
--- a/src/common/tuklib_cpucores.c
+++ b/src/common/tuklib_cpucores.c
@@ -1,3 +1,5 @@
+// SPDX-License-Identifier: 0BSD
+
///////////////////////////////////////////////////////////////////////////////
//
/// \file tuklib_cpucores.c
@@ -5,9 +7,6 @@
//
// Author: Lasse Collin
//
-// This file has been put into the public domain.
-// You can do whatever you want with this file.
-//
///////////////////////////////////////////////////////////////////////////////
#include "tuklib_cpucores.h"
diff --git a/src/common/tuklib_cpucores.h b/src/common/tuklib_cpucores.h
index be1ce1c..edff939 100644
--- a/src/common/tuklib_cpucores.h
+++ b/src/common/tuklib_cpucores.h
@@ -1,3 +1,5 @@
+// SPDX-License-Identifier: 0BSD
+
///////////////////////////////////////////////////////////////////////////////
//
/// \file tuklib_cpucores.h
@@ -5,9 +7,6 @@
//
// Author: Lasse Collin
//
-// This file has been put into the public domain.
-// You can do whatever you want with this file.
-//
///////////////////////////////////////////////////////////////////////////////
#ifndef TUKLIB_CPUCORES_H
diff --git a/src/common/tuklib_exit.c b/src/common/tuklib_exit.c
index aa55620..c84e0f6 100644
--- a/src/common/tuklib_exit.c
+++ b/src/common/tuklib_exit.c
@@ -1,3 +1,5 @@
+// SPDX-License-Identifier: 0BSD
+
///////////////////////////////////////////////////////////////////////////////
//
/// \file tuklib_exit.c
@@ -5,9 +7,6 @@
//
// Author: Lasse Collin
//
-// This file has been put into the public domain.
-// You can do whatever you want with this file.
-//
///////////////////////////////////////////////////////////////////////////////
#include "tuklib_common.h"
diff --git a/src/common/tuklib_exit.h b/src/common/tuklib_exit.h
index b11776f..d4e6b4a 100644
--- a/src/common/tuklib_exit.h
+++ b/src/common/tuklib_exit.h
@@ -1,3 +1,5 @@
+// SPDX-License-Identifier: 0BSD
+
///////////////////////////////////////////////////////////////////////////////
//
/// \file tuklib_exit.h
@@ -6,9 +8,6 @@
//
// Author: Lasse Collin
//
-// This file has been put into the public domain.
-// You can do whatever you want with this file.
-//
///////////////////////////////////////////////////////////////////////////////
#ifndef TUKLIB_EXIT_H
@@ -18,8 +17,8 @@
TUKLIB_DECLS_BEGIN
#define tuklib_exit TUKLIB_SYMBOL(tuklib_exit)
-extern void tuklib_exit(int status, int err_status, int show_error)
- tuklib_attr_noreturn;
+tuklib_attr_noreturn
+extern void tuklib_exit(int status, int err_status, int show_error);
TUKLIB_DECLS_END
#endif
diff --git a/src/common/tuklib_gettext.h b/src/common/tuklib_gettext.h
index ff18904..3ef5cb7 100644
--- a/src/common/tuklib_gettext.h
+++ b/src/common/tuklib_gettext.h
@@ -1,3 +1,5 @@
+// SPDX-License-Identifier: 0BSD
+
///////////////////////////////////////////////////////////////////////////////
//
/// \file tuklib_gettext.h
@@ -5,9 +7,6 @@
//
// Author: Lasse Collin
//
-// This file has been put into the public domain.
-// You can do whatever you want with this file.
-//
///////////////////////////////////////////////////////////////////////////////
#ifndef TUKLIB_GETTEXT_H
diff --git a/src/common/tuklib_integer.h b/src/common/tuklib_integer.h
index e22aa8a..fbd5fb2 100644
--- a/src/common/tuklib_integer.h
+++ b/src/common/tuklib_integer.h
@@ -1,3 +1,5 @@
+// SPDX-License-Identifier: 0BSD
+
///////////////////////////////////////////////////////////////////////////////
//
/// \file tuklib_integer.h
@@ -14,7 +16,7 @@
///
/// Endianness-converting integer operations (these can be macros!)
/// (XX = 16, 32, or 64; Y = b or l):
-/// - Byte swapping: bswapXX(num)
+/// - Byte swapping: byteswapXX(num)
/// - Byte order conversions to/from native (byteswaps if Y isn't
/// the native endianness): convXXYe(num)
/// - Unaligned reads: readXXYe(ptr)
@@ -37,9 +39,6 @@
// Authors: Lasse Collin
// Joachim Henke
//
-// This file has been put into the public domain.
-// You can do whatever you want with this file.
-//
///////////////////////////////////////////////////////////////////////////////
#ifndef TUKLIB_INTEGER_H
@@ -67,38 +66,41 @@
#if defined(HAVE___BUILTIN_BSWAPXX)
// GCC >= 4.8 and Clang
-# define bswap16(n) __builtin_bswap16(n)
-# define bswap32(n) __builtin_bswap32(n)
-# define bswap64(n) __builtin_bswap64(n)
+# define byteswap16(num) __builtin_bswap16(num)
+# define byteswap32(num) __builtin_bswap32(num)
+# define byteswap64(num) __builtin_bswap64(num)
#elif defined(HAVE_BYTESWAP_H)
// glibc, uClibc, dietlibc
# include <byteswap.h>
# ifdef HAVE_BSWAP_16
-# define bswap16(num) bswap_16(num)
+# define byteswap16(num) bswap_16(num)
# endif
# ifdef HAVE_BSWAP_32
-# define bswap32(num) bswap_32(num)
+# define byteswap32(num) bswap_32(num)
# endif
# ifdef HAVE_BSWAP_64
-# define bswap64(num) bswap_64(num)
+# define byteswap64(num) bswap_64(num)
# endif
#elif defined(HAVE_SYS_ENDIAN_H)
// *BSDs and Darwin
# include <sys/endian.h>
+# define byteswap16(num) bswap16(num)
+# define byteswap32(num) bswap32(num)
+# define byteswap64(num) bswap64(num)
#elif defined(HAVE_SYS_BYTEORDER_H)
// Solaris
# include <sys/byteorder.h>
# ifdef BSWAP_16
-# define bswap16(num) BSWAP_16(num)
+# define byteswap16(num) BSWAP_16(num)
# endif
# ifdef BSWAP_32
-# define bswap32(num) BSWAP_32(num)
+# define byteswap32(num) BSWAP_32(num)
# endif
# ifdef BSWAP_64
-# define bswap64(num) BSWAP_64(num)
+# define byteswap64(num) BSWAP_64(num)
# endif
# ifdef BE_16
# define conv16be(num) BE_16(num)
@@ -120,15 +122,15 @@
# endif
#endif
-#ifndef bswap16
-# define bswap16(n) (uint16_t)( \
+#ifndef byteswap16
+# define byteswap16(n) (uint16_t)( \
(((n) & 0x00FFU) << 8) \
| (((n) & 0xFF00U) >> 8) \
)
#endif
-#ifndef bswap32
-# define bswap32(n) (uint32_t)( \
+#ifndef byteswap32
+# define byteswap32(n) (uint32_t)( \
(((n) & UINT32_C(0x000000FF)) << 24) \
| (((n) & UINT32_C(0x0000FF00)) << 8) \
| (((n) & UINT32_C(0x00FF0000)) >> 8) \
@@ -136,8 +138,8 @@
)
#endif
-#ifndef bswap64
-# define bswap64(n) (uint64_t)( \
+#ifndef byteswap64
+# define byteswap64(n) (uint64_t)( \
(((n) & UINT64_C(0x00000000000000FF)) << 56) \
| (((n) & UINT64_C(0x000000000000FF00)) << 40) \
| (((n) & UINT64_C(0x0000000000FF0000)) << 24) \
@@ -161,23 +163,23 @@
# define conv64be(num) ((uint64_t)(num))
# endif
# ifndef conv16le
-# define conv16le(num) bswap16(num)
+# define conv16le(num) byteswap16(num)
# endif
# ifndef conv32le
-# define conv32le(num) bswap32(num)
+# define conv32le(num) byteswap32(num)
# endif
# ifndef conv64le
-# define conv64le(num) bswap64(num)
+# define conv64le(num) byteswap64(num)
# endif
#else
# ifndef conv16be
-# define conv16be(num) bswap16(num)
+# define conv16be(num) byteswap16(num)
# endif
# ifndef conv32be
-# define conv32be(num) bswap32(num)
+# define conv32be(num) byteswap32(num)
# endif
# ifndef conv64be
-# define conv64be(num) bswap64(num)
+# define conv64be(num) byteswap64(num)
# endif
# ifndef conv16le
# define conv16le(num) ((uint16_t)(num))
@@ -251,7 +253,7 @@
// was one instruction longer.
//
// Conclusion: At least in case of GCC and Clang, byte-by-byte code is
-// the best choise for strict-align archs to do unaligned access.
+// the best choice for strict-align archs to do unaligned access.
//
// See also: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=111502
//
@@ -625,7 +627,7 @@ write64le(uint8_t *buf, uint64_t num)
// aligned but some compilers have language extensions to do that. With
// such language extensions the memcpy() method gives excellent results.
//
-// What to do on a strict-align system when no known language extentensions
+// What to do on a strict-align system when no known language extensions
// are available? Falling back to byte-by-byte access would be safe but ruin
// optimizations that have been made specifically with aligned access in mind.
// As a compromise, aligned reads will fall back to non-compliant type punning
diff --git a/src/common/tuklib_mbstr.h b/src/common/tuklib_mbstr.h
index dde9305..4c8eeb7 100644
--- a/src/common/tuklib_mbstr.h
+++ b/src/common/tuklib_mbstr.h
@@ -1,3 +1,5 @@
+// SPDX-License-Identifier: 0BSD
+
///////////////////////////////////////////////////////////////////////////////
//
/// \file tuklib_mbstr.h
@@ -10,9 +12,6 @@
//
// Author: Lasse Collin
//
-// This file has been put into the public domain.
-// You can do whatever you want with this file.
-//
///////////////////////////////////////////////////////////////////////////////
#ifndef TUKLIB_MBSTR_H
diff --git a/src/common/tuklib_mbstr_fw.c b/src/common/tuklib_mbstr_fw.c
index 64c9ad5..22d883b 100644
--- a/src/common/tuklib_mbstr_fw.c
+++ b/src/common/tuklib_mbstr_fw.c
@@ -1,3 +1,5 @@
+// SPDX-License-Identifier: 0BSD
+
///////////////////////////////////////////////////////////////////////////////
//
/// \file tuklib_mbstr_fw.c
@@ -5,9 +7,6 @@
//
// Author: Lasse Collin
//
-// This file has been put into the public domain.
-// You can do whatever you want with this file.
-//
///////////////////////////////////////////////////////////////////////////////
#include "tuklib_mbstr.h"
diff --git a/src/common/tuklib_mbstr_width.c b/src/common/tuklib_mbstr_width.c
index 69d159e..7a8bf07 100644
--- a/src/common/tuklib_mbstr_width.c
+++ b/src/common/tuklib_mbstr_width.c
@@ -1,3 +1,5 @@
+// SPDX-License-Identifier: 0BSD
+
///////////////////////////////////////////////////////////////////////////////
//
/// \file tuklib_mbstr_width.c
@@ -5,9 +7,6 @@
//
// Author: Lasse Collin
//
-// This file has been put into the public domain.
-// You can do whatever you want with this file.
-//
///////////////////////////////////////////////////////////////////////////////
#include "tuklib_mbstr.h"
diff --git a/src/common/tuklib_open_stdxxx.c b/src/common/tuklib_open_stdxxx.c
index 26702a6..b93e61d 100644
--- a/src/common/tuklib_open_stdxxx.c
+++ b/src/common/tuklib_open_stdxxx.c
@@ -1,3 +1,5 @@
+// SPDX-License-Identifier: 0BSD
+
///////////////////////////////////////////////////////////////////////////////
//
/// \file tuklib_open_stdxxx.c
@@ -5,9 +7,6 @@
//
// Author: Lasse Collin
//
-// This file has been put into the public domain.
-// You can do whatever you want with this file.
-//
///////////////////////////////////////////////////////////////////////////////
#include "tuklib_open_stdxxx.h"
diff --git a/src/common/tuklib_open_stdxxx.h b/src/common/tuklib_open_stdxxx.h
index b911616..3ee3ade 100644
--- a/src/common/tuklib_open_stdxxx.h
+++ b/src/common/tuklib_open_stdxxx.h
@@ -1,3 +1,5 @@
+// SPDX-License-Identifier: 0BSD
+
///////////////////////////////////////////////////////////////////////////////
//
/// \file tuklib_open_stdxxx.h
@@ -5,9 +7,6 @@
//
// Author: Lasse Collin
//
-// This file has been put into the public domain.
-// You can do whatever you want with this file.
-//
///////////////////////////////////////////////////////////////////////////////
#ifndef TUKLIB_OPEN_STDXXX_H
diff --git a/src/common/tuklib_physmem.c b/src/common/tuklib_physmem.c
index 69f6fd4..1009df1 100644
--- a/src/common/tuklib_physmem.c
+++ b/src/common/tuklib_physmem.c
@@ -1,3 +1,5 @@
+// SPDX-License-Identifier: 0BSD
+
///////////////////////////////////////////////////////////////////////////////
//
/// \file tuklib_physmem.c
@@ -5,9 +7,6 @@
//
// Author: Lasse Collin
//
-// This file has been put into the public domain.
-// You can do whatever you want with this file.
-//
///////////////////////////////////////////////////////////////////////////////
#include "tuklib_physmem.h"
@@ -73,23 +72,20 @@
#endif
-// With GCC >= 8.1 with -Wextra and Clang >= 13 with -Wcast-function-type
-// will warn about the Windows-specific code.
-#if defined(__has_warning)
-# if __has_warning("-Wcast-function-type")
-# define CAN_DISABLE_WCAST_FUNCTION_TYPE 1
-# endif
-#elif TUKLIB_GNUC_REQ(8,1)
-# define CAN_DISABLE_WCAST_FUNCTION_TYPE 1
-#endif
-
-
extern uint64_t
tuklib_physmem(void)
{
uint64_t ret = 0;
#if defined(_WIN32) || defined(__CYGWIN__)
+ // This requires Windows 2000 or later.
+ MEMORYSTATUSEX meminfo;
+ meminfo.dwLength = sizeof(meminfo);
+ if (GlobalMemoryStatusEx(&meminfo))
+ ret = meminfo.ullTotalPhys;
+
+/*
+ // Old version that is compatible with even Win95:
if ((GetVersion() & 0xFF) >= 5) {
// Windows 2000 and later have GlobalMemoryStatusEx() which
// supports reporting values greater than 4 GiB. To keep the
@@ -125,6 +121,7 @@ tuklib_physmem(void)
GlobalMemoryStatus(&meminfo);
ret = meminfo.dwTotalPhys;
}
+*/
#elif defined(__OS2__)
unsigned long mem;
diff --git a/src/common/tuklib_physmem.h b/src/common/tuklib_physmem.h
index 09e2a51..f35bfba 100644
--- a/src/common/tuklib_physmem.h
+++ b/src/common/tuklib_physmem.h
@@ -1,3 +1,5 @@
+// SPDX-License-Identifier: 0BSD
+
///////////////////////////////////////////////////////////////////////////////
//
/// \file tuklib_physmem.h
@@ -5,9 +7,6 @@
//
// Author: Lasse Collin
//
-// This file has been put into the public domain.
-// You can do whatever you want with this file.
-//
///////////////////////////////////////////////////////////////////////////////
#ifndef TUKLIB_PHYSMEM_H
diff --git a/src/common/tuklib_progname.c b/src/common/tuklib_progname.c
index e2ef4e5..959c127 100644
--- a/src/common/tuklib_progname.c
+++ b/src/common/tuklib_progname.c
@@ -1,3 +1,5 @@
+// SPDX-License-Identifier: 0BSD
+
///////////////////////////////////////////////////////////////////////////////
//
/// \file tuklib_progname.c
@@ -5,9 +7,6 @@
//
// Author: Lasse Collin
//
-// This file has been put into the public domain.
-// You can do whatever you want with this file.
-//
///////////////////////////////////////////////////////////////////////////////
#include "tuklib_progname.h"
diff --git a/src/common/tuklib_progname.h b/src/common/tuklib_progname.h
index bb80f25..a3d90cb 100644
--- a/src/common/tuklib_progname.h
+++ b/src/common/tuklib_progname.h
@@ -1,3 +1,5 @@
+// SPDX-License-Identifier: 0BSD
+
///////////////////////////////////////////////////////////////////////////////
//
/// \file tuklib_progname.h
@@ -5,9 +7,6 @@
//
// Author: Lasse Collin
//
-// This file has been put into the public domain.
-// You can do whatever you want with this file.
-//
///////////////////////////////////////////////////////////////////////////////
#ifndef TUKLIB_PROGNAME_H