Compare commits
2 Commits
debian/1%4
...
upstream/4
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
e8b8d7a84b | ||
|
|
0fda4df4f1 |
@@ -15,3 +15,4 @@ SUBDIRS += man
|
||||
endif
|
||||
|
||||
CLEANFILES = man/8.out man/po/remove-potcdate.* man/*/login.defs.d man/*/*.mo
|
||||
EXTRA_DIST = tests/
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
582
configure
vendored
@@ -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\\"
|
||||
|
||||
|
||||
22
configure.ac
22
configure.ac
@@ -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.])
|
||||
|
||||
@@ -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 \
|
||||
|
||||
170
lib/Makefile.in
170
lib/Makefile.in
@@ -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
|
||||
|
||||
37
lib/alloc.h
37
lib/alloc.h
@@ -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
46
lib/atoi/a2i.c
Normal 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
386
lib/atoi/a2i.h
Normal 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
18
lib/atoi/str2i.c
Normal 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
108
lib/atoi/str2i.h
Normal 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
|
||||
@@ -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);
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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);
|
||||
|
||||
|
||||
28
lib/env.c
28
lib/env.c
@@ -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;
|
||||
}
|
||||
|
||||
/*
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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@*/) {
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
24
lib/limits.c
24
lib/limits.c
@@ -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",
|
||||
|
||||
@@ -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;
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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))
|
||||
{
|
||||
|
||||
@@ -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);
|
||||
|
||||
|
||||
132
lib/rlogin.c
132
lib/rlogin.c
@@ -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 */
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
16
lib/shadow.c
16
lib/shadow.c
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
@@ -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 ⦥
|
||||
@@ -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 */
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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)
|
||||
{
|
||||
|
||||
@@ -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
|
||||
*
|
||||
|
||||
@@ -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
|
||||
*
|
||||
|
||||
@@ -1,2 +1,2 @@
|
||||
<!ENTITY GROUP_NAME_MAX_LENGTH '32'>
|
||||
<!ENTITY SHADOW_UTILS_VERSION '4.15.1'>
|
||||
<!ENTITY SHADOW_UTILS_VERSION '4.16.0'>
|
||||
|
||||
@@ -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
|
||||
.\" -----------------------------------------------------------------
|
||||
|
||||
@@ -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
|
||||
.\" -----------------------------------------------------------------
|
||||
|
||||
@@ -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
|
||||
.\" -----------------------------------------------------------------
|
||||
|
||||
@@ -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
|
||||
.\" -----------------------------------------------------------------
|
||||
|
||||
@@ -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
|
||||
.\" -----------------------------------------------------------------
|
||||
|
||||
@@ -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
|
||||
.\" -----------------------------------------------------------------
|
||||
|
||||
@@ -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
|
||||
.\" -----------------------------------------------------------------
|
||||
|
||||
@@ -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
|
||||
.\" -----------------------------------------------------------------
|
||||
|
||||
@@ -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
|
||||
.\" -----------------------------------------------------------------
|
||||
|
||||
@@ -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
|
||||
.\" -----------------------------------------------------------------
|
||||
|
||||
@@ -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
|
||||
.\" -----------------------------------------------------------------
|
||||
|
||||
@@ -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
|
||||
.\" -----------------------------------------------------------------
|
||||
|
||||
@@ -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
|
||||
.\" -----------------------------------------------------------------
|
||||
|
||||
@@ -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
|
||||
.\" -----------------------------------------------------------------
|
||||
|
||||
@@ -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
|
||||
.\" -----------------------------------------------------------------
|
||||
|
||||
@@ -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
|
||||
.\" -----------------------------------------------------------------
|
||||
|
||||
@@ -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
|
||||
.\" -----------------------------------------------------------------
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
.\" -----------------------------------------------------------------
|
||||
|
||||
@@ -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
|
||||
.\" -----------------------------------------------------------------
|
||||
|
||||
@@ -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
|
||||
.\" -----------------------------------------------------------------
|
||||
|
||||
@@ -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
|
||||
.\" -----------------------------------------------------------------
|
||||
|
||||
@@ -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
|
||||
.\" -----------------------------------------------------------------
|
||||
|
||||
@@ -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
|
||||
.\" -----------------------------------------------------------------
|
||||
|
||||
@@ -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
|
||||
.\" -----------------------------------------------------------------
|
||||
|
||||
@@ -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
|
||||
.\" -----------------------------------------------------------------
|
||||
|
||||
@@ -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
|
||||
.\" -----------------------------------------------------------------
|
||||
|
||||
@@ -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
|
||||
.\" -----------------------------------------------------------------
|
||||
|
||||
@@ -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
|
||||
.\" -----------------------------------------------------------------
|
||||
|
||||
@@ -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
|
||||
.\" -----------------------------------------------------------------
|
||||
|
||||
@@ -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
|
||||
.\" -----------------------------------------------------------------
|
||||
|
||||
@@ -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
|
||||
.\" -----------------------------------------------------------------
|
||||
|
||||
@@ -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
|
||||
.\" -----------------------------------------------------------------
|
||||
|
||||
@@ -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
|
||||
.\" -----------------------------------------------------------------
|
||||
|
||||
@@ -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
|
||||
.\" -----------------------------------------------------------------
|
||||
|
||||
@@ -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
|
||||
.\" -----------------------------------------------------------------
|
||||
|
||||
@@ -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
|
||||
.\" -----------------------------------------------------------------
|
||||
|
||||
@@ -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
|
||||
.\" -----------------------------------------------------------------
|
||||
|
||||
@@ -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
|
||||
.\" -----------------------------------------------------------------
|
||||
|
||||
@@ -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
|
||||
.\" -----------------------------------------------------------------
|
||||
|
||||
@@ -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\&.
|
||||
|
||||
@@ -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
|
||||
.\" -----------------------------------------------------------------
|
||||
|
||||
@@ -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
|
||||
.\" -----------------------------------------------------------------
|
||||
|
||||
@@ -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
|
||||
.\" -----------------------------------------------------------------
|
||||
|
||||
@@ -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
|
||||
.\" -----------------------------------------------------------------
|
||||
|
||||
@@ -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
|
||||
.\" -----------------------------------------------------------------
|
||||
|
||||
@@ -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
|
||||
.\" -----------------------------------------------------------------
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
.\" -----------------------------------------------------------------
|
||||
|
||||
@@ -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
|
||||
.\" -----------------------------------------------------------------
|
||||
|
||||
@@ -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
|
||||
.\" -----------------------------------------------------------------
|
||||
|
||||
@@ -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
|
||||
.\" -----------------------------------------------------------------
|
||||
|
||||
@@ -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
|
||||
.\" -----------------------------------------------------------------
|
||||
|
||||
@@ -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
|
||||
.\" -----------------------------------------------------------------
|
||||
|
||||
@@ -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
|
||||
.\" -----------------------------------------------------------------
|
||||
|
||||
@@ -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
|
||||
.\" -----------------------------------------------------------------
|
||||
|
||||
@@ -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
Reference in New Issue
Block a user