Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package pam-config for openSUSE:Factory 
checked in at 2025-08-27 21:33:39
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/pam-config (Old)
 and      /work/SRC/openSUSE:Factory/.pam-config.new.30751 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "pam-config"

Wed Aug 27 21:33:39 2025 rev:108 rq:1301536 version:2.13+git.20250827

Changes:
--------
--- /work/SRC/openSUSE:Factory/pam-config/pam-config.changes    2025-07-17 
17:17:56.405692649 +0200
+++ /work/SRC/openSUSE:Factory/.pam-config.new.30751/pam-config.changes 
2025-08-27 21:34:04.709175541 +0200
@@ -1,0 +2,14 @@
+Wed Aug 27 10:11:24 UTC 2025 - Thorsten Kukuk <[email protected]>
+
+- Update to version 2.13+git.20250827:
+  * Add CI
+  * Update autoconf configs
+  * Add support for pam_unix_ng
+
+-------------------------------------------------------------------
+Thu Aug 21 13:55:57 UTC 2025 - Thorsten Kukuk <[email protected]>
+
+- Update to version 2.13+git.20250819:
+  * pam_unix: fix {use|try}_first_pass and use_authtok
+
+-------------------------------------------------------------------

Old:
----
  pam-config-2.13+git.20250715.tar.xz

New:
----
  pam-config-2.13+git.20250827.tar.xz

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

Other differences:
------------------
++++++ pam-config.spec ++++++
--- /var/tmp/diff_new_pack.w6JNdf/_old  2025-08-27 21:34:05.257198454 +0200
+++ /var/tmp/diff_new_pack.w6JNdf/_new  2025-08-27 21:34:05.261198622 +0200
@@ -17,7 +17,7 @@
 
 
 Name:           pam-config
-Version:        2.13+git.20250715
+Version:        2.13+git.20250827
 Release:        0
 Summary:        Utility to modify common PAM configuration files
 License:        GPL-2.0-only

++++++ _servicedata ++++++
--- /var/tmp/diff_new_pack.w6JNdf/_old  2025-08-27 21:34:05.309200629 +0200
+++ /var/tmp/diff_new_pack.w6JNdf/_new  2025-08-27 21:34:05.309200629 +0200
@@ -2,7 +2,7 @@
 <service name="tar_scm">
                 <param 
name="url">https://github.com/SUSE/pam-config.git</param>
               
-<param 
name="changesrevision">f5caa1e70f5af87d7f84e19f7c13ffde1e2cf288</param></service>
+<param 
name="changesrevision">b84075e76870a80f2d52d4b11d4ea3dfb512f522</param></service>
 </servicedata>
 (No newline at EOF)
 

++++++ pam-config-2.13+git.20250715.tar.xz -> 
pam-config-2.13+git.20250827.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/pam-config-2.13+git.20250715/.github/workflows/ci-opensuse.yml 
new/pam-config-2.13+git.20250827/.github/workflows/ci-opensuse.yml
--- old/pam-config-2.13+git.20250715/.github/workflows/ci-opensuse.yml  
1970-01-01 01:00:00.000000000 +0100
+++ new/pam-config-2.13+git.20250827/.github/workflows/ci-opensuse.yml  
2025-08-27 12:09:28.000000000 +0200
@@ -0,0 +1,24 @@
+name: openSUSE build & test
+
+on: [push, pull_request]
+
+jobs:
+  build:
+    runs-on: ubuntu-latest
+    container: registry.opensuse.org/opensuse/tumbleweed:latest
+    steps:
+    - name: Checkout repository
+      uses: actions/checkout@v4
+
+    - name: Install devel packages
+      run: |
+        zypper ref
+        zypper --non-interactive in --no-recommends autoconf automake 
diffutils docbook-xsl-stylesheets gcc gettext-tools make valgrind
+
+    - name: Setup configure
+      run: |
+        ./autogen.sh
+        ./configure
+
+    - name: Compile code
+      run: make
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pam-config-2.13+git.20250715/autogen.sh 
new/pam-config-2.13+git.20250827/autogen.sh
--- old/pam-config-2.13+git.20250715/autogen.sh 2025-07-15 08:43:27.000000000 
+0200
+++ new/pam-config-2.13+git.20250827/autogen.sh 2025-08-27 12:09:28.000000000 
+0200
@@ -3,8 +3,7 @@
 rm -fv ltmain.sh config.sub config.guess config.h.in config.rpath
 autopoint --force
 rm -fv po/Makevars.template po/ChangeLog m4/ChangeLog
-mkdir -p m4
-aclocal -I m4
+aclocal
 autoheader
 automake --add-missing --copy --force
-autoreconf
+autoreconf --install
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pam-config-2.13+git.20250715/configure.ac 
new/pam-config-2.13+git.20250827/configure.ac
--- old/pam-config-2.13+git.20250715/configure.ac       2025-07-15 
08:43:27.000000000 +0200
+++ new/pam-config-2.13+git.20250827/configure.ac       2025-08-27 
12:09:28.000000000 +0200
@@ -1,9 +1,9 @@
 dnl Process this file with autoconf to produce a configure script.
-AC_INIT([pam-config],[2.13])
+AC_INIT([pam-config],[2.14])
 AM_INIT_AUTOMAKE
 AC_CONFIG_SRCDIR([src/pam-config.c])
-AM_CONFIG_HEADER(config.h)
 AC_CONFIG_MACRO_DIR([m4])
+AC_CONFIG_HEADERS([config.h])
 AC_PREFIX_DEFAULT(/usr)
 AC_SUBST(PACKAGE)
 AC_SUBST(VERSION)
