mercurial/scmutil.py
changeset 17763 13070de77c86
parent 17752 76b73ce0ffac
child 17768 9837cafc25b1
equal deleted inserted replaced
17762:57f27cbfc5bb 17763:13070de77c86
   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):