comparison hgext/fsmonitor/state.py @ 43392:8a9e53b974ee stable

fsmonitor: normalize hostname to bytes Without this, we get a str/bytes mismatching when using % formatting a few lines below. Differential Revision: https://phab.mercurial-scm.org/D7208
author Gregory Szorc <gregory.szorc@gmail.com>
date Sat, 02 Nov 2019 13:34:40 -0700
parents 687b865b95ad
children 6000f5b25c9b
comparison
equal deleted inserted replaced
43391:ffdf0bf28212 43392:8a9e53b974ee
12 import socket 12 import socket
13 import struct 13 import struct
14 14
15 from mercurial.i18n import _ 15 from mercurial.i18n import _
16 from mercurial import ( 16 from mercurial import (
17 encoding,
17 pathutil, 18 pathutil,
18 util, 19 util,
19 ) 20 )
20 21
21 _version = 4 22 _version = 4
79 len(state), 80 len(state),
80 ) 81 )
81 self.invalidate() 82 self.invalidate()
82 return None, None, None 83 return None, None, None
83 diskhostname = state[0] 84 diskhostname = state[0]
84 hostname = socket.gethostname() 85 hostname = encoding.strtolocal(socket.gethostname())
85 if diskhostname != hostname: 86 if diskhostname != hostname:
86 # file got moved to a different host 87 # file got moved to a different host
87 self._ui.log( 88 self._ui.log(
88 b'fsmonitor', 89 b'fsmonitor',
89 b'fsmonitor: stored hostname "%s" ' 90 b'fsmonitor: stored hostname "%s" '
125 self._ui.warn(_(b"warning: unable to write out fsmonitor state\n")) 126 self._ui.warn(_(b"warning: unable to write out fsmonitor state\n"))
126 return 127 return
127 128
128 with file: 129 with file:
129 file.write(struct.pack(_versionformat, _version)) 130 file.write(struct.pack(_versionformat, _version))
130 file.write(socket.gethostname() + b'\0') 131 file.write(encoding.strtolocal(socket.gethostname()) + b'\0')
131 file.write(clock + b'\0') 132 file.write(clock + b'\0')
132 file.write(ignorehash + b'\0') 133 file.write(ignorehash + b'\0')
133 if notefiles: 134 if notefiles:
134 file.write(b'\0'.join(notefiles)) 135 file.write(b'\0'.join(notefiles))
135 file.write(b'\0') 136 file.write(b'\0')