Escape the search string before passing it to re module, fixes :
[~]> pisi -d sf "/etc/env.d/99libstdc++"
/etc/env.d/99libstdc++'i arıyor
DEBUG: InstallDB initialized in 0.275934934616.
Sistem Hatası: Program Sonlandırıldı.
<class 'sre_constants.error'>: multiple repeat
Genel yardım için lütfen 'pisi help' komutunu kullanınız.
Geri-iz:
File "/usr/bin/pisi", line 85, in <module>
cli.run_command()
File "/usr/lib/pardus/pisi/cli/pisicli.py", line 135, in run_command
self.command.run()
File "/usr/lib/pardus/pisi/cli/searchfile.py", line 69, in run
self.search_file(path)
File "/usr/lib/pardus/pisi/cli/searchfile.py", line 46, in search_file
found = pisi.api.search_file(path)
File "/usr/lib/pardus/pisi/api.py", line 261, in search_file
return filesdb.search_file(term)
File "/usr/lib/pardus/pisi/db/filesdb.py", line 48, in search_file
paths = re.compile("<Path>(.*?'%s'.*?)</Path>" % term, re.I).findall(files_xml)
File "/usr/lib/python2.5/re.py", line 180, in compile
return _compile(pattern, flags)
File "/usr/lib/python2.5/re.py", line 233, in _compile
raise error, v # invalid expression
This commit is contained in:
+1
-1
@@ -45,7 +45,7 @@ class FilesDB(lazydb.LazyDB):
|
||||
found = []
|
||||
for pkg in installdb.list_installed():
|
||||
files_xml = open(os.path.join(installdb.package_path(pkg), ctx.const.files_xml)).read()
|
||||
paths = re.compile('<Path>(.*?%s.*?)</Path>' % term, re.I).findall(files_xml)
|
||||
paths = re.compile('<Path>(.*?%s.*?)</Path>' % re.escape(term), re.I).findall(files_xml)
|
||||
if paths:
|
||||
found.append((pkg, paths))
|
||||
return found
|
||||
|
||||
Reference in New Issue
Block a user