@@ -25,7 +25,6 @@
 dnl Checks for programs.
 AC_USE_SYSTEM_EXTENSIONS
 AC_PROG_CC
-AC_SEARCH_LIBS([strerror],[cposix])
 AC_PROG_INSTALL
 AC_PROG_MAKE_SET
 AC_PROG_RANLIB
@@ -55,9 +54,9 @@
 
 
 dnl internationalization macros
-AM_GNU_GETTEXT_REQUIRE_VERSION([0.19.2])
-AM_GNU_GETTEXT_VERSION([0.20.2])
 AM_GNU_GETTEXT([external])
+AM_GNU_GETTEXT_REQUIRE_VERSION([0.20.2])
+
 AC_CHECK_FUNCS(dngettext)
 
 AH_VERBATIM([__ZZENABLE_NLS],
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pam-config-2.13+git.20250715/po/Makefile.in.in 
new/pam-config-2.13+git.20250827/po/Makefile.in.in
--- old/pam-config-2.13+git.20250715/po/Makefile.in.in  2025-07-15 
08:43:27.000000000 +0200
+++ new/pam-config-2.13+git.20250827/po/Makefile.in.in  2025-08-27 
12:09:28.000000000 +0200
@@ -1,14 +1,26 @@
 # Makefile for PO directory in any package using GNU gettext.
 # Copyright (C) 1995-2000 Ulrich Drepper <[email protected]>
-# Copyright (C) 2000-2023 Free Software Foundation, Inc.
+# Copyright (C) 2000-2025 Free Software Foundation, Inc.
 #
 # Copying and distribution of this file, with or without modification,
 # are permitted in any medium without royalty provided the copyright
 # notice and this notice are preserved.  This file is offered as-is,
 # without any warranty.
 #
-# Origin: gettext-0.22
-GETTEXT_MACRO_VERSION = 0.20
+# Origin: gettext-0.26
+GETTEXT_MACRO_VERSION = 0.24
+
+# This Makefile makes use of the variable assignment operator != standardized
+# by POSIX:2024
+# <https://pubs.opengroup.org/onlinepubs/9799919799/utilities/make.html>.
+# It thus requires a 'make' implementation that supports this operator !=.
+# As of 2024, these are: GNU make >= 4.0, FreeBSD make, NetBSD make,
+# OpenBSD make. This means that building on specific platforms requires
+# use of GNU make:
+#   - On macOS, use /opt/homebrew/bin/gmake.
+#   - On Solaris 11 OpenIndiana, use /usr/bin/gmake = /usr/gnu/bin/make.
+#   - On Solaris 11.4, install GNU make yourself.
+#   - On AIX, use /opt/freeware/bin/make.
 
 PACKAGE = @PACKAGE@
 VERSION = @VERSION@
@@ -64,19 +76,60 @@
 MSGCONV = msgconv
 MSGFILTER = msgfilter
 
-POFILES = @POFILES@
-GMOFILES = @GMOFILES@
-UPDATEPOFILES = @UPDATEPOFILES@
-DUMMYPOFILES = @DUMMYPOFILES@
-DISTFILES.common = Makefile.in.in remove-potcdate.sin \
-$(DISTFILES.common.extra1) $(DISTFILES.common.extra2) 
$(DISTFILES.common.extra3)
-DISTFILES = $(DISTFILES.common) Makevars POTFILES.in \
-$(POFILES) $(GMOFILES) \
-$(DISTFILES.extra1) $(DISTFILES.extra2) $(DISTFILES.extra3)
-
-POTFILES = \
-
-CATALOGS = @CATALOGS@
+# The list of files which contain translatable strings.
+POTFILES != sed -e '/^\#/d' < $(srcdir)/POTFILES.in
+# This is computed as $(foreach file, $(POTFILES), $(top_srcdir)/$(file))
+POTFILES_DEPS != for file in $(POTFILES); do echo $(top_srcdir)/$$file; done
+
+# The set of available translations.
+ALL_LINGUAS != if test -f $(srcdir)/LINGUAS; then \
+                 sed -e '/^\#/d' < $(srcdir)/LINGUAS; \
+               else \
+                 echo $(LINGUAS); \
+               fi
+# This is computed as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).po)
+POFILES != for lang in $(ALL_LINGUAS); do echo $(srcdir)/$$lang.po; done
+# This is computed as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).gmo)
+GMOFILES != for lang in $(ALL_LINGUAS); do echo $(srcdir)/$$lang.gmo; done
+# This is computed as $(foreach lang, $(ALL_LINGUAS), $(lang).po-update)
+UPDATEPOFILES != for lang in $(ALL_LINGUAS); do echo $$lang.po-update; done
+# This is computed as $(foreach lang, $(ALL_LINGUAS), $(lang).nop)
+DUMMYPOFILES != for lang in $(ALL_LINGUAS); do echo $$lang.nop; done
+
+DISTFILES.common = \
+  Makefile.in.in remove-potcdate.sed \
+  $(DISTFILES.common.extra1) $(DISTFILES.common.extra2) \
+  $(DISTFILES.common.extra3) $(DISTFILES.common.extra4) \
+  $(DISTFILES.common.extra5) $(DISTFILES.common.extra6)
+DISTFILES = \
+  $(DISTFILES.common) \
+  Makevars POTFILES.in \
+  $(POFILES) $(GMOFILES) \
+  $(DISTFILES.extra1) $(DISTFILES.extra2) \
+  $(DISTFILES.extra3) $(DISTFILES.extra4) \
+  $(DISTFILES.extra5) $(DISTFILES.extra6)
+
+# The set of desired translations, as specified by the installer or 
distributor.
+DESIRED_LINGUAS = @DESIRED_LINGUAS@
+# The set of translations to install. This is computed based on $(ALL_LINGUAS)
+# and $(DESIRED_LINGUAS). It is a subset of $(ALL_LINGUAS).
+# We use the presentlang catalog if desiredlang is
+#   a. equal to presentlang, or
+#   b. a variant of presentlang (because in this case, presentlang can be used
+#      as a fallback for messages which are not translated in the desiredlang
+#      catalog).
+INST_LINGUAS != for presentlang in $(ALL_LINGUAS); do \
+                  useit=false; \
+                  for desiredlang in $(DESIRED_LINGUAS); do \
+                    case "$$desiredlang" in \
+                      "$$presentlang" | "$$presentlang"_* | "$$presentlang".* 
| "$$presentlang"@*) \
+                        useit=true ;; \
+                    esac; \
+                  done; \
+                  if $$useit; then echo $$presentlang; fi; \
+                done
+# This is computed as $(foreach lang, $(INST_LINGUAS), $(lang).gmo)
+CATALOGS != for lang in $(INST_LINGUAS); do echo $$lang.gmo; done
 
 POFILESDEPS_ = $(srcdir)/$(DOMAIN).pot
 POFILESDEPS_yes = $(POFILESDEPS_)
