mercurial/util.py
changeset 5707 76dd039c2bad
parent 5702 1b914de8d0ba
child 5739 45fa7b1c5d4c
equal deleted inserted replaced
5706:89fe5b36c21e 5707:76dd039c2bad
   983 
   983 
   984     def testpid(pid):
   984     def testpid(pid):
   985         '''return False if pid dead, True if running or not known'''
   985         '''return False if pid dead, True if running or not known'''
   986         return True
   986         return True
   987 
   987 
   988     def set_exec(f, mode):
       
   989         pass
       
   990 
       
   991     def set_link(f, mode):
       
   992         pass
       
   993 
       
   994     def set_flags(f, flags):
   988     def set_flags(f, flags):
   995         pass
   989         pass
   996 
   990 
   997     def set_binary(fd):
   991     def set_binary(fd):
   998         msvcrt.setmode(fd.fileno(), os.O_BINARY)
   992         msvcrt.setmode(fd.fileno(), os.O_BINARY)
  1132         return port and ("%s -p %s" % (args, port)) or args
  1126         return port and ("%s -p %s" % (args, port)) or args
  1133 
  1127 
  1134     def is_exec(f):
  1128     def is_exec(f):
  1135         """check whether a file is executable"""
  1129         """check whether a file is executable"""
  1136         return (os.lstat(f).st_mode & 0100 != 0)
  1130         return (os.lstat(f).st_mode & 0100 != 0)
  1137 
       
  1138     def force_chmod(f, s):
       
  1139         try:
       
  1140             os.chmod(f, s)
       
  1141         except OSError, inst:
       
  1142             if inst.errno != errno.EPERM:
       
  1143                 raise
       
  1144             # maybe we don't own the file, try copying it
       
  1145             new_f = mktempcopy(f)
       
  1146             os.chmod(new_f, s)
       
  1147             os.rename(new_f, f)
       
  1148 
       
  1149     def set_exec(f, mode):
       
  1150         s = os.lstat(f).st_mode
       
  1151         if stat.S_ISLNK(s) or (s & 0100 != 0) == mode:
       
  1152             return
       
  1153         if mode:
       
  1154             # Turn on +x for every +r bit when making a file executable
       
  1155             # and obey umask.
       
  1156             force_chmod(f, s | (s & 0444) >> 2 & ~_umask)
       
  1157         else:
       
  1158             force_chmod(f, s & 0666)
       
  1159 
       
  1160     def set_link(f, mode):
       
  1161         """make a file a symbolic link/regular file
       
  1162 
       
  1163         if a file is changed to a link, its contents become the link data
       
  1164         if a link is changed to a file, its link data become its contents
       
  1165         """
       
  1166 
       
  1167         m = os.path.islink(f)
       
  1168         if m == bool(mode):
       
  1169             return
       
  1170 
       
  1171         if mode: # switch file to link
       
  1172             data = file(f).read()
       
  1173             os.unlink(f)
       
  1174             os.symlink(data, f)
       
  1175         else:
       
  1176             data = os.readlink(f)
       
  1177             os.unlink(f)
       
  1178             file(f, "w").write(data)
       
  1179 
  1131 
  1180     def set_flags(f, flags):
  1132     def set_flags(f, flags):
  1181         s = os.lstat(f).st_mode
  1133         s = os.lstat(f).st_mode
  1182         x = "x" in flags
  1134         x = "x" in flags
  1183         l = "l" in flags
  1135         l = "l" in flags