Merged revisions 81881-81882 via svnmerge from

svn+ssh://pythondev@svn.python.org/python/trunk

........
  r81881 | andrew.kuchling | 2010-06-10 19:16:08 -0500 (Thu, 10 Jun 2010) | 1 line

  #5753: update demo.c to use PySys_SetArgvEx(), and add a comment
........
  r81882 | andrew.kuchling | 2010-06-10 19:23:01 -0500 (Thu, 10 Jun 2010) | 1 line

  #5753: Suggest PySys_SetArgvEx() instead of PySys_SetArgv()
........
This commit is contained in:
Benjamin Peterson 2010-06-27 21:48:35 +00:00
parent 3e5cd1d04e
commit 2ebf8ce488
2 changed files with 16 additions and 7 deletions

View File

@ -20,10 +20,19 @@ main(int argc, char **argv)
Py_Initialize(); Py_Initialize();
/* Define sys.argv. It is up to the application if you /* Define sys.argv. It is up to the application if you
want this; you can also let it undefined (since the Python want this; you can also leave it undefined (since the Python
code is generally not a main program it has no business code is generally not a main program it has no business
touching sys.argv...) */ touching sys.argv...)
PySys_SetArgv(2, args);
If the third argument is true, sys.path is modified to include
either the directory containing the script named by argv[0], or
the current working directory. This can be risky; if you run
an application embedding Python in a directory controlled by
someone else, attackers could put a Trojan-horse module in the
directory (say, a file named os.py) that your application would
then import and run.
*/
PySys_SetArgvEx(argc, argv, 0);
/* Do some application specific code */ /* Do some application specific code */
printf("Hello, brave new world\n\n"); printf("Hello, brave new world\n\n");

View File

@ -519,12 +519,12 @@ the table of loaded modules, and creates the fundamental modules
:mod:`builtins`, :mod:`__main__`, :mod:`sys`, and :mod:`exceptions`. It also :mod:`builtins`, :mod:`__main__`, :mod:`sys`, and :mod:`exceptions`. It also
initializes the module search path (``sys.path``). initializes the module search path (``sys.path``).
.. index:: single: PySys_SetArgv() .. index:: single: PySys_SetArgvEx()
:cfunc:`Py_Initialize` does not set the "script argument list" (``sys.argv``). :cfunc:`Py_Initialize` does not set the "script argument list" (``sys.argv``).
If this variable is needed by Python code that will be executed later, it must If this variable is needed by Python code that will be executed later, it must
be set explicitly with a call to ``PySys_SetArgv(argc, argv)`` subsequent to be set explicitly with a call to ``PySys_SetArgvEx(argc, argv, updatepath)``
the call to :cfunc:`Py_Initialize`. after the call to :cfunc:`Py_Initialize`.
On most systems (in particular, on Unix and Windows, although the details are On most systems (in particular, on Unix and Windows, although the details are
slightly different), :cfunc:`Py_Initialize` calculates the module search path slightly different), :cfunc:`Py_Initialize` calculates the module search path