Mercurial > hg-stable
comparison mercurial/ui.py @ 508:42a660abaf75
[PATCH] Harden os.system
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
[PATCH] Harden os.system
From: Bryan O'Sullivan <bos@serpentine.com>
Add util.system function. This is similar to os.system, but will
either succeed (if the process finishes with a zero exit code) or raise
a util.CommandError (if the process exits uncleanly or is killed by
a signal).
Add util.explain_exit function. This tends to be ubiquitous in code
that calls other processes, and must describe what has gone wrong.
Change some uses of os.system over to util.system.
manifest hash: e3bf4adcac5b915432ec0af00efdbcef86bea4b1
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.0 (GNU/Linux)
iD8DBQFCwSipywK+sNU5EO8RAr0RAJkBDt8XQ7mYQAWNHNgTOVt1eyWU1QCfe1oO
2OwxyWqpbRNACVJHHfZ3/Xw=
=OaRX
-----END PGP SIGNATURE-----
author | mpm@selenic.com |
---|---|
date | Tue, 28 Jun 2005 02:38:33 -0800 |
parents | 1f81ebff98c9 |
children | 03f27b1381f9 |
comparison
equal
deleted
inserted
replaced
507:dd8b19114fe7 | 508:42a660abaf75 |
---|---|
3 # Copyright 2005 Matt Mackall <mpm@selenic.com> | 3 # Copyright 2005 Matt Mackall <mpm@selenic.com> |
4 # | 4 # |
5 # This software may be used and distributed according to the terms | 5 # This software may be used and distributed according to the terms |
6 # of the GNU General Public License, incorporated herein by reference. | 6 # of the GNU General Public License, incorporated herein by reference. |
7 | 7 |
8 import os, sys, re, ConfigParser | 8 import os, sys, re, ConfigParser, util |
9 | 9 |
10 class ui: | 10 class ui: |
11 def __init__(self, verbose=False, debug=False, quiet=False, | 11 def __init__(self, verbose=False, debug=False, quiet=False, |
12 interactive=True): | 12 interactive=True): |
13 self.cdata = ConfigParser.SafeConfigParser() | 13 self.cdata = ConfigParser.SafeConfigParser() |
76 f = os.fdopen(fd, "w") | 76 f = os.fdopen(fd, "w") |
77 f.write(text) | 77 f.write(text) |
78 f.close() | 78 f.close() |
79 | 79 |
80 editor = os.environ.get("HGEDITOR") or os.environ.get("EDITOR", "vi") | 80 editor = os.environ.get("HGEDITOR") or os.environ.get("EDITOR", "vi") |
81 r = os.system("%s %s" % (editor, name)) | 81 util.system("%s %s" % (editor, name), errprefix = "edit failed") |
82 | |
83 if r: | |
84 raise "Edit failed!" | |
85 | 82 |
86 t = open(name).read() | 83 t = open(name).read() |
87 t = re.sub("(?m)^HG:.*\n", "", t) | 84 t = re.sub("(?m)^HG:.*\n", "", t) |
88 | 85 |
89 return t | 86 return t |