comparison mercurial/cmdutil.py @ 14948:32302480b402

cmdutil: use safehasattr instead of hasattr
author Augie Fackler <durin42@gmail.com>
date Mon, 25 Jul 2011 15:32:42 -0500
parents 35c2cc322ba8
children 70e11de6964d
comparison
equal deleted inserted replaced
14947:3aa34005a73d 14948:32302480b402
159 159
160 writable = mode not in ('r', 'rb') 160 writable = mode not in ('r', 'rb')
161 161
162 if not pat or pat == '-': 162 if not pat or pat == '-':
163 fp = writable and repo.ui.fout or repo.ui.fin 163 fp = writable and repo.ui.fout or repo.ui.fin
164 if hasattr(fp, 'fileno'): 164 if util.safehasattr(fp, 'fileno'):
165 return os.fdopen(os.dup(fp.fileno()), mode) 165 return os.fdopen(os.dup(fp.fileno()), mode)
166 else: 166 else:
167 # if this fp can't be duped properly, return 167 # if this fp can't be duped properly, return
168 # a dummy object that can be closed 168 # a dummy object that can be closed
169 class wrappedfileobj(object): 169 class wrappedfileobj(object):
175 return self.noop 175 return self.noop
176 else: 176 else:
177 return getattr(self.f, attr) 177 return getattr(self.f, attr)
178 178
179 return wrappedfileobj(fp) 179 return wrappedfileobj(fp)
180 if hasattr(pat, 'write') and writable: 180 if util.safehasattr(pat, 'write') and writable:
181 return pat 181 return pat
182 if hasattr(pat, 'read') and 'r' in mode: 182 if util.safehasattr(pat, 'read') and 'r' in mode:
183 return pat 183 return pat
184 return open(makefilename(repo, pat, node, total, seqno, revwidth, 184 return open(makefilename(repo, pat, node, total, seqno, revwidth,
185 pathname), 185 pathname),
186 mode) 186 mode)
187 187
518 if not fp: 518 if not fp:
519 fp = makefileobj(repo, template, node, total=total, seqno=seqno, 519 fp = makefileobj(repo, template, node, total=total, seqno=seqno,
520 revwidth=revwidth, mode='ab') 520 revwidth=revwidth, mode='ab')
521 if fp != template: 521 if fp != template:
522 shouldclose = True 522 shouldclose = True
523 if fp != sys.stdout and hasattr(fp, 'name'): 523 if fp != sys.stdout and util.safehasattr(fp, 'name'):
524 repo.ui.note("%s\n" % fp.name) 524 repo.ui.note("%s\n" % fp.name)
525 525
526 fp.write("# HG changeset patch\n") 526 fp.write("# HG changeset patch\n")
527 fp.write("# User %s\n" % ctx.user()) 527 fp.write("# User %s\n" % ctx.user())
528 fp.write("# Date %d %d\n" % ctx.date()) 528 fp.write("# Date %d %d\n" % ctx.date())