@@ -88,13 +141,14 @@
 DISTFILESDEPS_no =
 DISTFILESDEPS = $(DISTFILESDEPS_$(DIST_DEPENDS_ON_UPDATE_PO))
 
-# Makevars gets inserted here. (Don't remove this line!)
+# Include the customization of this po/ directory.
+include $(srcdir)/Makevars
 
 all: all-@USE_NLS@
 
 
 .SUFFIXES:
-.SUFFIXES: .po .gmo .sed .sin .nop .po-create .po-update
+.SUFFIXES: .po .gmo .nop .po-create .po-update
 
 # The .pot file, stamp-po, .po files, and .gmo files appear in release 
tarballs.
 # The GNU Coding Standards say in
@@ -113,6 +167,7 @@
 $(GMOFILES): $(srcdir)/$(DOMAIN).pot
 .po.gmo:
        @lang=`echo $* | sed -e 's,.*/,,'`; \
+       if test "$(PACKAGE)" = "gettext-tools" && test "$(CROSS_COMPILING)" != 
"yes"; then PATH=`pwd`/../src:$$PATH; fi; \
        test "$(srcdir)" = . && cdcmd="" || cdcmd="cd $(srcdir) && "; \
        echo "$${cdcmd}rm -f $${lang}.gmo && $(MSGMERGE) 
$(MSGMERGE_FOR_MSGFMT_OPTION) -o $${lang}.1po $${lang}.po $(DOMAIN).pot && 
$(GMSGFMT) -c --statistics --verbose -o $${lang}.gmo $${lang}.1po && rm -f 
$${lang}.1po"; \
        cd $(srcdir) && \
@@ -122,10 +177,6 @@
        mv t-$${lang}.gmo $${lang}.gmo && \
        rm -f $${lang}.1po
 
-.sin.sed:
-       sed -e '/^#/d' $< > t-$@
-       mv t-$@ $@
-
 
 all-yes: $(srcdir)/stamp-po
 all-no:
@@ -161,16 +212,12 @@
          mv $(srcdir)/stamp-poT $(srcdir)/stamp-po; \
        }
 
-# Note: Target 'all' must not depend on target '$(DOMAIN).pot-update',
-# otherwise packages like GCC can not be built if only parts of the source
-# have been downloaded.
-
 # This target rebuilds $(DOMAIN).pot; it is an expensive operation.
 # Note that $(DOMAIN).pot is not touched if it doesn't need to be changed.
 # The determination of whether the package xyz is a GNU one is based on the
 # heuristic whether some file in the top level directory mentions "GNU xyz".
 # If GNU 'find' is available, we avoid grepping through monster files.
