Create filenames with no path separators in them
We use current hostname as the element of the unique file name.
Sometimes there is non-/24 zone delegation,
{{{
$ host 144.206.233.65
65.233.206.144.in-addr.arpa is an alias for 65.26/64.233.206.144.in-addr.arpa.
}}}
as per RFC 2317,
  https://www.rfc-editor.org/rfc/rfc2317.txt
So on Un*x systems we may run into having path separator inside
the file name.  Not good, things will choke.  Prevented this
by substituting all appeared path separators in the return value.
Signed-off-by: Eygene Ryabinkin <rea@codelabs.ru>
Tested-at: my MacOSX instance, my FreeBSD instances
			
			
This commit is contained in:
		| @@ -82,6 +82,10 @@ class MaildirFolder(BaseFolder): | ||||
|             "general", "utime_from_header", False) | ||||
|         self._utime_from_header = self.config.getdefaultboolean( | ||||
|             self.repoconfname, "utime_from_header", utime_from_header_global) | ||||
|         # What do we substitute pathname separator in names (if any) | ||||
|         self.sep_subst = '-' | ||||
|         if os.path.sep == self.sep_subst: | ||||
|             self.sep_subst = '_' | ||||
|  | ||||
|     # Interface from BaseFolder | ||||
|     def getfullname(self): | ||||
| @@ -286,9 +290,10 @@ class MaildirFolder(BaseFolder): | ||||
|         :returns: String containing unique message filename""" | ||||
|  | ||||
|         timeval, timeseq = _gettimeseq(date) | ||||
|         return '%d_%d.%d.%s,U=%d,FMD5=%s%s2,%s'% \ | ||||
|         uniq_name = '%d_%d.%d.%s,U=%d,FMD5=%s%s2,%s' % \ | ||||
|             (timeval, timeseq, os.getpid(), socket.gethostname(), | ||||
|             uid, self._foldermd5, self.infosep, ''.join(sorted(flags))) | ||||
|         return uniq_name.replace(os.path.sep, self.sep_subst) | ||||
|  | ||||
|  | ||||
|     def save_to_tmp_file(self, filename, content): | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 Eygene Ryabinkin
					Eygene Ryabinkin