~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/msgeditor.py

  • Committer: Martin Pool
  • Date: 2010-01-12 04:31:02 UTC
  • mto: This revision was merged to the branch mainline in revision 4950.
  • Revision ID: mbp@sourcefrog.net-20100112043102-h3bametv7uokva2p
If there's an OS error running a user-specified editor, always show it,
regardless of errno.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
# Copyright (C) 2005, 2006 Canonical Ltd
 
1
# Copyright (C) 2005, 2006, 2009 Canonical Ltd
2
2
#
3
3
# This program is free software; you can redistribute it and/or modify
4
4
# it under the terms of the GNU General Public License as published by
63
63
            ## mutter("trying editor: %r", (edargs +[filename]))
64
64
            x = call(edargs + [filename])
65
65
        except OSError, e:
66
 
            # We're searching for an editor, so catch safe errors and continue
67
 
            # errno 193 is ERROR_BAD_EXE_FORMAT on Windows. Python2.4 uses the
68
 
            # winerror for errno. Python2.5+ use errno ENOEXEC and set winerror
69
 
            # to 193. However, catching 193 here should be fine. Other
70
 
            # platforms aren't likely to have that high of an error. And even
71
 
            # if they do, it is still reasonable to fall back to the next
72
 
            # editor.
73
 
            # 123 is "The Filename, Directory Name, or Volume Label Syntax Is
74
 
            # Incorrect" (see
75
 
            # <https://bugs.edge.launchpad.net/bzr/+bug/504842>)
76
 
            if e.errno in (errno.ENOENT, errno.EACCES, errno.ENOEXEC, 193, 123):
77
 
                if candidate_source is not None:
78
 
                    # We tried this editor because some user configuration (an
79
 
                    # environment variable or config file) said to try it.  Let
80
 
                    # the user know their configuration is broken.
81
 
                    trace.warning(
82
 
                        'Could not start editor "%s" (specified by %s): %s\n'
83
 
                        % (candidate, candidate_source, str(e)))
84
 
                continue
 
66
            if candidate_source is not None:
 
67
                # We tried this editor because some user configuration (an
 
68
                # environment variable or config file) said to try it.  Let
 
69
                # the user know their configuration is broken.
 
70
                trace.warning(
 
71
                    'Could not start editor "%s" (specified by %s): %s\n'
 
72
                    % (candidate, candidate_source, str(e)))
 
73
            continue
85
74
            raise
86
75
        if x == 0:
87
76
            return True