-$(DOMAIN).pot-update: $(POTFILES) $(srcdir)/POTFILES.in remove-potcdate.sed
+$(DOMAIN).pot-update: $(POTFILES_DEPS) $(srcdir)/POTFILES.in
        package_gnu="$(PACKAGE_GNU)"; \
        test -n "$$package_gnu" || { \
          if { if (LC_ALL=C find --version) 2>/dev/null | grep GNU >/dev/null; 
then \
@@ -222,8 +269,8 @@
            || exit 1; \
          fi; \
          if test -f $(srcdir)/$(DOMAIN).pot; then \
-           sed -f remove-potcdate.sed < $(srcdir)/$(DOMAIN).pot > 
$(DOMAIN).1po && \
-           sed -f remove-potcdate.sed < $(DOMAIN).po > $(DOMAIN).2po && \
+           sed -f $(srcdir)/remove-potcdate.sed < $(srcdir)/$(DOMAIN).pot > 
$(DOMAIN).1po && \
+           sed -f $(srcdir)/remove-potcdate.sed < $(DOMAIN).po > $(DOMAIN).2po 
&& \
            if cmp $(DOMAIN).1po $(DOMAIN).2po >/dev/null 2>&1; then \
              rm -f $(DOMAIN).1po $(DOMAIN).2po $(DOMAIN).po; \
            else \
@@ -247,6 +294,7 @@
        @test -f $(srcdir)/$(DOMAIN).pot || $(MAKE) $(srcdir)/$(DOMAIN).pot
        @lang=`echo $@ | sed -e 's,.*/,,' -e 's/\.po$$//'`; \
        if test -f "$(srcdir)/$${lang}.po"; then \
+         if test "$(PACKAGE)" = "gettext-tools" && test "$(CROSS_COMPILING)" 
!= "yes"; then PATH=`pwd`/../src:$$PATH; fi; \
          test "$(srcdir)" = . && cdcmd="" || cdcmd="cd $(srcdir) && "; \
          echo "$${cdcmd}$(MSGMERGE_UPDATE) --quiet $(MSGMERGE_OPTIONS) 
--lang=$${lang} --previous $${lang}.po $(DOMAIN).pot"; \
          cd $(srcdir) \
@@ -396,7 +444,6 @@
 install-dvi install-ps install-pdf install-html:
 
 mostlyclean:
-       rm -f remove-potcdate.sed
        rm -f $(srcdir)/stamp-poT
        rm -f core core.* $(DOMAIN).po $(DOMAIN).1po $(DOMAIN).2po *.new.po
        rm -fr *.o
@@ -404,7 +451,7 @@
 clean: mostlyclean
 
 distclean: clean
-       rm -f Makefile Makefile.in POTFILES
+       rm -f Makefile Makefile.in
 
 maintainer-clean: distclean
        @echo "This command is intended for maintainers to use;"
@@ -499,11 +546,24 @@
 update-gmo: Makefile $(GMOFILES)
        @:
 
+# Include all the Rules-* extensions. Documented in
+# 
<https://www.gnu.org/software/gettext/manual/html_node/po_002fRules_002d_002a.html>
+RULES_FILES != cd $(srcdir) \
+               && for file in Rules-*; do \
+                    if test -f "$$file"; then \
+                      case "$$file" in \
+                        *.orig | *.bak | *~) ;; \
+                        *) echo $(srcdir)/"$$file" ;; \
+                      esac; \
+                    fi; \
+                  done
+include $(RULES_FILES)
+
 # Recreate Makefile by invoking config.status. Explicitly invoke the shell,
 # because execution permission bits may not work on the current file system.
 # Use @SHELL@, which is the shell determined by autoconf for the use by its
 # scripts, not $(SHELL) which is hardwired to /bin/sh and may be deficient.
-Makefile: Makefile.in.in Makevars $(top_builddir)/config.status 
@POMAKEFILEDEPS@
+Makefile: Makefile.in.in Makevars $(top_builddir)/config.status
        cd $(top_builddir) \
          && @SHELL@ ./config.status $(subdir)/[email protected] po-directories
 
@@ -512,3 +572,9 @@
 # Tell versions [3.59,3.63) of GNU make not to export all variables.
 # Otherwise a system limit (for SysV at least) may be exceeded.
 .NOEXPORT:
+
+# This Makefile contains rules which don't work with parallel make,
+# namely dist2.
+# See <https://lists.gnu.org/archive/html/bug-gettext/2022-06/msg00022.html>.
+# So, turn off parallel execution in this Makefile.
+.NOTPARALLEL:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pam-config-2.13+git.20250715/po/Rules-quot 
new/pam-config-2.13+git.20250827/po/Rules-quot
--- old/pam-config-2.13+git.20250715/po/Rules-quot      2025-07-15 
08:43:27.000000000 +0200
+++ new/pam-config-2.13+git.20250827/po/Rules-quot      2025-08-27 
12:09:28.000000000 +0200
@@ -1,11 +1,14 @@
 # Special Makefile rules for English message catalogs with quotation marks.
 #
-# Copyright (C) 2001-2017 Free Software Foundation, Inc.
-# This file, Rules-quot, and its auxiliary files (listed under
-# DISTFILES.common.extra1) are free software; the Free Software Foundation
-# gives unlimited permission to use, copy, distribute, and modify them.
+# Copyright (C) 2001-2024 Free Software Foundation, Inc.
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+# This file is offered as-is, without any warranty.
+#
+# Written by Bruno Haible <[email protected]>, 2001.
 
-DISTFILES.common.extra1 = quot.sed boldquot.sed [email protected] 
[email protected] insert-header.sin Rules-quot
+DISTFILES.common.extra1 = quot.sed boldquot.sed [email protected] 
[email protected] insert-header.sed Rules-quot
 
 .SUFFIXES: .insert-header .po-update-en
 
@@ -26,7 +29,8 @@
        LC_ALL=C; export LC_ALL; \
        cd $(srcdir); \
        if $(MSGINIT) $(MSGINIT_OPTIONS) -i $(DOMAIN).pot --no-translator -l 
$$lang -o - 2>/dev/null \
-          | $(SED) -f $$tmpdir/$$lang.insert-header | $(MSGCONV) -t UTF-8 | \
+          | $(SED) -f $$tmpdir/$$lang.insert-header | $(SED) -e '/^%%/d' \
+          | $(MSGCONV) -t UTF-8 | \
           { case `$(MSGFILTER) --version | sed 1q | sed -e 's,^[^0-9]*,,'` in \
             '' | 0.[0-9] | 0.[0-9].* | 0.1[0-8] | 0.1[0-8].*) \
               $(MSGFILTER) $(SED) -f `echo $$lang | sed -e 's/.*@//'`.sed \
@@ -51,11 +55,11 @@
          rm -f $$tmpdir/$$lang.new.po; \
        fi
 
[email protected]: insert-header.sin
-       sed -e '/^#/d' -e 's/HEADER/[email protected]/g' 
$(srcdir)/insert-header.sin > [email protected]
[email protected]: insert-header.sed
+       sed -e 's/HEADER/[email protected]/g' $(srcdir)/insert-header.sed > 
[email protected]
 
