
    Vh                        d Z ddlmZ ddlZddlZddlZddlmZ g d ed      D  cg c]  }  ej                  d|        c} z   Z
g dZd	d
gZddZd Zedk(  r e        yyc c} w )z
Check for illegal filenames on various operating systems.
The main rules are derived from restrictions on Windows:
https://docs.microsoft.com/en-us/windows/win32/fileio/naming-a-file#naming-conventions
    )annotationsN)to_bytes)	   <   >   :   "   /   \   |   ?   *    b)CONPRNAUXNULCOM1COM2COM3COM4COM5COM6COM7COM8COM9LPT1LPT2LPT3LPT4LPT5LPT6LPT7LPT8LPT9. c           	        |rdnd}t         j                  j                  | j                  t         j                  j                              }t         j                  j                  |      d   }|j                         t        v r!t        | d|d|j                                |d   t        v rt        | d|d|d   d       t        |d	
      }t        D ](  }||v st        | d	
      }t        |d|d|d       * y)z;Check the specified path for unwanted characters and names.	directoryfiler   z
: illegal z name z name end-char ''zutf-8)encodingz: illegal char 'z' in z nameN)ospathbasenamerstripsepsplitextupperILLEGAL_NAMESprintILLEGAL_END_CHARSr   ILLEGAL_CHARS)r/   is_dir	type_name	file_namenamebfilecharbpaths           t/home/dcms/DCMS/lib/python3.12/site-packages/ansible_test/_util/controller/sanity/code-smell/no-illegal-filenames.py
check_pathrA   9   s    %6I  RWW[[!9:I77I&q)Dzz|}$$	4::<HI}))T9iPRmTUY1E Q5=TG4EtYOPQ    c                     t         j                  dd xs, t         j                  j                         j	                         D ]6  } t        | | j                  t        j                  j                               8 y)zMain entry point.   N)r9   )
sysargvstdinread
splitlinesrA   endswithr.   r/   r2   )r/   s    r@   mainrK   L   sO    =		 0 ; ; = <4bggkk :;<rB   __main__)F)__doc__
__future__r   r.   structrE   ansible.module_utils.basicr   rangepackr8   r5   r7   rA   rK   __name__)is   0r@   <module>rU      s   
 # 	  
 /
 #(),Q[V[[a,
-4  Q&< zF u -s   A$