Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package apache2-mod_authn_otp for 
openSUSE:Factory checked in at 2024-07-02 18:19:20
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/apache2-mod_authn_otp (Old)
 and      /work/SRC/openSUSE:Factory/.apache2-mod_authn_otp.new.18349 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "apache2-mod_authn_otp"

Tue Jul  2 18:19:20 2024 rev:14 rq:1184837 version:1.1.11

Changes:
--------
--- 
/work/SRC/openSUSE:Factory/apache2-mod_authn_otp/apache2-mod_authn_otp.changes  
    2024-06-20 16:49:15.177962823 +0200
+++ 
/work/SRC/openSUSE:Factory/.apache2-mod_authn_otp.new.18349/apache2-mod_authn_otp.changes
   2024-07-02 18:19:25.817963186 +0200
@@ -1,0 +2,7 @@
+Thu Jun 27 14:21:35 UTC 2024 - Archie Cobbs <[email protected]>
+
+- Update to version 1.1.11
+    - Fixed build issue with libapr on some systems (issue #48)
+    - Added otplock(1) utility (issue #38)
+
+-------------------------------------------------------------------

Old:
----
  mod_authn_otp-1.1.10.tar.gz

New:
----
  mod_authn_otp-1.1.11.tar.gz

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

Other differences:
------------------
++++++ apache2-mod_authn_otp.spec ++++++
--- /var/tmp/diff_new_pack.UmU3ek/_old  2024-07-02 18:19:26.813999629 +0200
+++ /var/tmp/diff_new_pack.UmU3ek/_new  2024-07-02 18:19:26.817999776 +0200
@@ -1,5 +1,5 @@
 #
-# spec file for package apache2-mod_authn_otp
+# spec file
 #
 # Copyright (c) 2024 SUSE LLC
 # Copyright (c) 2012 Archie L. Cobbs <[email protected]>
@@ -19,7 +19,7 @@
 
 %define mod_name           mod_authn_otp
 Name:           apache2-%{mod_name}
-Version:        1.1.10
+Version:        1.1.11
 Release:        0
 Summary:        Apache module for one-time password authentication
 License:        Apache-2.0
@@ -31,6 +31,8 @@
 BuildRequires:  pkgconfig(openssl)
 Requires:       %{apache_mmn}
 Requires:       %{apache_suse_maintenance_mmn}
+Provides:       genotpurl = %{version}
+Provides:       otplock = %{version}
 Provides:       otptool = %{version}
 
 %description
@@ -56,10 +58,11 @@
 yet also don't require users to install special VPN software, and is
 compatible with software tokens that run on cell phones.
 
-Also included are two command line utilities, otptool and genotpurl.
-otptool is a one-time password command line utility. It can be used
-on a simple call-out basis to integrate two-factor authentication
-into any existing authentication solution. genotpurl generates URLs
+Also included are three command line utilities, otptool, otplock, and
+genotpurl. otptool is a one-time password command line utility. It can
+be used on a simple call-out basis to integrate two-factor authentication
+into any existing authentication solution. otplock allows you to safely
+modify the users file while Apache is running. genotpurl generates URLs
 for the Google Authenticator app.
 
 %prep
@@ -78,7 +81,9 @@
 %doc CHANGES README users.sample
 %{apache_libexecdir}/%{mod_name}.so
 %{_bindir}/otptool
+%{_bindir}/otplock
 %{_bindir}/genotpurl
 %{_mandir}/man1/otptool.1.gz
+%{_mandir}/man1/otplock.1.gz
 %{_mandir}/man1/genotpurl.1.gz
 

++++++ mod_authn_otp-1.1.10.tar.gz -> mod_authn_otp-1.1.11.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mod_authn_otp-1.1.10/CHANGES 
new/mod_authn_otp-1.1.11/CHANGES
--- old/mod_authn_otp-1.1.10/CHANGES    2022-05-04 16:50:52.000000000 +0200
+++ new/mod_authn_otp-1.1.11/CHANGES    2024-06-27 16:13:49.000000000 +0200
@@ -1,3 +1,8 @@
+Version 1.1.11 released June 27, 2024
+
+    - Fixed build issue with libapr on some systems (issue #48)
+    - Added otplock(1) utility (issue #38)
+
 Version 1.1.10 released May 4, 2022
 
     - Fixed bug in genotpurl on platforms with signed "char" (pr #46)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mod_authn_otp-1.1.10/Makefile.am 
new/mod_authn_otp-1.1.11/Makefile.am
--- old/mod_authn_otp-1.1.10/Makefile.am        2019-06-22 20:04:49.000000000 
+0200
+++ new/mod_authn_otp-1.1.11/Makefile.am        2023-01-07 18:49:27.000000000 
+0100
@@ -2,7 +2,7 @@
 #
 # mod_authn_otp - Apache module for one-time password authentication
 #
-# Copyright 2009 Archie L. Cobbs <[email protected]>
+# Copyright 2009 Archie L. Cobbs <[email protected]>
 #
 # Licensed under the Apache License, Version 2.0 (the "License");
 # you may not use this file except in compliance with the License.
@@ -30,19 +30,21 @@
 install-exec-hook:
                test -z "$(STRIP)" || $(STRIP) $(DESTDIR)`$(APXS) -q 
LIBEXECDIR`/mod_authn_otp.so
                test -z "$(STRIP)" || $(STRIP) $(DESTDIR)$(bindir)/otptool
+               test -z "$(STRIP)" || $(STRIP) $(DESTDIR)$(bindir)/otplock
                test -z "$(STRIP)" || $(STRIP) $(DESTDIR)$(bindir)/genotpurl
 
-bin_PROGRAMS=       otptool genotpurl
+bin_PROGRAMS=       otptool otplock genotpurl
 
-noinst_HEADERS=     otptool.h errinc.h base32.h
+noinst_HEADERS=     otptool.h otplock.h errinc.h base32.h
 
-man_MANS=           otptool.1 genotpurl.1
+man_MANS=           otptool.1 otplock.1 genotpurl.1
 
 otptool_SOURCES=    otptool.c hotp.c motp.c phex.c
 
+otplock_SOURCES=    otplock.c
+
 genotpurl_SOURCES=  genotpurl.c base32.c
 
 CLEANFILES=         *.la *.lo *.o *.so *.slo .libs/*
 
-EXTRA_DIST=         CHANGES LICENSE mod_authn_otp.c genotpurl.c users.sample 
otptool.1 genotpurl.1 base32.c
-
+EXTRA_DIST=         CHANGES LICENSE mod_authn_otp.c genotpurl.c users.sample 
otptool.1 otplock.1 genotpurl.1 base32.c
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mod_authn_otp-1.1.10/Makefile.in 
new/mod_authn_otp-1.1.11/Makefile.in
--- old/mod_authn_otp-1.1.10/Makefile.in        2022-05-04 16:53:30.000000000 
+0200
+++ new/mod_authn_otp-1.1.11/Makefile.in        2024-06-27 16:14:38.000000000 
+0200
@@ -17,7 +17,7 @@
 #
 # mod_authn_otp - Apache module for one-time password authentication
 #
-# Copyright 2009 Archie L. Cobbs <[email protected]>
+# Copyright 2009 Archie L. Cobbs <[email protected]>
 #
 # Licensed under the Apache License, Version 2.0 (the "License");
 # you may not use this file except in compliance with the License.
@@ -105,7 +105,7 @@
 NORMAL_UNINSTALL = :
 PRE_UNINSTALL = :
 POST_UNINSTALL = :
-bin_PROGRAMS = otptool$(EXEEXT) genotpurl$(EXEEXT)
+bin_PROGRAMS = otptool$(EXEEXT) otplock$(EXEEXT) genotpurl$(EXEEXT)
 subdir = .
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/configure.ac
@@ -124,6 +124,9 @@
 am_genotpurl_OBJECTS = genotpurl.$(OBJEXT) base32.$(OBJEXT)
 genotpurl_OBJECTS = $(am_genotpurl_OBJECTS)
 genotpurl_LDADD = $(LDADD)
+am_otplock_OBJECTS = otplock.$(OBJEXT)
+otplock_OBJECTS = $(am_otplock_OBJECTS)
+otplock_LDADD = $(LDADD)
 am_otptool_OBJECTS = otptool.$(OBJEXT) hotp.$(OBJEXT) motp.$(OBJEXT) \
        phex.$(OBJEXT)
 otptool_OBJECTS = $(am_otptool_OBJECTS)
@@ -156,8 +159,9 @@
 am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@)
 am__v_CCLD_0 = @echo "  CCLD    " $@;
 am__v_CCLD_1 = 
-SOURCES = $(genotpurl_SOURCES) $(otptool_SOURCES)
-DIST_SOURCES = $(genotpurl_SOURCES) $(otptool_SOURCES)
+SOURCES = $(genotpurl_SOURCES) $(otplock_SOURCES) $(otptool_SOURCES)
+DIST_SOURCES = $(genotpurl_SOURCES) $(otplock_SOURCES) \
+       $(otptool_SOURCES)
 am__can_run_installinfo = \
   case $$AM_UPDATE_INFO_DIR in \
     n|no|NO) false;; \
@@ -329,12 +333,13 @@
 top_build_prefix = @top_build_prefix@
 top_builddir = @top_builddir@
 top_srcdir = @top_srcdir@
-noinst_HEADERS = otptool.h errinc.h base32.h
-man_MANS = otptool.1 genotpurl.1
+noinst_HEADERS = otptool.h otplock.h errinc.h base32.h
+man_MANS = otptool.1 otplock.1 genotpurl.1
 otptool_SOURCES = otptool.c hotp.c motp.c phex.c
+otplock_SOURCES = otplock.c
 genotpurl_SOURCES = genotpurl.c base32.c
 CLEANFILES = *.la *.lo *.o *.so *.slo .libs/*
-EXTRA_DIST = CHANGES LICENSE mod_authn_otp.c genotpurl.c users.sample 
otptool.1 genotpurl.1 base32.c
+EXTRA_DIST = CHANGES LICENSE mod_authn_otp.c genotpurl.c users.sample 
otptool.1 otplock.1 genotpurl.1 base32.c
 all: config.h
        $(MAKE) $(AM_MAKEFLAGS) all-am
 
@@ -435,6 +440,10 @@
        @rm -f genotpurl$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(genotpurl_OBJECTS) $(genotpurl_LDADD) $(LIBS)
 
+otplock$(EXEEXT): $(otplock_OBJECTS) $(otplock_DEPENDENCIES) 
$(EXTRA_otplock_DEPENDENCIES) 
+       @rm -f otplock$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(otplock_OBJECTS) $(otplock_LDADD) $(LIBS)
+
 otptool$(EXEEXT): $(otptool_OBJECTS) $(otptool_DEPENDENCIES) 
$(EXTRA_otptool_DEPENDENCIES) 
        @rm -f otptool$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(otptool_OBJECTS) $(otptool_LDADD) $(LIBS)
@@ -449,6 +458,7 @@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/genotpurl.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hotp.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/motp.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/otplock.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/otptool.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/phex.Po@am__quote@
 
@@ -880,6 +890,7 @@
 install-exec-hook:
                test -z "$(STRIP)" || $(STRIP) $(DESTDIR)`$(APXS) -q 
LIBEXECDIR`/mod_authn_otp.so
                test -z "$(STRIP)" || $(STRIP) $(DESTDIR)$(bindir)/otptool
+               test -z "$(STRIP)" || $(STRIP) $(DESTDIR)$(bindir)/otplock
                test -z "$(STRIP)" || $(STRIP) $(DESTDIR)$(bindir)/genotpurl
 
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mod_authn_otp-1.1.10/aclocal.m4 
new/mod_authn_otp-1.1.11/aclocal.m4
--- old/mod_authn_otp-1.1.10/aclocal.m4 2022-05-04 16:53:30.000000000 +0200
+++ new/mod_authn_otp-1.1.11/aclocal.m4 2024-06-27 16:14:38.000000000 +0200
@@ -734,35 +734,6 @@
 fi
 ])
 
-#  -*- Autoconf -*-
-# Obsolete and "removed" macros, that must however still report explicit
-# error messages when used, to smooth transition.
-#
-# Copyright (C) 1996-2017 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.
-
-AC_DEFUN([AM_CONFIG_HEADER],
-[AC_DIAGNOSE([obsolete],
-['$0': this macro is obsolete.
-You should use the 'AC][_CONFIG_HEADERS' macro instead.])dnl
-AC_CONFIG_HEADERS($@)])
-
-AC_DEFUN([AM_PROG_CC_STDC],
-[AC_PROG_CC
-am_cv_prog_cc_stdc=$ac_cv_prog_cc_stdc
-AC_DIAGNOSE([obsolete],
-['$0': this macro is obsolete.
-You should simply use the 'AC][_PROG_CC' macro instead.
-Also, your code should no longer depend upon 'am_cv_prog_cc_stdc',
-but upon 'ac_cv_prog_cc_stdc'.])])
-
-AC_DEFUN([AM_C_PROTOTYPES],
-         [AC_FATAL([automatic de-ANSI-fication support has been removed])])
-AU_DEFUN([fp_C_PROTOTYPES], [AM_C_PROTOTYPES])
-
 # Helper functions for option handling.                     -*- Autoconf -*-
 
 # Copyright (C) 2001-2017 Free Software Foundation, Inc.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mod_authn_otp-1.1.10/config.h.in 
new/mod_authn_otp-1.1.11/config.h.in
--- old/mod_authn_otp-1.1.10/config.h.in        2022-05-04 16:53:30.000000000 
+0200
+++ new/mod_authn_otp-1.1.11/config.h.in        2024-06-27 16:14:38.000000000 
+0200
@@ -1,5 +1,11 @@
 /* config.h.in.  Generated from configure.ac by autoheader.  */
 
+/* Define to 1 if you have the <apr-1.0/apr_file_io.h> header file. */
+#undef HAVE_APR_1_0_APR_FILE_IO_H
+
+/* Define to 1 if you have the <apr-1/apr_file_io.h> header file. */
+#undef HAVE_APR_1_APR_FILE_IO_H
+
 /* Define to 1 if you have the <ctype.h> header file. */
 #undef HAVE_CTYPE_H
 
@@ -12,6 +18,9 @@
 /* Define to 1 if you have the <inttypes.h> header file. */
 #undef HAVE_INTTYPES_H
 
+/* Define to 1 if you have the `apr-1' library (-lapr-1). */
+#undef HAVE_LIBAPR_1
+
 /* Define to 1 if you have the `crypto' library (-lcrypto). */
 #undef HAVE_LIBCRYPTO
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mod_authn_otp-1.1.10/configure 
new/mod_authn_otp-1.1.11/configure
--- old/mod_authn_otp-1.1.10/configure  2022-05-04 16:53:31.000000000 +0200
+++ new/mod_authn_otp-1.1.11/configure  2024-06-27 16:14:39.000000000 +0200
@@ -1,6 +1,6 @@
 #! /bin/sh
 # Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.69 for mod_authn_otp Apache2 authentication 
module supporting one-time passwords 1.1.10.
+# Generated by GNU Autoconf 2.69 for mod_authn_otp Apache2 authentication 
module supporting one-time passwords 1.1.11.
 #
 # Report bugs to <https://github.com/archiecobbs/mod-authn-otp>.
 #
@@ -580,8 +580,8 @@
 # Identity of this package.
 PACKAGE_NAME='mod_authn_otp Apache2 authentication module supporting one-time 
passwords'
 PACKAGE_TARNAME='mod_authn_otp'
-PACKAGE_VERSION='1.1.10'
-PACKAGE_STRING='mod_authn_otp Apache2 authentication module supporting 
one-time passwords 1.1.10'
+PACKAGE_VERSION='1.1.11'
+PACKAGE_STRING='mod_authn_otp Apache2 authentication module supporting 
one-time passwords 1.1.11'
 PACKAGE_BUGREPORT='https://github.com/archiecobbs/mod-authn-otp'
 PACKAGE_URL=''
 
@@ -1271,7 +1271,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 mod_authn_otp Apache2 authentication module supporting 
one-time passwords 1.1.10 to adapt to many kinds of systems.
+\`configure' configures mod_authn_otp Apache2 authentication module supporting 
one-time passwords 1.1.11 to adapt to many kinds of systems.
 
 Usage: $0 [OPTION]... [VAR=VALUE]...
 
@@ -1337,7 +1337,7 @@
 
 if test -n "$ac_init_help"; then
   case $ac_init_help in
-     short | recursive ) echo "Configuration of mod_authn_otp Apache2 
authentication module supporting one-time passwords 1.1.10:";;
+     short | recursive ) echo "Configuration of mod_authn_otp Apache2 
authentication module supporting one-time passwords 1.1.11:";;
    esac
   cat <<\_ACEOF
 
@@ -1429,7 +1429,7 @@
 test -n "$ac_init_help" && exit $ac_status
 if $ac_init_version; then
   cat <<\_ACEOF
-mod_authn_otp Apache2 authentication module supporting one-time passwords 
configure 1.1.10
+mod_authn_otp Apache2 authentication module supporting one-time passwords 
configure 1.1.11
 generated by GNU Autoconf 2.69
 
 Copyright (C) 2012 Free Software Foundation, Inc.
@@ -1631,48 +1631,6 @@
 
 } # ac_fn_c_try_cpp
 
-# ac_fn_c_try_run LINENO
-# ----------------------
-# Try to link conftest.$ac_ext, and return whether this succeeded. Assumes
-# that executables *can* be run.
-ac_fn_c_try_run ()
-{
-  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
-  if { { ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
-  (eval "$ac_link") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; } && { ac_try='./conftest$ac_exeext'
-  { { case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
-  (eval "$ac_try") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }; }; then :
-  ac_retval=0
-else
-  $as_echo "$as_me: program exited with status $ac_status" >&5
-       $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-       ac_retval=$ac_status
-fi
-  rm -rf conftest.dSYM conftest_ipa8_conftest.oo
-  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
-  as_fn_set_status $ac_retval
-
-} # ac_fn_c_try_run
-
 # ac_fn_c_check_header_mongrel LINENO HEADER VAR INCLUDES
 # -------------------------------------------------------
 # Tests whether HEADER exists, giving a warning if it cannot be compiled using
@@ -1764,6 +1722,48 @@
 
 } # ac_fn_c_check_header_mongrel
 
+# ac_fn_c_try_run LINENO
+# ----------------------
+# Try to link conftest.$ac_ext, and return whether this succeeded. Assumes
+# that executables *can* be run.
+ac_fn_c_try_run ()
+{
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  if { { ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_link") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; } && { ac_try='./conftest$ac_exeext'
+  { { case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_try") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; }; then :
+  ac_retval=0
+else
+  $as_echo "$as_me: program exited with status $ac_status" >&5
+       $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+       ac_retval=$ac_status
+fi
+  rm -rf conftest.dSYM conftest_ipa8_conftest.oo
+  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+  as_fn_set_status $ac_retval
+
+} # ac_fn_c_try_run
+
 # ac_fn_c_check_header_compile LINENO HEADER VAR INCLUDES
 # -------------------------------------------------------
 # Tests whether HEADER exists and can be compiled using the include files in
@@ -1798,7 +1798,7 @@
 This file contains any messages produced by compilers while
 running configure, to aid debugging if configure makes a mistake.
 
-It was created by mod_authn_otp Apache2 authentication module supporting 
one-time passwords $as_me 1.1.10, which was
+It was created by mod_authn_otp Apache2 authentication module supporting 
one-time passwords $as_me 1.1.11, which was
 generated by GNU Autoconf 2.69.  Invocation command line was
 
   $ $0 $@
@@ -2661,7 +2661,7 @@
 
 # Define the identity of the package.
  PACKAGE='mod_authn_otp'
- VERSION='1.1.10'
+ VERSION='1.1.11'
 
 
 cat >>confdefs.h <<_ACEOF
@@ -4056,6 +4056,53 @@
   as_fn_error $? "required library libcrypto missing" "$LINENO" 5
 fi
 
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for apr_file_lock in 
-lapr-1" >&5
+$as_echo_n "checking for apr_file_lock in -lapr-1... " >&6; }
+if ${ac_cv_lib_apr_1_apr_file_lock+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lapr-1  $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char apr_file_lock ();
+int
+main ()
+{
+return apr_file_lock ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_lib_apr_1_apr_file_lock=yes
+else
+  ac_cv_lib_apr_1_apr_file_lock=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: 
$ac_cv_lib_apr_1_apr_file_lock" >&5
+$as_echo "$ac_cv_lib_apr_1_apr_file_lock" >&6; }
+if test "x$ac_cv_lib_apr_1_apr_file_lock" = xyes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_LIBAPR_1 1
+_ACEOF
+
+  LIBS="-lapr-1 $LIBS"
+
+else
+  as_fn_error $? "required library libapr missing" "$LINENO" 5
+fi
+
 
 # Check for optional functions
 for ac_func in strptime
@@ -4495,6 +4542,30 @@
 
 done
 
+for ac_header in apr-1/apr_file_io.h
+do :
+  ac_fn_c_check_header_mongrel "$LINENO" "apr-1/apr_file_io.h" 
"ac_cv_header_apr_1_apr_file_io_h" "$ac_includes_default"
+if test "x$ac_cv_header_apr_1_apr_file_io_h" = xyes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_APR_1_APR_FILE_IO_H 1
+_ACEOF
+
+fi
+
+done
+
+for ac_header in apr-1.0/apr_file_io.h
+do :
+  ac_fn_c_check_header_mongrel "$LINENO" "apr-1.0/apr_file_io.h" 
"ac_cv_header_apr_1_0_apr_file_io_h" "$ac_includes_default"
+if test "x$ac_cv_header_apr_1_0_apr_file_io_h" = xyes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_APR_1_0_APR_FILE_IO_H 1
+_ACEOF
+
+fi
+
+done
+
 
 # Command line flags
 # Check whether --enable-Werror was given.
@@ -4604,6 +4675,7 @@
 
 ac_libobjs=
 ac_ltlibobjs=
+U=
 for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue
   # 1. Remove the extension, and $U if already installed.
   ac_script='s/\$U\././;s/\.o$//;s/\.obj$//'
@@ -5039,7 +5111,7 @@
 # report actual input values of CONFIG_FILES etc. instead of their
 # values after options handling.
 ac_log="
-This file was extended by mod_authn_otp Apache2 authentication module 
supporting one-time passwords $as_me 1.1.10, which was
+This file was extended by mod_authn_otp Apache2 authentication module 
supporting one-time passwords $as_me 1.1.11, which was
 generated by GNU Autoconf 2.69.  Invocation command line was
 
   CONFIG_FILES    = $CONFIG_FILES
@@ -5105,7 +5177,7 @@
 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; 
s/[\\""\`\$]/\\\\&/g'`"
 ac_cs_version="\\
-mod_authn_otp Apache2 authentication module supporting one-time passwords 
config.status 1.1.10
+mod_authn_otp Apache2 authentication module supporting one-time passwords 
config.status 1.1.11
 configured by $0, generated by GNU Autoconf 2.69,
   with options \\"\$ac_cs_config\\"
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mod_authn_otp-1.1.10/configure.ac 
new/mod_authn_otp-1.1.11/configure.ac
--- old/mod_authn_otp-1.1.10/configure.ac       2022-05-04 16:51:08.000000000 
+0200
+++ new/mod_authn_otp-1.1.11/configure.ac       2024-06-27 16:13:00.000000000 
+0200
@@ -2,7 +2,7 @@
 #
 # mod_authn_otp - Apache module for one-time password authentication
 #
-# Copyright 2009 Archie L. Cobbs <[email protected]>
+# Copyright 2009 Archie L. Cobbs <[email protected]>
 #
 # Licensed under the Apache License, Version 2.0 (the "License");
 # you may not use this file except in compliance with the License.
@@ -17,7 +17,7 @@
 # limitations under the License.
 #
 
-AC_INIT([mod_authn_otp Apache2 authentication module supporting one-time 
passwords], [1.1.10], [https://github.com/archiecobbs/mod-authn-otp], 
[mod_authn_otp])
+AC_INIT([mod_authn_otp Apache2 authentication module supporting one-time 
passwords], [1.1.11], [https://github.com/archiecobbs/mod-authn-otp], 
[mod_authn_otp])
 AC_CONFIG_AUX_DIR(scripts)
 AM_INIT_AUTOMAKE
 dnl AM_MAINTAINER_MODE
@@ -51,25 +51,28 @@
 # Check for required libraries
 AC_CHECK_LIB(crypto, EVP_sha1,,
        [AC_MSG_ERROR([required library libcrypto missing])])
+AC_CHECK_LIB(apr-1, apr_file_lock,,
+       [AC_MSG_ERROR([required library libapr missing])])
 
 # Check for optional functions
 AC_CHECK_FUNCS(strptime)
 
 # Check for required header files
-AC_HEADER_STDC
 AC_CHECK_HEADERS(ctype.h errno.h openssl/evp.h openssl/hmac.h openssl/md5.h 
stdio.h string.h time.h unistd.h, [],
        [AC_MSG_ERROR([required header file '$ac_header' not found])])
 AC_CHECK_HEADERS(err.h, [], [])
+AC_CHECK_HEADERS(apr-1/apr_file_io.h)
+AC_CHECK_HEADERS(apr-1.0/apr_file_io.h)
 
 # Command line flags
 AC_ARG_ENABLE(Werror,
-    AC_HELP_STRING([--enable-Werror],
+    AS_HELP_STRING([--enable-Werror],
         [enable compilation with -Werror flag (default NO)]),
     [test x"$enableval" = "xyes" && CFLAGS="${CFLAGS} -Werror"])
 
 # Generated files
 AC_CONFIG_FILES(Makefile)
-AM_CONFIG_HEADER(config.h)
+AC_CONFIG_HEADERS(config.h)
 
 # Go
 AC_OUTPUT
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mod_authn_otp-1.1.10/errinc.h 
new/mod_authn_otp-1.1.11/errinc.h
--- old/mod_authn_otp-1.1.10/errinc.h   2018-07-22 04:27:53.000000000 +0200
+++ new/mod_authn_otp-1.1.11/errinc.h   2023-01-07 18:43:03.000000000 +0100
@@ -1,6 +1,6 @@
 
 /*
- * Copyright 2009 Archie L. Cobbs <[email protected]>
+ * Copyright 2009 Archie L. Cobbs <[email protected]>
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mod_authn_otp-1.1.10/genotpurl.1 
new/mod_authn_otp-1.1.11/genotpurl.1
--- old/mod_authn_otp-1.1.10/genotpurl.1        2020-02-22 21:55:37.000000000 
+0100
+++ new/mod_authn_otp-1.1.11/genotpurl.1        2023-01-07 18:43:03.000000000 
+0100
@@ -2,7 +2,7 @@
 .\"
 .\" genotpurl - Generate Google Authenticator URLs
 .\"
-.\" Copyright 2009 Archie L. Cobbs <[email protected]>
+.\" Copyright 2009 Archie L. Cobbs <[email protected]>
 .\"
 .\" Licensed under the Apache License, Version 2.0 (the "License");
 .\" you may not use this file except in compliance with the License.
@@ -38,8 +38,8 @@
 .Nm
 is a utility for generating URLs for the Google Authenticator cell phone app, 
which
 generates one-time passwords compatible with the HOTP/OATH algorithm defined 
by RFC 4226.
-When such and URL is clicked on a cell phone, the token is automatically 
installed
-into the Google Authenticator app. This is a convenient way to deploy such 
tokens.
+When an URL is processed by the Google Authenticator app, the corresponding 
secure token
+is automatically installed into the app.
 .Pp
 The
 .Ar issuer
@@ -54,7 +54,9 @@
 .Ar key
 is given,
 .Nm
-generates a random key and prints it to standard output.
+generates a random key and prints it to standard error;
+this key must then be installed into the server application that verifies the 
one-time passwords
+and associated with the user who will be using the secure token.
 .Pp
 The
 .Fl i ,
@@ -101,7 +103,15 @@
 .Fl i
 is given.
 .El
+.Sh EXAMPLES
+.Bk -words
+To generate a new secure token and generate the corresponding QR code:
+.Pp
+genotpurl -I "Acme, Inc" -L [email protected] | qrencode -s 6 -o qrcode.png
+.Ek
 .Sh SEE ALSO
+.Xr qrencode 1
+.Pp
 .Rs
 .%T "mod_authn_otp: Apache module for one-time password authentication"
 .%O "https://github.com/archiecobbs/mod-authn-otp";
@@ -115,4 +125,4 @@
 .%O 
"https://play.google.com/store/apps/details?id=com.google.android.apps.authenticator2&hl=en_US";
 .Re
 .Sh AUTHOR
-.An Archie L. Cobbs Aq [email protected]
+.An Archie L. Cobbs Aq [email protected]
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mod_authn_otp-1.1.10/hotp.c 
new/mod_authn_otp-1.1.11/hotp.c
--- old/mod_authn_otp-1.1.10/hotp.c     2018-05-25 22:52:53.000000000 +0200
+++ new/mod_authn_otp-1.1.11/hotp.c     2023-01-07 18:43:03.000000000 +0100
@@ -2,7 +2,7 @@
 /*
  * otptool - HOTP/OATH one-time password utility
  *
- * Copyright 2009 Archie L. Cobbs <[email protected]>
+ * Copyright 2009 Archie L. Cobbs <[email protected]>
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mod_authn_otp-1.1.10/mod_authn_otp.c 
new/mod_authn_otp-1.1.11/mod_authn_otp.c
--- old/mod_authn_otp-1.1.10/mod_authn_otp.c    2018-05-25 22:58:12.000000000 
+0200
+++ new/mod_authn_otp-1.1.11/mod_authn_otp.c    2023-01-07 18:43:03.000000000 
+0100
@@ -2,7 +2,7 @@
 /*
  * mod_authn_otp - Apache module for one-time password authentication
  *
- * Copyright 2009 Archie L. Cobbs <[email protected]>
+ * Copyright 2009 Archie L. Cobbs <[email protected]>
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mod_authn_otp-1.1.10/motp.c 
new/mod_authn_otp-1.1.11/motp.c
--- old/mod_authn_otp-1.1.10/motp.c     2018-05-25 22:52:53.000000000 +0200
+++ new/mod_authn_otp-1.1.11/motp.c     2023-01-07 18:43:03.000000000 +0100
@@ -2,7 +2,7 @@
 /*
  * otptool - HOTP/OATH one-time password utility
  *
- * Copyright 2009 Archie L. Cobbs <[email protected]>
+ * Copyright 2009 Archie L. Cobbs <[email protected]>
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mod_authn_otp-1.1.10/otplock.1 
new/mod_authn_otp-1.1.11/otplock.1
--- old/mod_authn_otp-1.1.10/otplock.1  1970-01-01 01:00:00.000000000 +0100
+++ new/mod_authn_otp-1.1.11/otplock.1  2023-01-07 20:24:52.000000000 +0100
@@ -0,0 +1,110 @@
+.\"  -*- nroff -*-
+.\"
+.\" otplock - Apache mod_authn_otp one-time users file locker
+.\"
+.\" Copyright 2023 Archie L. Cobbs <[email protected]>
+.\"
+.\" Licensed under the Apache License, Version 2.0 (the "License");
+.\" you may not use this file except in compliance with the License.
+.\" You may obtain a copy of the License at
+.\"
+.\"     http://www.apache.org/licenses/LICENSE-2.0
+.\"
+.\" Unless required by applicable law or agreed to in writing, software
+.\" distributed under the License is distributed on an "AS IS" BASIS,
+.\" WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+.\" See the License for the specific language governing permissions and
+.\" limitations under the License.
+.\"/
+.Dd January 7, 2023
+.Dt OTPLOCK 1
+.Os
+.Sh NAME
+.Nm otplock
+.Nd Apache mod_authn_otp one-time users file locker
+.Sh SYNOPSIS
+.Nm otplock
+.Bk -words
+.Ar usersfile
+.Op command ...
+.Ek
+.Pp
+.Nm otplock
+.Fl e
+.Ar usersfile
+.Pp
+.Nm otplock
+.Fl h
+.Sh DESCRIPTION
+.Nm
+is a utility for safely accessing the
+.Ar mod_authn_otp
+users file while the Apache server is running.
+.Pp
+Because the users file is dynamically read and updated during normal server 
operation,
+it's not safe to simultaneously view or edit the file in a separate process 
without locking it first.
+.Pp
+This utility implements the same locking protocol as the
+.Ar mod_authn_otp
+module.
+It holds the exclusive lock while the given
+.Ar command
+executes.
+This means that long as
+.Ar command
+executes, all server requests that require
+.Ar mod_authn_otp
+for authentication will be temporarily suspended, so command execution should 
be as brief as possible.
+.Pp
+If no
+.Ar command
+is given,
+.Nm
+simply waits until a lock can be obtained and then exits.
+.Sh OPTIONS
+.Bl -tag -width Ds
+.It Fl e
+Invoke
+.Ar $EDITOR
+with the given
+.Ar usersfile .
+.Pp
+If no
+.Ar $EDITOR
+environment variable is defined,
+.Xr vim 1
+is used.
+.It Fl h
+Print the usage message and exit successfully.
+.El
+.Sh RETURN VALUE
+.Nm
+exits with one of the following return values:
+.Bl -tag -width xxx
+.It 0
+The users file was successfully locked, and either no
+.Ar command
+was given, or the command exited normally.
+.It N
+The given
+.Ar command
+executed but exited with non-zero exit value
+.Ar N .
+.It 85
+.Nm
+was invoked with invalid command line flags or parameters.
+.It 86
+A system error occurred while either locking the file or launching
+.Ar command .
+.It 87
+The given
+.Ar command
+executed but terminated by catching a signal.
+.El
+.Sh SEE ALSO
+.Rs
+.%T "mod_authn_otp: Apache module for one-time password authentication"
+.%O "https://github.com/archiecobbs/mod-authn-otp";
+.Re
+.Sh AUTHOR
+.An Archie L. Cobbs Aq [email protected]
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mod_authn_otp-1.1.10/otplock.c 
new/mod_authn_otp-1.1.11/otplock.c
--- old/mod_authn_otp-1.1.10/otplock.c  1970-01-01 01:00:00.000000000 +0100
+++ new/mod_authn_otp-1.1.11/otplock.c  2024-06-27 16:01:03.000000000 +0200
@@ -0,0 +1,202 @@
+
+/*
+ * otplock - Apache mod_authn_otp one-time users file locker
+ *
+ * Copyright 2023 Archie L. Cobbs <[email protected]>
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include "otplock.h"
+#include "config.h"
+
+#if HAVE_APR_1_APR_FILE_IO_H
+#include <apr-1/apr_file_io.h>
+#include <apr-1/apr_lib.h>
+#include <apr-1/apr_strings.h>
+#include <apr-1/apr_thread_proc.h>
+#elif HAVE_APR_1_0_APR_FILE_IO_H
+#include <apr-1.0/apr_file_io.h>
+#include <apr-1.0/apr_lib.h>
+#include <apr-1.0/apr_strings.h>
+#include <apr-1.0/apr_thread_proc.h>
+#else
+#error "libapr header files not found"
+#endif
+
+#define LOCKFILE_SUFFIX ".lock"
+#define DEFAULT_EDITOR  "vim"
+
+extern const char *const *environ;
+
+static void usage(void);
+
+int
+main(int argc, const char *const *argv)
+{
+    char lockfile[APR_PATH_MAX];
+    const char *usersfile;
+    const char *editcmd[3];
+    char errbuf[256];
+    apr_pool_t *pool;
+    apr_file_t *handle = NULL;
+    apr_status_t status;
+    int edit = 0;
+    int ch;
+    int r;
+
+    // Initialize APR
+       if ((status = apr_app_initialize(&argc, &argv, &environ)) != 
APR_SUCCESS) {
+        warnx("%s: %s", "apr_app_initialize", apr_strerror(status, errbuf, 
sizeof(errbuf)));
+        r = EXIT_SYSTEM_ERROR;
+        goto out0;
+    }
+       if ((status = apr_pool_create(&pool, NULL)) != APR_SUCCESS) {
+        warnx("%s: %s", "apr_pool_create", apr_strerror(status, errbuf, 
sizeof(errbuf)));
+        r = EXIT_SYSTEM_ERROR;
+        goto out1;
+    }
+
+    // Parse command line
+    while ((ch = getopt(argc, (char **)(intptr_t)argv, "eh")) != -1) {
+        switch (ch) {
+        case 'e':
+            edit = 1;
+            break;
+        case 'h':
+            usage();
+            r = 0;
+            goto out2;
+        default:
+            usage();
+            r = EXIT_USAGE_ERROR;
+            goto out2;
+        }
+    }
+    argc -= optind;
+    argv += optind;
+    switch (argc) {
+    case 0:
+        usage();
+        r = EXIT_USAGE_ERROR;
+        goto out2;
+    default:
+        argc--;
+        usersfile = *argv++;
+        break;
+    }
+
+    // Handle "-e" flag
+    if (edit) {
+        const char *const *ev;
+
+        if (argc > 0) {
+            r = EXIT_USAGE_ERROR;
+            goto out2;
+        }
+        editcmd[0] = DEFAULT_EDITOR;
+        for (ev = environ; *ev != NULL; ev++) {
+            if (strncmp(*ev, "EDITOR=", 7) == 0) {
+                editcmd[0] = *ev + 7;
+                break;
+            }
+        }
+        editcmd[1] = usersfile;
+        editcmd[2] = NULL;
+        argv = editcmd;
+        argc = 2;
+    }
+
+    // Open the lock file
+    apr_snprintf(lockfile, sizeof(lockfile), "%s%s", usersfile, 
LOCKFILE_SUFFIX);
+    if ((status = apr_file_open(&handle, lockfile, 
APR_WRITE|APR_CREATE|APR_TRUNCATE, APR_UREAD|APR_UWRITE, pool)) != APR_SUCCESS) 
{
+        warnx("can't open \"%s\": %s", lockfile, apr_strerror(status, errbuf, 
sizeof(errbuf)));
+        r = EXIT_SYSTEM_ERROR;
+        goto out2;
+    }
+
+    // Lock the lock file
+    if ((status = apr_file_lock(handle, APR_FLOCK_EXCLUSIVE)) != APR_SUCCESS) {
+        warnx("can't lock \"%s\": %s", lockfile, apr_strerror(status, errbuf, 
sizeof(errbuf)));
+        r = EXIT_SYSTEM_ERROR;
+        goto out3;
+    }
+
+    // Execute command, if any
+    if (*argv != NULL) {
+        apr_procattr_t *pattr;
+        apr_exit_why_e why;
+        apr_proc_t proc;
+        int rval;
+
+        if ((status = apr_procattr_create(&pattr, pool)) != APR_SUCCESS) {
+            warnx("%s: %s", "apr_procattr_create", apr_strerror(status, 
errbuf, sizeof(errbuf)));
+            r = EXIT_SYSTEM_ERROR;
+            goto out4;
+        }
+        if ((status = apr_procattr_cmdtype_set(pattr, APR_SHELLCMD_ENV)) != 
APR_SUCCESS) {
+            warnx("%s: %s", "apr_procattr_cmdtype_set", apr_strerror(status, 
errbuf, sizeof(errbuf)));
+            r = EXIT_SYSTEM_ERROR;
+            goto out4;
+        }
+        if ((status = apr_proc_create(&proc, *argv, argv, environ, pattr, 
pool)) != APR_SUCCESS) {
+            warnx("%s: %s", "apr_proc_create", apr_strerror(status, errbuf, 
sizeof(errbuf)));
+            r = EXIT_SYSTEM_ERROR;
+            goto out4;
+        }
+        if ((status = apr_proc_wait(&proc, &rval, &why, APR_WAIT)) != 
APR_CHILD_DONE) {
+            warnx("%s: %s", "apr_proc_wait", apr_strerror(status, errbuf, 
sizeof(errbuf)));
+            r = EXIT_SYSTEM_ERROR;
+            goto out4;
+        }
+        switch (why) {
+        case APR_PROC_EXIT:
+            if ((r = rval) == APR_ENOTIMPL)
+                r = 0;
+            break;
+        case APR_PROC_SIGNAL:
+        case APR_PROC_SIGNAL_CORE:
+            r = EXIT_CAUGHT_SIGNAL;
+            break;
+        default:
+            warnx("%s: %s", "apr_proc_wait", "unknown 'why' code");
+            r = EXIT_SYSTEM_ERROR;
+            break;
+        }
+    } else
+        r = 0;
+
+    // Clean up and exit
+out4:
+    apr_file_unlock(handle);
+out3:
+    apr_file_close(handle);
+out2:
+    apr_pool_destroy(pool);
+out1:
+    apr_terminate();
+out0:
+    return r;
+}
+
+static void
+usage()
+{
+    fprintf(stderr, "Usage:\n");
+    fprintf(stderr, "    %s usersfile [ command ... ]\n", PROG_NAME);
+    fprintf(stderr, "    %s -e usersfile\n", PROG_NAME);
+    fprintf(stderr, "    %s -h\n", PROG_NAME);
+    fprintf(stderr, "Options:\n");
+    fprintf(stderr, "    -e\tInvoke $EDITOR with usersfile\n");
+    fprintf(stderr, "    -h\tDisplay this usage message\n");
+}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mod_authn_otp-1.1.10/otplock.h 
new/mod_authn_otp-1.1.11/otplock.h
--- old/mod_authn_otp-1.1.10/otplock.h  1970-01-01 01:00:00.000000000 +0100
+++ new/mod_authn_otp-1.1.11/otplock.h  2023-01-07 19:41:28.000000000 +0100
@@ -0,0 +1,38 @@
+
+/*
+ * otplock - Apache mod_authn_otp one-time users file locker
+ *
+ * Copyright 2023 Archie L. Cobbs <[email protected]>
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include <sys/types.h>
+
+#include <ctype.h>
+#include <errno.h>
+#include <stdio.h>
+#include <stdint.h>
+#include <string.h>
+#include <time.h>
+#include <unistd.h>
+
+#include "errinc.h"
+
+/* Program name */
+#define PROG_NAME                   "otplock"
+
+/* Error exit values */
+#define EXIT_USAGE_ERROR            85          /* Incorrect command line 
usage */
+#define EXIT_SYSTEM_ERROR           86          /* Could not open file, etc. */
+#define EXIT_CAUGHT_SIGNAL          87
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mod_authn_otp-1.1.10/otptool.1 
new/mod_authn_otp-1.1.11/otptool.1
--- old/mod_authn_otp-1.1.10/otptool.1  2018-07-27 15:55:01.000000000 +0200
+++ new/mod_authn_otp-1.1.11/otptool.1  2023-01-07 18:43:03.000000000 +0100
@@ -2,7 +2,7 @@
 .\"
 .\" otptool - HOTP/OATH one-time password utility
 .\"
-.\" Copyright 2009 Archie L. Cobbs <[email protected]>
+.\" Copyright 2009 Archie L. Cobbs <[email protected]>
 .\"
 .\" Licensed under the Apache License, Version 2.0 (the "License");
 .\" you may not use this file except in compliance with the License.
@@ -177,4 +177,4 @@
 .%O "http://motp.sourceforge.net/";
 .Re
 .Sh AUTHOR
-.An Archie L. Cobbs Aq [email protected]
+.An Archie L. Cobbs Aq [email protected]
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mod_authn_otp-1.1.10/otptool.c 
new/mod_authn_otp-1.1.11/otptool.c
--- old/mod_authn_otp-1.1.10/otptool.c  2018-07-27 15:57:13.000000000 +0200
+++ new/mod_authn_otp-1.1.11/otptool.c  2023-01-07 18:43:03.000000000 +0100
@@ -2,7 +2,7 @@
 /*
  * otptool - HOTP/OATH one-time password utility
  *
- * Copyright 2009 Archie L. Cobbs <[email protected]>
+ * Copyright 2009 Archie L. Cobbs <[email protected]>
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mod_authn_otp-1.1.10/otptool.h 
new/mod_authn_otp-1.1.11/otptool.h
--- old/mod_authn_otp-1.1.10/otptool.h  2018-07-22 04:26:56.000000000 +0200
+++ new/mod_authn_otp-1.1.11/otptool.h  2023-01-07 18:43:03.000000000 +0100
@@ -2,7 +2,7 @@
 /*
  * otptool - HOTP/OATH one-time password utility
  *
- * Copyright 2009 Archie L. Cobbs <[email protected]>
+ * Copyright 2009 Archie L. Cobbs <[email protected]>
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mod_authn_otp-1.1.10/phex.c 
new/mod_authn_otp-1.1.11/phex.c
--- old/mod_authn_otp-1.1.10/phex.c     2018-05-25 22:52:53.000000000 +0200
+++ new/mod_authn_otp-1.1.11/phex.c     2023-01-07 18:43:03.000000000 +0100
@@ -2,7 +2,7 @@
 /*
  * otptool - HOTP/OATH one-time password utility
  *
- * Copyright 2009 Archie L. Cobbs <[email protected]>
+ * Copyright 2009 Archie L. Cobbs <[email protected]>
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.

Reply via email to