Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package gpgme for openSUSE:Factory checked in at 2023-04-22 21:56:48 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/gpgme (Old) and /work/SRC/openSUSE:Factory/.gpgme.new.1533 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "gpgme" Sat Apr 22 21:56:48 2023 rev:96 rq:1081075 version:1.20.0 Changes: -------- --- /work/SRC/openSUSE:Factory/gpgme/gpgme.changes 2023-04-16 19:13:19.001425757 +0200 +++ /work/SRC/openSUSE:Factory/.gpgme.new.1533/gpgme.changes 2023-04-22 21:57:29.236149922 +0200 @@ -1,0 +2,22 @@ +Fri Apr 21 06:19:17 UTC 2023 - Pedro Monreal <pmonr...@suse.com> + +- Update to 1.20.0: + * On Windows, the gettext functions provided by gpgrt are switched + into utf8 mode, so that all localized texts returned by GpgME or + gpgrt, e.g. the texts for error codes are now UTF-8 encoded. [T5960] + * Key::canSign now returns false for OpenPGP keys without signing + (sub)key. [T6456] + * The new macOS Homebrew location is now by default supported. [T6440] + * Fix regression in 1.19.0. + * Fix invocation of gpgtar on Windows. + * Interface changes relative to the 1.19.0 release: + - gpgme_subkey_t EXTENDED: New field 'can_renc'. + - gpgme_subkey_t EXTENDED: New field 'can_timestamp'. + - gpgme_subkey_t EXTENDED: New field 'is_group_owned'. + - cpp: Subkey::canRenc NEW. + - cpp: Subkey::canTimestamp NEW. + - cpp: Subkey::isGroupOwned NEW. + - cpp: Key::canReallySign DEPRECATED. + * Release-info: https://dev.gnupg.org/T6463 + +------------------------------------------------------------------- Old: ---- gpgme-1.19.0.tar.bz2 gpgme-1.19.0.tar.bz2.sig New: ---- gpgme-1.20.0.tar.bz2 gpgme-1.20.0.tar.bz2.sig ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ gpgme.spec ++++++ --- /var/tmp/diff_new_pack.rQZO5c/_old 2023-04-22 21:57:29.784153198 +0200 +++ /var/tmp/diff_new_pack.rQZO5c/_new 2023-04-22 21:57:29.792153246 +0200 @@ -33,7 +33,7 @@ %bcond_without qt6 %endif Name: gpgme%{psuffix} -Version: 1.19.0 +Version: 1.20.0 Release: 0 Summary: Programmatic library interface to GnuPG License: GPL-3.0-or-later AND LGPL-2.1-or-later ++++++ gpgme-1.19.0.tar.bz2 -> gpgme-1.20.0.tar.bz2 ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gpgme-1.19.0/ChangeLog new/gpgme-1.20.0/ChangeLog --- old/gpgme-1.19.0/ChangeLog 2023-03-17 10:42:31.000000000 +0100 +++ new/gpgme-1.20.0/ChangeLog 2023-04-20 13:53:28.000000000 +0200 @@ -1,3 +1,88 @@ +2023-04-20 Werner Koch <w...@gnupg.org> + + Release 1.20.0. + + commit 451ed47434c5ffd2916adae25e5a128606b5ef98 + + + core: Support the new macOS Homebrew location. + + commit 7351ef32ce7c04d20ee32fc9b645a1931b3b0aba + * src/posix-util.c (find_executable): Extend the path. + +2023-04-19 Ingo Klöcker <d...@ingo-kloecker.de> + + build,qt: Simplify check for moc. + + commit a14155d2c1b2ddc167dbf278faf1d6b469575492 + m4/qt6.m4: Remove alternative checks for moc that were taken over from + Qt 5 and that are obsolete for Qt 6. + + Update NEWS. + + commit e80bf34bf86f6f183145c31d598dda41c0496a4d + * NEWS: Add news for recent changes + +2023-04-18 Ingo Klöcker <d...@ingo-kloecker.de> + + cpp: Fix Key::canSign() + + commit 5bd84cfd3f092703bb4b9b993be7d89ca13b36b0 + * lang/cpp/src/key.h (canReallySign): Deprecate. + * lang/cpp/src/key.cpp (canSign): Remove workaround. Use implementation + of canReallySign. + (canReallySign): Use canSign(). + (operator<<): Use canSign(). + +2023-04-17 Werner Koch <w...@gnupg.org> + + core: Avoid printf format warnings due to gpgme_ssize_t. + + commit 7d1159c1e99bb1bae0ab698c85105dcdcb95b7ea + * src/debug.h (_trace_sysres_ssize_t): Cast arg. + + core,w32: Fix invocation of gpgtar. + + commit 0c29119e061cbdcb7342380938a25af91290f1a0 + * src/dirinfo.c (EXEEXT_S): New. + (get_gpgconf_item): Append ".exe" to gpg-wks-client and gpgtar. + + * src/gpgme-w32spawn.c (mystderr): Add code to ease debugging. + +2023-04-06 NIIBE Yutaka <gni...@fsij.org> + + build: Update gpg-error.m4. + + commit 806a5d18b988449fbaa3c2e6380acf3ae4580f4a + * m4/gpg-error.m4: Update from libgpg-error master. + +2023-04-04 Ingo Klöcker <d...@ingo-kloecker.de> + + w32: Always use UTF-8 for localized texts. + + commit d256ba7cc57d9bfcfa05fb05cf66dc992efbb695 + * configure.ac: Define GPG_ERR_ENABLE_GETTEXT_MACROS. + * src/version.c (do_subsystem_inits) [W32]: Switch gettext to UTF-8. + +2023-03-27 Werner Koch <w...@gnupg.org> + + core: Minor code cleanup. + + commit 34cc7daba12a2a6baa3cfa337762656c210686fa + * src/engine-gpg.c (build_argv): Remove superfluous tes. + +2023-03-27 Ingo Klöcker <d...@ingo-kloecker.de> + + core: Initialize error variable. + + commit b608c084b9220d8ed288eb916e88a236abac0707 + * src/engine-gpg.c (build_argv): Initialize err. + +2023-03-21 Werner Koch <w...@gnupg.org> + + core,cpp: Add new key flags to gpgme_subkey_t. + + commit 6d21256c9220df05bf92a695a787dde13fe44ca7 + * src/gpgme.h.in (struct _gpgme_subkey): Add bit flags can_renc, + can_timestamp, adn is_group_owned. Reduce size of _unused. + * src/keylist.c (set_subkey_capability): Set them. + * tests/run-keylist.c (main): Print them. + + * lang/cpp/src/key.h (Subkey::canRenc): New. + (Subkey::canTimestamp): New. + (Subkey::isGroupOwned): New. + * lang/cpp/src/key.cpp: Implement new methods. + (Subkey::isQualified): Print them. + (std::ostream &operator<<): Print them. + 2023-03-17 Werner Koch <w...@gnupg.org> Release 1.19.0. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gpgme-1.19.0/NEWS new/gpgme-1.20.0/NEWS --- old/gpgme-1.19.0/NEWS 2023-03-17 10:33:55.000000000 +0100 +++ new/gpgme-1.20.0/NEWS 2023-04-20 13:47:16.000000000 +0200 @@ -1,3 +1,36 @@ +Noteworthy changes in version 1.20.0 (2023-04-20) +------------------------------------------------- + + * On Windows, the gettext functions provided by gpgrt are switched + into utf8 mode, so that all localized texts returned by GpgME or + gpgrt, e.g. the texts for error codes are now UTF-8 encoded. + [T5960] + + * Key::canSign now returns false for OpenPGP keys without signing + (sub)key. [T6456] + + * The new macOS Homebrew location is now by default supported. + [T6440] + + * Fix regression in 1.19.0. [rMb608c084b9] + + * Fix invocation of gpgtar on Windows. [rM0c29119e06] + + * Interface changes relative to the 1.19.0 release: + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + gpgme_subkey_t EXTENDED: New field 'can_renc'. + gpgme_subkey_t EXTENDED: New field 'can_timestamp'. + gpgme_subkey_t EXTENDED: New field 'is_group_owned'. + cpp: Subkey::canRenc NEW. + cpp: Subkey::canTimestamp NEW. + cpp: Subkey::isGroupOwned NEW. + cpp: Key::canReallySign DEPRECATED. + + [c=C40/A29/R0 cpp=C23/A17/R0 qt=C17/A2/R1] + + Release-info: https://dev.gnupg.org/T6463 + + Noteworthy changes in version 1.19.0 (2023-03-17) ------------------------------------------------- diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gpgme-1.19.0/VERSION new/gpgme-1.20.0/VERSION --- old/gpgme-1.19.0/VERSION 2023-03-17 10:42:05.000000000 +0100 +++ new/gpgme-1.20.0/VERSION 2023-04-20 13:53:03.000000000 +0200 @@ -1 +1 @@ -1.19.0 +1.20.0 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gpgme-1.19.0/conf/config.h.in new/gpgme-1.20.0/conf/config.h.in --- old/gpgme-1.19.0/conf/config.h.in 2023-03-17 10:42:24.000000000 +0100 +++ new/gpgme-1.20.0/conf/config.h.in 2023-04-20 13:53:22.000000000 +0200 @@ -295,6 +295,9 @@ # define GPGME_GCC_A_PURE #endif +/* Under Windows we use the gettext code from gpgrt. */ +#define GPG_ERR_ENABLE_GETTEXT_MACROS + /* Under WindowsCE we need gpg-error's strerror macro. */ #define GPG_ERR_ENABLE_ERRNO_MACROS 1 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gpgme-1.19.0/configure new/gpgme-1.20.0/configure --- old/gpgme-1.19.0/configure 2023-03-17 10:42:06.000000000 +0100 +++ new/gpgme-1.20.0/configure 2023-04-20 13:53:04.000000000 +0200 @@ -1,6 +1,6 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.69 for gpgme 1.19.0. +# Generated by GNU Autoconf 2.69 for gpgme 1.20.0. # # Report bugs to <https://bugs.gnupg.org>. # @@ -590,8 +590,8 @@ # Identity of this package. PACKAGE_NAME='gpgme' PACKAGE_TARNAME='gpgme' -PACKAGE_VERSION='1.19.0' -PACKAGE_STRING='gpgme 1.19.0' +PACKAGE_VERSION='1.20.0' +PACKAGE_STRING='gpgme 1.20.0' PACKAGE_BUGREPORT='https://bugs.gnupg.org' PACKAGE_URL='' @@ -1488,7 +1488,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 gpgme 1.19.0 to adapt to many kinds of systems. +\`configure' configures gpgme 1.20.0 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1559,7 +1559,7 @@ if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of gpgme 1.19.0:";; + short | recursive ) echo "Configuration of gpgme 1.20.0:";; esac cat <<\_ACEOF @@ -1724,7 +1724,7 @@ test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -gpgme configure 1.19.0 +gpgme configure 1.20.0 generated by GNU Autoconf 2.69 Copyright (C) 2012 Free Software Foundation, Inc. @@ -2554,7 +2554,7 @@ This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. -It was created by gpgme $as_me 1.19.0, which was +It was created by gpgme $as_me 1.20.0, which was generated by GNU Autoconf 2.69. Invocation command line was $ $0 $@ @@ -2919,20 +2919,20 @@ # (Interfaces added: AGE++) # (Interfaces removed: AGE=0) # -LIBGPGME_LT_CURRENT=39 -LIBGPGME_LT_AGE=28 +LIBGPGME_LT_CURRENT=40 +LIBGPGME_LT_AGE=29 LIBGPGME_LT_REVISION=0 # If there is an ABI break in gpgmepp or qgpgme also bump the # version in IMPORTED_LOCATION in the GpgmeppConfig-w32.cmake.in.in -LIBGPGMEPP_LT_CURRENT=22 -LIBGPGMEPP_LT_AGE=16 +LIBGPGMEPP_LT_CURRENT=23 +LIBGPGMEPP_LT_AGE=17 LIBGPGMEPP_LT_REVISION=0 LIBQGPGME_LT_CURRENT=17 LIBQGPGME_LT_AGE=2 -LIBQGPGME_LT_REVISION=0 +LIBQGPGME_LT_REVISION=1 ################################################ @@ -2957,7 +2957,7 @@ VERSION_MAJOR=1 -VERSION_MINOR=19 +VERSION_MINOR=20 VERSION_MICRO=0 ac_aux_dir= @@ -3474,7 +3474,7 @@ # Define the identity of the package. PACKAGE='gpgme' - VERSION='1.19.0' + VERSION='1.20.0' cat >>confdefs.h <<_ACEOF @@ -6534,7 +6534,7 @@ -VERSION_NUMBER=0x011300 +VERSION_NUMBER=0x011400 # We need to compile and run a program on the build machine. A @@ -18828,216 +18828,11 @@ MOC="$ac_cv_path_MOC" fi - { $as_echo "$as_me:${as_lineno-$LINENO}: checking moc version" >&5 -$as_echo_n "checking moc version... " >&6; } - mocversion=`$MOC -v 2>&1` - mocversiongrep=`echo $mocversion | grep -E "Qt 6|moc 6"` - if test x"$mocversiongrep" != x"$mocversion"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - # moc was not the qt6 one, try with moc-qt6 - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}moc-qt6", so it can be a program name with args. -set dummy ${ac_tool_prefix}moc-qt6; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_MOC2+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$MOC2"; then - ac_cv_prog_MOC2="$MOC2" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_MOC2="${ac_tool_prefix}moc-qt6" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -MOC2=$ac_cv_prog_MOC2 -if test -n "$MOC2"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MOC2" >&5 -$as_echo "$MOC2" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_MOC2"; then - ac_ct_MOC2=$MOC2 - # Extract the first word of "moc-qt6", so it can be a program name with args. -set dummy moc-qt6; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_MOC2+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_MOC2"; then - ac_cv_prog_ac_ct_MOC2="$ac_ct_MOC2" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_MOC2="moc-qt6" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_MOC2=$ac_cv_prog_ac_ct_MOC2 -if test -n "$ac_ct_MOC2"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_MOC2" >&5 -$as_echo "$ac_ct_MOC2" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_ct_MOC2" = x; then - MOC2="" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - MOC2=$ac_ct_MOC2 - fi -else - MOC2="$ac_cv_prog_MOC2" -fi - - mocversion=`$MOC2 -v 2>&1` - mocversiongrep=`echo $mocversion | grep -E "Qt 6|moc-qt6 6|moc 6"` - if test x"$mocversiongrep" != x"$mocversion"; then - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}qtchooser", so it can be a program name with args. -set dummy ${ac_tool_prefix}qtchooser; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_QTCHOOSER+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$QTCHOOSER"; then - ac_cv_prog_QTCHOOSER="$QTCHOOSER" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_QTCHOOSER="${ac_tool_prefix}qtchooser" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -QTCHOOSER=$ac_cv_prog_QTCHOOSER -if test -n "$QTCHOOSER"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $QTCHOOSER" >&5 -$as_echo "$QTCHOOSER" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_QTCHOOSER"; then - ac_ct_QTCHOOSER=$QTCHOOSER - # Extract the first word of "qtchooser", so it can be a program name with args. -set dummy qtchooser; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_QTCHOOSER+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_QTCHOOSER"; then - ac_cv_prog_ac_ct_QTCHOOSER="$ac_ct_QTCHOOSER" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_QTCHOOSER="qtchooser" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_QTCHOOSER=$ac_cv_prog_ac_ct_QTCHOOSER -if test -n "$ac_ct_QTCHOOSER"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_QTCHOOSER" >&5 -$as_echo "$ac_ct_QTCHOOSER" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_ct_QTCHOOSER" = x; then - QTCHOOSER="" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - QTCHOOSER=$ac_ct_QTCHOOSER - fi -else - QTCHOOSER="$ac_cv_prog_QTCHOOSER" -fi - - qt6tooldir=`QT_SELECT=qt6 qtchooser -print-env | grep QTTOOLDIR | cut -d '=' -f 2 | cut -d \" -f 2` - mocversion=`$qt6tooldir/moc -v 2>&1` - mocversiongrep=`echo $mocversion | grep -E "Qt 6|moc 6"` - if test x"$mocversiongrep" != x"$mocversion"; then - # no valid moc found - have_qt6_libs="no"; - else - MOC=$qt6tooldir/moc - fi - else - MOC=$MOC2 - fi + if test -z "$MOC"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: moc not found - Qt 6 binding will not be built." >&5 +$as_echo "$as_me: WARNING: moc not found - Qt 6 binding will not be built." >&2;} + have_qt6_libs="no"; fi - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $mocversion" >&5 -$as_echo "$mocversion" >&6; } fi if test "$have_qt6_libs" = "yes"; then OLDCPPFLAGS=$CPPFLAGS @@ -19897,216 +19692,11 @@ MOC="$ac_cv_path_MOC" fi - { $as_echo "$as_me:${as_lineno-$LINENO}: checking moc version" >&5 -$as_echo_n "checking moc version... " >&6; } - mocversion=`$MOC -v 2>&1` - mocversiongrep=`echo $mocversion | grep -E "Qt 6|moc 6"` - if test x"$mocversiongrep" != x"$mocversion"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - # moc was not the qt6 one, try with moc-qt6 - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}moc-qt6", so it can be a program name with args. -set dummy ${ac_tool_prefix}moc-qt6; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_MOC2+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$MOC2"; then - ac_cv_prog_MOC2="$MOC2" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_MOC2="${ac_tool_prefix}moc-qt6" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -MOC2=$ac_cv_prog_MOC2 -if test -n "$MOC2"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MOC2" >&5 -$as_echo "$MOC2" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_MOC2"; then - ac_ct_MOC2=$MOC2 - # Extract the first word of "moc-qt6", so it can be a program name with args. -set dummy moc-qt6; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_MOC2+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_MOC2"; then - ac_cv_prog_ac_ct_MOC2="$ac_ct_MOC2" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_MOC2="moc-qt6" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_MOC2=$ac_cv_prog_ac_ct_MOC2 -if test -n "$ac_ct_MOC2"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_MOC2" >&5 -$as_echo "$ac_ct_MOC2" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_ct_MOC2" = x; then - MOC2="" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - MOC2=$ac_ct_MOC2 - fi -else - MOC2="$ac_cv_prog_MOC2" -fi - - mocversion=`$MOC2 -v 2>&1` - mocversiongrep=`echo $mocversion | grep -E "Qt 6|moc-qt6 6|moc 6"` - if test x"$mocversiongrep" != x"$mocversion"; then - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}qtchooser", so it can be a program name with args. -set dummy ${ac_tool_prefix}qtchooser; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_QTCHOOSER+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$QTCHOOSER"; then - ac_cv_prog_QTCHOOSER="$QTCHOOSER" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_QTCHOOSER="${ac_tool_prefix}qtchooser" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -QTCHOOSER=$ac_cv_prog_QTCHOOSER -if test -n "$QTCHOOSER"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $QTCHOOSER" >&5 -$as_echo "$QTCHOOSER" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_QTCHOOSER"; then - ac_ct_QTCHOOSER=$QTCHOOSER - # Extract the first word of "qtchooser", so it can be a program name with args. -set dummy qtchooser; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_QTCHOOSER+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_QTCHOOSER"; then - ac_cv_prog_ac_ct_QTCHOOSER="$ac_ct_QTCHOOSER" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_QTCHOOSER="qtchooser" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_QTCHOOSER=$ac_cv_prog_ac_ct_QTCHOOSER -if test -n "$ac_ct_QTCHOOSER"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_QTCHOOSER" >&5 -$as_echo "$ac_ct_QTCHOOSER" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_ct_QTCHOOSER" = x; then - QTCHOOSER="" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - QTCHOOSER=$ac_ct_QTCHOOSER - fi -else - QTCHOOSER="$ac_cv_prog_QTCHOOSER" -fi - - qt6tooldir=`QT_SELECT=qt6 qtchooser -print-env | grep QTTOOLDIR | cut -d '=' -f 2 | cut -d \" -f 2` - mocversion=`$qt6tooldir/moc -v 2>&1` - mocversiongrep=`echo $mocversion | grep -E "Qt 6|moc 6"` - if test x"$mocversiongrep" != x"$mocversion"; then - # no valid moc found - have_qt6_libs="no"; - else - MOC=$qt6tooldir/moc - fi - else - MOC=$MOC2 - fi + if test -z "$MOC"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: moc not found - Qt 6 binding will not be built." >&5 +$as_echo "$as_me: WARNING: moc not found - Qt 6 binding will not be built." >&2;} + have_qt6_libs="no"; fi - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $mocversion" >&5 -$as_echo "$mocversion" >&6; } fi if test "$have_qt6_libs" = "yes"; then OLDCPPFLAGS=$CPPFLAGS @@ -30132,7 +29722,7 @@ # # Provide information about the build. # -BUILD_REVISION="96a30fdf" +BUILD_REVISION="451ed474" cat >>confdefs.h <<_ACEOF @@ -30141,7 +29731,7 @@ BUILD_VERSION=`echo "$PACKAGE_VERSION" | sed 's/\([0-9.]*\).*/\1./'` -BUILD_VERSION="${BUILD_VERSION}38563" +BUILD_VERSION="${BUILD_VERSION}17694" BUILD_FILEVERSION=`echo "${BUILD_VERSION}" | tr . ,` @@ -31347,12 +30937,9 @@ fi if test -n "$gpgrt_libdir"; then break; fi done - if test -z "$libdir_candidates"; then - # No valid pkgconfig dir in any of the system directories, fallback - gpgrt_libdir=${possible_libdir1} - fi - else - # When we cannot determine system libdir-format, use this: + fi + if test -z "$gpgrt_libdir"; then + # No valid pkgconfig dir in any of the system directories, fallback gpgrt_libdir=${possible_libdir1} fi else @@ -31367,6 +30954,7 @@ $as_echo "$as_me: Use gpgrt-config with $gpgrt_libdir as gpg-error-config" >&6;} gpg_error_config_version=`$GPG_ERROR_CONFIG --modversion` else + gpg_error_config_version=`$GPG_ERROR_CONFIG --version` unset GPGRT_CONFIG fi elif test "$GPG_ERROR_CONFIG" != "no"; then @@ -32609,7 +32197,7 @@ # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" -This file was extended by gpgme $as_me 1.19.0, which was +This file was extended by gpgme $as_me 1.20.0, which was generated by GNU Autoconf 2.69. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -32675,7 +32263,7 @@ cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" ac_cs_version="\\ -gpgme config.status 1.19.0 +gpgme config.status 1.20.0 configured by $0, generated by GNU Autoconf 2.69, with options \\"\$ac_cs_config\\" @@ -35010,7 +34598,7 @@ echo " GPGME v${VERSION} has been configured as follows: - Revision: 96a30fdf (38563) + Revision: 451ed474 (17694) Platform: $host UI Server: $uiserver diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gpgme-1.19.0/configure.ac new/gpgme-1.20.0/configure.ac --- old/gpgme-1.19.0/configure.ac 2023-03-17 10:34:18.000000000 +0100 +++ new/gpgme-1.20.0/configure.ac 2023-04-20 13:46:47.000000000 +0200 @@ -31,7 +31,7 @@ # for the LT versions. m4_define([mym4_package],[gpgme]) m4_define([mym4_major], [1]) -m4_define([mym4_minor], [19]) +m4_define([mym4_minor], [20]) m4_define([mym4_micro], [0]) # Below is m4 magic to extract and compute the git revision number, @@ -53,20 +53,20 @@ # (Interfaces added: AGE++) # (Interfaces removed: AGE=0) # -LIBGPGME_LT_CURRENT=39 -LIBGPGME_LT_AGE=28 +LIBGPGME_LT_CURRENT=40 +LIBGPGME_LT_AGE=29 LIBGPGME_LT_REVISION=0 # If there is an ABI break in gpgmepp or qgpgme also bump the # version in IMPORTED_LOCATION in the GpgmeppConfig-w32.cmake.in.in -LIBGPGMEPP_LT_CURRENT=22 -LIBGPGMEPP_LT_AGE=16 +LIBGPGMEPP_LT_CURRENT=23 +LIBGPGMEPP_LT_AGE=17 LIBGPGMEPP_LT_REVISION=0 LIBQGPGME_LT_CURRENT=17 LIBQGPGME_LT_AGE=2 -LIBQGPGME_LT_REVISION=0 +LIBQGPGME_LT_REVISION=1 ################################################ AC_SUBST(LIBGPGME_LT_CURRENT) @@ -922,6 +922,9 @@ # define GPGME_GCC_A_PURE #endif +/* Under Windows we use the gettext code from gpgrt. */ +#define GPG_ERR_ENABLE_GETTEXT_MACROS + /* Under WindowsCE we need gpg-error's strerror macro. */ #define GPG_ERR_ENABLE_ERRNO_MACROS 1 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gpgme-1.19.0/gpgme.spec new/gpgme-1.20.0/gpgme.spec --- old/gpgme-1.19.0/gpgme.spec 2023-03-17 10:42:31.000000000 +0100 +++ new/gpgme-1.20.0/gpgme.spec 2023-04-20 13:53:28.000000000 +0200 @@ -1,7 +1,7 @@ # This is a template. The dist target uses it to create the real file. Summary: GPGME - GnuPG Made Easy Name: gpgme -Version: 1.19.0 +Version: 1.20.0 Release: 1 URL: https://gnupg.org/gpgme.html Source: https://www.gnupg.org/ftp/gcrypt/gpgme/%{name}-%{version}.tar.gz diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gpgme-1.19.0/lang/cl/gpgme.asd new/gpgme-1.20.0/lang/cl/gpgme.asd --- old/gpgme-1.19.0/lang/cl/gpgme.asd 2023-03-17 10:42:21.000000000 +0100 +++ new/gpgme-1.20.0/lang/cl/gpgme.asd 2023-04-20 13:53:19.000000000 +0200 @@ -27,7 +27,7 @@ (defsystem gpgme :description "GnuPG Made Easy." :author "g10 Code GmbH" - :version "1.19.0" + :version "1.20.0" :licence "GPL" :defsystem-depends-on ("cffi-grovel") :depends-on ("cffi" "gpg-error" "trivial-garbage") diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gpgme-1.19.0/lang/cpp/src/key.cpp new/gpgme-1.20.0/lang/cpp/src/key.cpp --- old/gpgme-1.19.0/lang/cpp/src/key.cpp 2023-02-01 17:50:48.000000000 +0100 +++ new/gpgme-1.20.0/lang/cpp/src/key.cpp 2023-04-19 09:03:06.000000000 +0200 @@ -208,17 +208,12 @@ bool Key::canSign() const { -#ifndef GPGME_CAN_SIGN_ON_SECRET_OPENPGP_KEYLISTING_NOT_BROKEN - if (key && key->protocol == GPGME_PROTOCOL_OpenPGP) { - return true; - } -#endif - return canReallySign(); + return key && key->can_sign; } bool Key::canReallySign() const { - return key && key->can_sign; + return canSign(); } bool Key::canCertify() const @@ -515,6 +510,21 @@ return subkey && subkey->can_authenticate; } +bool Subkey::canRenc() const +{ + return subkey && subkey->can_renc; +} + +bool Subkey::canTimestamp() const +{ + return subkey && subkey->can_timestamp; +} + +bool Subkey::isGroupOwned() const +{ + return subkey && subkey->is_group_owned; +} + bool Subkey::isQualified() const { return subkey && subkey->is_qualified; @@ -1261,7 +1271,10 @@ << "\n canEncrypt: " << subkey.canEncrypt() << "\n canCertify: " << subkey.canCertify() << "\n canAuth: " << subkey.canAuthenticate() + << "\n canRenc: " << subkey.canRenc() + << "\n canTimestanp: " << subkey.canTimestamp() << "\n isSecret: " << subkey.isSecret() + << "\n isGroupOwned: " << subkey.isGroupOwned() << "\n isQualified: " << subkey.isQualified() << "\n isDeVs: " << subkey.isDeVs() << "\n isCardKey: " << subkey.isCardKey() @@ -1279,7 +1292,7 @@ << "\n issuer: " << protect(key.issuerName()) << "\n fingerprint:" << protect(key.primaryFingerprint()) << "\n listmode: " << key.keyListMode() - << "\n canSign: " << key.canReallySign() + << "\n canSign: " << key.canSign() << "\n canEncrypt: " << key.canEncrypt() << "\n canCertify: " << key.canCertify() << "\n canAuth: " << key.canAuthenticate() diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gpgme-1.19.0/lang/cpp/src/key.h new/gpgme-1.20.0/lang/cpp/src/key.h --- old/gpgme-1.19.0/lang/cpp/src/key.h 2023-02-01 17:50:48.000000000 +0100 +++ new/gpgme-1.20.0/lang/cpp/src/key.h 2023-04-19 09:03:06.000000000 +0200 @@ -110,16 +110,8 @@ bool isBad() const; bool canEncrypt() const; - /*! - This function contains a workaround for old gpgme's: all secret - OpenPGP keys canSign() == true, which canReallySign() doesn't - have. I don't have time to find what breaks when I remove this - workaround, but since Kleopatra merges secret into public keys, - the workaround is not necessary there (and actively harms), I've - added a new function instead. - */ bool canSign() const; - bool canReallySign() const; + GPGMEPP_DEPRECATED bool canReallySign() const; bool canCertify() const; bool canAuthenticate() const; bool isQualified() const; @@ -270,6 +262,9 @@ bool canSign() const; bool canCertify() const; bool canAuthenticate() const; + bool canRenc() const; + bool canTimestamp() const; + bool isGroupOwned() const; bool isQualified() const; bool isDeVs() const; bool isCardKey() const; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gpgme-1.19.0/m4/gpg-error.m4 new/gpgme-1.20.0/m4/gpg-error.m4 --- old/gpgme-1.19.0/m4/gpg-error.m4 2023-02-01 17:50:48.000000000 +0100 +++ new/gpgme-1.20.0/m4/gpg-error.m4 2023-04-17 14:03:06.000000000 +0200 @@ -10,7 +10,7 @@ # WITHOUT ANY WARRANTY, to the extent permitted by law; without even the # implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. # -# Last-changed: 2022-11-15 +# Last-changed: 2023-04-01 dnl dnl Find gpg-error-config, for backward compatibility @@ -115,12 +115,9 @@ fi if test -n "$gpgrt_libdir"; then break; fi done - if test -z "$libdir_candidates"; then - # No valid pkgconfig dir in any of the system directories, fallback - gpgrt_libdir=${possible_libdir1} - fi - else - # When we cannot determine system libdir-format, use this: + fi + if test -z "$gpgrt_libdir"; then + # No valid pkgconfig dir in any of the system directories, fallback gpgrt_libdir=${possible_libdir1} fi else @@ -134,6 +131,7 @@ AC_MSG_NOTICE([Use gpgrt-config with $gpgrt_libdir as gpg-error-config]) gpg_error_config_version=`$GPG_ERROR_CONFIG --modversion` else + gpg_error_config_version=`$GPG_ERROR_CONFIG --version` unset GPGRT_CONFIG fi elif test "$GPG_ERROR_CONFIG" != "no"; then diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gpgme-1.19.0/m4/qt6.m4 new/gpgme-1.20.0/m4/qt6.m4 --- old/gpgme-1.19.0/m4/qt6.m4 2023-02-01 17:50:48.000000000 +0100 +++ new/gpgme-1.20.0/m4/qt6.m4 2023-04-20 13:35:50.000000000 +0200 @@ -27,31 +27,10 @@ # Qt6 moved moc to libexec qt6libexecdir=$($PKG_CONFIG --variable=libexecdir 'Qt6Core >= 6.4.0') AC_PATH_TOOL(MOC, moc, [], [$qt6libexecdir]) - AC_MSG_CHECKING([moc version]) - mocversion=`$MOC -v 2>&1` - mocversiongrep=`echo $mocversion | grep -E "Qt 6|moc 6"` - if test x"$mocversiongrep" != x"$mocversion"; then - AC_MSG_RESULT([no]) - # moc was not the qt6 one, try with moc-qt6 - AC_CHECK_TOOL(MOC2, moc-qt6) - mocversion=`$MOC2 -v 2>&1` - mocversiongrep=`echo $mocversion | grep -E "Qt 6|moc-qt6 6|moc 6"` - if test x"$mocversiongrep" != x"$mocversion"; then - AC_CHECK_TOOL(QTCHOOSER, qtchooser) - qt6tooldir=`QT_SELECT=qt6 qtchooser -print-env | grep QTTOOLDIR | cut -d '=' -f 2 | cut -d \" -f 2` - mocversion=`$qt6tooldir/moc -v 2>&1` - mocversiongrep=`echo $mocversion | grep -E "Qt 6|moc 6"` - if test x"$mocversiongrep" != x"$mocversion"; then - # no valid moc found - have_qt6_libs="no"; - else - MOC=$qt6tooldir/moc - fi - else - MOC=$MOC2 - fi + if test -z "$MOC"; then + AC_MSG_WARN([moc not found - Qt 6 binding will not be built.]) + have_qt6_libs="no"; fi - AC_MSG_RESULT([$mocversion]) fi if test "$have_qt6_libs" = "yes"; then dnl Check that a binary can actually be build with this qt. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gpgme-1.19.0/src/debug.h new/gpgme-1.20.0/src/debug.h --- old/gpgme-1.19.0/src/debug.h 2023-02-01 17:50:48.000000000 +0100 +++ new/gpgme-1.20.0/src/debug.h 2023-04-17 15:09:48.000000000 +0200 @@ -180,7 +180,7 @@ _trace_sysres_ssize_t (gpgme_ssize_t res, int lvl, const char *func, int line) { if (res >= 0) - _gpgme_debug (NULL, lvl, 3, func, NULL, NULL, "result=%zd", res); + _gpgme_debug (NULL, lvl, 3, func, NULL, NULL, "result=%zd", (ssize_t)res); else _gpgme_debug (NULL, lvl, -1, NULL, NULL, NULL, "%s:%d: error: %s (%d)\n", diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gpgme-1.19.0/src/dirinfo.c new/gpgme-1.20.0/src/dirinfo.c --- old/gpgme-1.19.0/src/dirinfo.c 2023-02-10 11:12:52.000000000 +0100 +++ new/gpgme-1.20.0/src/dirinfo.c 2023-04-17 15:09:48.000000000 +0200 @@ -32,6 +32,12 @@ #include "sema.h" #include "sys-util.h" +#ifdef HAVE_DOSISH_SYSTEM +# define EXEEXT_S ".exe" +#else +# define EXEEXT_S "" +#endif + DEFINE_STATIC_LOCK (dirinfo_lock); /* Constants used internally to select the data. */ @@ -404,16 +410,18 @@ case WANT_GPG_WKS_CLIENT_NAME: if (!dirinfo.gpg_wks_client_name && dirinfo.libexecdir) dirinfo.gpg_wks_client_name = _gpgme_strconcat (dirinfo.libexecdir, - "/", + DIRSEP_S, "gpg-wks-client", + EXEEXT_S, NULL); result = dirinfo.gpg_wks_client_name; break; case WANT_GPGTAR_NAME: if (!dirinfo.gpgtar_name && dirinfo.bindir) dirinfo.gpgtar_name = _gpgme_strconcat (dirinfo.bindir, - "/", + DIRSEP_S, "gpgtar", + EXEEXT_S, NULL); result = dirinfo.gpgtar_name; break; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gpgme-1.19.0/src/engine-gpg.c new/gpgme-1.20.0/src/engine-gpg.c --- old/gpgme-1.19.0/src/engine-gpg.c 2023-02-09 13:56:35.000000000 +0100 +++ new/gpgme-1.20.0/src/engine-gpg.c 2023-04-17 09:32:09.000000000 +0200 @@ -874,7 +874,7 @@ static gpgme_error_t build_argv (engine_gpg_t gpg, const char *pgmname) { - gpgme_error_t err; + gpgme_error_t err = 0; struct arg_and_data_s *a; struct fd_data_map_s *fd_data_map = NULL; size_t datac=0, argc=0, allocated_argc=0; @@ -958,8 +958,7 @@ if (!fd_data_map) { err = gpg_error_from_syserror (); - if (err) - goto leave; + goto leave; } argc = datac = 0; @@ -967,8 +966,7 @@ if (!argv[argc]) { err = gpg_error_from_syserror (); - if (err) - goto leave; + goto leave; } argc++; if (need_special) @@ -977,8 +975,7 @@ if (!argv[argc]) { err = gpg_error_from_syserror (); - if (err) - goto leave; + goto leave; } argc++; } @@ -988,8 +985,7 @@ if (!argv[argc]) { err = gpg_error_from_syserror (); - if (err) - goto leave; + goto leave; } argc++; } @@ -1004,8 +1000,7 @@ if (!argv[argc]) { err = gpg_error_from_syserror (); - if (err) - goto leave; + goto leave; } argc++; } @@ -1014,8 +1009,7 @@ if (!argv[argc]) { err = gpg_error_from_syserror (); - if (err) - goto leave; + goto leave; } argc++; } @@ -1028,8 +1022,7 @@ if (!argv[argc]) { err = gpg_error_from_syserror (); - if (err) - goto leave; + goto leave; } argc++; } @@ -1037,8 +1030,7 @@ if (!argv[argc]) { err = gpg_error_from_syserror (); - if (err) - goto leave; + goto leave; } argc++; } @@ -1051,8 +1043,7 @@ if (!argv[argc]) { err = gpg_error_from_syserror (); - if (err) - goto leave; + goto leave; } argc++; } @@ -1060,8 +1051,7 @@ if (!argv[argc]) { err = gpg_error_from_syserror (); - if (err) - goto leave; + goto leave; } argc++; } @@ -1074,8 +1064,7 @@ if (!argv[argc]) { err = gpg_error_from_syserror (); - if (err) - goto leave; + goto leave; } argc++; } @@ -1083,8 +1072,7 @@ if (!argv[argc]) { err = gpg_error_from_syserror (); - if (err) - goto leave; + goto leave; } argc++; } @@ -1097,8 +1085,7 @@ if (!argv[argc]) { err = gpg_error_from_syserror (); - if (err) - goto leave; + goto leave; } argc++; } @@ -1106,8 +1093,7 @@ if (!argv[argc]) { err = gpg_error_from_syserror (); - if (err) - goto leave; + goto leave; } argc++; } @@ -1120,8 +1106,7 @@ if (!argv[argc]) { err = gpg_error_from_syserror (); - if (err) - goto leave; + goto leave; } argc++; } @@ -1129,8 +1114,7 @@ if (!argv[argc]) { err = gpg_error_from_syserror (); - if (err) - goto leave; + goto leave; } argc++; } @@ -1143,8 +1127,7 @@ if (!argv[argc]) { err = gpg_error_from_syserror (); - if (err) - goto leave; + goto leave; } argc++; } @@ -1152,8 +1135,7 @@ if (!argv[argc]) { err = gpg_error_from_syserror (); - if (err) - goto leave; + goto leave; } argc++; } @@ -1177,8 +1159,7 @@ if (!argv[argc]) { err = gpg_error_from_syserror (); - if (err) - goto leave; + goto leave; } argc++; } @@ -1186,8 +1167,7 @@ if (!argv[argc]) { err = gpg_error_from_syserror (); - if (err) - goto leave; + goto leave; } argc++; } @@ -1199,8 +1179,7 @@ if (!argv[argc]) { err = gpg_error_from_syserror (); - if (err) - goto leave; + goto leave; } argc++; } @@ -1222,8 +1201,7 @@ == -1) { err = gpg_error_from_syserror (); - if (err) - goto leave; + goto leave; } if (_gpgme_io_set_close_notify (fds[0], close_notify_handler, gpg) @@ -1272,8 +1250,7 @@ if (!argv[argc]) { err = gpg_error_from_syserror (); - if (err) - goto leave; + goto leave; } ptr = argv[argc]; @@ -1298,8 +1275,7 @@ if (!argv[argc]) { err = gpg_error_from_syserror (); - if (err) - goto leave; + goto leave; } argc++; } @@ -1307,8 +1283,7 @@ if (!argv[argc]) { err = gpg_error_from_syserror (); - if (err) - goto leave; + goto leave; } argc++; } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gpgme-1.19.0/src/gpgme-w32spawn.c new/gpgme-1.20.0/src/gpgme-w32spawn.c --- old/gpgme-1.19.0/src/gpgme-w32spawn.c 2019-06-07 10:21:18.000000000 +0200 +++ new/gpgme-1.20.0/src/gpgme-w32spawn.c 2023-04-17 15:09:48.000000000 +0200 @@ -40,10 +40,18 @@ #include "priv-io.h" +/* #define DEBUG_TO_FILE 1 */ + /* Name of this program. */ #define PGM "gpgme-w32spawn" +#ifdef DEBUG_TO_FILE +static FILE *mystderr; +#else +#define mystderr stderr +#endif + static char * @@ -126,7 +134,7 @@ i = 0; while (argv[i]) { - fprintf (stderr, PGM": argv[%2i] = %s\n", i, argv[i]); + fprintf (mystderr, PGM": argv[%2i] = %s\n", i, argv[i]); i++; } @@ -146,8 +154,6 @@ si.hStdOutput = GetStdHandle (STD_OUTPUT_HANDLE); si.hStdError = GetStdHandle (STD_ERROR_HANDLE); - fprintf (stderr, PGM": spawning: %s\n", arg_string); - for (i = 0; fd_list[i].fd != -1; i++) { /* The handle already is inheritable. */ @@ -155,19 +161,19 @@ { si.hStdInput = (HANDLE) fd_list[i].peer_name; duped_stdin = 1; - fprintf (stderr, PGM": dup 0x%x to stdin\n", fd_list[i].peer_name); + fprintf (mystderr, PGM": dup 0x%x to stdin\n", fd_list[i].peer_name); } else if (fd_list[i].dup_to == 1) { si.hStdOutput = (HANDLE) fd_list[i].peer_name; duped_stdout = 1; - fprintf (stderr, PGM": dup 0x%x to stdout\n", fd_list[i].peer_name); + fprintf (mystderr, PGM": dup 0x%x to stdout\n", fd_list[i].peer_name); } else if (fd_list[i].dup_to == 2) { si.hStdError = (HANDLE) fd_list[i].peer_name; duped_stderr = 1; - fprintf (stderr, PGM":dup 0x%x to stderr\n", fd_list[i].peer_name); + fprintf (mystderr, PGM":dup 0x%x to stderr\n", fd_list[i].peer_name); } } @@ -216,6 +222,7 @@ &pi)) /* returns process information */ { free (arg_string); + fprintf (mystderr, PGM": spawn error: %d\n", (int)GetLastError ()); /* FIXME: Should translate the error code. */ errno = EIO; return -1; @@ -252,7 +259,7 @@ if (func) { int rc = func (pi.dwProcessId); - fprintf (stderr, PGM": AllowSetForegroundWindow(%d): rc=%d\n", + fprintf (mystderr, PGM": AllowSetForegroundWindow(%d): rc=%d\n", (int)pi.dwProcessId, rc); } } @@ -418,7 +425,7 @@ if (aidx >= n_args) { - fprintf (stderr, PGM": translation file does not match args\n"); + fprintf (mystderr, PGM": translation file does not match args\n"); return NULL; } @@ -455,6 +462,10 @@ goto leave; } +#ifdef DEBUG_TO_FILE + mystderr = fopen ("h:/gpgme-w32spawn.log", "w"); +#endif + argv_spawn = translate_handles (argv[1], &argv[2], fd_list, &flags); if (!argv_spawn) { @@ -468,7 +479,7 @@ rc = my_spawn (argv_spawn, fd_list, flags); if (rc < 0) { - fprintf (stderr, PGM": executing `%s' failed: %s\n", + fprintf (mystderr, PGM": executing `%s' failed: %s\n", argv[0], strerror (errno)); rc = 2; goto leave; @@ -476,12 +487,12 @@ leave: if (rc) - fprintf (stderr, PGM": internal error\n"); + fprintf (mystderr, PGM": internal error\n"); /* Always try to delete the temporary file. */ if (argc >= 2) { if (DeleteFile (argv[1]) == 0) - fprintf (stderr, PGM": failed to delete %s: ec=%ld\n", + fprintf (mystderr, PGM": failed to delete %s: ec=%ld\n", argv[1], GetLastError ()); } return rc; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gpgme-1.19.0/src/gpgme.h.in new/gpgme-1.20.0/src/gpgme.h.in --- old/gpgme-1.19.0/src/gpgme.h.in 2023-02-01 17:50:48.000000000 +0100 +++ new/gpgme-1.20.0/src/gpgme.h.in 2023-03-21 08:18:52.000000000 +0100 @@ -575,8 +575,17 @@ /* True if the key is compliant to the de-vs mode. */ unsigned int is_de_vs : 1; + /* True if the key can be used for restricted encryption (ADSK). */ + unsigned int can_renc : 1; + + /* True if the key can be used for timestamping. */ + unsigned int can_timestamp : 1; + + /* True if the private key is possessed by more than one person. */ + unsigned int is_group_owned : 1; + /* Internal to GPGME, do not use. */ - unsigned int _unused : 20; + unsigned int _unused : 17; /* Public key algorithm supported by this subkey. */ gpgme_pubkey_algo_t pubkey_algo; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gpgme-1.19.0/src/keylist.c new/gpgme-1.20.0/src/keylist.c --- old/gpgme-1.19.0/src/keylist.c 2023-02-01 17:50:48.000000000 +0100 +++ new/gpgme-1.20.0/src/keylist.c 2023-03-21 08:19:00.000000000 +0100 @@ -287,6 +287,18 @@ subkey->can_authenticate = 1; break; + case 'r': + subkey->can_renc = 1; + break; + + case 't': + subkey->can_timestamp = 1; + break; + + case 'g': + subkey->is_group_owned = 1; + break; + case 'q': subkey->is_qualified = 1; break; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gpgme-1.19.0/src/posix-util.c new/gpgme-1.20.0/src/posix-util.c --- old/gpgme-1.19.0/src/posix-util.c 2023-02-01 17:50:48.000000000 +0100 +++ new/gpgme-1.20.0/src/posix-util.c 2023-04-20 13:35:50.000000000 +0200 @@ -144,7 +144,8 @@ /* On apple, especially when started through gpgme-json via the browser interface we should look into some additional fallback paths. */ - const char *additional_path = "/usr/local/bin:/usr/local/MacGPG2/bin"; + const char *additional_path + = "/usr/local/bin:/usr/local/MacGPG2/bin:/opt/homebrew/bin"; if (!ret) { ret = walk_path_str (additional_path, pgm); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gpgme-1.19.0/src/version.c new/gpgme-1.20.0/src/version.c --- old/gpgme-1.19.0/src/version.c 2019-06-07 10:21:18.000000000 +0200 +++ new/gpgme-1.20.0/src/version.c 2023-04-17 14:56:38.000000000 +0200 @@ -72,6 +72,9 @@ WSAStartup (0x202, &wsadat); } + + /* We want gpgrt's gettext to always output UTF-8. */ + gettext_use_utf8 (1); #endif _gpgme_debug_subsystem_init (); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gpgme-1.19.0/tests/run-keylist.c new/gpgme-1.20.0/tests/run-keylist.c --- old/gpgme-1.19.0/tests/run-keylist.c 2023-02-01 17:50:48.000000000 +0100 +++ new/gpgme-1.20.0/tests/run-keylist.c 2023-03-21 08:19:19.000000000 +0100 @@ -309,19 +309,22 @@ printf ("grip %2d: %s\n", nsub, subkey->keygrip); if (subkey->curve) printf ("curve %2d: %s\n", nsub, subkey->curve); - printf ("caps %2d: %s%s%s%s\n", + printf ("caps %2d: %s%s%s%s%s%s\n", nsub, subkey->can_encrypt? "e":"", subkey->can_sign? "s":"", subkey->can_certify? "c":"", - subkey->can_authenticate? "a":""); - printf ("flags %2d:%s%s%s%s%s%s%s%s\n", + subkey->can_authenticate? "a":"", + subkey->can_renc? "r":"", + subkey->can_timestamp? "t":""); + printf ("flags %2d:%s%s%s%s%s%s%s%s%s\n", nsub, subkey->secret? " secret":"", subkey->revoked? " revoked":"", subkey->expired? " expired":"", subkey->disabled? " disabled":"", subkey->invalid? " invalid":"", + subkey->is_group_owned? " group":"", subkey->is_qualified? " qualified":"", subkey->is_de_vs? " de-vs":"", subkey->is_cardkey? " cardkey":"");