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:
İsmail Dönmez
2008-02-01 21:43:23 +00:00
parent 6b395c9623
commit 8f1bc633f4
+1 -1
View File
@@ -45,7 +45,7 @@ class FilesDB(lazydb.LazyDB):
found = [] found = []
for pkg in installdb.list_installed(): for pkg in installdb.list_installed():
files_xml = open(os.path.join(installdb.package_path(pkg), ctx.const.files_xml)).read() 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: if paths:
found.append((pkg, paths)) found.append((pkg, paths))
return found return found