if re.search(r'^\s*(?:b(?:yte)?)?\s*$', prefix, re.IGNORECASE):
factor = long(1)
- elif re.search(r'^\s*k[bB](?i:yte)?\s*$', prefix):
+ elif re.search(r'^\s*k[bB](?:[Yy][Tt][Ee])?\s*$', prefix):
factor = factor_si
- elif re.search(r'^\s*Ki?[bB](?i:yte)?\s*$', prefix):
+ elif re.search(r'^\s*Ki?[bB](?:[Yy][Tt][Ee])?\s*$', prefix):
factor = factor_bin
- elif re.search(r'^\s*MB(?:yte)?\s*$', prefix, re.IGNORECASE):
+ elif re.search(r'^\s*M(?:B(?:yte)?)?\s*$', prefix, re.IGNORECASE):
factor = (factor_si * factor_si)
elif re.search(r'^\s*MiB(?:yte)?\s*$', prefix, re.IGNORECASE):
factor = (factor_bin * factor_bin)
- elif re.search(r'^\s*GB(?:yte)?\s*$', prefix, re.IGNORECASE):
+ elif re.search(r'^\s*G(?:B(?:yte)?)?\s*$', prefix, re.IGNORECASE):
factor = (factor_si * factor_si * factor_si)
elif re.search(r'^\s*GiB(?:yte)?\s*$', prefix, re.IGNORECASE):
factor = (factor_bin * factor_bin * factor_bin)
- elif re.search(r'^\s*TB(?:yte)?\s*$', prefix, re.IGNORECASE):
+ elif re.search(r'^\s*T(?:B(?:yte)?)?\s*$', prefix, re.IGNORECASE):
factor = (factor_si * factor_si * factor_si * factor_si)
elif re.search(r'^\s*TiB(?:yte)?\s*$', prefix, re.IGNORECASE):
factor = (factor_bin * factor_bin * factor_bin * factor_bin)
- elif re.search(r'^\s*PB(?:yte)?\s*$', prefix, re.IGNORECASE):
+ elif re.search(r'^\s*P(?:B(?:yte)?)?\s*$', prefix, re.IGNORECASE):
factor = (factor_si * factor_si * factor_si * factor_si * factor_si)
elif re.search(r'^\s*PiB(?:yte)?\s*$', prefix, re.IGNORECASE):
factor = (factor_bin * factor_bin * factor_bin * factor_bin * factor_bin)
else:
raise ValueError("human2bytes(): Couldn't detect prefix »%s«." %(prefix))
+ if verbose > 5:
+ sys.stderr.write("human2bytes(): found factor %d\n" % (factor))
+
return long(factor * value_float)
#------------------------------------------------------------------------
import pwd
import grp
-from LogRotateCommon import split_parts, email_valid, period2days
+from LogRotateCommon import split_parts, email_valid, period2days, human2bytes
revision = '$Revision$'
revision = re.sub( r'\$', '', revision )
directive['olddir']['group'] = group
return True
+ # Check for minimum size for ratation
+ match = re.search(r'^size(?:(?:\s*=|\s)|$)', line, re.IGNORECASE)
+ if match:
+ size_str = re.sub(r'^size(?:\s*=\s*|\s+)', '', line)
+ if self.verbose > 5:
+ self.logger.debug( ( _("Checking for option »size«, value: »%s« ... (file »%s«, line %s)") % (size_str, filename, linenr)))
+ if size_str is None:
+ self.logger.warning( _("Failing size definition."))
+ return False
+ size_bytes = None
+ try:
+ size_bytes = human2bytes(size_str, verbose = self.verbose)
+ except ValueError, e:
+ self.logger.warning( ( _("Invalid definition for »size«: »%s«.") %(size_str)))
+ return False
+ if self.verbose > 4:
+ self.logger.debug( ( _("Got a rotation size of %d bytes. (file »%s«, line %s)") % (size_bytes, filename, linenr)))
+ directive['size'] = size_bytes
+
return True