equal
deleted
inserted
replaced
253 |
253 |
254 @util.propertycache |
254 @util.propertycache |
255 def _cansymlink(self): |
255 def _cansymlink(self): |
256 return util.checklink(self.base) |
256 return util.checklink(self.base) |
257 |
257 |
258 def _fixfilemode(self, fp): |
258 def _fixfilemode(self, name): |
259 if self.createmode is None: |
259 if self.createmode is None: |
260 return |
260 return |
261 os.fchmod(fp.fileno(), self.createmode & 0666) |
261 os.chmod(name, self.createmode & 0666) |
262 |
262 |
263 def __call__(self, path, mode="r", text=False, atomictemp=False): |
263 def __call__(self, path, mode="r", text=False, atomictemp=False): |
264 if self._audit: |
264 if self._audit: |
265 r = util.checkosfilename(path) |
265 r = util.checkosfilename(path) |
266 if r: |
266 if r: |
303 self._trustnlink = nlink > 1 or util.checknlink(f) |
303 self._trustnlink = nlink > 1 or util.checknlink(f) |
304 if nlink > 1 or not self._trustnlink: |
304 if nlink > 1 or not self._trustnlink: |
305 util.rename(util.mktempcopy(f), f) |
305 util.rename(util.mktempcopy(f), f) |
306 fp = util.posixfile(f, mode) |
306 fp = util.posixfile(f, mode) |
307 if nlink == 0: |
307 if nlink == 0: |
308 self._fixfilemode(fp) |
308 self._fixfilemode(f) |
309 return fp |
309 return fp |
310 |
310 |
311 def symlink(self, src, dst): |
311 def symlink(self, src, dst): |
312 self.auditor(dst) |
312 self.auditor(dst) |
313 linkname = self.join(dst) |
313 linkname = self.join(dst) |
327 raise OSError(err.errno, _('could not symlink to %r: %s') % |
327 raise OSError(err.errno, _('could not symlink to %r: %s') % |
328 (src, err.strerror), linkname) |
328 (src, err.strerror), linkname) |
329 else: |
329 else: |
330 f = self(dst, "w") |
330 f = self(dst, "w") |
331 f.write(src) |
331 f.write(src) |
332 self._fixfilemode(f) |
|
333 f.close() |
332 f.close() |
|
333 self._fixfilemode(dst) |
334 |
334 |
335 def audit(self, path): |
335 def audit(self, path): |
336 self.auditor(path) |
336 self.auditor(path) |
337 |
337 |
338 def join(self, path): |
338 def join(self, path): |