@@ -612,6 +612,11 @@ def system_alias(system, release, version):
612612
613613### Various internal helpers
614614
615+ # Table for cleaning up characters in filenames.
616+ _SIMPLE_SUBSTITUTIONS = (
617+ dict .fromkeys (map (ord , '/\\ :;"()' ), '-' ) | {ord (' ' ): '_' }
618+ )
619+
615620def _platform (* args ):
616621
617622 """ Helper to format the platform string in a filename
@@ -621,28 +626,13 @@ def _platform(*args):
621626 platform = '-' .join (x .strip () for x in filter (len , args ))
622627
623628 # Cleanup some possible filename obstacles...
624- platform = platform .replace (' ' , '_' )
625- platform = platform .replace ('/' , '-' )
626- platform = platform .replace ('\\ ' , '-' )
627- platform = platform .replace (':' , '-' )
628- platform = platform .replace (';' , '-' )
629- platform = platform .replace ('"' , '-' )
630- platform = platform .replace ('(' , '-' )
631- platform = platform .replace (')' , '-' )
629+ platform = platform .translate (_SIMPLE_SUBSTITUTIONS )
632630
633631 # No need to report 'unknown' information...
634632 platform = platform .replace ('unknown' , '' )
635633
636634 # Fold '--'s and remove trailing '-'
637- while True :
638- cleaned = platform .replace ('--' , '-' )
639- if cleaned == platform :
640- break
641- platform = cleaned
642- while platform and platform [- 1 ] == '-' :
643- platform = platform [:- 1 ]
644-
645- return platform
635+ return re .sub (r'-+' , '-' , platform ).rstrip ('-' )
646636
647637def _node (default = '' ):
648638
0 commit comments