Compare commits

...

2 Commits

Author SHA1 Message Date
Chris Hofstaedtler
e8b8d7a84b New upstream version 4.16.0 2024-06-25 20:09:23 +02:00
Chris Hofstaedtler
0fda4df4f1 New upstream version 4.15.2 2024-06-22 17:34:25 +02:00
10632 changed files with 381272 additions and 3143 deletions

View File

@@ -15,3 +15,4 @@ SUBDIRS += man
endif
CLEANFILES = man/8.out man/po/remove-potcdate.* man/*/login.defs.d man/*/*.mo
EXTRA_DIST = tests/

View File

@@ -389,7 +389,7 @@ target_alias = @target_alias@
top_build_prefix = @top_build_prefix@
top_builddir = @top_builddir@
top_srcdir = @top_srcdir@
EXTRA_DIST = NEWS README
EXTRA_DIST = tests/
SUBDIRS = lib $(am__append_1) src po contrib doc etc tests/unit \
$(am__append_2)
CLEANFILES = man/8.out man/po/remove-potcdate.* man/*/login.defs.d man/*/*.mo

View File

@@ -341,12 +341,6 @@
/* Path to passwd program. */
#undef PASSWD_PROGRAM
/* Define if login should support the -r flag for rlogind. */
#undef RLOGIN
/* Define to the ruserok() "success" return value (0 or 1). */
#undef RUSEROK
/* Define to support the shadow group file. */
#undef SHADOWGRP

582
configure vendored
View File

