summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Lib/webbrowser.py2
-rw-r--r--Modules/posixmodule.c33
-rw-r--r--PCbuild/python20.dsp4
-rw-r--r--Tools/idle/EditorWindow.py5
4 files changed, 39 insertions, 5 deletions
diff --git a/Lib/webbrowser.py b/Lib/webbrowser.py
index 66cdbff..a8b0e8b 100644
--- a/Lib/webbrowser.py
+++ b/Lib/webbrowser.py
@@ -183,7 +183,7 @@ register("grail", Grail)
class WindowsDefault:
def open(self, url, new=0):
- self.junk = os.popen("start " + url)
+ os.startfile(url)
def open_new(self, url):
self.open(url)
diff --git a/Modules/posixmodule.c b/Modules/posixmodule.c
index e46d68a..71a880f 100644
--- a/Modules/posixmodule.c
+++ b/Modules/posixmodule.c
@@ -5102,6 +5102,38 @@ posix_abort(PyObject *self, PyObject *args)
return NULL;
}
+#ifdef MS_WIN32
+static char win32_startfile__doc__[] = "\
+startfile(filepath) - Start a file with its associated application.\n\
+\n\
+This acts like double-clicking the file in Explorer, or giving the file\n\
+name as an argument to the DOS \"start\" command: the file is opened\n\
+with whatever application (if any) its extension is associated.\n\
+\n\
+startfile returns as soon as the associated application is launched.\n\
+There is no option to wait for the application to close, and no way\n\
+to retrieve the application's exit status.\n\
+\n\
+The filepath is relative to the current directory. If you want to use\n\
+an absolute path, make sure the first character is not a slash (\"/\");\n\
+the underlying Win32 ShellExecute function doesn't work if it is.";
+
+static PyObject *
+win32_startfile(PyObject *self, PyObject *args)
+{
+ char *filepath;
+ HINSTANCE rc;
+ if (!PyArg_ParseTuple(args, "s:startfile", &filepath))
+ return NULL;
+ Py_BEGIN_ALLOW_THREADS
+ rc = ShellExecute((HWND)0, NULL, filepath, NULL, NULL, SW_SHOWNORMAL);
+ Py_END_ALLOW_THREADS
+ if (rc <= (HINSTANCE)32)
+ return win32_error("startfile", filepath);
+ Py_INCREF(Py_None);
+ return Py_None;
+}
+#endif
static PyMethodDef posix_methods[] = {
{"access", posix_access, METH_VARARGS, posix_access__doc__},
@@ -5205,6 +5237,7 @@ static PyMethodDef posix_methods[] = {
{"popen2", win32_popen2, METH_VARARGS},
{"popen3", win32_popen3, METH_VARARGS},
{"popen4", win32_popen4, METH_VARARGS},
+ {"startfile", win32_startfile, METH_VARARGS, win32_startfile__doc__},
#endif
#endif /* HAVE_POPEN */
#ifdef HAVE_SETUID
diff --git a/PCbuild/python20.dsp b/PCbuild/python20.dsp
index 4ad5c30..f6e2113 100644
--- a/PCbuild/python20.dsp
+++ b/PCbuild/python20.dsp
@@ -57,7 +57,7 @@ BSC32=bscmake.exe
# ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /machine:I386
-# ADD LINK32 largeint.lib kernel32.lib user32.lib advapi32.lib /nologo /base:"0x1e100000" /subsystem:windows /dll /debug /machine:I386 /nodefaultlib:"libc"
+# ADD LINK32 largeint.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /base:"0x1e100000" /subsystem:windows /dll /debug /machine:I386 /nodefaultlib:"libc"
# SUBTRACT LINK32 /pdb:none
!ELSEIF "$(CFG)" == "python20 - Win32 Debug"
@@ -88,7 +88,7 @@ BSC32=bscmake.exe
# ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /debug /machine:I386 /pdbtype:sept
-# ADD LINK32 largeint.lib kernel32.lib user32.lib advapi32.lib /nologo /base:"0x1e100000" /subsystem:windows /dll /debug /machine:I386 /nodefaultlib:"libc" /out:"./python20_d.dll" /pdbtype:sept
+# ADD LINK32 largeint.lib kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /base:"0x1e100000" /subsystem:windows /dll /debug /machine:I386 /nodefaultlib:"libc" /out:"./python20_d.dll" /pdbtype:sept
# SUBTRACT LINK32 /pdb:none
!ELSEIF "$(CFG)" == "python20 - Win32 Alpha Debug"
diff --git a/Tools/idle/EditorWindow.py b/Tools/idle/EditorWindow.py
index 5feda4b..589b0ab 100644
--- a/Tools/idle/EditorWindow.py
+++ b/Tools/idle/EditorWindow.py
@@ -297,8 +297,9 @@ class EditorWindow:
help_url = "http://www.python.org/doc/current/"
if sys.platform[:3] == "win":
- fn = os.path.dirname(os.path.dirname(os.path.dirname(__file__)))
- fn = os.path.join(fn, "Doc", "index.html")
+ fn = os.path.dirname(__file__)
+ fn = os.path.join(fn, "../../Doc/index.html")
+ fn = os.path.normpath(fn)
if os.path.isfile(fn):
help_url = fn
del fn