tmpreaper-1.6.13+nmu1+deb9u1build0.16.04.1/0000775000000000000000000000000013516124023014335 5ustar tmpreaper-1.6.13+nmu1+deb9u1build0.16.04.1/aclocal.m40000664000000000000000000012422413414145477016217 0ustar # generated automatically by aclocal 1.15.1 -*- Autoconf -*- # Copyright (C) 1996-2017 Free Software Foundation, Inc. # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. m4_ifndef([AC_CONFIG_MACRO_DIRS], [m4_defun([_AM_CONFIG_MACRO_DIRS], [])m4_defun([AC_CONFIG_MACRO_DIRS], [_AM_CONFIG_MACRO_DIRS($@)])]) m4_ifndef([AC_AUTOCONF_VERSION], [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl m4_if(m4_defn([AC_AUTOCONF_VERSION]), [2.69],, [m4_warning([this file was generated for autoconf 2.69. You have another version of autoconf. It may work, but is not guaranteed to. If you have problems, you may need to regenerate the build system entirely. To do so, use the procedure documented by the package, typically 'autoreconf'.])]) # Copyright (C) 2002-2017 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_AUTOMAKE_VERSION(VERSION) # ---------------------------- # Automake X.Y traces this macro to ensure aclocal.m4 has been # generated from the m4 files accompanying Automake X.Y. # (This private macro should not be called outside this file.) AC_DEFUN([AM_AUTOMAKE_VERSION], [am__api_version='1.15' dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to dnl require some minimum version. Point them to the right macro. m4_if([$1], [1.15.1], [], [AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl ]) # _AM_AUTOCONF_VERSION(VERSION) # ----------------------------- # aclocal traces this macro to find the Autoconf version. # This is a private macro too. Using m4_define simplifies # the logic in aclocal, which can simply ignore this definition. m4_define([_AM_AUTOCONF_VERSION], []) # AM_SET_CURRENT_AUTOMAKE_VERSION # ------------------------------- # Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced. # This function is AC_REQUIREd by AM_INIT_AUTOMAKE. AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION], [AM_AUTOMAKE_VERSION([1.15.1])dnl m4_ifndef([AC_AUTOCONF_VERSION], [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl _AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))]) # AM_AUX_DIR_EXPAND -*- Autoconf -*- # Copyright (C) 2001-2017 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # For projects using AC_CONFIG_AUX_DIR([foo]), Autoconf sets # $ac_aux_dir to '$srcdir/foo'. In other projects, it is set to # '$srcdir', '$srcdir/..', or '$srcdir/../..'. # # Of course, Automake must honor this variable whenever it calls a # tool from the auxiliary directory. The problem is that $srcdir (and # therefore $ac_aux_dir as well) can be either absolute or relative, # depending on how configure is run. This is pretty annoying, since # it makes $ac_aux_dir quite unusable in subdirectories: in the top # source directory, any form will work fine, but in subdirectories a # relative path needs to be adjusted first. # # $ac_aux_dir/missing # fails when called from a subdirectory if $ac_aux_dir is relative # $top_srcdir/$ac_aux_dir/missing # fails if $ac_aux_dir is absolute, # fails when called from a subdirectory in a VPATH build with # a relative $ac_aux_dir # # The reason of the latter failure is that $top_srcdir and $ac_aux_dir # are both prefixed by $srcdir. In an in-source build this is usually # harmless because $srcdir is '.', but things will broke when you # start a VPATH build or use an absolute $srcdir. # # So we could use something similar to $top_srcdir/$ac_aux_dir/missing, # iff we strip the leading $srcdir from $ac_aux_dir. That would be: # am_aux_dir='\$(top_srcdir)/'`expr "$ac_aux_dir" : "$srcdir//*\(.*\)"` # and then we would define $MISSING as # MISSING="\${SHELL} $am_aux_dir/missing" # This will work as long as MISSING is not called from configure, because # unfortunately $(top_srcdir) has no meaning in configure. # However there are other variables, like CC, which are often used in # configure, and could therefore not use this "fixed" $ac_aux_dir. # # Another solution, used here, is to always expand $ac_aux_dir to an # absolute PATH. The drawback is that using absolute paths prevent a # configured tree to be moved without reconfiguration. AC_DEFUN([AM_AUX_DIR_EXPAND], [AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT])dnl # Expand $ac_aux_dir to an absolute path. am_aux_dir=`cd "$ac_aux_dir" && pwd` ]) # AM_CONDITIONAL -*- Autoconf -*- # Copyright (C) 1997-2017 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_CONDITIONAL(NAME, SHELL-CONDITION) # ------------------------------------- # Define a conditional. AC_DEFUN([AM_CONDITIONAL], [AC_PREREQ([2.52])dnl m4_if([$1], [TRUE], [AC_FATAL([$0: invalid condition: $1])], [$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl AC_SUBST([$1_TRUE])dnl AC_SUBST([$1_FALSE])dnl _AM_SUBST_NOTMAKE([$1_TRUE])dnl _AM_SUBST_NOTMAKE([$1_FALSE])dnl m4_define([_AM_COND_VALUE_$1], [$2])dnl if $2; then $1_TRUE= $1_FALSE='#' else $1_TRUE='#' $1_FALSE= fi AC_CONFIG_COMMANDS_PRE( [if test -z "${$1_TRUE}" && test -z "${$1_FALSE}"; then AC_MSG_ERROR([[conditional "$1" was never defined. Usually this means the macro was only invoked conditionally.]]) fi])]) # Copyright (C) 1999-2017 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # There are a few dirty hacks below to avoid letting 'AC_PROG_CC' be # written in clear, in which case automake, when reading aclocal.m4, # will think it sees a *use*, and therefore will trigger all it's # C support machinery. Also note that it means that autoscan, seeing # CC etc. in the Makefile, will ask for an AC_PROG_CC use... # _AM_DEPENDENCIES(NAME) # ---------------------- # See how the compiler implements dependency checking. # NAME is "CC", "CXX", "OBJC", "OBJCXX", "UPC", or "GJC". # We try a few techniques and use that to set a single cache variable. # # We don't AC_REQUIRE the corresponding AC_PROG_CC since the latter was # modified to invoke _AM_DEPENDENCIES(CC); we would have a circular # dependency, and given that the user is not expected to run this macro, # just rely on AC_PROG_CC. AC_DEFUN([_AM_DEPENDENCIES], [AC_REQUIRE([AM_SET_DEPDIR])dnl AC_REQUIRE([AM_OUTPUT_DEPENDENCY_COMMANDS])dnl AC_REQUIRE([AM_MAKE_INCLUDE])dnl AC_REQUIRE([AM_DEP_TRACK])dnl m4_if([$1], [CC], [depcc="$CC" am_compiler_list=], [$1], [CXX], [depcc="$CXX" am_compiler_list=], [$1], [OBJC], [depcc="$OBJC" am_compiler_list='gcc3 gcc'], [$1], [OBJCXX], [depcc="$OBJCXX" am_compiler_list='gcc3 gcc'], [$1], [UPC], [depcc="$UPC" am_compiler_list=], [$1], [GCJ], [depcc="$GCJ" am_compiler_list='gcc3 gcc'], [depcc="$$1" am_compiler_list=]) AC_CACHE_CHECK([dependency style of $depcc], [am_cv_$1_dependencies_compiler_type], [if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then # We make a subdir and do the tests there. Otherwise we can end up # making bogus files that we don't know about and never remove. For # instance it was reported that on HP-UX the gcc test will end up # making a dummy file named 'D' -- because '-MD' means "put the output # in D". rm -rf conftest.dir mkdir conftest.dir # Copy depcomp to subdir because otherwise we won't find it if we're # using a relative directory. cp "$am_depcomp" conftest.dir cd conftest.dir # We will build objects and dependencies in a subdirectory because # it helps to detect inapplicable dependency modes. For instance # both Tru64's cc and ICC support -MD to output dependencies as a # side effect of compilation, but ICC will put the dependencies in # the current directory while Tru64 will put them in the object # directory. mkdir sub am_cv_$1_dependencies_compiler_type=none if test "$am_compiler_list" = ""; then am_compiler_list=`sed -n ['s/^#*\([a-zA-Z0-9]*\))$/\1/p'] < ./depcomp` fi am__universal=false m4_case([$1], [CC], [case " $depcc " in #( *\ -arch\ *\ -arch\ *) am__universal=true ;; esac], [CXX], [case " $depcc " in #( *\ -arch\ *\ -arch\ *) am__universal=true ;; esac]) for depmode in $am_compiler_list; do # Setup a source with many dependencies, because some compilers # like to wrap large dependency lists on column 80 (with \), and # we should not choose a depcomp mode which is confused by this. # # We need to recreate these files for each test, as the compiler may # overwrite some of them when testing with obscure command lines. # This happens at least with the AIX C compiler. : > sub/conftest.c for i in 1 2 3 4 5 6; do echo '#include "conftst'$i'.h"' >> sub/conftest.c # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with # Solaris 10 /bin/sh. echo '/* dummy */' > sub/conftst$i.h done echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf # We check with '-c' and '-o' for the sake of the "dashmstdout" # mode. It turns out that the SunPro C++ compiler does not properly # handle '-M -o', and we need to detect this. Also, some Intel # versions had trouble with output in subdirs. am__obj=sub/conftest.${OBJEXT-o} am__minus_obj="-o $am__obj" case $depmode in gcc) # This depmode causes a compiler race in universal mode. test "$am__universal" = false || continue ;; nosideeffect) # After this tag, mechanisms are not by side-effect, so they'll # only be used when explicitly requested. if test "x$enable_dependency_tracking" = xyes; then continue else break fi ;; msvc7 | msvc7msys | msvisualcpp | msvcmsys) # This compiler won't grok '-c -o', but also, the minuso test has # not run yet. These depmodes are late enough in the game, and # so weak that their functioning should not be impacted. am__obj=conftest.${OBJEXT-o} am__minus_obj= ;; none) break ;; esac if depmode=$depmode \ source=sub/conftest.c object=$am__obj \ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ >/dev/null 2>conftest.err && grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && grep $am__obj sub/conftest.Po > /dev/null 2>&1 && ${MAKE-make} -s -f confmf > /dev/null 2>&1; then # icc doesn't choke on unknown options, it will just issue warnings # or remarks (even with -Werror). So we grep stderr for any message # that says an option was ignored or not supported. # When given -MP, icc 7.0 and 7.1 complain thusly: # icc: Command line warning: ignoring option '-M'; no argument required # The diagnosis changed in icc 8.0: # icc: Command line remark: option '-MP' not supported if (grep 'ignoring option' conftest.err || grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else am_cv_$1_dependencies_compiler_type=$depmode break fi fi done cd .. rm -rf conftest.dir else am_cv_$1_dependencies_compiler_type=none fi ]) AC_SUBST([$1DEPMODE], [depmode=$am_cv_$1_dependencies_compiler_type]) AM_CONDITIONAL([am__fastdep$1], [ test "x$enable_dependency_tracking" != xno \ && test "$am_cv_$1_dependencies_compiler_type" = gcc3]) ]) # AM_SET_DEPDIR # ------------- # Choose a directory name for dependency files. # This macro is AC_REQUIREd in _AM_DEPENDENCIES. AC_DEFUN([AM_SET_DEPDIR], [AC_REQUIRE([AM_SET_LEADING_DOT])dnl AC_SUBST([DEPDIR], ["${am__leading_dot}deps"])dnl ]) # AM_DEP_TRACK # ------------ AC_DEFUN([AM_DEP_TRACK], [AC_ARG_ENABLE([dependency-tracking], [dnl AS_HELP_STRING( [--enable-dependency-tracking], [do not reject slow dependency extractors]) AS_HELP_STRING( [--disable-dependency-tracking], [speeds up one-time build])]) if test "x$enable_dependency_tracking" != xno; then am_depcomp="$ac_aux_dir/depcomp" AMDEPBACKSLASH='\' am__nodep='_no' fi AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno]) AC_SUBST([AMDEPBACKSLASH])dnl _AM_SUBST_NOTMAKE([AMDEPBACKSLASH])dnl AC_SUBST([am__nodep])dnl _AM_SUBST_NOTMAKE([am__nodep])dnl ]) # Generate code to set up dependency tracking. -*- Autoconf -*- # Copyright (C) 1999-2017 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # _AM_OUTPUT_DEPENDENCY_COMMANDS # ------------------------------ AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS], [{ # Older Autoconf quotes --file arguments for eval, but not when files # are listed without --file. Let's play safe and only enable the eval # if we detect the quoting. case $CONFIG_FILES in *\'*) eval set x "$CONFIG_FILES" ;; *) set x $CONFIG_FILES ;; esac shift for mf do # Strip MF so we end up with the name of the file. mf=`echo "$mf" | sed -e 's/:.*$//'` # Check whether this is an Automake generated Makefile or not. # We used to match only the files named 'Makefile.in', but # some people rename them; so instead we look at the file content. # Grep'ing the first line is not enough: some people post-process # each Makefile.in and add a new line on top of each file to say so. # Grep'ing the whole file is not good either: AIX grep has a line # limit of 2048, but all sed's we know have understand at least 4000. if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then dirpart=`AS_DIRNAME("$mf")` else continue fi # Extract the definition of DEPDIR, am__include, and am__quote # from the Makefile without running 'make'. DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` test -z "$DEPDIR" && continue am__include=`sed -n 's/^am__include = //p' < "$mf"` test -z "$am__include" && continue am__quote=`sed -n 's/^am__quote = //p' < "$mf"` # Find all dependency output files, they are included files with # $(DEPDIR) in their names. We invoke sed twice because it is the # simplest approach to changing $(DEPDIR) to its actual value in the # expansion. for file in `sed -n " s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \ sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g'`; do # Make sure the directory exists. test -f "$dirpart/$file" && continue fdir=`AS_DIRNAME(["$file"])` AS_MKDIR_P([$dirpart/$fdir]) # echo "creating $dirpart/$file" echo '# dummy' > "$dirpart/$file" done done } ])# _AM_OUTPUT_DEPENDENCY_COMMANDS # AM_OUTPUT_DEPENDENCY_COMMANDS # ----------------------------- # This macro should only be invoked once -- use via AC_REQUIRE. # # This code is only required when automatic dependency tracking # is enabled. FIXME. This creates each '.P' file that we will # need in order to bootstrap the dependency handling code. AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS], [AC_CONFIG_COMMANDS([depfiles], [test x"$AMDEP_TRUE" != x"" || _AM_OUTPUT_DEPENDENCY_COMMANDS], [AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"]) ]) # Do all the work for Automake. -*- Autoconf -*- # Copyright (C) 1996-2017 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This macro actually does too much. Some checks are only needed if # your package does certain things. But this isn't really a big deal. dnl Redefine AC_PROG_CC to automatically invoke _AM_PROG_CC_C_O. m4_define([AC_PROG_CC], m4_defn([AC_PROG_CC]) [_AM_PROG_CC_C_O ]) # AM_INIT_AUTOMAKE(PACKAGE, VERSION, [NO-DEFINE]) # AM_INIT_AUTOMAKE([OPTIONS]) # ----------------------------------------------- # The call with PACKAGE and VERSION arguments is the old style # call (pre autoconf-2.50), which is being phased out. PACKAGE # and VERSION should now be passed to AC_INIT and removed from # the call to AM_INIT_AUTOMAKE. # We support both call styles for the transition. After # the next Automake release, Autoconf can make the AC_INIT # arguments mandatory, and then we can depend on a new Autoconf # release and drop the old call support. AC_DEFUN([AM_INIT_AUTOMAKE], [AC_PREREQ([2.65])dnl dnl Autoconf wants to disallow AM_ names. We explicitly allow dnl the ones we care about. m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl AC_REQUIRE([AM_SET_CURRENT_AUTOMAKE_VERSION])dnl AC_REQUIRE([AC_PROG_INSTALL])dnl if test "`cd $srcdir && pwd`" != "`pwd`"; then # Use -I$(srcdir) only when $(srcdir) != ., so that make's output # is not polluted with repeated "-I." AC_SUBST([am__isrc], [' -I$(srcdir)'])_AM_SUBST_NOTMAKE([am__isrc])dnl # test to see if srcdir already configured if test -f $srcdir/config.status; then AC_MSG_ERROR([source directory already configured; run "make distclean" there first]) fi fi # test whether we have cygpath if test -z "$CYGPATH_W"; then if (cygpath --version) >/dev/null 2>/dev/null; then CYGPATH_W='cygpath -w' else CYGPATH_W=echo fi fi AC_SUBST([CYGPATH_W]) # Define the identity of the package. dnl Distinguish between old-style and new-style calls. m4_ifval([$2], [AC_DIAGNOSE([obsolete], [$0: two- and three-arguments forms are deprecated.]) m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl AC_SUBST([PACKAGE], [$1])dnl AC_SUBST([VERSION], [$2])], [_AM_SET_OPTIONS([$1])dnl dnl Diagnose old-style AC_INIT with new-style AM_AUTOMAKE_INIT. m4_if( m4_ifdef([AC_PACKAGE_NAME], [ok]):m4_ifdef([AC_PACKAGE_VERSION], [ok]), [ok:ok],, [m4_fatal([AC_INIT should be called with package and version arguments])])dnl AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME'])dnl AC_SUBST([VERSION], ['AC_PACKAGE_VERSION'])])dnl _AM_IF_OPTION([no-define],, [AC_DEFINE_UNQUOTED([PACKAGE], ["$PACKAGE"], [Name of package]) AC_DEFINE_UNQUOTED([VERSION], ["$VERSION"], [Version number of package])])dnl # Some tools Automake needs. AC_REQUIRE([AM_SANITY_CHECK])dnl AC_REQUIRE([AC_ARG_PROGRAM])dnl AM_MISSING_PROG([ACLOCAL], [aclocal-${am__api_version}]) AM_MISSING_PROG([AUTOCONF], [autoconf]) AM_MISSING_PROG([AUTOMAKE], [automake-${am__api_version}]) AM_MISSING_PROG([AUTOHEADER], [autoheader]) AM_MISSING_PROG([MAKEINFO], [makeinfo]) AC_REQUIRE([AM_PROG_INSTALL_SH])dnl AC_REQUIRE([AM_PROG_INSTALL_STRIP])dnl AC_REQUIRE([AC_PROG_MKDIR_P])dnl # For better backward compatibility. To be removed once Automake 1.9.x # dies out for good. For more background, see: # # AC_SUBST([mkdir_p], ['$(MKDIR_P)']) # We need awk for the "check" target (and possibly the TAP driver). The # system "awk" is bad on some platforms. AC_REQUIRE([AC_PROG_AWK])dnl AC_REQUIRE([AC_PROG_MAKE_SET])dnl AC_REQUIRE([AM_SET_LEADING_DOT])dnl _AM_IF_OPTION([tar-ustar], [_AM_PROG_TAR([ustar])], [_AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])], [_AM_PROG_TAR([v7])])]) _AM_IF_OPTION([no-dependencies],, [AC_PROVIDE_IFELSE([AC_PROG_CC], [_AM_DEPENDENCIES([CC])], [m4_define([AC_PROG_CC], m4_defn([AC_PROG_CC])[_AM_DEPENDENCIES([CC])])])dnl AC_PROVIDE_IFELSE([AC_PROG_CXX], [_AM_DEPENDENCIES([CXX])], [m4_define([AC_PROG_CXX], m4_defn([AC_PROG_CXX])[_AM_DEPENDENCIES([CXX])])])dnl AC_PROVIDE_IFELSE([AC_PROG_OBJC], [_AM_DEPENDENCIES([OBJC])], [m4_define([AC_PROG_OBJC], m4_defn([AC_PROG_OBJC])[_AM_DEPENDENCIES([OBJC])])])dnl AC_PROVIDE_IFELSE([AC_PROG_OBJCXX], [_AM_DEPENDENCIES([OBJCXX])], [m4_define([AC_PROG_OBJCXX], m4_defn([AC_PROG_OBJCXX])[_AM_DEPENDENCIES([OBJCXX])])])dnl ]) AC_REQUIRE([AM_SILENT_RULES])dnl dnl The testsuite driver may need to know about EXEEXT, so add the dnl 'am__EXEEXT' conditional if _AM_COMPILER_EXEEXT was seen. This dnl macro is hooked onto _AC_COMPILER_EXEEXT early, see below. AC_CONFIG_COMMANDS_PRE(dnl [m4_provide_if([_AM_COMPILER_EXEEXT], [AM_CONDITIONAL([am__EXEEXT], [test -n "$EXEEXT"])])])dnl # POSIX will say in a future version that running "rm -f" with no argument # is OK; and we want to be able to make that assumption in our Makefile # recipes. So use an aggressive probe to check that the usage we want is # actually supported "in the wild" to an acceptable degree. # See automake bug#10828. # To make any issue more visible, cause the running configure to be aborted # by default if the 'rm' program in use doesn't match our expectations; the # user can still override this though. if rm -f && rm -fr && rm -rf; then : OK; else cat >&2 <<'END' Oops! Your 'rm' program seems unable to run without file operands specified on the command line, even when the '-f' option is present. This is contrary to the behaviour of most rm programs out there, and not conforming with the upcoming POSIX standard: Please tell bug-automake@gnu.org about your system, including the value of your $PATH and any error possibly output before this message. This can help us improve future automake versions. END if test x"$ACCEPT_INFERIOR_RM_PROGRAM" = x"yes"; then echo 'Configuration will proceed anyway, since you have set the' >&2 echo 'ACCEPT_INFERIOR_RM_PROGRAM variable to "yes"' >&2 echo >&2 else cat >&2 <<'END' Aborting the configuration process, to ensure you take notice of the issue. You can download and install GNU coreutils to get an 'rm' implementation that behaves properly: . If you want to complete the configuration process using your problematic 'rm' anyway, export the environment variable ACCEPT_INFERIOR_RM_PROGRAM to "yes", and re-run configure. END AC_MSG_ERROR([Your 'rm' program is bad, sorry.]) fi fi dnl The trailing newline in this macro's definition is deliberate, for dnl backward compatibility and to allow trailing 'dnl'-style comments dnl after the AM_INIT_AUTOMAKE invocation. See automake bug#16841. ]) dnl Hook into '_AC_COMPILER_EXEEXT' early to learn its expansion. Do not dnl add the conditional right here, as _AC_COMPILER_EXEEXT may be further dnl mangled by Autoconf and run in a shell conditional statement. m4_define([_AC_COMPILER_EXEEXT], m4_defn([_AC_COMPILER_EXEEXT])[m4_provide([_AM_COMPILER_EXEEXT])]) # When config.status generates a header, we must update the stamp-h file. # This file resides in the same directory as the config header # that is generated. The stamp files are numbered to have different names. # Autoconf calls _AC_AM_CONFIG_HEADER_HOOK (when defined) in the # loop where config.status creates the headers, so we can generate # our stamp files there. AC_DEFUN([_AC_AM_CONFIG_HEADER_HOOK], [# Compute $1's index in $config_headers. _am_arg=$1 _am_stamp_count=1 for _am_header in $config_headers :; do case $_am_header in $_am_arg | $_am_arg:* ) break ;; * ) _am_stamp_count=`expr $_am_stamp_count + 1` ;; esac done echo "timestamp for $_am_arg" >`AS_DIRNAME(["$_am_arg"])`/stamp-h[]$_am_stamp_count]) # Copyright (C) 2001-2017 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_PROG_INSTALL_SH # ------------------ # Define $install_sh. AC_DEFUN([AM_PROG_INSTALL_SH], [AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl if test x"${install_sh+set}" != xset; then case $am_aux_dir in *\ * | *\ *) install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;; *) install_sh="\${SHELL} $am_aux_dir/install-sh" esac fi AC_SUBST([install_sh])]) # Copyright (C) 2003-2017 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # Check whether the underlying file-system supports filenames # with a leading dot. For instance MS-DOS doesn't. AC_DEFUN([AM_SET_LEADING_DOT], [rm -rf .tst 2>/dev/null mkdir .tst 2>/dev/null if test -d .tst; then am__leading_dot=. else am__leading_dot=_ fi rmdir .tst 2>/dev/null AC_SUBST([am__leading_dot])]) # Check to see how 'make' treats includes. -*- Autoconf -*- # Copyright (C) 2001-2017 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_MAKE_INCLUDE() # ----------------- # Check to see how make treats includes. AC_DEFUN([AM_MAKE_INCLUDE], [am_make=${MAKE-make} cat > confinc << 'END' am__doit: @echo this is the am__doit target .PHONY: am__doit END # If we don't find an include directive, just comment out the code. AC_MSG_CHECKING([for style of include used by $am_make]) am__include="#" am__quote= _am_result=none # First try GNU make style include. echo "include confinc" > confmf # Ignore all kinds of additional output from 'make'. case `$am_make -s -f confmf 2> /dev/null` in #( *the\ am__doit\ target*) am__include=include am__quote= _am_result=GNU ;; esac # Now try BSD make style include. if test "$am__include" = "#"; then echo '.include "confinc"' > confmf case `$am_make -s -f confmf 2> /dev/null` in #( *the\ am__doit\ target*) am__include=.include am__quote="\"" _am_result=BSD ;; esac fi AC_SUBST([am__include]) AC_SUBST([am__quote]) AC_MSG_RESULT([$_am_result]) rm -f confinc confmf ]) # Fake the existence of programs that GNU maintainers use. -*- Autoconf -*- # Copyright (C) 1997-2017 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_MISSING_PROG(NAME, PROGRAM) # ------------------------------ AC_DEFUN([AM_MISSING_PROG], [AC_REQUIRE([AM_MISSING_HAS_RUN]) $1=${$1-"${am_missing_run}$2"} AC_SUBST($1)]) # AM_MISSING_HAS_RUN # ------------------ # Define MISSING if not defined so far and test if it is modern enough. # If it is, set am_missing_run to use it, otherwise, to nothing. AC_DEFUN([AM_MISSING_HAS_RUN], [AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl AC_REQUIRE_AUX_FILE([missing])dnl if test x"${MISSING+set}" != xset; then case $am_aux_dir in *\ * | *\ *) MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;; *) MISSING="\${SHELL} $am_aux_dir/missing" ;; esac fi # Use eval to expand $SHELL if eval "$MISSING --is-lightweight"; then am_missing_run="$MISSING " else am_missing_run= AC_MSG_WARN(['missing' script is too old or missing]) fi ]) # -*- Autoconf -*- # Obsolete and "removed" macros, that must however still report explicit # error messages when used, to smooth transition. # # Copyright (C) 1996-2017 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. AC_DEFUN([AM_CONFIG_HEADER], [AC_DIAGNOSE([obsolete], ['$0': this macro is obsolete. You should use the 'AC][_CONFIG_HEADERS' macro instead.])dnl AC_CONFIG_HEADERS($@)]) AC_DEFUN([AM_PROG_CC_STDC], [AC_PROG_CC am_cv_prog_cc_stdc=$ac_cv_prog_cc_stdc AC_DIAGNOSE([obsolete], ['$0': this macro is obsolete. You should simply use the 'AC][_PROG_CC' macro instead. Also, your code should no longer depend upon 'am_cv_prog_cc_stdc', but upon 'ac_cv_prog_cc_stdc'.])]) AC_DEFUN([AM_C_PROTOTYPES], [AC_FATAL([automatic de-ANSI-fication support has been removed])]) AU_DEFUN([fp_C_PROTOTYPES], [AM_C_PROTOTYPES]) # Helper functions for option handling. -*- Autoconf -*- # Copyright (C) 2001-2017 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # _AM_MANGLE_OPTION(NAME) # ----------------------- AC_DEFUN([_AM_MANGLE_OPTION], [[_AM_OPTION_]m4_bpatsubst($1, [[^a-zA-Z0-9_]], [_])]) # _AM_SET_OPTION(NAME) # -------------------- # Set option NAME. Presently that only means defining a flag for this option. AC_DEFUN([_AM_SET_OPTION], [m4_define(_AM_MANGLE_OPTION([$1]), [1])]) # _AM_SET_OPTIONS(OPTIONS) # ------------------------ # OPTIONS is a space-separated list of Automake options. AC_DEFUN([_AM_SET_OPTIONS], [m4_foreach_w([_AM_Option], [$1], [_AM_SET_OPTION(_AM_Option)])]) # _AM_IF_OPTION(OPTION, IF-SET, [IF-NOT-SET]) # ------------------------------------------- # Execute IF-SET if OPTION is set, IF-NOT-SET otherwise. AC_DEFUN([_AM_IF_OPTION], [m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])]) # Copyright (C) 1999-2017 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # _AM_PROG_CC_C_O # --------------- # Like AC_PROG_CC_C_O, but changed for automake. We rewrite AC_PROG_CC # to automatically call this. AC_DEFUN([_AM_PROG_CC_C_O], [AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl AC_REQUIRE_AUX_FILE([compile])dnl AC_LANG_PUSH([C])dnl AC_CACHE_CHECK( [whether $CC understands -c and -o together], [am_cv_prog_cc_c_o], [AC_LANG_CONFTEST([AC_LANG_PROGRAM([])]) # Make sure it works both with $CC and with simple cc. # Following AC_PROG_CC_C_O, we do the test twice because some # compilers refuse to overwrite an existing .o file with -o, # though they will create one. am_cv_prog_cc_c_o=yes for am_i in 1 2; do if AM_RUN_LOG([$CC -c conftest.$ac_ext -o conftest2.$ac_objext]) \ && test -f conftest2.$ac_objext; then : OK else am_cv_prog_cc_c_o=no break fi done rm -f core conftest* unset am_i]) if test "$am_cv_prog_cc_c_o" != yes; then # Losing compiler, so override with the script. # FIXME: It is wrong to rewrite CC. # But if we don't then we get into trouble of one sort or another. # A longer-term fix would be to have automake use am__CC in this case, # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)" CC="$am_aux_dir/compile $CC" fi AC_LANG_POP([C])]) # For backward compatibility. AC_DEFUN_ONCE([AM_PROG_CC_C_O], [AC_REQUIRE([AC_PROG_CC])]) # Copyright (C) 2001-2017 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_RUN_LOG(COMMAND) # ------------------- # Run COMMAND, save the exit status in ac_status, and log it. # (This has been adapted from Autoconf's _AC_RUN_LOG macro.) AC_DEFUN([AM_RUN_LOG], [{ echo "$as_me:$LINENO: $1" >&AS_MESSAGE_LOG_FD ($1) >&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD (exit $ac_status); }]) # Check to make sure that the build environment is sane. -*- Autoconf -*- # Copyright (C) 1996-2017 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_SANITY_CHECK # --------------- AC_DEFUN([AM_SANITY_CHECK], [AC_MSG_CHECKING([whether build environment is sane]) # Reject unsafe characters in $srcdir or the absolute working directory # name. Accept space and tab only in the latter. am_lf=' ' case `pwd` in *[[\\\"\#\$\&\'\`$am_lf]]*) AC_MSG_ERROR([unsafe absolute working directory name]);; esac case $srcdir in *[[\\\"\#\$\&\'\`$am_lf\ \ ]]*) AC_MSG_ERROR([unsafe srcdir value: '$srcdir']);; esac # Do 'set' in a subshell so we don't clobber the current shell's # arguments. Must try -L first in case configure is actually a # symlink; some systems play weird games with the mod time of symlinks # (eg FreeBSD returns the mod time of the symlink's containing # directory). if ( am_has_slept=no for am_try in 1 2; do echo "timestamp, slept: $am_has_slept" > conftest.file set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null` if test "$[*]" = "X"; then # -L didn't work. set X `ls -t "$srcdir/configure" conftest.file` fi if test "$[*]" != "X $srcdir/configure conftest.file" \ && test "$[*]" != "X conftest.file $srcdir/configure"; then # If neither matched, then we have a broken ls. This can happen # if, for instance, CONFIG_SHELL is bash and it inherits a # broken ls alias from the environment. This has actually # happened. Such a system could not be considered "sane". AC_MSG_ERROR([ls -t appears to fail. Make sure there is not a broken alias in your environment]) fi if test "$[2]" = conftest.file || test $am_try -eq 2; then break fi # Just in case. sleep 1 am_has_slept=yes done test "$[2]" = conftest.file ) then # Ok. : else AC_MSG_ERROR([newly created file is older than distributed files! Check your system clock]) fi AC_MSG_RESULT([yes]) # If we didn't sleep, we still need to ensure time stamps of config.status and # generated files are strictly newer. am_sleep_pid= if grep 'slept: no' conftest.file >/dev/null 2>&1; then ( sleep 1 ) & am_sleep_pid=$! fi AC_CONFIG_COMMANDS_PRE( [AC_MSG_CHECKING([that generated files are newer than configure]) if test -n "$am_sleep_pid"; then # Hide warnings about reused PIDs. wait $am_sleep_pid 2>/dev/null fi AC_MSG_RESULT([done])]) rm -f conftest.file ]) # Copyright (C) 2009-2017 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_SILENT_RULES([DEFAULT]) # -------------------------- # Enable less verbose build rules; with the default set to DEFAULT # ("yes" being less verbose, "no" or empty being verbose). AC_DEFUN([AM_SILENT_RULES], [AC_ARG_ENABLE([silent-rules], [dnl AS_HELP_STRING( [--enable-silent-rules], [less verbose build output (undo: "make V=1")]) AS_HELP_STRING( [--disable-silent-rules], [verbose build output (undo: "make V=0")])dnl ]) case $enable_silent_rules in @%:@ ((( yes) AM_DEFAULT_VERBOSITY=0;; no) AM_DEFAULT_VERBOSITY=1;; *) AM_DEFAULT_VERBOSITY=m4_if([$1], [yes], [0], [1]);; esac dnl dnl A few 'make' implementations (e.g., NonStop OS and NextStep) dnl do not support nested variable expansions. dnl See automake bug#9928 and bug#10237. am_make=${MAKE-make} AC_CACHE_CHECK([whether $am_make supports nested variables], [am_cv_make_support_nested_variables], [if AS_ECHO([['TRUE=$(BAR$(V)) BAR0=false BAR1=true V=1 am__doit: @$(TRUE) .PHONY: am__doit']]) | $am_make -f - >/dev/null 2>&1; then am_cv_make_support_nested_variables=yes else am_cv_make_support_nested_variables=no fi]) if test $am_cv_make_support_nested_variables = yes; then dnl Using '$V' instead of '$(V)' breaks IRIX make. AM_V='$(V)' AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)' else AM_V=$AM_DEFAULT_VERBOSITY AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY fi AC_SUBST([AM_V])dnl AM_SUBST_NOTMAKE([AM_V])dnl AC_SUBST([AM_DEFAULT_V])dnl AM_SUBST_NOTMAKE([AM_DEFAULT_V])dnl AC_SUBST([AM_DEFAULT_VERBOSITY])dnl AM_BACKSLASH='\' AC_SUBST([AM_BACKSLASH])dnl _AM_SUBST_NOTMAKE([AM_BACKSLASH])dnl ]) # Copyright (C) 2001-2017 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_PROG_INSTALL_STRIP # --------------------- # One issue with vendor 'install' (even GNU) is that you can't # specify the program used to strip binaries. This is especially # annoying in cross-compiling environments, where the build's strip # is unlikely to handle the host's binaries. # Fortunately install-sh will honor a STRIPPROG variable, so we # always use install-sh in "make install-strip", and initialize # STRIPPROG with the value of the STRIP variable (set by the user). AC_DEFUN([AM_PROG_INSTALL_STRIP], [AC_REQUIRE([AM_PROG_INSTALL_SH])dnl # Installed binaries are usually stripped using 'strip' when the user # run "make install-strip". However 'strip' might not be the right # tool to use in cross-compilation environments, therefore Automake # will honor the 'STRIP' environment variable to overrule this program. dnl Don't test for $cross_compiling = yes, because it might be 'maybe'. if test "$cross_compiling" != no; then AC_CHECK_TOOL([STRIP], [strip], :) fi INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" AC_SUBST([INSTALL_STRIP_PROGRAM])]) # Copyright (C) 2006-2017 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # _AM_SUBST_NOTMAKE(VARIABLE) # --------------------------- # Prevent Automake from outputting VARIABLE = @VARIABLE@ in Makefile.in. # This macro is traced by Automake. AC_DEFUN([_AM_SUBST_NOTMAKE]) # AM_SUBST_NOTMAKE(VARIABLE) # -------------------------- # Public sister of _AM_SUBST_NOTMAKE. AC_DEFUN([AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE($@)]) # Check how to create a tarball. -*- Autoconf -*- # Copyright (C) 2004-2017 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # _AM_PROG_TAR(FORMAT) # -------------------- # Check how to create a tarball in format FORMAT. # FORMAT should be one of 'v7', 'ustar', or 'pax'. # # Substitute a variable $(am__tar) that is a command # writing to stdout a FORMAT-tarball containing the directory # $tardir. # tardir=directory && $(am__tar) > result.tar # # Substitute a variable $(am__untar) that extract such # a tarball read from stdin. # $(am__untar) < result.tar # AC_DEFUN([_AM_PROG_TAR], [# Always define AMTAR for backward compatibility. Yes, it's still used # in the wild :-( We should find a proper way to deprecate it ... AC_SUBST([AMTAR], ['$${TAR-tar}']) # We'll loop over all known methods to create a tar archive until one works. _am_tools='gnutar m4_if([$1], [ustar], [plaintar]) pax cpio none' m4_if([$1], [v7], [am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -'], [m4_case([$1], [ustar], [# The POSIX 1988 'ustar' format is defined with fixed-size fields. # There is notably a 21 bits limit for the UID and the GID. In fact, # the 'pax' utility can hang on bigger UID/GID (see automake bug#8343 # and bug#13588). am_max_uid=2097151 # 2^21 - 1 am_max_gid=$am_max_uid # The $UID and $GID variables are not portable, so we need to resort # to the POSIX-mandated id(1) utility. Errors in the 'id' calls # below are definitely unexpected, so allow the users to see them # (that is, avoid stderr redirection). am_uid=`id -u || echo unknown` am_gid=`id -g || echo unknown` AC_MSG_CHECKING([whether UID '$am_uid' is supported by ustar format]) if test $am_uid -le $am_max_uid; then AC_MSG_RESULT([yes]) else AC_MSG_RESULT([no]) _am_tools=none fi AC_MSG_CHECKING([whether GID '$am_gid' is supported by ustar format]) if test $am_gid -le $am_max_gid; then AC_MSG_RESULT([yes]) else AC_MSG_RESULT([no]) _am_tools=none fi], [pax], [], [m4_fatal([Unknown tar format])]) AC_MSG_CHECKING([how to create a $1 tar archive]) # 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_$1-$_am_tools} for _am_tool in $_am_tools; do case $_am_tool in gnutar) for _am_tar in tar gnutar gtar; do AM_RUN_LOG([$_am_tar --version]) && break done am__tar="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$$tardir"' am__tar_="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -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 $1 -w "$$tardir"' am__tar_='pax -L -x $1 -w "$tardir"' am__untar='pax -r' ;; cpio) am__tar='find "$$tardir" -print | cpio -o -H $1 -L' am__tar_='find "$tardir" -print | cpio -o -H $1 -L' am__untar='cpio -i -H $1 -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_$1}" && break # tar/untar a dummy directory, and stop if the command works. rm -rf conftest.dir mkdir conftest.dir echo GrepMe > conftest.dir/file AM_RUN_LOG([tardir=conftest.dir && eval $am__tar_ >conftest.tar]) rm -rf conftest.dir if test -s conftest.tar; then AM_RUN_LOG([$am__untar /dev/null 2>&1 && break fi done rm -rf conftest.dir AC_CACHE_VAL([am_cv_prog_tar_$1], [am_cv_prog_tar_$1=$_am_tool]) AC_MSG_RESULT([$am_cv_prog_tar_$1])]) AC_SUBST([am__tar]) AC_SUBST([am__untar]) ]) # _AM_PROG_TAR tmpreaper-1.6.13+nmu1+deb9u1build0.16.04.1/getopt.c0000664000000000000000000007347207402651141016023 0ustar /* Getopt for GNU. NOTE: getopt is now part of the C library, so if you don't know what "Keep this file name-space clean" means, talk to drepper@gnu.org before changing it! Copyright (C) 1987,88,89,90,91,92,93,94,95,96,98,99,2000,2001 Free Software Foundation, Inc. This file is part of the GNU C Library. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ /* This tells Alpha OSF/1 not to define a getopt prototype in . Ditto for AIX 3.2 and . */ #ifndef _NO_PROTO # define _NO_PROTO #endif #ifdef HAVE_CONFIG_H # include #endif #if !defined __STDC__ || !__STDC__ /* This is a separate conditional since some stdc systems reject `defined (const)'. */ # ifndef const # define const # endif #endif #include /* Comment out all this code if we are using the GNU C Library, and are not actually compiling the library itself. This code is part of the GNU C Library, but also included in many other GNU distributions. Compiling and linking in this code is a waste when using the GNU C library (especially if it is a shared library). Rather than having every GNU program understand `configure --with-gnu-libc' and omit the object files, it is simpler to just do this in the source for each such file. */ #define GETOPT_INTERFACE_VERSION 2 #if !defined _LIBC && defined __GLIBC__ && __GLIBC__ >= 2 # include # if _GNU_GETOPT_INTERFACE_VERSION == GETOPT_INTERFACE_VERSION # define ELIDE_CODE # endif #endif #ifndef ELIDE_CODE /* This needs to come after some library #include to get __GNU_LIBRARY__ defined. */ #ifdef __GNU_LIBRARY__ /* Don't include stdlib.h for non-GNU C libraries because some of them contain conflicting prototypes for getopt. */ # include # include #endif /* GNU C library. */ #ifdef VMS # include # if HAVE_STRING_H - 0 # include # endif #endif #ifndef _ /* This is for other GNU distributions with internationalized messages. */ # if defined HAVE_LIBINTL_H || defined _LIBC # include # ifndef _ # define _(msgid) gettext (msgid) # endif # else # define _(msgid) (msgid) # endif #endif /* This version of `getopt' appears to the caller like standard Unix `getopt' but it behaves differently for the user, since it allows the user to intersperse the options with the other arguments. As `getopt' works, it permutes the elements of ARGV so that, when it is done, all the options precede everything else. Thus all application programs are extended to handle flexible argument order. Setting the environment variable POSIXLY_CORRECT disables permutation. Then the behavior is completely standard. GNU application programs can use a third alternative mode in which they can distinguish the relative order of options and other arguments. */ #include "getopt.h" /* For communication from `getopt' to the caller. When `getopt' finds an option that takes an argument, the argument value is returned here. Also, when `ordering' is RETURN_IN_ORDER, each non-option ARGV-element is returned here. */ char *optarg; /* Index in ARGV of the next element to be scanned. This is used for communication to and from the caller and for communication between successive calls to `getopt'. On entry to `getopt', zero means this is the first call; initialize. When `getopt' returns -1, this is the index of the first of the non-option elements that the caller should itself scan. Otherwise, `optind' communicates from one call to the next how much of ARGV has been scanned so far. */ /* 1003.2 says this must be 1 before any call. */ int optind = 1; /* Formerly, initialization of getopt depended on optind==0, which causes problems with re-calling getopt as programs generally don't know that. */ int __getopt_initialized; /* The next char to be scanned in the option-element in which the last option character we returned was found. This allows us to pick up the scan where we left off. If this is zero, or a null string, it means resume the scan by advancing to the next ARGV-element. */ static char *nextchar; /* Callers store zero here to inhibit the error message for unrecognized options. */ int opterr = 1; /* Set to an option character which was unrecognized. This must be initialized on some systems to avoid linking in the system's own getopt implementation. */ int optopt = '?'; /* Describe how to deal with options that follow non-option ARGV-elements. If the caller did not specify anything, the default is REQUIRE_ORDER if the environment variable POSIXLY_CORRECT is defined, PERMUTE otherwise. REQUIRE_ORDER means don't recognize them as options; stop option processing when the first non-option is seen. This is what Unix does. This mode of operation is selected by either setting the environment variable POSIXLY_CORRECT, or using `+' as the first character of the list of option characters. PERMUTE is the default. We permute the contents of ARGV as we scan, so that eventually all the non-options are at the end. This allows options to be given in any order, even with programs that were not written to expect this. RETURN_IN_ORDER is an option available to programs that were written to expect options and other ARGV-elements in any order and that care about the ordering of the two. We describe each non-option ARGV-element as if it were the argument of an option with character code 1. Using `-' as the first character of the list of option characters selects this mode of operation. The special argument `--' forces an end of option-scanning regardless of the value of `ordering'. In the case of RETURN_IN_ORDER, only `--' can cause `getopt' to return -1 with `optind' != ARGC. */ static enum { REQUIRE_ORDER, PERMUTE, RETURN_IN_ORDER } ordering; /* Value of POSIXLY_CORRECT environment variable. */ static char *posixly_correct; #ifdef __GNU_LIBRARY__ /* We want to avoid inclusion of string.h with non-GNU libraries because there are many ways it can cause trouble. On some systems, it contains special magic macros that don't work in GCC. */ # include # define my_index strchr #else # if HAVE_STRING_H # include # else # include # endif /* Avoid depending on library functions or files whose names are inconsistent. */ #ifndef getenv extern char *getenv (); #endif static char * my_index (str, chr) const char *str; int chr; { while (*str) { if (*str == chr) return (char *) str; str++; } return 0; } /* If using GCC, we can safely declare strlen this way. If not using GCC, it is ok not to declare it. */ #ifdef __GNUC__ /* Note that Motorola Delta 68k R3V7 comes with GCC but not stddef.h. That was relevant to code that was here before. */ # if (!defined __STDC__ || !__STDC__) && !defined strlen /* gcc with -traditional declares the built-in strlen to return int, and has done so at least since version 2.4.5. -- rms. */ extern int strlen (const char *); # endif /* not __STDC__ */ #endif /* __GNUC__ */ #endif /* not __GNU_LIBRARY__ */ /* Handle permutation of arguments. */ /* Describe the part of ARGV that contains non-options that have been skipped. `first_nonopt' is the index in ARGV of the first of them; `last_nonopt' is the index after the last of them. */ static int first_nonopt; static int last_nonopt; #ifdef _LIBC /* Bash 2.0 gives us an environment variable containing flags indicating ARGV elements that should not be considered arguments. */ #ifdef USE_NONOPTION_FLAGS /* Defined in getopt_init.c */ extern char *__getopt_nonoption_flags; static int nonoption_flags_max_len; static int nonoption_flags_len; #endif static int original_argc; static char *const *original_argv; /* Make sure the environment variable bash 2.0 puts in the environment is valid for the getopt call we must make sure that the ARGV passed to getopt is that one passed to the process. */ static void __attribute__ ((unused)) store_args_and_env (int argc, char *const *argv) { /* XXX This is no good solution. We should rather copy the args so that we can compare them later. But we must not use malloc(3). */ original_argc = argc; original_argv = argv; } # ifdef text_set_element text_set_element (__libc_subinit, store_args_and_env); # endif /* text_set_element */ # ifdef USE_NONOPTION_FLAGS # define SWAP_FLAGS(ch1, ch2) \ if (nonoption_flags_len > 0) \ { \ char __tmp = __getopt_nonoption_flags[ch1]; \ __getopt_nonoption_flags[ch1] = __getopt_nonoption_flags[ch2]; \ __getopt_nonoption_flags[ch2] = __tmp; \ } # else # define SWAP_FLAGS(ch1, ch2) # endif #else /* !_LIBC */ # define SWAP_FLAGS(ch1, ch2) #endif /* _LIBC */ /* Exchange two adjacent subsequences of ARGV. One subsequence is elements [first_nonopt,last_nonopt) which contains all the non-options that have been skipped so far. The other is elements [last_nonopt,optind), which contains all the options processed since those non-options were skipped. `first_nonopt' and `last_nonopt' are relocated so that they describe the new indices of the non-options in ARGV after they are moved. */ #if defined __STDC__ && __STDC__ static void exchange (char **); #endif static void exchange (argv) char **argv; { int bottom = first_nonopt; int middle = last_nonopt; int top = optind; char *tem; /* Exchange the shorter segment with the far end of the longer segment. That puts the shorter segment into the right place. It leaves the longer segment in the right place overall, but it consists of two parts that need to be swapped next. */ #if defined _LIBC && defined USE_NONOPTION_FLAGS /* First make sure the handling of the `__getopt_nonoption_flags' string can work normally. Our top argument must be in the range of the string. */ if (nonoption_flags_len > 0 && top >= nonoption_flags_max_len) { /* We must extend the array. The user plays games with us and presents new arguments. */ char *new_str = malloc (top + 1); if (new_str == NULL) nonoption_flags_len = nonoption_flags_max_len = 0; else { memset (__mempcpy (new_str, __getopt_nonoption_flags, nonoption_flags_max_len), '\0', top + 1 - nonoption_flags_max_len); nonoption_flags_max_len = top + 1; __getopt_nonoption_flags = new_str; } } #endif while (top > middle && middle > bottom) { if (top - middle > middle - bottom) { /* Bottom segment is the short one. */ int len = middle - bottom; register int i; /* Swap it with the top part of the top segment. */ for (i = 0; i < len; i++) { tem = argv[bottom + i]; argv[bottom + i] = argv[top - (middle - bottom) + i]; argv[top - (middle - bottom) + i] = tem; SWAP_FLAGS (bottom + i, top - (middle - bottom) + i); } /* Exclude the moved bottom segment from further swapping. */ top -= len; } else { /* Top segment is the short one. */ int len = top - middle; register int i; /* Swap it with the bottom part of the bottom segment. */ for (i = 0; i < len; i++) { tem = argv[bottom + i]; argv[bottom + i] = argv[middle + i]; argv[middle + i] = tem; SWAP_FLAGS (bottom + i, middle + i); } /* Exclude the moved top segment from further swapping. */ bottom += len; } } /* Update records for the slots the non-options now occupy. */ first_nonopt += (optind - last_nonopt); last_nonopt = optind; } /* Initialize the internal data when the first call is made. */ #if defined __STDC__ && __STDC__ static const char *_getopt_initialize (int, char *const *, const char *); #endif static const char * _getopt_initialize (argc, argv, optstring) int argc; char *const *argv; const char *optstring; { /* Start processing options with ARGV-element 1 (since ARGV-element 0 is the program name); the sequence of previously skipped non-option ARGV-elements is empty. */ first_nonopt = last_nonopt = optind; nextchar = NULL; posixly_correct = getenv ("POSIXLY_CORRECT"); /* Determine how to handle the ordering of options and nonoptions. */ if (optstring[0] == '-') { ordering = RETURN_IN_ORDER; ++optstring; } else if (optstring[0] == '+') { ordering = REQUIRE_ORDER; ++optstring; } else if (posixly_correct != NULL) ordering = REQUIRE_ORDER; else ordering = PERMUTE; #if defined _LIBC && defined USE_NONOPTION_FLAGS if (posixly_correct == NULL && argc == original_argc && argv == original_argv) { if (nonoption_flags_max_len == 0) { if (__getopt_nonoption_flags == NULL || __getopt_nonoption_flags[0] == '\0') nonoption_flags_max_len = -1; else { const char *orig_str = __getopt_nonoption_flags; int len = nonoption_flags_max_len = strlen (orig_str); if (nonoption_flags_max_len < argc) nonoption_flags_max_len = argc; __getopt_nonoption_flags = (char *) malloc (nonoption_flags_max_len); if (__getopt_nonoption_flags == NULL) nonoption_flags_max_len = -1; else memset (__mempcpy (__getopt_nonoption_flags, orig_str, len), '\0', nonoption_flags_max_len - len); } } nonoption_flags_len = nonoption_flags_max_len; } else nonoption_flags_len = 0; #endif return optstring; } /* Scan elements of ARGV (whose length is ARGC) for option characters given in OPTSTRING. If an element of ARGV starts with '-', and is not exactly "-" or "--", then it is an option element. The characters of this element (aside from the initial '-') are option characters. If `getopt' is called repeatedly, it returns successively each of the option characters from each of the option elements. If `getopt' finds another option character, it returns that character, updating `optind' and `nextchar' so that the next call to `getopt' can resume the scan with the following option character or ARGV-element. If there are no more option characters, `getopt' returns -1. Then `optind' is the index in ARGV of the first ARGV-element that is not an option. (The ARGV-elements have been permuted so that those that are not options now come last.) OPTSTRING is a string containing the legitimate option characters. If an option character is seen that is not listed in OPTSTRING, return '?' after printing an error message. If you set `opterr' to zero, the error message is suppressed but we still return '?'. If a char in OPTSTRING is followed by a colon, that means it wants an arg, so the following text in the same ARGV-element, or the text of the following ARGV-element, is returned in `optarg'. Two colons mean an option that wants an optional arg; if there is text in the current ARGV-element, it is returned in `optarg', otherwise `optarg' is set to zero. If OPTSTRING starts with `-' or `+', it requests different methods of handling the non-option ARGV-elements. See the comments about RETURN_IN_ORDER and REQUIRE_ORDER, above. Long-named options begin with `--' instead of `-'. Their names may be abbreviated as long as the abbreviation is unique or is an exact match for some defined option. If they have an argument, it follows the option name in the same ARGV-element, separated from the option name by a `=', or else the in next ARGV-element. When `getopt' finds a long-named option, it returns 0 if that option's `flag' field is nonzero, the value of the option's `val' field if the `flag' field is zero. The elements of ARGV aren't really const, because we permute them. But we pretend they're const in the prototype to be compatible with other systems. LONGOPTS is a vector of `struct option' terminated by an element containing a name which is zero. LONGIND returns the index in LONGOPT of the long-named option found. It is only valid when a long-named option has been found by the most recent call. If LONG_ONLY is nonzero, '-' as well as '--' can introduce long-named options. */ int _getopt_internal (argc, argv, optstring, longopts, longind, long_only) int argc; char *const *argv; const char *optstring; const struct option *longopts; int *longind; int long_only; { int print_errors = opterr; if (optstring[0] == ':') print_errors = 0; if (argc < 1) return -1; optarg = NULL; if (optind == 0 || !__getopt_initialized) { if (optind == 0) optind = 1; /* Don't scan ARGV[0], the program name. */ optstring = _getopt_initialize (argc, argv, optstring); __getopt_initialized = 1; } /* Test whether ARGV[optind] points to a non-option argument. Either it does not have option syntax, or there is an environment flag from the shell indicating it is not an option. The later information is only used when the used in the GNU libc. */ #if defined _LIBC && defined USE_NONOPTION_FLAGS # define NONOPTION_P (argv[optind][0] != '-' || argv[optind][1] == '\0' \ || (optind < nonoption_flags_len \ && __getopt_nonoption_flags[optind] == '1')) #else # define NONOPTION_P (argv[optind][0] != '-' || argv[optind][1] == '\0') #endif if (nextchar == NULL || *nextchar == '\0') { /* Advance to the next ARGV-element. */ /* Give FIRST_NONOPT & LAST_NONOPT rational values if OPTIND has been moved back by the user (who may also have changed the arguments). */ if (last_nonopt > optind) last_nonopt = optind; if (first_nonopt > optind) first_nonopt = optind; if (ordering == PERMUTE) { /* If we have just processed some options following some non-options, exchange them so that the options come first. */ if (first_nonopt != last_nonopt && last_nonopt != optind) exchange ((char **) argv); else if (last_nonopt != optind) first_nonopt = optind; /* Skip any additional non-options and extend the range of non-options previously skipped. */ while (optind < argc && NONOPTION_P) optind++; last_nonopt = optind; } /* The special ARGV-element `--' means premature end of options. Skip it like a null option, then exchange with previous non-options as if it were an option, then skip everything else like a non-option. */ if (optind != argc && !strcmp (argv[optind], "--")) { optind++; if (first_nonopt != last_nonopt && last_nonopt != optind) exchange ((char **) argv); else if (first_nonopt == last_nonopt) first_nonopt = optind; last_nonopt = argc; optind = argc; } /* If we have done all the ARGV-elements, stop the scan and back over any non-options that we skipped and permuted. */ if (optind == argc) { /* Set the next-arg-index to point at the non-options that we previously skipped, so the caller will digest them. */ if (first_nonopt != last_nonopt) optind = first_nonopt; return -1; } /* If we have come to a non-option and did not permute it, either stop the scan or describe it to the caller and pass it by. */ if (NONOPTION_P) { if (ordering == REQUIRE_ORDER) return -1; optarg = argv[optind++]; return 1; } /* We have found another option-ARGV-element. Skip the initial punctuation. */ nextchar = (argv[optind] + 1 + (longopts != NULL && argv[optind][1] == '-')); } /* Decode the current option-ARGV-element. */ /* Check whether the ARGV-element is a long option. If long_only and the ARGV-element has the form "-f", where f is a valid short option, don't consider it an abbreviated form of a long option that starts with f. Otherwise there would be no way to give the -f short option. On the other hand, if there's a long option "fubar" and the ARGV-element is "-fu", do consider that an abbreviation of the long option, just like "--fu", and not "-f" with arg "u". This distinction seems to be the most useful approach. */ if (longopts != NULL && (argv[optind][1] == '-' || (long_only && (argv[optind][2] || !my_index (optstring, argv[optind][1]))))) { char *nameend; const struct option *p; const struct option *pfound = NULL; int exact = 0; int ambig = 0; int indfound = -1; int option_index; for (nameend = nextchar; *nameend && *nameend != '='; nameend++) /* Do nothing. */ ; /* Test all long options for either exact match or abbreviated matches. */ for (p = longopts, option_index = 0; p->name; p++, option_index++) if (!strncmp (p->name, nextchar, nameend - nextchar)) { if ((unsigned int) (nameend - nextchar) == (unsigned int) strlen (p->name)) { /* Exact match found. */ pfound = p; indfound = option_index; exact = 1; break; } else if (pfound == NULL) { /* First nonexact match found. */ pfound = p; indfound = option_index; } else if (long_only || pfound->has_arg != p->has_arg || pfound->flag != p->flag || pfound->val != p->val) /* Second or later nonexact match found. */ ambig = 1; } if (ambig && !exact) { if (print_errors) fprintf (stderr, _("%s: option `%s' is ambiguous\n"), argv[0], argv[optind]); nextchar += strlen (nextchar); optind++; optopt = 0; return '?'; } if (pfound != NULL) { option_index = indfound; optind++; if (*nameend) { /* Don't test has_arg with >, because some C compilers don't allow it to be used on enums. */ if (pfound->has_arg) optarg = nameend + 1; else { if (print_errors) { if (argv[optind - 1][1] == '-') /* --option */ fprintf (stderr, _("%s: option `--%s' doesn't allow an argument\n"), argv[0], pfound->name); else /* +option or -option */ fprintf (stderr, _("%s: option `%c%s' doesn't allow an argument\n"), argv[0], argv[optind - 1][0], pfound->name); } nextchar += strlen (nextchar); optopt = pfound->val; return '?'; } } else if (pfound->has_arg == 1) { if (optind < argc) optarg = argv[optind++]; else { if (print_errors) fprintf (stderr, _("%s: option `%s' requires an argument\n"), argv[0], argv[optind - 1]); nextchar += strlen (nextchar); optopt = pfound->val; return optstring[0] == ':' ? ':' : '?'; } } nextchar += strlen (nextchar); if (longind != NULL) *longind = option_index; if (pfound->flag) { *(pfound->flag) = pfound->val; return 0; } return pfound->val; } /* Can't find it as a long option. If this is not getopt_long_only, or the option starts with '--' or is not a valid short option, then it's an error. Otherwise interpret it as a short option. */ if (!long_only || argv[optind][1] == '-' || my_index (optstring, *nextchar) == NULL) { if (print_errors) { if (argv[optind][1] == '-') /* --option */ fprintf (stderr, _("%s: unrecognized option `--%s'\n"), argv[0], nextchar); else /* +option or -option */ fprintf (stderr, _("%s: unrecognized option `%c%s'\n"), argv[0], argv[optind][0], nextchar); } nextchar = (char *) ""; optind++; optopt = 0; return '?'; } } /* Look at and handle the next short option-character. */ { char c = *nextchar++; char *temp = my_index (optstring, c); /* Increment `optind' when we start to process its last character. */ if (*nextchar == '\0') ++optind; if (temp == NULL || c == ':') { if (print_errors) { if (posixly_correct) /* 1003.2 specifies the format of this message. */ fprintf (stderr, _("%s: illegal option -- %c\n"), argv[0], c); else fprintf (stderr, _("%s: invalid option -- %c\n"), argv[0], c); } optopt = c; return '?'; } /* Convenience. Treat POSIX -W foo same as long option --foo */ if (temp[0] == 'W' && temp[1] == ';') { char *nameend; const struct option *p; const struct option *pfound = NULL; int exact = 0; int ambig = 0; int indfound = 0; int option_index; /* This is an option that requires an argument. */ if (*nextchar != '\0') { optarg = nextchar; /* If we end this ARGV-element by taking the rest as an arg, we must advance to the next element now. */ optind++; } else if (optind == argc) { if (print_errors) { /* 1003.2 specifies the format of this message. */ fprintf (stderr, _("%s: option requires an argument -- %c\n"), argv[0], c); } optopt = c; if (optstring[0] == ':') c = ':'; else c = '?'; return c; } else /* We already incremented `optind' once; increment it again when taking next ARGV-elt as argument. */ optarg = argv[optind++]; /* optarg is now the argument, see if it's in the table of longopts. */ for (nextchar = nameend = optarg; *nameend && *nameend != '='; nameend++) /* Do nothing. */ ; /* Test all long options for either exact match or abbreviated matches. */ for (p = longopts, option_index = 0; p->name; p++, option_index++) if (!strncmp (p->name, nextchar, nameend - nextchar)) { if ((unsigned int) (nameend - nextchar) == strlen (p->name)) { /* Exact match found. */ pfound = p; indfound = option_index; exact = 1; break; } else if (pfound == NULL) { /* First nonexact match found. */ pfound = p; indfound = option_index; } else /* Second or later nonexact match found. */ ambig = 1; } if (ambig && !exact) { if (print_errors) fprintf (stderr, _("%s: option `-W %s' is ambiguous\n"), argv[0], argv[optind]); nextchar += strlen (nextchar); optind++; return '?'; } if (pfound != NULL) { option_index = indfound; if (*nameend) { /* Don't test has_arg with >, because some C compilers don't allow it to be used on enums. */ if (pfound->has_arg) optarg = nameend + 1; else { if (print_errors) fprintf (stderr, _("\ %s: option `-W %s' doesn't allow an argument\n"), argv[0], pfound->name); nextchar += strlen (nextchar); return '?'; } } else if (pfound->has_arg == 1) { if (optind < argc) optarg = argv[optind++]; else { if (print_errors) fprintf (stderr, _("%s: option `%s' requires an argument\n"), argv[0], argv[optind - 1]); nextchar += strlen (nextchar); return optstring[0] == ':' ? ':' : '?'; } } nextchar += strlen (nextchar); if (longind != NULL) *longind = option_index; if (pfound->flag) { *(pfound->flag) = pfound->val; return 0; } return pfound->val; } nextchar = NULL; return 'W'; /* Let the application handle it. */ } if (temp[1] == ':') { if (temp[2] == ':') { /* This is an option that accepts an argument optionally. */ if (*nextchar != '\0') { optarg = nextchar; optind++; } else optarg = NULL; nextchar = NULL; } else { /* This is an option that requires an argument. */ if (*nextchar != '\0') { optarg = nextchar; /* If we end this ARGV-element by taking the rest as an arg, we must advance to the next element now. */ optind++; } else if (optind == argc) { if (print_errors) { /* 1003.2 specifies the format of this message. */ fprintf (stderr, _("%s: option requires an argument -- %c\n"), argv[0], c); } optopt = c; if (optstring[0] == ':') c = ':'; else c = '?'; } else /* We already incremented `optind' once; increment it again when taking next ARGV-elt as argument. */ optarg = argv[optind++]; nextchar = NULL; } } return c; } } int getopt (argc, argv, optstring) int argc; char *const *argv; const char *optstring; { return _getopt_internal (argc, argv, optstring, (const struct option *) 0, (int *) 0, 0); } #endif /* Not ELIDE_CODE. */ #ifdef TEST /* Compile with -DTEST to make an executable for use in testing the above definition of `getopt'. */ int main (argc, argv) int argc; char **argv; { int c; int digit_optind = 0; while (1) { int this_option_optind = optind ? optind : 1; c = getopt (argc, argv, "abc:d:0123456789"); if (c == -1) break; switch (c) { case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': if (digit_optind != 0 && digit_optind != this_option_optind) printf ("digits occur in two different argv-elements.\n"); digit_optind = this_option_optind; printf ("option %c\n", c); break; case 'a': printf ("option a\n"); break; case 'b': printf ("option b\n"); break; case 'c': printf ("option c with value `%s'\n", optarg); break; case '?': break; default: printf ("?? getopt returned character code 0%o ??\n", c); } } if (optind < argc) { printf ("non-option ARGV-elements: "); while (optind < argc) printf ("%s ", argv[optind++]); printf ("\n"); } exit (0); } #endif /* TEST */ tmpreaper-1.6.13+nmu1+deb9u1build0.16.04.1/ChangeLog0000777000000000000000000000000011426433270021203 2debian/changelogustar tmpreaper-1.6.13+nmu1+deb9u1build0.16.04.1/.cvsignore0000664000000000000000000000001206463255736016351 0ustar tmpreaper tmpreaper-1.6.13+nmu1+deb9u1build0.16.04.1/tmpreaper.lsm0000664000000000000000000000124610370404165017057 0ustar Begin4 Title: tmpreaper Version: 1.6.6 Entered-date: Thu, 02 Feb 2006 14:26:07 +0100 Description: Cleans up files in directories based on their age. This is an improved version of `tmpwatch-1.4' from Red Hat. Now uses autoconf, builds on at least linux, solaris, netbsd Keywords: tmp admin tmpwatch filereaper find rm security Author: Karl M. Hegbloom Maintained-by: Paul Slootman Primary-site: ftp.debian.org Alternate-site: sunsite.unc.edu Original-site: ftp.debian.org Platforms: Linux, should work for other POSIX OS's with gcc, AFAIK Copying-policy: GPL End tmpreaper-1.6.13+nmu1+deb9u1build0.16.04.1/stamp-h.in0000644000000000000000000000000013516124023016222 0ustar tmpreaper-1.6.13+nmu1+deb9u1build0.16.04.1/mkinstalldirs0000775000000000000000000000132207363706726017164 0ustar #! /bin/sh # mkinstalldirs --- make directory hierarchy # Author: Noah Friedman # Created: 1993-05-16 # Public domain # $Id: mkinstalldirs,v 1.13 1999/01/05 03:18:55 bje Exp $ errstatus=0 for file do set fnord `echo ":$file" | sed -ne 's/^:\//#/;s/^://;s/\// /g;s/^#/\//;p'` shift pathcomp= for d do pathcomp="$pathcomp$d" case "$pathcomp" in -* ) pathcomp=./$pathcomp ;; esac if test ! -d "$pathcomp"; then echo "mkdir $pathcomp" mkdir "$pathcomp" || lasterr=$? if test ! -d "$pathcomp"; then errstatus=$lasterr fi fi pathcomp="$pathcomp/" done done exit $errstatus # mkinstalldirs ends here tmpreaper-1.6.13+nmu1+deb9u1build0.16.04.1/config.h.in0000664000000000000000000000424313414145506016371 0ustar /* config.h.in. Generated from configure.ac by autoheader. */ /* Define to 1 if you have the header file, and it defines `DIR'. */ #undef HAVE_DIRENT_H /* Define to 1 if you have the header file. */ #undef HAVE_ERRNO_H /* Define to 1 if you have the header file. */ #undef HAVE_INTTYPES_H /* Define to 1 if you have the header file. */ #undef HAVE_LIBMOUNT_LIBMOUNT_H /* Define to 1 if you have the header file. */ #undef HAVE_LIMITS_H /* Define to 1 if you have the header file. */ #undef HAVE_MEMORY_H /* Define to 1 if you have the header file, and it defines `DIR'. */ #undef HAVE_NDIR_H /* Define to 1 if you have the header file. */ #undef HAVE_STDINT_H /* Define to 1 if you have the header file. */ #undef HAVE_STDLIB_H /* Define to 1 if you have the header file. */ #undef HAVE_STRINGS_H /* Define to 1 if you have the header file. */ #undef HAVE_STRING_H /* Define to 1 if you have the header file, and it defines `DIR'. */ #undef HAVE_SYS_DIR_H /* Define to 1 if you have the header file, and it defines `DIR'. */ #undef HAVE_SYS_NDIR_H /* Define to 1 if you have the header file. */ #undef HAVE_SYS_STAT_H /* Define to 1 if you have the header file. */ #undef HAVE_SYS_TYPES_H /* Define to 1 if you have that is POSIX.1 compatible. */ #undef HAVE_SYS_WAIT_H /* Define to 1 if you have the header file. */ #undef HAVE_UNISTD_H /* Name of package */ #undef PACKAGE /* Define to the address where bug reports for this package should be sent. */ #undef PACKAGE_BUGREPORT /* Define to the full name of this package. */ #undef PACKAGE_NAME /* Define to the full name and version of this package. */ #undef PACKAGE_STRING /* Define to the one symbol short name of this package. */ #undef PACKAGE_TARNAME /* Define to the home page for this package. */ #undef PACKAGE_URL /* Define to the version of this package. */ #undef PACKAGE_VERSION /* Define to 1 if you have the ANSI C header files. */ #undef STDC_HEADERS /* Version number of package */ #undef VERSION tmpreaper-1.6.13+nmu1+deb9u1build0.16.04.1/ChangeLog.old0000664000000000000000000000465106534037217016704 0ustar 1998-05-30 Karl M. Hegbloom * tmpreaper.c (dir_empty_p): Parentheses around assignment used as truth value (main): Fix argv index in message, clarify messages. * tmpreaper.8: Tell of `find ... -exec rm ...' being fine unless your machine has untrusted users. * tmpreaper.c (dir_empty_p): New function (cleanupDirectory): Use `dir_empty_p' to check that a buffer is empty prior to trying to rmdir() it. 1998-05-21 Jörg Schuler * debian/cron.daily: add protect for .ki2 and .iroha * tmpreaper.c (main): don't glob if no protect pattern is given (tmpreaper segfaulted when called without `--protect`). (main): new procedure: cd into the first tmp-dir, glob, delete files in that directory then move on the the next tmp-dir given on the command line. Avoids "lstat" errors" when files found in one directory are not present in the second. (Makefile): changed version number from 1.4.3-SPI to 1.4.7 1998-05-17 Karl M. Hegbloom * tmpreaper.8: Document the new switch. * tmpreaper.c: Implement `--mtime' switch. 1998-05-17 Karl M. Hegbloom * tmpreaper.c (cleanupDirectory): pass flags to the FLAGS_PROTECT_P macro. Before I had just the bare macro, so the block of code inside the `if' could never execute, breaking `--protect'. - Fixed several others just like it. - turns out the real bug was the example in the manual. The glob pattern never matched, so nothing got protected. (cleanupDirectory): initialize `skip' before loop. Deleted the `direntry item' and `di_enqueue false starts. (cleanupDirectory): Message after recursing down a subdirectory. (usage): Changed copyright from SPI back to myself. No longer support -p, must spell --protect all the way out. (main): Re arranged so that it will cd into each directory before globbing, so the glob pattern doesn't have to have an absolute path on it. * tmpreaper.8: Edit to match changed program functionality. * debian/cron.daily: Split the bad brace expression in two. 1998-04-09 Karl M. Hegbloom * tmpreaper.c (struct flags_s): Flag testing macros. (cleanupDirectory): Use the macros in tests. (main): New option `--mtime-mt-dir' --> remove empty dirs based on `mtime' rather than `atime'. Local Variables: add-log-mailing-address: "karlheg@debian.org" End: tmpreaper-1.6.13+nmu1+deb9u1build0.16.04.1/COPYING0000664000000000000000000004311007306135244015376 0ustar GNU GENERAL PUBLIC LICENSE Version 2, June 1991 Copyright (C) 1989, 1991 Free Software Foundation, Inc. 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. Preamble The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. This General Public License applies to most of the Free Software Foundation's software and to any other program whose authors commit to using it. (Some other Free Software Foundation software is covered by the GNU Library General Public License instead.) You can apply it to your programs, too. When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs; and that you know you can do these things. To protect your rights, we need to make restrictions that forbid anyone to deny you these rights or to ask you to surrender the rights. These restrictions translate to certain responsibilities for you if you distribute copies of the software, or if you modify it. For example, if you distribute copies of such a program, whether gratis or for a fee, you must give the recipients all the rights that you have. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights. We protect your rights with two steps: (1) copyright the software, and (2) offer you this license which gives you legal permission to copy, distribute and/or modify the software. Also, for each author's protection and ours, we want to make certain that everyone understands that there is no warranty for this free software. If the software is modified by someone else and passed on, we want its recipients to know that what they have is not the original, so that any problems introduced by others will not reflect on the original authors' reputations. Finally, any free program is threatened constantly by software patents. We wish to avoid the danger that redistributors of a free program will individually obtain patent licenses, in effect making the program proprietary. To prevent this, we have made it clear that any patent must be licensed for everyone's free use or not licensed at all. The precise terms and conditions for copying, distribution and modification follow. GNU GENERAL PUBLIC LICENSE TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 0. This License applies to any program or other work which contains a notice placed by the copyright holder saying it may be distributed under the terms of this General Public License. The "Program", below, refers to any such program or work, and a "work based on the Program" means either the Program or any derivative work under copyright law: that is to say, a work containing the Program or a portion of it, either verbatim or with modifications and/or translated into another language. (Hereinafter, translation is included without limitation in the term "modification".) Each licensee is addressed as "you". Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running the Program is not restricted, and the output from the Program is covered only if its contents constitute a work based on the Program (independent of having been made by running the Program). Whether that is true depends on what the Program does. 1. You may copy and distribute verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and give any other recipients of the Program a copy of this License along with the Program. You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee. 2. You may modify your copy or copies of the Program or any portion of it, thus forming a work based on the Program, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions: a) You must cause the modified files to carry prominent notices stating that you changed the files and the date of any change. b) You must cause any work that you distribute or publish, that in whole or in part contains or is derived from the Program or any part thereof, to be licensed as a whole at no charge to all third parties under the terms of this License. c) If the modified program normally reads commands interactively when run, you must cause it, when started running for such interactive use in the most ordinary way, to print or display an announcement including an appropriate copyright notice and a notice that there is no warranty (or else, saying that you provide a warranty) and that users may redistribute the program under these conditions, and telling the user how to view a copy of this License. (Exception: if the Program itself is interactive but does not normally print such an announcement, your work based on the Program is not required to print an announcement.) These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Program, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Program, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it. Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Program. In addition, mere aggregation of another work not based on the Program with the Program (or with a work based on the Program) on a volume of a storage or distribution medium does not bring the other work under the scope of this License. 3. You may copy and distribute the Program (or a work based on it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you also do one of the following: a) Accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, b) Accompany it with a written offer, valid for at least three years, to give any third party, for a charge no more than your cost of physically performing source distribution, a complete machine-readable copy of the corresponding source code, to be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, c) Accompany it with the information you received as to the offer to distribute corresponding source code. (This alternative is allowed only for noncommercial distribution and only if you received the program in object code or executable form with such an offer, in accord with Subsection b above.) The source code for a work means the preferred form of the work for making modifications to it. For an executable work, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the executable. However, as a special exception, the source code distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable. If distribution of executable or object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place counts as distribution of the source code, even though third parties are not compelled to copy the source along with the object code. 4. You may not copy, modify, sublicense, or distribute the Program except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense or distribute the Program is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance. 5. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Program or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Program (or any work based on the Program), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Program or works based on it. 6. Each time you redistribute the Program (or any work based on the Program), the recipient automatically receives a license from the original licensor to copy, distribute or modify the Program subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties to this License. 7. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Program at all. For example, if a patent license would not permit royalty-free redistribution of the Program by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Program. If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply and the section as a whole is intended to apply in other circumstances. It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system, which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice. This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License. 8. If the distribution and/or use of the Program is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Program under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License. 9. The Free Software Foundation may publish revised and/or new versions of the General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Program specifies a version number of this License which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of this License, you may choose any version ever published by the Free Software Foundation. 10. If you wish to incorporate parts of the Program into other free programs whose distribution conditions are different, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally. NO WARRANTY 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. END OF TERMS AND CONDITIONS How to Apply These Terms to Your New Programs If you develop a new program, and you want it to be of the greatest possible use to the public, the best way to achieve this is to make it free software which everyone can redistribute and change under these terms. To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to most effectively convey the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found. Copyright (C) This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA Also add information on how to contact you by electronic and paper mail. If the program is interactive, make it output a short notice like this when it starts in an interactive mode: Gnomovision version 69, Copyright (C) year name of author Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. This is free software, and you are welcome to redistribute it under certain conditions; type `show c' for details. The hypothetical commands `show w' and `show c' should show the appropriate parts of the General Public License. Of course, the commands you use may be called something other than `show w' and `show c'; they could even be mouse-clicks or menu items--whatever suits your program. You should also get your employer (if you work as a programmer) or your school, if any, to sign a "copyright disclaimer" for the program, if necessary. Here is a sample; alter the names: Yoyodyne, Inc., hereby disclaims all copyright interest in the program `Gnomovision' (which makes passes at compilers) written by James Hacker. , 1 April 1989 Ty Coon, President of Vice This General Public License does not permit incorporating your program into proprietary programs. If your program is a subroutine library, you may consider it more useful to permit linking proprietary applications with the library. If this is what you want to do, use the GNU Library General Public License instead of this License. tmpreaper-1.6.13+nmu1+deb9u1build0.16.04.1/debian/0000775000000000000000000000000013516124022015556 5ustar tmpreaper-1.6.13+nmu1+deb9u1build0.16.04.1/debian/dirs0000664000000000000000000000013207441151575016453 0ustar etc etc/cron.daily usr/sbin usr/share/doc/tmpreaper usr/share/man/man5 usr/share/man/man8 tmpreaper-1.6.13+nmu1+deb9u1build0.16.04.1/debian/README.security0000664000000000000000000004676510661257164020342 0ustar Security implications of tmpreaper ---------------------------------- Below is a message that was forwarded to me, concerning vulnerabilities in tmpwatch, of which tmpreaper is a fork and may thus share vulnerabilities with. IMO there are a couple of things wrong about the points in the text, which I could not resolve in discussion with Joey Hess (my direct questions were avoided by responding that I clearly didn't understand the issues -- which is (a) faulty argumentation leading me to believe that they themselves were incapable of explaining, and (b) wrong). For example, the text speaks of "creation time"; I responded that there is no such thing in POSIX, only the inode change time (which is also changed if you link the file, or rename it, or change the permissions, or even when you delete it). I never got an answer on that. Here's one thing that was said by Joey: Suppose a victim program is setuid, and you want to attack it to get root. So you run it, let it open a temp file, and SIGSTOP it. Now let it sit, suspended, for x days. Tmpreaper then removes the temp file, since mtime, atime, and ctime are all x days. Now replace the tmp file with something crafted to buffer overflow or otherwise exploit the program, and SIGCONT it so it runs, accesses the tmp file it thinks it just made, and is exploited. There is no known fix to this hole. You can play with fuser and limit it to a certain smaller class of victim programs, but not entirely close it. It's also pretty easy to exploit on any machine with a large uptime and lots of processes to hide in. This calls for the setuid program to close the file, and then open it again without checking the owner, inode number, etc. This also means that fuser won't help a bit (the file must be closed, remember? So why mention it). That in my book is a problem of the setuid program, not of tmpreaper, as this is nothing that won't happen either if the admin does "rm -rf /tmp/*" now and again, despite following claim that that is a preferable alternative to tmpreaper: At least admins running rm -rf is something that happens unpredictably ... Another thing that was said: tmp{reaper,watch} use lstat() to look at file creation time. Then they use unlink() to delete it. Two system calls, therefore there is a time period between them in which an attacker may do the very unlikely trick described in the paper of removing its decoy file and letting mkstemp put in a file by the same name, which is then deleted. At this point the attacker can replace the temp file with their own creation, and mess with the program that expects its own temp file there. There's that mythical "file creation time" thing again... Besides that, he's right in saying that it's very unlikely to manage to squeeze inbetween those two system calls. Bookies will give you _very_ large odds on that... 1. you need to be able to predict days in advance what pseudo-random name mkstemp will generate at that precise moment in time. From the message below: ... While mkstemp() names are guaranteed to be unique, they shouldn't be expected to be unpredictable - in most implementations, the name is a function of process ID and time - so it is possible for the attacker to guess it and create a decoy in advance. ... Guessing what process ID a victim process will have a number of days in advance on a multiuser system is a pretty neat trick. 2. you then need to be able to remove that file at exactly the moment tmpreaper after tmpreaper has used lstat(), but before it does the unlink(). 3. mkstemp (in the daemon/whatever that you're trying to attack) will have to create the file with the correct name, still before tmpreaper's unlink() call. 4. now tmpreaper has to execute the unlink() call, before the daemon/whatever has gone on and used the tmpfile for its intended purpose. 5. you now have to create the file again, with the correct name and contents. 6. the daemon/whatever has to close and reopen the file without checking its owner, permission, inode number, etc. and then use the data therein. This would be an incredible feat to accomplish, needing unbelievable amounts of luck in timing (skill is not an issue; timing is), requiring also an app running with sufficient privileges to do harm that uses its tempfiles insecurely in the first place. In such a scenario, is the problem with tmpreaper? I don't think so. The scenario described is so inprobable that if you're worried about that, you should buy a lottery ticket every week: the chance that *someone* wins the lottery is 100% (well, with a lot of lotteries :-); the chance that this will ever happen is less. There's also a discussion below about the problems when two tmpwatch processes are running simultaneously (hence would also apply to tmpreaper as well). Tmpreaper avoids this by not allowing itself to run for more than one minute. There's also a random delay before processing (when invoked with --delay as is done in the default cron.daily script) to make it harder to determine when tmpreaper runs exactly. See also the tmpreaper manpage for other precautions taken. Of course, if you still are worried, you are of course free to purge tmpreaper from your system, and do a regular "rm -rf /tmp/*" if you think that's safer... Below is the message that started this discussion, and judge for yourself. Paul Slootman 2003-05-21, updated 2003-06-02 From: Michal Zalewski Date: Fri, 20 Dec 2002 09:30:30 -0800 (PST) To: bugtraq@securityfocus.com, , Subject: [RAZOR] Problems with mkstemp() Common use of 'tmpwatch' utility and its counterparts triggers race conditions in many applications Michal Zalewski , 12/05/2002 Copyright (C) 2002 by Bindview Corporation 1) Scope and exposure info -------------------------- A common practice of installing 'tmpwatch' utility or similar software configured to sweep the /tmp directory on Linux and unix systems can compromise secure temporary file creation mechanisms in certain applications, creating a potential privilege escalation scenario. This document briefly discusses the exposure, providing some examples, and suggesting possible workarounds. It is believed that many unix operating systems using 'tmpwatch' or an equivalent are affected. Numerous Linux systems, such as Red Hat, that ship with cron daemon running and 'tmpwatch' configured to sweep /tmp are susceptible to the attack. 2) Application details ---------------------- 'Tmpwatch' is a handy utility that removes files which haven't been accessed for a period of time. It was developed by Erik Troan and Preston Brown of Red Hat Software, and, with time, has become a component of many Linux distributions, also ported to platforms such as Solaris, *BSD or HP/UX. By default, it is installed with a crontab entry that sweeps /tmp directory on a daily basis, deleting files that have not been accessed for the past few days. An alternative program, called 'stmpclean' and authored by Stanislav Shalunov, is shipped with *BSD systems and some Linux distributions to perform the same task, and some administrators deploy other tools or scripts for this purpose. 3) Vulnerability details ------------------------ Numerous applications rely either on mkstemp() or custom O_EXCL file creation mechanisms to store temporary data in the /tmp directory in a secure manner. Of those, certain programs run with elevated privileges, or simply at a different privilege level than the caller. The exposure is a result of a common misconception, promoted by almost all secure programming tutorials and manpages, that /tmp files created with mkstemp(), granted that umask() settings were proper, are safe against hijacking and common races. The file, since it is created in a sticky-bit directory, indeed cannot be removed or replaced by the attacker running with different non-root privileges, but since many operating systems feature 'tmpwatch'-alike solutions, the only thing that can and should be considered safe in /tmp is the descriptor returned by mkstemp() - the filename should not be relied upon. There are two major reasons for this: 1) unlink() races It is very difficult to remove a file without risking a potential race (see section 4). 'Tmpwatch' does not take any extra measures to prevent races, and probes file creation time using lstat(). Based on this data, it calls unlink() as root. Problem is, on a multitasking system,it is possible for the attacker to get some CPU time between those two system calls, remove the old "decoy" file that has been probed with lstat(), and let the application of his choice create its own temporary file under this name. While mkstemp() names are guaranteed to be unique, they shouldn't be expected to be unpredictable - in most implementations, the name is a function of process ID and time - so it is possible for the attacker to guess it and create a decoy in advance. Once the tmpwatch process is resumed, the file is immediately removed, based on the result of earlier lstat() on the old, no longer existing file. While this three-component race requires very precise timing, it is possible to try a number of times in a single 'tmpwatch' run if enough decoy files are created by the attacker. Additionally, since each step of the attack would result in a corresponding filesystem change, it is fairly easy to carefully measure timings and coordinate the attack. If the attacker cannot make the application run at the same time as 'tmpwatch' - for example, if the application is executed by hand by the administrator, or is running from cron - 'tmpwatch' itself can be artificially delayed for almost an arbitrary amount of time by creating and continuously expending an elaborate directory structure in /tmp using hard links (to preserve access times of files) and running other processes that demand disk access and cache space to slow down the process. 'Stmpclean' offers additional protection against races by not removing root-owned files and temporarily dropping privileges when removing the file to match the owner of lstat()ed resource. Unfortunately, not removing root files is a considerable drawback, and there is still a potential for a race using carefully crafted hard links to a file owned by the victim and two concurrent 'stmpclean' processes: - the attacker links /tmp/foo to ~victim/.bash_profile - tmpwatch #1 does lstat() on /tmp/foo and setuid victim - tmpwatch #2 does lstat() on /tmp/foo and setuid victim - tmpwatch #1 does unlink("/tmp/foo") - victim application creates /tmp/foo at uid==victim - tmpwatch #2 does unlink("/tmp/foo") and succeeds - the attacker creates /tmp/foo - victim application proceeds On certain systems such as Owl Linux, the attack will be not possible due to hardlink limits imposed on sticky-bit directories. 2) suspended processes and 'legitimate' file removal Here, all conventional measures that could be exercised by /tmp cleaners fail miserably. A vulnerable application can be often delayed or suspended after mkstemp() / open() - for example, a setuid program can be stopped with SIGSTOP and resumed with SIGCONT. If the application is suspended for long enough, its temporary files are likely to be removed. This method requires much less precision, but is also more time-consuming and has a more limited scope (interactive applications only). Note that it is sometimes possible to delay the execution of a daemon - client wait, considerable I/O or CPU loads, and subsequent mkstemp() calls can be all used to achieve the effect. The feasibility and efficiency is low, but the potential issue exists. Some client applications that are often left unattended and create temporary files - such as mail/news clients, web browsers, irc clients, etc - can also be used to compromise other accounts on the machine. Not all applications are prone to the problem just because mkstemp() is used to create files in /tmp; if the file name is not used to perform any sensitive operations with some extra privileges afterward (read, write, chown, chmod, link/rename, etc), and only the descriptor is being used, the application is safe. This practice is often exercised by programmers who want to avoid leaving dangling temporary files in case the program is aborted or crashes. Similarly, if the application uses temporary files improperly, but does not rely on their contents and does not attempt to access them with higher privileges, the application is secure in that regard. Applications that run with higher privileges and reopen their /tmp temporary files for reading or writing, call chown(), chmod() on them, rename or link the file to replace some sensitive information, and so on, are exposed. It is worth mentioning that a popular 'mktemp' utility coming from OpenBSD passes only the filename to the caller shell script, thus rendering almost all scripts using it fundamentally flawed. If the script is being run as a cron job or other administrative task, and mktemp is used, the system can be likely compromised by replacing the file after mktemp and prior to any write to the file. In the example quoted in the documentation for mktemp(1): TMPFILE=`mktemp /tmp/$0.XXXXXX` || exit 1 echo "program output" >> $TMPFILE ...the attacker would want to replace temporary file right before 'echo', causing the text "program output" to be appended to a target file of his choice using symlinks or hardlinks; or, if it is more desirable, he'd spoof file contents to cause the program to misbehave. Another example of the problem is a popular logrotate utility, coded - ironically - by Erik Troan, one of co-authors of 'tmpwatch' itself. The program suffered /tmp races in the past, but later switched to mkstemp(). The following sequence is used to handle post-rotation shell commands specified in config files: open("/tmp/logrotate.wvpNmP", O_WRONLY|O_CREAT|O_EXCL, 0700) = 6 ... write(6, "#!/bin/sh\n\n", 11) = 11 write(6, "\n\t/bin/kill -HUP `cat /var/lock/"..., 79) = 79 close(6) = 0 ... fork, etc ... execve("/bin/sh", ["sh", "-c", "/bin/sh /tmp/logrotate.wvpNmP" ... Obviously, if the attacker can have /tmp/logrotate.* replaced in between mkstemp() (represented as open() syscall above) and the point where another process is spawned, a shell interpreter is invoked, then executes another copy of the shell interpreter (apparent programmer's mistake) and finally reads the input file - which is a considerable chunk of time - the shell will be called with attacker-supplied commands to be executed with root privileges. On Red Hat, logrotate is executed from crontab on a daily basis, in a sequence before 'tmpwatch', and the easiest option for the attacker is to maintain a still-running tmpwatch process from the previous day to exploit the condition. On systems where those programs are not executed sequentially - for example, when both programs are listed directly in /etc/crontab - the attack requires less precision. 4) Workarounds and fixes: ------------------------- Recommended immediate workaround is to discontinue the use of 'tmpwatch' or equivalent to sweep /tmp directory if this service is not necessary. For applications that rely on TMPDIR or a similar environment variable, setting it to a separate, not publicly writable directory is often a viable solution. Note that not all applications honor this setting. In terms of a permanent solution, two different attack vectors have to be addressed, as discussed in section 3: 1) unlink() race The proper way to remove files in sticky-bit directories while minimizing the risk is as follows: a) lstat() the file to be removed b) if owned by root, do not remove c) if st_nlink > 1, do not remove d) if owned by user, temporarily change privileges to this user e) attempt unlink() f) if failed, warn about a possible race condition g) switch privileges back to root With the exception of step c, this is implemented in 'stmpclean'. Unfortunately, step c is crucial on systems that do not have restricted /tmp kernel patches from Openwall (http://www.openwall.com), otherwise, there is a potential for fooling the algorithm by supplying a hard link to a file owned by the victim, as discussed in section 3. This approach has several drawbacks - such as the fact root-owned files will not be removed. Other solution is to modify applications that generate filenames on their own, and to modify mkstemp(), to generate names that are not only unique, but not feasible to predict. Another suggestion is to implement a funlink() capability in the kernel of the operating system in question, to allow race-free file removal, thus removing the non-root ownership requirement for the method described above, and simplifying the approach. A skeleton patch to implement funlink() semantics and make sure the file being removed is the file opened and fstat()ed previously is available at: http://lcamtuf.coredump.cx/soft/linux-2.4-funlink.diff (this and other patches are not endorsed by RAZOR in any way). 2) suspended process and 'legitimate' file removal This issue is fairly difficult to address. The most basic idea is to use a special naming scheme for temporary files to avoid deletion - unfortunately, this seems to defeat the purpose of using tmpwatch-alike solutions in the first place. An alternative approach, which is to enforce separate temporary directories for certain applications, either process-, session- or uid- based, is generally fairly controversial, and raises some concerns. Advisory separation is generally acceptable, but there are a number of applications that do not accept TMPDIR setting, and a widespread practice of using /tmp in in-house applications. Mandatory separation (kernel modification) raises compatibility concerns and is generally approached with skepticism - no implementation has become particularly popular. Ideally, implementators should carefully audit their sources. It is recommended for privileged applications to use private temporary directories for sensitive files, if possible; if using /tmp is necessary, extra caution has to be exercised to avoid referencing the file by name. Note that comparing the descriptor and a reopened file to verify inode numbers, creation times or file ownership is not sufficient - please refer to "Symlinks and Cryogenic Sleep" by Olaf Kirch, available at http://www.opennet.ru/base/audit/17.txt.html . It's worth noticing that 'tmpwatch' offers a -s option, which causes the program to run the 'fuser' command to prevent removal of files that are currently open. At first sight, this could be an effective way to solve the problem. Unfortunately, this is not true, since many applications close the file for a period of time before reopening (including logrotate and mktemp(1)). 5) Credits and thanks --------------------- Thanks to Solar Designer for interesting discussions on the subject, to Matt Power for useful feedback, and to RAZOR team in general for making this publication possible. tmpreaper-1.6.13+nmu1+deb9u1build0.16.04.1/debian/tmpreaper.conf.50000664000000000000000000000242011254430736020576 0ustar .TH TMPREAPER.CONF 5 "Thu Sep 17 2009" .UC 4 .SH NAME tmpreaper.conf \- defines parameters for daily run of tmpreaper .SH DESCRIPTION \fBtmpreaper\fR is run daily via the /etc/cron.daily/tmpreaper script. Its behaviour can be tuned via the /etc/tmpreaper.conf file. This file can contain settings entries to override the defaults in the cron.daily script itself. These settings are: .TP \fBTMPREAPER_TIME\fR the max. age of files before they're removed. Default: .br TMPREAPER_TIME=7d .TP \fBTMPREAPER_PROTECT_EXTRA\fR extra patterns that you may want to protect. Example: .br TMPREAPER_PROTECT_EXTRA='/tmp/isdnctrl* /tmp/important*' .br Don't forget to enclose the patterns in quotes, like above. .TP \fBTMPREAPER_DIRS\fR the directories to clean up. .br \fBNEVER\fR supply / here! That will wipe most of your system! .br Example: .br TMPREAPER_DIRS='/tmp/. /var/tmp/.' .br Again, don't forget to enclose the patterns in quotes, like above. .TP \fBTMPREAPER_DELAY\fR defines the maximum (randomized) delay before starting processing. This is passed as the --delay parameter. .TP \fBTMPREAPER_ADDITIONALOPTIONS\fR defines any additional parameters you want to pass to the tmpreaper program, e.g. --all .SH SEE ALSO .IR tmpreaper (8) .SH AUTHOR .nf Paul Slootman .fi tmpreaper-1.6.13+nmu1+deb9u1build0.16.04.1/debian/tmpreaper.conf0000664000000000000000000000317010536254543020440 0ustar # tmpreaper.conf # - local configuration for tmpreaper's daily run # # This is only used if /etc/cron.daily/tmpreaper was also updated, # i.e. there's a line ". /etc/tmpreaper.conf" in that file. # The shell code that used to be here (pre version 1.6.7) is now # in the cron.daily script. # Remove the next line if you understand the possible security implications of # having tmpreaper run automatically; # see /usr/share/doc/tmpreaper/README.security.gz SHOWWARNING=true # TMPREAPER_TIME # is the max. age of files before they're removed. # default: # the TMPTIME value in /etc/default/rcS if it's there, else # TMPREAPER_TIME=7d (for 7 days) # I recommend setting the value in /etc/default/rcS, as # that is used to clean out /tmp whenever the system is booted. # # TMPREAPER_PROTECT_EXTRA # are extra patterns that you may want to protect. # Example: # TMPREAPER_PROTECT_EXTRA='/tmp/isdnctrl* /tmp/important*' # # TMPREAPER_DIRS # are the directories to clean up. # *never* supply / here! That will wipe most of your system! # Example: # TMPREAPER_DIRS='/tmp/. /var/tmp/.' # # TMPREAPER_DELAY # defines the maximum (randomized) delay before starting processing. # See the manpage entry for --delay. Default is 256. # Example: # TMPREAPER_DELAY='256' # # TMPREAPER_ADDITIONALOPTIONS # extra options that are passed to tmpreaper, e.g. --all # uncomment and change the next line to overrule the /etc/default/rcS value # TMPREAPER_TIME=7d TMPREAPER_PROTECT_EXTRA='' TMPREAPER_DIRS='/tmp/.' TMPREAPER_DELAY='256' TMPREAPER_ADDITIONALOPTIONS='' tmpreaper-1.6.13+nmu1+deb9u1build0.16.04.1/debian/tmpreaper.postinst0000664000000000000000000000036611254444031021371 0ustar #!/bin/sh -e # dummy postinst for lintian warning: # W: tmpreaper: postinst-does-not-load-confmodule # as tmpreaper debconf stuff is only for notes. if [ -e /usr/share/debconf/confmodule ]; then . /usr/share/debconf/confmodule fi #DEBHELPER# tmpreaper-1.6.13+nmu1+deb9u1build0.16.04.1/debian/substvars0000664000000000000000000000011610370407514017540 0ustar misc:Depends=debconf (>= 0.5) | debconf-2.0 shlibs:Depends=libc6 (>= 2.3.5-1) tmpreaper-1.6.13+nmu1+deb9u1build0.16.04.1/debian/tmpreaper.templates0000664000000000000000000000503110536250340021476 0ustar Template: tmpreaper/confignowexists Type: note _Description: tmpreaper can now be adjusted through /etc/tmpreaper.conf Any local preferences for the daily tmpreaper run should now be configured through /etc/tmpreaper.conf (explanation is in that file). . Previously, you had to modify /etc/cron.daily/tmpreaper which could be a pain because that got updated regularly, and you'd have to reimplement your modifications each time (or miss out on the new changes). Now you can adjust the file age, extra --protect patterns, and which directories to reap in /etc/tmpreaper.conf. . For this to work, however, you have to install the new /etc/cron.daily/tmpreaper file now. Template: tmpreaper/TMPREAPER_TIME Type: note _Description: default value for TMPREAPER_TIME now set via /etc/default/rcS Before, you could set the maximum age for files before they were removed in /etc/tmpreaper.conf; however, there is another place where something similar is set, namely the TMPTIME value in /etc/default/rcS which is used during booting to clean out /tmp. . To avoid having to enter this value in two places, the new /etc/tmpreaper.conf script now obtains the TMPTIME value from /etc/default/rcS, and uses that (if it is greater than zero, that is). . You apparently have changed the default value in /etc/tmpreaper.conf; you may want to check /etc/default/rcS to see if the value there is acceptable, if you want the upgrade procedure to replace your /etc/tmpreaper.conf with the new version. Template: tmpreaper/readsecurity Type: note _Description: Please first read README.security Before running tmpreaper for the first time, please read the file /usr/share/doc/tmpreaper/README.security.gz, e.g. with zless. Therein is contained a discussion of possible ways that usage of tmpreaper may be insecure. . If after that you still want tmpreaper to run, please edit /etc/tmpreaper.conf and remove the line: . echo "Please read /usr/share/doc/tmpreaper/README.security.gz first."; exit 0 Template: tmpreaper/readsecurity_upgrading Type: note _Description: Please first read README.security Before running tmpreaper after this upgrade, please read the file /usr/share/doc/tmpreaper/README.security.gz e.g. with zless. Therein is contained a discussion of possible ways that usage of tmpreaper may be insecure. . If during the upgrade the /etc/tmpreaper.conf file is replaced, and you still want tmpreaper to run, please edit /etc/tmpreaper.conf and remove the line: . echo "Please read /usr/share/doc/tmpreaper/README.security.gz first."; exit 0 tmpreaper-1.6.13+nmu1+deb9u1build0.16.04.1/debian/po/0000775000000000000000000000000013516124022016174 5ustar tmpreaper-1.6.13+nmu1+deb9u1build0.16.04.1/debian/po/ja.po0000664000000000000000000001622111423750432017135 0ustar # Copyright (C) 2009 Paul Slootman # This file is distributed under the same license as tmpreaper package. # Hideki Yamane (Debian-JP) , 2009. # msgid "" msgstr "" "Project-Id-Version: tmpreaper 1.6.11\n" "Report-Msgid-Bugs-To: tmpreaper@packages.debian.org\n" "POT-Creation-Date: 2008-05-19 19:38+0200\n" "PO-Revision-Date: 2009-03-28 22:26+0900\n" "Last-Translator: Hideki Yamane (Debian-JP) \n" "Language-Team: Japanese \n" "Language: ja\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" #. Type: note #. Description #: ../tmpreaper.templates:1001 msgid "tmpreaper can now be adjusted through /etc/tmpreaper.conf" msgstr "tmpreaper 㯠/etc/tmpreaper.conf ã§èª¿æ•´ã§ãるよã†ã«ãªã‚Šã¾ã—ãŸã€‚" #. Type: note #. Description #: ../tmpreaper.templates:1001 msgid "" "Any local preferences for the daily tmpreaper run should now be configured " "through /etc/tmpreaper.conf (explanation is in that file)." msgstr "" "tmpreaper ã®æ—¥æ¬¡ã§ã®å®Ÿè¡Œã«ã¤ã„ã¦ã®ãƒ­ãƒ¼ã‚«ãƒ«ã®è¨­å®šã¯ /etc/tmpreaper.conf ã§è¨­å®š" "ã§ãるよã†ã«ãªã‚Šã¾ã—㟠(設定ã¯ãã®ãƒ•ァイル内ã«è¨˜è¼‰ã•れã¦ã„ã¾ã™)。" #. Type: note #. Description #: ../tmpreaper.templates:1001 msgid "" "Previously, you had to modify /etc/cron.daily/tmpreaper which could be a " "pain because that got updated regularly, and you'd have to reimplement your " "modifications each time (or miss out on the new changes). Now you can adjust " "the file age, extra --protect patterns, and which directories to reap in /" "etc/tmpreaper.conf." msgstr "" "以å‰ã¯ /etc/cron.daily/tmpreaper を変更ã™ã‚‹å¿…è¦ãŒã‚りã¾ã—ãŸãŒã€ã“れã¯é¢å€’ãªã“" "ã¨ã§ã—ãŸã€‚ãªãœãªã‚‰ã°ã“れã¯é »ç¹ã«æ›´æ–°ã•れã€ãã®åº¦ã«è‡ªåˆ†ã®è¨­å®šã«å…¥ã‚Œæ›¿ãˆãªã„ã¨" "ã„ã‘ãªã‹ã£ãŸã‹ã‚‰ã§ã™ (ã§ãªã‘ã‚Œã°æ–°ã—ã„変更点を見éŽã”ã™ã“ã¨ã«ãªã‚‹ã§ã—ょã†)。ã“" "れã‹ã‚‰ã¯ /etc/tmpreaper.conf ã« --protect patterns を追加ã™ã‚‹ã“ã¨ã§ãƒ•ァイルã®" "期間をã€ãã—ã¦ã©ã®ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªã‚’消去ã™ã‚‹ã‹ã‚’調整ã§ãるよã†ã«ãªã£ãŸã®ã§ã™ã€‚" #. Type: note #. Description #: ../tmpreaper.templates:1001 msgid "" "For this to work, however, you have to install the new /etc/cron.daily/" "tmpreaper file now." msgstr "" "ã—ã‹ã—ãªãŒã‚‰ã€ã“れを動作ã•ã›ã‚‹ã«ã¯ã€æ–°ãŸã« /etc/cron.daily/tmpreaper ファイル" "をインストールã™ã‚‹å¿…è¦ãŒã‚りã¾ã™ã€‚" #. Type: note #. Description #: ../tmpreaper.templates:2001 msgid "default value for TMPREAPER_TIME now set via /etc/default/rcS" msgstr "" "TMPREAPER_TIME ã®ãƒ‡ãƒ•ォルト値㯠/etc/default/rcS ã§è¨­å®šã•れるよã†ã«ãªã‚Šã¾ã—" "ãŸã€‚" #. Type: note #. Description #: ../tmpreaper.templates:2001 msgid "" "Before, you could set the maximum age for files before they were removed in /" "etc/tmpreaper.conf; however, there is another place where something similar " "is set, namely the TMPTIME value in /etc/default/rcS which is used during " "booting to clean out /tmp." msgstr "" "以å‰ã¯å‰Šé™¤å¯¾è±¡ãƒ•ã‚¡ã‚¤ãƒ«ã®æœ€é•·æ—¥æ•°ã‚’ /etc/tmpreaper.conf ã§è¨­å®šã™ã‚‹ã“ã¨ãŒã§ãã¾" "ã—ãŸã€‚ã—ã‹ã—ãªãŒã‚‰ã€ä»–ã®å ´æ‰€ã§ã‚‚ä¼¼ãŸã‚ˆã†ãªã‚‚ã®ãŒè¨­å®šã•れã¦ã„ã¾ã™ã€‚ã™ãªã‚ã¡ã€/" "etc/default/rcS 中㮠TMPTIME ã¨ã„ã†å€¤ã®ã“ã¨ã§ã€èµ·å‹•時㫠/tmp を掃除ã™ã‚‹ã®ã«ä½¿" "ã‚れã¦ã„ã¾ã™ã€‚" #. Type: note #. Description #: ../tmpreaper.templates:2001 msgid "" "To avoid having to enter this value in two places, the new /etc/tmpreaper." "conf script now obtains the TMPTIME value from /etc/default/rcS, and uses " "that (if it is greater than zero, that is)." msgstr "" "ã“ã®å€¤ã‚’二箇所ã«å…¥åŠ›ã™ã‚‹ã®ã‚’é¿ã‘ã‚‹ãŸã‚ã€æ–°ãŸãª /etc/tmpreaper.conf スクリプト" "ã§ã¯ã“れã‹ã‚‰ /etc/default/rcS ã‹ã‚‰ TMPTIME ã®å€¤ã‚’å–å¾—ã—㦠(ãれ㌠0 より大ã" "ã‘れã°) 使ã„ã¾ã™ã€‚" #. Type: note #. Description #: ../tmpreaper.templates:2001 msgid "" "You apparently have changed the default value in /etc/tmpreaper.conf; you " "may want to check /etc/default/rcS to see if the value there is acceptable, " "if you want the upgrade procedure to replace your /etc/tmpreaper.conf with " "the new version." msgstr "" "ã‚ãªãŸã¯æ˜Žç¤ºçš„ã« /etc/tmpreaper.conf ã«ã‚るデフォルト値を変更ã—ã¦ã„ã¾ã™ã€‚/" "etc/tmpreaper.conf ã‚’æ–°ã—ã„ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã«ç½®ãæ›ãˆã‚‹ã“ã¨ã«ãªã‚‹ã‚¢ãƒƒãƒ—グレード作業" "ã‚’ç¶šã‘ãŸã„å ´åˆã€/etc/default/rcS を確èªã—ã¦ãã®å€¤ãŒå¦¥å½“ãªã‚‚ã®ã‹ã‚’確èªã—ãŸæ–¹ãŒ" "良ã„ã§ã—ょã†ã€‚" #. Type: note #. Description #. Type: note #. Description #: ../tmpreaper.templates:3001 ../tmpreaper.templates:4001 msgid "Please first read README.security" msgstr "ã¾ãš README.security を最åˆã«èª­ã‚“ã§ãã ã•ã„。" #. Type: note #. Description #: ../tmpreaper.templates:3001 msgid "" "Before running tmpreaper for the first time, please read the file /usr/share/" "doc/tmpreaper/README.security.gz, e.g. with zless. Therein is contained a " "discussion of possible ways that usage of tmpreaper may be insecure." msgstr "" "åˆã‚㦠tmpreaper を動作ã•ã›ã‚‹å‰ã«ã€/usr/share/doc/tmpreaper/README.security." "gz ファイルをã€zless ãªã©ã‚’使ã£ã¦èª­ã‚“ã§ãã ã•ã„。ãã“ã«ã¯ã€tmpreaper ã®åˆ©ç”¨ãŒ" "å±é™ºã‚’æ‹›ãå¯èƒ½æ€§ã®ã‚る方法ã«ã¤ã„ã¦ã®ãƒ‡ã‚£ã‚¹ã‚«ãƒƒã‚·ãƒ§ãƒ³ãŒå«ã¾ã‚Œã¦ã„ã¾ã™ã€‚" #. Type: note #. Description #: ../tmpreaper.templates:3001 msgid "" "If after that you still want tmpreaper to run, please edit /etc/tmpreaper." "conf and remove the line:" msgstr "" "ãã®å¾Œã§ã‚ã£ã¦ã‚‚ tmpreaper を実行ã—ãŸã„å ´åˆã€/etc/tmpreaper.conf を編集ã—ã¦ä»¥" "下ã®è¡Œã‚’削除ã—ã¦ãã ã•ã„:" #. Type: note #. Description #. Type: note #. Description #: ../tmpreaper.templates:3001 ../tmpreaper.templates:4001 msgid "" " echo \"Please read /usr/share/doc/tmpreaper/README.security.gz first.\";\n" " exit 0" msgstr "" " echo \"Please read /usr/share/doc/tmpreaper/README.security.gz first.\";\n" " exit 0" #. Type: note #. Description #: ../tmpreaper.templates:4001 msgid "" "Before running tmpreaper after this upgrade, please read the file /usr/share/" "doc/tmpreaper/README.security.gz e.g. with zless. Therein is contained a " "discussion of possible ways that usage of tmpreaper may be insecure." msgstr "" "今回ã®ã‚¢ãƒƒãƒ—グレード後㫠tmpreaper を実行ã™ã‚‹å‰ã«ã€zless ãªã©ã‚’使ã£ã¦ /usr/" "share/doc/tmpreaper/README.security.gz ファイルを読んã§ãã ã•ã„。ãã“ã«ã¯ã€" "tmpreaper ã®åˆ©ç”¨ãŒå±é™ºã‚’æ‹›ãå¯èƒ½æ€§ã®ã‚る方法ã«ã¤ã„ã¦ã®ãƒ‡ã‚£ã‚¹ã‚«ãƒƒã‚·ãƒ§ãƒ³ãŒå«ã¾" "れã¦ã„ã¾ã™ã€‚" #. Type: note #. Description #: ../tmpreaper.templates:4001 msgid "" "If during the upgrade the /etc/tmpreaper.conf file is replaced, and you " "still want tmpreaper to run, please edit /etc/tmpreaper.conf and remove the " "line:" msgstr "" "アップグレード中㫠/etc/tmpreaper.conf ファイルãŒç½®ãæ›ãˆã‚‰ã‚Œã¦ã‚‚ tmpreaper " "ã®å®Ÿè¡Œã‚’ç¶šã‘ãŸã„å ´åˆã«ã¯ã€ /etc/tmpreaper.conf を編集ã—ã¦ä»¥ä¸‹ã®è¡Œã‚’削除ã—ã¦ã" "ã ã•ã„:" tmpreaper-1.6.13+nmu1+deb9u1build0.16.04.1/debian/po/POTFILES.in0000664000000000000000000000005607704510425017762 0ustar [type: gettext/rfc822deb] tmpreaper.templates tmpreaper-1.6.13+nmu1+deb9u1build0.16.04.1/debian/po/gl.po0000664000000000000000000001452611423750432017153 0ustar # Galician translation of tmpreaper's debconf templates # This file is distributed under the same license as the tmpreaper package. # Jacobo Tarrio , 2008. # msgid "" msgstr "" "Project-Id-Version: tmpreaper\n" "Report-Msgid-Bugs-To: tmpreaper@packages.debian.org\n" "POT-Creation-Date: 2008-05-19 19:38+0200\n" "PO-Revision-Date: 2008-05-19 23:09+0100\n" "Last-Translator: Jacobo Tarrio \n" "Language-Team: Galician \n" "Language: gl\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" #. Type: note #. Description #: ../tmpreaper.templates:1001 msgid "tmpreaper can now be adjusted through /etc/tmpreaper.conf" msgstr "Agora pódese axustar tmpreaper mediante /etc/tmpreaper.conf" #. Type: note #. Description #: ../tmpreaper.templates:1001 msgid "" "Any local preferences for the daily tmpreaper run should now be configured " "through /etc/tmpreaper.conf (explanation is in that file)." msgstr "" "As preferencias locais para a execución diaria de tmpreaper débense " "configurar mediante /etc/tmpreaper.conf (as explicacións están nese " "ficheiro)." #. Type: note #. Description #: ../tmpreaper.templates:1001 msgid "" "Previously, you had to modify /etc/cron.daily/tmpreaper which could be a " "pain because that got updated regularly, and you'd have to reimplement your " "modifications each time (or miss out on the new changes). Now you can adjust " "the file age, extra --protect patterns, and which directories to reap in /" "etc/tmpreaper.conf." msgstr "" "Antes tiña que modificar /etc/cron.daily/tmpreaper, o que podía ser " "problemático porque se actualizaba con regularidade, e tería que " "reimplementar as súas modificacións de cada vez (ou non recibir os novos " "cambios). Agora pode axustar a idade dos ficheiros, engadir patróns --" "protect, e novos directorios a colleitar en /etc/tmpreaper.conf." #. Type: note #. Description #: ../tmpreaper.templates:1001 msgid "" "For this to work, however, you have to install the new /etc/cron.daily/" "tmpreaper file now." msgstr "" "Para que isto funcione, nembargantes, ten que instalar agora o novo " "ficheiro /etc/cron.daily/tmpreaper." #. Type: note #. Description #: ../tmpreaper.templates:2001 msgid "default value for TMPREAPER_TIME now set via /etc/default/rcS" msgstr "" "Agora establécese o valor por defecto de TMPREAPER_TIME en /etc/default/rcS" #. Type: note #. Description #: ../tmpreaper.templates:2001 msgid "" "Before, you could set the maximum age for files before they were removed in /" "etc/tmpreaper.conf; however, there is another place where something similar " "is set, namely the TMPTIME value in /etc/default/rcS which is used during " "booting to clean out /tmp." msgstr "" "Antes tiña que establecer a idade máxima dos ficheiros antes de que se " "eliminaran en /etc/tmpreaper.conf; nembargantes, hai outro sitio no que se " "establece algo semellante: o valor de TMPTIME en /etc/default/rcS, que se " "emprega durante o inicio para limpar /tmp." #. Type: note #. Description #: ../tmpreaper.templates:2001 msgid "" "To avoid having to enter this value in two places, the new /etc/tmpreaper." "conf script now obtains the TMPTIME value from /etc/default/rcS, and uses " "that (if it is greater than zero, that is)." msgstr "" "Para evitar ter que introducir este valor en dous sitios, o novo script /etc/" "tmpreaper.conf obtén o valor de TMPTIME de /etc/default/rcS, e emprega ese " "valor (se é superior a cero, claro)." #. Type: note #. Description #: ../tmpreaper.templates:2001 msgid "" "You apparently have changed the default value in /etc/tmpreaper.conf; you " "may want to check /etc/default/rcS to see if the value there is acceptable, " "if you want the upgrade procedure to replace your /etc/tmpreaper.conf with " "the new version." msgstr "" "Semella que cambiou o valor por defecto en /etc/tmpreaper.conf; pode querer " "comprobar /etc/default/rcS para ver se o valor de alí é aceptable, se quere " "que o procedemento de actualización substitúa o ficheiro /etc/tmpreaper.conf " "pola nova versión." #. Type: note #. Description #. Type: note #. Description #: ../tmpreaper.templates:3001 ../tmpreaper.templates:4001 msgid "Please first read README.security" msgstr "Lea primeiro o ficheiro README.security" #. Type: note #. Description #: ../tmpreaper.templates:3001 msgid "" "Before running tmpreaper for the first time, please read the file /usr/share/" "doc/tmpreaper/README.security.gz, e.g. with zless. Therein is contained a " "discussion of possible ways that usage of tmpreaper may be insecure." msgstr "" "Antes de executar tmpreaper por primeira vez, lea o ficheiro /usr/share/doc/" "tmpreaper/README.security.gz; por exemplo, con zless. Nel hai unha discusión " "sobre distintas maneiras en que o emprego de tmpreaper pode ser inseguro." #. Type: note #. Description #: ../tmpreaper.templates:3001 msgid "" "If after that you still want tmpreaper to run, please edit /etc/tmpreaper." "conf and remove the line:" msgstr "" "Se despois de lelo aínda quere executar tmpreaper, edite o ficheiro /etc/" "tmpreaper.conf e elimine a liña:" #. Type: note #. Description #. Type: note #. Description #: ../tmpreaper.templates:3001 ../tmpreaper.templates:4001 msgid "" " echo \"Please read /usr/share/doc/tmpreaper/README.security.gz first.\";\n" " exit 0" msgstr "" " echo \"Lea primeiro /usr/share/doc/tmpreaper/README.security.gz .\";\n" " exit 0" #. Type: note #. Description #: ../tmpreaper.templates:4001 msgid "" "Before running tmpreaper after this upgrade, please read the file /usr/share/" "doc/tmpreaper/README.security.gz e.g. with zless. Therein is contained a " "discussion of possible ways that usage of tmpreaper may be insecure." msgstr "" "Antes de executar tmpreaper despois desta actualización, lea o ficheiro /usr/" "share/doc/tmpreaper/README.security.gz; por exemplo, con zless. Nel hai unha " "discusión sobre distintas maneiras en que o emprego de tmpreaper pode ser " "inseguro." #. Type: note #. Description #: ../tmpreaper.templates:4001 msgid "" "If during the upgrade the /etc/tmpreaper.conf file is replaced, and you " "still want tmpreaper to run, please edit /etc/tmpreaper.conf and remove the " "line:" msgstr "" "Se se substitúe o ficheiro /etc/tmpreaper.conf durante a actualización e " "aínda quere executar tmpreaper, edite o ficheiro /etc/tmpreaper.conf e " "elimine a liña:" tmpreaper-1.6.13+nmu1+deb9u1build0.16.04.1/debian/po/it.po0000664000000000000000000001453311423750432017163 0ustar # Translation of tmpreaper debconf templates to Italian # This file is distributed under the same license as the tmpreaper package. # Luca Monducci , 2008. # msgid "" msgstr "" "Project-Id-Version: tmpreaper 1.6.11\n" "Report-Msgid-Bugs-To: tmpreaper@packages.debian.org\n" "POT-Creation-Date: 2008-05-19 19:38+0200\n" "PO-Revision-Date: 2009-09-01 22:30+0200\n" "Last-Translator: Luca Monducci \n" "Language-Team: Italian \n" "Language: it\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" #. Type: note #. Description #: ../tmpreaper.templates:1001 msgid "tmpreaper can now be adjusted through /etc/tmpreaper.conf" msgstr "Adesso è possibile configurare tmpreaper tramite /etc/tmpreaper.conf" #. Type: note #. Description #: ../tmpreaper.templates:1001 msgid "" "Any local preferences for the daily tmpreaper run should now be configured " "through /etc/tmpreaper.conf (explanation is in that file)." msgstr "" "Tutte le impostazioni locali per l'esecuzione quotidiana di tmpreader " "dovrebbero essere fatte attraverso /etc/tmpreaper.conf (la spiegazione è nel " "file)." #. Type: note #. Description #: ../tmpreaper.templates:1001 msgid "" "Previously, you had to modify /etc/cron.daily/tmpreaper which could be a " "pain because that got updated regularly, and you'd have to reimplement your " "modifications each time (or miss out on the new changes). Now you can adjust " "the file age, extra --protect patterns, and which directories to reap in /" "etc/tmpreaper.conf." msgstr "" "In precedenza era necessario modificare /etc/cron.daily/tmpreaper, questo " "poteva essere un'operazione noiosa perché veniva aggiornato regolarmente e " "quindi ogni volta era necessario rifare le proprie modifiche (o non " "sfruttare le nuove modifiche). Adesso è possibile impostare in /etc/" "tmpreaper.conf l'età dei file, dei pattern aggiuntivi per --protect e quali " "directory ripulire." #. Type: note #. Description #: ../tmpreaper.templates:1001 msgid "" "For this to work, however, you have to install the new /etc/cron.daily/" "tmpreaper file now." msgstr "" "Per far funzionare tutto ciò, è necessario installare un nuovo /etc/cron." "daily/tmpreaper." #. Type: note #. Description #: ../tmpreaper.templates:2001 msgid "default value for TMPREAPER_TIME now set via /etc/default/rcS" msgstr "" "il valore predefinito di TMPREAPER_TIME viene impostato in /etc/default/rcS" #. Type: note #. Description #: ../tmpreaper.templates:2001 msgid "" "Before, you could set the maximum age for files before they were removed in /" "etc/tmpreaper.conf; however, there is another place where something similar " "is set, namely the TMPTIME value in /etc/default/rcS which is used during " "booting to clean out /tmp." msgstr "" "In precedenza era possibile impostare in /etc/tmpreaper.conf l'età massima " "dei file prima che venissero cancellati; adesso è possibile fare questa " "impostazione in un altro posto, in particolare con il valore di TMPTIME in /" "etc/default/rcS usato durante l'avvio per pulire /tmp." #. Type: note #. Description #: ../tmpreaper.templates:2001 msgid "" "To avoid having to enter this value in two places, the new /etc/tmpreaper." "conf script now obtains the TMPTIME value from /etc/default/rcS, and uses " "that (if it is greater than zero, that is)." msgstr "" "Per evitare di inserire questo valore in due posti, il nuovo script di " "configurazione /etc/tmpreaper.conf recupera il valore di TMPTIME da /etc/" "default/rcS e, se diverso da zero, lo utilizza." #. Type: note #. Description #: ../tmpreaper.templates:2001 msgid "" "You apparently have changed the default value in /etc/tmpreaper.conf; you " "may want to check /etc/default/rcS to see if the value there is acceptable, " "if you want the upgrade procedure to replace your /etc/tmpreaper.conf with " "the new version." msgstr "" "Apparentemente il valore predefinito in /etc/tmpreaper.conf è stato " "cambiato; verificare se il valore in /etc/default/rcS è accettabile, qualora " "si voglia che la procedura d'aggiornamento sostituisca il proprio /etc/" "tmpreaper.conf con la nuova versione." #. Type: note #. Description #. Type: note #. Description #: ../tmpreaper.templates:3001 ../tmpreaper.templates:4001 msgid "Please first read README.security" msgstr "Prima consultare README.security" #. Type: note #. Description #: ../tmpreaper.templates:3001 msgid "" "Before running tmpreaper for the first time, please read the file /usr/share/" "doc/tmpreaper/README.security.gz, e.g. with zless. Therein is contained a " "discussion of possible ways that usage of tmpreaper may be insecure." msgstr "" "Prima di eseguire tmpreader per la prima volta, leggere il file /usr/share/" "doc/tmpreaper/README.security.gz con zless. Contiene un'analisi su come " "l'uso di tmpreaper possa essere insicuro." #. Type: note #. Description #: ../tmpreaper.templates:3001 msgid "" "If after that you still want tmpreaper to run, please edit /etc/tmpreaper." "conf and remove the line:" msgstr "" "Dopo aver letto il documento, per usare tmpreaper è necessario modificare /" "etc/tmpreaper.conf e rimuovere la riga:" #. Type: note #. Description #. Type: note #. Description #: ../tmpreaper.templates:3001 ../tmpreaper.templates:4001 msgid "" " echo \"Please read /usr/share/doc/tmpreaper/README.security.gz first.\";\n" " exit 0" msgstr "" " echo \"Please read /usr/share/doc/tmpreaper/README.security.gz first.\";\n" " exit 0" #. Type: note #. Description #: ../tmpreaper.templates:4001 msgid "" "Before running tmpreaper after this upgrade, please read the file /usr/share/" "doc/tmpreaper/README.security.gz e.g. with zless. Therein is contained a " "discussion of possible ways that usage of tmpreaper may be insecure." msgstr "" "Dopo questo aggiornamento, prima di usare tmpreader, consultare il file /usr/" "share/doc/tmpreaper/README.security.gz usando zless. Contiene un'analisi su " "come l'uso di tmpreaper possa essere insicuro." #. Type: note #. Description #: ../tmpreaper.templates:4001 msgid "" "If during the upgrade the /etc/tmpreaper.conf file is replaced, and you " "still want tmpreaper to run, please edit /etc/tmpreaper.conf and remove the " "line:" msgstr "" "Se durante l'aggiornamento il file /etc/tmpreaper.conf viene sostituito, per " "usare tmpreaper è necessario modificare /etc/tmpreaper.conf e rimuovere le " "righe:" tmpreaper-1.6.13+nmu1+deb9u1build0.16.04.1/debian/po/vi.po0000664000000000000000000001641211423750433017164 0ustar # Vietnamese translation for tmpreaper. # Copyright © 2007 Free Software Foundation, Inc. # Clytie Siddall , 2005-2007. # msgid "" msgstr "" "Project-Id-Version: tmpreaper 1.6.5\n" "Report-Msgid-Bugs-To: tmpreaper@packages.debian.org\n" "POT-Creation-Date: 2008-05-19 19:38+0200\n" "PO-Revision-Date: 2007-08-18 14:33+0930\n" "Last-Translator: Clytie Siddall \n" "Language-Team: Vietnamese \n" "Language: vi\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" "X-Generator: LocFactoryEditor 1.7b1\n" #. Type: note #. Description #: ../tmpreaper.templates:1001 msgid "tmpreaper can now be adjusted through /etc/tmpreaper.conf" msgstr "Giá» này có thể Ä‘iá»u chỉnh tmpreaper bằng « /etc/tmpreaper.conf »." #. Type: note #. Description #: ../tmpreaper.templates:1001 msgid "" "Any local preferences for the daily tmpreaper run should now be configured " "through /etc/tmpreaper.conf (explanation is in that file)." msgstr "" "Bất cứ tùy thích nào vá» tiến trình chạy tmpreaper hàng ngày nên được cấu " "hình trong tập tin « /etc/tmpreaper.conf » (xem tập tin này để tìm chi tiết)." #. Type: note #. Description #: ../tmpreaper.templates:1001 msgid "" "Previously, you had to modify /etc/cron.daily/tmpreaper which could be a " "pain because that got updated regularly, and you'd have to reimplement your " "modifications each time (or miss out on the new changes). Now you can adjust " "the file age, extra --protect patterns, and which directories to reap in /" "etc/tmpreaper.conf." msgstr "" "Lần trước, bạn đã cần phải sá»­a đổi tập tin « /etc/cron.daily/tmpreaper », mà " "có thể làm phiá»n vì nó cập nhật Ä‘á»u đặn, thì bạn cần phải sá»­a đổi lại (không " "thì không có sá»± thay đổi má»›i). Lúc bây giá» bạn có thể Ä‘iá»u chỉnh thá»i gian " "hoạt động cá»§a tập tin, mẫu « --protect » (bảo vệ) thêm và những thư mục nào " "cần hưởng, cả trong tập tin cấu hình « /etc/tmpreaper.conf »." #. Type: note #. Description #: ../tmpreaper.templates:1001 msgid "" "For this to work, however, you have to install the new /etc/cron.daily/" "tmpreaper file now." msgstr "" "Tùy nhiên, để hoạt động được bạn cần phải cài đặt tập tin « /etc/cron.daily/" "tmpreaper » ngay bây giá»." #. Type: note #. Description #: ../tmpreaper.templates:2001 msgid "default value for TMPREAPER_TIME now set via /etc/default/rcS" msgstr "" "Giá trị mặc định cho « TMPREAPER_TIME » (thá»i gian tmpreaper) giá» này được " "đặt thông qua « /etc/default/rcS »." #. Type: note #. Description #: ../tmpreaper.templates:2001 msgid "" "Before, you could set the maximum age for files before they were removed in /" "etc/tmpreaper.conf; however, there is another place where something similar " "is set, namely the TMPTIME value in /etc/default/rcS which is used during " "booting to clean out /tmp." msgstr "" "Lần trước, bạn có thể đặt trong « /etc/tmpreaper.conf » thá»i gian hoạt động " "tối Ä‘a cho tập tin trước khi nó bị gỡ bá». Tùy nhiên, cÅ©ng có má»™t chá»— khác " "trong đó đặt giá trị tương tá»±, giá trị « TMPTIME » (thá»i gian tạm thá»i) " "trong « /etc/default/rcS », mà được dùng trong khi khởi động để xóa sạch thư " "mục « /tmp » (tạm thá»i)." #. Type: note #. Description #: ../tmpreaper.templates:2001 msgid "" "To avoid having to enter this value in two places, the new /etc/tmpreaper." "conf script now obtains the TMPTIME value from /etc/default/rcS, and uses " "that (if it is greater than zero, that is)." msgstr "" "Äể tránh trưá»ng hợp cần phải nhập giá trị này vào hai tập tin khác nhau, văn " "lệnh « /etc/tmpreaper.conf » giá» này lấy giá trị « TMPTIME » từ « /etc/" "default/rcS », và dùng nó (nếu nó hÆ¡n số không)." #. Type: note #. Description #: ../tmpreaper.templates:2001 msgid "" "You apparently have changed the default value in /etc/tmpreaper.conf; you " "may want to check /etc/default/rcS to see if the value there is acceptable, " "if you want the upgrade procedure to replace your /etc/tmpreaper.conf with " "the new version." msgstr "" "Hình như bạn đã thay đổi giá trị mặc định trong « /etc/tmpreaper.conf »; đỠ" "nghị bạn kiểm tra xem nếu giá trị trong « /etc/default/rcS » là thích hợp " "không, nếu bạn muốn tiến trình nâng cấp thay thế « /etc/tmpreaper.conf » tồn " "tại bằng phiên bản má»›i." #. Type: note #. Description #. Type: note #. Description #: ../tmpreaper.templates:3001 ../tmpreaper.templates:4001 msgid "Please first read README.security" msgstr "Trước tiên hãy Ä‘á»c tài liệu Äá»c Äi vá» bảo mật « README.security »." #. Type: note #. Description #: ../tmpreaper.templates:3001 msgid "" "Before running tmpreaper for the first time, please read the file /usr/share/" "doc/tmpreaper/README.security.gz, e.g. with zless. Therein is contained a " "discussion of possible ways that usage of tmpreaper may be insecure." msgstr "" "Trước khi chạy trình tmpreaper lần đầu tiên, hãy Ä‘á»c tập tin Äá»c Äi « /usr/" "share/doc/tmpreaper/README.security.gz », v.d. dùng trình Ä‘á»c zless. Tập tin " "này chứa thông tin vá» những trưá»ng hợp sá»­ dụng tmpreaper có thể rá»§i ro bảo " "mật." #. Type: note #. Description #: ../tmpreaper.templates:3001 msgid "" "If after that you still want tmpreaper to run, please edit /etc/tmpreaper." "conf and remove the line:" msgstr "" "Sau đó, nếu bạn còn muốn chạy trình tmpreaper, hãy hiệu chỉnh tập tin « /etc/" "tmpreaper.conf » để gỡ bá» dòng:" #. Type: note #. Description #. Type: note #. Description #: ../tmpreaper.templates:3001 ../tmpreaper.templates:4001 msgid "" " echo \"Please read /usr/share/doc/tmpreaper/README.security.gz first.\";\n" " exit 0" msgstr "" " echo \"Trước tiên hãy Ä‘á»c tài liệu bảo mật « /usr/share/doc/tmpreaper/" "README.security.gz ».\";\n" " exit 0" #. Type: note #. Description #: ../tmpreaper.templates:4001 msgid "" "Before running tmpreaper after this upgrade, please read the file /usr/share/" "doc/tmpreaper/README.security.gz e.g. with zless. Therein is contained a " "discussion of possible ways that usage of tmpreaper may be insecure." msgstr "" "Trước khi chạy trình tmpreaper sau tiến trình nâng cấp này, hãy Ä‘á»c tập tin " "Äá»c Ä‘i vá» bảo mật « /usr/share/doc/tmpreaper/README.security.gz », v.d. dùng " "trình Ä‘á»c zless. Tập tin này chứa thông tin vá» những trưá»ng hợp sá»­ dụng " "tmpreaper có thể rá»§i ro bảo mật." #. Type: note #. Description #: ../tmpreaper.templates:4001 msgid "" "If during the upgrade the /etc/tmpreaper.conf file is replaced, and you " "still want tmpreaper to run, please edit /etc/tmpreaper.conf and remove the " "line:" msgstr "" "Nếu tiến trình nâng cấp thay thế tập tin « /etc/tmpreaper.conf », và bạn còn " "muốn chạy trình tmpreaper, hãy hiệu chỉnh tập tin « /etc/tmpreaper.conf » để " "gỡ bá» dòng:" tmpreaper-1.6.13+nmu1+deb9u1build0.16.04.1/debian/po/nl.po0000664000000000000000000001572211423750432017161 0ustar # # Translators, if you are not familiar with the PO format, gettext # documentation is worth reading, especially sections dedicated to # this format, e.g. by running: # info -n '(gettext)PO Files' # info -n '(gettext)Header Entry' # # Some information specific to po-debconf are available at # /usr/share/doc/po-debconf/README-trans # or http://www.debian.org/intl/l10n/po-debconf/README-trans # # Developers do not need to manually edit POT or PO files. # msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: tmpreaper@packages.debian.org\n" "POT-Creation-Date: 2008-05-19 19:38+0200\n" "PO-Revision-Date: 2003-07-09 16:43+0200\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "Language: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=ISO-8859-15\n" "Content-Transfer-Encoding: 8bit\n" #. Type: note #. Description #: ../tmpreaper.templates:1001 msgid "tmpreaper can now be adjusted through /etc/tmpreaper.conf" msgstr "tmpreaper kan nu via /etc/tmpreaper.conf aangepast worden" #. Type: note #. Description #: ../tmpreaper.templates:1001 msgid "" "Any local preferences for the daily tmpreaper run should now be configured " "through /etc/tmpreaper.conf (explanation is in that file)." msgstr "" "Eigen voorkeuren voor tmpreaper kunnen nu via /etc/tmpreaper.conf " "geconfigureerd worden (in die file zelf wordt uitleg gegeven)." #. Type: note #. Description #: ../tmpreaper.templates:1001 msgid "" "Previously, you had to modify /etc/cron.daily/tmpreaper which could be a " "pain because that got updated regularly, and you'd have to reimplement your " "modifications each time (or miss out on the new changes). Now you can adjust " "the file age, extra --protect patterns, and which directories to reap in /" "etc/tmpreaper.conf." msgstr "" "Voorheen moest de /etc/cron.daily/tmpreaper script rechtstreeks aangepast " "worden, en dat was lastig wanneer die in een nieuwe versie ook veranderd " "was. Je moest dan steeds opnieuw je eigen aanpassingen maken, of de " "wijzigingen van de nieuwe versie missen. Nu kan de file leeftijd, extra --" "protect patterns en welke directories geschoond moeten worden, aangegeven " "worden in /etc/tmpreaper.conf." #. Type: note #. Description #: ../tmpreaper.templates:1001 msgid "" "For this to work, however, you have to install the new /etc/cron.daily/" "tmpreaper file now." msgstr "" "Voordat dit kan gaan werken, moet nu wel de nieuwe versie van /etc/cron." "daily/tmpreaper geinstalleerd worden." #. Type: note #. Description #: ../tmpreaper.templates:2001 msgid "default value for TMPREAPER_TIME now set via /etc/default/rcS" msgstr "/etc/default/rcS bepaalt nu de default waarde voor TMPREAPER_TIME" #. Type: note #. Description #: ../tmpreaper.templates:2001 msgid "" "Before, you could set the maximum age for files before they were removed in /" "etc/tmpreaper.conf; however, there is another place where something similar " "is set, namely the TMPTIME value in /etc/default/rcS which is used during " "booting to clean out /tmp." msgstr "" "Vroeger werd de maximale leeftijd van bestanden (voordat ze verwijderd " "werden) bepaald in /etc/tmpreaper.conf; echter, er is nog een plek waar een " "soortgelijke instelling gemaakt wordt, namelijk de TMPTIME instelling in /" "etc/default/rcS die gebruikt wordt tijdens het booten om /tmp op te ruimen." #. Type: note #. Description #: ../tmpreaper.templates:2001 msgid "" "To avoid having to enter this value in two places, the new /etc/tmpreaper." "conf script now obtains the TMPTIME value from /etc/default/rcS, and uses " "that (if it is greater than zero, that is)." msgstr "" "Om te voorkomen dat deze instelling op twee plaatsen gemaakt moet worden, " "zal de nieuwe /etc/tmpreaper.conf script de TMPTIME instelling uit /etc/" "default/rcS halen en die gebruiken (indien die groter is dan nul)." #. Type: note #. Description #: ../tmpreaper.templates:2001 msgid "" "You apparently have changed the default value in /etc/tmpreaper.conf; you " "may want to check /etc/default/rcS to see if the value there is acceptable, " "if you want the upgrade procedure to replace your /etc/tmpreaper.conf with " "the new version." msgstr "" "U heeft blijkbaar de default waarde in /etc/tmpreaper.conf veranderd; het is " "wellicht raadzaam om /etc/default/rcS te controleren of die waarde daar " "acceptabel is, indien u de upgrade procedure toestaat uw /etc/tmpreaper.conf " "te vervangen door de nieuwe versie." #. Type: note #. Description #. Type: note #. Description #: ../tmpreaper.templates:3001 ../tmpreaper.templates:4001 msgid "Please first read README.security" msgstr "AUB eerst README.security lezen" #. Type: note #. Description #: ../tmpreaper.templates:3001 msgid "" "Before running tmpreaper for the first time, please read the file /usr/share/" "doc/tmpreaper/README.security.gz, e.g. with zless. Therein is contained a " "discussion of possible ways that usage of tmpreaper may be insecure." msgstr "" "Voordat tmpreaper for het eerst gedraaid wordt, AUB eerst het document /usr/" "share/doc/tmpreaper/README.security.gz lezen, b.v. met zless. Daarin staat " "een verhaal over de mogelijke manieren waarop het gebruik van tmpreaper tot " "onveilige situaties kan leiden (ook al zijn de kansen daarop " "hoogstwaarschijnlijk te verwaarlozen)." #. Type: note #. Description #: ../tmpreaper.templates:3001 msgid "" "If after that you still want tmpreaper to run, please edit /etc/tmpreaper." "conf and remove the line:" msgstr "" "Indien u na het lezen daarvan nog steeds tmpreaper wilt gebruiken, dan moet " "u uit /etc/tmpreaper.conf de volgende regel verwijderen:" #. Type: note #. Description #. Type: note #. Description #: ../tmpreaper.templates:3001 ../tmpreaper.templates:4001 msgid "" " echo \"Please read /usr/share/doc/tmpreaper/README.security.gz first.\";\n" " exit 0" msgstr "" " echo \"Please read /usr/share/doc/tmpreaper/README.security.gz first.\"; " "exit 0" #. Type: note #. Description #: ../tmpreaper.templates:4001 msgid "" "Before running tmpreaper after this upgrade, please read the file /usr/share/" "doc/tmpreaper/README.security.gz e.g. with zless. Therein is contained a " "discussion of possible ways that usage of tmpreaper may be insecure." msgstr "" "Voordat tmpreaper for het eerst na deze upgrade gedraaid wordt, AUB eerst " "het document /usr/share/doc/tmpreaper/README.security.gz ezen, b.v. met " "zless. Daarin staat een verhaal over de mogelijke manieren waarop het " "gebruik van tmpreaper tot onveilige situaties kan leiden (ook al zijn de " "kansen daarop hoogstwaarschijnlijk te verwaarlozen)." #. Type: note #. Description #: ../tmpreaper.templates:4001 msgid "" "If during the upgrade the /etc/tmpreaper.conf file is replaced, and you " "still want tmpreaper to run, please edit /etc/tmpreaper.conf and remove the " "line:" msgstr "" "Indien tijdens de upgrade het /etc/tmpreaper.conf is vervangen, en u nog " "steeds tmpreaper wilt gebruiken, dan moet u uit /etc/tmpreaper.conf de " "volgende regel verwijderen:" tmpreaper-1.6.13+nmu1+deb9u1build0.16.04.1/debian/po/eu.po0000664000000000000000000001473111423750432017160 0ustar # translation of tmpreaper-eu.po to Euskara # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # # Piarres Beobide , 2008. msgid "" msgstr "" "Project-Id-Version: tmpreaper-eu\n" "Report-Msgid-Bugs-To: tmpreaper@packages.debian.org\n" "POT-Creation-Date: 2008-05-19 19:38+0200\n" "PO-Revision-Date: 2008-05-20 10:43+0200\n" "Last-Translator: Piarres Beobide \n" "Language-Team: Euskara \n" "Language: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Generator: KBabel 1.11.4\n" #. Type: note #. Description #: ../tmpreaper.templates:1001 msgid "tmpreaper can now be adjusted through /etc/tmpreaper.conf" msgstr "tmpreaper orain /etc/tmpreaper.conf bidez doitu daiteke" #. Type: note #. Description #: ../tmpreaper.templates:1001 msgid "" "Any local preferences for the daily tmpreaper run should now be configured " "through /etc/tmpreaper.conf (explanation is in that file)." msgstr "" "Eguneroko tmpreaper exekuzioari buruzko edozein erreferentzi lokal orain /" "etc/tmpreaper.conf bidez konfiguratu behar da (azalpena fitxategi honetan)." #. Type: note #. Description #: ../tmpreaper.templates:1001 msgid "" "Previously, you had to modify /etc/cron.daily/tmpreaper which could be a " "pain because that got updated regularly, and you'd have to reimplement your " "modifications each time (or miss out on the new changes). Now you can adjust " "the file age, extra --protect patterns, and which directories to reap in /" "etc/tmpreaper.conf." msgstr "" "Aurreko bertsioetan /etc/cron.daily/tmpreaper aldatu egin behar zen, hau " "arazo bat zen aldiro bertsio-berritzen bait zen eta zuk zure " "pertsonalizazioak bertsio-berritze bakoitzean berregin behar bait zenituen " "(edo aldaketa berriak galdu). Orain fitxategi data, --protect patroi " "gehigarriak, eta garbitu behar diren direktorioak /etc/tmpreaper.conf-en " "konfiguratu ditzakezu." #. Type: note #. Description #: ../tmpreaper.templates:1001 msgid "" "For this to work, however, you have to install the new /etc/cron.daily/" "tmpreaper file now." msgstr "" "Honetarako /etc/cron.daily/tmpreaper fitxategi berria orain instalatu behar " "duzu." #. Type: note #. Description #: ../tmpreaper.templates:2001 msgid "default value for TMPREAPER_TIME now set via /etc/default/rcS" msgstr "" "TMPREAPER_TIME -ren lehenetsiriko balioa orain /etc/default/rcS bidez " "ezartzen da" #. Type: note #. Description #: ../tmpreaper.templates:2001 msgid "" "Before, you could set the maximum age for files before they were removed in /" "etc/tmpreaper.conf; however, there is another place where something similar " "is set, namely the TMPTIME value in /etc/default/rcS which is used during " "booting to clean out /tmp." msgstr "" "Honen aurretik ezabatu behar diren fitxategien gehienezko adina /etc/" "tmpreaper.conf-en ezarri ahal izango duzu; hala ere horren antzeko zerbait " "ezartzen den beste leku bat badago, zehazki sistema abiaraztean /tmp " "garbitzeko erabiltzen den /etc/default/rcS -ko TMPTIME balioa." #. Type: note #. Description #: ../tmpreaper.templates:2001 msgid "" "To avoid having to enter this value in two places, the new /etc/tmpreaper." "conf script now obtains the TMPTIME value from /etc/default/rcS, and uses " "that (if it is greater than zero, that is)." msgstr "" "Balio hau bi lekutan ezarri behar ez izateko, /etc/tmpreaper.conf script-ak " "orain TMPTIME balioa /etc/default/rcS-tik eskuratzen eta erabiltzen du (0 " "baina handoiagoa bada noski)." #. Type: note #. Description #: ../tmpreaper.templates:2001 msgid "" "You apparently have changed the default value in /etc/tmpreaper.conf; you " "may want to check /etc/default/rcS to see if the value there is acceptable, " "if you want the upgrade procedure to replace your /etc/tmpreaper.conf with " "the new version." msgstr "" "Dirudienez /etc/tmpreaper.conf fitxategiko lehenetsiriko balioa aldatu " "duzu; /etc/default/rcS egiaztatu beharko zenuke hor ezartzen den balioa " "onargarria dela ziurtatzeko, bertsio-berritze prozesuak zure /etc/tmpreaper." "conf bertsio berriagatik ordeztea nahi baduzu." #. Type: note #. Description #. Type: note #. Description #: ../tmpreaper.templates:3001 ../tmpreaper.templates:4001 msgid "Please first read README.security" msgstr "Mesedez lehenengo README.security irakurri" #. Type: note #. Description #: ../tmpreaper.templates:3001 msgid "" "Before running tmpreaper for the first time, please read the file /usr/share/" "doc/tmpreaper/README.security.gz, e.g. with zless. Therein is contained a " "discussion of possible ways that usage of tmpreaper may be insecure." msgstr "" "Tmpreaper lehen aldian exekutatu aurretik, mesedez irakurri /usr/share/doc/" "tmpreaper/README.security.gz adibidez zless erabiliaz. Fitxategi honetan " "tmpreaper segurtasun arazo bat izanteko aukerak eztabaidatzen dira." #. Type: note #. Description #: ../tmpreaper.templates:3001 msgid "" "If after that you still want tmpreaper to run, please edit /etc/tmpreaper." "conf and remove the line:" msgstr "" "Honen ondoren tmpreaper exekutatu nahi baduzu, mesedez editatu /etc/" "tmpreaper.conf fitxategia eta lerro hau ezabatu:" #. Type: note #. Description #. Type: note #. Description #: ../tmpreaper.templates:3001 ../tmpreaper.templates:4001 msgid "" " echo \"Please read /usr/share/doc/tmpreaper/README.security.gz first.\";\n" " exit 0" msgstr "" " echo \"Mesedez irakurri /usr/share/doc/tmpreaper/README.security.gz " "lehenengo.\";\n" " exit 0" #. Type: note #. Description #: ../tmpreaper.templates:4001 msgid "" "Before running tmpreaper after this upgrade, please read the file /usr/share/" "doc/tmpreaper/README.security.gz e.g. with zless. Therein is contained a " "discussion of possible ways that usage of tmpreaper may be insecure." msgstr "" "Bertsio-berritze honen ondoren tmpreaper exekutatu aurretik mesedez " "irakurri /usr/share/doc/tmpreaper/README.security.gz adibidez zless " "erabiliaz. Fitxategi honetan tmpreaper segurtasun arazo bat izanteko aukerak " "eztabaidatzen dira." #. Type: note #. Description #: ../tmpreaper.templates:4001 msgid "" "If during the upgrade the /etc/tmpreaper.conf file is replaced, and you " "still want tmpreaper to run, please edit /etc/tmpreaper.conf and remove the " "line:" msgstr "" "Bertsio-berritzean /etc/tmpreaper.conf fitxategia ordezten bada eta honen " "ondoren tmpreaper exekutatu nahi baduzu, mesedez editatu /etc/tmpreaper.conf " "fitxategia eta lerro hau ezabatu:q" tmpreaper-1.6.13+nmu1+deb9u1build0.16.04.1/debian/po/templates.pot0000664000000000000000000000775611014335443020737 0ustar # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # FIRST AUTHOR , YEAR. # #, fuzzy msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: tmpreaper@packages.debian.org\n" "POT-Creation-Date: 2008-05-19 19:38+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=CHARSET\n" "Content-Transfer-Encoding: 8bit\n" #. Type: note #. Description #: ../tmpreaper.templates:1001 msgid "tmpreaper can now be adjusted through /etc/tmpreaper.conf" msgstr "" #. Type: note #. Description #: ../tmpreaper.templates:1001 msgid "" "Any local preferences for the daily tmpreaper run should now be configured " "through /etc/tmpreaper.conf (explanation is in that file)." msgstr "" #. Type: note #. Description #: ../tmpreaper.templates:1001 msgid "" "Previously, you had to modify /etc/cron.daily/tmpreaper which could be a " "pain because that got updated regularly, and you'd have to reimplement your " "modifications each time (or miss out on the new changes). Now you can adjust " "the file age, extra --protect patterns, and which directories to reap in /" "etc/tmpreaper.conf." msgstr "" #. Type: note #. Description #: ../tmpreaper.templates:1001 msgid "" "For this to work, however, you have to install the new /etc/cron.daily/" "tmpreaper file now." msgstr "" #. Type: note #. Description #: ../tmpreaper.templates:2001 msgid "default value for TMPREAPER_TIME now set via /etc/default/rcS" msgstr "" #. Type: note #. Description #: ../tmpreaper.templates:2001 msgid "" "Before, you could set the maximum age for files before they were removed in /" "etc/tmpreaper.conf; however, there is another place where something similar " "is set, namely the TMPTIME value in /etc/default/rcS which is used during " "booting to clean out /tmp." msgstr "" #. Type: note #. Description #: ../tmpreaper.templates:2001 msgid "" "To avoid having to enter this value in two places, the new /etc/tmpreaper." "conf script now obtains the TMPTIME value from /etc/default/rcS, and uses " "that (if it is greater than zero, that is)." msgstr "" #. Type: note #. Description #: ../tmpreaper.templates:2001 msgid "" "You apparently have changed the default value in /etc/tmpreaper.conf; you " "may want to check /etc/default/rcS to see if the value there is acceptable, " "if you want the upgrade procedure to replace your /etc/tmpreaper.conf with " "the new version." msgstr "" #. Type: note #. Description #. Type: note #. Description #: ../tmpreaper.templates:3001 ../tmpreaper.templates:4001 msgid "Please first read README.security" msgstr "" #. Type: note #. Description #: ../tmpreaper.templates:3001 msgid "" "Before running tmpreaper for the first time, please read the file /usr/share/" "doc/tmpreaper/README.security.gz, e.g. with zless. Therein is contained a " "discussion of possible ways that usage of tmpreaper may be insecure." msgstr "" #. Type: note #. Description #: ../tmpreaper.templates:3001 msgid "" "If after that you still want tmpreaper to run, please edit /etc/tmpreaper." "conf and remove the line:" msgstr "" #. Type: note #. Description #. Type: note #. Description #: ../tmpreaper.templates:3001 ../tmpreaper.templates:4001 msgid "" " echo \"Please read /usr/share/doc/tmpreaper/README.security.gz first.\";\n" " exit 0" msgstr "" #. Type: note #. Description #: ../tmpreaper.templates:4001 msgid "" "Before running tmpreaper after this upgrade, please read the file /usr/share/" "doc/tmpreaper/README.security.gz e.g. with zless. Therein is contained a " "discussion of possible ways that usage of tmpreaper may be insecure." msgstr "" #. Type: note #. Description #: ../tmpreaper.templates:4001 msgid "" "If during the upgrade the /etc/tmpreaper.conf file is replaced, and you " "still want tmpreaper to run, please edit /etc/tmpreaper.conf and remove the " "line:" msgstr "" tmpreaper-1.6.13+nmu1+deb9u1build0.16.04.1/debian/po/de.po0000664000000000000000000001500211423750432017127 0ustar # Translation of tmpreaper debconf templates to German # Copyright (C) Franz Pletz , 2006, 2007. # Copyright (C) Helge Kreutzmann , 2007. # This file is distributed under the same license as the tmpreaper package. # msgid "" msgstr "" "Project-Id-Version: tmpreaper 1.6.7\n" "Report-Msgid-Bugs-To: tmpreaper@packages.debian.org\n" "POT-Creation-Date: 2008-05-19 19:38+0200\n" "PO-Revision-Date: 2007-08-17 21:53+0200\n" "Last-Translator: Helge Kreutzmann \n" "Language-Team: German \n" "Language: de\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=ISO-8859-15\n" "Content-Transfer-Encoding: 8bit\n" #. Type: note #. Description #: ../tmpreaper.templates:1001 msgid "tmpreaper can now be adjusted through /etc/tmpreaper.conf" msgstr "tmpreaper kann jetzt über /etc/tmpreaper.conf angepasst werden" #. Type: note #. Description #: ../tmpreaper.templates:1001 msgid "" "Any local preferences for the daily tmpreaper run should now be configured " "through /etc/tmpreaper.conf (explanation is in that file)." msgstr "" "Alle Einstellungen für den täglichen tmpreaper-Lauf können jetzt in der " "Datei /etc/tmpreaper.conf vorgenommen werden (Erklärungen zu den Optionen " "finden Sie in dieser Datei)." #. Type: note #. Description #: ../tmpreaper.templates:1001 msgid "" "Previously, you had to modify /etc/cron.daily/tmpreaper which could be a " "pain because that got updated regularly, and you'd have to reimplement your " "modifications each time (or miss out on the new changes). Now you can adjust " "the file age, extra --protect patterns, and which directories to reap in /" "etc/tmpreaper.conf." msgstr "" "Bisher musste die Datei /etc/cron.daily/tmpreaper angepasst werden, die " "allerdings regelmäßig aktualisiert wurde. Dadurch mussten Sie jeweils Ihre " "Änderungen erneut einpflegen (oder auf die neuen Änderungen verzichten). " "Jetzt können Sie das Dateialter, zusätzliche »--protect«-Begriffe und die zu " "bearbeitenden Verzeichnisse in /etc/tmpreaper.conf angeben." #. Type: note #. Description #: ../tmpreaper.templates:1001 msgid "" "For this to work, however, you have to install the new /etc/cron.daily/" "tmpreaper file now." msgstr "" "Damit dies funktioniert, müssen Sie jetzt allerdings die neue Datei /etc/" "cron.daily/tmpreaper installieren." #. Type: note #. Description #: ../tmpreaper.templates:2001 msgid "default value for TMPREAPER_TIME now set via /etc/default/rcS" msgstr "" "Der Standardwert von TMPREAPER_TIME wird nun über /etc/default/rcS gesetzt" #. Type: note #. Description #: ../tmpreaper.templates:2001 msgid "" "Before, you could set the maximum age for files before they were removed in /" "etc/tmpreaper.conf; however, there is another place where something similar " "is set, namely the TMPTIME value in /etc/default/rcS which is used during " "booting to clean out /tmp." msgstr "" "Früher konnte das Höchstalter für Dateien bevor sie gelöscht wurden in /etc/" "tmpreaper.conf angegeben werden; aber es gibt eine andere Art, dies " "anzugeben, nämlich der TMPTIME-Wert in /etc/default/rcS, welcher während des " "Startvorgangs benutzt wird, um /tmp zu säubern." #. Type: note #. Description #: ../tmpreaper.templates:2001 msgid "" "To avoid having to enter this value in two places, the new /etc/tmpreaper." "conf script now obtains the TMPTIME value from /etc/default/rcS, and uses " "that (if it is greater than zero, that is)." msgstr "" "Um zu verhindern, dass dieser Wert in zwei Dateien eingestellt wird, holt " "sich das neue /etc/tmpreaper.conf-Skript den Wert von TMPTIME aus /etc/" "default/rcS und nutzt ihn, falls er größer als 0 ist." #. Type: note #. Description #: ../tmpreaper.templates:2001 msgid "" "You apparently have changed the default value in /etc/tmpreaper.conf; you " "may want to check /etc/default/rcS to see if the value there is acceptable, " "if you want the upgrade procedure to replace your /etc/tmpreaper.conf with " "the new version." msgstr "" "Sie haben anscheinend den Standardwert in /etc/tmpreaper.conf geändert; Sie " "sollten überprüfen, ob der Wert in /etc/default/rcS in Ordnung ist, falls " "Sie wollen, das die Upgrade-Prozedur Ihre /etc/tmpreaper.conf durch die neue " "Version ersetzen soll." #. Type: note #. Description #. Type: note #. Description #: ../tmpreaper.templates:3001 ../tmpreaper.templates:4001 msgid "Please first read README.security" msgstr "Please first read README.security" #. Type: note #. Description #: ../tmpreaper.templates:3001 msgid "" "Before running tmpreaper for the first time, please read the file /usr/share/" "doc/tmpreaper/README.security.gz, e.g. with zless. Therein is contained a " "discussion of possible ways that usage of tmpreaper may be insecure." msgstr "" "Bevor Sie tmpreaper zum ersten Mal laufen lassen, lesen Sie bitte die Datei /" "usr/share/doc/tmpreaper/README.security.gz z.B. mit zless. Dort finden Sie " "eine Diskussion, inwiefern die Benutzung von tmpreaper unsicher sein könnte." #. Type: note #. Description #: ../tmpreaper.templates:3001 msgid "" "If after that you still want tmpreaper to run, please edit /etc/tmpreaper." "conf and remove the line:" msgstr "" "Falls Sie immer noch tmpreaper laufen lassen wollen, editieren Sie bitte /" "etc/tmpreaper.conf und löschen Sie die Zeile:" #. Type: note #. Description #. Type: note #. Description #: ../tmpreaper.templates:3001 ../tmpreaper.templates:4001 msgid "" " echo \"Please read /usr/share/doc/tmpreaper/README.security.gz first.\";\n" " exit 0" msgstr "" " echo \"Please read /usr/share/doc/tmpreaper/README.security.gz first.\";\n" " exit 0" #. Type: note #. Description #: ../tmpreaper.templates:4001 msgid "" "Before running tmpreaper after this upgrade, please read the file /usr/share/" "doc/tmpreaper/README.security.gz e.g. with zless. Therein is contained a " "discussion of possible ways that usage of tmpreaper may be insecure." msgstr "" "Bevor Sie tmpreaper nach diesem Upgrade starten, lesen Sie bitte die Datei /" "usr/share/doc/tmpreaper/README.security.gz z.B. mit zless. Dort finden Sie " "eine Diskussion, inwiefern die Benutzung tmpreaper unsicher sein könnte." #. Type: note #. Description #: ../tmpreaper.templates:4001 msgid "" "If during the upgrade the /etc/tmpreaper.conf file is replaced, and you " "still want tmpreaper to run, please edit /etc/tmpreaper.conf and remove the " "line:" msgstr "" "Falls während des Upgrades die Datei /etc/tmpreaper.conf überschrieben wird " "und Sie tmpreaper noch benutzen wollen, editieren Sie bitte /etc/tmpreaper." "conf und löschen Sie die Zeile:" tmpreaper-1.6.13+nmu1+deb9u1build0.16.04.1/debian/po/es.po0000664000000000000000000001715611423750432017162 0ustar # tmpreaper po-debconf translation to Spanish # Copyright (C) 2007 Software in the Public Interest, SPI Inc. # This file is distributed under the same license as the tmpreaper package. # # Changes: # - Initial translation # Javier Fernández-Sanguino , 2007 # # # Traductores, si no conoce el formato PO, merece la pena leer la # documentación de gettext, especialmente las secciones dedicadas a este # formato, por ejemplo ejecutando: # info -n '(gettext)PO Files' # info -n '(gettext)Header Entry' # # Equipo de traducción al español, por favor lean antes de traducir # los siguientes documentos: # # - El proyecto de traducción de Debian al español # http://www.debian.org/intl/spanish/ # especialmente las notas y normas de traducción en # http://www.debian.org/intl/spanish/notas # # - La guía de traducción de po's de debconf: # /usr/share/doc/po-debconf/README-trans # o http://www.debian.org/intl/l10n/po-debconf/README-trans # # Si tiene dudas o consultas sobre esta traducción consulte con el último # traductor (campo Last-Translator) y ponga en copia a la lista de # traducción de Debian al español () # msgid "" msgstr "" "Project-Id-Version: tmpreaper 1.6.7\n" "Report-Msgid-Bugs-To: tmpreaper@packages.debian.org\n" "POT-Creation-Date: 2008-05-19 19:38+0200\n" "PO-Revision-Date: 2007-08-20 08:38+0200\n" "Last-Translator: Javier Fernández-Sanguino \n" "Language-Team: Debian Spanish \n" "Language: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=ISO-8859-15\n" "Content-Transfer-Encoding: 8bit\n" "X-POFile-SpellExtra: TMPTIME rcS cron conf tmp tmpreaper usr README zless\n" "X-POFile-SpellExtra: TMPREAPERTIME protect default doc daily security\n" #. Type: note #. Description #: ../tmpreaper.templates:1001 msgid "tmpreaper can now be adjusted through /etc/tmpreaper.conf" msgstr "Puede ajustar tmpreaper a través de «/etc/tmpreaper.conf»" #. Type: note #. Description #: ../tmpreaper.templates:1001 msgid "" "Any local preferences for the daily tmpreaper run should now be configured " "through /etc/tmpreaper.conf (explanation is in that file)." msgstr "" "Puede configurar la preferencia local para la ejecución diaria de tmpreaper " "en el fichero «/etc/tmpreaper.conf» (encontrará una explicación de cómo " "hacerlo en ese fichero)." #. Type: note #. Description #: ../tmpreaper.templates:1001 msgid "" "Previously, you had to modify /etc/cron.daily/tmpreaper which could be a " "pain because that got updated regularly, and you'd have to reimplement your " "modifications each time (or miss out on the new changes). Now you can adjust " "the file age, extra --protect patterns, and which directories to reap in /" "etc/tmpreaper.conf." msgstr "" "En versiones anteriores tenía que modificar «/etc/cron.daily/tmpreaper», lo " "que era un problema porque se actualizaba con frecuencia y tenía que " "reimplementar sus cambios tras cada modificación (o perderse los nuevos " "cambios). Ahora puede ajustar el tiempo, patrones extra para «--protect» y " "los directorios a vaciar en «/etc/tmpreaper.conf»." #. Type: note #. Description #: ../tmpreaper.templates:1001 msgid "" "For this to work, however, you have to install the new /etc/cron.daily/" "tmpreaper file now." msgstr "" "Sin embargo, para que esto funcione, debe instalar ahora el nuevo archivo «/" "etc/cron.daily/tmpreaper»." #. Type: note #. Description #: ../tmpreaper.templates:2001 msgid "default value for TMPREAPER_TIME now set via /etc/default/rcS" msgstr "" "el valor por omisión de TMPREAPER_TIME se fija ahora en «/etc/default/rcS»" #. Type: note #. Description #: ../tmpreaper.templates:2001 msgid "" "Before, you could set the maximum age for files before they were removed in /" "etc/tmpreaper.conf; however, there is another place where something similar " "is set, namely the TMPTIME value in /etc/default/rcS which is used during " "booting to clean out /tmp." msgstr "" "Podía fijar antes la edad máxima de los ficheros que se iban a eliminar en «/" "etc/tmpreaper.conf». Hay una ubicación donde se define un valor similar, en " "concreto el valor TMPTIME fijado en «/etc/default/rcS» y que se utiliza para " "limpiar el «/tmp»." #. Type: note #. Description #: ../tmpreaper.templates:2001 msgid "" "To avoid having to enter this value in two places, the new /etc/tmpreaper." "conf script now obtains the TMPTIME value from /etc/default/rcS, and uses " "that (if it is greater than zero, that is)." msgstr "" "Para impedir que tenga que introducir dos veces este valor el nuevo guión «/" "etc/tmpreaper.conf» obtiene el valor TMPTIME de «/etc/default/rcS» y lo " "utiliza (siempre que sea mayor que cero, claro está)." #. Type: note #. Description #: ../tmpreaper.templates:2001 msgid "" "You apparently have changed the default value in /etc/tmpreaper.conf; you " "may want to check /etc/default/rcS to see if the value there is acceptable, " "if you want the upgrade procedure to replace your /etc/tmpreaper.conf with " "the new version." msgstr "" "Parece que ha cambiado el valor por omisión en «/etc/tmpreaper.conf». " "Debería comprobar «/etc/default/rcS» para determinar si el valor que se " "define ahí es aceptable, si desea que el procedimiento de actualización " "reemplaze «/etc/tmpreaper.conf» con la nueva versión." #. Type: note #. Description #. Type: note #. Description #: ../tmpreaper.templates:3001 ../tmpreaper.templates:4001 msgid "Please first read README.security" msgstr "Por favor, consulte primero «README.security»" #. Type: note #. Description #: ../tmpreaper.templates:3001 msgid "" "Before running tmpreaper for the first time, please read the file /usr/share/" "doc/tmpreaper/README.security.gz, e.g. with zless. Therein is contained a " "discussion of possible ways that usage of tmpreaper may be insecure." msgstr "" "Antes de ejecutar por primera vez tmpreaper debe consultar el fichero «/usr/" "share/doc/tmpreaper/README.security.gz» con, por ejemplo, zless. En este " "fichero se discuten las posibles formas en las que el uso de tmpreaper puede " "causar problemas de seguridad." #. Type: note #. Description #: ../tmpreaper.templates:3001 msgid "" "If after that you still want tmpreaper to run, please edit /etc/tmpreaper." "conf and remove the line:" msgstr "" "Si después de leer esto quiere activar tmpreaper, edite «/etc/tmpreaper." "conf» y elimine la siguiente línea:" #. Type: note #. Description #. Type: note #. Description #: ../tmpreaper.templates:3001 ../tmpreaper.templates:4001 msgid "" " echo \"Please read /usr/share/doc/tmpreaper/README.security.gz first.\";\n" " exit 0" msgstr "" " echo \"Please read /usr/share/doc/tmpreaper/README.security.gz first.\";\n" " exit 0" #. Type: note #. Description #: ../tmpreaper.templates:4001 msgid "" "Before running tmpreaper after this upgrade, please read the file /usr/share/" "doc/tmpreaper/README.security.gz e.g. with zless. Therein is contained a " "discussion of possible ways that usage of tmpreaper may be insecure." msgstr "" "Antes de ejecutar tmpreaper después de esta actualización, lea, por favor, " "el fichero «/usr/share/doc/tmpreaper/README.security.gz» con, por ejemplo, " "zless. En este fichero se discuten las posibles formas en las que el uso de " "tmpreaper puede causar problemas de seguridad." #. Type: note #. Description #: ../tmpreaper.templates:4001 msgid "" "If during the upgrade the /etc/tmpreaper.conf file is replaced, and you " "still want tmpreaper to run, please edit /etc/tmpreaper.conf and remove the " "line:" msgstr "" "Si después de que la actualización reemplace el fichero «/etc/tmpreaper." "conf» y aún quiere activar tmpreaper, edite «/etc/tmpreaper.conf» y elimine " "la siguiente línea:" tmpreaper-1.6.13+nmu1+deb9u1build0.16.04.1/debian/po/da.po0000664000000000000000000001444011422351770017131 0ustar # Danish translation tmpreaper. # Copyright (C) 2010 tmpreaper & Joe Hansen. # This file is distributed under the same license as the tmpreaper package. # Joe Hansen , 2010. # msgid "" msgstr "" "Project-Id-Version: tmpreaper\n" "Report-Msgid-Bugs-To: tmpreaper@packages.debian.org\n" "POT-Creation-Date: 2008-05-19 19:38+0200\n" "PO-Revision-Date: 2010-05-15 17:30+01:00\n" "Last-Translator: Joe Hansen \n" "Language-Team: Danish \n" "Language: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" #. Type: note #. Description #: ../tmpreaper.templates:1001 msgid "tmpreaper can now be adjusted through /etc/tmpreaper.conf" msgstr "tmpreaper kan nu justeres via /etc/tmpreaper.conf" #. Type: note #. Description #: ../tmpreaper.templates:1001 msgid "" "Any local preferences for the daily tmpreaper run should now be configured " "through /etc/tmpreaper.conf (explanation is in that file)." msgstr "" "Alle lokale præferencer for den daglige tmpreaperkørsel skal nu konfigureres " "via /etc/tmpreaper.conf (forklaring er i den fil)." #. Type: note #. Description #: ../tmpreaper.templates:1001 msgid "" "Previously, you had to modify /etc/cron.daily/tmpreaper which could be a " "pain because that got updated regularly, and you'd have to reimplement your " "modifications each time (or miss out on the new changes). Now you can adjust " "the file age, extra --protect patterns, and which directories to reap in /" "etc/tmpreaper.conf." msgstr "" "Tidligere, mÃ¥tte du ændre /etc/cron.daily/tmpreaper hvilket kunne være " "særdeles besværligt da den opdateres dagligt, og du mÃ¥tte gendanne dine " "ændringer hver gang (eller miste de nye ændringer). Nu kan du justere " "filalderen, der er ekstra --protect mønstre, og vælge hvilke mapper der skal " "læses fra i /etc/tmpreaper.conf." #. Type: note #. Description #: ../tmpreaper.templates:1001 msgid "" "For this to work, however, you have to install the new /etc/cron.daily/" "tmpreaper file now." msgstr "" "For at dette skal virke, skal du dog installere den nye fil /etc/cron.daily/" "tmpreaper nu." #. Type: note #. Description #: ../tmpreaper.templates:2001 msgid "default value for TMPREAPER_TIME now set via /etc/default/rcS" msgstr "Standardværdi for TMPREAPER_TIME nu angivet via /etc/default/rcS" #. Type: note #. Description #: ../tmpreaper.templates:2001 msgid "" "Before, you could set the maximum age for files before they were removed in /" "etc/tmpreaper.conf; however, there is another place where something similar " "is set, namely the TMPTIME value in /etc/default/rcS which is used during " "booting to clean out /tmp." msgstr "" "Før kunne du angive den maksimale alder for filer før de blev fjernet i /etc/" "tmpreaper.conf; der er dog et andet sted hvor noget lignende kan angives, " "nemlig værdien TMPTIME i /etc/default/rcS som bruges under opstart til at " "rense ud i /tmp." #. Type: note #. Description #: ../tmpreaper.templates:2001 msgid "" "To avoid having to enter this value in two places, the new /etc/tmpreaper." "conf script now obtains the TMPTIME value from /etc/default/rcS, and uses " "that (if it is greater than zero, that is)." msgstr "" "For at undgÃ¥ at indtaste denne værdi to steder, henter det nye skript /etc/" "tmpreaper.conf nu værdien TMPTIME fra /etc/default/rcS, og bruger den (vel " "at mærke hvis den er større end nul)." #. Type: note #. Description #: ../tmpreaper.templates:2001 msgid "" "You apparently have changed the default value in /etc/tmpreaper.conf; you " "may want to check /etc/default/rcS to see if the value there is acceptable, " "if you want the upgrade procedure to replace your /etc/tmpreaper.conf with " "the new version." msgstr "" "Du har tilsyneladende ændret standardværdien i /etc/tmpreaper.conf; du vil " "mÃ¥ske tjekke /etc/default/rcS for at se hvorvidt værdien der er acceptabel, " "hvis du ønsker at opgraderingsprocessen skal erstatte din /etc/tmpreaper." "conf med den nye version." #. Type: note #. Description #. Type: note #. Description #: ../tmpreaper.templates:3001 ../tmpreaper.templates:4001 msgid "Please first read README.security" msgstr "Læs venligst først README.security" #. Type: note #. Description #: ../tmpreaper.templates:3001 msgid "" "Before running tmpreaper for the first time, please read the file /usr/share/" "doc/tmpreaper/README.security.gz, e.g. with zless. Therein is contained a " "discussion of possible ways that usage of tmpreaper may be insecure." msgstr "" "Før kørsel af tmpreaper for første gang, læs venligst filen /usr/share/doc/" "tmpreaper/README.security.gz, for eksempel med zless. Deri er indeholdt en " "diskussion hvor mulige mÃ¥der der gør brugen af tmpreaper usikker er omtalt." #. Type: note #. Description #: ../tmpreaper.templates:3001 msgid "" "If after that you still want tmpreaper to run, please edit /etc/tmpreaper." "conf and remove the line:" msgstr "" "Hvis du derefter stadig ønsker at tmpreaper skal køre, sÃ¥ rediger venligst /" "etc/tmpreaper.conf og fjern linjen:" #. Type: note #. Description #. Type: note #. Description #: ../tmpreaper.templates:3001 ../tmpreaper.templates:4001 msgid "" " echo \"Please read /usr/share/doc/tmpreaper/README.security.gz first.\";\n" " exit 0" msgstr "" " echo »Læs venligst først /usr/share/doc/tmpreaper/README.security.gz.\";\n" " exit 0" #. Type: note #. Description #: ../tmpreaper.templates:4001 msgid "" "Before running tmpreaper after this upgrade, please read the file /usr/share/" "doc/tmpreaper/README.security.gz e.g. with zless. Therein is contained a " "discussion of possible ways that usage of tmpreaper may be insecure." msgstr "" "Læs venligst filen /usr/share/doc/tmpreaper/README.seurity.gz før kørsel af " "tmpreaper efter denne opgradering. For eksempel med zless. Deri er indeholdt " "en diskussion, der omtaler, at brugen af tmpreaper kan være usikker." #. Type: note #. Description #: ../tmpreaper.templates:4001 msgid "" "If during the upgrade the /etc/tmpreaper.conf file is replaced, and you " "still want tmpreaper to run, please edit /etc/tmpreaper.conf and remove the " "line:" msgstr "" "Hvis filen /etc/tmpreaper.conf under opgraderingen bliver erstattet, og du " "stadig ønsker at tmpreaper skal køre, sÃ¥ rediger venligst /etc/tmpreaper." "conf og fjern linjen:" tmpreaper-1.6.13+nmu1+deb9u1build0.16.04.1/debian/po/sv.po0000664000000000000000000001464611423750433017205 0ustar # translation of tmpreaper.po to swedish # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # # Martin Bagge , 2008. msgid "" msgstr "" "Project-Id-Version: tmpreaper\n" "Report-Msgid-Bugs-To: tmpreaper@packages.debian.org\n" "POT-Creation-Date: 2008-05-19 19:38+0200\n" "PO-Revision-Date: 2008-12-15 02:06+0100\n" "Last-Translator: Martin Bagge \n" "Language-Team: swedish \n" "Language: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Generator: KBabel 1.11.4\n" #. Type: note #. Description #: ../tmpreaper.templates:1001 msgid "tmpreaper can now be adjusted through /etc/tmpreaper.conf" msgstr "tmpreaper kan justeras genom /etc/tmpreaper.conf" #. Type: note #. Description #: ../tmpreaper.templates:1001 msgid "" "Any local preferences for the daily tmpreaper run should now be configured " "through /etc/tmpreaper.conf (explanation is in that file)." msgstr "" "Alla lokala inställningar för dagliga tmpreaper ska numera ställas in genom /" "etc/tmpreaper.conf (förklaringar för inställningarna finns i filen)." #. Type: note #. Description #: ../tmpreaper.templates:1001 msgid "" "Previously, you had to modify /etc/cron.daily/tmpreaper which could be a " "pain because that got updated regularly, and you'd have to reimplement your " "modifications each time (or miss out on the new changes). Now you can adjust " "the file age, extra --protect patterns, and which directories to reap in /" "etc/tmpreaper.conf." msgstr "" "Tidigare var du tvungen att redigera /etc/cron.daily/tmpreaper vilket var en " "irriterande process dÃ¥ filen uppdaterades med jämna mellanrum och " "inställningarna dÃ¥ behövde läggas tillbaka (eller sÃ¥ glömdes det bort med " "alla problem det innebär). Nu kan filÃ¥lder och --protect-mönster och vilka " "kataloger som ska övervakas i /etc/tmpreaper.conf." #. Type: note #. Description #: ../tmpreaper.templates:1001 msgid "" "For this to work, however, you have to install the new /etc/cron.daily/" "tmpreaper file now." msgstr "" "För att det här ska fungera mÃ¥ste du dock installera den nya filen för /etc/" "cron.daily/tmpreaper nu." #. Type: note #. Description #: ../tmpreaper.templates:2001 msgid "default value for TMPREAPER_TIME now set via /etc/default/rcS" msgstr "standardvärdet för TMPREAPER_TIME sätts numera via /etc/default/rcS" #. Type: note #. Description #: ../tmpreaper.templates:2001 msgid "" "Before, you could set the maximum age for files before they were removed in /" "etc/tmpreaper.conf; however, there is another place where something similar " "is set, namely the TMPTIME value in /etc/default/rcS which is used during " "booting to clean out /tmp." msgstr "" "Tidigare kunde man ställa in Ã¥ldern för som filer var tvunga att uppnÃ¥ innan " "de raderades automatiskt genom /etc/tmpreaper.conf, hur som helst finns det " "en annan liknande inställning nämligen TMPTIME i /etc/default/rcS som " "används vid systemets uppstart för att radera filer i /tmp." #. Type: note #. Description #: ../tmpreaper.templates:2001 msgid "" "To avoid having to enter this value in two places, the new /etc/tmpreaper." "conf script now obtains the TMPTIME value from /etc/default/rcS, and uses " "that (if it is greater than zero, that is)." msgstr "" "För att undvika att ha detta värde pÃ¥ tvÃ¥ ställe läser numera värdet pÃ¥ " "TMPTIME frÃ¥n /etc/default/rcS in av skriptet /etc/tmpreaper.conf och används " "(om värdet är större än noll)." #. Type: note #. Description #: ../tmpreaper.templates:2001 msgid "" "You apparently have changed the default value in /etc/tmpreaper.conf; you " "may want to check /etc/default/rcS to see if the value there is acceptable, " "if you want the upgrade procedure to replace your /etc/tmpreaper.conf with " "the new version." msgstr "" "Du har tydligen ändrat standardvärdet i /etc/tmpreaper.con, du bör " "kontrollera värdet i /etc/default/rcS och överväga om det är en korrekt " "inställning som ska användas av uppgraderingsprocessen när /etc/tmpreaper." "conf ersätts." #. Type: note #. Description #. Type: note #. Description #: ../tmpreaper.templates:3001 ../tmpreaper.templates:4001 msgid "Please first read README.security" msgstr "Vänligen läs README.security först" #. Type: note #. Description #: ../tmpreaper.templates:3001 msgid "" "Before running tmpreaper for the first time, please read the file /usr/share/" "doc/tmpreaper/README.security.gz, e.g. with zless. Therein is contained a " "discussion of possible ways that usage of tmpreaper may be insecure." msgstr "" "Innan du kör tmpreaper första gÃ¥ngen bör du läsa filen /usr/share/doc/" "tmpreaper/README.security.gz med exempelvis zless. I filen finns exempelvis " "avsnitt om osäkra användningsomrÃ¥den för tmpreaper och hur man undviker " "dessa." #. Type: note #. Description #: ../tmpreaper.templates:3001 msgid "" "If after that you still want tmpreaper to run, please edit /etc/tmpreaper." "conf and remove the line:" msgstr "" "Slutligen när du bestämt dig för att köra tmpreaper sÃ¥ redigerar du filen /" "etc/tmpreaper och tar bort raden:" #. Type: note #. Description #. Type: note #. Description #: ../tmpreaper.templates:3001 ../tmpreaper.templates:4001 msgid "" " echo \"Please read /usr/share/doc/tmpreaper/README.security.gz first.\";\n" " exit 0" msgstr "" " echo \"Please read /usr/share/doc/tmpreaper/README.security.gz first.\";\n" " exit 0" #. Type: note #. Description #: ../tmpreaper.templates:4001 msgid "" "Before running tmpreaper after this upgrade, please read the file /usr/share/" "doc/tmpreaper/README.security.gz e.g. with zless. Therein is contained a " "discussion of possible ways that usage of tmpreaper may be insecure." msgstr "" "Innan du kör tmpreapder efter denna uppgradering vänligen läs filen /usr/" "share/doc/tmpreaper/README.security.gz med exempelvis zless. I filen finns " "exempelvis avsnitt om osäkra användningsomrÃ¥den för tmpreaper och hur man " "undviker dessa." #. Type: note #. Description #: ../tmpreaper.templates:4001 msgid "" "If during the upgrade the /etc/tmpreaper.conf file is replaced, and you " "still want tmpreaper to run, please edit /etc/tmpreaper.conf and remove the " "line:" msgstr "" "Om filen /etc/tmpreaper.conf ersätts under uppgraderingen och du vill " "fortsätta att köra tmpreaper mÃ¥ste filen redigeras och följande rad raderas:" tmpreaper-1.6.13+nmu1+deb9u1build0.16.04.1/debian/po/fr.po0000664000000000000000000001606311423750432017156 0ustar # # Translators, if you are not familiar with the PO format, gettext # documentation is worth reading, especially sections dedicated to # this format, e.g. by running: # info -n '(gettext)PO Files' # info -n '(gettext)Header Entry' # Some information specific to po-debconf are available at # /usr/share/doc/po-debconf/README-trans # or http://www.debian.org/intl/l10n/po-debconf/README-trans# # Developers do not need to manually edit POT or PO files. # msgid "" msgstr "" "Project-Id-Version: tmpreaper_1.6.2\n" "Report-Msgid-Bugs-To: tmpreaper@packages.debian.org\n" "POT-Creation-Date: 2008-05-19 19:38+0200\n" "PO-Revision-Date: 2007-08-21 09:27GMT\n" "Last-Translator: Michel Grentzinger \n" "Language-Team: French \n" "Language: fr\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Generator: KBabel 1.11.4\n" #. Type: note #. Description #: ../tmpreaper.templates:1001 msgid "tmpreaper can now be adjusted through /etc/tmpreaper.conf" msgstr "Tmpreaper peut maintenant être configuré via /etc/tmpreaper.conf" #. Type: note #. Description #: ../tmpreaper.templates:1001 msgid "" "Any local preferences for the daily tmpreaper run should now be configured " "through /etc/tmpreaper.conf (explanation is in that file)." msgstr "" "Toutes les préférences locales pour l'exécution quotidienne de tmpreaper " "doivent maintenant être configurées via /etc/tmpreaper.conf (ce fichier " "contient des explications)." #. Type: note #. Description #: ../tmpreaper.templates:1001 msgid "" "Previously, you had to modify /etc/cron.daily/tmpreaper which could be a " "pain because that got updated regularly, and you'd have to reimplement your " "modifications each time (or miss out on the new changes). Now you can adjust " "the file age, extra --protect patterns, and which directories to reap in /" "etc/tmpreaper.conf." msgstr "" "Auparavant, vous deviez modifier /etc/cron.daily/tmpreaper ce qui était " "pénible car ce fichier est régulièrement mis à jour, vous obligeant à " "renouveler vos modifications (ou à ne pas prendre en compte les nouvelles " "évolutions). Maintenant, vous pouvez définir l'âge des fichiers, les modèles " "(« patterns ») supplémentaires pour « --protect », ainsi que les répertoires " "à analyser grâce au fichier /etc/tmpreaper.conf." #. Type: note #. Description #: ../tmpreaper.templates:1001 msgid "" "For this to work, however, you have to install the new /etc/cron.daily/" "tmpreaper file now." msgstr "" "Pour réaliser cette tâche, vous devez installer dès à présent le nouveau " "fichier /etc/cron.daily/tmpreaper." #. Type: note #. Description #: ../tmpreaper.templates:2001 msgid "default value for TMPREAPER_TIME now set via /etc/default/rcS" msgstr "" "La valeur par défaut pour TMPREAPER_TIME est maintenant définie dans /etc/" "default/rcS" #. Type: note #. Description #: ../tmpreaper.templates:2001 msgid "" "Before, you could set the maximum age for files before they were removed in /" "etc/tmpreaper.conf; however, there is another place where something similar " "is set, namely the TMPTIME value in /etc/default/rcS which is used during " "booting to clean out /tmp." msgstr "" "Auparavant, vous pouviez définir dans /etc/tmpreaper.conf, l'âge minimum que " "devaient avoir les fichiers avant d'être supprimés. Cependant, un réglage " "similaire est défini par ailleurs grâce à la variable TMPTIME dans /etc/" "default/rcS, qui est utilisée pour nettoyer /tmp lors du démarrage du " "système." #. Type: note #. Description #: ../tmpreaper.templates:2001 msgid "" "To avoid having to enter this value in two places, the new /etc/tmpreaper." "conf script now obtains the TMPTIME value from /etc/default/rcS, and uses " "that (if it is greater than zero, that is)." msgstr "" "Pour éviter de définir cette valeur à deux reprises, le nouveau script /etc/" "tmpreaper.conf lit et utilise dorénavant la variable TMPTIME située dans /" "etc/default/rcS (si elle est supérieure à zéro)." #. Type: note #. Description #: ../tmpreaper.templates:2001 msgid "" "You apparently have changed the default value in /etc/tmpreaper.conf; you " "may want to check /etc/default/rcS to see if the value there is acceptable, " "if you want the upgrade procedure to replace your /etc/tmpreaper.conf with " "the new version." msgstr "" "Vous avez apparemment changé la valeur par défaut dans /etc/tmpreaper.conf ; " "vous voudrez sans doute vérifier que la valeur située dans /etc/default/rcS " "est satisfaisante afin que la mise à jour remplace votre /etc/tmpreaper.conf " "par la nouvelle version." #. Type: note #. Description #. Type: note #. Description #: ../tmpreaper.templates:3001 ../tmpreaper.templates:4001 msgid "Please first read README.security" msgstr "Veuillez d'abord lire README.security" #. Type: note #. Description #: ../tmpreaper.templates:3001 msgid "" "Before running tmpreaper for the first time, please read the file /usr/share/" "doc/tmpreaper/README.security.gz, e.g. with zless. Therein is contained a " "discussion of possible ways that usage of tmpreaper may be insecure." msgstr "" "Avant de lancer tmpreaper pour la première fois, veuillez consulter le " "fichier /usr/share/doc/tmpreaper/README.security.gz, avec zless par exemple. " "Il contient une discussion sur les différents cas possibles dans lesquels " "l'usage de tmpreaper peut présenter des risques." #. Type: note #. Description #: ../tmpreaper.templates:3001 msgid "" "If after that you still want tmpreaper to run, please edit /etc/tmpreaper." "conf and remove the line:" msgstr "" "Après cela, si vous souhaitez toujours lancer tmpreaper, veuillez modifier /" "etc/tmpreaper.conf et y supprimer la ligne :" #. Type: note #. Description #. Type: note #. Description #: ../tmpreaper.templates:3001 ../tmpreaper.templates:4001 msgid "" " echo \"Please read /usr/share/doc/tmpreaper/README.security.gz first.\";\n" " exit 0" msgstr "" " echo \"Please read /usr/share/doc/tmpreaper/README.security.gz first.\";\n" " exit 0" #. Type: note #. Description #: ../tmpreaper.templates:4001 msgid "" "Before running tmpreaper after this upgrade, please read the file /usr/share/" "doc/tmpreaper/README.security.gz e.g. with zless. Therein is contained a " "discussion of possible ways that usage of tmpreaper may be insecure." msgstr "" "Avant de lancer tmpreaper après cette mise à jour, veuillez lire le fichier /" "usr/share/doc/tmpreaper/README.security.gz, avec zless par exemple. Il " "contient une discussion sur les différents cas possibles dans lesquels " "l'usage de tmpreaper peut présenter des risques." #. Type: note #. Description #: ../tmpreaper.templates:4001 msgid "" "If during the upgrade the /etc/tmpreaper.conf file is replaced, and you " "still want tmpreaper to run, please edit /etc/tmpreaper.conf and remove the " "line:" msgstr "" "Si, pendant la mise à jour, le fichier /etc/tmpreaper.conf est remplacé et " "que vous souhaitez toujours lancer tmpreaper, veuillez modifier /etc/" "tmpreaper.conf et y supprimer la ligne :" tmpreaper-1.6.13+nmu1+deb9u1build0.16.04.1/debian/po/ru.po0000664000000000000000000001722411423750433017176 0ustar # translation of ru.po to Russian # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # # Yuri Kozlov , 2008. msgid "" msgstr "" "Project-Id-Version: tmpreaper new\n" "Report-Msgid-Bugs-To: tmpreaper@packages.debian.org\n" "POT-Creation-Date: 2008-05-19 19:38+0200\n" "PO-Revision-Date: 2008-05-21 20:54+0400\n" "Last-Translator: Yuri Kozlov \n" "Language-Team: Russian \n" "Language: ru\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Generator: KBabel 1.11.4\n" "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n" "%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" #. Type: note #. Description #: ../tmpreaper.templates:1001 msgid "tmpreaper can now be adjusted through /etc/tmpreaper.conf" msgstr "tmpreaper теперь можно управлÑть через /etc/tmpreaper.conf" #. Type: note #. Description #: ../tmpreaper.templates:1001 msgid "" "Any local preferences for the daily tmpreaper run should now be configured " "through /etc/tmpreaper.conf (explanation is in that file)." msgstr "" "Любые локальные наÑтройки Ð´Ð»Ñ ÐµÐ¶ÐµÐ´Ð½ÐµÐ²Ð½Ð¾Ð³Ð¾ запуÑка tmpreaper теперь нужно " "проводить в /etc/tmpreaper.conf (объÑÑнение даны в Ñтом файле)." #. Type: note #. Description #: ../tmpreaper.templates:1001 msgid "" "Previously, you had to modify /etc/cron.daily/tmpreaper which could be a " "pain because that got updated regularly, and you'd have to reimplement your " "modifications each time (or miss out on the new changes). Now you can adjust " "the file age, extra --protect patterns, and which directories to reap in /" "etc/tmpreaper.conf." msgstr "" "Раньше, вы изменÑли /etc/cron.daily/tmpreaper, что могло быть непроÑто, так " "как он регулÑрно обновлÑлÑÑ, и вам приходилоÑÑŒ вноÑить Ñвои Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ ÐºÐ°Ð¶Ð´Ñ‹Ð¹ " "раз заново (или выкидывать поÑвившиеÑÑ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ). Теперь вы можете " "подÑтраивать Ñрок Ñ…Ñ€Ð°Ð½ÐµÐ½Ð¸Ñ Ñ„Ð°Ð¹Ð»Ð°, дополнительные шаблоны --protect и " "очищаемые каталоги в /etc/tmpreaper.conf." #. Type: note #. Description #: ../tmpreaper.templates:1001 msgid "" "For this to work, however, you have to install the new /etc/cron.daily/" "tmpreaper file now." msgstr "" "Ð”Ð»Ñ Ñтого ÑÐµÐ¹Ñ‡Ð°Ñ Ð²Ð°Ð¼ нужно уÑтановить новый файл /etc/cron.daily/tmpreaper." #. Type: note #. Description #: ../tmpreaper.templates:2001 msgid "default value for TMPREAPER_TIME now set via /etc/default/rcS" msgstr "" "Значение по умолчанию Ð´Ð»Ñ TMPREAPER_TIME теперь уÑтанавливаетÑÑ Ð² /etc/" "default/rcS" #. Type: note #. Description #: ../tmpreaper.templates:2001 msgid "" "Before, you could set the maximum age for files before they were removed in /" "etc/tmpreaper.conf; however, there is another place where something similar " "is set, namely the TMPTIME value in /etc/default/rcS which is used during " "booting to clean out /tmp." msgstr "" "Раньше, вы могли задать макÑимальный Ñрок Ñ…Ñ€Ð°Ð½ÐµÐ½Ð¸Ñ Ñ„Ð°Ð¹Ð»Ð¾Ð² в /etc/tmpreaper." "conf; однако, еÑть другое меÑто, где уÑтанавливаетÑÑ Ð½ÐµÑ‡Ñ‚Ð¾ подобное, а " "именно значение переменной TMPTIME в /etc/default/rcS, которое иÑпользуетÑÑ " "при загрузке операционной ÑиÑтемы Ð´Ð»Ñ Ð¾Ñ‡Ð¸Ñтки /tmp." #. Type: note #. Description #: ../tmpreaper.templates:2001 msgid "" "To avoid having to enter this value in two places, the new /etc/tmpreaper." "conf script now obtains the TMPTIME value from /etc/default/rcS, and uses " "that (if it is greater than zero, that is)." msgstr "" "Чтобы не вводить одинаковое значение в двух меÑтах, новый Ñценарий /etc/" "tmpreaper.conf теперь получает значение TMPTIME из /etc/default/rcS и " "иÑпользует его (еÑли оно больше нулÑ)." #. Type: note #. Description #: ../tmpreaper.templates:2001 msgid "" "You apparently have changed the default value in /etc/tmpreaper.conf; you " "may want to check /etc/default/rcS to see if the value there is acceptable, " "if you want the upgrade procedure to replace your /etc/tmpreaper.conf with " "the new version." msgstr "" "Ð’Ñ‹, неÑомненно, менÑли значение по умолчанию в /etc/tmpreaper.conf; " "проверьте, что значение в /etc/default/rcS подходит Ð´Ð»Ñ Ñ€Ð°Ð±Ð¾Ñ‚Ñ‹, еÑли хотите " "выполнить процедуру Ð¾Ð±Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ Ð´Ð»Ñ Ð·Ð°Ð¼ÐµÐ½Ñ‹ /etc/tmpreaper.conf на новую " "верÑию." #. Type: note #. Description #. Type: note #. Description #: ../tmpreaper.templates:3001 ../tmpreaper.templates:4001 msgid "Please first read README.security" msgstr "Сначала прочитайте README.security" #. Type: note #. Description #: ../tmpreaper.templates:3001 msgid "" "Before running tmpreaper for the first time, please read the file /usr/share/" "doc/tmpreaper/README.security.gz, e.g. with zless. Therein is contained a " "discussion of possible ways that usage of tmpreaper may be insecure." msgstr "" "Перед первым запуÑком tmpreaper, прочитайте файл /usr/share/doc/tmpreaper/" "README.security.gz, например, Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ zless. Ð’ нём ÑодержитÑÑ Ð¾Ð¿Ð¸Ñание " "возможных ÑпоÑобов небезопаÑного иÑÐ¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ð½Ð¸Ñ tmpreaper." #. Type: note #. Description #: ../tmpreaper.templates:3001 msgid "" "If after that you still want tmpreaper to run, please edit /etc/tmpreaper." "conf and remove the line:" msgstr "" "ЕÑли поÑле Ñтого вы вÑÑ‘ ещё хотите запуÑкать tmpreaper, отредактируйте файл /" "etc/tmpreaper.conf и удалите Ñтроку:" #. Type: note #. Description #. Type: note #. Description #: ../tmpreaper.templates:3001 ../tmpreaper.templates:4001 msgid "" " echo \"Please read /usr/share/doc/tmpreaper/README.security.gz first.\";\n" " exit 0" msgstr "" " echo \"Please read /usr/share/doc/tmpreaper/README.security.gz first.\";\n" " exit 0" #. Type: note #. Description #: ../tmpreaper.templates:4001 msgid "" "Before running tmpreaper after this upgrade, please read the file /usr/share/" "doc/tmpreaper/README.security.gz e.g. with zless. Therein is contained a " "discussion of possible ways that usage of tmpreaper may be insecure." msgstr "" "Перед запуÑком tmpreaper поÑле Ñтого обновлениÑ, прочитайте файл /usr/share/" "doc/tmpreaper/README.security.gz, например, Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ zless. Ð’ нём " "ÑодержитÑÑ Ð¾Ð¿Ð¸Ñание возможных ÑпоÑобов небезопаÑного иÑÐ¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ð½Ð¸Ñ tmpreaper." #. Type: note #. Description #: ../tmpreaper.templates:4001 msgid "" "If during the upgrade the /etc/tmpreaper.conf file is replaced, and you " "still want tmpreaper to run, please edit /etc/tmpreaper.conf and remove the " "line:" msgstr "" "ЕÑли при обновлении был заменён файл /etc/tmpreaper.conf, и вы вÑÑ‘ ещё " "хотите запуÑкать tmpreaper, отредактируйте файл /etc/tmpreaper.conf и " "удалите Ñтроку:" tmpreaper-1.6.13+nmu1+deb9u1build0.16.04.1/debian/po/pt.po0000664000000000000000000001464211423750433017174 0ustar # Portuguese translation for tmpreaper debconf messages. # Copyright (C) 2007 Pedro Ribeiro # This file is distributed under the same license as the tmpreaper package. # Pedro Ribeiro , 2007 # msgid "" msgstr "" "Project-Id-Version: tmpreaper-1.6.7\n" "Report-Msgid-Bugs-To: tmpreaper@packages.debian.org\n" "POT-Creation-Date: 2008-05-19 19:38+0200\n" "PO-Revision-Date: 2007-08-17 16:28+0100\n" "Last-Translator: Pedro Ribeiro \n" "Language-Team: Portuguese \n" "Language: pt\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" #. Type: note #. Description #: ../tmpreaper.templates:1001 msgid "tmpreaper can now be adjusted through /etc/tmpreaper.conf" msgstr "tmpreaper pode ser agora ajustado através de /etc/tmpreaper.conf" #. Type: note #. Description #: ../tmpreaper.templates:1001 msgid "" "Any local preferences for the daily tmpreaper run should now be configured " "through /etc/tmpreaper.conf (explanation is in that file)." msgstr "" "Quaisquer preferências locais para a execução diária do tmpreaper devem ser " "configuradas através de /etc/tmpreaper.conf (explicações no ficheiro)." #. Type: note #. Description #: ../tmpreaper.templates:1001 msgid "" "Previously, you had to modify /etc/cron.daily/tmpreaper which could be a " "pain because that got updated regularly, and you'd have to reimplement your " "modifications each time (or miss out on the new changes). Now you can adjust " "the file age, extra --protect patterns, and which directories to reap in /" "etc/tmpreaper.conf." msgstr "" "Anteriormente, tinha que modificar /etc/cron.daily/tmpreaper, o que podia " "ser difícil porque esse ficheiro é actualizado regularmente e você teria de " "re-implementar as suas modificações (ou não tirar partido das novas " "alterações). Agora pode ajustar a idade do ficheiro, padrões --protect " "extra, e que directórios limpar em /etc/tmpreaper.conf." #. Type: note #. Description #: ../tmpreaper.templates:1001 msgid "" "For this to work, however, you have to install the new /etc/cron.daily/" "tmpreaper file now." msgstr "" "No entanto, para que isto funcione, tem que instalar agora o novo ficheiro /" "etc/cron.daily/tmpreaper." #. Type: note #. Description #: ../tmpreaper.templates:2001 msgid "default value for TMPREAPER_TIME now set via /etc/default/rcS" msgstr "" "o valor por omissão para TMPREAPER_TIME é definido via /etc/default/rcS" #. Type: note #. Description #: ../tmpreaper.templates:2001 msgid "" "Before, you could set the maximum age for files before they were removed in /" "etc/tmpreaper.conf; however, there is another place where something similar " "is set, namely the TMPTIME value in /etc/default/rcS which is used during " "booting to clean out /tmp." msgstr "" "Antes podia definir a idade máxima para ficheiros antes da sua remoção em /" "etc/tmpreaper.conf; no entanto, existe outra localização onde é definido um " "valor semelhante: o valor de TMPTIME em /etc/default/rcS que é usado durante " "o processo de arranque para limpar /tmp." #. Type: note #. Description #: ../tmpreaper.templates:2001 msgid "" "To avoid having to enter this value in two places, the new /etc/tmpreaper." "conf script now obtains the TMPTIME value from /etc/default/rcS, and uses " "that (if it is greater than zero, that is)." msgstr "" "Para evitar definir o mesmo valor em dois sítios diferentes, o novo /etc/" "tmpreaper.conf obtém o valor de TMPTIME de /etc/default/rcS, e usa-o (se for " "maior que zero, claro)." #. Type: note #. Description #: ../tmpreaper.templates:2001 msgid "" "You apparently have changed the default value in /etc/tmpreaper.conf; you " "may want to check /etc/default/rcS to see if the value there is acceptable, " "if you want the upgrade procedure to replace your /etc/tmpreaper.conf with " "the new version." msgstr "" "Aparentemente alterou o valor pré-definido em /etc/tmpreaper.conf; pode " "querer verificar /etc/default/rcS para ver se o valor aí definido é " "aceitável, se actualizar o ficheiro /etc/tmpreaper.conf com a nova versão." #. Type: note #. Description #. Type: note #. Description #: ../tmpreaper.templates:3001 ../tmpreaper.templates:4001 msgid "Please first read README.security" msgstr "Por favor leia primeiro README.security" #. Type: note #. Description #: ../tmpreaper.templates:3001 msgid "" "Before running tmpreaper for the first time, please read the file /usr/share/" "doc/tmpreaper/README.security.gz, e.g. with zless. Therein is contained a " "discussion of possible ways that usage of tmpreaper may be insecure." msgstr "" "Antes de executar tmpreaper pela primeira vez, leia por favor o ficheiro /" "usr/share/doctmpreaper/REAMDE.security.gz, e.g. com zless. Aí encontra uma " "discussão sobre possíveis modos de execução do tmpreaper que podem ser " "inseguros." #. Type: note #. Description #: ../tmpreaper.templates:3001 msgid "" "If after that you still want tmpreaper to run, please edit /etc/tmpreaper." "conf and remove the line:" msgstr "" "Se depois ainda quiser executar o tmpreaper, por favor remova a seguinte " "linha do /etc/tmpreaper.conf:" #. Type: note #. Description #. Type: note #. Description #: ../tmpreaper.templates:3001 ../tmpreaper.templates:4001 msgid "" " echo \"Please read /usr/share/doc/tmpreaper/README.security.gz first.\";\n" " exit 0" msgstr "" " echo \"Por favor leia primeiro /usr/share/doc/tmpreaper/README.security.gz." "\";\n" " exit 0" #. Type: note #. Description #: ../tmpreaper.templates:4001 msgid "" "Before running tmpreaper after this upgrade, please read the file /usr/share/" "doc/tmpreaper/README.security.gz e.g. with zless. Therein is contained a " "discussion of possible ways that usage of tmpreaper may be insecure." msgstr "" "Antes de executar tmpreaper após esta actualização, leia por favor o " "ficheiro /usr/share/doctmpreaper/REAMDE.security.gz e.g. com zless. Aí " "encontra uma discussão sobre possíveis modos de execução do tmpreaper que " "podem ser inseguros." #. Type: note #. Description #: ../tmpreaper.templates:4001 msgid "" "If during the upgrade the /etc/tmpreaper.conf file is replaced, and you " "still want tmpreaper to run, please edit /etc/tmpreaper.conf and remove the " "line:" msgstr "" "Se o ficheiro /etc/tmpreaper.conf for substituído durante a actualização, e " "ainda quiser executar o tmpreaper, por favor remova a seguinte linha de /etc/" "tmpreaper.conf:" tmpreaper-1.6.13+nmu1+deb9u1build0.16.04.1/debian/po/cs.po0000664000000000000000000001517411423750432017156 0ustar # # Translators, if you are not familiar with the PO format, gettext # documentation is worth reading, especially sections dedicated to # this format, e.g. by running: # info -n '(gettext)PO Files' # info -n '(gettext)Header Entry' # # Some information specific to po-debconf are available at # /usr/share/doc/po-debconf/README-trans # or http://www.debian.org/intl/l10n/po-debconf/README-trans # # Developers do not need to manually edit POT or PO files. # msgid "" msgstr "" "Project-Id-Version: tmpreaper\n" "Report-Msgid-Bugs-To: tmpreaper@packages.debian.org\n" "POT-Creation-Date: 2008-05-19 19:38+0200\n" "PO-Revision-Date: 2007-08-23 22:02+0200\n" "Last-Translator: Miroslav Kure \n" "Language-Team: Czech \n" "Language: cs\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" #. Type: note #. Description #: ../tmpreaper.templates:1001 msgid "tmpreaper can now be adjusted through /etc/tmpreaper.conf" msgstr "Tmpreaper nyní můžete nastavit pomocí /etc/tmpreaper.conf" #. Type: note #. Description #: ../tmpreaper.templates:1001 msgid "" "Any local preferences for the daily tmpreaper run should now be configured " "through /etc/tmpreaper.conf (explanation is in that file)." msgstr "" "VÅ¡echna nastavení pro každodenní bÄ›h tmpreaperu by se nyní mÄ›la provádÄ›t v " "souboru /etc/tmpreaper.conf (vysvÄ›tlení je uvnitÅ™ souboru)." #. Type: note #. Description #: ../tmpreaper.templates:1001 msgid "" "Previously, you had to modify /etc/cron.daily/tmpreaper which could be a " "pain because that got updated regularly, and you'd have to reimplement your " "modifications each time (or miss out on the new changes). Now you can adjust " "the file age, extra --protect patterns, and which directories to reap in /" "etc/tmpreaper.conf." msgstr "" "Dříve jste museli upravovat /etc/cron.daily/tmpreaper, což mohlo působit " "problémy, protože tento soubor byl pravidelnÄ› pÅ™episován a museli jste si " "vybrat, zda budete zadávat své úpravy znova a znova, nebo zda oželíte nové " "zmÄ›ny. V souboru /etc/tmpreaper.conf nyní můžete nastavit stáří mazaných " "souborů, speciální vzory pro volbu --protect a seznam promazávaných adresářů." #. Type: note #. Description #: ../tmpreaper.templates:1001 msgid "" "For this to work, however, you have to install the new /etc/cron.daily/" "tmpreaper file now." msgstr "" "Aby to fungovalo, musí se nyní nainstalovat nový soubor /etc/cron.daily/" "tmpreaper." #. Type: note #. Description #: ../tmpreaper.templates:2001 msgid "default value for TMPREAPER_TIME now set via /etc/default/rcS" msgstr "Výchozí hodnota TMPREAPER_TIME se nyní nastavuje v /etc/default/rcS" #. Type: note #. Description #: ../tmpreaper.templates:2001 msgid "" "Before, you could set the maximum age for files before they were removed in /" "etc/tmpreaper.conf; however, there is another place where something similar " "is set, namely the TMPTIME value in /etc/default/rcS which is used during " "booting to clean out /tmp." msgstr "" "Dříve se maximální stáří souborů pÅ™ed odstranÄ›ním nastavovalo v /etc/" "tmpreaper.conf. NicménÄ› v souboru /etc/default/rcS existuje podobná promÄ›nná " "TMPTIME, která se používá pÅ™i zavádÄ›ní systému k mazání adresáře /tmp." #. Type: note #. Description #: ../tmpreaper.templates:2001 msgid "" "To avoid having to enter this value in two places, the new /etc/tmpreaper." "conf script now obtains the TMPTIME value from /etc/default/rcS, and uses " "that (if it is greater than zero, that is)." msgstr "" "Abyste nemuseli zadávat tuto hodnotu na dvou místech, nový /etc/tmpreaper." "conf nyní používá hodnotu TMPTIME z /etc/default/rcS (pokud je ovÅ¡em vÄ›tší " "než nula)." #. Type: note #. Description #: ../tmpreaper.templates:2001 msgid "" "You apparently have changed the default value in /etc/tmpreaper.conf; you " "may want to check /etc/default/rcS to see if the value there is acceptable, " "if you want the upgrade procedure to replace your /etc/tmpreaper.conf with " "the new version." msgstr "" "EvidentnÄ› jste v souboru /etc/tmpreaper.conf zmÄ›nili výchozí hodnotu. MÄ›li " "byste zkontrolovat /etc/default/rcS, zda vám tam nastavená hodnota vyhovuje. " "(Pokud ovÅ¡em povolíte, aby se nahradil stávající /etc/tmpreaper.conf novou " "verzí.)" #. Type: note #. Description #. Type: note #. Description #: ../tmpreaper.templates:3001 ../tmpreaper.templates:4001 msgid "Please first read README.security" msgstr "Nejprve si pÅ™eÄtÄ›te README.security" #. Type: note #. Description #: ../tmpreaper.templates:3001 msgid "" "Before running tmpreaper for the first time, please read the file /usr/share/" "doc/tmpreaper/README.security.gz, e.g. with zless. Therein is contained a " "discussion of possible ways that usage of tmpreaper may be insecure." msgstr "" "PÅ™ed prvním spuÅ¡tÄ›ním tmpreaperu si pÅ™eÄtÄ›te soubor /usr/share/doc/tmpreaper/" "README.security.gz (napÅ™. programem zless). V souboru jsou popsány možné " "situace, kdy není použití tmpreaperu bezpeÄné." #. Type: note #. Description #: ../tmpreaper.templates:3001 msgid "" "If after that you still want tmpreaper to run, please edit /etc/tmpreaper." "conf and remove the line:" msgstr "" "Pokud chcete tmpreaper používat i po pÅ™eÄtení zmínÄ›ného souboru, upravte " "soubor /etc/tmpreaper.conf a odstraňte následující řádek:" #. Type: note #. Description #. Type: note #. Description #: ../tmpreaper.templates:3001 ../tmpreaper.templates:4001 msgid "" " echo \"Please read /usr/share/doc/tmpreaper/README.security.gz first.\";\n" " exit 0" msgstr "" " echo \"Please read /usr/share/doc/tmpreaper/README.security.gz first.\";\n" " exit 0" #. Type: note #. Description #: ../tmpreaper.templates:4001 msgid "" "Before running tmpreaper after this upgrade, please read the file /usr/share/" "doc/tmpreaper/README.security.gz e.g. with zless. Therein is contained a " "discussion of possible ways that usage of tmpreaper may be insecure." msgstr "" "PÅ™ed spuÅ¡tÄ›ním tmpreaperu po této aktualizaci si prosím pÅ™eÄtÄ›te /usr/share/" "doc/tmpreaper/README.security.gz, kde se probírají různé způsoby použití, " "jež nejsou bezpeÄné." #. Type: note #. Description #: ../tmpreaper.templates:4001 msgid "" "If during the upgrade the /etc/tmpreaper.conf file is replaced, and you " "still want tmpreaper to run, please edit /etc/tmpreaper.conf and remove the " "line:" msgstr "" "Pokud je bÄ›hem aktualizace nahrazen soubor /etc/tmpreaper.conf a stále " "chcete tmpreaper spouÅ¡tÄ›t, upravte, prosím, soubor /etc/tmpreaper.conf a " "odstraňte řádek:" tmpreaper-1.6.13+nmu1+deb9u1build0.16.04.1/debian/copyright0000664000000000000000000000425713414146062017526 0ustar COPYRIGHT --------- This package was originally an `alien', debianized by the alien program by converting the GPLed RPMS Package `tmpwatch-1.2' on Thu, 13 Nov 1997 02:16:28 -0800. Authors: Erik Troan, Karl M. Hegbloom, Paul Slootman Copyright 1997 Erik Troan Copyright 1997, 1998 Karl M. Hegbloom Copyright 1998-2019 Paul Slootman tmpreaper is released under the terms of the GNU General Public License version 2, found in the file: /usr/share/common-licenses/GPL-2 on Debian systems, or at http://www.gnu.org/licenses/old-licenses/gpl-2.0.html Please read the changelog. The original `tmpwatch-1.2' was downloaded from ftp.redhat.com by karlheg@inetarena.com. (You can find the current repository at https://fedorahosted.org/tmpwatch/) Thank You, Erik Troan. This program was sorely needed. We always appreciate the things you provide for the Linux community. I could not have even begun to write a program like this one from scratch. Without the initial program to build on, it would not have been possible. I've learned a lot from this experience. karlheg: Sun, Dec 7, 1997: I am renaming this program from `tmpwatch' to `tmpreaper' to split away from RedHat, who released a `tmpwatch-1.4' with RedHat v5.0 that had zero of the patches I sent for `1.2-1.4'. They made one small patch: --- tmpwatch-1.2.c Mon Nov 17 21:16:37 1997 +++ tmpwatch-1.4/tmpwatch.c Thu Nov 6 13:58:34 1997 @@ -157,7 +157,7 @@ message(LOG_VERBOSE, "removing directory %s\n", ent->d_name); if (!(flags & FLAGS_TEST)) { - if (!(flags & FLAGS_ALLFILES)) { + if (flags & FLAGS_ALLFILES) { if (rmdir(ent->d_name)) { message(LOG_ERROR, "failed to rmdir %s: %s\n", dirname, ent->d_name); This does not reflect any of the changes I made and submitted to them, including the bug that prompted me to begin working on `tmpwatch' to begin with. The `--test' option was broken. The getopt loop fills a variable with some flags to be passed to cleanDirectory, but when that function is called for the first time, he passes a 0 as the flags argument. In main(), it goes: - cleanupDirectory(argv[optind], killTime, 0); + cleanupDirectory (argv[optind], killTime, flags); tmpreaper-1.6.13+nmu1+deb9u1build0.16.04.1/debian/tmpreaper.config0000775000000000000000000000350411254444065020762 0ustar #!/bin/sh -e if [ -e /usr/share/debconf/confmodule ]; then . /usr/share/debconf/confmodule fi # If the cron.daily script isn't there, then this is probably a new # installation; don't show the message in that case. # If the "installed version" is empty, this is definitely a new installation... GO4IT=false if [ ! -s /etc/cron.daily/tmpreaper -o -z "$2" ]; then db_fset tmpreaper/confignowexists seen true # This debconf thing was introduced in version 1.5.1. # Only if the installed version is less should the message be displayed. elif dpkg --compare-versions "$2" ">>" "1.5.1"; then db_fset tmpreaper/confignowexists seen true else db_input high tmpreaper/confignowexists || true GO4IT=true fi # If there isn't a tmpreaper.conf file, don't bother showing the note. # Or if the default value for TMPREAPER_TIME is still there, # also don't show the note. if [ ! -f /etc/tmpreaper.conf ] || [ "`grep '^TMPREAPER_TIME=7d$' /etc/tmpreaper.conf 2>/dev/null`" = "TMPREAPER_TIME=7d" ]; then db_fset tmpreaper/TMPREAPER_TIME seen true else db_input high tmpreaper/TMPREAPER_TIME || true GO4IT=true fi # If upgrading, the user may not choose to replace the conffile, # so then show a different note than to users newly installing. if [ -z "$2" ]; then # newly installing db_fset tmpreaper/readsecurity_upgrading seen true # they must never see this note db_input high tmpreaper/readsecurity || true # ... only this one elif dpkg --compare-versions "$2" "<<" "1.6.1"; then # upgrading (from older version) db_fset tmpreaper/readsecurity seen true # they must never see this other note db_input high tmpreaper/readsecurity_upgrading || true # ... only this one GO4IT=true else # upgrading from newer version where it already was there : fi if $GO4IT; then db_go fi db_stop exit 0 tmpreaper-1.6.13+nmu1+deb9u1build0.16.04.1/debian/changelog0000664000000000000000000005362213516121300017434 0ustar tmpreaper (1.6.13+nmu1+deb9u1build0.16.04.1) xenial-security; urgency=medium * SECURITY UPDATE: Sync from Debian - fixes CVE-2019-3461. -- Eduardo Barretto Wed, 24 Jul 2019 15:25:43 -0300 tmpreaper (1.6.13+nmu1+deb9u1) stretch-security; urgency=high * Non-maintainer upload by the Security Team. * There was a race condition when tmpreaper was testing for a (bind) mount, which was done via rename() which could potentially lead to a file being placed elsewhere on the filesystem hierarchy (e.g. /etc/cron.d/) if the directory being cleaned up was on the same physical filesystem. This has been fixed by using an alternative way of looking for bind mounts using code from mountpoint (from the util-linux package). -- Paul Slootman Sat, 05 Jan 2019 16:25:06 +0100 tmpreaper (1.6.13+nmu1) unstable; urgency=low * Non-maintainer upload. * Fix pending l10n issues. Debconf translations: - Danish (Joe Hansen). Closes: #581718 -- Christian Perrier Wed, 04 Aug 2010 23:50:07 -0400 tmpreaper (1.6.13) unstable; urgency=low * debconf config script could exit with status 30. -- Paul Slootman Thu, 17 Sep 2009 16:31:22 +0200 tmpreaper (1.6.12) unstable; urgency=low * Ignore any \+.*$ component in the version number when checking for the correct version number in configure.ac, to allow for NMUs. closes:#493405 * Updated the tmpreaper.conf manpage to document TMPREAPER_DELAY and TMPREAPER_ADDITIONALOPTIONS. closes:#510754 * Added Swedish debconf translation from Martin Bagge. closes:#508753 * Added Japanese debconf translation from Hideki Yamane. closes:#522843 * Added Italian debconf translation from Luca Monducci. closes:#544596 * Updated Standards-Version to 3.8.3.0 (no further change necessary). * Bumped debhelper compat level to 5. -- Paul Slootman Thu, 17 Sep 2009 14:46:44 +0200 tmpreaper (1.6.11) unstable; urgency=low * Really allow --runtime=0 as described in the manpage (previously a minimum of 5 was enforced). -- Paul Slootman Mon, 06 Oct 2008 14:06:54 +0200 tmpreaper (1.6.10) unstable; urgency=low * Updated Czech debconf translation from Miroslav Kure. closes:#439273 * Updated French debconf translation from Michel Grentzinger. * Added Galician debconf translation from Jacobo Tarrio. closes:#481981 * Added Basque debconf translation from Piarres Beobide. closes:#482024 * Added Russian debconf translation from Yuri Kozlov. closes:#482292 * Handle "infinity" in /etc/default/rcS for TMPTIME. closes:#478136 * Properly update the version output from "tmpreaper -h". * Updated Standards-Version to 3.7.3.0 -- Paul Slootman Thu, 22 May 2008 16:23:29 +0200 tmpreaper (1.6.9) unstable; urgency=low * Updated Spanish Debconf translation from Javier Fernández-Sanguino Peña. closes:#438832 * Moving the shell code to the cron.daily script introduced an annoying but harmless bug (tmpreaper doesn't run). Fixed that. closes:#439003 * Updated policy version. -- Paul Slootman Tue, 21 Aug 2007 11:15:57 +0200 tmpreaper (1.6.8) unstable; urgency=low * Shell code has been removed from the tmpreaper.conf file, now only variables are set there. Processing has moved to the cron.daily script, thanks to Mike Fedyk. closes:#196288 * The abovementioned shell code failed if /etc/default/rcS doesn't exist (and hence $TMPTIME wasn't getting set). Applied patch from Maxim Doucet to only check the value if the grep showed it exists (very logical of course :-) closes:#435820 * Let the maximum initial delay before processing be specified via the tmpreaper.conf file, and overridable via the command line when running the cron.daily script manually. closes:#374977 * Corrected logic in checking for conflicting options, by applying patch supplied by Martin Dickopp (thanks!) closes:#353477 * Updated manpage example for protecting X sockets to correspond to what's actually used in the cron.daily script (although both expand to the same thing). Prompted by #383967. * Updated manpage http links to articles as the reasons for tmpreaper's existence. closes:#355889 * Fixed typos in README.security. closes:#370668 * Portuguese Debconf translation from Pedro Ribeiro. closes:#425171 * Updated German Debconf translation from Helge Kreutzmann. closes:#426021 * Spanish Debconf translation from Javier Fernández-Sanguino Peña. closes:#437380 * Give Joey Hess credit for his text I quoted in README.security. closes:#353355 * Updated the language in the debconf template, and fixed a typo. closes:#353261,#401214 -- Paul Slootman Fri, 17 Aug 2007 10:40:24 +0200 tmpreaper (1.6.7) unstable; urgency=low * Non-maintainer upload to fix pending l10n bugs. * Add a binary-indep target to debian/rules. Closes: #395754 * Debconf translations: - German. Closes: #367881 -- Christian Perrier Tue, 13 Feb 2007 22:40:09 +0100 tmpreaper (1.6.6) unstable; urgency=low * Add --runtime option, for those cases where it's known that it may take a very long time to run. Thanks to Jaap Eldering for the patch, although I took a slightly different approach (short option -T instead of -r, as -r is often associated with recursive). closes:#332757 * Check whether a subdirectory is a bind mount on the same file system to prevent unfortunate accidents that won't otherwise be prevented by the "not switching file systems" check. Patch from Eric Lammerts. closes:#237194 * Add alternate dependency of debconf-2.0. closes:#332119 * Updated version string and usage message. closes:#236563 * Using --mtime together with --ctime makes no sense, so check for that combination and bail out if detected. * Added Czech debconf translation, thanks to Miroslav Kure. closes:#273523 * Added Vietnamese debconf translation, thanks to Clytie Siddall. closes:#322312 * Corrected debconf template text. closes:#322311 * "--test --verbose=0 --showdeleted" will now show a list of files and directories that would (probably) have been deleted. closes:#236565 * Updated policy version. -- Paul Slootman Thu, 02 Feb 2006 12:42:15 +0100 tmpreaper (1.6.5) unstable; urgency=low * Use /dev/urandom instead of /dev/random to prevent blocking when entropy pool is empty. This probably makes it harder to subvert the random delay by emptying the entropy pool before the run is scheduled... closes:#216803 * Don't only include fcntl.h on linux, is pretty standard and needed for compilation e.g. on Solaris. * make 'missing' a real file, instead of a symlink to /usr/share/.... * Use ext2_fs.h from e2fs-libs-dev instead of libc6-dev, since the last one is now useless due to changes in the way kernel headers are included there. This means a Build-Depends is added on e2fslibs-dev. closes:#223222 * Fixed manpage, which had not been updated when fixing bug 195262. This is about whether the delay depends on being connected to a tty or not. closes:#222681 * Fixed shell quoting in cron.daily script. ckises:#206106 -- Paul Slootman Mon, 08 Dec 2003 12:50:11 +0100 tmpreaper (1.6.4) unstable; urgency=low * Added fr.po translation of debconf templates. closes:#201340 -- Paul Slootman Mon, 21 Jul 2003 09:56:35 +0200 tmpreaper (1.6.3) unstable; urgency=low * Switched to gettext for the debconf templates, thanks to patch supplied with the bug report. closes:#200581 * Applied patch to fix typos in patch for #200581. closes:#200622 -- Paul Slootman Mon, 14 Jul 2003 13:14:31 +0200 tmpreaper (1.6.2) unstable; urgency=low * Added an TMPREAPER_ADDITIONALOPTIONS variable to tmpreaper.conf for passing additional options (duh) to tmpreaper. closes:#169832 * Added an option --showdeleted to make tmpreaper output what it has done. The output is in the form of shell commands, i.e. "rm /tmp/bla/file", "rmdir /tmp/bla". closes:#174228 * Added an option --delay to make the delay at the beginning of execution configurable, instead of relying on whether stdin is a tty or not. Also added this option to the invocation in the cron.daily script. closes:#195262 * In the daily cron output, mention that /etc/tmpreaper.conf needs to be edited to remove the message about README.security.gz in the daily cron output. closes:#195666 -- Paul Slootman Mon, 2 Jun 2003 10:39:21 +0200 tmpreaper (1.6.1) unstable; urgency=low * Fix handling of large files (the bigger than 2GB ones). closes:#139125 * Don't call autoconf, automake routinely from debian/rules. This only needs to be done when changing something in configure.ac or so. Hence can remove autoconf, automake from build-depends. closes:#137604 * -a option shouldn't expect an argument, so fixed the getopt thing. closes:#137600 * Don't display the warning about having to upgrade the cron.daily script if this is a fresh install. closes:#167783 * Don't let the cron.daily script run by default; the administrator needs to enable it via a setting in /etc/tmpreaper.conf which indicates he/she understands the possible security implications of having tmpreaper run automatically. Also show a debconf note to that affect. closes:#174307 * In /etc/tmpreaper.conf, use the TMPTIME value from /etc/default/rcS if available. This means that the age of files in /tmp is now basically determined in just one place (/etc/default/rcS) instead of two, which is a bit simpler. It may cause some confusion for those who have changed the value in tmpreaper.conf, though; so a debconf note is shown if tmpreaper.conf contains a non-default value. closes:#128585 * When not running from a tty, delay before processing for a random amount of time to make it harder for attackers. * Run for a maximum of 55 seconds, to thwart attackers who try to delay its processing to take advantage to possible race conditions. -- Paul Slootman Wed, 21 May 2003 16:33:04 +0200 tmpreaper (1.6.0) unstable; urgency=low * Added --ctime option to make tmpreaper also check the ctime in addition to the atime. This is useful where the directory is accessible as a Samba share, as DOS PCs (including all the incarnations of Windows) will preserve the original mtime _and_ atime when copying files on such a share. This meant that recently copied files could disappear the next night. This is IMHO significant enough for a minor number bump... closes:#126143 * Added --ctime option to tmpreaper invocation in /etc/cron.daily/tmpreaper * Improved some of the comments in /etc/cron.daily/tmpreaper to more accurately reflect the /etc/tmpreaper.conf situation. * Changed way default settings are done in cron.daily script, so that an empty conf file won't cause the defaults to be skipped. Also part of bug 126143. * Added tmpreaper.conf manpage. * Added german translation to debconf templates. closes:#128896 -- Paul Slootman Tue, 5 Mar 2002 14:42:19 +0100 tmpreaper (1.5.1) unstable; urgency=high * The new automake / autoconf stuff lead to tmpreaper being installed into /usr/bin instead of /usr/sbin, which in turn leads the cron script to never execute tmpreaper. Oops. Hence this fix should be added to the archives ASAP. closes:#124174 * Local additions to the way tmpreaper runs can now be made via the /etc/tmpreaper.conf file, where the file age, extra protect patterns ans which directories to reap can be specified. There's a debconf note now explaining this when tmpreaper is installed. For this, "set -f" is used to prevent the shell from globbing any patterns. AFAIK this is POSIX, ash at least understands this. -- Paul Slootman Sun, 2 Dec 2001 22:59:13 +0100 tmpreaper (1.5.0) unstable; urgency=low * Added getopt.c, getopt1.c, getopt.h so that it can be compiled without difficulty on non-linux systems (tested on Solaris). However, you lose the capability of using braces in your --protect patterns as glob() functions on other (non-linux) platforms don't offer that. Bumped the second number in the version to reflect this significant change. * Added autoconf stuff to figure out whether getopt.c etc. are needed, the braces thing in glob(), and more. Hence also included stuff like INSTALL, missing, and the other autoconf stuff. It now builds and runs on Solaris and NetBSD as well! * Use "exit(x)" instead of "return x" to terminate the forked processes, otherwise weird stuff happened on NetBSD; it seems the processes didn't in fact exit. * Changed priority to optional to comply with the overrides. Last time that change somehow got lost... * Ignore files that are marked immutable in ext2/ext3. This is a more generic workaround for ext3's journal file which now has a new name, and probably also makes sense for other files as well. closes:#122090 * Exclude quota.user and quota.group. Why can't these be stored in a "standard" place (/var/state/quota/ ?)... I see no technical reason why not. Oh well. closes:#100675 -- Paul Slootman Sun, 2 Dec 2001 12:49:03 +0100 tmpreaper (1.4.14) unstable; urgency=low * Changed priority to optional to comply with the overrides. * cron.daily file has /tmp/. instead of /tmp to accomodate /tmp being a symlink to some other directory. closes:#62791 * Patches from Marcus Brinkmann to build on HURD. I hacked around this so that it should work as before on non-glibc systems. closes:#105433 * Added journal.dat to the list of protected files (ext3 journal, Bad Things apparently happen if that is removed). closes:#63655 It took so long for this (trivial) bug to be closed because it was first reported on tmpwatch, and was reassigned to tmpreaper after all discussion had took place. This meant I got zero notification about this bug via email, which sucks. I don't use the web pages very often... -- Paul Slootman Wed, 25 Jul 2001 15:26:04 +0200 tmpreaper (1.4.13) unstable; urgency=medium * close dirhandle after using it. closes:#71660 * fix checking for '.' and '..', which fixes a possibility of a directory being assumed empty while it wasn't. closes:#99507 * Added debhelper to Build-Depends. * Updated Standards-Version: to 3.5. * Added README for non-debian users, and updated LSM entry, and uploaded to sunsite. Also renamed ChangeLog to ChangeLog.old, as that hadn't been updated for sime time. This debian changelog is now the "official" changelog now. -- Paul Slootman Sat, 2 Jun 2001 11:38:09 +0200 tmpreaper (1.4.12) stable unstable; urgency=high * Limit fork recursion to foil deep directory nesting attack. closes:#71249 -- Paul Slootman Tue, 12 Sep 2000 11:56:27 +0200 tmpreaper (1.4.11) unstable; urgency=low * Handle filenames of the form ".a" correctly, not like "..". Oops. closes:#53245 * Exclude lost+found in the example cron script. closes:#53285 -- Paul Slootman Wed, 22 Dec 1999 17:44:21 +0100 tmpreaper (1.4.10) unstable; urgency=low * Updated Standards-Version to 3.0.1. * Fixed a formatting error in the manpage. -- Paul Slootman Wed, 27 Oct 1999 18:22:40 +0200 tmpreaper (1.4.9) unstable; urgency=low * Added --mtime-dir option to use mtime checking for directories only, which don't get removed when atime checking is used (reading the directory updates the atime!). closes:#34522 * Put -mtime-dir into default cron entry. -- Paul Slootman Wed, 7 Apr 1999 09:50:57 +0200 tmpreaper (1.4.8) unstable; urgency=low * New maintainer. * Updated Standards-Version to 2.4.1.4. * Changed priority to extra, as you really only need this package if you have specialised requirements (i.e. a system with untrusted users). * Nothing significant changed, a couple of messages fixed to be more similar to the rest. * Converted C++ - style comments to plain C comments, as this isn't C++ source. -- Paul Slootman Mon, 14 Sep 1998 15:04:09 +0200 tmpreaper (1.4.7) frozen unstable; urgency=low * Apply bugfixes from Jorg Schuler . See ChangeLog. (Fixes:#22903,#22934) * Jorg Schuler's patch also protects `.iroha' and `.ki2' (are they files or sockets?) in /tmp. * New function `dir_empty_p'; check that a dir is empty prior to rmdir(). (Fixes:#22770) -- Karl M. Hegbloom Sat, 30 May 1998 09:15:20 -0700 tmpreaper (1.4.6) frozen unstable; urgency=high * Also send into the freezer with hamm. * Fixed one lintian warning, and one lintian error. -- Karl M. Hegbloom Sun, 17 May 1998 18:59:48 -0700 tmpreaper (1.4.5) unstable; urgency=low * Implement the `--mtime' switch: (Fixes #19519) -- Karl M. Hegbloom Sun, 17 May 1998 17:32:41 -0700 tmpreaper (1.4.4) frozen unstable; urgency=high * (tmpreaper.c): Updated the year in copyright statement. - Added a missing newline to a message string in a rare fatal error. - Remembered args to flag test macros. * (tmpreaper.8): Split the overly complex brace expansion in the example into two separate --protect clauses. (Fixes #22528) * Further changes in ChangeLog. -- Karl M. Hegbloom Sun, 17 May 1998 11:47:47 -0700 tmpreaper (1.4.3-2) unstable; urgency=low * No need to line-buffer stderr. -- Karl M. Hegbloom Tue, 3 Feb 1998 15:59:12 -0800 tmpreaper (1.4.3-1) unstable; urgency=low * Use line-buffered I/O for stdout and stderr, so that even when the output is being piped to a file, it gets flushed after a newline. (see: APUE pp. 189-190) Bug pointed out by Joey Hess . -- Karl M. Hegbloom Mon, 26 Jan 1998 19:55:43 -0800 tmpreaper (1.4.2-1) unstable; urgency=low * Put single quotes around in help output. * Start bumping the right version number. (I'll learn.) -- Karl M. Hegbloom Fri, 23 Jan 1998 03:30:54 -0800 tmpreaper (1.4.1-4) unstable; urgency=low * Removed `-m386 -malign-double' from CFLAGS in Makefile, fixes #16607 * Added `build-stamp' to the `dh_clean' line in `debian/rules clean' Fixes #16608. -- Karl M. Hegbloom Fri, 9 Jan 1998 12:03:07 -0800 tmpreaper (1.4.1-3) unstable; urgency=low * Changed architecture from i386 to any. I should work fine on the non-intel ports. * Address to @debian.org rather than @bittersweet. -- Karl M. Hegbloom Mon, 22 Dec 1997 20:10:25 -0800 tmpreaper (1.4.1-2) unstable; urgency=low * Added `Replaces: tmpwatch' to fix bug #15732 -- Karl M. Hegbloom Tue, 9 Dec 1997 03:09:49 -0800 tmpreaper (1.4.1-1) unstable; urgency=low * Renaming from `tmpwatch' to `tmpreaper' to split away from RedHat, who released a `tmpwatch-1.4' that had zero of the patches I sent them. -- Karl M. Hegbloom Sun, 7 Dec 1997 13:42:03 -0800 tmpwatch (1.4-2) unstable; urgency=low * Put under CVS, and begin to use `cvs-buildpackage', I hope. * Removed `--test' switch in "/etc/cron.daily/tmpwatch" * Updated the description in the control file -- I am letting the installer know about the cron script and what it will do, and am soliciting feedback regarding the cron script. * Moved to section admin, priority optional. Should this be program be base/standard? * RedHat 5.0 is shipping `tmpwatch-1.4'; they've accepted my changes. :-) -- Karl M. Hegbloom Thu, 4 Dec 1997 13:28:27 -0800 tmpwatch (1.4-1) unstable; urgency=low * Default the timespec back to hours, and make it so a suffix can be tacked onto it: `d', `h', `m', or `s' for days, hours, minutes, or seconds. With no suffix, the time is in hours, to remain compatible with `tmpwatch-1.2'. * Update the cron.daily script to use the new syntax, and add `--verbose' for more copious output. * Updated the manual to reflect the change. -- Karl M. Hegbloom Sun, 16 Nov 1997 23:53:44 -0800 tmpwatch (1.3-2) unstable; urgency=low * I goofed and tried to use `' around things in the echo statements of the cron.daily script. It's fixed now, no other changes. -- Karl M. Hegbloom Sat, 15 Nov 1997 17:06:52 -0800 tmpwatch (1.3-1) unstable; urgency=high * Converted from RPMS source format to Debian/GNU/SPI source format using `alien'. * Added "#include " to fix compiler warning. * Wrote a simple "cron.daily" script. * Changed `grace' arg spec from "in hours" to "in seconds". * Added `--help' option and defaulted arg switch to `usage()' * Added "pretending to..." messages when `--test' is defined. * Improved the `message()' function. * Fixed `--test' so it actually functions instead of removing files. * Added `--protect' option to protect files matching a glob pattern from deletion. Meant for preventing the deletion of the X lock file and its Linux domain sockets. * Added `--symlinks' option to have it rm symlinks too. * Made `safe_chdir()' message when it refuses to cross a symlink, instead of defaulting and printing a cryptic message about an "intrusion attempt". * Improved Makefile and debian/rules * Modified manual page to reflect changes, and did some editting. * Much re-working and code reformatting... the diff is larger than the original source. * Please check my work and don't be afraid to report bugs. I'm new at this. -- Karl M. Hegbloom Sat, 15 Nov 1997 16:16:57 -0800 tmpreaper-1.6.13+nmu1+deb9u1build0.16.04.1/debian/control0000664000000000000000000000240713412150756017174 0ustar Source: tmpreaper Section: admin Priority: optional Maintainer: Paul Slootman Standards-Version: 3.8.3.0 Build-Depends: debhelper (>= 5), e2fslibs-dev, po-debconf, libmount-dev Package: tmpreaper Architecture: any Depends: ${shlibs:Depends}, ${misc:Depends}, debconf (>= 0.5.0) | debconf-2.0 Conflicts: tmpwatch Replaces: tmpwatch Description: cleans up files in directories based on their age This package provides a program that can be used to clean out temporary-file directories. It recursively searches the directory, refusing to chdir() across symlinks, and removes files that haven't been accessed in a user-specified amount of time. You can specify a set of files to protect from deletion with a shell pattern. It will not remove files owned by the process EUID that have the `w' bit clear, unless you ask it to, much like `rm -f'. `tmpreaper' will not remove symlinks, sockets, fifos, or special files unless given a command line option enabling it to. . WARNING: Please do not run `tmpreaper' on `/'. There are no protections against this written into the program, as that would prevent it from functioning the way you'd expect it to in a `chroot(8)' environment. . The daily tmpreaper run can be configured through /etc/tmpreaper.conf . tmpreaper-1.6.13+nmu1+deb9u1build0.16.04.1/debian/rules0000775000000000000000000000416511254432407016652 0ustar #!/usr/bin/make -f # -*- makefile -*- package=tmpreaper SHELL := /bin/sh CC = gcc VERSION=$(shell dpkg-parsechangelog 2>/dev/null | perl -ne 'print "$$1_DEB" if /^Version:\s+(.*)/') export VERSION # -------------------------------------------------------------- debian_version = $(shell dpkg-parsechangelog 2>/dev/null \ | sed -n -e 's/^Version: \([[:digit:]]\+:\)*\([^\+]*\).*/\2/p') define check_cvs_status @echo "Checking CVS status for uncommited changes..." @if expr $$(cvs status 2>/dev/null \ | grep '^File:' \ | grep -vc 'Up-to-date') \ '>' 0; \ then \ echo "There are uncommited changes."; \ exit 1; \ else \ echo "done." \ exit 0; \ fi endef retag: $(check_cvs_status) cvs -Q tag -F debian_version_$(subst .,_,$(debian_version)) .PHONY: retag # ====================================================================== build: build-stamp build-stamp: dh_testdir ./configure --prefix=/usr --mandir=/usr/share/man make CPPFLAGS="-DDEBIAN" tmpreaper ./tmpreaper -h 2>&1 | grep 'tmpreaper -- Version: '$(debian_version)-DEB || (echo "You forgot to fix the VERSION in configure.ac!"; exit 1) touch build-stamp clean: dh_testdir dh_testroot -[ -s Makefile ] && $(MAKE) clean mostlyclean-am # automake # autoconf -[ -s Makefile ] && $(MAKE) clean dh_clean stamp-h config.status config.log config.h Makefile build-stamp tmpreaper tmpreaper.8 stamp-h.in debconf-updatepo sleep 1 touch stamp-h.in binary-arch: build dh_testdir dh_testroot dh_clean -k dh_installdirs $(MAKE) DESTDIR=debian/tmpreaper install dh_installdocs dh_installcron dh_installdebconf install -m 644 debian/tmpreaper.conf debian/tmpreaper/etc install -m 644 debian/tmpreaper.conf.5 debian/tmpreaper/usr/share/man/man5 install -m 644 debian/README.security debian/tmpreaper/usr/share/doc/tmpreaper # dh_installmanpages dh_installchangelogs dh_strip dh_compress dh_fixperms dh_installdeb dh_shlibdeps dh_gencontrol dh_md5sums dh_builddeb binary: binary-arch binary-indep: @# dummy target, required by policy (see #395754) @: .PHONY: build clean binary-arch binary binary-indep tmpreaper-1.6.13+nmu1+deb9u1build0.16.04.1/debian/compat0000664000000000000000000000000211254442274016765 0ustar 5 tmpreaper-1.6.13+nmu1+deb9u1build0.16.04.1/debian/cron.daily0000775000000000000000000000757611014332170017561 0ustar #!/bin/sh PATH=/usr/sbin:/usr/bin:/sbin:/bin # in case of `dpkg -r' leaving conffile. if ! [ -x /usr/sbin/tmpreaper ]; then exit 0 fi # Remove `/tmp/...' files not accessed in X time (configured in # /etc/tmpreaper.conf, default 7 days), protecting the .X, .ICE, .iroha and # .ki2 files; but removing symlinks. For directories not the access time, but # the modification time is used (--mtime-dir), as reading a directory to check # the contents will update the access time! # # In the default, /tmp/. is used, not the plain /tmp you might expect, as this # accomodates the situation where /tmp is a symlink to some other place. # # Note that the sockets are safe even without the `--protect', unless `--all' # is given, and the `.X*-lock' files would be safe also, as long as they have # no write permissions, so this particular protect is mainly illustrative, and # redundant. For best results, don't try to get fancy with the moustache # expansions. KISS. Always --test your protect patterns. # # Immutable files (such as ext3fs' .journal) are not (cannot be) removed; # when such a file is encountered when trying to remove it, no error is given # unless you use the --verbose option in which case a message is given. # # In case you're wondering: .iroha is for cannaserver and .ki2 is for kinput2 # (japanese software, lock files). # journal.dat is for (older) ext3 filesystems # quota.user, quota.group is for (duh) quotas. # Set config defaults SHOWWARNING='' # get the TMPREAPER_TIME value from /etc/default/rcS if grep '^TMPTIME=' /etc/default/rcS >/dev/null 2>&1; then eval $(grep '^TMPTIME=' /etc/default/rcS) if [ -n "$TMPTIME" ]; then # Don't clean files if TMPTIME is negative or 'infinite' # to mimic the way /lib/init/bootclean.sh works. case "$TMPTIME" in -*|infinite|infinity) # don't use this as default ;; *) if [ "$TMPTIME" -gt 0 ]; then TMPREAPER_TIME=${TMPTIME}d else TMPREAPER_TIME=7d fi ;; esac fi fi # ! Important ! The "set -f" below prevents the shell from expanding # file paths, which is vital for the configuration below to work. set -f # preserve environment setting of TMPREAPER_DELAY to allow manual override when # running the cron.daily script by hand: if [ -n "$TMPREAPER_DELAY" ]; then # check for digits only case "$TMPREAPER_DELAY" in [0-9]*) TMPREAPER_DELAY_SAVED="$TMPREAPER_DELAY";; *) ;; esac fi if [ -s /etc/tmpreaper.conf ]; then . /etc/tmpreaper.conf fi # Now restore the saved value of TMPREAPER_DELAY (if any): if [ -n "$TMPREAPER_DELAY_SAVED" ]; then TMPREAPER_DELAY="$TMPREAPER_DELAY_SAVED" else # set default in case it's not given in tmpreaper.conf: TMPREAPER_DELAY=${TMPREAPER_DELAY:-256} fi if [ "$SHOWWARNING" = true ]; then echo "Please read /usr/share/doc/tmpreaper/README.security.gz first;" echo "edit /etc/tmpreaper.conf to remove this message (look for SHOWWARNING)." exit 0 fi # Verify that these variables are set, and if not, set them to default values # This will work even if the required lines are not specified in the included # file above, but the file itself does exist. TMPREAPER_TIME=${TMPREAPER_TIME:-7d} TMPREAPER_PROTECT_EXTRA=${TMPREAPER_PROTECT_EXTRA:-''} TMPREAPER_DIRS=${TMPREAPER_DIRS:-'/tmp/.'} nice -n10 tmpreaper --delay=$TMPREAPER_DELAY --mtime-dir --symlinks $TMPREAPER_TIME \ $TMPREAPER_ADDITIONALOPTIONS \ --ctime \ --protect '/tmp/.X*-{lock,unix,unix/*}' \ --protect '/tmp/.ICE-{unix,unix/*}' \ --protect '/tmp/.iroha_{unix,unix/*}' \ --protect '/tmp/.ki2-{unix,unix/*}' \ --protect '/tmp/lost+found' \ --protect '/tmp/journal.dat' \ --protect '/tmp/quota.{user,group}' \ `for i in $TMPREAPER_PROTECT_EXTRA; do echo --protect "$i"; done` \ $TMPREAPER_DIRS tmpreaper-1.6.13+nmu1+deb9u1build0.16.04.1/install-sh0000775000000000000000000001273607363706726016375 0ustar #!/bin/sh # # install - install a program, script, or datafile # This comes from X11R5 (mit/util/scripts/install.sh). # # Copyright 1991 by the Massachusetts Institute of Technology # # Permission to use, copy, modify, distribute, and sell this software and its # documentation for any purpose is hereby granted without fee, provided that # the above copyright notice appear in all copies and that both that # copyright notice and this permission notice appear in supporting # documentation, and that the name of M.I.T. not be used in advertising or # publicity pertaining to distribution of the software without specific, # written prior permission. M.I.T. makes no representations about the # suitability of this software for any purpose. It is provided "as is" # without express or implied warranty. # # Calling this script install-sh is preferred over install.sh, to prevent # `make' implicit rules from creating a file called install from it # when there is no Makefile. # # This script is compatible with the BSD install script, but was written # from scratch. It can only install one file at a time, a restriction # shared with many OS's install programs. # set DOITPROG to echo to test this script # Don't use :- since 4.3BSD and earlier shells don't like it. doit="${DOITPROG-}" # put in absolute paths if you don't have them in your path; or use env. vars. mvprog="${MVPROG-mv}" cpprog="${CPPROG-cp}" chmodprog="${CHMODPROG-chmod}" chownprog="${CHOWNPROG-chown}" chgrpprog="${CHGRPPROG-chgrp}" stripprog="${STRIPPROG-strip}" rmprog="${RMPROG-rm}" mkdirprog="${MKDIRPROG-mkdir}" transformbasename="" transform_arg="" instcmd="$mvprog" chmodcmd="$chmodprog 0755" chowncmd="" chgrpcmd="" stripcmd="" rmcmd="$rmprog -f" mvcmd="$mvprog" src="" dst="" dir_arg="" while [ x"$1" != x ]; do case $1 in -c) instcmd="$cpprog" shift continue;; -d) dir_arg=true shift continue;; -m) chmodcmd="$chmodprog $2" shift shift continue;; -o) chowncmd="$chownprog $2" shift shift continue;; -g) chgrpcmd="$chgrpprog $2" shift shift continue;; -s) stripcmd="$stripprog" shift continue;; -t=*) transformarg=`echo $1 | sed 's/-t=//'` shift continue;; -b=*) transformbasename=`echo $1 | sed 's/-b=//'` shift continue;; *) if [ x"$src" = x ] then src=$1 else # this colon is to work around a 386BSD /bin/sh bug : dst=$1 fi shift continue;; esac done if [ x"$src" = x ] then echo "install: no input file specified" exit 1 else true fi if [ x"$dir_arg" != x ]; then dst=$src src="" if [ -d $dst ]; then instcmd=: chmodcmd="" else instcmd=mkdir fi else # Waiting for this to be detected by the "$instcmd $src $dsttmp" command # might cause directories to be created, which would be especially bad # if $src (and thus $dsttmp) contains '*'. if [ -f $src -o -d $src ] then true else echo "install: $src does not exist" exit 1 fi if [ x"$dst" = x ] then echo "install: no destination specified" exit 1 else true fi # If destination is a directory, append the input filename; if your system # does not like double slashes in filenames, you may need to add some logic if [ -d $dst ] then dst="$dst"/`basename $src` else true fi fi ## this sed command emulates the dirname command dstdir=`echo $dst | sed -e 's,[^/]*$,,;s,/$,,;s,^$,.,'` # Make sure that the destination directory exists. # this part is taken from Noah Friedman's mkinstalldirs script # Skip lots of stat calls in the usual case. if [ ! -d "$dstdir" ]; then defaultIFS=' ' IFS="${IFS-${defaultIFS}}" oIFS="${IFS}" # Some sh's can't handle IFS=/ for some reason. IFS='%' set - `echo ${dstdir} | sed -e 's@/@%@g' -e 's@^%@/@'` IFS="${oIFS}" pathcomp='' while [ $# -ne 0 ] ; do pathcomp="${pathcomp}${1}" shift if [ ! -d "${pathcomp}" ] ; then $mkdirprog "${pathcomp}" else true fi pathcomp="${pathcomp}/" done fi if [ x"$dir_arg" != x ] then $doit $instcmd $dst && if [ x"$chowncmd" != x ]; then $doit $chowncmd $dst; else true ; fi && if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd $dst; else true ; fi && if [ x"$stripcmd" != x ]; then $doit $stripcmd $dst; else true ; fi && if [ x"$chmodcmd" != x ]; then $doit $chmodcmd $dst; else true ; fi else # If we're going to rename the final executable, determine the name now. if [ x"$transformarg" = x ] then dstfile=`basename $dst` else dstfile=`basename $dst $transformbasename | sed $transformarg`$transformbasename fi # don't allow the sed command to completely eliminate the filename if [ x"$dstfile" = x ] then dstfile=`basename $dst` else true fi # Make a temp file name in the proper directory. dsttmp=$dstdir/#inst.$$# # Move or copy the file name to the temp name $doit $instcmd $src $dsttmp && trap "rm -f ${dsttmp}" 0 && # and set any options; do chmod last to preserve setuid bits # If any of these fail, we abort the whole thing. If we want to # ignore errors from any of these, just make sure not to ignore # errors from the above "$doit $instcmd $src $dsttmp" command. if [ x"$chowncmd" != x ]; then $doit $chowncmd $dsttmp; else true;fi && if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd $dsttmp; else true;fi && if [ x"$stripcmd" != x ]; then $doit $stripcmd $dsttmp; else true;fi && if [ x"$chmodcmd" != x ]; then $doit $chmodcmd $dsttmp; else true;fi && # Now rename the file to the real destination. $doit $rmcmd -f $dstdir/$dstfile && $doit $mvcmd $dsttmp $dstdir/$dstfile fi && exit 0 tmpreaper-1.6.13+nmu1+deb9u1build0.16.04.1/Makefile.in0000664000000000000000000006620013414145500016406 0ustar # Makefile.in generated by automake 1.15.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2017 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : sbin_PROGRAMS = tmpreaper$(EXEEXT) subdir = . ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(top_srcdir)/configure \ $(am__configure_deps) $(am__DIST_COMMON) am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \ configure.lineno config.status.lineno mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs CONFIG_HEADER = config.h CONFIG_CLEAN_FILES = tmpreaper.8 CONFIG_CLEAN_VPATH_FILES = am__installdirs = "$(DESTDIR)$(sbindir)" "$(DESTDIR)$(man8dir)" PROGRAMS = $(sbin_PROGRAMS) am__tmpreaper_SOURCES_DIST = tmpreaper.c getopt.c getopt1.c @HAVE_GETOPT_LONG_FALSE@am_tmpreaper_OBJECTS = tmpreaper.$(OBJEXT) \ @HAVE_GETOPT_LONG_FALSE@ getopt.$(OBJEXT) getopt1.$(OBJEXT) @HAVE_GETOPT_LONG_TRUE@am_tmpreaper_OBJECTS = tmpreaper.$(OBJEXT) tmpreaper_OBJECTS = $(am_tmpreaper_OBJECTS) tmpreaper_LDADD = $(LDADD) AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ depcomp = $(SHELL) $(top_srcdir)/depcomp am__depfiles_maybe = depfiles am__mv = mv -f COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_@AM_V@) am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) am__v_CC_0 = @echo " CC " $@; am__v_CC_1 = CCLD = $(CC) LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) am__v_CCLD_0 = @echo " CCLD " $@; am__v_CCLD_1 = SOURCES = $(tmpreaper_SOURCES) DIST_SOURCES = $(am__tmpreaper_SOURCES_DIST) am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__uninstall_files_from_dir = { \ test -z "$$files" \ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ $(am__cd) "$$dir" && rm -f $$files; }; \ } man8dir = $(mandir)/man8 NROFF = nroff MANS = $(man_MANS) am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) \ $(LISP)config.h.in # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags CSCOPE = cscope AM_RECURSIVE_TARGETS = cscope am__DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/config.h.in \ $(srcdir)/tmpreaper.8.in COPYING ChangeLog INSTALL README \ compile depcomp install-sh missing mkinstalldirs DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) distdir = $(PACKAGE)-$(VERSION) top_distdir = $(distdir) am__remove_distdir = \ if test -d "$(distdir)"; then \ find "$(distdir)" -type d ! -perm -200 -exec chmod u+w {} ';' \ && rm -rf "$(distdir)" \ || { sleep 5 && rm -rf "$(distdir)"; }; \ else :; fi am__post_remove_distdir = $(am__remove_distdir) DIST_ARCHIVES = $(distdir).tar.gz GZIP_ENV = --best DIST_TARGETS = dist-gzip distuninstallcheck_listfiles = find . -type f -print am__distuninstallcheck_listfiles = $(distuninstallcheck_listfiles) \ | sed 's|^\./|$(prefix)/|' | grep -v '$(infodir)/dir$$' distcleancheck_listfiles = find . -type f -print ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ GREP = @GREP@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LDFLAGS = @LDFLAGS@ LIBMOUNT = @LIBMOUNT@ LIBOBJS = @LIBOBJS@ LIBS = @LIBMOUNT@ LTLIBOBJS = @LTLIBOBJS@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build_alias = @build_alias@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host_alias = @host_alias@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ AUTOMAKE_OPTIONS = foreign man_MANS = tmpreaper.8 @HAVE_GETOPT_LONG_FALSE@tmpreaper_SOURCES = tmpreaper.c getopt.c getopt1.c @HAVE_GETOPT_LONG_TRUE@tmpreaper_SOURCES = tmpreaper.c all: config.h $(MAKE) $(AM_MAKEFLAGS) all-am .SUFFIXES: .SUFFIXES: .c .o .obj am--refresh: Makefile @: $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ echo ' cd $(srcdir) && $(AUTOMAKE) --foreign'; \ $(am__cd) $(srcdir) && $(AUTOMAKE) --foreign \ && exit 0; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ echo ' $(SHELL) ./config.status'; \ $(SHELL) ./config.status;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) $(SHELL) ./config.status --recheck $(top_srcdir)/configure: $(am__configure_deps) $(am__cd) $(srcdir) && $(AUTOCONF) $(ACLOCAL_M4): $(am__aclocal_m4_deps) $(am__cd) $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS) $(am__aclocal_m4_deps): config.h: stamp-h1 @test -f $@ || rm -f stamp-h1 @test -f $@ || $(MAKE) $(AM_MAKEFLAGS) stamp-h1 stamp-h1: $(srcdir)/config.h.in $(top_builddir)/config.status @rm -f stamp-h1 cd $(top_builddir) && $(SHELL) ./config.status config.h $(srcdir)/config.h.in: $(am__configure_deps) ($(am__cd) $(top_srcdir) && $(AUTOHEADER)) rm -f stamp-h1 touch $@ distclean-hdr: -rm -f config.h stamp-h1 tmpreaper.8: $(top_builddir)/config.status $(srcdir)/tmpreaper.8.in cd $(top_builddir) && $(SHELL) ./config.status $@ install-sbinPROGRAMS: $(sbin_PROGRAMS) @$(NORMAL_INSTALL) @list='$(sbin_PROGRAMS)'; test -n "$(sbindir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(sbindir)'"; \ $(MKDIR_P) "$(DESTDIR)$(sbindir)" || exit 1; \ fi; \ for p in $$list; do echo "$$p $$p"; done | \ sed 's/$(EXEEXT)$$//' | \ while read p p1; do if test -f $$p \ ; then echo "$$p"; echo "$$p"; else :; fi; \ done | \ sed -e 'p;s,.*/,,;n;h' \ -e 's|.*|.|' \ -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \ sed 'N;N;N;s,\n, ,g' | \ $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \ { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ if ($$2 == $$4) files[d] = files[d] " " $$1; \ else { print "f", $$3 "/" $$4, $$1; } } \ END { for (d in files) print "f", d, files[d] }' | \ while read type dir files; do \ if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ test -z "$$files" || { \ echo " $(INSTALL_PROGRAM_ENV) $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(sbindir)$$dir'"; \ $(INSTALL_PROGRAM_ENV) $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(sbindir)$$dir" || exit $$?; \ } \ ; done uninstall-sbinPROGRAMS: @$(NORMAL_UNINSTALL) @list='$(sbin_PROGRAMS)'; test -n "$(sbindir)" || list=; \ files=`for p in $$list; do echo "$$p"; done | \ sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \ -e 's/$$/$(EXEEXT)/' \ `; \ test -n "$$list" || exit 0; \ echo " ( cd '$(DESTDIR)$(sbindir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(sbindir)" && rm -f $$files clean-sbinPROGRAMS: -test -z "$(sbin_PROGRAMS)" || rm -f $(sbin_PROGRAMS) tmpreaper$(EXEEXT): $(tmpreaper_OBJECTS) $(tmpreaper_DEPENDENCIES) $(EXTRA_tmpreaper_DEPENDENCIES) @rm -f tmpreaper$(EXEEXT) $(AM_V_CCLD)$(LINK) $(tmpreaper_OBJECTS) $(tmpreaper_LDADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getopt.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getopt1.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tmpreaper.Po@am__quote@ .c.o: @am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< .c.obj: @am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` install-man8: $(man_MANS) @$(NORMAL_INSTALL) @list1=''; \ list2='$(man_MANS)'; \ test -n "$(man8dir)" \ && test -n "`echo $$list1$$list2`" \ || exit 0; \ echo " $(MKDIR_P) '$(DESTDIR)$(man8dir)'"; \ $(MKDIR_P) "$(DESTDIR)$(man8dir)" || exit 1; \ { for i in $$list1; do echo "$$i"; done; \ if test -n "$$list2"; then \ for i in $$list2; do echo "$$i"; done \ | sed -n '/\.8[a-z]*$$/p'; \ fi; \ } | while read p; do \ if test -f $$p; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; echo "$$p"; \ done | \ sed -e 'n;s,.*/,,;p;h;s,.*\.,,;s,^[^8][0-9a-z]*$$,8,;x' \ -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,' | \ sed 'N;N;s,\n, ,g' | { \ list=; while read file base inst; do \ if test "$$base" = "$$inst"; then list="$$list $$file"; else \ echo " $(INSTALL_DATA) '$$file' '$(DESTDIR)$(man8dir)/$$inst'"; \ $(INSTALL_DATA) "$$file" "$(DESTDIR)$(man8dir)/$$inst" || exit $$?; \ fi; \ done; \ for i in $$list; do echo "$$i"; done | $(am__base_list) | \ while read files; do \ test -z "$$files" || { \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(man8dir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(man8dir)" || exit $$?; }; \ done; } uninstall-man8: @$(NORMAL_UNINSTALL) @list=''; test -n "$(man8dir)" || exit 0; \ files=`{ for i in $$list; do echo "$$i"; done; \ l2='$(man_MANS)'; for i in $$l2; do echo "$$i"; done | \ sed -n '/\.8[a-z]*$$/p'; \ } | sed -e 's,.*/,,;h;s,.*\.,,;s,^[^8][0-9a-z]*$$,8,;x' \ -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,'`; \ dir='$(DESTDIR)$(man8dir)'; $(am__uninstall_files_from_dir) ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-am TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-am CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscope: cscope.files test ! -s cscope.files \ || $(CSCOPE) -b -q $(AM_CSCOPEFLAGS) $(CSCOPEFLAGS) -i cscope.files $(CSCOPE_ARGS) clean-cscope: -rm -f cscope.files cscope.files: clean-cscope cscopelist cscopelist: cscopelist-am cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags -rm -f cscope.out cscope.in.out cscope.po.out cscope.files distdir: $(DISTFILES) $(am__remove_distdir) test -d "$(distdir)" || mkdir "$(distdir)" @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done -test -n "$(am__skip_mode_fix)" \ || find "$(distdir)" -type d ! -perm -755 \ -exec chmod u+rwx,go+rx {} \; -o \ ! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \ ! -type d ! -perm -400 -exec chmod a+r {} \; -o \ ! -type d ! -perm -444 -exec $(install_sh) -c -m a+r {} {} \; \ || chmod -R a+r "$(distdir)" dist-gzip: distdir tardir=$(distdir) && $(am__tar) | eval GZIP= gzip $(GZIP_ENV) -c >$(distdir).tar.gz $(am__post_remove_distdir) dist-bzip2: distdir tardir=$(distdir) && $(am__tar) | BZIP2=$${BZIP2--9} bzip2 -c >$(distdir).tar.bz2 $(am__post_remove_distdir) dist-lzip: distdir tardir=$(distdir) && $(am__tar) | lzip -c $${LZIP_OPT--9} >$(distdir).tar.lz $(am__post_remove_distdir) dist-xz: distdir tardir=$(distdir) && $(am__tar) | XZ_OPT=$${XZ_OPT--e} xz -c >$(distdir).tar.xz $(am__post_remove_distdir) dist-tarZ: distdir @echo WARNING: "Support for distribution archives compressed with" \ "legacy program 'compress' is deprecated." >&2 @echo WARNING: "It will be removed altogether in Automake 2.0" >&2 tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z $(am__post_remove_distdir) dist-shar: distdir @echo WARNING: "Support for shar distribution archives is" \ "deprecated." >&2 @echo WARNING: "It will be removed altogether in Automake 2.0" >&2 shar $(distdir) | eval GZIP= gzip $(GZIP_ENV) -c >$(distdir).shar.gz $(am__post_remove_distdir) dist-zip: distdir -rm -f $(distdir).zip zip -rq $(distdir).zip $(distdir) $(am__post_remove_distdir) dist dist-all: $(MAKE) $(AM_MAKEFLAGS) $(DIST_TARGETS) am__post_remove_distdir='@:' $(am__post_remove_distdir) # This target untars the dist file and tries a VPATH configuration. Then # it guarantees that the distribution is self-contained by making another # tarfile. distcheck: dist case '$(DIST_ARCHIVES)' in \ *.tar.gz*) \ eval GZIP= gzip $(GZIP_ENV) -dc $(distdir).tar.gz | $(am__untar) ;;\ *.tar.bz2*) \ bzip2 -dc $(distdir).tar.bz2 | $(am__untar) ;;\ *.tar.lz*) \ lzip -dc $(distdir).tar.lz | $(am__untar) ;;\ *.tar.xz*) \ xz -dc $(distdir).tar.xz | $(am__untar) ;;\ *.tar.Z*) \ uncompress -c $(distdir).tar.Z | $(am__untar) ;;\ *.shar.gz*) \ eval GZIP= gzip $(GZIP_ENV) -dc $(distdir).shar.gz | unshar ;;\ *.zip*) \ unzip $(distdir).zip ;;\ esac chmod -R a-w $(distdir) chmod u+w $(distdir) mkdir $(distdir)/_build $(distdir)/_build/sub $(distdir)/_inst chmod a-w $(distdir) test -d $(distdir)/_build || exit 0; \ dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \ && dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \ && am__cwd=`pwd` \ && $(am__cd) $(distdir)/_build/sub \ && ../../configure \ $(AM_DISTCHECK_CONFIGURE_FLAGS) \ $(DISTCHECK_CONFIGURE_FLAGS) \ --srcdir=../.. --prefix="$$dc_install_base" \ && $(MAKE) $(AM_MAKEFLAGS) \ && $(MAKE) $(AM_MAKEFLAGS) dvi \ && $(MAKE) $(AM_MAKEFLAGS) check \ && $(MAKE) $(AM_MAKEFLAGS) install \ && $(MAKE) $(AM_MAKEFLAGS) installcheck \ && $(MAKE) $(AM_MAKEFLAGS) uninstall \ && $(MAKE) $(AM_MAKEFLAGS) distuninstallcheck_dir="$$dc_install_base" \ distuninstallcheck \ && chmod -R a-w "$$dc_install_base" \ && ({ \ (cd ../.. && umask 077 && mkdir "$$dc_destdir") \ && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" install \ && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" uninstall \ && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" \ distuninstallcheck_dir="$$dc_destdir" distuninstallcheck; \ } || { rm -rf "$$dc_destdir"; exit 1; }) \ && rm -rf "$$dc_destdir" \ && $(MAKE) $(AM_MAKEFLAGS) dist \ && rm -rf $(DIST_ARCHIVES) \ && $(MAKE) $(AM_MAKEFLAGS) distcleancheck \ && cd "$$am__cwd" \ || exit 1 $(am__post_remove_distdir) @(echo "$(distdir) archives ready for distribution: "; \ list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \ sed -e 1h -e 1s/./=/g -e 1p -e 1x -e '$$p' -e '$$x' distuninstallcheck: @test -n '$(distuninstallcheck_dir)' || { \ echo 'ERROR: trying to run $@ with an empty' \ '$$(distuninstallcheck_dir)' >&2; \ exit 1; \ }; \ $(am__cd) '$(distuninstallcheck_dir)' || { \ echo 'ERROR: cannot chdir into $(distuninstallcheck_dir)' >&2; \ exit 1; \ }; \ test `$(am__distuninstallcheck_listfiles) | wc -l` -eq 0 \ || { echo "ERROR: files left after uninstall:" ; \ if test -n "$(DESTDIR)"; then \ echo " (check DESTDIR support)"; \ fi ; \ $(distuninstallcheck_listfiles) ; \ exit 1; } >&2 distcleancheck: distclean @if test '$(srcdir)' = . ; then \ echo "ERROR: distcleancheck can only run from a VPATH build" ; \ exit 1 ; \ fi @test `$(distcleancheck_listfiles) | wc -l` -eq 0 \ || { echo "ERROR: files left in build directory after distclean:" ; \ $(distcleancheck_listfiles) ; \ exit 1; } >&2 check-am: all-am check: check-am all-am: Makefile $(PROGRAMS) $(MANS) config.h installdirs: for dir in "$(DESTDIR)$(sbindir)" "$(DESTDIR)$(man8dir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-sbinPROGRAMS mostlyclean-am distclean: distclean-am -rm -f $(am__CONFIG_DISTCLEAN_FILES) -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-hdr distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-man install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-sbinPROGRAMS install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-man8 install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f $(am__CONFIG_DISTCLEAN_FILES) -rm -rf $(top_srcdir)/autom4te.cache -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-man uninstall-sbinPROGRAMS uninstall-man: uninstall-man8 .MAKE: all install-am install-strip .PHONY: CTAGS GTAGS TAGS all all-am am--refresh check check-am clean \ clean-cscope clean-generic clean-sbinPROGRAMS cscope \ cscopelist-am ctags ctags-am dist dist-all dist-bzip2 \ dist-gzip dist-lzip dist-shar dist-tarZ dist-xz dist-zip \ distcheck distclean distclean-compile distclean-generic \ distclean-hdr distclean-tags distcleancheck distdir \ distuninstallcheck dvi dvi-am html html-am info info-am \ install install-am install-data install-data-am install-dvi \ install-dvi-am install-exec install-exec-am install-html \ install-html-am install-info install-info-am install-man \ install-man8 install-pdf install-pdf-am install-ps \ install-ps-am install-sbinPROGRAMS install-strip installcheck \ installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-compile \ mostlyclean-generic pdf pdf-am ps ps-am tags tags-am uninstall \ uninstall-am uninstall-man uninstall-man8 \ uninstall-sbinPROGRAMS .PRECIOUS: Makefile # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: tmpreaper-1.6.13+nmu1+deb9u1build0.16.04.1/tmpreaper.8.in0000664000000000000000000002266613414146023017047 0ustar .TH TMPREAPER 8 "Sat Jan 5 2019" .UC 4 .SH NAME tmpreaper \- removes files which haven't been accessed for a period of time .SH SYNOPSIS \fBtmpreaper\fR [\-htvfmMsaT] [\-\-help] [\-\-test] [\-\-verbose] [\-\-force] [\-\-delay=x] [\-\-runtime=x] [\-\-showdeleted] [\-\-ctime] [\-\-mtime] [\-\-mtime-dir] [\-\-symlinks] [\-\-all] [[\-\-protect '']...] ... .SH DESCRIPTION \fBtmpreaper\fR recursively searches for and removes files and empty directories which haven't been accessed for a given number of seconds. Normally, it's used to clean up directories which are used for temporary holding space, such as "/tmp". Please read the \fBWARNINGS\fR section of this manual. When changing directories, \fBtmpreaper\fR is very sensitive to possible race condition security exploits[1], and will exit with an error if one is detected. It does not follow symbolic links in the directories it's cleaning (even if a symbolic link is given as its argument), never performs \fBchdir("..")\fR, will not switch file systems, and only removes empty directories and regular files. Unless your machine is one with lots of relatively untrusted users, such as an ISP or school, you don't need this program; `find ... -exec rm ...' works just as well when you don't have to be concerned about people trying to exploit the race condition on you. \fBtmpreaper\fR will stop itself after almost one minute with an appropriate warning message, as attempts to keep it running long enough so that it runs in parallel with another instance of itself may also lead to possible vulnerabilities. Normally, \fBtmpreaper\fR won't need that amount of time. If your system is so slow that it does, try to configure things so that this doesn't happen. As a last resort, the \fB\-\-runtime=x\fR option can be used to set the number of seconds after which the timeout occurs; the default setting is 55 seconds. \fBtmpreaper\fR dates files by their \fIatime\fR, not their \fImtime\fR, unless you select the \fB\-\-mtime\fR option. If files aren't being removed when \fBls \-l\fR implies they should be, use \fBstat(1)\fR or \fBls \-\-time=access\fR to examine the file's \fIatime\fR and see if that helps to explain the problem. Additionally, \fBtmpreaper\fR can be instructed to also check the \fIctime\fR (inode change time, which is updated e.g. when the file is created or permissions are changed). This is primarily useful when \fBtmpreaper\fR is used to clean up directories that are accessible as a Samba share; DOS (and Windows) PCs preserve the \fImtime\fR and the \fIatime\fR when copying to a new file, so that it appears that the newly created file is old. \fBtmpreaper\fR will remove such files is the \fIatime\fR is beyond the removal time, even though they were just created. This is avoided by using the \fB\-\-ctime\fR option. As testing the contents of subdirectories will update those directories' \fIatime\fR, empty directories won't be removed. To circumvent this problem you can use the \fB\-\-mtime\-dir\fR option, which will switch on \fImtime\fR checking for directories only. Using \fB\-\-mtime\-dir\fR in addition to \fB-\-mtime\fR doesn't do anything useful. The \fI\fR parameter defines the age threshold for removing files. If the file has not been accessed for \fI\fR, it becomes eligible for removal. The \fI\fR should be a number, defaulting to hours, optionally suffixed by one character: `d' for days, `h' for hours, `m' for minutes, or `s' for seconds. Following the time option, one or more directories must be given for \fBtmpreaper\fR to clean up. On linux ext2/ext3/ext4 filesystems, no errors will be given when trying to remove files marked as immutable. A common situation for this was the ext3 .journal file. However, there may of course be other files marked as such by the system administrator. .SH OPTIONS .TP \fB, \-h, \-\-help\fR Print a brief version, copyright, and usage statement on stderr, then exit with error status 1. .TP \fB\-t, \-\-test\fR Don't actually remove any files, but go through the motions, checking through the directory, then pretend to remove the eligible files. .TP \fB\-v, \-\-verbose\fR Print a verbose display. Two levels of verbosity are available---use this option twice to get the most verbose output. The \fB\-\-test\fR option automaticly sets \fB\-\-verbose\fR once. .br Higher numbers mean more output (max. is 3). .br To force normal verbosity after \fB\-\-test\fR, use "\-\-verbose=0". This will generally only show error messages. Use "\-\-test \-\-verbose=0 \-\-showdeleted" to give a shellscript-like list of actions that would have been done (see the \fB\-\-showdeleted\fR description below). .TP \fB\-\-showdeleted\fR Show what files and directories are deleted. The output is in the form of shell commands, i.e. "rm /dir/dir2/file" and "rmdir /dir/dir2". .br When used together with \-\-test, this option will still cause the "shell commands" to be printed, although nothing is really done. Note that this may show more than without \-\-test, as problems removing the file won't be detected (e.g. immutable files). .TP \fB\-f, \-\-force\fR Remove files even if EUID doesn't have write access (\fIakin to \fBrm -f\fR). Normally, files owned by the current EUID, with no write bit set are not removed. .TP \fB\-\-delay=x\fR Delay execution at the start for a random time, up to \fIx\fR seconds; if no value is specified, the default maximum time to delay is 256 seconds. This is an option useful in cron scripts to make the execution of tmpreaper less predictable, thus making things a little harder for those who would attempt to use tmpreaper to thwart security. .TP \fB\-T x, \-\-runtime=x\fR Execution of tmpreaper will aborted after \fIx\fR seconds; this is to prevent attacks that create many, many files. By default the timeout is set to 55 seconds. A value of 0 will disable this feature, which is not advised as this feature prevents possible race-conditions between different instances of \fBtmpreaper\fR. .TP \fB\-m, \-\-mtime\fR Base the decision of whether to remove the file on its \fImtime\fR, rather than on its \fIatime\fR. .TP \fB\-M, \-\-mtime-dir\fR Base the decision of whether to remove the directory on its \fImtime\fR, rather than on its \fIatime\fR. .TP \fB\-c, \-\-ctime\fR Base the decision of whether to remove the file on its \fIctime\fR, \fBin addition to\fR its \fIatime\fR. Only applicable if the \fB\-\-mtime\fR options is not given! .TP \fB\-s, \-\-symlinks\fR Remove symlinks too, not just regular files and directories. .TP \fB\-a, \-\-all\fR Remove all file types, not just regular files, symlinks, and directories. .TP \fB\-\-protect \fI''\fR Protect the files that match the \fI\fR from deletion. This option may be used more than once. It has no one letter abbreviation, you must spell out the full word "protect". If you do not enclose the \fI\fR in single quotes, the shell will perform the expansion before \fBtmpreaper\fR reads its argument array. The program does not support that syntax, so you \fImust\fR use single quotes around the glob pattern. \fBtmpreaper\fR will \fIchdir(2)\fR into each of the directories you've specified for cleanup, and check for files matching the \fI\fR there. It then builds a list of them, and uses that to protect them from removal. For example: \fBtmpreaper\fR \-\-test \-\-verbose \-\-protect \\ '.X*\-{lock,unix,unix/*}' \-\-protect '.ICE\-{unix{/*,}}' \\ 5d /tmp # 5 day grace period .SH TIPS As long as there are files present inside a subdirectory, it won't get removed. You can use a non-writable, self-owned file, perhaps named ".tmpreaper", or, if you are su, a file that has the ext2fs \fIimmutable\fR attribute set, to keep a subdirectory from being deleted. Of course, you could just as easily use use the \fB\-\-protect\fR option to obtain the same result. Because the command line argument processing is implemented with GNU \fBgetopt_long(3)\fR[2], you may order the arguments thusly, if it pleases you: \fBtmpreaper\fR \-\-test \-\-verbose 5h \\ \-\-protect './tmp/{blah?,dir{/blah4,}}' ./tmp \\ \-\-protect '/tmp/.X*' /tmp ... Note that if you use \fB\-\-all\fR or \fB\-\-symlinks\fR, it will have global effect. If you only want it turned on for one directory, you must use separate commands. .SH WARNINGS \fBPlease do not ever run \fBtmpreaper\fR on `/'!!!\fR There are no safeguards against this built into the program, because that would make it difficult to use in a chrooted environment. .\" Note that using braces in the patterns as shown above only work .\" if the glob() function on your system understands them. .\" Yours apparently doesn't (at least, it wasn't detected during .\" compilation). .\" Write out the patterns explicitly: "--protect "/tmp/X*-{lock,unix}" .\" becomes "--protect /tmp/X*-lock --protect /tmp/X*-unix" . .SH SEE ALSO .IR chattr (1) .IR chdir (2) .IR chroot (8) .IR cron (1) .IR getopt_long (3) .IR ls (1) .IR lsattr (1) .IR rm (1) .IR stat (1) .nf [1] http://seclists.org/lists/bugtraq/1996/May/0046.html or http://www.security-express.com/archives/bugtraq/1996_2/0054.html http://linuxgazette.net/18/tmp.html (formerly http://www.linuxgazette.com/issue18/tmp.html) http://linuxgazette.net/20/followup.html .fi [2] info:(libc)Long Options .SH AUTHOR .nf Karl M. Hegbloom .fi Mostly based on `tmpwatch-1.2/1.4', by: .nf Erik Troan .fi Now being maintained for Debian by: .nf Paul Slootman .fi tmpreaper-1.6.13+nmu1+deb9u1build0.16.04.1/tmpreaper.c0000664000000000000000000007240313414145725016517 0ustar /* Copyright (c) 1997-1998 Karl M. Hegbloom * (note: above email address is defunct) * * Originally Based on `tmpwatch-1.2/1.4' RHS, Erik Troan * * This program may be freely redistributed under the terms of the GNU * Public License. You should be able to find a copy of the GPL in * your "/usr/doc/copyright" directory on most GNU/Linux installations. * * Now maintained by ps - Paul Slootman * 2001-12-03 1.4.15 * Patches from * mb - Marcus Brinkmann * for using get_current_dir_name() and portability on HURD. ps hacked this * so that it should (still?) compile on non-glibc systems. * 2001-12-02 1.5.0 * Added autoconf support. Also added getopt.c, getopt1.c, getopt.h so that * tmpreaper can be compiled on e.g. Solaris. It builds and runs on Solaris * and netBSD in addition to Linux now. * Ignore ext2fs immutable files. * 2002-02-05 1.6.0 * ctime option added, check ctime in addition to atime, for those cases where * files get created with an old date in atime and mtime (e.g. via Samba from * a PC). * See changelog for later changes. */ #define _LARGEFILE_SOURCE 1 /* handle >2GB files where possible */ #define _FILE_OFFSET_BITS 64 #ifdef HAVE_CONFIG_H #include "config.h" #endif #define _GNU_SOURCE /* For get_current_dir_name() */ #include #include #include #if HAVE_DIRENT_H # include # define NAMLEN(dirent) strlen((dirent)->d_name) #else # define dirent direct # define NAMLEN(dirent) (dirent)->d_namlen # if HAVE_SYS_NDIR_H # include # endif # if HAVE_SYS_DIR_H # include # endif # if HAVE_NDIR_H # include # endif #endif #ifdef HAVE_ERRNO_H # include #endif #include #include #ifdef HAVE_LIMITS_H # include #endif #include #include #if STDC_HEADERS # include #else # ifndef HAVE_MEMCPY # define memmove(d, s, n) bcopy ((s), (d), (n)) # endif #endif #ifdef HAVE_SYS_WAIT_H #include #endif #include #ifdef HAVE_UNISTD_H # include #endif #ifdef HAVE_STDLIB_H # include #endif #include #ifdef __linux__ # include # include # include # ifdef HAVE_LIBMOUNT_LIBMOUNT_H # include # endif #endif /* do we need to work around a glibc dependency? */ #ifndef __USE_GNU # ifdef __linux__ /* sanity check */ # error "__USE_GNU not defined on a linux system, investigate! And report to tmpreaper@packages.debian.org" # else # define NO_get_current_dir_name /* XXX TODO: a workaround for missing get_current_dir_name() */ # endif #endif #ifndef MAX_FORKS # define MAX_FORKS 200 #endif #ifdef GLOB_BRACE # define TMPREAPER_GLOB_BRACE GLOB_BRACE #else # define TMPREAPER_GLOB_BRACE 0 #endif /* * tmpreaper.c -- remove files in a directory, but do it carefully */ /* `--force': also rm files that are mode `-w EUID $$' */ #define FLAGS_FORCE (1 << 0) #define FLAGS_FORCE_P(fl) ((fl) & FLAGS_FORCE) /* `--mtime': Use `mtime' rather than `atime' */ #define FLAGS_MTIME (1 << 1) #define FLAGS_MTIME_P(fl) ((fl) & FLAGS_MTIME) /* `--mtime-dir': rm empty directories based on mtime */ #define FLAGS_MTIME_DIR (1 << 2) #define FLAGS_MTIME_DIR_P(fl) ((fl) & FLAGS_MTIME_DIR) /* `--symlinks': also rm symlinks like files and directories */ #define FLAGS_SYMLINKS (1 << 3) #define FLAGS_SYMLINKS_P(fl) ((fl) & FLAGS_SYMLINKS) /* `--all': also rm symlinks, fifos, devices, and sockets... */ #define FLAGS_ALLFILES (1 << 4) #define FLAGS_ALLFILES_P(fl) ((fl) & FLAGS_ALLFILES) /* the `--protect' option was given */ #define FLAGS_PROTECT (1 << 5) #define FLAGS_PROTECT_P(fl) ((fl) & FLAGS_PROTECT) /* the `--test' option was given */ #define FLAGS_TEST (1 << 6) #define FLAGS_TEST_P(fl) ((fl) & FLAGS_TEST) /* `--ctime': Use `ctime' in addition to `atime' */ #define FLAGS_CTIME (1 << 7) #define FLAGS_CTIME_P(fl) ((fl) & FLAGS_CTIME) /* The `--showdeleted' option was given */ #define FLAGS_SHOWDEL (1 << 8) #define FLAGS_SHOWDEL_P(fl) ((fl) & FLAGS_SHOWDEL) #define TIME_SECONDS 1 #define TIME_MINUTES 60 #define TIME_HOURS 60 * 60 #define TIME_DAYS 24 * 60 * 60 glob_t protect_glob; /* list of files to not rm */ typedef struct protect_entry { ino_t inode; char * name; } protect_entry; protect_entry * protect_table; /* Global */ #define LOG_REALDEBUG 1 #define LOG_DEBUG 2 #define LOG_VERBOSE 3 #define LOG_NORMAL 4 #define LOG_ERROR 5 #define LOG_FATAL 6 int logLevel = LOG_NORMAL; int delayMax = 0; int runtimeMax = 55; void message (const int level, const char * format, ...) /*VARARGS*/ { va_list args; FILE * where = stderr; if (level >= logLevel) { va_start (args, format); switch (level) { case LOG_DEBUG: where = stdout; /*FALLTHRU*/ case LOG_REALDEBUG: fprintf (where, "debug: "); break; case LOG_ERROR: case LOG_FATAL: fprintf (where, "error: "); break; case LOG_NORMAL: case LOG_VERBOSE: where = stdout; break; default: break; } vfprintf (where, format, args); if (level == LOG_FATAL) exit (1); } } void sig_alarmhandler(int sig) { message(LOG_FATAL, "run time exceeded!\n" "This may be indicative of an attack to use tmpreaper to remove critical files;\n" "or the directories to clean up are excessive large and/or messed up.\n" "Please investigate.\n"); exit(1); /* redundant */ } int safe_chdir (const char * dirname) { struct stat sb1, sb2; if (lstat (dirname, &sb1)) { message (LOG_ERROR, "lstat() of directory `%s' failed: %s\n", dirname, strerror (errno)); return 1; } if (! S_ISDIR (sb1.st_mode)) { if (S_ISLNK (sb1.st_mode)) { message (LOG_ERROR, "safe_chdir(): Will not chdir across symlink `%s' (inode %lu).\n", dirname, (u_long) sb1.st_ino); return 1; } message (LOG_ERROR, "Not a directory: `%s' (inode %lu).\n", dirname, (u_long) sb1.st_ino); return 1; } message (LOG_DEBUG, "safe_chdir() : Before chdir(), `dirname' is inode `%lu'.\n", (u_long) sb1.st_ino); message (LOG_DEBUG, "safe_chdir() : Before chdir(), `dirname' on device `%lu'.\n", (u_long) sb1.st_dev); if (chdir (dirname)) { message (LOG_ERROR, "chdir() to directory `%s' (inode %lu) failed: %s\n", dirname, (u_long) sb1.st_ino, strerror (errno)); return 1; } if (lstat (".", &sb2)) { message (LOG_ERROR, "lstat() of directory `%s' after chdir() failed: %s\n", dirname, strerror (errno)); return 1; } message (LOG_DEBUG, "safe_chdir() : After chdir(), `dirname' is inode `%lu'.\n", (u_long) sb2.st_ino); message (LOG_DEBUG, "safe_chdir() : After chdir(), `dirname' on device `%lu'.\n", (u_long) sb2.st_dev); if (sb1.st_ino != sb2.st_ino) { message (LOG_ERROR, "Inode mismatch!!! : `%s' (inode %lu) != `.' (inode %lu)\n", dirname, (u_long) sb1.st_ino, (u_long) sb2.st_ino); message (LOG_FATAL, "This indicates a possible subversion attempt.\n"); /*NOTREACHED*/ } else if (sb1.st_dev != sb2.st_dev) { message (LOG_ERROR, "Device mismatch!!!\n"); message (LOG_ERROR, "`%s' (inode %lu), device `%lu' != `.' (inode %lu), device `%lu'\n", dirname, (u_long) sb1.st_ino, (u_long) sb1.st_dev, (u_long) sb2.st_ino, (u_long) sb2.st_dev); message (LOG_FATAL, "This indicates a possible subversion attempt.\n"); /*NOTREACHED*/ } return 0; } /* * mountpoint stuff copied from mountpoint.c, part of util-linux and modified. * Perhaps the mountpoint.c stuff could be used more extensively, replacing * hand-coded stuff in tmpreaper */ #ifdef HAVE_LIBMOUNT_LIBMOUNT_H #define _PATH_PROC_MOUNTINFO "/proc/self/mountinfo" struct mountpoint_control { char *path; dev_t dev; struct stat st; unsigned int dev_devno:1, fs_devno:1; }; int dir_to_device(struct mountpoint_control *ctl) { struct libmnt_table *tb = mnt_new_table_from_file(_PATH_PROC_MOUNTINFO); struct libmnt_fs *fs; struct libmnt_cache *cache; int rc = -1; if (!tb) { /* Not possible to detect bind mounts */ return -1; } /* to canonicalize all necessary paths */ cache = mnt_new_cache(); mnt_table_set_cache(tb, cache); mnt_unref_cache(cache); fs = mnt_table_find_target(tb, ctl->path, MNT_ITER_BACKWARD); if (fs && mnt_fs_get_target(fs)) { ctl->dev = mnt_fs_get_devno(fs); rc = 0; } mnt_unref_table(tb); return rc; } #endif /* HAVE_LIBMOUNT_LIBMOUNT_H */ int dir_empty_p (const char * dirname) { DIR * dir; struct dirent * ent; int count = 0; if (! (dir = opendir(dirname))) { message(LOG_ERROR, "Cannot opendir(%s): %s\n", dirname, strerror(errno)); return 0; } while ((ent = readdir(dir))) { if ((ent->d_name[0] == '.') && ( (ent->d_name[1] == '\0') || ((ent->d_name[1] == '.') && (ent->d_name[2] == '\0')) ) ) continue; count++; } closedir(dir); return count != 0 ? 0 : 1; /* #t when empty. */ } int cleanupDirectory (const char * dirname , const unsigned int killTime, const int flags) { DIR * dir; struct dirent * ent; int status, pid, skip = 0; int i; static int fork_count = 0; if (FLAGS_TEST_P (flags)) { message (LOG_VERBOSE, "(PID %u) Pretending to clean up directory `%s'.\n", (u_int) getpid(), dirname); } else { message(LOG_DEBUG, "Cleaning up directory `%s'.\n", dirname); } if (fork_count > MAX_FORKS) { #ifdef NO_get_current_dir_name char path[PATH_MAX], *p; #else char *path, *p; #endif int l; /* the admin will want to know where the problem lies */ #ifdef NO_get_current_dir_name if (getcwd(path, PATH_MAX) < 0) /* too long even for PATH_MAX, show something anyway */ #else if ((path = get_current_dir_name()) < 0) #endif { p = "..../"; } else { l = strlen(path); if (l > 65) { /* remove middle part of the path */ p = path + l - 30; strcpy(&path[30], " ... "); memmove(&path[35], p, 30); path[65] = 0; } p = path; } message(LOG_FATAL, "Too deep directory nesting detected while trying to clean up\n`%s/%s',\npossible attack?\n", p, dirname); exit(2); } /* * Do everything in a child process so we don't have to chdir(".."), * which would lead to a race condition. fork() on Linux is very efficient * so this shouldn't be a big deal (probably just a exception on one page * of stack, not bad). I should probably just keep a directory stack * and fchdir() back up it, but it's not worth changing now. - ewt * * After reading "http://www.geek-girl.com/bugtraq/1996_2/0054.html" (look * for "cd .."), I think it is best to use this method rather than the * contrasting algorithm mentioned in Eric's comment. IMHO he has made the * right choice by having chosen the `recursive forking' algorithm. It is * much easier to implement and understand as well as being more secure * through avoiding `cd ..'. - karlheg * * The geek girl link is dead. fork() is not efficient on all systems, * so it would still be better to use a directory stack + fchdir(). - mb * * This is another link to what geek-girl had: * http://www.geocrawler.com/mail/msg.php3?msg_id=184906&list=91 * - ps */ if (! (pid = fork())) { struct stat sb, here; if (safe_chdir (dirname)) exit(1); fork_count++; if (! (dir = opendir ("."))) { message (LOG_FATAL, "Opening directory, `%s' as `.' : %s\n", dirname, strerror (errno)); } if (lstat (".", &here)) { message (LOG_FATAL, "Statting current directory, `%s' as `.' : %s\n", dirname, strerror (errno)); } do { errno = 0; ent = readdir (dir); if (errno) { message (LOG_ERROR, "Reading directory entry. : %s\n", strerror (errno)); } if (!ent) break; /* * if name starts with dot, and * is 1 byte long, or * has a second dot and is 2 bytes long, * skip it. */ if ((ent->d_name[0] == '.') && ( (ent->d_name[1] == '\0') || ((ent->d_name[1] == '.') && (ent->d_name[2] == '\0')) ) ) continue; message (LOG_DEBUG, "(PID %u) Found directory entry `%s'.\n", (u_int) getpid(), ent->d_name); if (lstat (ent->d_name, &sb)) { message (LOG_ERROR, "Failed to lstat() `%s/%s': %s\n", dirname, ent->d_name, strerror (errno)); continue; } if (((!getuid() && !sb.st_uid) || (sb.st_uid == geteuid())) && !FLAGS_FORCE_P (flags) && !(sb.st_mode & S_IWUSR)) { message (LOG_VERBOSE, "Non-writeable file, owned by UID (%u) skipped: `%s'\n", (u_int) sb.st_uid, ent->d_name); continue; } if (sb.st_dev != here.st_dev) { message (LOG_VERBOSE, "File on different device skipped: `%s/%s'\n", dirname, ent->d_name); continue; } if (S_ISDIR (sb.st_mode)) { #ifdef HAVE_LIBMOUNT_LIBMOUNT_H struct mountpoint_control ctl = { NULL }; ctl.path = ent->d_name; if (stat(ctl.path, &ctl.st)) { message (LOG_ERROR, "Failed to stat() `%s/%s/.': %s\n", dirname, ent->d_name, strerror (errno)); continue; } if (!dir_to_device(&ctl)) { message (LOG_VERBOSE, "Directory on different device skipped: `%s/%s'\n", dirname, ent->d_name); continue; } #else /* fallback for systems (non-Linux?) without libmount */ char *dst; struct stat sb2; if ((dst = malloc(strlen(ent->d_name) + 3)) == NULL) message (LOG_FATAL, "malloc failed.\n"); strcpy(dst, ent->d_name); strcat(dst, "/."); if (lstat (dst, &sb2)) { message (LOG_ERROR, "Failed to lstat() `%s/%s/.': %s\n", dirname, ent->d_name, strerror (errno)); free(dst); continue; } free(dst); if (sb2.st_dev != sb.st_dev) { message (LOG_VERBOSE, "Directory on different device skipped: `%s/%s'\n", dirname, ent->d_name); continue; } #endif cleanupDirectory (ent->d_name, killTime, flags); message (LOG_VERBOSE, "(PID %u) Back from recursing down `%s'.\n", (u_int) getpid(), ent->d_name); } if (FLAGS_PROTECT_P (flags)) { skip = i = 0; do { if (sb.st_ino == protect_table[i].inode) { message (LOG_VERBOSE, "Entry matching `--protect' pattern skipped. `%s'\n", protect_table[i].name); skip = 1; break; } } while (protect_table[i++].name); if (skip) continue; } /* Decide whether to remove the file or not */ /* check for mtime on directory instead of atime if requested */ if ( FLAGS_MTIME_P(flags) || (FLAGS_MTIME_DIR_P(flags) && S_ISDIR(sb.st_mode))) { if (sb.st_mtime >= killTime) continue; } else { if (sb.st_atime >= killTime) continue; /* If ctime option is given, the ctime must also be so */ /* long ago. This is e.g. for samba as DOS preserves */ /* mtime when copying, so such files get removed too soon */ /* Don't do it for directories though, as ctime may get */ /* reset below through utime() */ if (!S_ISDIR(sb.st_mode) && FLAGS_CTIME_P(flags) && sb.st_ctime >= killTime) continue; } if (S_ISDIR (sb.st_mode)) { if (dir_empty_p (ent->d_name)) { if (FLAGS_TEST_P (flags)) { message (LOG_VERBOSE, "Pretending to remove empty directory `%s'.\n", ent->d_name); if (FLAGS_SHOWDEL_P(flags)) message(LOG_NORMAL, "rmdir %s/%s\n", dirname, ent->d_name); } else { message (LOG_VERBOSE, "Removing directory `%s'.\n", ent->d_name); if (rmdir (ent->d_name)) { message (LOG_ERROR, "Failed to rmdir `%s': %s\n", ent->d_name, strerror (errno)); } else { if (FLAGS_SHOWDEL_P(flags)) message(LOG_NORMAL, "rmdir %s/%s\n", dirname, ent->d_name); } } } } else if (FLAGS_ALLFILES_P (flags) || S_ISREG (sb.st_mode) || (FLAGS_SYMLINKS_P (flags) && S_ISLNK (sb.st_mode))) { if (FLAGS_TEST_P (flags)) { message (LOG_VERBOSE, "Pretending to remove file `%s/%s'.\n", dirname, ent->d_name); if (FLAGS_SHOWDEL_P(flags)) message(LOG_NORMAL, "rm %s/%s\n", dirname, ent->d_name); } else { message (LOG_VERBOSE, "Removing file `%s/%s'.\n", dirname, ent->d_name); if (unlink (ent->d_name)) #if defined(__linux__) { int give_error = 1; int fd; if ((fd = open(ent->d_name, O_RDONLY)) >= 0) { unsigned int flags; if (ioctl(fd, EXT2_IOC_GETFLAGS, &flags) >= 0) { if (flags & EXT2_IMMUTABLE_FL) { give_error = 0; } } close(fd); /* Restore access time! */ /* However, only bother if we give a warning. */ /* With no warning, it doesn't matter. */ /* And it delays the next attempt :-) */ if (give_error) { struct utimbuf ts; ts.actime = sb.st_atime; ts.modtime = sb.st_mtime; utime(ent->d_name, &ts); } } if (give_error) #endif message (LOG_ERROR, "Failed to unlink `%s': %s\n", ent->d_name, strerror (errno)); #if defined(__linux__) else message (LOG_VERBOSE, "file `%s' marked immutable -- skipping.\n", ent->d_name); } #endif else { if (FLAGS_SHOWDEL_P(flags)) message(LOG_NORMAL, "rm %s/%s\n", dirname, ent->d_name); } } } else { if (FLAGS_SYMLINKS_P (flags)) { message (LOG_VERBOSE, "Not a regular file, symlink, or directory `%s' -- skipping.\n", ent->d_name); } else { message (LOG_VERBOSE, "Not a regular file or directory `%s' -- skipping.\n", ent->d_name); } } } while (ent); closedir (dir); exit (0); } if (pid < 0) { message(LOG_ERROR, "fork failed: %s\n", strerror(errno)); return 1; } if (waitpid(pid, &status, 0) < 0) { message(LOG_ERROR, "waitpid failed: %s\n", strerror(errno)); return 1; } if (WIFEXITED (status)) return WEXITSTATUS (status); return 0; } void printCopyright (void) { fprintf (stderr, #ifdef DEBIAN "tmpreaper -- Version: " VERSION "-DEB\n" #else "tmpreaper -- Version: " VERSION "\n" #endif "(c) 1997 Karl M. Hegbloom \n" "(c) 2006-2019 Paul Slootman \n" "This may be freely redistributed under the terms of the GNU Public License.\n"); } /* 1 2 3 4 5 6 7 8 02345678901234567890123456789012345678901234567890123456789012345678901234567890 */ void usage(void) { printCopyright (); fprintf (stderr, "\n" "tmpreaper [-htvfmMsadVT] [--help] [--test] [--verbose] [--force]\n" " [--delay=99] [--runtime=99] [--showdeleted]\n" " [--ctime] [--mtime] [--mtime-dir] [--symlinks] [--all]\n" " [[--protect '']...]