[email protected]: insert-header.sin
-       sed -e '/^#/d' -e 's/HEADER/[email protected]/g' 
$(srcdir)/insert-header.sin > [email protected]
[email protected]: insert-header.sed
+       sed -e 's/HEADER/[email protected]/g' $(srcdir)/insert-header.sed > 
[email protected]
 
 mostlyclean: mostlyclean-quot
 mostlyclean-quot:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pam-config-2.13+git.20250715/po/boldquot.sed 
new/pam-config-2.13+git.20250827/po/boldquot.sed
--- old/pam-config-2.13+git.20250715/po/boldquot.sed    2025-07-15 
08:43:27.000000000 +0200
+++ new/pam-config-2.13+git.20250827/po/boldquot.sed    2025-08-27 
12:09:28.000000000 +0200
@@ -1,3 +1,14 @@
+# Sed script that converts quotations, by replacing ASCII quotation marks
+# with Unicode quotation marks and highlighting the quotations in bold face.
+#
+# Copyright (C) 2001 Free Software Foundation, Inc.
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+# This file is offered as-is, without any warranty.
+#
+# Written by Bruno Haible <[email protected]>, 2001.
+#
 s/"\([^"]*\)"/“\1”/g
 s/`\([^`']*\)'/‘\1’/g
 s/ '\([^`']*\)' / ‘\1’ /g
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pam-config-2.13+git.20250715/po/[email protected] 
new/pam-config-2.13+git.20250827/po/[email protected]
--- old/pam-config-2.13+git.20250715/po/[email protected]      2025-07-15 
08:43:27.000000000 +0200
+++ new/pam-config-2.13+git.20250827/po/[email protected]      2025-08-27 
12:09:28.000000000 +0200
@@ -1,3 +1,13 @@
+%% A header that gets inserted into message catalogs named [email protected].
+%%
+%% Copyright (C) 2001 Free Software Foundation, Inc.
+%% This file is free software; the Free Software Foundation
+%% gives unlimited permission to copy and/or distribute it,
+%% with or without modifications, as long as this notice is preserved.
+%% This file is offered as-is, without any warranty.
+%%
+%% Written by Bruno Haible <[email protected]>, 2001.
+%%
 # All this catalog "translates" are quotation characters.
 # The msgids must be ASCII and therefore cannot contain real quotation
 # characters, only substitutes like grave accent (0x60), apostrophe (0x27)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pam-config-2.13+git.20250715/po/[email protected] 
new/pam-config-2.13+git.20250827/po/[email protected]
--- old/pam-config-2.13+git.20250715/po/[email protected]  2025-07-15 
08:43:27.000000000 +0200
+++ new/pam-config-2.13+git.20250827/po/[email protected]  2025-08-27 
12:09:28.000000000 +0200
@@ -1,3 +1,13 @@
+%% A header that gets inserted into message catalogs named [email protected].
+%%
+%% Copyright (C) 2001 Free Software Foundation, Inc.
+%% This file is free software; the Free Software Foundation
+%% gives unlimited permission to copy and/or distribute it,
+%% with or without modifications, as long as this notice is preserved.
+%% This file is offered as-is, without any warranty.
+%%
+%% Written by Bruno Haible <[email protected]>, 2001.
+%%
 # All this catalog "translates" are quotation characters.
 # The msgids must be ASCII and therefore cannot contain real quotation
 # characters, only substitutes like grave accent (0x60), apostrophe (0x27)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pam-config-2.13+git.20250715/po/quot.sed 
new/pam-config-2.13+git.20250827/po/quot.sed
--- old/pam-config-2.13+git.20250715/po/quot.sed        2025-07-15 
08:43:27.000000000 +0200
+++ new/pam-config-2.13+git.20250827/po/quot.sed        2025-08-27 
12:09:28.000000000 +0200
@@ -1,3 +1,14 @@
+# Sed script that converts quotations, by replacing ASCII quotation marks
+# with Unicode quotation marks.
+#
+# Copyright (C) 2001 Free Software Foundation, Inc.
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+# This file is offered as-is, without any warranty.
+#
+# Written by Bruno Haible <[email protected]>, 2001.
+#
 s/"\([^"]*\)"/“\1”/g
 s/`\([^`']*\)'/‘\1’/g
 s/ '\([^`']*\)' / ‘\1’ /g
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pam-config-2.13+git.20250715/src/Makefile.am 
new/pam-config-2.13+git.20250827/src/Makefile.am
--- old/pam-config-2.13+git.20250715/src/Makefile.am    2025-07-15 
08:43:27.000000000 +0200
+++ new/pam-config-2.13+git.20250827/src/Makefile.am    2025-08-27 
12:09:28.000000000 +0200
@@ -36,7 +36,7 @@
        mod_pam_kwallet5.c mod_pam_keyinit.c mod_pam_mktemp.c \
        mod_pam_pwquality.c mod_pam_u2f.c mod_pam_faildelay.c \
        mod_pam_lastlog2.c mod_pam_fscrypt.c mod_pam_wtmpdb.c \
