42 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Python
		
	
	
	
			
		
		
	
	
			42 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Python
		
	
	
	
| """
 | |
| module for win-specific local path stuff
 | |
| 
 | |
| (implementor needed :-)
 | |
| """
 | |
| 
 | |
| import os
 | |
| import py
 | |
| from py.__.path.local.common import Stat 
 | |
| 
 | |
| class WinMixin:
 | |
|     def _makestat(self, statresult):
 | |
|         return Stat(self, statresult)
 | |
| 
 | |
|     def chmod(self, mode, rec=0):
 | |
|         """ change permissions to the given mode. If mode is an
 | |
|             integer it directly encodes the os-specific modes.
 | |
|             if rec is True perform recursively.
 | |
| 
 | |
|             (xxx if mode is a string then it specifies access rights
 | |
|             in '/bin/chmod' style, e.g. a+r).
 | |
|         """
 | |
|         if not isinstance(mode, int):
 | |
|             raise TypeError("mode %r must be an integer" % (mode,))
 | |
|         if rec:
 | |
|             for x in self.visit(rec=rec):
 | |
|                 self._callex(os.chmod, str(x), mode)
 | |
|         self._callex(os.chmod, str(self), mode)
 | |
| 
 | |
|     def remove(self, rec=1):
 | |
|         """ remove a file or directory (or a directory tree if rec=1).  """
 | |
|         if self.check(dir=1, link=0):
 | |
|             if rec:
 | |
|                 # force remove of readonly files on windows 
 | |
|                 self.chmod(0700, rec=1)
 | |
|                 self._callex(py.std.shutil.rmtree, self.strpath)
 | |
|             else:
 | |
|                 self._callex(os.rmdir, self.strpath)
 | |
|         else:
 | |
|             self.chmod(0700)
 | |
|             self._callex(os.remove, self.strpath)
 |