From c5e448524818df5858e1fe98ce81aeb5ca3a14c4 Mon Sep 17 00:00:00 2001 From: Nick Coghlan Date: Wed, 28 Apr 2010 14:51:08 +0000 Subject: [PATCH] Issue 8202: when using the -m command line switch, sys.argv[0] is now '-m' instead of '-c' while searching for the module to be executed --- Doc/using/cmdline.rst | 5 +++-- Misc/NEWS | 4 ++++ Modules/main.c | 4 ++-- 3 files changed, 9 insertions(+), 4 deletions(-) diff --git a/Doc/using/cmdline.rst b/Doc/using/cmdline.rst index a44422803b0..0199f9fee3d 100644 --- a/Doc/using/cmdline.rst +++ b/Doc/using/cmdline.rst @@ -95,8 +95,9 @@ source. file is not available. If this option is given, the first element of :data:`sys.argv` will be the - full path to the module file. As with the :option:`-c` option, the current - directory will be added to the start of :data:`sys.path`. + full path to the module file (while the module file is being located, the + first element will be set to ``"-m"``). As with the :option:`-c` option, + the current directory will be added to the start of :data:`sys.path`. Many standard library modules contain code that is invoked on their execution as a script. An example is the :mod:`timeit` module:: diff --git a/Misc/NEWS b/Misc/NEWS index 9fe0fcab574..e38701727b0 100644 --- a/Misc/NEWS +++ b/Misc/NEWS @@ -12,6 +12,10 @@ What's New in Python 2.7 beta 2? Core and Builtins ----------------- +- Issue #8202: sys.argv[0] is now set to '-m' instead of '-c' when + searching for the module file to be executed with the -m command + line option + - Issue #7319: When -Q is used, do not silence DeprecationWarning. - Issue #7332: Remove the 16KB stack-based buffer in diff --git a/Modules/main.c b/Modules/main.c index 11ac97e6938..2f5dc579e2b 100644 --- a/Modules/main.c +++ b/Modules/main.c @@ -519,10 +519,10 @@ Py_Main(int argc, char **argv) } if (module != NULL) { - /* Backup _PyOS_optind and force sys.argv[0] = '-c' + /* Backup _PyOS_optind and force sys.argv[0] = '-m' so that PySys_SetArgv correctly sets sys.path[0] to ''*/ _PyOS_optind--; - argv[_PyOS_optind] = "-c"; + argv[_PyOS_optind] = "-m"; } PySys_SetArgv(argc-_PyOS_optind, argv+_PyOS_optind);