-       mod_pam_himmelblau.c mod_pam_kanidm.c
+       mod_pam_himmelblau.c mod_pam_kanidm.c mod_pam_unix_ng.c
 
 noinst_HEADERS = pam-config.h pam-module.h
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pam-config-2.13+git.20250715/src/mod_pam_unix.c 
new/pam-config-2.13+git.20250827/src/mod_pam_unix.c
--- old/pam-config-2.13+git.20250715/src/mod_pam_unix.c 2025-07-15 
08:43:27.000000000 +0200
+++ new/pam-config-2.13+git.20250827/src/mod_pam_unix.c 2025-08-27 
12:09:28.000000000 +0200
@@ -30,7 +30,7 @@
 {
   option_set_t *opt_set = this->get_opt_set (this, op);
   int with_krb5, with_ldap, with_lum, with_winbind, with_pwcheck,
-    with_cracklib, with_mount, with_sss;
+    with_cracklib, with_pwquality, with_mount, with_sss;
 
   if (debug)
     debug_write_call (this, op);
@@ -38,14 +38,15 @@
   if (!opt_set->is_enabled (opt_set, "is_enabled"))
     return 0;
 
-  with_krb5    = is_module_enabled (common_module_list, "pam_krb5.so"    , op);
-  with_ldap    = is_module_enabled (common_module_list, "pam_ldap.so"    , op);
-  with_lum     = is_module_enabled (common_module_list, "pam_lum.so"     , op);
-  with_winbind = is_module_enabled (common_module_list, "pam_winbind.so" , op);
-  with_sss     = is_module_enabled (common_module_list, "pam_sss.so"     , op);
-  with_pwcheck = is_module_enabled (common_module_list, "pam_pwcheck.so" , op);
-  with_cracklib = is_module_enabled (common_module_list, "pam_cracklib.so", 
op);
-  with_mount   = is_module_enabled (common_module_list, "pam_mount.so"   , op);
+  with_krb5     = is_module_enabled (common_module_list, "pam_krb5.so",      
op);
+  with_ldap     = is_module_enabled (common_module_list, "pam_ldap.so",      
op);
+  with_lum      = is_module_enabled (common_module_list, "pam_lum.so",       
op);
+  with_winbind  = is_module_enabled (common_module_list, "pam_winbind.so",   
op);
+  with_sss      = is_module_enabled (common_module_list, "pam_sss.so",       
op);
+  with_pwcheck  = is_module_enabled (common_module_list, "pam_pwcheck.so",   
op);
+  with_cracklib  = is_module_enabled (common_module_list, "pam_cracklib.so",  
op);
+  with_pwquality = is_module_enabled (common_module_list, "pam_pwquality.so", 
op);
+  with_mount    = is_module_enabled (common_module_list, "pam_mount.so",     
op);
 
   switch (op)
   {
@@ -60,6 +61,10 @@
         * one.
         * */
        opt_set->enable (opt_set, "use_first_pass", TRUE);
+
+      if (!opt_set->is_enabled (opt_set, "use_first_pass") &&
+         !opt_set->is_enabled (opt_set, "try_first_pass"))
+       opt_set->enable (opt_set, "try_first_pass", TRUE);
       break;
     case ACCOUNT:
       if (with_krb5 || with_ldap || with_lum || with_winbind || with_sss)
@@ -80,7 +85,7 @@
                        fprintf (fp, "password\tsufficient\tpam_unix.so\t");
                else
                        fprintf (fp, "password\trequired\tpam_unix.so\t");
-               if (with_pwcheck || with_cracklib)
+               if (with_pwcheck || with_cracklib || with_pwquality)
                        fprintf (fp, "use_authtok ");
                break;
     case SESSION:
@@ -88,10 +93,6 @@
       break;
   }
 
-  if (!opt_set->is_enabled (opt_set, "use_first_pass") &&
-      !opt_set->is_enabled (opt_set, "try_first_pass"))
-    opt_set->enable (opt_set, "try_first_pass", TRUE);
-
   WRITE_CONFIG_OPTIONS
 
   return 0;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pam-config-2.13+git.20250715/src/mod_pam_unix_ng.c 
new/pam-config-2.13+git.20250827/src/mod_pam_unix_ng.c
--- old/pam-config-2.13+git.20250715/src/mod_pam_unix_ng.c      1970-01-01 
01:00:00.000000000 +0100
+++ new/pam-config-2.13+git.20250827/src/mod_pam_unix_ng.c      2025-08-27 
12:09:28.000000000 +0200
@@ -0,0 +1,94 @@
+/* Copyright (C) 2007, 2008 Sven Schober
+   Author: Sven Schober <[email protected]>
+
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License version 2 as
+   published by the Free Software Foundation.
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   You should have received a copy of the GNU General Public License
+   along with this program; if not, write to the Free Software Foundation,
+   Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include <stdio.h>
+#include <string.h>
+#include <ctype.h>
+
+#include "pam-config.h"
+#include "pam-module.h"
+
+static int
+write_config_unix_ng (pam_module_t *this, enum write_type op, FILE *fp)
+{
+  option_set_t *opt_set = this->get_opt_set (this, op);
+  int with_pwquality;
+
+  if (debug)
+    debug_write_call (this, op);
+
+  if (!opt_set->is_enabled (opt_set, "is_enabled"))
+    return 0;
+
+  with_pwquality = is_module_enabled (common_module_list, "pam_pwquality.so" , 
op);
+
+  switch (op)
+  {
+    case AUTH:
+      fprintf (fp, "auth\trequired\tpam_unix_ng.so\t");
+      if (!opt_set->is_enabled (opt_set, "use_first_pass") &&
+          !opt_set->is_enabled (opt_set, "try_first_pass"))
+        opt_set->enable (opt_set, "try_first_pass", TRUE);
+      break;
+    case ACCOUNT:
+      fprintf (fp, "account\trequired\tpam_unix_ng.so\t");
+      break;
+    case PASSWORD:
+      fprintf (fp, "password\trequired\tpam_unix_ng.so\t");
+      if (with_pwquality)
+       fprintf (fp, "use_authtok ");
+      break;
+  case SESSION:
+    fprintf (fp, "session\trequired\tpam_unix_ng.so\t");
+    break;
+  }
+
+  WRITE_CONFIG_OPTIONS
+
+  return 0;
+}
+
+GETOPT_START_ALL
+GETOPT_END_ALL
+
+PRINT_ARGS("unix_ng");
+PRINT_XMLHELP("unix_ng");
+
+/* ---- construct module object ---- */
+DECLARE_BOOL_OPTS_6( is_enabled, nullok, debug, quiet, use_first_pass, 
try_first_pass );
+DECLARE_STRING_OPTS_1( authtok_type );
+DECLARE_OPT_SETS;
+
+module_helptext_t unix_ng_help[] = {{"", NULL, "Use pam_unix_ng.so as standard 
UNIX PAM module."},
+                                   {"debug", NULL, "Add <option>debug</option> 
option to all pam_unix_ng.so invocations."},
+                                   {"nullok", NULL, "Add 
<option>nullok</option> option to all pam_unix_ng.so invocations."},
+                                   {"quiet", NULL, "Add <option>quiet</option> 
option to pam_unix_ng.so."},
+                                   {NULL, NULL, NULL}};
+
+
+/* at last construct the complete module object */
+pam_module_t mod_pam_unix_ng = { "pam_unix_ng.so", opt_sets, unix_ng_help,
+                                &def_parse_config,
+                                &def_print_module,
+                                &write_config_unix_ng,
+                                &get_opt_set,
+                                &getopt,
+                                &print_args,
+                                &print_xmlhelp};
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pam-config-2.13+git.20250715/src/pam-config.8.xml 
new/pam-config-2.13+git.20250827/src/pam-config.8.xml
--- old/pam-config-2.13+git.20250715/src/pam-config.8.xml       2025-07-15 
08:43:27.000000000 +0200
+++ new/pam-config-2.13+git.20250827/src/pam-config.8.xml       2025-08-27 
12:09:28.000000000 +0200
@@ -1778,6 +1778,62 @@
             </listitem>
           </varlistentry>
           <varlistentry>
+            <term><option>--unix_ng</option></term>
+            <listitem>
+              <para>
+                Use pam_unix_ng.so as standard UNIX PAM module.
+              </para>
+            </listitem>
+          </varlistentry>
+          <varlistentry>
+            <term><option>--unix_ng-nullok</option></term>
+            <listitem>
+              <para>
+                Add <option>nullok</option> option to all pam_unix_ng.so 
invocations.
+              </para>
+            </listitem>
+          </varlistentry>
+          <varlistentry>
+            <term><option>--unix_ng-debug</option></term>
+            <listitem>
+              <para>
+                Add <option>debug</option> option to all pam_unix_ng.so 
invocations.
+              </para>
+            </listitem>
+          </varlistentry>
+          <varlistentry>
+            <term><option>--unix_ng-quiet</option></term>
+            <listitem>
+              <para>
+                Add <option>quiet</option> option to pam_unix_ng.so.
+              </para>
+            </listitem>
+          </varlistentry>
+          <varlistentry>
+            <term><option>--unix_ng-use_first_pass</option></term>
+            <listitem>
+              <para>
+                Add <option>use_first_pass</option> option to all 
pam_unix_ng.so invocations.
+              </para>
+            </listitem>
+          </varlistentry>
+          <varlistentry>
+            <term><option>--unix_ng-try_first_pass</option></term>
+            <listitem>
+              <para>
+                Add <option>try_first_pass</option> option to all 
pam_unix_ng.so invocations.
+              </para>
+            </listitem>
+          </varlistentry>
+          <varlistentry>
+            
<term><option>--unix_ng-authtok_type=</option><replaceable>value</replaceable></term>
+            <listitem>
+              <para>
+                Add 
<option>authtok_type=</option><replaceable>value</replaceable> option to 
pam_unix_ng.so.
+              </para>
+            </listitem>
+          </varlistentry>
+          <varlistentry>
             <term><option>--winbind</option></term>
             <listitem>
               <para>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pam-config-2.13+git.20250715/src/sanity_checks.c 
new/pam-config-2.13+git.20250827/src/sanity_checks.c
--- old/pam-config-2.13+git.20250715/src/sanity_checks.c        2025-07-15 
08:43:27.000000000 +0200
+++ new/pam-config-2.13+git.20250827/src/sanity_checks.c        2025-08-27 
12:09:28.000000000 +0200
@@ -19,6 +19,7 @@
 #include <config.h>
 #endif
 
+#include <assert.h>
 #include <stdio.h>
 #include <string.h>
 #include <unistd.h>
@@ -85,47 +86,82 @@
 check_for_unix_conflict (pam_module_t **module_list, write_type_t op,
                         int verify)
 {
-  int with_unix, with_unix2;
+  int with_unix, with_unix2, with_unix_ng;
   int retval = 0;
 
   with_unix = is_module_enabled (module_list,
                                 "pam_unix.so", op );
   with_unix2 = is_module_enabled (module_list,
                                  "pam_unix2.so", op );
+  with_unix_ng = is_module_enabled (module_list,
+                                    "pam_unix_ng.so", op );
 
-  if (with_unix && with_unix2 )
+
+  /* exactly one should be enabled */
+  if ((with_unix + with_unix2 + with_unix_ng) == 1)
+    return retval;
+
+  if (verify)
+    {
+      /* no one enabled, enable pam_unix */
+      if ((with_unix + with_unix2 + with_unix_ng) == 0)
+       fprintf (stderr,
+                _("WARNING: no unix module is enabled!\n"));
+      else
+       fprintf (stderr,
+                _("WARNING: pam_unix.so, pam_unix2.so and/or pam_unix_ng.so 
are enabled!\n"));
+      retval = 1;
+    }
+  else
     {
-      if (verify)
+      pam_module_t *mod_unix_ng = lookup (module_list, "pam_unix_ng.so");
+      pam_module_t *mod_unix = lookup (module_list, "pam_unix.so");
+      pam_module_t *mod_unix2 = lookup (module_list, "pam_unix2.so");
+
+      assert(mod_unix_ng);
+      assert(mod_unix);
+      assert(mod_unix2);
+
+      if ((with_unix + with_unix2 + with_unix_ng) == 0)
        {
+         option_set_t *opt_set_unix = mod_unix->get_opt_set (mod_unix, op);
+
          fprintf (stderr,
-                  _("WARNING: pam_unix.so and pam_unix2.so enabled!\n"));
-         retval = 1;
+                  _("INFO: no unix module is enabled for service %s,\nINFO: 
enabling pam_unix.so.\n"),
+                  type2string(op));
+
+         opt_set_unix->enable (opt_set_unix, "is_enabled", TRUE);
+       }
+      else if (with_unix_ng)
+       {
+         option_set_t *opt_set_unix = mod_unix->get_opt_set (mod_unix, op);
+         option_set_t *opt_set_unix2 = mod_unix2->get_opt_set (mod_unix2, op);
+
+         fprintf (stderr,
+                  _("INFO: pam_unix.so, pam_unix2 and/or pam_unix_ng.so are 
enabled in service %s,\nINFO: only pam_unix_ng.so will be enabled.\n"),
+                  type2string (op));
+
+         opt_set_unix->enable (opt_set_unix, "is_enabled", FALSE);
+         opt_set_unix2->enable (opt_set_unix2, "is_enabled", FALSE);
+       }
+      else if (with_unix)
+       {
+         option_set_t *opt_set = mod_unix2->get_opt_set (mod_unix2, op);
+
+         fprintf (stderr,
+                  _("INFO: pam_unix.so and pam_unix2 are enabled in service 
%s,\nINFO: only pam_unix.so will be enabled.\n"),
+                  type2string (op));
+
+         opt_set->enable (opt_set, "is_enabled", FALSE);
        }
       else
        {
-         fprintf (stderr, _("INFO: pam_unix.so and pam_unix2.so enabled in 
service %s,\nINFO: only pam_unix2.so will be enabled.\n"), type2string (op));
-         pam_module_t *mod_unix = lookup (module_list, "pam_unix.so");
-         if (mod_unix)
-           {
-             option_set_t *opt_set = mod_unix->get_opt_set (mod_unix, op);
-             if (opt_set)
-               {
-                 opt_set->enable (opt_set, "is_enabled", FALSE);
-               }
-             else
-               {
-                 fprintf(stderr, _("ERROR: Failed to disable pam_unix.so.\n"));
-                 retval = 1;
-               }
-           }
-         else
-           {
-             fprintf(stderr, _("ERROR: Failed to disable pam_unix.so.\n"));
-             retval = 1;
-           }
+         fprintf(stderr, _("ERROR: something did go wrong with counting unix 
modules...\n"));
+         retval = 1;
        }
-      }
-  return retval;
+    }
+
+return retval;
 }
 
 int
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pam-config-2.13+git.20250715/src/supported-modules.h 
new/pam-config-2.13+git.20250827/src/supported-modules.h
--- old/pam-config-2.13+git.20250715/src/supported-modules.h    2025-07-15 
08:43:27.000000000 +0200
+++ new/pam-config-2.13+git.20250827/src/supported-modules.h    2025-08-27 
12:09:28.000000000 +0200
@@ -41,6 +41,7 @@
 extern pam_module_t mod_pam_umask;
 extern pam_module_t mod_pam_unix2;
 extern pam_module_t mod_pam_unix;
+extern pam_module_t mod_pam_unix_ng;
 extern pam_module_t mod_pam_winbind;
 extern pam_module_t mod_pam_wtmpdb;
 
@@ -98,6 +99,7 @@
   &mod_pam_umask,
   &mod_pam_unix,
   &mod_pam_unix2,
+  &mod_pam_unix_ng,
   &mod_pam_winbind,
   &mod_pam_wtmpdb,
   NULL
@@ -109,6 +111,7 @@
   &mod_pam_himmelblau,
   &mod_pam_unix2,
   &mod_pam_unix,
+  &mod_pam_unix_ng,
   &mod_pam_krb5,
   &mod_pam_localuser,
   &mod_pam_sss,
@@ -137,6 +140,7 @@
   &mod_pam_fscrypt,
   &mod_pam_unix2,
   &mod_pam_unix,
+  &mod_pam_unix_ng,
   &mod_pam_krb5,
   &mod_pam_sss,
   &mod_pam_ldap,
@@ -162,6 +166,7 @@
   &mod_pam_systemd_home,
   &mod_pam_unix2,
   &mod_pam_unix,
+  &mod_pam_unix_ng,
   &mod_pam_fscrypt,
   &mod_pam_make,
   &mod_pam_exec,
@@ -183,6 +188,7 @@
   &mod_pam_systemd,
   &mod_pam_unix2,
   &mod_pam_unix,
+  &mod_pam_unix_ng,
   &mod_pam_apparmor,
   &mod_pam_krb5,
   &mod_pam_sss,
@@ -212,6 +218,7 @@
   &mod_pam_limits,
   &mod_pam_unix2,
   &mod_pam_unix,
+  &mod_pam_unix_ng,
   &mod_pam_apparmor,
   &mod_pam_krb5,
   &mod_pam_sss,

Reply via email to