shell bypass 403
�
B��cc @ sV d Z d d l Z d g Z e j d � Z d � Z d � Z e d k rR e � n d S( s!
Generic dylib path manipulation
i����Nt
dylib_infos� (?x)
(?P<location>^.*)(?:^|/)
(?P<name>
(?P<shortname>\w+?)
(?:\.(?P<version>[^._]+))?
(?:_(?P<suffix>[^._]+))?
\.dylib$
)
c C s# t j | � } | s d S| j � S( s1
A dylib name can take one of the following four forms:
Location/Name.SomeVersion_Suffix.dylib
Location/Name.SomeVersion.dylib
Location/Name_Suffix.dylib
Location/Name.dylib
returns None if not found or a mapping equivalent to:
dict(
location='Location',
name='Name.SomeVersion_Suffix.dylib',
shortname='Name',
version='SomeVersion',
suffix='Suffix',
)
Note that SomeVersion and Suffix are optional and may be None
if not present.
N( t DYLIB_REt matcht Nonet groupdict( t filenamet is_dylib( ( s<