diff options
author | Ewoud Kohl van Wijngaarden <ewoud@kohlvanwijngaarden.nl> | 2018-12-08 13:42:23 +0100 |
---|---|---|
committer | Ewoud Kohl van Wijngaarden <ewoud@kohlvanwijngaarden.nl> | 2020-05-06 14:00:21 +0200 |
commit | 196dea8289d126aaf9a011a15b348fde0d5159d5 (patch) | |
tree | d4fd1507999a0d61b2edbc89f5381048470afb1b /lib | |
parent | c5367aa3508b49ccb19ede20967ecfff8fe6e124 (diff) | |
download | puppet-cron_core-196dea8289d126aaf9a011a15b348fde0d5159d5.tar.gz puppet-cron_core-196dea8289d126aaf9a011a15b348fde0d5159d5.tar.bz2 |
(MODULES-8603) Ignore .keep_* files
On Gentoo there's always a .keep_<package>-<slot> (e.g.,
.keep_cronbase-0) file inside the cron directory to ensure it's not
removed with rmdir. Since usernames are very unlikely to start with
.keep_, we can safely filter out these hidden files.
Diffstat (limited to 'lib')
-rw-r--r-- | lib/puppet/provider/cron/crontab.rb | 16 |
1 files changed, 13 insertions, 3 deletions
diff --git a/lib/puppet/provider/cron/crontab.rb b/lib/puppet/provider/cron/crontab.rb index bfbdc30..9144725 100644 --- a/lib/puppet/provider/cron/crontab.rb +++ b/lib/puppet/provider/cron/crontab.rb @@ -273,17 +273,27 @@ Puppet::Type.type(:cron).provide(:crontab, parent: Puppet::Provider::ParsedFile, '/var/spool/cron' end + # Return the directory holding crontab files stored on the local system. + # + # @api private + def self.crontab_dir + CRONTAB_DIR + end + # Yield the names of all crontab files stored on the local system. # - # @note Ignores files that are not writable for the puppet process. + # @note Ignores files that are not writable for the puppet process and hidden + # files that start with .keep # # @api private def self.enumerate_crontabs Puppet.debug "looking for crontabs in #{CRONTAB_DIR}" return unless File.readable?(CRONTAB_DIR) Dir.foreach(CRONTAB_DIR) do |file| - path = "#{CRONTAB_DIR}/#{file}" - yield(file) if File.file?(path) && File.writable?(path) + path = File.join(CRONTAB_DIR, file) + # Gentoo creates .keep_PACKAGE-SLOT files to make sure the directory is not + # removed + yield(file) if File.file?(path) && File.writable?(path) && !file.start_with?('.keep_') end end |