@@ -1,6 +1,6 @@
#! /bin/sh
# Guess values for system-dependent variables and create Makefiles.
# Generated by GNU Autoconf 2.71 for shadow 4.15.1.
# Generated by GNU Autoconf 2.71 for shadow 4.16.0.
#
# Report bugs to <pkg-shadow-devel@lists.alioth.debian.org>.
#
@@ -621,8 +621,8 @@ MAKEFLAGS=
# Identity of this package.
PACKAGE_NAME='shadow'
PACKAGE_TARNAME='shadow'
PACKAGE_VERSION='4.15.1'
PACKAGE_STRING='shadow 4.15.1'
PACKAGE_VERSION='4.16.0'
PACKAGE_STRING='shadow 4.16.0'
PACKAGE_BUGREPORT='pkg-shadow-devel@lists.alioth.debian.org'
PACKAGE_URL='https://github.com/shadow-maint/shadow'
@@ -681,10 +681,6 @@ GMSGFMT
MSGFMT
GETTEXT_MACRO_VERSION
USE_NLS
HAVE_CMOCKA_FALSE
HAVE_CMOCKA_TRUE
CMOCKA_LIBS
CMOCKA_CFLAGS
LIBMD
LIBSKEY
capcmd
@@ -709,9 +705,6 @@ WITH_LIBBSD_FALSE
WITH_LIBBSD_TRUE
LIBBSD_LIBS
LIBBSD_CFLAGS
PKG_CONFIG_LIBDIR
PKG_CONFIG_PATH
PKG_CONFIG
LIBBSD
LIYESCRYPT
LIBCRYPT
@@ -734,6 +727,13 @@ HAVE_VENDORDIR_TRUE
VENDORDIR
LIBECONF
ECONF_CPPFLAGS
HAVE_CMOCKA_FALSE
HAVE_CMOCKA_TRUE
CMOCKA_LIBS
CMOCKA_CFLAGS
PKG_CONFIG_LIBDIR
PKG_CONFIG_PATH
PKG_CONFIG
WITH_SU_FALSE
WITH_SU_TRUE
USE_YESCRYPT_FALSE
@@ -936,10 +936,10 @@ CPP
PKG_CONFIG
PKG_CONFIG_PATH
PKG_CONFIG_LIBDIR
LIBBSD_CFLAGS
LIBBSD_LIBS
CMOCKA_CFLAGS
CMOCKA_LIBS'
CMOCKA_LIBS
LIBBSD_CFLAGS
LIBBSD_LIBS'
# Initialize some variables set by options.
@@ -1488,7 +1488,7 @@ if test "$ac_init_help" = "long"; then
# 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 shadow 4.15.1 to adapt to many kinds of systems.
\`configure' configures shadow 4.16.0 to adapt to many kinds of systems.
Usage: $0 [OPTION]... [VAR=VALUE]...
@@ -1559,7 +1559,7 @@ fi
if test -n "$ac_init_help"; then
case $ac_init_help in
short | recursive ) echo "Configuration of shadow 4.15.1:";;
short | recursive ) echo "Configuration of shadow 4.16.0:";;
esac
cat <<\_ACEOF
@@ -1663,12 +1663,12 @@ Some influential environment variables:
directories to add to pkg-config's search path
PKG_CONFIG_LIBDIR
path overriding pkg-config's built-in search path
LIBBSD_CFLAGS
C compiler flags for LIBBSD, overriding pkg-config
LIBBSD_LIBS linker flags for LIBBSD, overriding pkg-config
CMOCKA_CFLAGS
C compiler flags for CMOCKA, overriding pkg-config
CMOCKA_LIBS linker flags for CMOCKA, overriding pkg-config
LIBBSD_CFLAGS
C compiler flags for LIBBSD, overriding pkg-config
LIBBSD_LIBS linker flags for LIBBSD, overriding pkg-config
Use these variables to override the choices made by `configure' or to help
it to find libraries and programs with nonstandard names/locations.
@@ -1738,7 +1738,7 @@ fi
test -n "$ac_init_help" && exit $ac_status
if $ac_init_version; then
cat <<\_ACEOF
shadow configure 4.15.1
shadow configure 4.16.0
generated by GNU Autoconf 2.71
Copyright (C) 2021 Free Software Foundation, Inc.
@@ -2338,7 +2338,7 @@ cat >config.log <<_ACEOF
This file contains any messages produced by compilers while
running configure, to aid debugging if configure makes a mistake.
It was created by shadow $as_me 4.15.1, which was
It was created by shadow $as_me 4.16.0, which was
generated by GNU Autoconf 2.71. Invocation command line was
$ $0$ac_configure_args_raw
@@ -3611,7 +3611,7 @@ fi
# Define the identity of the package.
PACKAGE='shadow'
VERSION='4.15.1'
VERSION='4.16.0'
printf "%s\n" "#define PACKAGE \"$PACKAGE\"" >>confdefs.h
@@ -3651,7 +3651,93 @@ AMTAR='$${TAR-tar}'
# We'll loop over all known methods to create a tar archive until one works.
_am_tools='gnutar pax cpio none'
am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -'
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking how to create a pax tar archive" >&5
printf %s "checking how to create a pax tar archive... " >&6; }
# Go ahead even if we have the value already cached. We do so because we
# need to set the values for the 'am__tar' and 'am__untar' variables.
_am_tools=${am_cv_prog_tar_pax-$_am_tools}
for _am_tool in $_am_tools; do
case $_am_tool in
gnutar)
for _am_tar in tar gnutar gtar; do
{ echo "$as_me:$LINENO: $_am_tar --version" >&5
($_am_tar --version) >&5 2>&5
ac_status=$?
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } && break
done
am__tar="$_am_tar --format=posix -chf - "'"$$tardir"'
am__tar_="$_am_tar --format=posix -chf - "'"$tardir"'
am__untar="$_am_tar -xf -"
;;
plaintar)
# Must skip GNU tar: if it does not support --format= it doesn't create
# ustar tarball either.
(tar --version) >/dev/null 2>&1 && continue
am__tar='tar chf - "$$tardir"'
am__tar_='tar chf - "$tardir"'
am__untar='tar xf -'
;;
pax)
am__tar='pax -L -x pax -w "$$tardir"'
am__tar_='pax -L -x pax -w "$tardir"'
am__untar='pax -r'
;;
cpio)
am__tar='find "$$tardir" -print | cpio -o -H pax -L'
am__tar_='find "$tardir" -print | cpio -o -H pax -L'
am__untar='cpio -i -H pax -d'
;;
none)
am__tar=false
am__tar_=false
am__untar=false
;;
esac
# If the value was cached, stop now. We just wanted to have am__tar
# and am__untar set.
test -n "${am_cv_prog_tar_pax}" && break
# tar/untar a dummy directory, and stop if the command works.
rm -rf conftest.dir
mkdir conftest.dir
echo GrepMe > conftest.dir/file
{ echo "$as_me:$LINENO: tardir=conftest.dir && eval $am__tar_ >conftest.tar" >&5
(tardir=conftest.dir && eval $am__tar_ >conftest.tar) >&5 2>&5
ac_status=$?
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); }
rm -rf conftest.dir
if test -s conftest.tar; then
{ echo "$as_me:$LINENO: $am__untar <conftest.tar" >&5
($am__untar <conftest.tar) >&5 2>&5
ac_status=$?
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); }
{ echo "$as_me:$LINENO: cat conftest.dir/file" >&5
(cat conftest.dir/file) >&5 2>&5
ac_status=$?
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); }
grep GrepMe conftest.dir/file >/dev/null 2>&1 && break
fi
done
rm -rf conftest.dir
if test ${am_cv_prog_tar_pax+y}
then :
printf %s "(cached) " >&6
else $as_nop
am_cv_prog_tar_pax=$_am_tool
fi
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_prog_tar_pax" >&5
printf "%s\n" "$am_cv_prog_tar_pax" >&6; }
@@ -3759,13 +3845,13 @@ AM_BACKSLASH='\'
ac_config_headers="$ac_config_headers config.h"
LIBSUBID_ABI_MAJOR=4
LIBSUBID_ABI_MAJOR=5
LIBSUBID_ABI_MINOR=0
LIBSUBID_ABI_MICRO=0
LIBSUBID_ABI=4.0.0
LIBSUBID_ABI=5.0.0
test "$prefix" = "NONE" && prefix="/usr"
@@ -15627,15 +15713,6 @@ printf "%s\n" "$shadow_cv_passwd_dir" >&6; }
printf "%s\n" "#define PASSWD_PROGRAM \"$shadow_cv_passwd_dir/passwd\"" >>confdefs.h
if test "$ac_cv_func_ruserok" = "yes"; then
printf "%s\n" "#define RLOGIN 1" >>confdefs.h
printf "%s\n" "#define RUSEROK 0" >>confdefs.h
fi
# Check whether --enable-shadowgrp was given.
if test ${enable_shadowgrp+y}
then :
@@ -15861,6 +15938,7 @@ printf "%s\n" "#define GROUP_NAME_MAX_LENGTH $with_group_name_max_length" >>conf
GROUP_NAME_MAX_LENGTH="$with_group_name_max_length"
if test "x$with_sha_crypt" = "xyes"; then
USE_SHA_CRYPT_TRUE=
USE_SHA_CRYPT_FALSE='#'
@@ -16005,6 +16083,218 @@ then :
fi
if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then
if test -n "$ac_tool_prefix"; then
# Extract the first word of "${ac_tool_prefix}pkg-config", so it can be a program name with args.
set dummy ${ac_tool_prefix}pkg-config; ac_word=$2
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
printf %s "checking for $ac_word... " >&6; }
if test ${ac_cv_path_PKG_CONFIG+y}
then :
printf %s "(cached) " >&6
else $as_nop
case $PKG_CONFIG in
[\\/]* | ?:[\\/]*)
ac_cv_path_PKG_CONFIG="$PKG_CONFIG" # Let the user override the test with a path.
;;
*)
as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
for as_dir in $PATH
do
IFS=$as_save_IFS
case $as_dir in #(((
'') as_dir=./ ;;
*/) ;;
*) as_dir=$as_dir/ ;;
esac
for ac_exec_ext in '' $ac_executable_extensions; do
if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
ac_cv_path_PKG_CONFIG="$as_dir$ac_word$ac_exec_ext"
printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
break 2
fi
done
done
IFS=$as_save_IFS
;;
esac
fi
PKG_CONFIG=$ac_cv_path_PKG_CONFIG
if test -n "$PKG_CONFIG"; then
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $PKG_CONFIG" >&5
printf "%s\n" "$PKG_CONFIG" >&6; }
else
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
printf "%s\n" "no" >&6; }
fi
fi
if test -z "$ac_cv_path_PKG_CONFIG"; then
ac_pt_PKG_CONFIG=$PKG_CONFIG
# Extract the first word of "pkg-config", so it can be a program name with args.
set dummy pkg-config; ac_word=$2
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
printf %s "checking for $ac_word... " >&6; }
if test ${ac_cv_path_ac_pt_PKG_CONFIG+y}
then :
printf %s "(cached) " >&6
else $as_nop
case $ac_pt_PKG_CONFIG in
[\\/]* | ?:[\\/]*)
ac_cv_path_ac_pt_PKG_CONFIG="$ac_pt_PKG_CONFIG" # Let the user override the test with a path.
;;
*)
as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
for as_dir in $PATH
do
IFS=$as_save_IFS
case $as_dir in #(((
'') as_dir=./ ;;
*/) ;;
*) as_dir=$as_dir/ ;;
esac
for ac_exec_ext in '' $ac_executable_extensions; do
if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
ac_cv_path_ac_pt_PKG_CONFIG="$as_dir$ac_word$ac_exec_ext"
printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
break 2
fi
done
done
IFS=$as_save_IFS
;;
esac
fi
ac_pt_PKG_CONFIG=$ac_cv_path_ac_pt_PKG_CONFIG
if test -n "$ac_pt_PKG_CONFIG"; then
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_pt_PKG_CONFIG" >&5
printf "%s\n" "$ac_pt_PKG_CONFIG" >&6; }
else
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
printf "%s\n" "no" >&6; }
fi
if test "x$ac_pt_PKG_CONFIG" = x; then
PKG_CONFIG=""
else
case $cross_compiling:$ac_tool_warned in
yes:)
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
ac_tool_warned=yes ;;
esac
PKG_CONFIG=$ac_pt_PKG_CONFIG
fi
else
PKG_CONFIG="$ac_cv_path_PKG_CONFIG"
fi
fi
if test -n "$PKG_CONFIG"; then
_pkg_min_version=0.9.0
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking pkg-config is at least version $_pkg_min_version" >&5
printf %s "checking pkg-config is at least version $_pkg_min_version... " >&6; }
if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; then
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
printf "%s\n" "yes" >&6; }
else
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
printf "%s\n" "no" >&6; }
PKG_CONFIG=""
fi
fi
pkg_failed=no
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for cmocka" >&5
printf %s "checking for cmocka... " >&6; }
if test -n "$CMOCKA_CFLAGS"; then
pkg_cv_CMOCKA_CFLAGS="$CMOCKA_CFLAGS"
elif test -n "$PKG_CONFIG"; then
if test -n "$PKG_CONFIG" && \
{ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"cmocka\""; } >&5
($PKG_CONFIG --exists --print-errors "cmocka") 2>&5
ac_status=$?
printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }; then
pkg_cv_CMOCKA_CFLAGS=`$PKG_CONFIG --cflags "cmocka" 2>/dev/null`
test "x$?" != "x0" && pkg_failed=yes
else
pkg_failed=yes
fi
else
pkg_failed=untried
fi
if test -n "$CMOCKA_LIBS"; then
pkg_cv_CMOCKA_LIBS="$CMOCKA_LIBS"
elif test -n "$PKG_CONFIG"; then
if test -n "$PKG_CONFIG" && \
{ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"cmocka\""; } >&5
($PKG_CONFIG --exists --print-errors "cmocka") 2>&5
ac_status=$?
printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }; then
pkg_cv_CMOCKA_LIBS=`$PKG_CONFIG --libs "cmocka" 2>/dev/null`
test "x$?" != "x0" && pkg_failed=yes
else
pkg_failed=yes
fi
else
pkg_failed=untried
fi
if test $pkg_failed = yes; then
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
printf "%s\n" "no" >&6; }
if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
_pkg_short_errors_supported=yes
else
_pkg_short_errors_supported=no
fi
if test $_pkg_short_errors_supported = yes; then
CMOCKA_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "cmocka" 2>&1`
else
CMOCKA_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "cmocka" 2>&1`
fi
# Put the nasty error message in config.log where it belongs
echo "$CMOCKA_PKG_ERRORS" >&5
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: libcmocka not found, cmocka tests will not be built" >&5
printf "%s\n" "$as_me: WARNING: libcmocka not found, cmocka tests will not be built" >&2;}
elif test $pkg_failed = untried; then
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
printf "%s\n" "no" >&6; }
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: libcmocka not found, cmocka tests will not be built" >&5
printf "%s\n" "$as_me: WARNING: libcmocka not found, cmocka tests will not be built" >&2;}
else
CMOCKA_CFLAGS=$pkg_cv_CMOCKA_CFLAGS
CMOCKA_LIBS=$pkg_cv_CMOCKA_LIBS
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
printf "%s\n" "yes" >&6; }
have_cmocka="yes"
fi
if test x$have_cmocka = xyes; then
HAVE_CMOCKA_TRUE=
HAVE_CMOCKA_FALSE='#'
else
HAVE_CMOCKA_TRUE='#'
HAVE_CMOCKA_FALSE=
fi
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for econf_readDirs in -leconf" >&5
printf %s "checking for econf_readDirs in -leconf... " >&6; }
if test ${ac_cv_lib_econf_econf_readDirs+y}
@@ -16623,137 +16913,7 @@ else $as_nop
fi
if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then
if test -n "$ac_tool_prefix"; then
# Extract the first word of "${ac_tool_prefix}pkg-config", so it can be a program name with args.
set dummy ${ac_tool_prefix}pkg-config; ac_word=$2
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
printf %s "checking for $ac_word... " >&6; }
if test ${ac_cv_path_PKG_CONFIG+y}
then :
printf %s "(cached) " >&6
else $as_nop
case $PKG_CONFIG in
[\\/]* | ?:[\\/]*)
ac_cv_path_PKG_CONFIG="$PKG_CONFIG" # Let the user override the test with a path.
;;
*)
as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
for as_dir in $PATH
do
IFS=$as_save_IFS
case $as_dir in #(((
'') as_dir=./ ;;
*/) ;;
*) as_dir=$as_dir/ ;;
esac
for ac_exec_ext in '' $ac_executable_extensions; do
if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
ac_cv_path_PKG_CONFIG="$as_dir$ac_word$ac_exec_ext"
printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
break 2
fi
done
done
IFS=$as_save_IFS
;;
esac
fi
PKG_CONFIG=$ac_cv_path_PKG_CONFIG
if test -n "$PKG_CONFIG"; then
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $PKG_CONFIG" >&5
printf "%s\n" "$PKG_CONFIG" >&6; }
else
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
printf "%s\n" "no" >&6; }
fi
fi
if test -z "$ac_cv_path_PKG_CONFIG"; then
ac_pt_PKG_CONFIG=$PKG_CONFIG
# Extract the first word of "pkg-config", so it can be a program name with args.
set dummy pkg-config; ac_word=$2
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
printf %s "checking for $ac_word... " >&6; }
if test ${ac_cv_path_ac_pt_PKG_CONFIG+y}
then :
printf %s "(cached) " >&6
else $as_nop
case $ac_pt_PKG_CONFIG in
[\\/]* | ?:[\\/]*)
ac_cv_path_ac_pt_PKG_CONFIG="$ac_pt_PKG_CONFIG" # Let the user override the test with a path.
;;
*)
as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
for as_dir in $PATH
do
IFS=$as_save_IFS
case $as_dir in #(((
'') as_dir=./ ;;
*/) ;;
*) as_dir=$as_dir/ ;;
esac
for ac_exec_ext in '' $ac_executable_extensions; do
if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
ac_cv_path_ac_pt_PKG_CONFIG="$as_dir$ac_word$ac_exec_ext"
printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
break 2
fi
done
done
IFS=$as_save_IFS
;;
esac
fi
ac_pt_PKG_CONFIG=$ac_cv_path_ac_pt_PKG_CONFIG
if test -n "$ac_pt_PKG_CONFIG"; then
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_pt_PKG_CONFIG" >&5
printf "%s\n" "$ac_pt_PKG_CONFIG" >&6; }
else
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
printf "%s\n" "no" >&6; }
fi
if test "x$ac_pt_PKG_CONFIG" = x; then
PKG_CONFIG=""
else
case $cross_compiling:$ac_tool_warned in
yes:)
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
ac_tool_warned=yes ;;
esac
PKG_CONFIG=$ac_pt_PKG_CONFIG
fi
else
PKG_CONFIG="$ac_cv_path_PKG_CONFIG"
fi
fi
if test -n "$PKG_CONFIG"; then
_pkg_min_version=0.9.0
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking pkg-config is at least version $_pkg_min_version" >&5
printf %s "checking pkg-config is at least version $_pkg_min_version... " >&6; }
if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; then
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
printf "%s\n" "yes" >&6; }
else
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
printf "%s\n" "no" >&6; }
PKG_CONFIG=""
fi
fi
if test "$ac_cv_search_readpassphrase" = "-lbsd"
if test "$ac_cv_search_readpassphrase" = "-lbsd"
then :
@@ -17957,88 +18117,6 @@ fi
rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
fi
pkg_failed=no
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for cmocka" >&5
printf %s "checking for cmocka... " >&6; }
if test -n "$CMOCKA_CFLAGS"; then
pkg_cv_CMOCKA_CFLAGS="$CMOCKA_CFLAGS"
elif test -n "$PKG_CONFIG"; then
if test -n "$PKG_CONFIG" && \
{ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"cmocka\""; } >&5
($PKG_CONFIG --exists --print-errors "cmocka") 2>&5
ac_status=$?
printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }; then
pkg_cv_CMOCKA_CFLAGS=`$PKG_CONFIG --cflags "cmocka" 2>/dev/null`
test "x$?" != "x0" && pkg_failed=yes
else
pkg_failed=yes
fi
else
pkg_failed=untried
fi
if test -n "$CMOCKA_LIBS"; then
pkg_cv_CMOCKA_LIBS="$CMOCKA_LIBS"
elif test -n "$PKG_CONFIG"; then
if test -n "$PKG_CONFIG" && \
{ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"cmocka\""; } >&5
($PKG_CONFIG --exists --print-errors "cmocka") 2>&5
ac_status=$?
printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }; then
pkg_cv_CMOCKA_LIBS=`$PKG_CONFIG --libs "cmocka" 2>/dev/null`
test "x$?" != "x0" && pkg_failed=yes
else
pkg_failed=yes
fi
else
pkg_failed=untried
fi
if test $pkg_failed = yes; then
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
printf "%s\n" "no" >&6; }
if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
_pkg_short_errors_supported=yes
else
_pkg_short_errors_supported=no
fi
if test $_pkg_short_errors_supported = yes; then
CMOCKA_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "cmocka" 2>&1`
else
CMOCKA_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "cmocka" 2>&1`
fi
# Put the nasty error message in config.log where it belongs
echo "$CMOCKA_PKG_ERRORS" >&5
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: libcmocka not found, cmocka tests will not be built" >&5
printf "%s\n" "$as_me: WARNING: libcmocka not found, cmocka tests will not be built" >&2;}
elif test $pkg_failed = untried; then
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
printf "%s\n" "no" >&6; }
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: libcmocka not found, cmocka tests will not be built" >&5
printf "%s\n" "$as_me: WARNING: libcmocka not found, cmocka tests will not be built" >&2;}
else
CMOCKA_CFLAGS=$pkg_cv_CMOCKA_CFLAGS
CMOCKA_LIBS=$pkg_cv_CMOCKA_LIBS
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
printf "%s\n" "yes" >&6; }
have_cmocka="yes"
fi
if test x$have_cmocka = xyes; then
HAVE_CMOCKA_TRUE=
HAVE_CMOCKA_FALSE='#'
else
HAVE_CMOCKA_TRUE='#'
HAVE_CMOCKA_FALSE=
fi
ac_fn_c_check_func "$LINENO" "fgetpwent_r" "ac_cv_func_fgetpwent_r"
if test "x$ac_cv_func_fgetpwent_r" = xyes
then :
@@ -20318,6 +20396,10 @@ if test -z "${WITH_SU_TRUE}" && test -z "${WITH_SU_FALSE}"; then
as_fn_error $? "conditional \"WITH_SU\" was never defined.
Usually this means the macro was only invoked conditionally." "$LINENO" 5
fi
if test -z "${HAVE_CMOCKA_TRUE}" && test -z "${HAVE_CMOCKA_FALSE}"; then
as_fn_error $? "conditional \"HAVE_CMOCKA\" was never defined.
Usually this means the macro was only invoked conditionally." "$LINENO" 5
fi
if test -z "${HAVE_VENDORDIR_TRUE}" && test -z "${HAVE_VENDORDIR_FALSE}"; then
as_fn_error $? "conditional \"HAVE_VENDORDIR\" was never defined.
Usually this means the macro was only invoked conditionally." "$LINENO" 5
@@ -20370,10 +20452,6 @@ if test -z "${FCAPS_TRUE}" && test -z "${FCAPS_FALSE}"; then
as_fn_error $? "conditional \"FCAPS\" was never defined.
Usually this means the macro was only invoked conditionally." "$LINENO" 5
fi
if test -z "${HAVE_CMOCKA_TRUE}" && test -z "${HAVE_CMOCKA_FALSE}"; then
as_fn_error $? "conditional \"HAVE_CMOCKA\" was never defined.
Usually this means the macro was only invoked conditionally." "$LINENO" 5
fi
if test -z "${USE_NLS_TRUE}" && test -z "${USE_NLS_FALSE}"; then
as_fn_error $? "conditional \"USE_NLS\" was never defined.
Usually this means the macro was only invoked conditionally." "$LINENO" 5
@@ -20768,7 +20846,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
# report actual input values of CONFIG_FILES etc. instead of their
# values after options handling.
ac_log="
This file was extended by shadow $as_me 4.15.1, which was
This file was extended by shadow $as_me 4.16.0, which was
generated by GNU Autoconf 2.71. Invocation command line was
CONFIG_FILES = $CONFIG_FILES
@@ -20837,7 +20915,7 @@ ac_cs_config_escaped=`printf "%s\n" "$ac_cs_config" | sed "s/^ //; s/'/'\\\\\\\\
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
ac_cs_config='$ac_cs_config_escaped'
ac_cs_version="\\
shadow config.status 4.15.1
shadow config.status 4.16.0
configured by $0, generated by GNU Autoconf 2.71,
with options \\"\$ac_cs_config\\"

View File

@@ -1,12 +1,12 @@
dnl Process this file with autoconf to produce a configure script.
AC_PREREQ([2.69])
m4_define([libsubid_abi_major], 4)
m4_define([libsubid_abi_major], 5)
m4_define([libsubid_abi_minor], 0)
m4_define([libsubid_abi_micro], 0)
m4_define([libsubid_abi], [libsubid_abi_major.libsubid_abi_minor.libsubid_abi_micro])
AC_INIT([shadow], [4.15.1], [pkg-shadow-devel@lists.alioth.debian.org], [],
AC_INIT([shadow], [4.16.0], [pkg-shadow-devel@lists.alioth.debian.org], [],
[https://github.com/shadow-maint/shadow])
AM_INIT_AUTOMAKE([1.11 foreign dist-xz subdir-objects])
AM_INIT_AUTOMAKE([1.11 foreign dist-xz subdir-objects tar-pax])
AC_CONFIG_MACRO_DIRS([m4])
AM_SILENT_RULES([yes])
AC_CONFIG_HEADERS([config.h])
@@ -159,13 +159,6 @@ fi])
AC_DEFINE_UNQUOTED(PASSWD_PROGRAM, "$shadow_cv_passwd_dir/passwd",
[Path to passwd program.])
dnl XXX - quick hack, should disappear before anyone notices :).
dnl XXX - I just read the above message :).
if test "$ac_cv_func_ruserok" = "yes"; then
AC_DEFINE(RLOGIN, 1, [Define if login should support the -r flag for rlogind.])
AC_DEFINE(RUSEROK, 0, [Define to the ruserok() "success" return value (0 or 1).])
fi
AC_ARG_ENABLE(shadowgrp,
[AS_HELP_STRING([--enable-shadowgrp], [enable shadow group support @<:@default=yes@:>@])],
[case "${enableval}" in
@@ -274,6 +267,7 @@ AC_DEFINE_UNQUOTED(GROUP_NAME_MAX_LENGTH, $with_group_name_max_length, [max grou
AC_SUBST(GROUP_NAME_MAX_LENGTH)
GROUP_NAME_MAX_LENGTH="$with_group_name_max_length"
AM_CONDITIONAL(USE_SHA_CRYPT, test "x$with_sha_crypt" = "xyes")
if test "$with_sha_crypt" = "yes"; then
AC_DEFINE(USE_SHA_CRYPT, 1, [Define to allow the SHA256 and SHA512 password encryption algorithms])
@@ -310,6 +304,10 @@ dnl needed (Linux glibc, Irix), but still link it if needed (Solaris).
AC_SEARCH_LIBS(gethostbyname, nsl)
PKG_CHECK_MODULES([CMOCKA], [cmocka], [have_cmocka="yes"],
[AC_MSG_WARN([libcmocka not found, cmocka tests will not be built])])
AM_CONDITIONAL([HAVE_CMOCKA], [test x$have_cmocka = xyes])
AC_CHECK_LIB([econf],[econf_readDirs],[LIBECONF="-leconf"],[LIBECONF=""])
if test -n "$LIBECONF"; then
AC_DEFINE_UNQUOTED([VENDORDIR], ["$enable_vendordir"],
@@ -701,10 +699,6 @@ if test "$with_skey" = "yes"; then
]])],[AC_DEFINE(SKEY_BSD_STYLE, 1, [Define to support newer BSD S/Key API])],[])
fi
PKG_CHECK_MODULES([CMOCKA], [cmocka], [have_cmocka="yes"],
[AC_MSG_WARN([libcmocka not found, cmocka tests will not be built])])
AM_CONDITIONAL([HAVE_CMOCKA], [test x$have_cmocka = xyes])
AC_CHECK_FUNC(fgetpwent_r, [AC_DEFINE(HAVE_FGETPWENT_R, 1, [Defined to 1 if you have the declaration of 'fgetpwent_r'])])
AC_DEFINE_UNQUOTED(SHELL, ["$SHELL"], [The default shell.])

View File

@@ -31,6 +31,10 @@ libshadow_la_SOURCES = \
agetpass.h \
alloc.c \
alloc.h \
atoi/a2i.c \
atoi/a2i.h \
atoi/str2i.c \
atoi/str2i.h \
atoi/strtoi.c \
atoi/strtoi.h \
atoi/strtou_noneg.c \
@@ -74,11 +78,9 @@ libshadow_la_SOURCES = \
getdate.y \
getdef.c \
getdef.h \
getlong.c \
getgr_nam_gid.c \
getrange.c \
gettime.c \
getulong.c \
groupio.c \
groupmem.c \
groupio.h \
@@ -117,7 +119,6 @@ libshadow_la_SOURCES = \
pwdcheck.c \
pwmem.c \
remove_tree.c \
rlogin.c \
root_flag.c \
run_part.h \
run_part.c \

View File

@@ -122,23 +122,23 @@ LTLIBRARIES = $(noinst_LTLIBRARIES)
am__DEPENDENCIES_1 =
libshadow_la_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__libshadow_la_SOURCES_DIST = addgrps.c adds.c adds.h age.c \
agetpass.c agetpass.h alloc.c alloc.h atoi/strtoi.c \
atoi/strtoi.h atoi/strtou_noneg.c atoi/strtou_noneg.h attr.h \
audit_help.c basename.c bit.c bit.h cast.h chkname.c chkname.h \
chowndir.c chowntty.c cleanup.c cleanup_group.c cleanup_user.c \
commonio.c commonio.h console.c copydir.c csrand.c defines.h \
encrypt.c env.c exitcodes.h faillog.h failure.c failure.h fd.c \
fields.c find_new_gid.c find_new_uid.c find_new_sub_gids.c \
agetpass.c agetpass.h alloc.c alloc.h atoi/a2i.c atoi/a2i.h \
atoi/str2i.c atoi/str2i.h atoi/strtoi.c atoi/strtoi.h \
atoi/strtou_noneg.c atoi/strtou_noneg.h attr.h audit_help.c \
basename.c bit.c bit.h cast.h chkname.c chkname.h chowndir.c \
chowntty.c cleanup.c cleanup_group.c cleanup_user.c commonio.c \
commonio.h console.c copydir.c csrand.c defines.h encrypt.c \
env.c exitcodes.h faillog.h failure.c failure.h fd.c fields.c \
find_new_gid.c find_new_uid.c find_new_sub_gids.c \
find_new_sub_uids.c fputsx.c get_gid.c get_pid.c get_uid.c \
getdate.h getdate.y getdef.c getdef.h getlong.c \
getgr_nam_gid.c getrange.c gettime.c getulong.c groupio.c \
groupmem.c groupio.h gshadow.c hushed.c idmapping.h \
idmapping.c isexpired.c limits.c list.c lockpw.c loginprompt.c \
mail.c memzero.c memzero.h motd.c must_be.h myname.c nss.c \
nscd.c nscd.h obscure.c pam_defs.h pam_pass.c \
pam_pass_non_interactive.c port.c port.h prefix_flag.c \
prototypes.h pwauth.c pwauth.h pwio.c pwio.h pwd_init.c \
pwd2spwd.c pwdcheck.c pwmem.c remove_tree.c rlogin.c \
getdate.h getdate.y getdef.c getdef.h getgr_nam_gid.c \
getrange.c gettime.c groupio.c groupmem.c groupio.h gshadow.c \
hushed.c idmapping.h idmapping.c isexpired.c limits.c list.c \
lockpw.c loginprompt.c mail.c memzero.c memzero.h motd.c \
must_be.h myname.c nss.c nscd.c nscd.h obscure.c pam_defs.h \
pam_pass.c pam_pass_non_interactive.c port.c port.h \
prefix_flag.c prototypes.h pwauth.c pwauth.h pwio.c pwio.h \
pwd_init.c pwd2spwd.c pwdcheck.c pwmem.c remove_tree.c \
root_flag.c run_part.h run_part.c salt.c selinux.c semanage.c \
setugid.c setupenv.c sgetgrent.c sgetpwent.c sgetspent.c \
sgroupio.c sgroupio.h shadow.c shadowio.c shadowio.h \
@@ -164,7 +164,8 @@ am__dirstamp = $(am__leading_dot)dirstamp
@WITH_LIBBSD_FALSE@ libshadow_la-readpassphrase.lo
am_libshadow_la_OBJECTS = libshadow_la-addgrps.lo libshadow_la-adds.lo \
libshadow_la-age.lo libshadow_la-agetpass.lo \
libshadow_la-alloc.lo atoi/libshadow_la-strtoi.lo \
libshadow_la-alloc.lo atoi/libshadow_la-a2i.lo \
atoi/libshadow_la-str2i.lo atoi/libshadow_la-strtoi.lo \
atoi/libshadow_la-strtou_noneg.lo libshadow_la-audit_help.lo \
libshadow_la-basename.lo libshadow_la-bit.lo \
libshadow_la-chkname.lo libshadow_la-chowndir.lo \
@@ -179,9 +180,8 @@ am_libshadow_la_OBJECTS = libshadow_la-addgrps.lo libshadow_la-adds.lo \
libshadow_la-find_new_sub_uids.lo libshadow_la-fputsx.lo \
libshadow_la-get_gid.lo libshadow_la-get_pid.lo \
libshadow_la-get_uid.lo libshadow_la-getdate.lo \
libshadow_la-getdef.lo libshadow_la-getlong.lo \
libshadow_la-getgr_nam_gid.lo libshadow_la-getrange.lo \
libshadow_la-gettime.lo libshadow_la-getulong.lo \
libshadow_la-getdef.lo libshadow_la-getgr_nam_gid.lo \
libshadow_la-getrange.lo libshadow_la-gettime.lo \
libshadow_la-groupio.lo libshadow_la-groupmem.lo \
libshadow_la-gshadow.lo libshadow_la-hushed.lo \
libshadow_la-idmapping.lo libshadow_la-isexpired.lo \
@@ -196,17 +196,16 @@ am_libshadow_la_OBJECTS = libshadow_la-addgrps.lo libshadow_la-adds.lo \
libshadow_la-pwio.lo libshadow_la-pwd_init.lo \
libshadow_la-pwd2spwd.lo libshadow_la-pwdcheck.lo \
libshadow_la-pwmem.lo libshadow_la-remove_tree.lo \
libshadow_la-rlogin.lo libshadow_la-root_flag.lo \
libshadow_la-run_part.lo libshadow_la-salt.lo \
libshadow_la-selinux.lo libshadow_la-semanage.lo \
libshadow_la-setugid.lo libshadow_la-setupenv.lo \
libshadow_la-sgetgrent.lo libshadow_la-sgetpwent.lo \
libshadow_la-sgetspent.lo libshadow_la-sgroupio.lo \
libshadow_la-shadow.lo libshadow_la-shadowio.lo \
libshadow_la-shadowlog.lo libshadow_la-shadowmem.lo \
libshadow_la-shell.lo libshadow_la-spawn.lo \
libshadow_la-sssd.lo string/libshadow_la-sprintf.lo \
string/libshadow_la-stpecpy.lo \
libshadow_la-root_flag.lo libshadow_la-run_part.lo \
libshadow_la-salt.lo libshadow_la-selinux.lo \
libshadow_la-semanage.lo libshadow_la-setugid.lo \
libshadow_la-setupenv.lo libshadow_la-sgetgrent.lo \
libshadow_la-sgetpwent.lo libshadow_la-sgetspent.lo \
libshadow_la-sgroupio.lo libshadow_la-shadow.lo \
libshadow_la-shadowio.lo libshadow_la-shadowlog.lo \
libshadow_la-shadowmem.lo libshadow_la-shell.lo \
libshadow_la-spawn.lo libshadow_la-sssd.lo \
string/libshadow_la-sprintf.lo string/libshadow_la-stpecpy.lo \
string/libshadow_la-stpeprintf.lo \
string/libshadow_la-strftime.lo string/libshadow_la-strtcpy.lo \
libshadow_la-strtoday.lo libshadow_la-sub.lo \
@@ -279,10 +278,8 @@ am__depfiles_remade = ./$(DEPDIR)/libshadow_la-addgrps.Plo \
./$(DEPDIR)/libshadow_la-getdate.Plo \
./$(DEPDIR)/libshadow_la-getdef.Plo \
./$(DEPDIR)/libshadow_la-getgr_nam_gid.Plo \
./$(DEPDIR)/libshadow_la-getlong.Plo \
./$(DEPDIR)/libshadow_la-getrange.Plo \
./$(DEPDIR)/libshadow_la-gettime.Plo \
./$(DEPDIR)/libshadow_la-getulong.Plo \
./$(DEPDIR)/libshadow_la-groupio.Plo \
./$(DEPDIR)/libshadow_la-groupmem.Plo \
./$(DEPDIR)/libshadow_la-gshadow.Plo \
@@ -314,7 +311,6 @@ am__depfiles_remade = ./$(DEPDIR)/libshadow_la-addgrps.Plo \
./$(DEPDIR)/libshadow_la-pwmem.Plo \
./$(DEPDIR)/libshadow_la-readpassphrase.Plo \
./$(DEPDIR)/libshadow_la-remove_tree.Plo \
./$(DEPDIR)/libshadow_la-rlogin.Plo \
./$(DEPDIR)/libshadow_la-root_flag.Plo \
./$(DEPDIR)/libshadow_la-run_part.Plo \
./$(DEPDIR)/libshadow_la-salt.Plo \
@@ -352,6 +348,8 @@ am__depfiles_remade = ./$(DEPDIR)/libshadow_la-addgrps.Plo \
./$(DEPDIR)/libshadow_la-xgetspnam.Plo \
./$(DEPDIR)/libshadow_la-xprefix_getpwnam.Plo \
./$(DEPDIR)/libshadow_la-yesno.Plo \
atoi/$(DEPDIR)/libshadow_la-a2i.Plo \
atoi/$(DEPDIR)/libshadow_la-str2i.Plo \
atoi/$(DEPDIR)/libshadow_la-strtoi.Plo \
atoi/$(DEPDIR)/libshadow_la-strtou_noneg.Plo \
string/$(DEPDIR)/libshadow_la-sprintf.Plo \
@@ -604,36 +602,36 @@ libshadow_la_CPPFLAGS = $(ECONF_CPPFLAGS) $(am__append_1) \
libshadow_la_CFLAGS = $(LIBBSD_CFLAGS) $(LIBCRYPT_PAM) $(LIBSYSTEMD)
libshadow_la_LIBADD = $(LIBADD_DLOPEN)
libshadow_la_SOURCES = addgrps.c adds.c adds.h age.c agetpass.c \
agetpass.h alloc.c alloc.h atoi/strtoi.c atoi/strtoi.h \
atoi/strtou_noneg.c atoi/strtou_noneg.h attr.h audit_help.c \
basename.c bit.c bit.h cast.h chkname.c chkname.h chowndir.c \
chowntty.c cleanup.c cleanup_group.c cleanup_user.c commonio.c \
commonio.h console.c copydir.c csrand.c defines.h encrypt.c \
env.c exitcodes.h faillog.h failure.c failure.h fd.c fields.c \
find_new_gid.c find_new_uid.c find_new_sub_gids.c \
find_new_sub_uids.c fputsx.c get_gid.c get_pid.c get_uid.c \
getdate.h getdate.y getdef.c getdef.h getlong.c \
getgr_nam_gid.c getrange.c gettime.c getulong.c groupio.c \
groupmem.c groupio.h gshadow.c hushed.c idmapping.h \
agetpass.h alloc.c alloc.h atoi/a2i.c atoi/a2i.h atoi/str2i.c \
atoi/str2i.h atoi/strtoi.c atoi/strtoi.h atoi/strtou_noneg.c \
atoi/strtou_noneg.h attr.h audit_help.c basename.c bit.c bit.h \
cast.h chkname.c chkname.h chowndir.c chowntty.c cleanup.c \
cleanup_group.c cleanup_user.c commonio.c commonio.h console.c \
copydir.c csrand.c defines.h encrypt.c env.c exitcodes.h \
faillog.h failure.c failure.h fd.c fields.c find_new_gid.c \
find_new_uid.c find_new_sub_gids.c find_new_sub_uids.c \
fputsx.c get_gid.c get_pid.c get_uid.c getdate.h getdate.y \
getdef.c getdef.h getgr_nam_gid.c getrange.c gettime.c \
groupio.c groupmem.c groupio.h gshadow.c hushed.c idmapping.h \
idmapping.c isexpired.c limits.c list.c lockpw.c loginprompt.c \
mail.c memzero.c memzero.h motd.c must_be.h myname.c nss.c \
nscd.c nscd.h obscure.c pam_defs.h pam_pass.c \
pam_pass_non_interactive.c port.c port.h prefix_flag.c \
prototypes.h pwauth.c pwauth.h pwio.c pwio.h pwd_init.c \
pwd2spwd.c pwdcheck.c pwmem.c remove_tree.c rlogin.c \
root_flag.c run_part.h run_part.c salt.c selinux.c semanage.c \
setugid.c setupenv.c sgetgrent.c sgetpwent.c sgetspent.c \
sgroupio.c sgroupio.h shadow.c shadowio.c shadowio.h \
shadowlog.c shadowlog.h shadowlog_internal.h shadowmem.c \
shell.c sizeof.h spawn.c sssd.c sssd.h string/sprintf.c \
string/sprintf.h string/stpecpy.c string/stpecpy.h \
string/stpeprintf.c string/stpeprintf.h string/strftime.c \
string/strftime.h string/strncpy.h string/strtcpy.c \
string/strtcpy.h string/zustr2stp.h strtoday.c sub.c \
subordinateio.h subordinateio.c sulog.c time/day_to_str.c \
time/day_to_str.h ttytype.c tz.c ulimit.c user_busy.c valid.c \
write_full.c xgetpwnam.c xprefix_getpwnam.c xgetpwuid.c \
xgetgrnam.c xgetgrgid.c xgetspnam.c yesno.c $(am__append_2) \
pwd2spwd.c pwdcheck.c pwmem.c remove_tree.c root_flag.c \
run_part.h run_part.c salt.c selinux.c semanage.c setugid.c \
setupenv.c sgetgrent.c sgetpwent.c sgetspent.c sgroupio.c \
sgroupio.h shadow.c shadowio.c shadowio.h shadowlog.c \
shadowlog.h shadowlog_internal.h shadowmem.c shell.c sizeof.h \
spawn.c sssd.c sssd.h string/sprintf.c string/sprintf.h \
string/stpecpy.c string/stpecpy.h string/stpeprintf.c \
string/stpeprintf.h string/strftime.c string/strftime.h \
string/strncpy.h string/strtcpy.c string/strtcpy.h \
string/zustr2stp.h strtoday.c sub.c subordinateio.h \
subordinateio.c sulog.c time/day_to_str.c time/day_to_str.h \
ttytype.c tz.c ulimit.c user_busy.c valid.c write_full.c \
xgetpwnam.c xprefix_getpwnam.c xgetpwuid.c xgetgrnam.c \
xgetgrgid.c xgetspnam.c yesno.c $(am__append_2) \
$(am__append_3) $(am__append_4) $(am__append_5) \
$(am__append_6) $(am__append_7)
@@ -696,6 +694,10 @@ atoi/$(am__dirstamp):
atoi/$(DEPDIR)/$(am__dirstamp):
@$(MKDIR_P) atoi/$(DEPDIR)
@: > atoi/$(DEPDIR)/$(am__dirstamp)
atoi/libshadow_la-a2i.lo: atoi/$(am__dirstamp) \
atoi/$(DEPDIR)/$(am__dirstamp)
atoi/libshadow_la-str2i.lo: atoi/$(am__dirstamp) \
atoi/$(DEPDIR)/$(am__dirstamp)
atoi/libshadow_la-strtoi.lo: atoi/$(am__dirstamp) \
atoi/$(DEPDIR)/$(am__dirstamp)
atoi/libshadow_la-strtou_noneg.lo: atoi/$(am__dirstamp) \
@@ -776,10 +778,8 @@ distclean-compile:
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libshadow_la-getdate.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libshadow_la-getdef.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libshadow_la-getgr_nam_gid.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libshadow_la-getlong.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libshadow_la-getrange.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libshadow_la-gettime.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libshadow_la-getulong.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libshadow_la-groupio.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libshadow_la-groupmem.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libshadow_la-gshadow.Plo@am__quote@ # am--include-marker
@@ -811,7 +811,6 @@ distclean-compile:
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libshadow_la-pwmem.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libshadow_la-readpassphrase.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libshadow_la-remove_tree.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libshadow_la-rlogin.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libshadow_la-root_flag.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libshadow_la-run_part.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libshadow_la-salt.Plo@am__quote@ # am--include-marker
@@ -849,6 +848,8 @@ distclean-compile:
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libshadow_la-xgetspnam.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libshadow_la-xprefix_getpwnam.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libshadow_la-yesno.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@atoi/$(DEPDIR)/libshadow_la-a2i.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@atoi/$(DEPDIR)/libshadow_la-str2i.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@atoi/$(DEPDIR)/libshadow_la-strtoi.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@atoi/$(DEPDIR)/libshadow_la-strtou_noneg.Plo@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@string/$(DEPDIR)/libshadow_la-sprintf.Plo@am__quote@ # am--include-marker
@@ -923,6 +924,20 @@ libshadow_la-alloc.lo: alloc.c
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -c -o libshadow_la-alloc.lo `test -f 'alloc.c' || echo '$(srcdir)/'`alloc.c
atoi/libshadow_la-a2i.lo: atoi/a2i.c
@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -MT atoi/libshadow_la-a2i.lo -MD -MP -MF atoi/$(DEPDIR)/libshadow_la-a2i.Tpo -c -o atoi/libshadow_la-a2i.lo `test -f 'atoi/a2i.c' || echo '$(srcdir)/'`atoi/a2i.c
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) atoi/$(DEPDIR)/libshadow_la-a2i.Tpo atoi/$(DEPDIR)/libshadow_la-a2i.Plo
@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='atoi/a2i.c' object='atoi/libshadow_la-a2i.lo' libtool=yes @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -c -o atoi/libshadow_la-a2i.lo `test -f 'atoi/a2i.c' || echo '$(srcdir)/'`atoi/a2i.c
atoi/libshadow_la-str2i.lo: atoi/str2i.c
@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -MT atoi/libshadow_la-str2i.lo -MD -MP -MF atoi/$(DEPDIR)/libshadow_la-str2i.Tpo -c -o atoi/libshadow_la-str2i.lo `test -f 'atoi/str2i.c' || echo '$(srcdir)/'`atoi/str2i.c
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) atoi/$(DEPDIR)/libshadow_la-str2i.Tpo atoi/$(DEPDIR)/libshadow_la-str2i.Plo
@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='atoi/str2i.c' object='atoi/libshadow_la-str2i.lo' libtool=yes @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -c -o atoi/libshadow_la-str2i.lo `test -f 'atoi/str2i.c' || echo '$(srcdir)/'`atoi/str2i.c
atoi/libshadow_la-strtoi.lo: atoi/strtoi.c
@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -MT atoi/libshadow_la-strtoi.lo -MD -MP -MF atoi/$(DEPDIR)/libshadow_la-strtoi.Tpo -c -o atoi/libshadow_la-strtoi.lo `test -f 'atoi/strtoi.c' || echo '$(srcdir)/'`atoi/strtoi.c
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) atoi/$(DEPDIR)/libshadow_la-strtoi.Tpo atoi/$(DEPDIR)/libshadow_la-strtoi.Plo
@@ -1133,13 +1148,6 @@ libshadow_la-getdef.lo: getdef.c
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -c -o libshadow_la-getdef.lo `test -f 'getdef.c' || echo '$(srcdir)/'`getdef.c
libshadow_la-getlong.lo: getlong.c
@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -MT libshadow_la-getlong.lo -MD -MP -MF $(DEPDIR)/libshadow_la-getlong.Tpo -c -o libshadow_la-getlong.lo `test -f 'getlong.c' || echo '$(srcdir)/'`getlong.c
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libshadow_la-getlong.Tpo $(DEPDIR)/libshadow_la-getlong.Plo
@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='getlong.c' object='libshadow_la-getlong.lo' libtool=yes @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -c -o libshadow_la-getlong.lo `test -f 'getlong.c' || echo '$(srcdir)/'`getlong.c
libshadow_la-getgr_nam_gid.lo: getgr_nam_gid.c
@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -MT libshadow_la-getgr_nam_gid.lo -MD -MP -MF $(DEPDIR)/libshadow_la-getgr_nam_gid.Tpo -c -o libshadow_la-getgr_nam_gid.lo `test -f 'getgr_nam_gid.c' || echo '$(srcdir)/'`getgr_nam_gid.c
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libshadow_la-getgr_nam_gid.Tpo $(DEPDIR)/libshadow_la-getgr_nam_gid.Plo
@@ -1161,13 +1169,6 @@ libshadow_la-gettime.lo: gettime.c
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -c -o libshadow_la-gettime.lo `test -f 'gettime.c' || echo '$(srcdir)/'`gettime.c
libshadow_la-getulong.lo: getulong.c
@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -MT libshadow_la-getulong.lo -MD -MP -MF $(DEPDIR)/libshadow_la-getulong.Tpo -c -o libshadow_la-getulong.lo `test -f 'getulong.c' || echo '$(srcdir)/'`getulong.c
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libshadow_la-getulong.Tpo $(DEPDIR)/libshadow_la-getulong.Plo
@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='getulong.c' object='libshadow_la-getulong.lo' libtool=yes @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -c -o libshadow_la-getulong.lo `test -f 'getulong.c' || echo '$(srcdir)/'`getulong.c
libshadow_la-groupio.lo: groupio.c
@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -MT libshadow_la-groupio.lo -MD -MP -MF $(DEPDIR)/libshadow_la-groupio.Tpo -c -o libshadow_la-groupio.lo `test -f 'groupio.c' || echo '$(srcdir)/'`groupio.c
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libshadow_la-groupio.Tpo $(DEPDIR)/libshadow_la-groupio.Plo
@@ -1364,13 +1365,6 @@ libshadow_la-remove_tree.lo: remove_tree.c
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -c -o libshadow_la-remove_tree.lo `test -f 'remove_tree.c' || echo '$(srcdir)/'`remove_tree.c
libshadow_la-rlogin.lo: rlogin.c
@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -MT libshadow_la-rlogin.lo -MD -MP -MF $(DEPDIR)/libshadow_la-rlogin.Tpo -c -o libshadow_la-rlogin.lo `test -f 'rlogin.c' || echo '$(srcdir)/'`rlogin.c
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libshadow_la-rlogin.Tpo $(DEPDIR)/libshadow_la-rlogin.Plo
@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='rlogin.c' object='libshadow_la-rlogin.lo' libtool=yes @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -c -o libshadow_la-rlogin.lo `test -f 'rlogin.c' || echo '$(srcdir)/'`rlogin.c
libshadow_la-root_flag.lo: root_flag.c
@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -MT libshadow_la-root_flag.lo -MD -MP -MF $(DEPDIR)/libshadow_la-root_flag.Tpo -c -o libshadow_la-root_flag.lo `test -f 'root_flag.c' || echo '$(srcdir)/'`root_flag.c
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libshadow_la-root_flag.Tpo $(DEPDIR)/libshadow_la-root_flag.Plo
@@ -1886,10 +1880,8 @@ distclean: distclean-am
-rm -f ./$(DEPDIR)/libshadow_la-getdate.Plo
-rm -f ./$(DEPDIR)/libshadow_la-getdef.Plo
-rm -f ./$(DEPDIR)/libshadow_la-getgr_nam_gid.Plo
-rm -f ./$(DEPDIR)/libshadow_la-getlong.Plo
-rm -f ./$(DEPDIR)/libshadow_la-getrange.Plo
-rm -f ./$(DEPDIR)/libshadow_la-gettime.Plo
-rm -f ./$(DEPDIR)/libshadow_la-getulong.Plo
-rm -f ./$(DEPDIR)/libshadow_la-groupio.Plo
-rm -f ./$(DEPDIR)/libshadow_la-groupmem.Plo
-rm -f ./$(DEPDIR)/libshadow_la-gshadow.Plo
@@ -1921,7 +1913,6 @@ distclean: distclean-am
-rm -f ./$(DEPDIR)/libshadow_la-pwmem.Plo
-rm -f ./$(DEPDIR)/libshadow_la-readpassphrase.Plo
-rm -f ./$(DEPDIR)/libshadow_la-remove_tree.Plo
-rm -f ./$(DEPDIR)/libshadow_la-rlogin.Plo
-rm -f ./$(DEPDIR)/libshadow_la-root_flag.Plo
-rm -f ./$(DEPDIR)/libshadow_la-run_part.Plo
-rm -f ./$(DEPDIR)/libshadow_la-salt.Plo
@@ -1959,6 +1950,8 @@ distclean: distclean-am
-rm -f ./$(DEPDIR)/libshadow_la-xgetspnam.Plo
-rm -f ./$(DEPDIR)/libshadow_la-xprefix_getpwnam.Plo
-rm -f ./$(DEPDIR)/libshadow_la-yesno.Plo
-rm -f atoi/$(DEPDIR)/libshadow_la-a2i.Plo
-rm -f atoi/$(DEPDIR)/libshadow_la-str2i.Plo
-rm -f atoi/$(DEPDIR)/libshadow_la-strtoi.Plo
-rm -f atoi/$(DEPDIR)/libshadow_la-strtou_noneg.Plo
-rm -f string/$(DEPDIR)/libshadow_la-sprintf.Plo
@@ -2048,10 +2041,8 @@ maintainer-clean: maintainer-clean-am
-rm -f ./$(DEPDIR)/libshadow_la-getdate.Plo
-rm -f ./$(DEPDIR)/libshadow_la-getdef.Plo
-rm -f ./$(DEPDIR)/libshadow_la-getgr_nam_gid.Plo
-rm -f ./$(DEPDIR)/libshadow_la-getlong.Plo
-rm -f ./$(DEPDIR)/libshadow_la-getrange.Plo
-rm -f ./$(DEPDIR)/libshadow_la-gettime.Plo
-rm -f ./$(DEPDIR)/libshadow_la-getulong.Plo
-rm -f ./$(DEPDIR)/libshadow_la-groupio.Plo
-rm -f ./$(DEPDIR)/libshadow_la-groupmem.Plo
-rm -f ./$(DEPDIR)/libshadow_la-gshadow.Plo
@@ -2083,7 +2074,6 @@ maintainer-clean: maintainer-clean-am
-rm -f ./$(DEPDIR)/libshadow_la-pwmem.Plo
-rm -f ./$(DEPDIR)/libshadow_la-readpassphrase.Plo
-rm -f ./$(DEPDIR)/libshadow_la-remove_tree.Plo
-rm -f ./$(DEPDIR)/libshadow_la-rlogin.Plo
-rm -f ./$(DEPDIR)/libshadow_la-root_flag.Plo
-rm -f ./$(DEPDIR)/libshadow_la-run_part.Plo
-rm -f ./$(DEPDIR)/libshadow_la-salt.Plo
@@ -2121,6 +2111,8 @@ maintainer-clean: maintainer-clean-am
-rm -f ./$(DEPDIR)/libshadow_la-xgetspnam.Plo
-rm -f ./$(DEPDIR)/libshadow_la-xprefix_getpwnam.Plo
-rm -f ./$(DEPDIR)/libshadow_la-yesno.Plo
-rm -f atoi/$(DEPDIR)/libshadow_la-a2i.Plo
-rm -f atoi/$(DEPDIR)/libshadow_la-str2i.Plo
-rm -f atoi/$(DEPDIR)/libshadow_la-strtoi.Plo
-rm -f atoi/$(DEPDIR)/libshadow_la-strtou_noneg.Plo
-rm -f string/$(DEPDIR)/libshadow_la-sprintf.Plo

View File

@@ -1,8 +1,5 @@
/*
* SPDX-FileCopyrightText: 2023, Alejandro Colomar <alx@kernel.org>
*
* SPDX-License-Identifier: BSD-3-Clause
*/
// SPDX-FileCopyrightText: 2023-2024, Alejandro Colomar <alx@kernel.org>
// SPDX-License-Identifier: BSD-3-Clause
#ifndef SHADOW_INCLUDE_LIB_MALLOC_H_
@@ -27,31 +24,19 @@
#define XMALLOC(n, type) ((type *) xmallocarray(n, sizeof(type)))
#define REALLOC(ptr, n, type) \
({ \
__auto_type p_ = (ptr); \
\
static_assert(__builtin_types_compatible_p(typeof(p_), type *), ""); \
\
(type *) reallocarray(p_, n, sizeof(type)); \
})
( \
_Generic(ptr, type *: (type *) reallocarray(ptr, n, sizeof(type))) \
)
#define REALLOCF(ptr, n, type) \
({ \
__auto_type p_ = (ptr); \
\
static_assert(__builtin_types_compatible_p(typeof(p_), type *), ""); \
\
(type *) reallocarrayf(p_, n, sizeof(type)); \
})
( \
_Generic(ptr, type *: (type *) reallocarrayf(ptr, n, sizeof(type))) \
)
#define XREALLOC(ptr, n, type) \
({ \
__auto_type p_ = (ptr); \
\
static_assert(__builtin_types_compatible_p(typeof(p_), type *), ""); \
\
(type *) xreallocarray(p_, n, sizeof(type)); \
})
( \
_Generic(ptr, type *: (type *) xreallocarray(ptr, n, sizeof(type))) \
)
ATTR_MALLOC(free)

46
lib/atoi/a2i.c Normal file
View File

@@ -0,0 +1,46 @@
// SPDX-FileCopyrightText: 2023-2024, Alejandro Colomar <alx@kernel.org>
// SPDX-License-Identifier: BSD-3-Clause
#include <config.h>
#include "atoi/a2i.h"
extern inline int a2sh_c(short *restrict n, const char *s,
const char **restrict endp, int base, short min, short max);
extern inline int a2si_c(int *restrict n, const char *s,
const char **restrict endp, int base, int min, int max);
extern inline int a2sl_c(long *restrict n, const char *s,
const char **restrict endp, int base, long min, long max);
extern inline int a2sll_c(long long *restrict n, const char *s,
const char **restrict endp, int base, long long min, long long max);
extern inline int a2uh_c(unsigned short *restrict n, const char *s,
const char **restrict endp, int base, unsigned short min,
unsigned short max);
extern inline int a2ui_c(unsigned int *restrict n, const char *s,
const char **restrict endp, int base, unsigned int min, unsigned int max);
extern inline int a2ul_c(unsigned long *restrict n, const char *s,
const char **restrict endp, int base, unsigned long min, unsigned long max);
extern inline int a2ull_c(unsigned long long *restrict n, const char *s,
const char **restrict endp, int base, unsigned long long min,
unsigned long long max);
extern inline int a2sh_nc(short *restrict n, char *s,
char **restrict endp, int base, short min, short max);
extern inline int a2si_nc(int *restrict n, char *s,
char **restrict endp, int base, int min, int max);
extern inline int a2sl_nc(long *restrict n, char *s,
char **restrict endp, int base, long min, long max);
extern inline int a2sll_nc(long long *restrict n, char *s,
char **restrict endp, int base, long long min, long long max);
extern inline int a2uh_nc(unsigned short *restrict n, char *s,
char **restrict endp, int base, unsigned short min, unsigned short max);
extern inline int a2ui_nc(unsigned int *restrict n, char *s,
char **restrict endp, int base, unsigned int min, unsigned int max);
extern inline int a2ul_nc(unsigned long *restrict n, char *s,
char **restrict endp, int base, unsigned long min, unsigned long max);
extern inline int a2ull_nc(unsigned long long *restrict n, char *s,
char **restrict endp, int base, unsigned long long min,
unsigned long long max);

386
lib/atoi/a2i.h Normal file
View File

@@ -0,0 +1,386 @@
// SPDX-FileCopyrightText: 2023-2024, Alejandro Colomar <alx@kernel.org>
// SPDX-License-Identifier: BSD-3-Clause
#ifndef SHADOW_INCLUDE_LIB_ATOI_A2I_H_
#define SHADOW_INCLUDE_LIB_ATOI_A2I_H_
#include <config.h>
#include <errno.h>
#include "atoi/strtoi.h"
#include "atoi/strtou_noneg.h"
#include "attr.h"
/*
* See the manual of these macros in liba2i's documentation:
* <http://www.alejandro-colomar.es/share/dist/liba2i/git/HEAD/liba2i-HEAD.pdf>
*/
#define a2i(TYPE, n, s, ...) \
( \
_Generic((void (*)(TYPE, typeof(s))) 0, \
void (*)(short, const char *): a2sh_c, \
void (*)(short, const void *): a2sh_c, \
void (*)(short, char *): a2sh_nc, \
void (*)(short, void *): a2sh_nc, \
void (*)(int, const char *): a2si_c, \
void (*)(int, const void *): a2si_c, \
void (*)(int, char *): a2si_nc, \
void (*)(int, void *): a2si_nc, \
void (*)(long, const char *): a2sl_c, \
void (*)(long, const void *): a2sl_c, \
void (*)(long, char *): a2sl_nc, \
void (*)(long, void *): a2sl_nc, \
void (*)(long long, const char *): a2sll_c, \
void (*)(long long, const void *): a2sll_c, \
void (*)(long long, char *): a2sll_nc, \
void (*)(long long, void *): a2sll_nc, \
void (*)(unsigned short, const char *): a2uh_c, \
void (*)(unsigned short, const void *): a2uh_c, \
void (*)(unsigned short, char *): a2uh_nc, \
void (*)(unsigned short, void *): a2uh_nc, \
void (*)(unsigned int, const char *): a2ui_c, \
void (*)(unsigned int, const void *): a2ui_c, \
void (*)(unsigned int, char *): a2ui_nc, \
void (*)(unsigned int, void *): a2ui_nc, \
void (*)(unsigned long, const char *): a2ul_c, \
void (*)(unsigned long, const void *): a2ul_c, \
void (*)(unsigned long, char *): a2ul_nc, \
void (*)(unsigned long, void *): a2ul_nc, \
void (*)(unsigned long long, const char *): a2ull_c, \
void (*)(unsigned long long, const void *): a2ull_c, \
void (*)(unsigned long long, char *): a2ull_nc, \
void (*)(unsigned long long, void *): a2ull_nc \
)(n, s, __VA_ARGS__) \
)
#define a2sh(n, s, ...) \
( \
_Generic(s, \
const char *: a2sh_c, \
const void *: a2sh_c, \
char *: a2sh_nc, \
void *: a2sh_nc \
)(n, s, __VA_ARGS__) \
)
#define a2si(n, s, ...) \
( \
_Generic(s, \
const char *: a2si_c, \
const void *: a2si_c, \
char *: a2si_nc, \
void *: a2si_nc \
)(n, s, __VA_ARGS__) \
)
#define a2sl(n, s, ...) \
( \
_Generic(s, \
const char *: a2sl_c, \
const void *: a2sl_c, \
char *: a2sl_nc, \
void *: a2sl_nc \
)(n, s, __VA_ARGS__) \
)
#define a2sll(n, s, ...) \
( \
_Generic(s, \
const char *: a2sll_c, \
const void *: a2sll_c, \
char *: a2sll_nc, \
void *: a2sll_nc \
)(n, s, __VA_ARGS__) \
)
#define a2uh(n, s, ...) \
( \
_Generic(s, \
const char *: a2uh_c, \
const void *: a2uh_c, \
char *: a2uh_nc, \
void *: a2uh_nc \
)(n, s, __VA_ARGS__) \
)
#define a2ui(n, s, ...) \
( \
_Generic(s, \
const char *: a2ui_c, \
const void *: a2ui_c, \
char *: a2ui_nc, \
void *: a2ui_nc \
)(n, s, __VA_ARGS__) \
)
#define a2ul(n, s, ...) \
( \
_Generic(s, \
const char *: a2ul_c, \
const void *: a2ul_c, \
char *: a2ul_nc, \
void *: a2ul_nc \
)(n, s, __VA_ARGS__) \
)
#define a2ull(n, s, ...) \
( \
_Generic(s, \
const char *: a2ull_c, \
const void *: a2ull_c, \
char *: a2ull_nc, \
void *: a2ull_nc \
)(n, s, __VA_ARGS__) \
)
ATTR_STRING(2) ATTR_ACCESS(write_only, 1) ATTR_ACCESS(write_only, 3)
inline int a2sh_c(short *restrict n, const char *s,
const char **restrict endp, int base, short min, short max);
ATTR_STRING(2) ATTR_ACCESS(write_only, 1) ATTR_ACCESS(write_only, 3)
inline int a2si_c(int *restrict n, const char *s,
const char **restrict endp, int base, int min, int max);
ATTR_STRING(2) ATTR_ACCESS(write_only, 1) ATTR_ACCESS(write_only, 3)
inline int a2sl_c(long *restrict n, const char *s,
const char **restrict endp, int base, long min, long max);
ATTR_STRING(2) ATTR_ACCESS(write_only, 1) ATTR_ACCESS(write_only, 3)
inline int a2sll_c(long long *restrict n, const char *s,
const char **restrict endp, int base, long long min, long long max);
ATTR_STRING(2) ATTR_ACCESS(write_only, 1) ATTR_ACCESS(write_only, 3)
inline int a2uh_c(unsigned short *restrict n, const char *s,
const char **restrict endp, int base, unsigned short min,
unsigned short max);
ATTR_STRING(2) ATTR_ACCESS(write_only, 1) ATTR_ACCESS(write_only, 3)
inline int a2ui_c(unsigned int *restrict n, const char *s,
const char **restrict endp, int base, unsigned int min, unsigned int max);
ATTR_STRING(2) ATTR_ACCESS(write_only, 1) ATTR_ACCESS(write_only, 3)
inline int a2ul_c(unsigned long *restrict n, const char *s,
const char **restrict endp, int base, unsigned long min, unsigned long max);
ATTR_STRING(2) ATTR_ACCESS(write_only, 1) ATTR_ACCESS(write_only, 3)
inline int a2ull_c(unsigned long long *restrict n, const char *s,
const char **restrict endp, int base, unsigned long long min,
unsigned long long max);
ATTR_STRING(2) ATTR_ACCESS(write_only, 1) ATTR_ACCESS(write_only, 3)
inline int a2sh_nc(short *restrict n, char *s,
char **restrict endp, int base, short min, short max);
ATTR_STRING(2) ATTR_ACCESS(write_only, 1) ATTR_ACCESS(write_only, 3)
inline int a2si_nc(int *restrict n, char *s,
char **restrict endp, int base, int min, int max);
ATTR_STRING(2) ATTR_ACCESS(write_only, 1) ATTR_ACCESS(write_only, 3)
inline int a2sl_nc(long *restrict n, char *s,
char **restrict endp, int base, long min, long max);
ATTR_STRING(2) ATTR_ACCESS(write_only, 1) ATTR_ACCESS(write_only, 3)
inline int a2sll_nc(long long *restrict n, char *s,
char **restrict endp, int base, long long min, long long max);
ATTR_STRING(2) ATTR_ACCESS(write_only, 1) ATTR_ACCESS(write_only, 3)
inline int a2uh_nc(unsigned short *restrict n, char *s,
char **restrict endp, int base, unsigned short min, unsigned short max);
ATTR_STRING(2) ATTR_ACCESS(write_only, 1) ATTR_ACCESS(write_only, 3)
inline int a2ui_nc(unsigned int *restrict n, char *s,
char **restrict endp, int base, unsigned int min, unsigned int max);
ATTR_STRING(2) ATTR_ACCESS(write_only, 1) ATTR_ACCESS(write_only, 3)
inline int a2ul_nc(unsigned long *restrict n, char *s,
char **restrict endp, int base, unsigned long min, unsigned long max);
ATTR_STRING(2) ATTR_ACCESS(write_only, 1) ATTR_ACCESS(write_only, 3)
inline int a2ull_nc(unsigned long long *restrict n, char *s,
char **restrict endp, int base, unsigned long long min,
unsigned long long max);
inline int
a2sh_c(short *restrict n, const char *s,
const char **restrict endp, int base, short min, short max)
{
return a2sh(n, (char *) s, (char **) endp, base, min, max);
}
inline int
a2si_c(int *restrict n, const char *s,
const char **restrict endp, int base, int min, int max)
{
return a2si(n, (char *) s, (char **) endp, base, min, max);
}
inline int
a2sl_c(long *restrict n, const char *s,
const char **restrict endp, int base, long min, long max)
{
return a2sl(n, (char *) s, (char **) endp, base, min, max);
}
inline int
a2sll_c(long long *restrict n, const char *s,
const char **restrict endp, int base, long long min, long long max)
{
return a2sll(n, (char *) s, (char **) endp, base, min, max);
}
inline int
a2uh_c(unsigned short *restrict n, const char *s,
const char **restrict endp, int base, unsigned short min,
unsigned short max)
{
return a2uh(n, (char *) s, (char **) endp, base, min, max);
}
inline int
a2ui_c(unsigned int *restrict n, const char *s,
const char **restrict endp, int base, unsigned int min, unsigned int max)
{
return a2ui(n, (char *) s, (char **) endp, base, min, max);
}
inline int
a2ul_c(unsigned long *restrict n, const char *s,
const char **restrict endp, int base, unsigned long min, unsigned long max)
{
return a2ul(n, (char *) s, (char **) endp, base, min, max);
}
inline int
a2ull_c(unsigned long long *restrict n, const char *s,
const char **restrict endp, int base, unsigned long long min,
unsigned long long max)
{
return a2ull(n, (char *) s, (char **) endp, base, min, max);
}
inline int
a2sh_nc(short *restrict n, char *s,
char **restrict endp, int base, short min, short max)
{
int status;
*n = strtoi_(s, endp, base, min, max, &status);
if (status != 0) {
errno = status;
return -1;
}
return 0;
}
inline int
a2si_nc(int *restrict n, char *s,
char **restrict endp, int base, int min, int max)
{
int status;
*n = strtoi_(s, endp, base, min, max, &status);
if (status != 0) {
errno = status;
return -1;
}
return 0;
}
inline int
a2sl_nc(long *restrict n, char *s,
char **restrict endp, int base, long min, long max)
{
int status;
*n = strtoi_(s, endp, base, min, max, &status);
if (status != 0) {
errno = status;
return -1;
}
return 0;
}
inline int
a2sll_nc(long long *restrict n, char *s,
char **restrict endp, int base, long long min, long long max)
{
int status;
*n = strtoi_(s, endp, base, min, max, &status);
if (status != 0) {
errno = status;
return -1;
}
return 0;
}
inline int
a2uh_nc(unsigned short *restrict n, char *s,
char **restrict endp, int base, unsigned short min,
unsigned short max)
{
int status;
*n = strtou_noneg(s, endp, base, min, max, &status);
if (status != 0) {
errno = status;
return -1;
}
return 0;
}
inline int
a2ui_nc(unsigned int *restrict n, char *s,
char **restrict endp, int base, unsigned int min, unsigned int max)
{
int status;
*n = strtou_noneg(s, endp, base, min, max, &status);
if (status != 0) {
errno = status;
return -1;
}
return 0;
}
inline int
a2ul_nc(unsigned long *restrict n, char *s,
char **restrict endp, int base, unsigned long min, unsigned long max)
{
int status;
*n = strtou_noneg(s, endp, base, min, max, &status);
if (status != 0) {
errno = status;
return -1;
}
return 0;
}
inline int
a2ull_nc(unsigned long long *restrict n, char *s,
char **restrict endp, int base, unsigned long long min,
unsigned long long max)
{
int status;
*n = strtou_noneg(s, endp, base, min, max, &status);
if (status != 0) {
errno = status;
return -1;
}
return 0;
}
#endif // include guard

18
lib/atoi/str2i.c Normal file
View File

@@ -0,0 +1,18 @@
// SPDX-FileCopyrightText: 2007-2009, Nicolas François
// SPDX-FileCopyrightText: 2023-2024, Alejandro Colomar <alx@kernel.org>
// SPDX-License-Identifier: BSD-3-Clause
#include <config.h>
#include "atoi/str2i.h"
extern inline int str2sh(short *restrict n, const char *restrict s);
extern inline int str2si(int *restrict n, const char *restrict s);
extern inline int str2sl(long *restrict n, const char *restrict s);
extern inline int str2sll(long long *restrict n, const char *restrict s);
extern inline int str2uh(unsigned short *restrict n, const char *restrict s);
extern inline int str2ui(unsigned int *restrict n, const char *restrict s);
extern inline int str2ul(unsigned long *restrict n, const char *restrict s);
extern inline int str2ull(unsigned long long *restrict n, const char *restrict s);

108
lib/atoi/str2i.h Normal file
View File

@@ -0,0 +1,108 @@
// SPDX-FileCopyrightText: 2007-2009, Nicolas François
// SPDX-FileCopyrightText: 2023-2024, Alejandro Colomar <alx@kernel.org>
// SPDX-License-Identifier: BSD-3-Clause
#ifndef SHADOW_INCLUDE_LIB_ATOI_STR2I_H_
#define SHADOW_INCLUDE_LIB_ATOI_STR2I_H_
#include <config.h>
#include <limits.h>
#include <stddef.h>
#include "atoi/a2i.h"
#include "attr.h"
#define str2i(TYPE, ...) \
( \
_Generic((TYPE) 0, \
short: str2sh, \
int: str2si, \
long: str2sl, \
long long: str2sll, \
unsigned short: str2uh, \
unsigned int: str2ui, \
unsigned long: str2ul, \
unsigned long long: str2ull \
)(__VA_ARGS__) \
)
ATTR_STRING(2) ATTR_ACCESS(write_only, 1)
inline int str2sh(short *restrict n, const char *restrict s);
ATTR_STRING(2) ATTR_ACCESS(write_only, 1)
inline int str2si(int *restrict n, const char *restrict s);
ATTR_STRING(2) ATTR_ACCESS(write_only, 1)
inline int str2sl(long *restrict n, const char *restrict s);
ATTR_STRING(2) ATTR_ACCESS(write_only, 1)
inline int str2sll(long long *restrict n, const char *restrict s);
ATTR_STRING(2) ATTR_ACCESS(write_only, 1)
inline int str2uh(unsigned short *restrict n, const char *restrict s);
ATTR_STRING(2) ATTR_ACCESS(write_only, 1)
inline int str2ui(unsigned int *restrict n, const char *restrict s);
ATTR_STRING(2) ATTR_ACCESS(write_only, 1)
inline int str2ul(unsigned long *restrict n, const char *restrict s);
ATTR_STRING(2) ATTR_ACCESS(write_only, 1)
inline int str2ull(unsigned long long *restrict n, const char *restrict s);
inline int
str2sh(short *restrict n, const char *restrict s)
{
return a2sh(n, s, NULL, 0, SHRT_MIN, SHRT_MAX);
}
inline int
str2si(int *restrict n, const char *restrict s)
{
return a2si(n, s, NULL, 0, INT_MIN, INT_MAX);
}
inline int
str2sl(long *restrict n, const char *restrict s)
{
return a2sl(n, s, NULL, 0, LONG_MIN, LONG_MAX);
}
inline int
str2sll(long long *restrict n, const char *restrict s)
{
return a2sll(n, s, NULL, 0, LLONG_MIN, LLONG_MAX);
}
inline int
str2uh(unsigned short *restrict n, const char *restrict s)
{
return a2uh(n, s, NULL, 0, 0, USHRT_MAX);
}
inline int
str2ui(unsigned int *restrict n, const char *restrict s)
{
return a2ui(n, s, NULL, 0, 0, UINT_MAX);
}
inline int
str2ul(unsigned long *restrict n, const char *restrict s)
{
return a2ul(n, s, NULL, 0, 0, ULONG_MAX);
}
inline int
str2ull(unsigned long long *restrict n, const char *restrict s)
{
return a2ull(n, s, NULL, 0, 0, ULLONG_MAX);
}
#endif // include guard

View File

@@ -11,8 +11,3 @@
extern inline uintmax_t strtou_noneg(const char *s, char **restrict endp,
int base, uintmax_t min, uintmax_t max, int *restrict status);
extern inline unsigned long strtoul_noneg(const char *s,
char **restrict endp, int base);
extern inline unsigned long long strtoull_noneg(const char *s,
char **restrict endp, int base);

View File

@@ -9,8 +9,8 @@
#include <config.h>
#include <errno.h>
#include <stddef.h>
#include <stdint.h>
#include <stdlib.h>
#include "atoi/strtoi.h"
#include "attr.h"
@@ -20,13 +20,6 @@ ATTR_STRING(1) ATTR_ACCESS(write_only, 2) ATTR_ACCESS(write_only, 6)
inline uintmax_t strtou_noneg(const char *s, char **restrict endp,
int base, uintmax_t min, uintmax_t max, int *restrict status);
ATTR_STRING(1) ATTR_ACCESS(write_only, 2)
inline unsigned long strtoul_noneg(const char *s,
char **restrict endp, int base);
ATTR_STRING(1) ATTR_ACCESS(write_only, 2)
inline unsigned long long strtoull_noneg(const char *s,
char **restrict endp, int base);
inline uintmax_t
strtou_noneg(const char *s, char **restrict endp, int base,
@@ -43,26 +36,4 @@ strtou_noneg(const char *s, char **restrict endp, int base,
}
inline unsigned long
strtoul_noneg(const char *s, char **restrict endp, int base)
{
if (strtol(s, endp, base) < 0) {
errno = ERANGE;
return 0;
}
return strtoul(s, endp, base);
}
inline unsigned long long
strtoull_noneg(const char *s, char **restrict endp, int base)
{
if (strtol(s, endp, base) < 0) {
errno = ERANGE;
return 0;
}
return strtoull(s, endp, base);
}
#endif // include guard

View File

@@ -8,14 +8,8 @@
#include <config.h>
#include "must_be.h"
#define const_cast(T, p) \
({ \
static_assert(is_same_type(typeof(&*(p)), const T), ""); \
(T) (p); \
})
#define const_cast(T, p) _Generic(p, const T: (T) (p))
#endif // include guard

View File

@@ -5,6 +5,7 @@
// SPDX-FileCopyrightText: 2023-2024, Alejandro Colomar <alx@kernel.org>
// SPDX-License-Identifier: BSD-3-Clause
/*
* is_valid_user_name(), is_valid_group_name() - check the new user/group
* name for validity;
@@ -13,6 +14,7 @@
* false - bad name
*/
#include <config.h>
#ident "$Id$"
@@ -20,11 +22,31 @@
#include <ctype.h>
#include <errno.h>
#include <limits.h>
#include <stdbool.h>
#include <stddef.h>
#include <unistd.h>
#include "defines.h"
#include "chkname.h"
int allow_bad_names = false;
size_t
login_name_max_size(void)
{
long conf;
errno = 0;
conf = sysconf(_SC_LOGIN_NAME_MAX);
if (conf == -1 && errno != 0)
return LOGIN_NAME_MAX;
return conf;
}
static bool is_valid_name (const char *name)
{
if (allow_bad_names) {
@@ -76,18 +98,7 @@ static bool is_valid_name (const char *name)
bool
is_valid_user_name(const char *name)
{
long conf;
size_t maxsize;
errno = 0;
conf = sysconf(_SC_LOGIN_NAME_MAX);
if (conf == -1 && errno != 0)
maxsize = LOGIN_NAME_MAX;
else
maxsize = conf;
if (strlen(name) >= maxsize)
if (strlen(name) >= login_name_max_size())
return false;
return is_valid_name(name);

View File

@@ -11,6 +11,7 @@
#ifndef _CHKNAME_H_
#define _CHKNAME_H_
/*
* is_valid_user_name(), is_valid_group_name() - check the new user/group
* name for validity;
@@ -19,8 +20,14 @@
* false - bad name
*/
#include "defines.h"
#include <config.h>
#include <stdbool.h>
#include <stddef.h>
extern size_t login_name_max_size(void);
extern bool is_valid_user_name (const char *name);
extern bool is_valid_group_name (const char *name);

View File

@@ -127,30 +127,18 @@ void addenv (const char *string, /*@null@*/const char *value)
if ((newenvc & (NEWENVP_STEP - 1)) == 0) {
bool update_environ;
char **__newenvp;
/*
* If the resize operation succeeds we can
* happily go on, else print a message.
*/
update_environ = (environ == newenvp);
__newenvp = REALLOC(newenvp, newenvc + NEWENVP_STEP, char *);
newenvp = XREALLOC(newenvp, newenvc + NEWENVP_STEP, char *);
if (NULL != __newenvp) {
/*
* If this is our current environment, update
* environ so that it doesn't point to some
* free memory area (realloc() could move it).
*/
if (update_environ)
environ = __newenvp;
newenvp = __newenvp;
} else {
(void) fputs (_("Environment overflow\n"), log_get_logfd());
newenvc--;
free (newenvp[newenvc]);
}
/*
* If this is our current environment, update
* environ so that it doesn't point to some
* free memory area (realloc() could move it).
*/
if (update_environ)
environ = newenvp;
}
/*

View File

@@ -16,13 +16,13 @@
int
get_gid(const char *gidstr, gid_t *gid)
{
char *end;
long long val;
char *endptr;
errno = 0;
val = strtoll(gidstr, &endptr, 10);
val = strtoll(gidstr, &end, 10);
if ( ('\0' == *gidstr)
|| ('\0' != *endptr)
|| ('\0' != *end)
|| (0 != errno)
|| (/*@+longintegral@*/val != (gid_t)val)/*@=longintegral@*/) {
return -1;

View File

@@ -17,15 +17,16 @@
#include "string/sprintf.h"
int get_pid (const char *pidstr, pid_t *pid)
int
get_pid(const char *pidstr, pid_t *pid)
{
char *end;
long long val;
char *endptr;
errno = 0;
val = strtoll(pidstr, &endptr, 10);
val = strtoll(pidstr, &end, 10);
if ( ('\0' == *pidstr)
|| ('\0' != *endptr)
|| ('\0' != *end)
|| (0 != errno)
|| (val < 1)
|| (/*@+longintegral@*/val != (pid_t)val)/*@=longintegral@*/) {
@@ -43,15 +44,15 @@ int get_pid (const char *pidstr, pid_t *pid)
*/
int get_pidfd_from_fd(const char *pidfdstr)
{
long long val;
char *endptr;
struct stat st;
char *end;
long long val;
struct stat st;
dev_t proc_st_dev, proc_st_rdev;
errno = 0;
val = strtoll(pidfdstr, &endptr, 10);
val = strtoll(pidfdstr, &end, 10);
if ( ('\0' == *pidfdstr)
|| ('\0' != *endptr)
|| ('\0' != *end)
|| (0 != errno)
|| (val < 0)
|| (/*@+longintegral@*/val != (int)val)/*@=longintegral@*/) {

View File

@@ -16,13 +16,13 @@
int
get_uid(const char *uidstr, uid_t *uid)
{
char *end;
long long val;
char *endptr;
errno = 0;
val = strtoll(uidstr, &endptr, 10);
val = strtoll(uidstr, &end, 10);
if ( ('\0' == *uidstr)
|| ('\0' != *endptr)
|| ('\0' != *end)
|| (0 != errno)
|| (/*@+longintegral@*/val != (uid_t)val)/*@=longintegral@*/) {
return -1;

View File

@@ -23,6 +23,7 @@
#endif
#include "alloc.h"
#include "atoi/str2i.h"
#include "getdef.h"
#include "shadowlog_internal.h"
#include "string/sprintf.h"
@@ -245,7 +246,7 @@ int getdef_num (const char *item, int dflt)
return dflt;
}
if ( (getlong(d->value, &val) == -1)
if ( (str2sl(&val, d->value) == -1)
|| (val > INT_MAX)
|| (val < -1)) {
fprintf (shadow_logfd,
@@ -280,7 +281,7 @@ unsigned int getdef_unum (const char *item, unsigned int dflt)
return dflt;
}
if ( (getlong(d->value, &val) == -1)
if ( (str2sl(&val, d->value) == -1)
|| (val < 0)
|| (val > INT_MAX)) {
fprintf (shadow_logfd,
@@ -315,7 +316,7 @@ long getdef_long (const char *item, long dflt)
return dflt;
}
if (getlong(d->value, &val) == -1 || val < -1) {
if (str2sl(&val, d->value) == -1 || val < -1) {
fprintf (shadow_logfd,
_("configuration error - cannot parse %s value: '%s'"),
item, d->value);
@@ -347,7 +348,7 @@ unsigned long getdef_ulong (const char *item, unsigned long dflt)
return dflt;
}
if (getulong(d->value, &val) == -1) {
if (str2ul(&val, d->value) == -1) {
fprintf (shadow_logfd,
_("configuration error - cannot parse %s value: '%s'"),
item, d->value);

View File

@@ -23,17 +23,17 @@
*/
extern /*@only@*//*@null@*/struct group *getgr_nam_gid (/*@null@*/const char *grname)
{
char *end;
long long gid;
char *endptr;
if (NULL == grname) {
return NULL;
}
errno = 0;
gid = strtoll(grname, &endptr, 10);
gid = strtoll(grname, &end, 10);
if ( ('\0' != *grname)
&& ('\0' == *endptr)
&& ('\0' == *end)
&& (0 == errno)
&& (/*@+longintegral@*/gid == (gid_t)gid)/*@=longintegral@*/) {
return xgetgrgid (gid);

View File

@@ -1,36 +0,0 @@
/*
* SPDX-FileCopyrightText: 2007 - 2009, Nicolas François
*
* SPDX-License-Identifier: BSD-3-Clause
*/
#include <config.h>
#ident "$Id$"
#include <stdlib.h>
#include <errno.h>
#include "prototypes.h"
/*
* getlong - extract a long integer provided by the numstr string in *result
*
* It supports decimal, hexadecimal or octal representations.
*/
int
getlong(const char *restrict numstr, long *restrict result)
{
char *endptr;
long val;
errno = 0;
val = strtol(numstr, &endptr, 0);
if (('\0' == *numstr) || ('\0' != *endptr) || (0 != errno))
return -1;
*result = val;
return 0;
}

View File

@@ -1,8 +1,6 @@
/*
* SPDX-FileCopyrightText: 2008 , Nicolas François
*
* SPDX-License-Identifier: BSD-3-Clause
*/
// SPDX-FileCopyrightText: 2008, Nicolas François
// SPDX-FileCopyrightText: 2023-2024, Alejandro Colomar <alx@kernel.org>
// SPDX-License-Identifier: BSD-3-Clause
#include <config.h>
@@ -12,7 +10,7 @@
#include <ctype.h>
#include <stdlib.h>
#include "atoi/strtou_noneg.h"
#include "atoi/a2i.h"
#include "defines.h"
#include "prototypes.h"
@@ -30,65 +28,44 @@ getrange(const char *range,
unsigned long *min, bool *has_min,
unsigned long *max, bool *has_max)
{
char *endptr;
unsigned long n;
const char *end;
if (NULL == range)
return -1;
*min = 0;
*has_min = false;
*has_max = false;
if ('-' == range[0]) {
if (!isdigit(range[1]))
return -1;
errno = 0;
n = strtoul_noneg(&range[1], &endptr, 10);
if (('\0' != *endptr) || (0 != errno))
return -1;
/* -<long> */
*has_min = false;
*has_max = true;
*max = n;
} else {
errno = 0;
n = strtoul_noneg(range, &endptr, 10);
if (endptr == range || 0 != errno)
return -1;
switch (*endptr) {
case '\0':
/* <long> */
*has_min = true;
*has_max = true;
*min = n;
*max = n;
break;
case '-':
endptr++;
if ('\0' == *endptr) {
/* <long>- */
*has_min = true;
*has_max = false;
*min = n;
} else if (!isdigit (*endptr)) {
return -1;
} else {
*has_min = true;
*min = n;
errno = 0;
n = strtoul_noneg(endptr, &endptr, 10);
if ('\0' != *endptr || 0 != errno)
return -1;
/* <long>-<long> */
*has_max = true;
*max = n;
}
break;
default:
return -1;
}
end = range + 1;
goto parse_max;
}
return 0;
if (a2ul(min, range, &end, 10, 0, ULONG_MAX) == -1 && errno != ENOTSUP)
return -1;
*has_min = true;
switch (*end++) {
case '\0':
*has_max = true;
*max = *min;
return 0; /* <long> */
case '-':
if ('\0' == *end)
return 0; /* <long>- */
parse_max:
if (!isdigit((unsigned char) *end))
return -1;
if (a2ul(max, end, NULL, 10, *min, ULONG_MAX) == -1)
return -1;
*has_max = true;
return 0; /* <long>-<long>, or -<long> */
default:
return -1;
}
}

View File

@@ -1,8 +1,7 @@
/*
* SPDX-FileCopyrightText: 2017, Chris Lamb
*
* SPDX-License-Identifier: BSD-3-Clause
*/
// SPDX-FileCopyrightText: 2017, Chris Lamb
// SPDX-FileCopyrightText: 2023-2024, Alejandro Colomar <alx@kernel.org>
// SPDX-License-Identifier: BSD-3-Clause
#include <config.h>
@@ -12,11 +11,12 @@
#include <limits.h>
#include <stdio.h>
#include "atoi/strtou_noneg.h"
#include "atoi/a2i.h"
#include "defines.h"
#include "prototypes.h"
#include "shadowlog.h"
/*
* gettime() returns the time as the number of seconds since the Epoch
*
@@ -24,13 +24,12 @@
* Epoch, 1970-01-01 00:00:00 +0000 (UTC), except that if the SOURCE_DATE_EPOCH
* environment variable is exported it will use that instead.
*/
/*@observer@*/time_t gettime (void)
/*@observer@*/time_t
gettime(void)
{
char *endptr;
char *source_date_epoch;
time_t fallback;
unsigned long long epoch;
FILE *shadow_logfd = log_get_logfd();
char *source_date_epoch;
FILE *shadow_logfd = log_get_logfd();
time_t fallback, epoch;
fallback = time (NULL);
source_date_epoch = shadow_getenv ("SOURCE_DATE_EPOCH");
@@ -38,32 +37,11 @@
if (!source_date_epoch)
return fallback;
errno = 0;
epoch = strtoull_noneg(source_date_epoch, &endptr, 10);
if (errno != 0) {
fprintf (shadow_logfd,
_("Environment variable $SOURCE_DATE_EPOCH: strtoull: %s\n"),
strerror(errno));
} else if (endptr == source_date_epoch) {
fprintf (shadow_logfd,
_("Environment variable $SOURCE_DATE_EPOCH: No digits were found: %s\n"),
endptr);
} else if (*endptr != '\0') {
fprintf (shadow_logfd,
_("Environment variable $SOURCE_DATE_EPOCH: Trailing garbage: %s\n"),
endptr);
} else if (epoch > ULONG_MAX) {
fprintf (shadow_logfd,
_("Environment variable $SOURCE_DATE_EPOCH: value must be smaller than or equal to %lu but was found to be: %llu\n"),
ULONG_MAX, epoch);
} else if ((time_t)epoch > fallback) {
fprintf (shadow_logfd,
_("Environment variable $SOURCE_DATE_EPOCH: value must be smaller than or equal to the current time (%lu) but was found to be: %llu\n"),
fallback, epoch);
} else {
/* Valid */
return epoch;
if (a2i(time_t, &epoch, source_date_epoch, NULL, 10, 0, fallback) == -1) {
fprintf(shadow_logfd,
_("Environment variable $SOURCE_DATE_EPOCH: a2i(\"%s\"): %s"),
source_date_epoch, strerror(errno));
return fallback;
}
return fallback;
return epoch;
}

View File

@@ -1,37 +0,0 @@
/*
* SPDX-FileCopyrightText: 2007 - 2009, Nicolas François
*
* SPDX-License-Identifier: BSD-3-Clause
*/
#include <config.h>
#ident "$Id: getlong.c 2763 2009-04-23 09:57:03Z nekral-guest $"
#include <stdlib.h>
#include <errno.h>
#include "atoi/strtou_noneg.h"
#include "prototypes.h"
/*
* getulong - extract an unsigned long integer provided by the numstr string in *result
*
* It supports decimal, hexadecimal or octal representations.
*/
int
getulong(const char *restrict numstr, unsigned long *restrict result)
{
char *endptr;
unsigned long val;
errno = 0;
val = strtoul_noneg(numstr, &endptr, 0);
if (('\0' == *numstr) || ('\0' != *endptr) || (0 != errno))
return -1;
*result = val;
return 0;
}

View File

@@ -14,6 +14,7 @@
#include <strings.h>
#include "alloc.h"
#include "atoi/str2i.h"
#include "prototypes.h"
#include "string/stpeprintf.h"
#include "idmapping.h"
@@ -24,6 +25,7 @@
#include "shadowlog.h"
#include "sizeof.h"
struct map_range *get_map_ranges(int ranges, int argc, char **argv)
{
struct map_range *mappings, *mapping;
@@ -49,15 +51,15 @@ struct map_range *get_map_ranges(int ranges, int argc, char **argv)
/* Gather up the ranges from the command line */
mapping = mappings;
for (idx = 0, argidx = 0; idx < ranges; idx++, argidx += 3, mapping++) {
if (getulong(argv[argidx + 0], &mapping->upper) == -1) {
if (str2ul(&mapping->upper, argv[argidx + 0]) == -1) {
free(mappings);
return NULL;
}
if (getulong(argv[argidx + 1], &mapping->lower) == -1) {
if (str2ul(&mapping->lower, argv[argidx + 1]) == -1) {
free(mappings);
return NULL;
}
if (getulong(argv[argidx + 2], &mapping->count) == -1) {
if (str2ul(&mapping->count, argv[argidx + 2]) == -1) {
free(mappings);
return NULL;
}

View File

@@ -29,7 +29,11 @@
#include "getdef.h"
#include "shadowlog.h"
#include <sys/resource.h>
#include "atoi/str2i.h"
#include "memzero.h"
#ifndef LIMITS_FILE
#define LIMITS_FILE "/etc/limits"
#endif
@@ -45,7 +49,7 @@ static int setrlimit_value (unsigned int resource,
const char *value,
unsigned int multiplier)
{
char *endptr;
char *end;
long l;
rlim_t limit;
struct rlimit rlim;
@@ -57,15 +61,15 @@ static int setrlimit_value (unsigned int resource,
limit = RLIM_INFINITY;
}
else {
/* We cannot use getlong here because it fails when there
/* We cannot use str2sl() here because it fails when there
* is more to the value than just this number!
* Also, we are limited to base 10 here (hex numbers will not
* work with the limit string parser as is anyway)
*/
errno = 0;
l = strtol(value, &endptr, 10);
l = strtol(value, &end, 10);
if (value == endptr || errno != 0)
if (value == end || errno != 0)
return 0; // FIXME: We could instead throw an error, though.
if (__builtin_mul_overflow(l, multiplier, &limit)) {
@@ -89,7 +93,7 @@ static int set_prio (const char *value)
{
long prio;
if ( (getlong(value, &prio) == -1)
if ( (str2sl(&prio, value) == -1)
|| (prio != (int) prio)) {
return 0;
}
@@ -104,7 +108,7 @@ static int set_umask (const char *value)
{
unsigned long mask;
if ( (getulong(value, &mask) == -1)
if ( (str2ul(&mask, value) == -1)
|| (mask != (mode_t) mask)) {
return 0;
}
@@ -119,7 +123,7 @@ static int check_logins (const char *name, const char *maxlogins)
{
unsigned long limit, count;
if (getulong(maxlogins, &limit) == -1) {
if (str2ul(&limit, maxlogins) == -1) {
return 0;
}
@@ -482,7 +486,7 @@ void setup_limits (const struct passwd *info)
if (strncmp (cp, "pri=", 4) == 0) {
long inc;
if ( (getlong(cp + 4, &inc) == 0)
if ( (str2sl(&inc, cp + 4) == 0)
&& (inc >= -20) && (inc <= 20)) {
errno = 0;
if ( (nice (inc) != -1)
@@ -500,7 +504,7 @@ void setup_limits (const struct passwd *info)
}
if (strncmp (cp, "ulimit=", 7) == 0) {
long blocks;
if ( (getlong(cp + 7, &blocks) == -1)
if ( (str2sl(&blocks, cp + 7) == -1)
|| (blocks != (int) blocks)
|| (set_filesize_limit (blocks) != 0)) {
SYSLOG ((LOG_WARN,
@@ -512,7 +516,7 @@ void setup_limits (const struct passwd *info)
if (strncmp (cp, "umask=", 6) == 0) {
unsigned long mask;
if ( (getulong(cp + 6, &mask) == -1)
if ( (str2ul(&mask, cp + 6) == -1)
|| (mask != (mode_t) mask)) {
SYSLOG ((LOG_WARN,
"Can't set umask value for user %s",

View File

@@ -131,6 +131,11 @@ void nss_init(const char *nsswitch_path) {
fprintf(shadow_logfd, "%s did not provide @find_subid_owners@\n", libname);
goto close_lib;
}
subid_nss->free = dlsym(h, "shadow_subid_free");
if (!subid_nss->free) {
fprintf(shadow_logfd, "%s did not provide @subid_free@\n", libname);
goto close_lib;
}
subid_nss->handle = h;
goto done;

View File

@@ -168,7 +168,7 @@ again:
}
*cp = '\0';
cp++;
port.pt_names[j + 1] = NULL;
port.pt_names[j] = NULL;
/*
* Get the list of user names. It is the second colon

View File

@@ -334,9 +334,9 @@ extern void prefix_endgrent(void)
extern struct group *prefix_getgr_nam_gid(const char *grname)
{
long long gid;
char *endptr;
struct group *g;
char *end;
long long gid;
struct group *g;
if (NULL == grname) {
return NULL;
@@ -346,9 +346,9 @@ extern struct group *prefix_getgr_nam_gid(const char *grname)
return getgr_nam_gid(grname);
errno = 0;
gid = strtoll(grname, &endptr, 10);
gid = strtoll(grname, &end, 10);
if ( ('\0' != *grname)
&& ('\0' == *endptr)
&& ('\0' == *end)
&& (0 == errno)
&& (gid == (gid_t)gid))
{

View File

@@ -149,10 +149,6 @@ extern int get_gid (const char *gidstr, gid_t *gid);
/* getgr_nam_gid.c */
extern /*@only@*//*@null@*/struct group *getgr_nam_gid (/*@null@*/const char *grname);
/* getlong.c */
ATTR_ACCESS(write_only, 2)
extern int getlong(const char *restrict numstr, long *restrict result);
/* get_pid.c */
extern int get_pid (const char *pidstr, pid_t *pid);
extern int get_pidfd_from_fd(const char *pidfdstr);
@@ -169,10 +165,6 @@ extern time_t gettime (void);
/* get_uid.c */
extern int get_uid (const char *uidstr, uid_t *uid);
/* getulong.c */
ATTR_ACCESS(write_only, 2)
extern int getulong(const char *restrict numstr, unsigned long *restrict result);
/* fputsx.c */
ATTR_ACCESS(write_only, 1, 2)
extern /*@null@*/char *fgetsx(/*@returned@*/char *restrict, int, FILE *restrict);
@@ -292,6 +284,19 @@ struct subid_nss_ops {
*/
enum subid_status (*find_subid_owners)(unsigned long id, enum subid_type id_type, uid_t **uids, int *count);
/*
* nss_free: free a memory block allocated by a subid plugin.
*
* @ptr - a pointer to a memory block to deallocate
*
* Some routines of subid_nss_ops allocate memory which should be freed by
* caller after use. In order to deallocate that memory block, one should
* use this routine to release that memory. By default, this function
* pointer is set to free(3) for backward compatibility. However, it is
* strongly recommended to define this routine explicitly.
*/
void (*free)(void *ptr);
/* The dlsym handle to close */
void *handle;
};
@@ -364,10 +369,6 @@ unsigned long csrand_interval (unsigned long min, unsigned long max);
/* remove_tree.c */
extern int remove_tree (const char *root, bool remove_root);
/* rlogin.c */
extern int do_rlogin(const char *remote_host, char *name, size_t namesize,
char *term, size_t termsize);
/* root_flag.c */
extern void process_root_flag (const char* short_opt, int argc, char **argv);

View File

@@ -1,132 +0,0 @@
/*
* SPDX-FileCopyrightText: 1989 - 1994, Julianne Frances Haugh
* SPDX-FileCopyrightText: 1996 - 1999, Marek Michałkiewicz
* SPDX-FileCopyrightText: 2003 - 2005, Tomasz Kłoczko
* SPDX-FileCopyrightText: 2007 - 2008, Nicolas François
*
* SPDX-License-Identifier: BSD-3-Clause
*/
#include <config.h>
#ifdef RLOGIN
#ident "$Id$"
#include "prototypes.h"
#include "defines.h"
#include <stdio.h>
#include <pwd.h>
#include <netdb.h>
static struct {
int spd_name;
int spd_baud;
} speed_table[] =
{
{ B50, 50},
{ B75, 75},
{ B110, 110},
{ B134, 134},
{ B150, 150},
{ B200, 200},
{ B300, 300},
{ B600, 600},
{ B1200, 1200},
{ B1800, 1800},
{ B2400, 2400},
{ B4800, 4800},
{ B9600, 9600},
{ B19200, 19200},
{ B38400, 38400},
{ -1, -1}
};
static void
get_remote_string(char *buf, size_t size)
{
for (;;) {
if (read (0, buf, 1) != 1) {
exit (EXIT_FAILURE);
}
if ('\0' == *buf) {
return;
}
--size;
if (size > 0) {
++buf;
}
}
/*NOTREACHED*/
}
int
do_rlogin(const char *remote_host, char *name, size_t namesize, char *term,
size_t termsize)
{
struct passwd *pwd;
char remote_name[32];
char *cp;
unsigned long remote_speed = 9600;
int speed_name = B9600;
int i;
TERMIO termio;
get_remote_string(remote_name, sizeof(remote_name));
get_remote_string(name, namesize);
get_remote_string(term, termsize);
cp = strchr (term, '/');
if (NULL != cp) {
*cp = '\0';
cp++;
if (getulong(cp, &remote_speed) == -1) {
remote_speed = 9600;
}
}
for (i = 0;
( (speed_table[i].spd_baud != remote_speed)
&& (speed_table[i].spd_name != -1));
i++);
if (-1 != speed_table[i].spd_name) {
speed_name = speed_table[i].spd_name;
}
/*
* Put the terminal in cooked mode with echo turned on.
*/
GTTY (0, &termio);
termio.c_iflag |= ICRNL | IXON;
termio.c_oflag |= OPOST | ONLCR;
termio.c_lflag |= ICANON | ECHO | ECHOE;
#ifdef CBAUD
termio.c_cflag = (termio.c_cflag & ~CBAUD) | speed_name;
#else
termio.c_cflag = (termio.c_cflag) | speed_name;
#endif
STTY (0, &termio);
pwd = getpwnam (name); /* local, no need for xgetpwnam */
if (NULL == pwd) {
return 0;
}
/*
* ruserok() returns 0 for success on modern systems, and 1 on
* older ones. If you are having trouble with people logging
* in without giving a required password, THIS is the culprit -
* go fix the #define in config.h.
*/
#ifndef RUSEROK
return 0;
#else
return ruserok (remote_host, pwd->pw_uid == 0,
remote_name, name) == RUSEROK;
#endif
}
#endif /* RLOGIN */

View File

@@ -19,6 +19,7 @@
#include <sys/types.h>
#include <string.h>
#include "atoi/str2i.h"
#include "prototypes.h"
#include "shadowlog_internal.h"
#include "defines.h"
@@ -97,7 +98,7 @@ sgetspent(const char *string)
if (fields[2][0] == '\0') {
spwd.sp_lstchg = -1;
} else if ( (getlong(fields[2], &spwd.sp_lstchg) == -1)
} else if ( (str2sl(&spwd.sp_lstchg, fields[2]) == -1)
|| (spwd.sp_lstchg < 0)) {
return NULL;
}
@@ -108,7 +109,7 @@ sgetspent(const char *string)
if (fields[3][0] == '\0') {
spwd.sp_min = -1;
} else if ( (getlong(fields[3], &spwd.sp_min) == -1)
} else if ( (str2sl(&spwd.sp_min, fields[3]) == -1)
|| (spwd.sp_min < 0)) {
return NULL;
}
@@ -119,7 +120,7 @@ sgetspent(const char *string)
if (fields[4][0] == '\0') {
spwd.sp_max = -1;
} else if ( (getlong(fields[4], &spwd.sp_max) == -1)
} else if ( (str2sl(&spwd.sp_max, fields[4]) == -1)
|| (spwd.sp_max < 0)) {
return NULL;
}
@@ -144,7 +145,7 @@ sgetspent(const char *string)
if (fields[5][0] == '\0') {
spwd.sp_warn = -1;
} else if ( (getlong(fields[5], &spwd.sp_warn) == -1)
} else if ( (str2sl(&spwd.sp_warn, fields[5]) == -1)
|| (spwd.sp_warn < 0)) {
return NULL;
}
@@ -156,7 +157,7 @@ sgetspent(const char *string)
if (fields[6][0] == '\0') {
spwd.sp_inact = -1;
} else if ( (getlong(fields[6], &spwd.sp_inact) == -1)
} else if ( (str2sl(&spwd.sp_inact, fields[6]) == -1)
|| (spwd.sp_inact < 0)) {
return NULL;
}
@@ -168,7 +169,7 @@ sgetspent(const char *string)
if (fields[7][0] == '\0') {
spwd.sp_expire = -1;
} else if ( (getlong(fields[7], &spwd.sp_expire) == -1)
} else if ( (str2sl(&spwd.sp_expire, fields[7]) == -1)
|| (spwd.sp_expire < 0)) {
return NULL;
}
@@ -180,7 +181,7 @@ sgetspent(const char *string)
if (fields[8][0] == '\0') {
spwd.sp_flag = SHADOW_SP_FLAG_UNSET;
} else if (getulong(fields[8], &spwd.sp_flag) == -1) {
} else if (str2ul(&spwd.sp_flag, fields[8]) == -1) {
return NULL;
}

View File

@@ -19,6 +19,8 @@
#include "defines.h"
#include <stdio.h>
#include "atoi/str2i.h"
static FILE *shadow;
@@ -116,7 +118,7 @@ static struct spwd *my_sgetspent (const char *string)
if (fields[2][0] == '\0') {
spwd.sp_lstchg = -1;
} else {
if (getlong(fields[2], &spwd.sp_lstchg) == -1)
if (str2sl(&spwd.sp_lstchg, fields[2]) == -1)
return 0;
if (spwd.sp_lstchg < 0)
return 0;
@@ -129,7 +131,7 @@ static struct spwd *my_sgetspent (const char *string)
if (fields[3][0] == '\0') {
spwd.sp_min = -1;
} else {
if (getlong(fields[3], &spwd.sp_min) == -1)
if (str2sl(&spwd.sp_min, fields[3]) == -1)
return 0;
if (spwd.sp_min < 0)
return 0;
@@ -142,7 +144,7 @@ static struct spwd *my_sgetspent (const char *string)
if (fields[4][0] == '\0') {
spwd.sp_max = -1;
} else {
if (getlong(fields[4], &spwd.sp_max) == -1)
if (str2sl(&spwd.sp_max, fields[4]) == -1)
return 0;
if (spwd.sp_max < 0)
return 0;
@@ -169,7 +171,7 @@ static struct spwd *my_sgetspent (const char *string)
if (fields[5][0] == '\0') {
spwd.sp_warn = -1;
} else {
if (getlong(fields[5], &spwd.sp_warn) == -1)
if (str2sl(&spwd.sp_warn, fields[5]) == -1)
return 0;
if (spwd.sp_warn < 0)
return 0;
@@ -183,7 +185,7 @@ static struct spwd *my_sgetspent (const char *string)
if (fields[6][0] == '\0') {
spwd.sp_inact = -1;
} else {
if (getlong(fields[6], &spwd.sp_inact) == -1)
if (str2sl(&spwd.sp_inact, fields[6]) == -1)
return 0;
if (spwd.sp_inact < 0)
return 0;
@@ -197,7 +199,7 @@ static struct spwd *my_sgetspent (const char *string)
if (fields[7][0] == '\0') {
spwd.sp_expire = -1;
} else {
if (getlong(fields[7], &spwd.sp_expire) == -1)
if (str2sl(&spwd.sp_expire, fields[7]) == -1)
return 0;
if (spwd.sp_expire < 0)
return 0;
@@ -211,7 +213,7 @@ static struct spwd *my_sgetspent (const char *string)
if (fields[8][0] == '\0') {
spwd.sp_flag = SHADOW_SP_FLAG_UNSET;
} else {
if (getulong(fields[8], &spwd.sp_flag) == -1)
if (str2ul(&spwd.sp_flag, fields[8]) == -1)
return 0;
if (spwd.sp_flag < 0)
return 0;

View File

@@ -13,9 +13,11 @@
#ident "$Id$"
#include "atoi/str2i.h"
#include "prototypes.h"
#include "getdate.h"
/*
* strtoday() now uses get_date() (borrowed from GNU shellutils)
* which can handle many date formats, for example:
@@ -62,9 +64,8 @@ long strtoday (const char *str)
}
if (isnum) {
long retdate;
if (getlong(str, &retdate) == -1) {
if (str2sl(&retdate, str) == -1)
return -2;
}
return retdate;
}

View File

@@ -19,6 +19,7 @@
#include <string.h>
#include "alloc.h"
#include "atoi/str2i.h"
#include "string/sprintf.h"
@@ -107,9 +108,9 @@ subordinate_parse(const char *line)
if (i != SUBID_NFIELDS || *fields[0] == '\0' || *fields[1] == '\0' || *fields[2] == '\0')
return NULL;
range.owner = fields[0];
if (getulong(fields[1], &range.start) == -1)
if (str2ul(&range.start, fields[1]) == -1)
return NULL;
if (getulong(fields[2], &range.count) == -1)
if (str2ul(&range.count, fields[2]) == -1)
return NULL;
return &range;
@@ -1116,6 +1117,16 @@ bool release_subid_range(struct subordinate_range *range, enum subid_type id_typ
return ret;
}
void free_subid_pointer(void *ptr)
{
struct subid_nss_ops *h = get_subid_nss_handle();
if (h) {
h->free(ptr);
} else {
free(ptr);
}
}
#else /* !ENABLE_SUBIDS */
extern int ISO_C_forbids_an_empty_translation_unit;
#endif /* !ENABLE_SUBIDS */

View File

@@ -43,6 +43,9 @@ extern int sub_gid_unlock (void);
extern int sub_gid_add (const char *owner, gid_t start, unsigned long count);
extern int sub_gid_remove (const char *owner, gid_t start, unsigned long count);
extern uid_t sub_gid_find_free_range(gid_t min, gid_t max, unsigned long count);
extern void free_subid_pointer(void *ptr);
#endif /* ENABLE_SUBIDS */
#endif

View File

@@ -42,6 +42,11 @@ bool subid_init(const char *progname, FILE * logfd)
return true;
}
void subid_free(void *ptr)
{
free_subid_pointer(ptr);
}
static
int get_subid_ranges(const char *owner, enum subid_type id_type, struct subid_range **ranges)
{

View File

@@ -4,8 +4,8 @@
#ifndef SUBID_RANGE_DEFINED
#define SUBID_RANGE_DEFINED 1
#define SUBID_ABI_VERSION 4.0.0
#define SUBID_ABI_MAJOR 4
#define SUBID_ABI_VERSION 5.0.0
#define SUBID_ABI_MAJOR 5
#define SUBID_ABI_MINOR 0
#define SUBID_ABI_MICRO 0
@@ -55,6 +55,19 @@ extern "C" {
*/
bool subid_init(const char *progname, FILE *logfd);
/*
* subid_free: free memory allocated in any subid_* function
*
* @ptr: Pointer to a memory block to release.
*
* Some functions like @subid_get_uid_ranges allocate memory internally. As
* soon as a result is no longer needed, it should be freed with this routine.
* Initially, default function `free()` was used. Thus for backward
* compatibility this function falls back to `free()` if a plugin does not
* explicitly specify routine to free allocated memory.
*/
void subid_free(void *ptr);
/*
* subid_get_uid_ranges: return a list of UID ranges for a user
*

View File

@@ -55,6 +55,19 @@ extern "C" {
*/
bool subid_init(const char *progname, FILE *logfd);
/*
* subid_free: free memory allocated in any subid_* function
*
* @ptr: Pointer to a memory block to release.
*
* Some functions like @subid_get_uid_ranges allocate memory internally. As
* soon as a result is no longer needed, it should be freed with this routine.
* Initially, default function `free()` was used. Thus for backward
* compatibility this function falls back to `free()` if a plugin does not
* explicitly specify routine to free allocated memory.
*/
void subid_free(void *ptr);
/*
* subid_get_uid_ranges: return a list of UID ranges for a user
*

View File

@@ -1,2 +1,2 @@
<!ENTITY GROUP_NAME_MAX_LENGTH '32'>
<!ENTITY SHADOW_UTILS_VERSION '4.15.1'>
<!ENTITY SHADOW_UTILS_VERSION '4.16.0'>

View File

@@ -2,12 +2,12 @@
.\" Title: chfn
.\" Author: Julianne Frances Haugh
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
.\" Date: 23/03/2024
.\" Date: 18/06/2024
.\" Manual: User Commands
.\" Source: shadow-utils 4.15.1
.\" Source: shadow-utils 4.16.0
.\" Language: Danish
.\"
.TH "CHFN" "1" "23/03/2024" "shadow\-utils 4\&.15\&.1" "User Commands"
.TH "CHFN" "1" "18/06/2024" "shadow\-utils 4\&.16\&.0" "User Commands"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------

View File

@@ -2,12 +2,12 @@
.\" Title: groups
.\" Author: Julianne Frances Haugh
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
.\" Date: 23/03/2024
.\" Date: 18/06/2024
.\" Manual: User Commands
.\" Source: shadow-utils 4.15.1
.\" Source: shadow-utils 4.16.0
.\" Language: Danish
.\"
.TH "GROUPS" "1" "23/03/2024" "shadow\-utils 4\&.15\&.1" "User Commands"
.TH "GROUPS" "1" "18/06/2024" "shadow\-utils 4\&.16\&.0" "User Commands"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------

View File

@@ -2,12 +2,12 @@
.\" Title: id
.\" Author: Julianne Frances Haugh
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
.\" Date: 23/03/2024
.\" Date: 18/06/2024
.\" Manual: User Commands
.\" Source: shadow-utils 4.15.1
.\" Source: shadow-utils 4.16.0
.\" Language: Danish
.\"
.TH "ID" "1" "23/03/2024" "shadow\-utils 4\&.15\&.1" "User Commands"
.TH "ID" "1" "18/06/2024" "shadow\-utils 4\&.16\&.0" "User Commands"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------

View File

@@ -2,12 +2,12 @@
.\" Title: newgrp
.\" Author: Julianne Frances Haugh
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
.\" Date: 23/03/2024
.\" Date: 18/06/2024
.\" Manual: User Commands
.\" Source: shadow-utils 4.15.1
.\" Source: shadow-utils 4.16.0
.\" Language: Danish
.\"
.TH "NEWGRP" "1" "23/03/2024" "shadow\-utils 4\&.15\&.1" "User Commands"
.TH "NEWGRP" "1" "18/06/2024" "shadow\-utils 4\&.16\&.0" "User Commands"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------

View File

@@ -2,12 +2,12 @@
.\" Title: sg
.\" Author: Julianne Frances Haugh
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
.\" Date: 23/03/2024
.\" Date: 18/06/2024
.\" Manual: User Commands
.\" Source: shadow-utils 4.15.1
.\" Source: shadow-utils 4.16.0
.\" Language: Danish
.\"
.TH "SG" "1" "23/03/2024" "shadow\-utils 4\&.15\&.1" "User Commands"
.TH "SG" "1" "18/06/2024" "shadow\-utils 4\&.16\&.0" "User Commands"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------

View File

@@ -2,12 +2,12 @@
.\" Title: gshadow
.\" Author: Nicolas Fran\(,cois <nicolas.francois@centraliens.net>
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
.\" Date: 23/03/2024
.\" Date: 18/06/2024
.\" Manual: File Formats and Configuration Files
.\" Source: shadow-utils 4.15.1
.\" Source: shadow-utils 4.16.0
.\" Language: Danish
.\"
.TH "GSHADOW" "5" "23/03/2024" "shadow\-utils 4\&.15\&.1" "File Formats and Configuration"
.TH "GSHADOW" "5" "18/06/2024" "shadow\-utils 4\&.16\&.0" "File Formats and Configuration"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------

View File

@@ -2,12 +2,12 @@
.\" Title: groupdel
.\" Author: Julianne Frances Haugh
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
.\" Date: 23/03/2024
.\" Date: 18/06/2024
.\" Manual: System Management Commands
.\" Source: shadow-utils 4.15.1
.\" Source: shadow-utils 4.16.0
.\" Language: Danish
.\"
.TH "GROUPDEL" "8" "23/03/2024" "shadow\-utils 4\&.15\&.1" "System Management Commands"
.TH "GROUPDEL" "8" "18/06/2024" "shadow\-utils 4\&.16\&.0" "System Management Commands"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------

View File

@@ -2,12 +2,12 @@
.\" Title: logoutd
.\" Author: Julianne Frances Haugh
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
.\" Date: 23/03/2024
.\" Date: 18/06/2024
.\" Manual: System Management Commands
.\" Source: shadow-utils 4.15.1
.\" Source: shadow-utils 4.16.0
.\" Language: Danish
.\"
.TH "LOGOUTD" "8" "23/03/2024" "shadow\-utils 4\&.15\&.1" "System Management Commands"
.TH "LOGOUTD" "8" "18/06/2024" "shadow\-utils 4\&.16\&.0" "System Management Commands"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------

View File

@@ -2,12 +2,12 @@
.\" Title: nologin
.\" Author: Nicolas Fran\(,cois <nicolas.francois@centraliens.net>
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
.\" Date: 23/03/2024
.\" Date: 18/06/2024
.\" Manual: System Management Commands
.\" Source: shadow-utils 4.15.1
.\" Source: shadow-utils 4.16.0
.\" Language: Danish
.\"
.TH "NOLOGIN" "8" "23/03/2024" "shadow\-utils 4\&.15\&.1" "System Management Commands"
.TH "NOLOGIN" "8" "18/06/2024" "shadow\-utils 4\&.16\&.0" "System Management Commands"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------

View File

@@ -2,12 +2,12 @@
.\" Title: vipw
.\" Author: Marek Micha\(/lkiewicz
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
.\" Date: 23/03/2024
.\" Date: 18/06/2024
.\" Manual: System Management Commands
.\" Source: shadow-utils 4.15.1
.\" Source: shadow-utils 4.16.0
.\" Language: Danish
.\"
.TH "VIPW" "8" "23/03/2024" "shadow\-utils 4\&.15\&.1" "System Management Commands"
.TH "VIPW" "8" "18/06/2024" "shadow\-utils 4\&.16\&.0" "System Management Commands"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------

View File

@@ -2,12 +2,12 @@
.\" Title: chage
.\" Author: Julianne Frances Haugh
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
.\" Date: 23.03.2024
.\" Date: 18.06.2024
.\" Manual: User Commands
.\" Source: shadow-utils 4.15.1
.\" Source: shadow-utils 4.16.0
.\" Language: German
.\"
.TH "CHAGE" "1" "23.03.2024" "shadow\-utils 4\&.15\&.1" "User Commands"
.TH "CHAGE" "1" "18.06.2024" "shadow\-utils 4\&.16\&.0" "User Commands"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------

View File

@@ -2,12 +2,12 @@
.\" Title: chfn
.\" Author: Julianne Frances Haugh
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
.\" Date: 23.03.2024
.\" Date: 18.06.2024
.\" Manual: User Commands
.\" Source: shadow-utils 4.15.1
.\" Source: shadow-utils 4.16.0
.\" Language: German
.\"
.TH "CHFN" "1" "23.03.2024" "shadow\-utils 4\&.15\&.1" "User Commands"
.TH "CHFN" "1" "18.06.2024" "shadow\-utils 4\&.16\&.0" "User Commands"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------

View File

@@ -2,12 +2,12 @@
.\" Title: chsh
.\" Author: Julianne Frances Haugh
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
.\" Date: 23.03.2024
.\" Date: 18.06.2024
.\" Manual: User Commands
.\" Source: shadow-utils 4.15.1
.\" Source: shadow-utils 4.16.0
.\" Language: German
.\"
.TH "CHSH" "1" "23.03.2024" "shadow\-utils 4\&.15\&.1" "User Commands"
.TH "CHSH" "1" "18.06.2024" "shadow\-utils 4\&.16\&.0" "User Commands"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------

View File

@@ -2,12 +2,12 @@
.\" Title: expiry
.\" Author: Julianne Frances Haugh
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
.\" Date: 23.03.2024
.\" Date: 18.06.2024
.\" Manual: User Commands
.\" Source: shadow-utils 4.15.1
.\" Source: shadow-utils 4.16.0
.\" Language: German
.\"
.TH "EXPIRY" "1" "23.03.2024" "shadow\-utils 4\&.15\&.1" "User Commands"
.TH "EXPIRY" "1" "18.06.2024" "shadow\-utils 4\&.16\&.0" "User Commands"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------

View File

@@ -2,12 +2,12 @@
.\" Title: gpasswd
.\" Author: Rafal Maszkowski
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
.\" Date: 23.03.2024
.\" Date: 18.06.2024
.\" Manual: User Commands
.\" Source: shadow-utils 4.15.1
.\" Source: shadow-utils 4.16.0
.\" Language: German
.\"
.TH "GPASSWD" "1" "23.03.2024" "shadow\-utils 4\&.15\&.1" "User Commands"
.TH "GPASSWD" "1" "18.06.2024" "shadow\-utils 4\&.16\&.0" "User Commands"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------

View File

@@ -2,12 +2,12 @@
.\" Title: groups
.\" Author: Julianne Frances Haugh
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
.\" Date: 23.03.2024
.\" Date: 18.06.2024
.\" Manual: User Commands
.\" Source: shadow-utils 4.15.1
.\" Source: shadow-utils 4.16.0
.\" Language: German
.\"
.TH "GROUPS" "1" "23.03.2024" "shadow\-utils 4\&.15\&.1" "User Commands"
.TH "GROUPS" "1" "18.06.2024" "shadow\-utils 4\&.16\&.0" "User Commands"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------

View File

@@ -2,12 +2,12 @@
.\" Title: id
.\" Author: Julianne Frances Haugh
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
.\" Date: 23.03.2024
.\" Date: 18.06.2024
.\" Manual: User Commands
.\" Source: shadow-utils 4.15.1
.\" Source: shadow-utils 4.16.0
.\" Language: German
.\"
.TH "ID" "1" "23.03.2024" "shadow\-utils 4\&.15\&.1" "User Commands"
.TH "ID" "1" "18.06.2024" "shadow\-utils 4\&.16\&.0" "User Commands"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------

View File

@@ -2,12 +2,12 @@
.\" Title: login
.\" Author: Julianne Frances Haugh
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
.\" Date: 23.03.2024
.\" Date: 18.06.2024
.\" Manual: User Commands
.\" Source: shadow-utils 4.15.1
.\" Source: shadow-utils 4.16.0
.\" Language: German
.\"
.TH "LOGIN" "1" "23.03.2024" "shadow\-utils 4\&.15\&.1" "User Commands"
.TH "LOGIN" "1" "18.06.2024" "shadow\-utils 4\&.16\&.0" "User Commands"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
@@ -115,13 +115,6 @@ Name des fernen Rechners f\(:ur diese Anmeldung\&.
beh\(:alt die Umgebung bei\&.
.RE
.PP
\fB\-r\fR
.RS 4
f\(:uhrt das Autologin\-Protokoll f\(:ur
\fBrlogin\fR
aus\&.
.RE
.PP
The
\fB\-r\fR,
\fB\-h\fR

View File

@@ -2,12 +2,12 @@
.\" Title: newgrp
.\" Author: Julianne Frances Haugh
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
.\" Date: 23.03.2024
.\" Date: 18.06.2024
.\" Manual: User Commands
.\" Source: shadow-utils 4.15.1
.\" Source: shadow-utils 4.16.0
.\" Language: German
.\"
.TH "NEWGRP" "1" "23.03.2024" "shadow\-utils 4\&.15\&.1" "User Commands"
.TH "NEWGRP" "1" "18.06.2024" "shadow\-utils 4\&.16\&.0" "User Commands"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------

View File

@@ -2,12 +2,12 @@
.\" Title: passwd
.\" Author: Julianne Frances Haugh
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
.\" Date: 23.03.2024
.\" Date: 18.06.2024
.\" Manual: User Commands
.\" Source: shadow-utils 4.15.1
.\" Source: shadow-utils 4.16.0
.\" Language: German
.\"
.TH "PASSWD" "1" "23.03.2024" "shadow\-utils 4\&.15\&.1" "User Commands"
.TH "PASSWD" "1" "18.06.2024" "shadow\-utils 4\&.16\&.0" "User Commands"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------

View File

@@ -2,12 +2,12 @@
.\" Title: sg
.\" Author: Julianne Frances Haugh
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
.\" Date: 23.03.2024
.\" Date: 18.06.2024
.\" Manual: User Commands
.\" Source: shadow-utils 4.15.1
.\" Source: shadow-utils 4.16.0
.\" Language: German
.\"
.TH "SG" "1" "23.03.2024" "shadow\-utils 4\&.15\&.1" "User Commands"
.TH "SG" "1" "18.06.2024" "shadow\-utils 4\&.16\&.0" "User Commands"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------

View File

@@ -2,12 +2,12 @@
.\" Title: su
.\" Author: Julianne Frances Haugh
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
.\" Date: 23.03.2024
.\" Date: 18.06.2024
.\" Manual: User Commands
.\" Source: shadow-utils 4.15.1
.\" Source: shadow-utils 4.16.0
.\" Language: German
.\"
.TH "SU" "1" "23.03.2024" "shadow\-utils 4\&.15\&.1" "User Commands"
.TH "SU" "1" "18.06.2024" "shadow\-utils 4\&.16\&.0" "User Commands"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------

View File

@@ -2,12 +2,12 @@
.\" Title: shadow
.\" Author: Julianne Frances Haugh
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
.\" Date: 23.03.2024
.\" Date: 18.06.2024
.\" Manual: Library Calls
.\" Source: shadow-utils 4.15.1
.\" Source: shadow-utils 4.16.0
.\" Language: German
.\"
.TH "SHADOW" "3" "23.03.2024" "shadow\-utils 4\&.15\&.1" "Library Calls"
.TH "SHADOW" "3" "18.06.2024" "shadow\-utils 4\&.16\&.0" "Library Calls"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------

View File

@@ -2,12 +2,12 @@
.\" Title: faillog
.\" Author: Julianne Frances Haugh
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
.\" Date: 23.03.2024
.\" Date: 18.06.2024
.\" Manual: File Formats and Configuration Files
.\" Source: shadow-utils 4.15.1
.\" Source: shadow-utils 4.16.0
.\" Language: German
.\"
.TH "FAILLOG" "5" "23.03.2024" "shadow\-utils 4\&.15\&.1" "File Formats and Configuratio"
.TH "FAILLOG" "5" "18.06.2024" "shadow\-utils 4\&.16\&.0" "File Formats and Configuratio"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------

View File

@@ -2,12 +2,12 @@
.\" Title: gshadow
.\" Author: Nicolas Fran\(,cois <nicolas.francois@centraliens.net>
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
.\" Date: 23.03.2024
.\" Date: 18.06.2024
.\" Manual: File Formats and Configuration Files
.\" Source: shadow-utils 4.15.1
.\" Source: shadow-utils 4.16.0
.\" Language: German
.\"
.TH "GSHADOW" "5" "23.03.2024" "shadow\-utils 4\&.15\&.1" "File Formats and Configuration"
.TH "GSHADOW" "5" "18.06.2024" "shadow\-utils 4\&.16\&.0" "File Formats and Configuration"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------

View File

@@ -2,12 +2,12 @@
.\" Title: limits
.\" Author: Luca Berra
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
.\" Date: 23.03.2024
.\" Date: 18.06.2024
.\" Manual: File Formats and Configuration Files
.\" Source: shadow-utils 4.15.1
.\" Source: shadow-utils 4.16.0
.\" Language: German
.\"
.TH "LIMITS" "5" "23.03.2024" "shadow\-utils 4\&.15\&.1" "File Formats and Configuration"
.TH "LIMITS" "5" "18.06.2024" "shadow\-utils 4\&.16\&.0" "File Formats and Configuration"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------

View File

@@ -2,12 +2,12 @@
.\" Title: login.access
.\" Author: Marek Micha\(/lkiewicz
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
.\" Date: 23.03.2024
.\" Date: 18.06.2024
.\" Manual: File Formats and Configuration Files
.\" Source: shadow-utils 4.15.1
.\" Source: shadow-utils 4.16.0
.\" Language: German
.\"
.TH "LOGIN\&.ACCESS" "5" "23.03.2024" "shadow\-utils 4\&.15\&.1" "File Formats and Configuration"
.TH "LOGIN\&.ACCESS" "5" "18.06.2024" "shadow\-utils 4\&.16\&.0" "File Formats and Configuration"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------

View File

@@ -2,12 +2,12 @@
.\" Title: login.defs
.\" Author: Julianne Frances Haugh
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
.\" Date: 23.03.2024
.\" Date: 18.06.2024
.\" Manual: File Formats and Configuration Files
.\" Source: shadow-utils 4.15.1
.\" Source: shadow-utils 4.16.0
.\" Language: German
.\"
.TH "LOGIN\&.DEFS" "5" "23.03.2024" "shadow\-utils 4\&.15\&.1" "File Formats and Configuration"
.TH "LOGIN\&.DEFS" "5" "18.06.2024" "shadow\-utils 4\&.16\&.0" "File Formats and Configuration"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------

View File

@@ -2,12 +2,12 @@
.\" Title: passwd
.\" Author: Julianne Frances Haugh
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
.\" Date: 23.03.2024
.\" Date: 18.06.2024
.\" Manual: File Formats and Configuration Files
.\" Source: shadow-utils 4.15.1
.\" Source: shadow-utils 4.16.0
.\" Language: German
.\"
.TH "PASSWD" "5" "23.03.2024" "shadow\-utils 4\&.15\&.1" "File Formats and Configuration"
.TH "PASSWD" "5" "18.06.2024" "shadow\-utils 4\&.16\&.0" "File Formats and Configuration"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------

View File

@@ -2,12 +2,12 @@
.\" Title: porttime
.\" Author: Julianne Frances Haugh
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
.\" Date: 23.03.2024
.\" Date: 18.06.2024
.\" Manual: File Formats and Configuration Files
.\" Source: shadow-utils 4.15.1
.\" Source: shadow-utils 4.16.0
.\" Language: German
.\"
.TH "PORTTIME" "5" "23.03.2024" "shadow\-utils 4\&.15\&.1" "File Formats and Configuration"
.TH "PORTTIME" "5" "18.06.2024" "shadow\-utils 4\&.16\&.0" "File Formats and Configuration"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------

View File

@@ -2,12 +2,12 @@
.\" Title: shadow
.\" Author: Julianne Frances Haugh
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
.\" Date: 23.03.2024
.\" Date: 18.06.2024
.\" Manual: File Formats and Configuration Files
.\" Source: shadow-utils 4.15.1
.\" Source: shadow-utils 4.16.0
.\" Language: German
.\"
.TH "SHADOW" "5" "23.03.2024" "shadow\-utils 4\&.15\&.1" "File Formats and Configuration"
.TH "SHADOW" "5" "18.06.2024" "shadow\-utils 4\&.16\&.0" "File Formats and Configuration"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------

View File

@@ -2,12 +2,12 @@
.\" Title: suauth
.\" Author: Marek Micha\(/lkiewicz
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
.\" Date: 23.03.2024
.\" Date: 18.06.2024
.\" Manual: File Formats and Configuration Files
.\" Source: shadow-utils 4.15.1
.\" Source: shadow-utils 4.16.0
.\" Language: German
.\"
.TH "SUAUTH" "5" "23.03.2024" "shadow\-utils 4\&.15\&.1" "File Formats and Configuration"
.TH "SUAUTH" "5" "18.06.2024" "shadow\-utils 4\&.16\&.0" "File Formats and Configuration"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------

View File

@@ -2,12 +2,12 @@
.\" Title: chgpasswd
.\" Author: Thomas K\(/loczko <kloczek@pld.org.pl>
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
.\" Date: 23.03.2024
.\" Date: 18.06.2024
.\" Manual: System Management Commands
.\" Source: shadow-utils 4.15.1
.\" Source: shadow-utils 4.16.0
.\" Language: German
.\"
.TH "CHGPASSWD" "8" "23.03.2024" "shadow\-utils 4\&.15\&.1" "System Management Commands"
.TH "CHGPASSWD" "8" "18.06.2024" "shadow\-utils 4\&.16\&.0" "System Management Commands"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------

View File

@@ -2,12 +2,12 @@
.\" Title: chpasswd
.\" Author: Julianne Frances Haugh
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
.\" Date: 23.03.2024
.\" Date: 18.06.2024
.\" Manual: System Management Commands
.\" Source: shadow-utils 4.15.1
.\" Source: shadow-utils 4.16.0
.\" Language: German
.\"
.TH "CHPASSWD" "8" "23.03.2024" "shadow\-utils 4\&.15\&.1" "System Management Commands"
.TH "CHPASSWD" "8" "18.06.2024" "shadow\-utils 4\&.16\&.0" "System Management Commands"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------

View File

@@ -2,12 +2,12 @@
.\" Title: faillog
.\" Author: Julianne Frances Haugh
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
.\" Date: 23.03.2024
.\" Date: 18.06.2024
.\" Manual: System Management Commands
.\" Source: shadow-utils 4.15.1
.\" Source: shadow-utils 4.16.0
.\" Language: German
.\"
.TH "FAILLOG" "8" "23.03.2024" "shadow\-utils 4\&.15\&.1" "System Management Commands"
.TH "FAILLOG" "8" "18.06.2024" "shadow\-utils 4\&.16\&.0" "System Management Commands"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------

View File

@@ -2,12 +2,12 @@
.\" Title: groupadd
.\" Author: Julianne Frances Haugh
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
.\" Date: 23.03.2024
.\" Date: 18.06.2024
.\" Manual: System Management Commands
.\" Source: shadow-utils 4.15.1
.\" Source: shadow-utils 4.16.0
.\" Language: German
.\"
.TH "GROUPADD" "8" "23.03.2024" "shadow\-utils 4\&.15\&.1" "System Management Commands"
.TH "GROUPADD" "8" "18.06.2024" "shadow\-utils 4\&.16\&.0" "System Management Commands"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------

View File

@@ -2,12 +2,12 @@
.\" Title: groupdel
.\" Author: Julianne Frances Haugh
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
.\" Date: 23.03.2024
.\" Date: 18.06.2024
.\" Manual: System Management Commands
.\" Source: shadow-utils 4.15.1
.\" Source: shadow-utils 4.16.0
.\" Language: German
.\"
.TH "GROUPDEL" "8" "23.03.2024" "shadow\-utils 4\&.15\&.1" "System Management Commands"
.TH "GROUPDEL" "8" "18.06.2024" "shadow\-utils 4\&.16\&.0" "System Management Commands"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------

View File

@@ -2,12 +2,12 @@
.\" Title: groupmems
.\" Author: George Kraft, IV
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
.\" Date: 23.03.2024
.\" Date: 18.06.2024
.\" Manual: System Management Commands
.\" Source: shadow-utils 4.15.1
.\" Source: shadow-utils 4.16.0
.\" Language: German
.\"
.TH "GROUPMEMS" "8" "23.03.2024" "shadow\-utils 4\&.15\&.1" "System Management Commands"
.TH "GROUPMEMS" "8" "18.06.2024" "shadow\-utils 4\&.16\&.0" "System Management Commands"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------

View File

@@ -2,12 +2,12 @@
.\" Title: groupmod
.\" Author: Julianne Frances Haugh
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
.\" Date: 23.03.2024
.\" Date: 18.06.2024
.\" Manual: System Management Commands
.\" Source: shadow-utils 4.15.1
.\" Source: shadow-utils 4.16.0
.\" Language: German
.\"
.TH "GROUPMOD" "8" "23.03.2024" "shadow\-utils 4\&.15\&.1" "System Management Commands"
.TH "GROUPMOD" "8" "18.06.2024" "shadow\-utils 4\&.16\&.0" "System Management Commands"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------

View File

@@ -2,12 +2,12 @@
.\" Title: grpck
.\" Author: Julianne Frances Haugh
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
.\" Date: 23.03.2024
.\" Date: 18.06.2024
.\" Manual: System Management Commands
.\" Source: shadow-utils 4.15.1
.\" Source: shadow-utils 4.16.0
.\" Language: German
.\"
.TH "GRPCK" "8" "23.03.2024" "shadow\-utils 4\&.15\&.1" "System Management Commands"
.TH "GRPCK" "8" "18.06.2024" "shadow\-utils 4\&.16\&.0" "System Management Commands"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------

View File

@@ -2,12 +2,12 @@
.\" Title: lastlog
.\" Author: Julianne Frances Haugh
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
.\" Date: 23.03.2024
.\" Date: 18.06.2024
.\" Manual: System Management Commands
.\" Source: shadow-utils 4.15.1
.\" Source: shadow-utils 4.16.0
.\" Language: German
.\"
.TH "LASTLOG" "8" "23.03.2024" "shadow\-utils 4\&.15\&.1" "System Management Commands"
.TH "LASTLOG" "8" "18.06.2024" "shadow\-utils 4\&.16\&.0" "System Management Commands"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
@@ -128,5 +128,5 @@ Datenbank mit Zeiten der letzten Anmeldung der Benutzer
Gro\(sse L\(:ucken in den Benutzerkennungen haben zur Folge, dass das Lastlog\-Programm l\(:angere Zeit nichts auf den Bildschirm ausgibt\&. Wenn sich z\&.B\&. in der Lastlog\-Datenbank kein Eintrag f\(:ur Benutzer mit der Kennung zwischen 170 und 800 befindet, wird es, w\(:ahrend der Verarbeitung der Eintr\(:age zu den Kennungen 171 bis 799, scheinen, als sei lastlog stehen geblieben\&.
.PP
Having high UIDs can create problems when handling the
<term> /var/log/lastlog</term>
/var/log/lastlog
with external tools\&. Although the actual file is sparse and does not use too much space, certain applications are not designed to identify sparse files by default and may require a specific option to handle them\&.

View File

@@ -2,12 +2,12 @@
.\" Title: logoutd
.\" Author: Julianne Frances Haugh
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
.\" Date: 23.03.2024
.\" Date: 18.06.2024
.\" Manual: System Management Commands
.\" Source: shadow-utils 4.15.1
.\" Source: shadow-utils 4.16.0
.\" Language: German
.\"
.TH "LOGOUTD" "8" "23.03.2024" "shadow\-utils 4\&.15\&.1" "System Management Commands"
.TH "LOGOUTD" "8" "18.06.2024" "shadow\-utils 4\&.16\&.0" "System Management Commands"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------

View File

@@ -2,12 +2,12 @@
.\" Title: newusers
.\" Author: Julianne Frances Haugh
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
.\" Date: 23.03.2024
.\" Date: 18.06.2024
.\" Manual: System Management Commands
.\" Source: shadow-utils 4.15.1
.\" Source: shadow-utils 4.16.0
.\" Language: German
.\"
.TH "NEWUSERS" "8" "23.03.2024" "shadow\-utils 4\&.15\&.1" "System Management Commands"
.TH "NEWUSERS" "8" "18.06.2024" "shadow\-utils 4\&.16\&.0" "System Management Commands"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------

View File

@@ -2,12 +2,12 @@
.\" Title: nologin
.\" Author: Nicolas Fran\(,cois <nicolas.francois@centraliens.net>
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
.\" Date: 23.03.2024
.\" Date: 18.06.2024
.\" Manual: System Management Commands
.\" Source: shadow-utils 4.15.1
.\" Source: shadow-utils 4.16.0
.\" Language: German
.\"
.TH "NOLOGIN" "8" "23.03.2024" "shadow\-utils 4\&.15\&.1" "System Management Commands"
.TH "NOLOGIN" "8" "18.06.2024" "shadow\-utils 4\&.16\&.0" "System Management Commands"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------

View File

@@ -2,12 +2,12 @@
.\" Title: pwck
.\" Author: Julianne Frances Haugh
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
.\" Date: 23.03.2024
.\" Date: 18.06.2024
.\" Manual: System Management Commands
.\" Source: shadow-utils 4.15.1
.\" Source: shadow-utils 4.16.0
.\" Language: German
.\"
.TH "PWCK" "8" "23.03.2024" "shadow\-utils 4\&.15\&.1" "System Management Commands"
.TH "PWCK" "8" "18.06.2024" "shadow\-utils 4\&.16\&.0" "System Management Commands"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------

View File

@@ -2,12 +2,12 @@
.\" Title: pwconv
.\" Author: Marek Micha\(/lkiewicz
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
.\" Date: 23.03.2024
.\" Date: 18.06.2024
.\" Manual: System Management Commands
.\" Source: shadow-utils 4.15.1
.\" Source: shadow-utils 4.16.0
.\" Language: German
.\"
.TH "PWCONV" "8" "23.03.2024" "shadow\-utils 4\&.15\&.1" "System Management Commands"
.TH "PWCONV" "8" "18.06.2024" "shadow\-utils 4\&.16\&.0" "System Management Commands"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------

View File

@@ -2,12 +2,12 @@
.\" Title: sulogin
.\" Author: Julianne Frances Haugh
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
.\" Date: 23.03.2024
.\" Date: 18.06.2024
.\" Manual: System Management Commands
.\" Source: shadow-utils 4.15.1
.\" Source: shadow-utils 4.16.0
.\" Language: German
.\"
.TH "SULOGIN" "8" "23.03.2024" "shadow\-utils 4\&.15\&.1" "System Management Commands"
.TH "SULOGIN" "8" "18.06.2024" "shadow\-utils 4\&.16\&.0" "System Management Commands"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------

View File

@@ -2,12 +2,12 @@
.\" Title: useradd
.\" Author: Julianne Frances Haugh
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
.\" Date: 23.03.2024
.\" Date: 18.06.2024
.\" Manual: System Management Commands
.\" Source: shadow-utils 4.15.1
.\" Source: shadow-utils 4.16.0
.\" Language: German
.\"
.TH "USERADD" "8" "23.03.2024" "shadow\-utils 4\&.15\&.1" "System Management Commands"
.TH "USERADD" "8" "18.06.2024" "shadow\-utils 4\&.16\&.0" "System Management Commands"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
@@ -493,7 +493,7 @@ Usernames may contain only lower and upper case letters, digits, underscores, or
\fBls\fR
output\&.
.PP
Benutzernamen d\(:urfen nur bis zu 32 Zeichen lang sein\&.
Benutzernamen d\(:urfen nur bis zu 256 Zeichen lang sein\&.
.SH "KONFIGURATION"
.PP
The following configuration variables in

View File

@@ -2,12 +2,12 @@
.\" Title: userdel
.\" Author: Julianne Frances Haugh
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
.\" Date: 23.03.2024
.\" Date: 18.06.2024
.\" Manual: System Management Commands
.\" Source: shadow-utils 4.15.1
.\" Source: shadow-utils 4.16.0
.\" Language: German
.\"
.TH "USERDEL" "8" "23.03.2024" "shadow\-utils 4\&.15\&.1" "System Management Commands"
.TH "USERDEL" "8" "18.06.2024" "shadow\-utils 4\&.16\&.0" "System Management Commands"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------

View File

@@ -2,12 +2,12 @@
.\" Title: usermod
.\" Author: Julianne Frances Haugh
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
.\" Date: 23.03.2024
.\" Date: 18.06.2024
.\" Manual: System Management Commands
.\" Source: shadow-utils 4.15.1
.\" Source: shadow-utils 4.16.0
.\" Language: German
.\"
.TH "USERMOD" "8" "23.03.2024" "shadow\-utils 4\&.15\&.1" "System Management Commands"
.TH "USERMOD" "8" "18.06.2024" "shadow\-utils 4\&.16\&.0" "System Management Commands"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------

View File

@@ -2,12 +2,12 @@
.\" Title: vipw
.\" Author: Marek Micha\(/lkiewicz
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
.\" Date: 23.03.2024
.\" Date: 18.06.2024
.\" Manual: System Management Commands
.\" Source: shadow-utils 4.15.1
.\" Source: shadow-utils 4.16.0
.\" Language: German
.\"
.TH "VIPW" "8" "23.03.2024" "shadow\-utils 4\&.15\&.1" "System Management Commands"
.TH "VIPW" "8" "18.06.2024" "shadow\-utils 4\&.16\&.0" "System Management Commands"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------

View File

@@ -2,12 +2,12 @@
.\" Title: chage
.\" Author: Julianne Frances Haugh
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
.\" Date: 23/03/2024
.\" Date: 18/06/2024
.\" Manual: User Commands
.\" Source: shadow-utils 4.15.1
.\" Source: shadow-utils 4.16.0
.\" Language: French
.\"
.TH "CHAGE" "1" "23/03/2024" "shadow\-utils 4\&.15\&.1" "User Commands"
.TH "CHAGE" "1" "18/06/2024" "shadow\-utils 4\&.16\&.0" "User Commands"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------

View File

@@ -2,12 +2,12 @@
.\" Title: chfn
.\" Author: Julianne Frances Haugh
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
.\" Date: 23/03/2024
.\" Date: 18/06/2024
.\" Manual: User Commands
.\" Source: shadow-utils 4.15.1
.\" Source: shadow-utils 4.16.0
.\" Language: French
.\"
.TH "CHFN" "1" "23/03/2024" "shadow\-utils 4\&.15\&.1" "User Commands"
.TH "CHFN" "1" "18/06/2024" "shadow\-utils 4\&.16\&.0" "User Commands"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------

View File

@@ -2,12 +2,12 @@
.\" Title: chsh
.\" Author: Julianne Frances Haugh
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
.\" Date: 23/03/2024
.\" Date: 18/06/2024
.\" Manual: User Commands
.\" Source: shadow-utils 4.15.1
.\" Source: shadow-utils 4.16.0
.\" Language: French
.\"
.TH "CHSH" "1" "23/03/2024" "shadow\-utils 4\&.15\&.1" "User Commands"
.TH "CHSH" "1" "18/06/2024" "shadow\-utils 4\&.16\&.0" "User Commands"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------

View File

@@ -2,12 +2,12 @@
.\" Title: expiry
.\" Author: Julianne Frances Haugh
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
.\" Date: 23/03/2024
.\" Date: 18/06/2024
.\" Manual: User Commands
.\" Source: shadow-utils 4.15.1
.\" Source: shadow-utils 4.16.0
.\" Language: French
.\"
.TH "EXPIRY" "1" "23/03/2024" "shadow\-utils 4\&.15\&.1" "User Commands"
.TH "EXPIRY" "1" "18/06/2024" "shadow\-utils 4\&.16\&.0" "User Commands"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------

View File

@@ -2,12 +2,12 @@
.\" Title: gpasswd
.\" Author: rafal Maszkowski
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
.\" Date: 23/03/2024
.\" Date: 18/06/2024
.\" Manual: User Commands
.\" Source: shadow-utils 4.15.1
.\" Source: shadow-utils 4.16.0
.\" Language: French
.\"
.TH "GPASSWD" "1" "23/03/2024" "shadow\-utils 4\&.15\&.1" "User Commands"
.TH "GPASSWD" "1" "18/06/2024" "shadow\-utils 4\&.16\&.0" "User Commands"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------

View File

@@ -2,12 +2,12 @@
.\" Title: groups
.\" Author: Julianne Frances Haugh
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
.\" Date: 23/03/2024
.\" Date: 18/06/2024
.\" Manual: User Commands
.\" Source: shadow-utils 4.15.1
.\" Source: shadow-utils 4.16.0
.\" Language: French
.\"
.TH "GROUPS" "1" "23/03/2024" "shadow\-utils 4\&.15\&.1" "User Commands"
.TH "GROUPS" "1" "18/06/2024" "shadow\-utils 4\&.16\&.0" "User Commands"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------

Some files were not shown because too many files have changed in this diff Show More