[Python-3000-checkins] r66961 - in python/branches/py3k: Demo/embed/demo.c Misc/NEWS

martin.v.loewis python-3000-checkins at python.org
Fri Oct 17 17:54:44 CEST 2008


Author: martin.v.loewis
Date: Fri Oct 17 17:54:44 2008
New Revision: 66961

Log:
Issue #3717: Fix Demo/embed/demo.c.
Reviewed by Benjamin Peterson.


Modified:
   python/branches/py3k/Demo/embed/demo.c
   python/branches/py3k/Misc/NEWS

Modified: python/branches/py3k/Demo/embed/demo.c
==============================================================================
--- python/branches/py3k/Demo/embed/demo.c	(original)
+++ python/branches/py3k/Demo/embed/demo.c	Fri Oct 17 17:54:44 2008
@@ -2,34 +2,38 @@
 
 #include "Python.h"
 
-void initxyzzy(void); /* Forward */
+PyObject* PyInit_xyzzy(void); /* Forward */
 
 main(int argc, char **argv)
 {
+	/* Ignore passed-in argc/argv. If desired, conversion
+	   should use mbstowcs to convert them. */
+	wchar_t *args[] = {L"embed", L"hello", 0};
+
 	/* Pass argv[0] to the Python interpreter */
-	Py_SetProgramName(argv[0]);
+	Py_SetProgramName(args[0]);
+
+	/* Add a static module */
+	PyImport_AppendInittab("xyzzy", PyInit_xyzzy);
 
 	/* Initialize the Python interpreter.  Required. */
 	Py_Initialize();
 
-	/* Add a static module */
-	initxyzzy();
-
 	/* Define sys.argv.  It is up to the application if you
 	   want this; you can also let it undefined (since the Python 
 	   code is generally not a main program it has no business
 	   touching sys.argv...) */
-	PySys_SetArgv(argc, argv);
+	PySys_SetArgv(2, args);
 
 	/* Do some application specific code */
 	printf("Hello, brave new world\n\n");
 
 	/* Execute some Python statements (in module __main__) */
 	PyRun_SimpleString("import sys\n");
-	PyRun_SimpleString("print sys.builtin_module_names\n");
-	PyRun_SimpleString("print sys.modules.keys()\n");
-	PyRun_SimpleString("print sys.executable\n");
-	PyRun_SimpleString("print sys.argv\n");
+	PyRun_SimpleString("print(sys.builtin_module_names)\n");
+	PyRun_SimpleString("print(sys.modules.keys())\n");
+	PyRun_SimpleString("print(sys.executable)\n");
+	PyRun_SimpleString("print(sys.argv)\n");
 
 	/* Note that you can call any public function of the Python
 	   interpreter here, e.g. call_object(). */
@@ -57,9 +61,20 @@
 	{NULL,		NULL}		/* sentinel */
 };
 
-void
-initxyzzy(void)
+static struct PyModuleDef xyzzymodule = {
+	{}, /* m_base */
+	"xyzzy",  /* m_name */
+	0,  /* m_doc */
+	0,  /* m_size */
+	xyzzy_methods,  /* m_methods */
+	0,  /* m_reload */
+	0,  /* m_traverse */
+	0,  /* m_clear */
+	0,  /* m_free */
+};
+
+PyObject*
+PyInit_xyzzy(void)
 {
-	PyImport_AddModule("xyzzy");
-	Py_InitModule("xyzzy", xyzzy_methods);
+	return PyModule_Create(&xyzzymodule);
 }

Modified: python/branches/py3k/Misc/NEWS
==============================================================================
--- python/branches/py3k/Misc/NEWS	(original)
+++ python/branches/py3k/Misc/NEWS	Fri Oct 17 17:54:44 2008
@@ -74,6 +74,8 @@
 Tools/Demos
 -----------
 
+- Issue #3717: Fix Demo/embed/demo.c.
+
 - Issue #4072: Add a distutils demo for build_py_2to3.
 
 


More information about the Python-3000-checkins mailing list