Mercurial > public > mercurial-scm > hg
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()) |