Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package liblnk for openSUSE:Factory checked 
in at 2023-10-02 20:05:08
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/liblnk (Old)
 and      /work/SRC/openSUSE:Factory/.liblnk.new.28202 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "liblnk"

Mon Oct  2 20:05:08 2023 rev:26 rq:1114825 version:20230928

Changes:
--------
--- /work/SRC/openSUSE:Factory/liblnk/liblnk.changes    2023-08-09 
17:25:28.781464852 +0200
+++ /work/SRC/openSUSE:Factory/.liblnk.new.28202/liblnk.changes 2023-10-02 
20:06:38.323176245 +0200
@@ -1,0 +2,6 @@
+Mon Oct  2 13:22:50 UTC 2023 - Jan Engelhardt <[email protected]>
+
+- Update to release 20230928
+  * Python 3.12 support
+
+-------------------------------------------------------------------

Old:
----
  liblnk-alpha-20230716.tar.gz
  liblnk-alpha-20230716.tar.gz.asc

New:
----
  liblnk-alpha-20230928.tar.gz
  liblnk-alpha-20230928.tar.gz.asc

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ liblnk.spec ++++++
--- /var/tmp/diff_new_pack.eJbj1M/_old  2023-10-02 20:06:39.511218970 +0200
+++ /var/tmp/diff_new_pack.eJbj1M/_new  2023-10-02 20:06:39.511218970 +0200
@@ -18,7 +18,7 @@
 
 %define lname  liblnk1
 Name:           liblnk
-Version:        20230716
+Version:        20230928
 Release:        0
 Summary:        Library and tools to access the Windows Shortcut File (LNK) 
format
 License:        GFDL-1.3-or-later AND LGPL-3.0-or-later

++++++ liblnk-alpha-20230716.tar.gz -> liblnk-alpha-20230928.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/liblnk-20230716/Makefile.am 
new/liblnk-20230928/Makefile.am
--- old/liblnk-20230716/Makefile.am     2022-04-28 06:23:51.000000000 +0200
+++ new/liblnk-20230928/Makefile.am     2023-09-09 10:49:40.000000000 +0200
@@ -50,6 +50,9 @@
        liblnk.pc.in
 
 SETUP_PY_FILES = \
+       pyproject.toml \
+       setup.cfg \
+       setup.cfg.in \
        setup.py
 
 SPEC_FILES = \
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/liblnk-20230716/Makefile.in 
new/liblnk-20230928/Makefile.in
--- old/liblnk-20230716/Makefile.in     2023-07-16 08:36:51.000000000 +0200
+++ new/liblnk-20230928/Makefile.in     2023-09-30 10:35:17.000000000 +0200
@@ -119,7 +119,7 @@
 CONFIG_HEADER = $(top_builddir)/common/config.h
 CONFIG_CLEAN_FILES = include/liblnk/definitions.h \
        include/liblnk/features.h include/liblnk/types.h \
-       dpkg/changelog liblnk.pc liblnk.spec
+       dpkg/changelog liblnk.pc liblnk.spec setup.cfg
 CONFIG_CLEAN_VPATH_FILES =
 AM_V_P = $(am__v_P_@AM_V@)
 am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
@@ -204,7 +204,8 @@
   done | $(am__uniquify_input)`
 DIST_SUBDIRS = $(SUBDIRS)
 am__DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/liblnk.pc.in \
-       $(srcdir)/liblnk.spec.in $(top_srcdir)/dpkg/changelog.in \
+       $(srcdir)/liblnk.spec.in $(srcdir)/setup.cfg.in \
+       $(top_srcdir)/dpkg/changelog.in \
        $(top_srcdir)/include/liblnk/definitions.h.in \
        $(top_srcdir)/include/liblnk/features.h.in \
        $(top_srcdir)/include/liblnk/types.h.in ABOUT-NLS AUTHORS \
@@ -647,6 +648,9 @@
        liblnk.pc.in
 
 SETUP_PY_FILES = \
+       pyproject.toml \
+       setup.cfg \
+       setup.cfg.in \
        setup.py
 
 SPEC_FILES = \
@@ -715,6 +719,8 @@
        cd $(top_builddir) && $(SHELL) ./config.status $@
 liblnk.spec: $(top_builddir)/config.status $(srcdir)/liblnk.spec.in
        cd $(top_builddir) && $(SHELL) ./config.status $@
+setup.cfg: $(top_builddir)/config.status $(srcdir)/setup.cfg.in
+       cd $(top_builddir) && $(SHELL) ./config.status $@
 
 mostlyclean-libtool:
        -rm -f *.lo
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/liblnk-20230716/common/config.h 
new/liblnk-20230928/common/config.h
--- old/liblnk-20230716/common/config.h 2023-07-16 08:37:02.000000000 +0200
+++ new/liblnk-20230928/common/config.h 2023-09-30 10:35:34.000000000 +0200
@@ -527,7 +527,7 @@
 #define PACKAGE_NAME "liblnk"
 
 /* Define to the full name and version of this package. */
-#define PACKAGE_STRING "liblnk 20230716"
+#define PACKAGE_STRING "liblnk 20230928"
 
 /* Define to the one symbol short name of this package. */
 #define PACKAGE_TARNAME "liblnk"
@@ -536,7 +536,7 @@
 #define PACKAGE_URL ""
 
 /* Define to the version of this package. */
-#define PACKAGE_VERSION "20230716"
+#define PACKAGE_VERSION "20230928"
 
 /* The size of `int', as computed by sizeof. */
 #define SIZEOF_INT 4
@@ -562,7 +562,7 @@
 /* #undef STRERROR_R_CHAR_P */
 
 /* Version number of package */
-#define VERSION "20230716"
+#define VERSION "20230928"
 
 /* Number of bits in a file offset, on hosts where this is settable. */
 /* #undef _FILE_OFFSET_BITS */
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/liblnk-20230716/configure 
new/liblnk-20230928/configure
--- old/liblnk-20230716/configure       2023-07-16 08:36:49.000000000 +0200
+++ new/liblnk-20230928/configure       2023-09-30 10:35:16.000000000 +0200
@@ -1,6 +1,6 @@
 #! /bin/sh
 # Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.71 for liblnk 20230716.
+# Generated by GNU Autoconf 2.71 for liblnk 20230928.
 #
 # Report bugs to <[email protected]>.
 #
@@ -621,8 +621,8 @@
 # Identity of this package.
 PACKAGE_NAME='liblnk'
 PACKAGE_TARNAME='liblnk'
-PACKAGE_VERSION='20230716'
-PACKAGE_STRING='liblnk 20230716'
+PACKAGE_VERSION='20230928'
+PACKAGE_STRING='liblnk 20230928'
 PACKAGE_BUGREPORT='[email protected]'
 PACKAGE_URL=''
 
@@ -1689,7 +1689,7 @@
   # Omit some internal or obsolete options to make the list less imposing.
   # This message is too long to be a string in the A/UX 3.1 sh.
   cat <<_ACEOF
-\`configure' configures liblnk 20230716 to adapt to many kinds of systems.
+\`configure' configures liblnk 20230928 to adapt to many kinds of systems.
 
 Usage: $0 [OPTION]... [VAR=VALUE]...
 
@@ -1760,7 +1760,7 @@
 
 if test -n "$ac_init_help"; then
   case $ac_init_help in
-     short | recursive ) echo "Configuration of liblnk 20230716:";;
+     short | recursive ) echo "Configuration of liblnk 20230928:";;
    esac
   cat <<\_ACEOF
 
@@ -2018,7 +2018,7 @@
 test -n "$ac_init_help" && exit $ac_status
 if $ac_init_version; then
   cat <<\_ACEOF
-liblnk configure 20230716
+liblnk configure 20230928
 generated by GNU Autoconf 2.71
 
 Copyright (C) 2021 Free Software Foundation, Inc.
@@ -2739,7 +2739,7 @@
 This file contains any messages produced by compilers while
 running configure, to aid debugging if configure makes a mistake.
 
-It was created by liblnk $as_me 20230716, which was
+It was created by liblnk $as_me 20230928, which was
 generated by GNU Autoconf 2.71.  Invocation command line was
 
   $ $0$ac_configure_args_raw
@@ -4228,7 +4228,7 @@
 
 # Define the identity of the package.
  PACKAGE='liblnk'
- VERSION='20230716'
+ VERSION='20230928'
 
 
 printf "%s\n" "#define PACKAGE \"$PACKAGE\"" >>confdefs.h
@@ -52235,7 +52235,7 @@
 then :
   ax_python_progs="python${PYTHON_VERSION}"
 else $as_nop
-  ax_python_progs="python python3 python3.11 python3.10 python3.9 python3.8 
python3.7 python3.6 python3.5 python3.4 python3.3 python3.2 python3.1 python3.0 
python2 python2.7 python2.6 python2.5"
+  ax_python_progs="python python3 python3.12 python3.11 python3.10 python3.9 
python3.8 python3.7 python3.6 python3.5 python3.4 python3.3 python3.2 python3.1 
python3.0 python2 python2.7 python2.6 python2.5"
 fi
   for ac_prog in $ax_python_progs
 do
@@ -52351,7 +52351,7 @@
 fi
   if test "x${PYTHON_CONFIG}" = x
 then :
-  for ac_prog in python-config python3-config python3.11-config 
python3.10-config python3.9-config python3.8-config python3.7-config 
python3.6-config python3.5-config python3.4-config python3.3-config 
python3.2-config python3.1-config python3.0-config python2-config 
python2.7-config python2.6-config python2.5-config
+  for ac_prog in python-config python3-config python3.12-config 
python3.11-config python3.10-config python3.9-config python3.8-config 
python3.7-config python3.6-config python3.5-config python3.4-config 
python3.3-config python3.2-config python3.1-config python3.0-config 
python2-config python2.7-config python2.6-config python2.5-config
 do
   # Extract the first word of "$ac_prog", so it can be a program name with 
args.
 set dummy $ac_prog; ac_word=$2
@@ -52770,7 +52770,7 @@
 
   if test "x${ac_cv_enable_python3}" != xno
 then :
-  ax_python3_progs="python3 python3.11 python3.10 python3.9 python3.8 
python3.7 python3.6 python3.5 python3.4 python3.3 python3.2 python3.1 python3.0"
+  ax_python3_progs="python3 python3.12 python3.11 python3.10 python3.9 
python3.8 python3.7 python3.6 python3.5 python3.4 python3.3 python3.2 python3.1 
python3.0"
   for ac_prog in $ax_python3_progs
 do
   # Extract the first word of "$ac_prog", so it can be a program name with 
args.
@@ -52837,7 +52837,7 @@
 
   if test "x${PYTHON3_CONFIG}" = x
 then :
-  for ac_prog in python3-config python3.11-config python3.10-config 
python3.9-config python3.8-config python3.7-config python3.6-config 
python3.5-config python3.4-config python3.3-config python3.2-config 
python3.1-config python3.0-config
+  for ac_prog in python3-config python3.12-config python3.11-config 
python3.10-config python3.9-config python3.8-config python3.7-config 
python3.6-config python3.5-config python3.4-config python3.3-config 
python3.2-config python3.1-config python3.0-config
 do
   # Extract the first word of "$ac_prog", so it can be a program name with 
args.
 set dummy $ac_prog; ac_word=$2
@@ -53374,6 +53374,8 @@
 
 ac_config_files="$ac_config_files liblnk.spec"
 
+ac_config_files="$ac_config_files setup.cfg"
+
 ac_config_headers="$ac_config_headers common/config.h"
 
 
@@ -53988,7 +53990,7 @@
 # report actual input values of CONFIG_FILES etc. instead of their
 # values after options handling.
 ac_log="
-This file was extended by liblnk $as_me 20230716, which was
+This file was extended by liblnk $as_me 20230928, which was
 generated by GNU Autoconf 2.71.  Invocation command line was
 
   CONFIG_FILES    = $CONFIG_FILES
@@ -54056,7 +54058,7 @@
 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
 ac_cs_config='$ac_cs_config_escaped'
 ac_cs_version="\\
-liblnk config.status 20230716
+liblnk config.status 20230928
 configured by $0, generated by GNU Autoconf 2.71,
   with options \\"\$ac_cs_config\\"
 
@@ -54618,6 +54620,7 @@
     "liblnk/liblnk.rc") CONFIG_FILES="$CONFIG_FILES liblnk/liblnk.rc" ;;
     "liblnk.pc") CONFIG_FILES="$CONFIG_FILES liblnk.pc" ;;
     "liblnk.spec") CONFIG_FILES="$CONFIG_FILES liblnk.spec" ;;
+    "setup.cfg") CONFIG_FILES="$CONFIG_FILES setup.cfg" ;;
     "common/config.h") CONFIG_HEADERS="$CONFIG_HEADERS common/config.h" ;;
 
   *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/liblnk-20230716/configure.ac 
new/liblnk-20230928/configure.ac
--- old/liblnk-20230716/configure.ac    2023-07-16 07:57:42.000000000 +0200
+++ new/liblnk-20230928/configure.ac    2023-09-30 10:14:10.000000000 +0200
@@ -2,7 +2,7 @@
 
 AC_INIT(
  [liblnk],
- [20230716],
+ [20230928],
  [[email protected]])
 
 AC_CONFIG_SRCDIR(
@@ -203,6 +203,7 @@
 AC_CONFIG_FILES([liblnk/liblnk.rc])
 AC_CONFIG_FILES([liblnk.pc])
 AC_CONFIG_FILES([liblnk.spec])
+AC_CONFIG_FILES([setup.cfg])
 dnl Generate a source configuration file
 AC_CONFIG_HEADERS([common/config.h])
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/liblnk-20230716/dpkg/changelog 
new/liblnk-20230928/dpkg/changelog
--- old/liblnk-20230716/dpkg/changelog  2023-07-16 08:37:02.000000000 +0200
+++ new/liblnk-20230928/dpkg/changelog  2023-09-30 10:35:34.000000000 +0200
@@ -1,5 +1,5 @@
-liblnk (20230716-1) unstable; urgency=low
+liblnk (20230928-1) unstable; urgency=low
 
   * Auto-generated
 
- -- Joachim Metz <[email protected]>  Sun, 16 Jul 2023 08:37:01 +0200
+ -- Joachim Metz <[email protected]>  Sat, 30 Sep 2023 10:35:33 +0200
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/liblnk-20230716/include/liblnk/definitions.h 
new/liblnk-20230928/include/liblnk/definitions.h
--- old/liblnk-20230716/include/liblnk/definitions.h    2023-07-16 
08:37:02.000000000 +0200
+++ new/liblnk-20230928/include/liblnk/definitions.h    2023-09-30 
10:35:34.000000000 +0200
@@ -24,11 +24,11 @@
 
 #include <liblnk/types.h>
 
-#define LIBLNK_VERSION                                                 20230716
+#define LIBLNK_VERSION                                                 20230928
 
 /* The liblnk version string
  */
-#define LIBLNK_VERSION_STRING                                          
"20230716"
+#define LIBLNK_VERSION_STRING                                          
"20230928"
 
 /* The liblnk file access
  * bit 1        set to 1 for read access
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/liblnk-20230716/liblnk/liblnk.rc 
new/liblnk-20230928/liblnk/liblnk.rc
--- old/liblnk-20230716/liblnk/liblnk.rc        2023-07-16 08:37:02.000000000 
+0200
+++ new/liblnk-20230928/liblnk/liblnk.rc        2023-09-30 10:35:34.000000000 
+0200
@@ -22,12 +22,12 @@
     BLOCK "040904E4"
     BEGIN
       VALUE "FileDescription",         "Library to access the Windows Shortcut 
File (LNK) format\0"
-      VALUE "FileVersion",             "20230716" "\0"
+      VALUE "FileVersion",             "20230928" "\0"
       VALUE "InternalName",            "liblnk.dll\0"
       VALUE "LegalCopyright",          "(C) 2009-2023, Joachim Metz 
<[email protected]>\0"
       VALUE "OriginalFilename",                "liblnk.dll\0"
       VALUE "ProductName",             "liblnk\0"
-      VALUE "ProductVersion",          "20230716" "\0"
+      VALUE "ProductVersion",          "20230928" "\0"
       VALUE "Comments",                        "For more information visit 
https://github.com/libyal/liblnk/\0";
     END
   END
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/liblnk-20230716/liblnk/liblnk_definitions.h 
new/liblnk-20230928/liblnk/liblnk_definitions.h
--- old/liblnk-20230716/liblnk/liblnk_definitions.h     2023-07-16 
08:37:02.000000000 +0200
+++ new/liblnk-20230928/liblnk/liblnk_definitions.h     2023-09-30 
10:35:34.000000000 +0200
@@ -37,11 +37,11 @@
  * for local use of liblnk
  */
 #else
-#define LIBLNK_VERSION                                                         
20230716
+#define LIBLNK_VERSION                                                         
20230928
 
 /* The liblnk version string
  */
-#define LIBLNK_VERSION_STRING                                                  
"20230716"
+#define LIBLNK_VERSION_STRING                                                  
"20230928"
 
 /* The liblnk file access
  * bit 1        set to 1 for read access
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/liblnk-20230716/liblnk/liblnk_file.c 
new/liblnk-20230928/liblnk/liblnk_file.c
--- old/liblnk-20230716/liblnk/liblnk_file.c    2023-07-16 07:57:45.000000000 
+0200
+++ new/liblnk-20230928/liblnk/liblnk_file.c    2023-09-28 10:08:39.000000000 
+0200
@@ -562,11 +562,11 @@
      int access_flags,
      libcerror_error_t **error )
 {
-       liblnk_internal_file_t *internal_file = NULL;
-       static char *function                 = 
"liblnk_file_open_file_io_handle";
-       int bfio_access_flags                 = 0;
-       int file_io_handle_is_open            = 0;
-       int file_io_handle_opened_in_library  = 0;
+       liblnk_internal_file_t *internal_file    = NULL;
+       static char *function                    = 
"liblnk_file_open_file_io_handle";
+       uint8_t file_io_handle_opened_in_library = 0;
+       int bfio_access_flags                    = 0;
+       int file_io_handle_is_open               = 0;
 
        if( file == NULL )
        {
@@ -3474,36 +3474,40 @@
        {
                utf8_local_path_size += 1;
        }
-       if( ( internal_file->location_information->string_flags & 
LIBLNK_LOCATION_INFORMATION_STRING_FLAG_COMMON_PATH_IS_UNICODE ) != 0 )
-       {
-               result = libuna_utf8_string_size_from_utf16_stream(
-                         internal_file->location_information->common_path,
-                         internal_file->location_information->common_path_size,
-                         LIBUNA_ENDIAN_LITTLE | 
LIBUNA_UTF16_STREAM_ALLOW_UNPAIRED_SURROGATE,
-                         &utf8_common_path_size,
-                         error );
-       }
-       else
-       {
-               result = libuna_utf8_string_size_from_byte_stream(
-                         internal_file->location_information->common_path,
-                         internal_file->location_information->common_path_size,
-                         internal_file->io_handle->ascii_codepage,
-                         &utf8_common_path_size,
-                         error );
-       }
-       if( result != 1 )
+       if( internal_file->location_information->common_path != NULL )
        {
-               libcerror_error_set(
-                error,
-                LIBCERROR_ERROR_DOMAIN_RUNTIME,
-                LIBCERROR_RUNTIME_ERROR_GET_FAILED,
-                "%s: unable to retrieve UTF-8 common path string size.",
-                function );
+               if( ( internal_file->location_information->string_flags & 
LIBLNK_LOCATION_INFORMATION_STRING_FLAG_COMMON_PATH_IS_UNICODE ) != 0 )
+               {
+                       result = libuna_utf8_string_size_from_utf16_stream(
+                                 
internal_file->location_information->common_path,
+                                 
internal_file->location_information->common_path_size,
+                                 LIBUNA_ENDIAN_LITTLE | 
LIBUNA_UTF16_STREAM_ALLOW_UNPAIRED_SURROGATE,
+                                 &utf8_common_path_size,
+                                 error );
+               }
+               else
+               {
+                       result = libuna_utf8_string_size_from_byte_stream(
+                                 
internal_file->location_information->common_path,
+                                 
internal_file->location_information->common_path_size,
+                                 internal_file->io_handle->ascii_codepage,
+                                 &utf8_common_path_size,
+                                 error );
+               }
+               if( result != 1 )
+               {
+                       libcerror_error_set(
+                        error,
+                        LIBCERROR_ERROR_DOMAIN_RUNTIME,
+                        LIBCERROR_RUNTIME_ERROR_GET_FAILED,
+                        "%s: unable to retrieve UTF-8 common path string 
size.",
+                        function );
 
-               return( -1 );
+                       return( -1 );
+               }
+               utf8_local_path_size -= 1;
        }
-       *utf8_string_size = utf8_local_path_size + utf8_common_path_size - 1;
+       *utf8_string_size = utf8_local_path_size + utf8_common_path_size;
 
        return( 1 );
 }
@@ -3678,38 +3682,41 @@
                }
                utf8_string[ string_index++ ] = (uint8_t) '\\';
        }
-       if( ( internal_file->location_information->string_flags & 
LIBLNK_LOCATION_INFORMATION_STRING_FLAG_COMMON_PATH_IS_UNICODE ) != 0 )
+       if( internal_file->location_information->common_path != NULL )
        {
-               result = libuna_utf8_string_with_index_copy_from_utf16_stream(
-                         utf8_string,
-                         utf8_string_size,
-                         &string_index,
-                         internal_file->location_information->common_path,
-                         internal_file->location_information->common_path_size,
-                         LIBUNA_ENDIAN_LITTLE | 
LIBUNA_UTF16_STREAM_ALLOW_UNPAIRED_SURROGATE,
-                         error );
-       }
-       else
-       {
-               result = libuna_utf8_string_with_index_copy_from_byte_stream(
-                         utf8_string,
-                         utf8_string_size,
-                         &string_index,
-                         internal_file->location_information->common_path,
-                         internal_file->location_information->common_path_size,
-                         internal_file->io_handle->ascii_codepage,
-                         error );
-       }
-       if( result != 1 )
-       {
-               libcerror_error_set(
-                error,
-                LIBCERROR_ERROR_DOMAIN_RUNTIME,
-                LIBCERROR_RUNTIME_ERROR_SET_FAILED,
-                "%s: unable to set UTF-8 common path string.",
-                function );
+               if( ( internal_file->location_information->string_flags & 
LIBLNK_LOCATION_INFORMATION_STRING_FLAG_COMMON_PATH_IS_UNICODE ) != 0 )
+               {
+                       result = 
libuna_utf8_string_with_index_copy_from_utf16_stream(
+                                 utf8_string,
+                                 utf8_string_size,
+                                 &string_index,
+                                 
internal_file->location_information->common_path,
+                                 
internal_file->location_information->common_path_size,
+                                 LIBUNA_ENDIAN_LITTLE | 
LIBUNA_UTF16_STREAM_ALLOW_UNPAIRED_SURROGATE,
+                                 error );
+               }
+               else
+               {
+                       result = 
libuna_utf8_string_with_index_copy_from_byte_stream(
+                                 utf8_string,
+                                 utf8_string_size,
+                                 &string_index,
+                                 
internal_file->location_information->common_path,
+                                 
internal_file->location_information->common_path_size,
+                                 internal_file->io_handle->ascii_codepage,
+                                 error );
+               }
+               if( result != 1 )
+               {
+                       libcerror_error_set(
+                        error,
+                        LIBCERROR_ERROR_DOMAIN_RUNTIME,
+                        LIBCERROR_RUNTIME_ERROR_SET_FAILED,
+                        "%s: unable to set UTF-8 common path string.",
+                        function );
 
-               return( -1 );
+                       return( -1 );
+               }
        }
        return( 1 );
 }
@@ -3856,36 +3863,40 @@
        {
                utf16_local_path_size += 1;
        }
-       if( ( internal_file->location_information->string_flags & 
LIBLNK_LOCATION_INFORMATION_STRING_FLAG_COMMON_PATH_IS_UNICODE ) != 0 )
-       {
-               result = libuna_utf16_string_size_from_utf16_stream(
-                         internal_file->location_information->common_path,
-                         internal_file->location_information->common_path_size,
-                         LIBUNA_ENDIAN_LITTLE | 
LIBUNA_UTF16_STREAM_ALLOW_UNPAIRED_SURROGATE,
-                         &utf16_common_path_size,
-                         error );
-       }
-       else
-       {
-               result = libuna_utf16_string_size_from_byte_stream(
-                         internal_file->location_information->common_path,
-                         internal_file->location_information->common_path_size,
-                         internal_file->io_handle->ascii_codepage,
-                         &utf16_common_path_size,
-                         error );
-       }
-       if( result != 1 )
+       if( internal_file->location_information->common_path != NULL )
        {
-               libcerror_error_set(
-                error,
-                LIBCERROR_ERROR_DOMAIN_RUNTIME,
-                LIBCERROR_RUNTIME_ERROR_GET_FAILED,
-                "%s: unable to retrieve UTF-16 common path string size.",
-                function );
+               if( ( internal_file->location_information->string_flags & 
LIBLNK_LOCATION_INFORMATION_STRING_FLAG_COMMON_PATH_IS_UNICODE ) != 0 )
+               {
+                       result = libuna_utf16_string_size_from_utf16_stream(
+                                 
internal_file->location_information->common_path,
+                                 
internal_file->location_information->common_path_size,
+                                 LIBUNA_ENDIAN_LITTLE | 
LIBUNA_UTF16_STREAM_ALLOW_UNPAIRED_SURROGATE,
+                                 &utf16_common_path_size,
+                                 error );
+               }
+               else
+               {
+                       result = libuna_utf16_string_size_from_byte_stream(
+                                 
internal_file->location_information->common_path,
+                                 
internal_file->location_information->common_path_size,
+                                 internal_file->io_handle->ascii_codepage,
+                                 &utf16_common_path_size,
+                                 error );
+               }
+               if( result != 1 )
+               {
+                       libcerror_error_set(
+                        error,
+                        LIBCERROR_ERROR_DOMAIN_RUNTIME,
+                        LIBCERROR_RUNTIME_ERROR_GET_FAILED,
+                        "%s: unable to retrieve UTF-16 common path string 
size.",
+                        function );
 
-               return( -1 );
+                       return( -1 );
+               }
+               utf16_local_path_size -= 1;
        }
-       *utf16_string_size = utf16_local_path_size + utf16_common_path_size - 1;
+       *utf16_string_size = utf16_local_path_size + utf16_common_path_size;
 
        return( 1 );
 }
@@ -4060,38 +4071,41 @@
                }
                utf16_string[ string_index++ ] = (uint16_t) '\\';
        }
-       if( ( internal_file->location_information->string_flags & 
LIBLNK_LOCATION_INFORMATION_STRING_FLAG_COMMON_PATH_IS_UNICODE ) != 0 )
+       if( internal_file->location_information->common_path != NULL )
        {
-               result = libuna_utf16_string_with_index_copy_from_utf16_stream(
-                         utf16_string,
-                         utf16_string_size,
-                         &string_index,
-                         internal_file->location_information->common_path,
-                         internal_file->location_information->common_path_size,
-                         LIBUNA_ENDIAN_LITTLE | 
LIBUNA_UTF16_STREAM_ALLOW_UNPAIRED_SURROGATE,
-                         error );
-       }
-       else
-       {
-               result = libuna_utf16_string_with_index_copy_from_byte_stream(
-                         utf16_string,
-                         utf16_string_size,
-                         &string_index,
-                         internal_file->location_information->common_path,
-                         internal_file->location_information->common_path_size,
-                         internal_file->io_handle->ascii_codepage,
-                         error );
-       }
-       if( result != 1 )
-       {
-               libcerror_error_set(
-                error,
-                LIBCERROR_ERROR_DOMAIN_RUNTIME,
-                LIBCERROR_RUNTIME_ERROR_SET_FAILED,
-                "%s: unable to set UTF-16 common path string.",
-                function );
+               if( ( internal_file->location_information->string_flags & 
LIBLNK_LOCATION_INFORMATION_STRING_FLAG_COMMON_PATH_IS_UNICODE ) != 0 )
+               {
+                       result = 
libuna_utf16_string_with_index_copy_from_utf16_stream(
+                                 utf16_string,
+                                 utf16_string_size,
+                                 &string_index,
+                                 
internal_file->location_information->common_path,
+                                 
internal_file->location_information->common_path_size,
+                                 LIBUNA_ENDIAN_LITTLE | 
LIBUNA_UTF16_STREAM_ALLOW_UNPAIRED_SURROGATE,
+                                 error );
+               }
+               else
+               {
+                       result = 
libuna_utf16_string_with_index_copy_from_byte_stream(
+                                 utf16_string,
+                                 utf16_string_size,
+                                 &string_index,
+                                 
internal_file->location_information->common_path,
+                                 
internal_file->location_information->common_path_size,
+                                 internal_file->io_handle->ascii_codepage,
+                                 error );
+               }
+               if( result != 1 )
+               {
+                       libcerror_error_set(
+                        error,
+                        LIBCERROR_ERROR_DOMAIN_RUNTIME,
+                        LIBCERROR_RUNTIME_ERROR_SET_FAILED,
+                        "%s: unable to set UTF-16 common path string.",
+                        function );
 
-               return( -1 );
+                       return( -1 );
+               }
        }
        return( 1 );
 }
@@ -4238,36 +4252,40 @@
        {
                utf8_network_share_name_size += 1;
        }
-       if( ( internal_file->location_information->string_flags & 
LIBLNK_LOCATION_INFORMATION_STRING_FLAG_COMMON_PATH_IS_UNICODE ) != 0 )
-       {
-               result = libuna_utf8_string_size_from_utf16_stream(
-                         internal_file->location_information->common_path,
-                         internal_file->location_information->common_path_size,
-                         LIBUNA_ENDIAN_LITTLE | 
LIBUNA_UTF16_STREAM_ALLOW_UNPAIRED_SURROGATE,
-                         &utf8_common_path_size,
-                         error );
-       }
-       else
-       {
-               result = libuna_utf8_string_size_from_byte_stream(
-                         internal_file->location_information->common_path,
-                         internal_file->location_information->common_path_size,
-                         internal_file->io_handle->ascii_codepage,
-                         &utf8_common_path_size,
-                         error );
-       }
-       if( result != 1 )
+       if( internal_file->location_information->common_path != NULL )
        {
-               libcerror_error_set(
-                error,
-                LIBCERROR_ERROR_DOMAIN_RUNTIME,
-                LIBCERROR_RUNTIME_ERROR_GET_FAILED,
-                "%s: unable to retrieve UTF-8 common path string size.",
-                function );
+               if( ( internal_file->location_information->string_flags & 
LIBLNK_LOCATION_INFORMATION_STRING_FLAG_COMMON_PATH_IS_UNICODE ) != 0 )
+               {
+                       result = libuna_utf8_string_size_from_utf16_stream(
+                                 
internal_file->location_information->common_path,
+                                 
internal_file->location_information->common_path_size,
+                                 LIBUNA_ENDIAN_LITTLE | 
LIBUNA_UTF16_STREAM_ALLOW_UNPAIRED_SURROGATE,
+                                 &utf8_common_path_size,
+                                 error );
+               }
+               else
+               {
+                       result = libuna_utf8_string_size_from_byte_stream(
+                                 
internal_file->location_information->common_path,
+                                 
internal_file->location_information->common_path_size,
+                                 internal_file->io_handle->ascii_codepage,
+                                 &utf8_common_path_size,
+                                 error );
+               }
+               if( result != 1 )
+               {
+                       libcerror_error_set(
+                        error,
+                        LIBCERROR_ERROR_DOMAIN_RUNTIME,
+                        LIBCERROR_RUNTIME_ERROR_GET_FAILED,
+                        "%s: unable to retrieve UTF-8 common path string 
size.",
+                        function );
 
-               return( -1 );
+                       return( -1 );
+               }
+               utf8_network_share_name_size -= 1;
        }
-       *utf8_string_size = utf8_network_share_name_size + 
utf8_common_path_size - 1;
+       *utf8_string_size = utf8_network_share_name_size + 
utf8_common_path_size;
 
        return( 1 );
 }
@@ -4442,38 +4460,41 @@
                }
                utf8_string[ string_index++ ] = (uint8_t) '\\';
        }
-       if( ( internal_file->location_information->string_flags & 
LIBLNK_LOCATION_INFORMATION_STRING_FLAG_COMMON_PATH_IS_UNICODE ) != 0 )
+       if( internal_file->location_information->common_path != NULL )
        {
-               result = libuna_utf8_string_with_index_copy_from_utf16_stream(
-                         utf8_string,
-                         utf8_string_size,
-                         &string_index,
-                         internal_file->location_information->common_path,
-                         internal_file->location_information->common_path_size,
-                         LIBUNA_ENDIAN_LITTLE | 
LIBUNA_UTF16_STREAM_ALLOW_UNPAIRED_SURROGATE,
-                         error );
-       }
-       else
-       {
-               result = libuna_utf8_string_with_index_copy_from_byte_stream(
-                         utf8_string,
-                         utf8_string_size,
-                         &string_index,
-                         internal_file->location_information->common_path,
-                         internal_file->location_information->common_path_size,
-                         internal_file->io_handle->ascii_codepage,
-                         error );
-       }
-       if( result != 1 )
-       {
-               libcerror_error_set(
-                error,
-                LIBCERROR_ERROR_DOMAIN_RUNTIME,
-                LIBCERROR_RUNTIME_ERROR_SET_FAILED,
-                "%s: unable to set UTF-8 common path string.",
-                function );
+               if( ( internal_file->location_information->string_flags & 
LIBLNK_LOCATION_INFORMATION_STRING_FLAG_COMMON_PATH_IS_UNICODE ) != 0 )
+               {
+                       result = 
libuna_utf8_string_with_index_copy_from_utf16_stream(
+                                 utf8_string,
+                                 utf8_string_size,
+                                 &string_index,
+                                 
internal_file->location_information->common_path,
+                                 
internal_file->location_information->common_path_size,
+                                 LIBUNA_ENDIAN_LITTLE | 
LIBUNA_UTF16_STREAM_ALLOW_UNPAIRED_SURROGATE,
+                                 error );
+               }
+               else
+               {
+                       result = 
libuna_utf8_string_with_index_copy_from_byte_stream(
+                                 utf8_string,
+                                 utf8_string_size,
+                                 &string_index,
+                                 
internal_file->location_information->common_path,
+                                 
internal_file->location_information->common_path_size,
+                                 internal_file->io_handle->ascii_codepage,
+                                 error );
+               }
+               if( result != 1 )
+               {
+                       libcerror_error_set(
+                        error,
+                        LIBCERROR_ERROR_DOMAIN_RUNTIME,
+                        LIBCERROR_RUNTIME_ERROR_SET_FAILED,
+                        "%s: unable to set UTF-8 common path string.",
+                        function );
 
-               return( -1 );
+                       return( -1 );
+               }
        }
        return( 1 );
 }
@@ -4620,36 +4641,40 @@
        {
                utf16_network_share_name_size += 1;
        }
-       if( ( internal_file->location_information->string_flags & 
LIBLNK_LOCATION_INFORMATION_STRING_FLAG_COMMON_PATH_IS_UNICODE ) != 0 )
+       if( internal_file->location_information->common_path != NULL )
        {
-               result = libuna_utf16_string_size_from_utf16_stream(
-                         internal_file->location_information->common_path,
-                         internal_file->location_information->common_path_size,
-                         LIBUNA_ENDIAN_LITTLE | 
LIBUNA_UTF16_STREAM_ALLOW_UNPAIRED_SURROGATE,
-                         &utf16_common_path_size,
-                         error );
-       }
-       else
-       {
-               result = libuna_utf16_string_size_from_byte_stream(
-                         internal_file->location_information->common_path,
-                         internal_file->location_information->common_path_size,
-                         internal_file->io_handle->ascii_codepage,
-                         &utf16_common_path_size,
-                         error );
-       }
-       if( result != 1 )
-       {
-               libcerror_error_set(
-                error,
-                LIBCERROR_ERROR_DOMAIN_RUNTIME,
-                LIBCERROR_RUNTIME_ERROR_GET_FAILED,
-                "%s: unable to retrieve UTF-16 common path string size.",
-                function );
+               if( ( internal_file->location_information->string_flags & 
LIBLNK_LOCATION_INFORMATION_STRING_FLAG_COMMON_PATH_IS_UNICODE ) != 0 )
+               {
+                       result = libuna_utf16_string_size_from_utf16_stream(
+                                 
internal_file->location_information->common_path,
+                                 
internal_file->location_information->common_path_size,
+                                 LIBUNA_ENDIAN_LITTLE | 
LIBUNA_UTF16_STREAM_ALLOW_UNPAIRED_SURROGATE,
+                                 &utf16_common_path_size,
+                                 error );
+               }
+               else
+               {
+                       result = libuna_utf16_string_size_from_byte_stream(
+                                 
internal_file->location_information->common_path,
+                                 
internal_file->location_information->common_path_size,
+                                 internal_file->io_handle->ascii_codepage,
+                                 &utf16_common_path_size,
+                                 error );
+               }
+               if( result != 1 )
+               {
+                       libcerror_error_set(
+                        error,
+                        LIBCERROR_ERROR_DOMAIN_RUNTIME,
+                        LIBCERROR_RUNTIME_ERROR_GET_FAILED,
+                        "%s: unable to retrieve UTF-16 common path string 
size.",
+                        function );
 
-               return( -1 );
+                       return( -1 );
+               }
+               utf16_network_share_name_size -= 1;
        }
-       *utf16_string_size = utf16_network_share_name_size + 
utf16_common_path_size - 1;
+       *utf16_string_size = utf16_network_share_name_size + 
utf16_common_path_size;
 
        return( 1 );
 }
@@ -4824,38 +4849,41 @@
                }
                utf16_string[ string_index++ ] = (uint16_t) '\\';
        }
-       if( ( internal_file->location_information->string_flags & 
LIBLNK_LOCATION_INFORMATION_STRING_FLAG_COMMON_PATH_IS_UNICODE ) != 0 )
-       {
-               result = libuna_utf16_string_with_index_copy_from_utf16_stream(
-                         utf16_string,
-                         utf16_string_size,
-                         &string_index,
-                         internal_file->location_information->common_path,
-                         internal_file->location_information->common_path_size,
-                         LIBUNA_ENDIAN_LITTLE | 
LIBUNA_UTF16_STREAM_ALLOW_UNPAIRED_SURROGATE,
-                         error );
-       }
-       else
+       if( internal_file->location_information->common_path != NULL )
        {
-               result = libuna_utf16_string_with_index_copy_from_byte_stream(
-                         utf16_string,
-                         utf16_string_size,
-                         &string_index,
-                         internal_file->location_information->common_path,
-                         internal_file->location_information->common_path_size,
-                         internal_file->io_handle->ascii_codepage,
-                         error );
-       }
-       if( result != 1 )
-       {
-               libcerror_error_set(
-                error,
-                LIBCERROR_ERROR_DOMAIN_RUNTIME,
-                LIBCERROR_RUNTIME_ERROR_SET_FAILED,
-                "%s: unable to set UTF-16 common path string.",
-                function );
+               if( ( internal_file->location_information->string_flags & 
LIBLNK_LOCATION_INFORMATION_STRING_FLAG_COMMON_PATH_IS_UNICODE ) != 0 )
+               {
+                       result = 
libuna_utf16_string_with_index_copy_from_utf16_stream(
+                                 utf16_string,
+                                 utf16_string_size,
+                                 &string_index,
+                                 
internal_file->location_information->common_path,
+                                 
internal_file->location_information->common_path_size,
+                                 LIBUNA_ENDIAN_LITTLE | 
LIBUNA_UTF16_STREAM_ALLOW_UNPAIRED_SURROGATE,
+                                 error );
+               }
+               else
+               {
+                       result = 
libuna_utf16_string_with_index_copy_from_byte_stream(
+                                 utf16_string,
+                                 utf16_string_size,
+                                 &string_index,
+                                 
internal_file->location_information->common_path,
+                                 
internal_file->location_information->common_path_size,
+                                 internal_file->io_handle->ascii_codepage,
+                                 error );
+               }
+               if( result != 1 )
+               {
+                       libcerror_error_set(
+                        error,
+                        LIBCERROR_ERROR_DOMAIN_RUNTIME,
+                        LIBCERROR_RUNTIME_ERROR_SET_FAILED,
+                        "%s: unable to set UTF-16 common path string.",
+                        function );
 
-               return( -1 );
+                       return( -1 );
+               }
        }
        return( 1 );
 }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/liblnk-20230716/liblnk/liblnk_location_information.c 
new/liblnk-20230928/liblnk/liblnk_location_information.c
--- old/liblnk-20230716/liblnk/liblnk_location_information.c    2023-07-16 
07:57:45.000000000 +0200
+++ new/liblnk-20230928/liblnk/liblnk_location_information.c    2023-09-28 
10:08:39.000000000 +0200
@@ -332,7 +332,8 @@
                 function,
                 common_path_offset );
        }
-#endif
+#endif /* defined( HAVE_DEBUG_OUTPUT ) */
+
        if( ( location_information_header_size != 28 )
         && ( location_information_header_size != 32 )
         && ( location_information_header_size != 36 ) )
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/liblnk-20230716/liblnk.spec 
new/liblnk-20230928/liblnk.spec
--- old/liblnk-20230716/liblnk.spec     2023-07-16 08:37:02.000000000 +0200
+++ new/liblnk-20230928/liblnk.spec     2023-09-30 10:35:34.000000000 +0200
@@ -1,5 +1,5 @@
 Name: liblnk
-Version: 20230716
+Version: 20230928
 Release: 1
 Summary: Library to access the Windows Shortcut File (LNK) format
 Group: System Environment/Libraries
@@ -94,6 +94,6 @@
 %{_mandir}/man1/*
 
 %changelog
-* Sun Jul 16 2023 Joachim Metz <[email protected]> 20230716-1
+* Sat Sep 30 2023 Joachim Metz <[email protected]> 20230928-1
 - Auto-generated
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/liblnk-20230716/lnktools/info_handle.c 
new/liblnk-20230928/lnktools/info_handle.c
--- old/liblnk-20230716/lnktools/info_handle.c  2023-07-16 07:58:36.000000000 
+0200
+++ new/liblnk-20230928/lnktools/info_handle.c  2023-09-28 14:40:26.000000000 
+0200
@@ -726,41 +726,43 @@
 
                return( -1 );
        }
-       if( path_string_copy_from_file_entry_path(
-            &escaped_value_string,
-            &escaped_value_string_size,
-            value_string,
-            value_string_length,
-            error ) != 1 )
+       if( value_string_length > 0 )
        {
-               libcerror_error_set(
-                error,
-                LIBCERROR_ERROR_DOMAIN_RUNTIME,
-                LIBCERROR_RUNTIME_ERROR_COPY_FAILED,
-                "%s: unable to copy path from file entry path.",
-                function );
+               if( path_string_copy_from_file_entry_path(
+                    &escaped_value_string,
+                    &escaped_value_string_size,
+                    value_string,
+                    value_string_length,
+                    error ) != 1 )
+               {
+                       libcerror_error_set(
+                        error,
+                        LIBCERROR_ERROR_DOMAIN_RUNTIME,
+                        LIBCERROR_RUNTIME_ERROR_COPY_FAILED,
+                        "%s: unable to copy path from file entry path.",
+                        function );
+
+                       goto on_error;
+               }
+               if( escaped_value_string == NULL )
+               {
+                       libcerror_error_set(
+                        error,
+                        LIBCERROR_ERROR_DOMAIN_RUNTIME,
+                        LIBCERROR_RUNTIME_ERROR_VALUE_MISSING,
+                        "%s: missing escaped value string.",
+                        function );
+
+                       goto on_error;
+               }
+               fprintf(
+                info_handle->notify_stream,
+                "%" PRIs_SYSTEM "",
+                escaped_value_string );
 
-               goto on_error;
+               memory_free(
+                escaped_value_string );
        }
-       if( escaped_value_string == NULL )
-       {
-               libcerror_error_set(
-                error,
-                LIBCERROR_ERROR_DOMAIN_RUNTIME,
-                LIBCERROR_RUNTIME_ERROR_VALUE_MISSING,
-                "%s: missing escaped value string.",
-                function );
-
-               goto on_error;
-       }
-       fprintf(
-        info_handle->notify_stream,
-        "%" PRIs_SYSTEM "",
-        escaped_value_string );
-
-       memory_free(
-        escaped_value_string );
-
        return( 1 );
 
 on_error:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/liblnk-20230716/m4/python.m4 
new/liblnk-20230928/m4/python.m4
--- old/liblnk-20230716/m4/python.m4    2021-11-14 14:23:54.000000000 +0100
+++ new/liblnk-20230928/m4/python.m4    2023-09-23 15:13:51.000000000 +0200
@@ -1,6 +1,6 @@
 dnl Functions for Python bindings
 dnl
-dnl Version: 20211114
+dnl Version: 20230923
 
 dnl Function to check if the python binary is available
 dnl "python${PYTHON_VERSION} python python# python#.#"
@@ -8,7 +8,7 @@
   [AS_IF(
     [test "x${PYTHON_VERSION}" != x],
     [ax_python_progs="python${PYTHON_VERSION}"],
-    [ax_python_progs="python python3 python3.11 python3.10 python3.9 python3.8 
python3.7 python3.6 python3.5 python3.4 python3.3 python3.2 python3.1 python3.0 
python2 python2.7 python2.6 python2.5"])
+    [ax_python_progs="python python3 python3.12 python3.11 python3.10 
python3.9 python3.8 python3.7 python3.6 python3.5 python3.4 python3.3 python3.2 
python3.1 python3.0 python2 python2.7 python2.6 python2.5"])
   AC_CHECK_PROGS(
     [PYTHON],
     [$ax_python_progs])
@@ -58,7 +58,7 @@
 dnl Function to check if the python3 binary is available
 dnl "python3 python3.#"
 AC_DEFUN([AX_PROG_PYTHON3],
-  [ax_python3_progs="python3 python3.11 python3.10 python3.9 python3.8 
python3.7 python3.6 python3.5 python3.4 python3.3 python3.2 python3.1 python3.0"
+  [ax_python3_progs="python3 python3.12 python3.11 python3.10 python3.9 
python3.8 python3.7 python3.6 python3.5 python3.4 python3.3 python3.2 python3.1 
python3.0"
   AC_CHECK_PROGS(
     [PYTHON3],
     [$ax_python3_progs])
@@ -95,7 +95,7 @@
     [test "x${PYTHON_CONFIG}" = x],
     [AC_CHECK_PROGS(
       [PYTHON_CONFIG],
-      [python-config python3-config python3.11-config python3.10-config 
python3.9-config python3.8-config python3.7-config python3.6-config 
python3.5-config python3.4-config python3.3-config python3.2-config 
python3.1-config python3.0-config python2-config python2.7-config 
python2.6-config python2.5-config])
+      [python-config python3-config python3.12-config python3.11-config 
python3.10-config python3.9-config python3.8-config python3.7-config 
python3.6-config python3.5-config python3.4-config python3.3-config 
python3.2-config python3.1-config python3.0-config python2-config 
python2.7-config python2.6-config python2.5-config])
     ])
   AS_IF(
     [test "x${PYTHON_CONFIG}" = x],
@@ -131,7 +131,7 @@
     [test "x${PYTHON3_CONFIG}" = x],
     [AC_CHECK_PROGS(
       [PYTHON3_CONFIG],
-      [python3-config python3.11-config python3.10-config python3.9-config 
python3.8-config python3.7-config python3.6-config python3.5-config 
python3.4-config python3.3-config python3.2-config python3.1-config 
python3.0-config])
+      [python3-config python3.12-config python3.11-config python3.10-config 
python3.9-config python3.8-config python3.7-config python3.6-config 
python3.5-config python3.4-config python3.3-config python3.2-config 
python3.1-config python3.0-config])
     ])
   AS_IF(
     [test "x${PYTHON3_CONFIG}" = x],
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/liblnk-20230716/pylnk/pylnk_file_object_io_handle.c 
new/liblnk-20230928/pylnk/pylnk_file_object_io_handle.c
--- old/liblnk-20230716/pylnk/pylnk_file_object_io_handle.c     2023-07-16 
07:57:46.000000000 +0200
+++ new/liblnk-20230928/pylnk/pylnk_file_object_io_handle.c     2023-09-30 
09:35:47.000000000 +0200
@@ -232,13 +232,13 @@
                Py_DecRef(
                 ( *file_object_io_handle )->file_object );
 
-               PyGILState_Release(
-                gil_state );
-
                PyMem_Free(
                 *file_object_io_handle );
 
                *file_object_io_handle = NULL;
+
+               PyGILState_Release(
+                gil_state );
        }
        return( 1 );
 }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/liblnk-20230716/pylnk/pylnk_string.c 
new/liblnk-20230928/pylnk/pylnk_string.c
--- old/liblnk-20230716/pylnk/pylnk_string.c    2023-07-16 07:57:46.000000000 
+0200
+++ new/liblnk-20230928/pylnk/pylnk_string.c    2023-09-28 10:08:39.000000000 
+0200
@@ -164,16 +164,6 @@
                        goto on_error;
                }
        }
-       if( PyUnicode_READY(
-            string_object ) == -1 )
-       {
-               PyErr_Format(
-                PyExc_RuntimeError,
-                "%s: unable to finalize string object.",
-                function );
-
-               goto on_error;
-       }
        PyMem_Free(
         utf32_string );
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/liblnk-20230716/pyproject.toml 
new/liblnk-20230928/pyproject.toml
--- old/liblnk-20230716/pyproject.toml  1970-01-01 01:00:00.000000000 +0100
+++ new/liblnk-20230928/pyproject.toml  2023-09-09 08:53:21.000000000 +0200
@@ -0,0 +1,4 @@
+[build-system]
+requires = ["setuptools", "wheel"]
+build-backend = "setuptools.build_meta"
+
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/liblnk-20230716/setup.cfg 
new/liblnk-20230928/setup.cfg
--- old/liblnk-20230716/setup.cfg       1970-01-01 01:00:00.000000000 +0100
+++ new/liblnk-20230928/setup.cfg       2023-09-30 10:35:34.000000000 +0200
@@ -0,0 +1,15 @@
+[metadata]
+name = liblnk-python
+version = 20230928
+description = Python bindings module for liblnk
+long_description = Python bindings module for liblnk
+author = Joachim Metz
+author_email = [email protected]
+license = GNU Lesser General Public License v3 or later (LGPLv3+)
+license_files = COPYING COPYING.LESSER
+classifiers =
+  Development Status :: 3 - Alpha
+  Programming Language :: Python
+
+[options]
+python_requires = >=3.7
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/liblnk-20230716/setup.cfg.in 
new/liblnk-20230928/setup.cfg.in
--- old/liblnk-20230716/setup.cfg.in    1970-01-01 01:00:00.000000000 +0100
+++ new/liblnk-20230928/setup.cfg.in    2023-09-24 08:24:35.000000000 +0200
@@ -0,0 +1,15 @@
+[metadata]
+name = liblnk-python
+version = @VERSION@
+description = Python bindings module for liblnk
+long_description = Python bindings module for liblnk
+author = Joachim Metz
+author_email = [email protected]
+license = GNU Lesser General Public License v3 or later (LGPLv3+)
+license_files = COPYING COPYING.LESSER
+classifiers =
+  Development Status :: 3 - Alpha
+  Programming Language :: Python
+
+[options]
+python_requires = >=3.7
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/liblnk-20230716/setup.py new/liblnk-20230928/setup.py
--- old/liblnk-20230716/setup.py        2023-07-16 07:58:12.000000000 +0200
+++ new/liblnk-20230928/setup.py        2023-09-28 10:09:13.000000000 +0200
@@ -1,7 +1,7 @@
 #!/usr/bin/env python
 #
 # Script to build and install Python-bindings.
-# Version: 20230411
+# Version: 20230909
 
 from __future__ import print_function
 
@@ -25,44 +25,11 @@
 from setuptools.command.build_ext import build_ext
 from setuptools.command.sdist import sdist
 
-try:
-  from distutils.command.bdist_msi import bdist_msi
-except ImportError:
-  bdist_msi = None
-
-try:
-  from setuptools.command.bdist_rpm import bdist_rpm
-except ImportError:
-  from distutils.command.bdist import bdist as bdist_rpm
-
-
-if not bdist_msi:
-  custom_bdist_msi = None
-else:
-  class custom_bdist_msi(bdist_msi):
-    """Custom handler for the bdist_msi command."""
-
-    def run(self):
-      """Builds an MSI."""
-      # Make a deepcopy of distribution so the following version changes
-      # only apply to bdist_msi.
-      self.distribution = copy.deepcopy(self.distribution)
-
-      # bdist_msi does not support the library version so we add ".1"
-      # as a work around.
-      self.distribution.metadata.version = "{0:s}.1".format(
-          self.distribution.metadata.version)
 
-      bdist_msi.run(self)
-
-
-class custom_bdist_rpm(bdist_rpm):
-  """Custom handler for the bdist_rpm command."""
-
-  def run(self):
-    """Builds a RPM."""
-    print("'setup.py bdist_rpm' command not supported use 'rpmbuild' instead.")
-    sys.exit(1)
+if (sys.version_info[0], sys.version_info[1]) < (3, 7):
+  print(("Unsupported Python version: {0:s}, version 3.7 or higher "
+         "required.").format(sys.version))
+  sys.exit(1)
 
 
 class custom_build_ext(build_ext):
@@ -218,49 +185,25 @@
     """The Python module name."""
     return "py{0:s}".format(self.library_name[3:])
 
-  @property
-  def package_name(self):
-    """The package name."""
-    return "{0:s}-python".format(self.library_name)
-
-  @property
-  def package_description(self):
-    """The package description."""
-    return "Python bindings module for {0:s}".format(self.library_name)
-
-  @property
-  def project_url(self):
-    """The project URL."""
-    return "https://github.com/libyal/{0:s}/".format(self.library_name)
-
   def _ReadConfigureAc(self):
     """Reads configure.ac to initialize the project information."""
-    file_object = open("configure.ac", "rb")
-    if not file_object:
-      raise IOError("Unable to open: configure.ac")
-
-    found_ac_init = False
-    found_library_name = False
-    for line in file_object.readlines():
-      line = line.strip()
-      if found_library_name:
-        library_version = line[1:-2]
-        if sys.version_info[0] >= 3:
-          library_version = library_version.decode("ascii")
-        self.library_version = library_version
-        break
-
-      elif found_ac_init:
-        library_name = line[1:-2]
-        if sys.version_info[0] >= 3:
-          library_name = library_name.decode("ascii")
-        self.library_name = library_name
-        found_library_name = True
+    with open("configure.ac", "r", encoding="utf-8") as file_object:
+      found_ac_init = False
+      found_library_name = False
+      for line in file_object.readlines():
+        line = line.strip()
+        if found_library_name:
+          library_version = line[1:-2]
+          self.library_version = library_version
+          break
 
-      elif line.startswith(b"AC_INIT"):
-        found_ac_init = True
+        elif found_ac_init:
+          library_name = line[1:-2]
+          self.library_name = library_name
+          found_library_name = True
 
-    file_object.close()
+        elif line.startswith("AC_INIT"):
+          found_ac_init = True
 
     if not self.library_name or not self.library_version:
       raise RuntimeError(
@@ -271,30 +214,23 @@
     if not self.library_name:
       raise RuntimeError("Missing library name")
 
-    file_object = open("Makefile.am", "rb")
-    if not file_object:
-      raise IOError("Unable to open: Makefile.am")
-
-    found_subdirs = False
-    for line in file_object.readlines():
-      line = line.strip()
-      if found_subdirs:
-        library_name, _, _ = line.partition(b" ")
-        if sys.version_info[0] >= 3:
-          library_name = library_name.decode("ascii")
-
-        self.include_directories.append(library_name)
+    with open("Makefile.am", "r", encoding="utf-8") as file_object:
+      found_subdirs = False
+      for line in file_object.readlines():
+        line = line.strip()
+        if found_subdirs:
+          library_name, _, _ = line.partition(" ")
+
+          self.include_directories.append(library_name)
 
-        if library_name.startswith("lib"):
-          self.library_names.append(library_name)
+          if library_name.startswith("lib"):
+            self.library_names.append(library_name)
 
-        if library_name == self.library_name:
-          break
-
-      elif line.startswith(b"SUBDIRS"):
-        found_subdirs = True
+          if library_name == self.library_name:
+            break
 
-    file_object.close()
+        elif line.startswith("SUBDIRS"):
+          found_subdirs = True
 
     if not self.include_directories or not self.library_names:
       raise RuntimeError(
@@ -306,12 +242,8 @@
 
 CMDCLASS = {
   "build_ext": custom_build_ext,
-  "bdist_rpm": custom_bdist_rpm,
   "sdist": custom_sdist}
 
-if custom_bdist_msi:
-  CMDCLASS["bdist_msi"] = custom_bdist_msi
-
 SOURCES = []
 
 # TODO: replace by detection of MSC
@@ -344,18 +276,7 @@
 # TODO: find a way to detect missing python.h
 # e.g. on Ubuntu python-dev is not installed by python-pip
 
-# TODO: what about description and platform in egg file
-
-setup(
-    name=project_information.package_name,
-    url=project_information.project_url,
-    version=project_information.library_version,
-    description=project_information.package_description,
-    long_description=project_information.package_description,
-    long_description_content_type="text/plain",
-    author="Joachim Metz",
-    author_email="[email protected]",
-    license="GNU Lesser General Public License v3 or later (LGPLv3+)",
+setup_args = dict(
     cmdclass=CMDCLASS,
     ext_modules=[
         Extension(
@@ -364,8 +285,9 @@
             include_dirs=project_information.include_directories,
             libraries=[],
             library_dirs=[],
-            sources=SOURCES,
-        ),
-    ],
+            sources=SOURCES
+        )
+    ]
 )
+setup(**setup_args)
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/liblnk-20230716/tests/pylnk_test_file.py 
new/liblnk-20230928/tests/pylnk_test_file.py
--- old/liblnk-20230716/tests/pylnk_test_file.py        2023-07-16 
07:58:36.000000000 +0200
+++ new/liblnk-20230928/tests/pylnk_test_file.py        2023-09-28 
14:40:15.000000000 +0200
@@ -541,6 +541,23 @@
 
     lnk_file.close()
 
+  def test_get_data_block(self):
+    """Tests the get_data_block function."""
+    test_source = unittest.source
+    if not test_source:
+      raise unittest.SkipTest("missing source")
+
+    lnk_file = pylnk.file()
+
+    lnk_file.open(test_source)
+
+    number_of_data_blocks = lnk_file.get_number_of_data_blocks()
+    if number_of_data_blocks:
+      data_block = lnk_file.get_data_block(0)
+      self.assertIsNotNone(data_block)
+
+    lnk_file.close()
+
 
 if __name__ == "__main__":
   argument_parser = argparse.ArgumentParser()
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/liblnk-20230716/tests/test_python_module.sh 
new/liblnk-20230928/tests/test_python_module.sh
--- old/liblnk-20230716/tests/test_python_module.sh     2023-07-16 
07:58:36.000000000 +0200
+++ new/liblnk-20230928/tests/test_python_module.sh     2023-09-28 
14:40:15.000000000 +0200
@@ -8,7 +8,7 @@
 EXIT_IGNORE=77;
 
 TEST_FUNCTIONS="";
-TEST_FUNCTIONS_WITH_INPUT="file support";
+TEST_FUNCTIONS_WITH_INPUT="data_block file support";
 OPTION_SETS="";
 
 TEST_TOOL_DIRECTORY=".";

Reply via email to