Mercurial > cpython-lru_cache-weakref
annotate Python/sysmodule.c @ 29877:72cbc41ccc2f legacy-trunk
Fix [ 771097 ] frozen programs fail due to implicit import of "warnings".
If the initial import of warnings fails, clear the error. When the module
is actually needed, if the original import failed, see if it has managed
to find its way to sys.modules yet and if so, remember it.
| author | Mark Hammond <mhammond@skippinet.com.au> |
|---|---|
| date | Tue, 15 Jul 2003 23:03:55 +0000 |
| parents | e9e5832d706f |
| children | a88e6dfbfd6d |
| rev | line source |
|---|---|
| 145 | 1 |
| 6 | 2 /* System module */ |
| 3 | |
| 4 /* | |
| 5 Various bits of information used by the interpreter are collected in | |
| 6 module 'sys'. | |
| 86 | 7 Function member: |
|
2586
ae131b8b4e31
fix comment about exit()
Guido van Rossum <guido@python.org>
parents:
2421
diff
changeset
|
8 - exit(sts): raise SystemExit |
| 6 | 9 Data members: |
| 10 - stdin, stdout, stderr: standard file objects | |
| 86 | 11 - modules: the table of modules (dictionary) |
| 6 | 12 - path: module search path (list of strings) |
| 86 | 13 - argv: script arguments (list of strings) |
| 14 - ps1, ps2: optional primary and secondary prompts (strings) | |
| 6 | 15 */ |
| 16 | |
| 5372 | 17 #include "Python.h" |
|
15487
f0ca4c67957b
_getframe(): New sys module function for getting at the stack frame.
Barry Warsaw <barry@python.org>
parents:
14375
diff
changeset
|
18 #include "compile.h" |
|
f0ca4c67957b
_getframe(): New sys module function for getting at the stack frame.
Barry Warsaw <barry@python.org>
parents:
14375
diff
changeset
|
19 #include "frameobject.h" |
|
28556
78395e5b4782
- New function sys.call_tracing() allows pdb to debug code
Guido van Rossum <guido@python.org>
parents:
28174
diff
changeset
|
20 #include "eval.h" |
| 86 | 21 |
|
710
bc5c77fa8006
Added settrace() and setprofile().
Guido van Rossum <guido@python.org>
parents:
631
diff
changeset
|
22 #include "osdefs.h" |
| 86 | 23 |
|
25666
4a825b902310
Add os.path.supports_unicode_filenames for all platforms,
Mark Hammond <mhammond@skippinet.com.au>
parents:
25108
diff
changeset
|
24 #ifdef MS_WINDOWS |
|
4a825b902310
Add os.path.supports_unicode_filenames for all platforms,
Mark Hammond <mhammond@skippinet.com.au>
parents:
25108
diff
changeset
|
25 #define WIN32_LEAN_AND_MEAN |
|
4a825b902310
Add os.path.supports_unicode_filenames for all platforms,
Mark Hammond <mhammond@skippinet.com.au>
parents:
25108
diff
changeset
|
26 #include "windows.h" |
|
4a825b902310
Add os.path.supports_unicode_filenames for all platforms,
Mark Hammond <mhammond@skippinet.com.au>
parents:
25108
diff
changeset
|
27 #endif /* MS_WINDOWS */ |
|
4a825b902310
Add os.path.supports_unicode_filenames for all platforms,
Mark Hammond <mhammond@skippinet.com.au>
parents:
25108
diff
changeset
|
28 |
|
4291
1427d61f1307
Rationalized MS ifdefs
Guido van Rossum <guido@python.org>
parents:
4256
diff
changeset
|
29 #ifdef MS_COREDLL |
|
3490
1dfc519ea3cb
Under NT, define sys.dllhandle and sys.winver (Mark H.).
Guido van Rossum <guido@python.org>
parents:
3326
diff
changeset
|
30 extern void *PyWin_DLLhModule; |
|
6352
b62a7a59414e
Get DLL version from a variable.
Guido van Rossum <guido@python.org>
parents:
5955
diff
changeset
|
31 /* A string loaded from the DLL at startup: */ |
|
b62a7a59414e
Get DLL version from a variable.
Guido van Rossum <guido@python.org>
parents:
5955
diff
changeset
|
32 extern const char *PyWin_DLLVersionString; |
|
3490
1dfc519ea3cb
Under NT, define sys.dllhandle and sys.winver (Mark H.).
Guido van Rossum <guido@python.org>
parents:
3326
diff
changeset
|
33 #endif |
|
1dfc519ea3cb
Under NT, define sys.dllhandle and sys.winver (Mark H.).
Guido van Rossum <guido@python.org>
parents:
3326
diff
changeset
|
34 |
|
28949
ac487a7f7f2c
Patch #708495: Port more stuff to OpenVMS.
Martin v. Löwis <martin@v.loewis.de>
parents:
28556
diff
changeset
|
35 #ifdef __VMS |
|
ac487a7f7f2c
Patch #708495: Port more stuff to OpenVMS.
Martin v. Löwis <martin@v.loewis.de>
parents:
28556
diff
changeset
|
36 #include <unixlib.h> |
|
ac487a7f7f2c
Patch #708495: Port more stuff to OpenVMS.
Martin v. Löwis <martin@v.loewis.de>
parents:
28556
diff
changeset
|
37 #endif |
|
ac487a7f7f2c
Patch #708495: Port more stuff to OpenVMS.
Martin v. Löwis <martin@v.loewis.de>
parents:
28556
diff
changeset
|
38 |
|
29065
bf1634b023d5
Patch #612627: Add encoding attribute to file objects, and determine
Martin v. Löwis <martin@v.loewis.de>
parents:
28949
diff
changeset
|
39 #ifdef MS_WINDOWS |
|
bf1634b023d5
Patch #612627: Add encoding attribute to file objects, and determine
Martin v. Löwis <martin@v.loewis.de>
parents:
28949
diff
changeset
|
40 #include <windows.h> |
|
bf1634b023d5
Patch #612627: Add encoding attribute to file objects, and determine
Martin v. Löwis <martin@v.loewis.de>
parents:
28949
diff
changeset
|
41 #endif |
|
bf1634b023d5
Patch #612627: Add encoding attribute to file objects, and determine
Martin v. Löwis <martin@v.loewis.de>
parents:
28949
diff
changeset
|
42 |
|
bf1634b023d5
Patch #612627: Add encoding attribute to file objects, and determine
Martin v. Löwis <martin@v.loewis.de>
parents:
28949
diff
changeset
|
43 #ifdef HAVE_LANGINFO_H |
|
bf1634b023d5
Patch #612627: Add encoding attribute to file objects, and determine
Martin v. Löwis <martin@v.loewis.de>
parents:
28949
diff
changeset
|
44 #include <locale.h> |
|
bf1634b023d5
Patch #612627: Add encoding attribute to file objects, and determine
Martin v. Löwis <martin@v.loewis.de>
parents:
28949
diff
changeset
|
45 #include <langinfo.h> |
|
bf1634b023d5
Patch #612627: Add encoding attribute to file objects, and determine
Martin v. Löwis <martin@v.loewis.de>
parents:
28949
diff
changeset
|
46 #endif |
|
bf1634b023d5
Patch #612627: Add encoding attribute to file objects, and determine
Martin v. Löwis <martin@v.loewis.de>
parents:
28949
diff
changeset
|
47 |
| 5372 | 48 PyObject * |
|
13658
f79434ee41fa
Mass ANSIfication of function definitions. Doesn't cover all 'extern'
Thomas Wouters <thomas@python.org>
parents:
13447
diff
changeset
|
49 PySys_GetObject(char *name) |
| 6 | 50 { |
|
5926
8d2194e22e67
The last of the mass checkins for separate (sub)interpreters.
Guido van Rossum <guido@python.org>
parents:
5863
diff
changeset
|
51 PyThreadState *tstate = PyThreadState_Get(); |
|
8d2194e22e67
The last of the mass checkins for separate (sub)interpreters.
Guido van Rossum <guido@python.org>
parents:
5863
diff
changeset
|
52 PyObject *sd = tstate->interp->sysdict; |
|
11374
66216f32403d
In PySys_GetObject(), it's possible that tstate->interp->sysdict is
Guido van Rossum <guido@python.org>
parents:
9964
diff
changeset
|
53 if (sd == NULL) |
|
66216f32403d
In PySys_GetObject(), it's possible that tstate->interp->sysdict is
Guido van Rossum <guido@python.org>
parents:
9964
diff
changeset
|
54 return NULL; |
|
5926
8d2194e22e67
The last of the mass checkins for separate (sub)interpreters.
Guido van Rossum <guido@python.org>
parents:
5863
diff
changeset
|
55 return PyDict_GetItemString(sd, name); |
| 6 | 56 } |
| 57 | |
| 58 FILE * | |
|
13658
f79434ee41fa
Mass ANSIfication of function definitions. Doesn't cover all 'extern'
Thomas Wouters <thomas@python.org>
parents:
13447
diff
changeset
|
59 PySys_GetFile(char *name, FILE *def) |
| 6 | 60 { |
| 61 FILE *fp = NULL; | |
| 5372 | 62 PyObject *v = PySys_GetObject(name); |
| 63 if (v != NULL && PyFile_Check(v)) | |
| 64 fp = PyFile_AsFile(v); | |
| 6 | 65 if (fp == NULL) |
| 66 fp = def; | |
| 67 return fp; | |
| 68 } | |
| 69 | |
| 70 int | |
|
13658
f79434ee41fa
Mass ANSIfication of function definitions. Doesn't cover all 'extern'
Thomas Wouters <thomas@python.org>
parents:
13447
diff
changeset
|
71 PySys_SetObject(char *name, PyObject *v) |
| 6 | 72 { |
|
5926
8d2194e22e67
The last of the mass checkins for separate (sub)interpreters.
Guido van Rossum <guido@python.org>
parents:
5863
diff
changeset
|
73 PyThreadState *tstate = PyThreadState_Get(); |
|
8d2194e22e67
The last of the mass checkins for separate (sub)interpreters.
Guido van Rossum <guido@python.org>
parents:
5863
diff
changeset
|
74 PyObject *sd = tstate->interp->sysdict; |
|
631
f5a2bc39e10e
sysset(name, NULL) does nothing if sys.name is undefined
Guido van Rossum <guido@python.org>
parents:
596
diff
changeset
|
75 if (v == NULL) { |
|
5926
8d2194e22e67
The last of the mass checkins for separate (sub)interpreters.
Guido van Rossum <guido@python.org>
parents:
5863
diff
changeset
|
76 if (PyDict_GetItemString(sd, name) == NULL) |
|
631
f5a2bc39e10e
sysset(name, NULL) does nothing if sys.name is undefined
Guido van Rossum <guido@python.org>
parents:
596
diff
changeset
|
77 return 0; |
|
f5a2bc39e10e
sysset(name, NULL) does nothing if sys.name is undefined
Guido van Rossum <guido@python.org>
parents:
596
diff
changeset
|
78 else |
|
5926
8d2194e22e67
The last of the mass checkins for separate (sub)interpreters.
Guido van Rossum <guido@python.org>
parents:
5863
diff
changeset
|
79 return PyDict_DelItemString(sd, name); |
|
631
f5a2bc39e10e
sysset(name, NULL) does nothing if sys.name is undefined
Guido van Rossum <guido@python.org>
parents:
596
diff
changeset
|
80 } |
| 6 | 81 else |
|
5926
8d2194e22e67
The last of the mass checkins for separate (sub)interpreters.
Guido van Rossum <guido@python.org>
parents:
5863
diff
changeset
|
82 return PyDict_SetItemString(sd, name, v); |
| 6 | 83 } |
| 84 | |
| 5372 | 85 static PyObject * |
|
19301
b9701538f827
Patch #427190: Implement and use METH_NOARGS and METH_O.
Martin v. Löwis <martin@v.loewis.de>
parents:
18805
diff
changeset
|
86 sys_displayhook(PyObject *self, PyObject *o) |
|
15811
1a00d21910c8
Implementation of PEP-0217.
Moshe Zadka <moshez@math.huji.ac.il>
parents:
15595
diff
changeset
|
87 { |
|
19301
b9701538f827
Patch #427190: Implement and use METH_NOARGS and METH_O.
Martin v. Löwis <martin@v.loewis.de>
parents:
18805
diff
changeset
|
88 PyObject *outf; |
|
15811
1a00d21910c8
Implementation of PEP-0217.
Moshe Zadka <moshez@math.huji.ac.il>
parents:
15595
diff
changeset
|
89 PyInterpreterState *interp = PyThreadState_Get()->interp; |
|
1a00d21910c8
Implementation of PEP-0217.
Moshe Zadka <moshez@math.huji.ac.il>
parents:
15595
diff
changeset
|
90 PyObject *modules = interp->modules; |
|
1a00d21910c8
Implementation of PEP-0217.
Moshe Zadka <moshez@math.huji.ac.il>
parents:
15595
diff
changeset
|
91 PyObject *builtins = PyDict_GetItemString(modules, "__builtin__"); |
|
1a00d21910c8
Implementation of PEP-0217.
Moshe Zadka <moshez@math.huji.ac.il>
parents:
15595
diff
changeset
|
92 |
|
18805
4462c57f6c94
Patch number #422106 by Greg Ball, to fix segmentation
Moshe Zadka <moshez@math.huji.ac.il>
parents:
18689
diff
changeset
|
93 if (builtins == NULL) { |
|
4462c57f6c94
Patch number #422106 by Greg Ball, to fix segmentation
Moshe Zadka <moshez@math.huji.ac.il>
parents:
18689
diff
changeset
|
94 PyErr_SetString(PyExc_RuntimeError, "lost __builtin__"); |
|
4462c57f6c94
Patch number #422106 by Greg Ball, to fix segmentation
Moshe Zadka <moshez@math.huji.ac.il>
parents:
18689
diff
changeset
|
95 return NULL; |
|
4462c57f6c94
Patch number #422106 by Greg Ball, to fix segmentation
Moshe Zadka <moshez@math.huji.ac.il>
parents:
18689
diff
changeset
|
96 } |
|
4462c57f6c94
Patch number #422106 by Greg Ball, to fix segmentation
Moshe Zadka <moshez@math.huji.ac.il>
parents:
18689
diff
changeset
|
97 |
|
15811
1a00d21910c8
Implementation of PEP-0217.
Moshe Zadka <moshez@math.huji.ac.il>
parents:
15595
diff
changeset
|
98 /* Print value except if None */ |
|
1a00d21910c8
Implementation of PEP-0217.
Moshe Zadka <moshez@math.huji.ac.il>
parents:
15595
diff
changeset
|
99 /* After printing, also assign to '_' */ |
|
1a00d21910c8
Implementation of PEP-0217.
Moshe Zadka <moshez@math.huji.ac.il>
parents:
15595
diff
changeset
|
100 /* Before, set '_' to None to avoid recursion */ |
|
1a00d21910c8
Implementation of PEP-0217.
Moshe Zadka <moshez@math.huji.ac.il>
parents:
15595
diff
changeset
|
101 if (o == Py_None) { |
|
1a00d21910c8
Implementation of PEP-0217.
Moshe Zadka <moshez@math.huji.ac.il>
parents:
15595
diff
changeset
|
102 Py_INCREF(Py_None); |
|
1a00d21910c8
Implementation of PEP-0217.
Moshe Zadka <moshez@math.huji.ac.il>
parents:
15595
diff
changeset
|
103 return Py_None; |
|
1a00d21910c8
Implementation of PEP-0217.
Moshe Zadka <moshez@math.huji.ac.il>
parents:
15595
diff
changeset
|
104 } |
|
1a00d21910c8
Implementation of PEP-0217.
Moshe Zadka <moshez@math.huji.ac.il>
parents:
15595
diff
changeset
|
105 if (PyObject_SetAttrString(builtins, "_", Py_None) != 0) |
|
1a00d21910c8
Implementation of PEP-0217.
Moshe Zadka <moshez@math.huji.ac.il>
parents:
15595
diff
changeset
|
106 return NULL; |
|
1a00d21910c8
Implementation of PEP-0217.
Moshe Zadka <moshez@math.huji.ac.il>
parents:
15595
diff
changeset
|
107 if (Py_FlushLine() != 0) |
|
1a00d21910c8
Implementation of PEP-0217.
Moshe Zadka <moshez@math.huji.ac.il>
parents:
15595
diff
changeset
|
108 return NULL; |
|
15812
a563eec46c1a
stdout is sometimes a macro; use "outf" instead.
Greg Stein <gstein@lyra.org>
parents:
15811
diff
changeset
|
109 outf = PySys_GetObject("stdout"); |
|
a563eec46c1a
stdout is sometimes a macro; use "outf" instead.
Greg Stein <gstein@lyra.org>
parents:
15811
diff
changeset
|
110 if (outf == NULL) { |
|
15811
1a00d21910c8
Implementation of PEP-0217.
Moshe Zadka <moshez@math.huji.ac.il>
parents:
15595
diff
changeset
|
111 PyErr_SetString(PyExc_RuntimeError, "lost sys.stdout"); |
|
1a00d21910c8
Implementation of PEP-0217.
Moshe Zadka <moshez@math.huji.ac.il>
parents:
15595
diff
changeset
|
112 return NULL; |
|
1a00d21910c8
Implementation of PEP-0217.
Moshe Zadka <moshez@math.huji.ac.il>
parents:
15595
diff
changeset
|
113 } |
|
15812
a563eec46c1a
stdout is sometimes a macro; use "outf" instead.
Greg Stein <gstein@lyra.org>
parents:
15811
diff
changeset
|
114 if (PyFile_WriteObject(o, outf, 0) != 0) |
|
15811
1a00d21910c8
Implementation of PEP-0217.
Moshe Zadka <moshez@math.huji.ac.il>
parents:
15595
diff
changeset
|
115 return NULL; |
|
15812
a563eec46c1a
stdout is sometimes a macro; use "outf" instead.
Greg Stein <gstein@lyra.org>
parents:
15811
diff
changeset
|
116 PyFile_SoftSpace(outf, 1); |
|
15811
1a00d21910c8
Implementation of PEP-0217.
Moshe Zadka <moshez@math.huji.ac.il>
parents:
15595
diff
changeset
|
117 if (Py_FlushLine() != 0) |
|
1a00d21910c8
Implementation of PEP-0217.
Moshe Zadka <moshez@math.huji.ac.il>
parents:
15595
diff
changeset
|
118 return NULL; |
|
1a00d21910c8
Implementation of PEP-0217.
Moshe Zadka <moshez@math.huji.ac.il>
parents:
15595
diff
changeset
|
119 if (PyObject_SetAttrString(builtins, "_", o) != 0) |
|
1a00d21910c8
Implementation of PEP-0217.
Moshe Zadka <moshez@math.huji.ac.il>
parents:
15595
diff
changeset
|
120 return NULL; |
|
1a00d21910c8
Implementation of PEP-0217.
Moshe Zadka <moshez@math.huji.ac.il>
parents:
15595
diff
changeset
|
121 Py_INCREF(Py_None); |
|
1a00d21910c8
Implementation of PEP-0217.
Moshe Zadka <moshez@math.huji.ac.il>
parents:
15595
diff
changeset
|
122 return Py_None; |
|
1a00d21910c8
Implementation of PEP-0217.
Moshe Zadka <moshez@math.huji.ac.il>
parents:
15595
diff
changeset
|
123 } |
|
1a00d21910c8
Implementation of PEP-0217.
Moshe Zadka <moshez@math.huji.ac.il>
parents:
15595
diff
changeset
|
124 |
|
23746
43ddcdcd3c71
Patch #505375: Make doc strings optional.
Martin v. Löwis <martin@v.loewis.de>
parents:
22604
diff
changeset
|
125 PyDoc_STRVAR(displayhook_doc, |
| 17164 | 126 "displayhook(object) -> None\n" |
|
15811
1a00d21910c8
Implementation of PEP-0217.
Moshe Zadka <moshez@math.huji.ac.il>
parents:
15595
diff
changeset
|
127 "\n" |
|
23746
43ddcdcd3c71
Patch #505375: Make doc strings optional.
Martin v. Löwis <martin@v.loewis.de>
parents:
22604
diff
changeset
|
128 "Print an object to sys.stdout and also save it in __builtin__._\n" |
|
43ddcdcd3c71
Patch #505375: Make doc strings optional.
Martin v. Löwis <martin@v.loewis.de>
parents:
22604
diff
changeset
|
129 ); |
| 17164 | 130 |
| 131 static PyObject * | |
| 132 sys_excepthook(PyObject* self, PyObject* args) | |
| 133 { | |
| 134 PyObject *exc, *value, *tb; | |
|
20655
7344687bf2c0
Convert getrefcount() to METH_O, and sys_excepthook() to use
Fred Drake <fdrake@acm.org>
parents:
20247
diff
changeset
|
135 if (!PyArg_UnpackTuple(args, "excepthook", 3, 3, &exc, &value, &tb)) |
| 17164 | 136 return NULL; |
| 137 PyErr_Display(exc, value, tb); | |
| 138 Py_INCREF(Py_None); | |
| 139 return Py_None; | |
| 140 } | |
| 141 | |
|
23746
43ddcdcd3c71
Patch #505375: Make doc strings optional.
Martin v. Löwis <martin@v.loewis.de>
parents:
22604
diff
changeset
|
142 PyDoc_STRVAR(excepthook_doc, |
| 17164 | 143 "excepthook(exctype, value, traceback) -> None\n" |
| 144 "\n" | |
|
23746
43ddcdcd3c71
Patch #505375: Make doc strings optional.
Martin v. Löwis <martin@v.loewis.de>
parents:
22604
diff
changeset
|
145 "Handle an exception by displaying it with a traceback on sys.stderr.\n" |
|
43ddcdcd3c71
Patch #505375: Make doc strings optional.
Martin v. Löwis <martin@v.loewis.de>
parents:
22604
diff
changeset
|
146 ); |
|
15811
1a00d21910c8
Implementation of PEP-0217.
Moshe Zadka <moshez@math.huji.ac.il>
parents:
15595
diff
changeset
|
147 |
|
1a00d21910c8
Implementation of PEP-0217.
Moshe Zadka <moshez@math.huji.ac.il>
parents:
15595
diff
changeset
|
148 static PyObject * |
|
28119
869695cba2cd
- New function sys.exc_clear() clears the current exception. This is
Guido van Rossum <guido@python.org>
parents:
27977
diff
changeset
|
149 sys_exc_info(PyObject *self, PyObject *noargs) |
|
5405
b7871ca930ad
Massive changes for separate thread state management.
Guido van Rossum <guido@python.org>
parents:
5377
diff
changeset
|
150 { |
|
b7871ca930ad
Massive changes for separate thread state management.
Guido van Rossum <guido@python.org>
parents:
5377
diff
changeset
|
151 PyThreadState *tstate; |
|
b7871ca930ad
Massive changes for separate thread state management.
Guido van Rossum <guido@python.org>
parents:
5377
diff
changeset
|
152 tstate = PyThreadState_Get(); |
|
b7871ca930ad
Massive changes for separate thread state management.
Guido van Rossum <guido@python.org>
parents:
5377
diff
changeset
|
153 return Py_BuildValue( |
|
b7871ca930ad
Massive changes for separate thread state management.
Guido van Rossum <guido@python.org>
parents:
5377
diff
changeset
|
154 "(OOO)", |
|
b7871ca930ad
Massive changes for separate thread state management.
Guido van Rossum <guido@python.org>
parents:
5377
diff
changeset
|
155 tstate->exc_type != NULL ? tstate->exc_type : Py_None, |
|
b7871ca930ad
Massive changes for separate thread state management.
Guido van Rossum <guido@python.org>
parents:
5377
diff
changeset
|
156 tstate->exc_value != NULL ? tstate->exc_value : Py_None, |
|
b7871ca930ad
Massive changes for separate thread state management.
Guido van Rossum <guido@python.org>
parents:
5377
diff
changeset
|
157 tstate->exc_traceback != NULL ? |
|
b7871ca930ad
Massive changes for separate thread state management.
Guido van Rossum <guido@python.org>
parents:
5377
diff
changeset
|
158 tstate->exc_traceback : Py_None); |
|
b7871ca930ad
Massive changes for separate thread state management.
Guido van Rossum <guido@python.org>
parents:
5377
diff
changeset
|
159 } |
|
b7871ca930ad
Massive changes for separate thread state management.
Guido van Rossum <guido@python.org>
parents:
5377
diff
changeset
|
160 |
|
23746
43ddcdcd3c71
Patch #505375: Make doc strings optional.
Martin v. Löwis <martin@v.loewis.de>
parents:
22604
diff
changeset
|
161 PyDoc_STRVAR(exc_info_doc, |
|
8566
6e8b0e754a7f
Added doc strings. Maybe the doc string for the module itself is a bit
Guido van Rossum <guido@python.org>
parents:
8314
diff
changeset
|
162 "exc_info() -> (type, value, traceback)\n\ |
|
6e8b0e754a7f
Added doc strings. Maybe the doc string for the module itself is a bit
Guido van Rossum <guido@python.org>
parents:
8314
diff
changeset
|
163 \n\ |
|
28119
869695cba2cd
- New function sys.exc_clear() clears the current exception. This is
Guido van Rossum <guido@python.org>
parents:
27977
diff
changeset
|
164 Return information about the most recent exception caught by an except\n\ |
|
869695cba2cd
- New function sys.exc_clear() clears the current exception. This is
Guido van Rossum <guido@python.org>
parents:
27977
diff
changeset
|
165 clause in the current stack frame or in an older stack frame." |
|
869695cba2cd
- New function sys.exc_clear() clears the current exception. This is
Guido van Rossum <guido@python.org>
parents:
27977
diff
changeset
|
166 ); |
|
869695cba2cd
- New function sys.exc_clear() clears the current exception. This is
Guido van Rossum <guido@python.org>
parents:
27977
diff
changeset
|
167 |
|
869695cba2cd
- New function sys.exc_clear() clears the current exception. This is
Guido van Rossum <guido@python.org>
parents:
27977
diff
changeset
|
168 static PyObject * |
|
869695cba2cd
- New function sys.exc_clear() clears the current exception. This is
Guido van Rossum <guido@python.org>
parents:
27977
diff
changeset
|
169 sys_exc_clear(PyObject *self, PyObject *noargs) |
|
869695cba2cd
- New function sys.exc_clear() clears the current exception. This is
Guido van Rossum <guido@python.org>
parents:
27977
diff
changeset
|
170 { |
|
869695cba2cd
- New function sys.exc_clear() clears the current exception. This is
Guido van Rossum <guido@python.org>
parents:
27977
diff
changeset
|
171 PyThreadState *tstate = PyThreadState_Get(); |
|
869695cba2cd
- New function sys.exc_clear() clears the current exception. This is
Guido van Rossum <guido@python.org>
parents:
27977
diff
changeset
|
172 PyObject *tmp_type, *tmp_value, *tmp_tb; |
|
869695cba2cd
- New function sys.exc_clear() clears the current exception. This is
Guido van Rossum <guido@python.org>
parents:
27977
diff
changeset
|
173 tmp_type = tstate->exc_type; |
|
869695cba2cd
- New function sys.exc_clear() clears the current exception. This is
Guido van Rossum <guido@python.org>
parents:
27977
diff
changeset
|
174 tmp_value = tstate->exc_value; |
|
869695cba2cd
- New function sys.exc_clear() clears the current exception. This is
Guido van Rossum <guido@python.org>
parents:
27977
diff
changeset
|
175 tmp_tb = tstate->exc_traceback; |
|
869695cba2cd
- New function sys.exc_clear() clears the current exception. This is
Guido van Rossum <guido@python.org>
parents:
27977
diff
changeset
|
176 tstate->exc_type = NULL; |
|
869695cba2cd
- New function sys.exc_clear() clears the current exception. This is
Guido van Rossum <guido@python.org>
parents:
27977
diff
changeset
|
177 tstate->exc_value = NULL; |
|
869695cba2cd
- New function sys.exc_clear() clears the current exception. This is
Guido van Rossum <guido@python.org>
parents:
27977
diff
changeset
|
178 tstate->exc_traceback = NULL; |
|
869695cba2cd
- New function sys.exc_clear() clears the current exception. This is
Guido van Rossum <guido@python.org>
parents:
27977
diff
changeset
|
179 Py_XDECREF(tmp_type); |
|
869695cba2cd
- New function sys.exc_clear() clears the current exception. This is
Guido van Rossum <guido@python.org>
parents:
27977
diff
changeset
|
180 Py_XDECREF(tmp_value); |
|
869695cba2cd
- New function sys.exc_clear() clears the current exception. This is
Guido van Rossum <guido@python.org>
parents:
27977
diff
changeset
|
181 Py_XDECREF(tmp_tb); |
|
869695cba2cd
- New function sys.exc_clear() clears the current exception. This is
Guido van Rossum <guido@python.org>
parents:
27977
diff
changeset
|
182 /* For b/w compatibility */ |
|
869695cba2cd
- New function sys.exc_clear() clears the current exception. This is
Guido van Rossum <guido@python.org>
parents:
27977
diff
changeset
|
183 PySys_SetObject("exc_type", Py_None); |
|
869695cba2cd
- New function sys.exc_clear() clears the current exception. This is
Guido van Rossum <guido@python.org>
parents:
27977
diff
changeset
|
184 PySys_SetObject("exc_value", Py_None); |
|
869695cba2cd
- New function sys.exc_clear() clears the current exception. This is
Guido van Rossum <guido@python.org>
parents:
27977
diff
changeset
|
185 PySys_SetObject("exc_traceback", Py_None); |
|
869695cba2cd
- New function sys.exc_clear() clears the current exception. This is
Guido van Rossum <guido@python.org>
parents:
27977
diff
changeset
|
186 Py_INCREF(Py_None); |
|
869695cba2cd
- New function sys.exc_clear() clears the current exception. This is
Guido van Rossum <guido@python.org>
parents:
27977
diff
changeset
|
187 return Py_None; |
|
869695cba2cd
- New function sys.exc_clear() clears the current exception. This is
Guido van Rossum <guido@python.org>
parents:
27977
diff
changeset
|
188 } |
|
869695cba2cd
- New function sys.exc_clear() clears the current exception. This is
Guido van Rossum <guido@python.org>
parents:
27977
diff
changeset
|
189 |
|
869695cba2cd
- New function sys.exc_clear() clears the current exception. This is
Guido van Rossum <guido@python.org>
parents:
27977
diff
changeset
|
190 PyDoc_STRVAR(exc_clear_doc, |
|
869695cba2cd
- New function sys.exc_clear() clears the current exception. This is
Guido van Rossum <guido@python.org>
parents:
27977
diff
changeset
|
191 "exc_clear() -> None\n\ |
|
869695cba2cd
- New function sys.exc_clear() clears the current exception. This is
Guido van Rossum <guido@python.org>
parents:
27977
diff
changeset
|
192 \n\ |
|
869695cba2cd
- New function sys.exc_clear() clears the current exception. This is
Guido van Rossum <guido@python.org>
parents:
27977
diff
changeset
|
193 Clear global information on the current exception. Subsequent calls to\n\ |
|
869695cba2cd
- New function sys.exc_clear() clears the current exception. This is
Guido van Rossum <guido@python.org>
parents:
27977
diff
changeset
|
194 exc_info() will return (None,None,None) until another exception is raised\n\ |
|
869695cba2cd
- New function sys.exc_clear() clears the current exception. This is
Guido van Rossum <guido@python.org>
parents:
27977
diff
changeset
|
195 in the current thread or the execution stack returns to a frame where\n\ |
|
869695cba2cd
- New function sys.exc_clear() clears the current exception. This is
Guido van Rossum <guido@python.org>
parents:
27977
diff
changeset
|
196 another exception is being handled." |
|
23746
43ddcdcd3c71
Patch #505375: Make doc strings optional.
Martin v. Löwis <martin@v.loewis.de>
parents:
22604
diff
changeset
|
197 ); |
|
8566
6e8b0e754a7f
Added doc strings. Maybe the doc string for the module itself is a bit
Guido van Rossum <guido@python.org>
parents:
8314
diff
changeset
|
198 |
|
5405
b7871ca930ad
Massive changes for separate thread state management.
Guido van Rossum <guido@python.org>
parents:
5377
diff
changeset
|
199 static PyObject * |
|
13658
f79434ee41fa
Mass ANSIfication of function definitions. Doesn't cover all 'extern'
Thomas Wouters <thomas@python.org>
parents:
13447
diff
changeset
|
200 sys_exit(PyObject *self, PyObject *args) |
| 6 | 201 { |
|
22604
3f4b2f93e8b5
Change sys_exit to use METH_VARARGS.
Neal Norwitz <nnorwitz@gmail.com>
parents:
22531
diff
changeset
|
202 PyObject *exit_code = 0; |
|
3f4b2f93e8b5
Change sys_exit to use METH_VARARGS.
Neal Norwitz <nnorwitz@gmail.com>
parents:
22531
diff
changeset
|
203 if (!PyArg_ParseTuple(args, "|O:exit", &exit_code)) |
|
3f4b2f93e8b5
Change sys_exit to use METH_VARARGS.
Neal Norwitz <nnorwitz@gmail.com>
parents:
22531
diff
changeset
|
204 return NULL; |
|
549
4efff6cea90f
Raise SystemExit instead of calling goaway().
Guido van Rossum <guido@python.org>
parents:
476
diff
changeset
|
205 /* Raise SystemExit so callers may catch it or clean up. */ |
|
22604
3f4b2f93e8b5
Change sys_exit to use METH_VARARGS.
Neal Norwitz <nnorwitz@gmail.com>
parents:
22531
diff
changeset
|
206 PyErr_SetObject(PyExc_SystemExit, exit_code); |
|
549
4efff6cea90f
Raise SystemExit instead of calling goaway().
Guido van Rossum <guido@python.org>
parents:
476
diff
changeset
|
207 return NULL; |
| 6 | 208 } |
| 209 | |
|
23746
43ddcdcd3c71
Patch #505375: Make doc strings optional.
Martin v. Löwis <martin@v.loewis.de>
parents:
22604
diff
changeset
|
210 PyDoc_STRVAR(exit_doc, |
|
8566
6e8b0e754a7f
Added doc strings. Maybe the doc string for the module itself is a bit
Guido van Rossum <guido@python.org>
parents:
8314
diff
changeset
|
211 "exit([status])\n\ |
|
6e8b0e754a7f
Added doc strings. Maybe the doc string for the module itself is a bit
Guido van Rossum <guido@python.org>
parents:
8314
diff
changeset
|
212 \n\ |
|
6e8b0e754a7f
Added doc strings. Maybe the doc string for the module itself is a bit
Guido van Rossum <guido@python.org>
parents:
8314
diff
changeset
|
213 Exit the interpreter by raising SystemExit(status).\n\ |
|
6e8b0e754a7f
Added doc strings. Maybe the doc string for the module itself is a bit
Guido van Rossum <guido@python.org>
parents:
8314
diff
changeset
|
214 If the status is omitted or None, it defaults to zero (i.e., success).\n\ |
|
22531
ef314b37e260
backport nascheme's checkin of
Michael W. Hudson <mwh@python.net>
parents:
22119
diff
changeset
|
215 If the status is numeric, it will be used as the system exit status.\n\ |
|
8566
6e8b0e754a7f
Added doc strings. Maybe the doc string for the module itself is a bit
Guido van Rossum <guido@python.org>
parents:
8314
diff
changeset
|
216 If it is another kind of object, it will be printed and the system\n\ |
|
23746
43ddcdcd3c71
Patch #505375: Make doc strings optional.
Martin v. Löwis <martin@v.loewis.de>
parents:
22604
diff
changeset
|
217 exit status will be one (i.e., failure)." |
|
43ddcdcd3c71
Patch #505375: Make doc strings optional.
Martin v. Löwis <martin@v.loewis.de>
parents:
22604
diff
changeset
|
218 ); |
|
8566
6e8b0e754a7f
Added doc strings. Maybe the doc string for the module itself is a bit
Guido van Rossum <guido@python.org>
parents:
8314
diff
changeset
|
219 |
|
20943
e4d380f5f297
Include sys_getdefaultencoding in #ifdef Py_USING_UNICODE. Fixes #479571.
Martin v. Löwis <martin@v.loewis.de>
parents:
20655
diff
changeset
|
220 #ifdef Py_USING_UNICODE |
|
e4d380f5f297
Include sys_getdefaultencoding in #ifdef Py_USING_UNICODE. Fixes #479571.
Martin v. Löwis <martin@v.loewis.de>
parents:
20655
diff
changeset
|
221 |
| 5372 | 222 static PyObject * |
|
19301
b9701538f827
Patch #427190: Implement and use METH_NOARGS and METH_O.
Martin v. Löwis <martin@v.loewis.de>
parents:
18805
diff
changeset
|
223 sys_getdefaultencoding(PyObject *self) |
|
12649
c92668766f5d
M.-A. Lemburg <mal@lemburg.com>:
Fred Drake <fdrake@acm.org>
parents:
12398
diff
changeset
|
224 { |
|
c92668766f5d
M.-A. Lemburg <mal@lemburg.com>:
Fred Drake <fdrake@acm.org>
parents:
12398
diff
changeset
|
225 return PyString_FromString(PyUnicode_GetDefaultEncoding()); |
|
c92668766f5d
M.-A. Lemburg <mal@lemburg.com>:
Fred Drake <fdrake@acm.org>
parents:
12398
diff
changeset
|
226 } |
|
c92668766f5d
M.-A. Lemburg <mal@lemburg.com>:
Fred Drake <fdrake@acm.org>
parents:
12398
diff
changeset
|
227 |
|
23746
43ddcdcd3c71
Patch #505375: Make doc strings optional.
Martin v. Löwis <martin@v.loewis.de>
parents:
22604
diff
changeset
|
228 PyDoc_STRVAR(getdefaultencoding_doc, |
|
12877
78231bbe605d
Marc-Andre Lemburg <mal@lemburg.com>:
Marc-André Lemburg <mal@egenix.com>
parents:
12649
diff
changeset
|
229 "getdefaultencoding() -> string\n\ |
|
12649
c92668766f5d
M.-A. Lemburg <mal@lemburg.com>:
Fred Drake <fdrake@acm.org>
parents:
12398
diff
changeset
|
230 \n\ |
|
c92668766f5d
M.-A. Lemburg <mal@lemburg.com>:
Fred Drake <fdrake@acm.org>
parents:
12398
diff
changeset
|
231 Return the current default string encoding used by the Unicode \n\ |
|
23746
43ddcdcd3c71
Patch #505375: Make doc strings optional.
Martin v. Löwis <martin@v.loewis.de>
parents:
22604
diff
changeset
|
232 implementation." |
|
43ddcdcd3c71
Patch #505375: Make doc strings optional.
Martin v. Löwis <martin@v.loewis.de>
parents:
22604
diff
changeset
|
233 ); |
|
12649
c92668766f5d
M.-A. Lemburg <mal@lemburg.com>:
Fred Drake <fdrake@acm.org>
parents:
12398
diff
changeset
|
234 |
|
c92668766f5d
M.-A. Lemburg <mal@lemburg.com>:
Fred Drake <fdrake@acm.org>
parents:
12398
diff
changeset
|
235 static PyObject * |
|
13658
f79434ee41fa
Mass ANSIfication of function definitions. Doesn't cover all 'extern'
Thomas Wouters <thomas@python.org>
parents:
13447
diff
changeset
|
236 sys_setdefaultencoding(PyObject *self, PyObject *args) |
|
12649
c92668766f5d
M.-A. Lemburg <mal@lemburg.com>:
Fred Drake <fdrake@acm.org>
parents:
12398
diff
changeset
|
237 { |
|
c92668766f5d
M.-A. Lemburg <mal@lemburg.com>:
Fred Drake <fdrake@acm.org>
parents:
12398
diff
changeset
|
238 char *encoding; |
|
12877
78231bbe605d
Marc-Andre Lemburg <mal@lemburg.com>:
Marc-André Lemburg <mal@egenix.com>
parents:
12649
diff
changeset
|
239 if (!PyArg_ParseTuple(args, "s:setdefaultencoding", &encoding)) |
|
12649
c92668766f5d
M.-A. Lemburg <mal@lemburg.com>:
Fred Drake <fdrake@acm.org>
parents:
12398
diff
changeset
|
240 return NULL; |
|
c92668766f5d
M.-A. Lemburg <mal@lemburg.com>:
Fred Drake <fdrake@acm.org>
parents:
12398
diff
changeset
|
241 if (PyUnicode_SetDefaultEncoding(encoding)) |
|
c92668766f5d
M.-A. Lemburg <mal@lemburg.com>:
Fred Drake <fdrake@acm.org>
parents:
12398
diff
changeset
|
242 return NULL; |
|
c92668766f5d
M.-A. Lemburg <mal@lemburg.com>:
Fred Drake <fdrake@acm.org>
parents:
12398
diff
changeset
|
243 Py_INCREF(Py_None); |
|
c92668766f5d
M.-A. Lemburg <mal@lemburg.com>:
Fred Drake <fdrake@acm.org>
parents:
12398
diff
changeset
|
244 return Py_None; |
|
c92668766f5d
M.-A. Lemburg <mal@lemburg.com>:
Fred Drake <fdrake@acm.org>
parents:
12398
diff
changeset
|
245 } |
|
c92668766f5d
M.-A. Lemburg <mal@lemburg.com>:
Fred Drake <fdrake@acm.org>
parents:
12398
diff
changeset
|
246 |
|
23746
43ddcdcd3c71
Patch #505375: Make doc strings optional.
Martin v. Löwis <martin@v.loewis.de>
parents:
22604
diff
changeset
|
247 PyDoc_STRVAR(setdefaultencoding_doc, |
|
12877
78231bbe605d
Marc-Andre Lemburg <mal@lemburg.com>:
Marc-André Lemburg <mal@egenix.com>
parents:
12649
diff
changeset
|
248 "setdefaultencoding(encoding)\n\ |
|
12649
c92668766f5d
M.-A. Lemburg <mal@lemburg.com>:
Fred Drake <fdrake@acm.org>
parents:
12398
diff
changeset
|
249 \n\ |
|
23746
43ddcdcd3c71
Patch #505375: Make doc strings optional.
Martin v. Löwis <martin@v.loewis.de>
parents:
22604
diff
changeset
|
250 Set the current default string encoding used by the Unicode implementation." |
|
43ddcdcd3c71
Patch #505375: Make doc strings optional.
Martin v. Löwis <martin@v.loewis.de>
parents:
22604
diff
changeset
|
251 ); |
|
12649
c92668766f5d
M.-A. Lemburg <mal@lemburg.com>:
Fred Drake <fdrake@acm.org>
parents:
12398
diff
changeset
|
252 |
|
28174
3f90d21debe9
Always initialize Py_FileSystemDefaultEncoding on Unix in Py_Initialize,
Martin v. Löwis <martin@v.loewis.de>
parents:
28119
diff
changeset
|
253 static PyObject * |
|
3f90d21debe9
Always initialize Py_FileSystemDefaultEncoding on Unix in Py_Initialize,
Martin v. Löwis <martin@v.loewis.de>
parents:
28119
diff
changeset
|
254 sys_getfilesystemencoding(PyObject *self) |
|
3f90d21debe9
Always initialize Py_FileSystemDefaultEncoding on Unix in Py_Initialize,
Martin v. Löwis <martin@v.loewis.de>
parents:
28119
diff
changeset
|
255 { |
|
3f90d21debe9
Always initialize Py_FileSystemDefaultEncoding on Unix in Py_Initialize,
Martin v. Löwis <martin@v.loewis.de>
parents:
28119
diff
changeset
|
256 if (Py_FileSystemDefaultEncoding) |
|
3f90d21debe9
Always initialize Py_FileSystemDefaultEncoding on Unix in Py_Initialize,
Martin v. Löwis <martin@v.loewis.de>
parents:
28119
diff
changeset
|
257 return PyString_FromString(Py_FileSystemDefaultEncoding); |
|
3f90d21debe9
Always initialize Py_FileSystemDefaultEncoding on Unix in Py_Initialize,
Martin v. Löwis <martin@v.loewis.de>
parents:
28119
diff
changeset
|
258 Py_INCREF(Py_None); |
|
3f90d21debe9
Always initialize Py_FileSystemDefaultEncoding on Unix in Py_Initialize,
Martin v. Löwis <martin@v.loewis.de>
parents:
28119
diff
changeset
|
259 return Py_None; |
|
3f90d21debe9
Always initialize Py_FileSystemDefaultEncoding on Unix in Py_Initialize,
Martin v. Löwis <martin@v.loewis.de>
parents:
28119
diff
changeset
|
260 } |
|
3f90d21debe9
Always initialize Py_FileSystemDefaultEncoding on Unix in Py_Initialize,
Martin v. Löwis <martin@v.loewis.de>
parents:
28119
diff
changeset
|
261 |
|
3f90d21debe9
Always initialize Py_FileSystemDefaultEncoding on Unix in Py_Initialize,
Martin v. Löwis <martin@v.loewis.de>
parents:
28119
diff
changeset
|
262 PyDoc_STRVAR(getfilesystemencoding_doc, |
|
3f90d21debe9
Always initialize Py_FileSystemDefaultEncoding on Unix in Py_Initialize,
Martin v. Löwis <martin@v.loewis.de>
parents:
28119
diff
changeset
|
263 "getfilesystemencoding() -> string\n\ |
|
3f90d21debe9
Always initialize Py_FileSystemDefaultEncoding on Unix in Py_Initialize,
Martin v. Löwis <martin@v.loewis.de>
parents:
28119
diff
changeset
|
264 \n\ |
|
3f90d21debe9
Always initialize Py_FileSystemDefaultEncoding on Unix in Py_Initialize,
Martin v. Löwis <martin@v.loewis.de>
parents:
28119
diff
changeset
|
265 Return the encoding used to convert Unicode filenames in\n\ |
|
3f90d21debe9
Always initialize Py_FileSystemDefaultEncoding on Unix in Py_Initialize,
Martin v. Löwis <martin@v.loewis.de>
parents:
28119
diff
changeset
|
266 operating system filenames." |
|
3f90d21debe9
Always initialize Py_FileSystemDefaultEncoding on Unix in Py_Initialize,
Martin v. Löwis <martin@v.loewis.de>
parents:
28119
diff
changeset
|
267 ); |
|
3f90d21debe9
Always initialize Py_FileSystemDefaultEncoding on Unix in Py_Initialize,
Martin v. Löwis <martin@v.loewis.de>
parents:
28119
diff
changeset
|
268 |
|
19343
7257e87e0720
Patch #445762: Support --disable-unicode
Martin v. Löwis <martin@v.loewis.de>
parents:
19301
diff
changeset
|
269 #endif |
|
7257e87e0720
Patch #445762: Support --disable-unicode
Martin v. Löwis <martin@v.loewis.de>
parents:
19301
diff
changeset
|
270 |
|
18326
e427afb5637f
Revise the interface to the profiling and tracing support for the
Fred Drake <fdrake@acm.org>
parents:
18298
diff
changeset
|
271 /* |
|
e427afb5637f
Revise the interface to the profiling and tracing support for the
Fred Drake <fdrake@acm.org>
parents:
18298
diff
changeset
|
272 * Cached interned string objects used for calling the profile and |
|
e427afb5637f
Revise the interface to the profiling and tracing support for the
Fred Drake <fdrake@acm.org>
parents:
18298
diff
changeset
|
273 * trace functions. Initialized by trace_init(). |
|
e427afb5637f
Revise the interface to the profiling and tracing support for the
Fred Drake <fdrake@acm.org>
parents:
18298
diff
changeset
|
274 */ |
|
e427afb5637f
Revise the interface to the profiling and tracing support for the
Fred Drake <fdrake@acm.org>
parents:
18298
diff
changeset
|
275 static PyObject *whatstrings[4] = {NULL, NULL, NULL, NULL}; |
|
e427afb5637f
Revise the interface to the profiling and tracing support for the
Fred Drake <fdrake@acm.org>
parents:
18298
diff
changeset
|
276 |
|
e427afb5637f
Revise the interface to the profiling and tracing support for the
Fred Drake <fdrake@acm.org>
parents:
18298
diff
changeset
|
277 static int |
|
e427afb5637f
Revise the interface to the profiling and tracing support for the
Fred Drake <fdrake@acm.org>
parents:
18298
diff
changeset
|
278 trace_init(void) |
|
e427afb5637f
Revise the interface to the profiling and tracing support for the
Fred Drake <fdrake@acm.org>
parents:
18298
diff
changeset
|
279 { |
|
e427afb5637f
Revise the interface to the profiling and tracing support for the
Fred Drake <fdrake@acm.org>
parents:
18298
diff
changeset
|
280 static char *whatnames[4] = {"call", "exception", "line", "return"}; |
|
e427afb5637f
Revise the interface to the profiling and tracing support for the
Fred Drake <fdrake@acm.org>
parents:
18298
diff
changeset
|
281 PyObject *name; |
|
e427afb5637f
Revise the interface to the profiling and tracing support for the
Fred Drake <fdrake@acm.org>
parents:
18298
diff
changeset
|
282 int i; |
|
e427afb5637f
Revise the interface to the profiling and tracing support for the
Fred Drake <fdrake@acm.org>
parents:
18298
diff
changeset
|
283 for (i = 0; i < 4; ++i) { |
|
e427afb5637f
Revise the interface to the profiling and tracing support for the
Fred Drake <fdrake@acm.org>
parents:
18298
diff
changeset
|
284 if (whatstrings[i] == NULL) { |
|
e427afb5637f
Revise the interface to the profiling and tracing support for the
Fred Drake <fdrake@acm.org>
parents:
18298
diff
changeset
|
285 name = PyString_InternFromString(whatnames[i]); |
|
e427afb5637f
Revise the interface to the profiling and tracing support for the
Fred Drake <fdrake@acm.org>
parents:
18298
diff
changeset
|
286 if (name == NULL) |
|
e427afb5637f
Revise the interface to the profiling and tracing support for the
Fred Drake <fdrake@acm.org>
parents:
18298
diff
changeset
|
287 return -1; |
|
e427afb5637f
Revise the interface to the profiling and tracing support for the
Fred Drake <fdrake@acm.org>
parents:
18298
diff
changeset
|
288 whatstrings[i] = name; |
|
e427afb5637f
Revise the interface to the profiling and tracing support for the
Fred Drake <fdrake@acm.org>
parents:
18298
diff
changeset
|
289 } |
|
e427afb5637f
Revise the interface to the profiling and tracing support for the
Fred Drake <fdrake@acm.org>
parents:
18298
diff
changeset
|
290 } |
|
e427afb5637f
Revise the interface to the profiling and tracing support for the
Fred Drake <fdrake@acm.org>
parents:
18298
diff
changeset
|
291 return 0; |
|
e427afb5637f
Revise the interface to the profiling and tracing support for the
Fred Drake <fdrake@acm.org>
parents:
18298
diff
changeset
|
292 } |
|
e427afb5637f
Revise the interface to the profiling and tracing support for the
Fred Drake <fdrake@acm.org>
parents:
18298
diff
changeset
|
293 |
|
e427afb5637f
Revise the interface to the profiling and tracing support for the
Fred Drake <fdrake@acm.org>
parents:
18298
diff
changeset
|
294 |
|
e427afb5637f
Revise the interface to the profiling and tracing support for the
Fred Drake <fdrake@acm.org>
parents:
18298
diff
changeset
|
295 static PyObject * |
|
e427afb5637f
Revise the interface to the profiling and tracing support for the
Fred Drake <fdrake@acm.org>
parents:
18298
diff
changeset
|
296 call_trampoline(PyThreadState *tstate, PyObject* callback, |
|
e427afb5637f
Revise the interface to the profiling and tracing support for the
Fred Drake <fdrake@acm.org>
parents:
18298
diff
changeset
|
297 PyFrameObject *frame, int what, PyObject *arg) |
|
e427afb5637f
Revise the interface to the profiling and tracing support for the
Fred Drake <fdrake@acm.org>
parents:
18298
diff
changeset
|
298 { |
|
e427afb5637f
Revise the interface to the profiling and tracing support for the
Fred Drake <fdrake@acm.org>
parents:
18298
diff
changeset
|
299 PyObject *args = PyTuple_New(3); |
|
e427afb5637f
Revise the interface to the profiling and tracing support for the
Fred Drake <fdrake@acm.org>
parents:
18298
diff
changeset
|
300 PyObject *whatstr; |
|
e427afb5637f
Revise the interface to the profiling and tracing support for the
Fred Drake <fdrake@acm.org>
parents:
18298
diff
changeset
|
301 PyObject *result; |
|
e427afb5637f
Revise the interface to the profiling and tracing support for the
Fred Drake <fdrake@acm.org>
parents:
18298
diff
changeset
|
302 |
|
e427afb5637f
Revise the interface to the profiling and tracing support for the
Fred Drake <fdrake@acm.org>
parents:
18298
diff
changeset
|
303 if (args == NULL) |
|
e427afb5637f
Revise the interface to the profiling and tracing support for the
Fred Drake <fdrake@acm.org>
parents:
18298
diff
changeset
|
304 return NULL; |
|
e427afb5637f
Revise the interface to the profiling and tracing support for the
Fred Drake <fdrake@acm.org>
parents:
18298
diff
changeset
|
305 Py_INCREF(frame); |
|
e427afb5637f
Revise the interface to the profiling and tracing support for the
Fred Drake <fdrake@acm.org>
parents:
18298
diff
changeset
|
306 whatstr = whatstrings[what]; |
|
e427afb5637f
Revise the interface to the profiling and tracing support for the
Fred Drake <fdrake@acm.org>
parents:
18298
diff
changeset
|
307 Py_INCREF(whatstr); |
|
e427afb5637f
Revise the interface to the profiling and tracing support for the
Fred Drake <fdrake@acm.org>
parents:
18298
diff
changeset
|
308 if (arg == NULL) |
|
e427afb5637f
Revise the interface to the profiling and tracing support for the
Fred Drake <fdrake@acm.org>
parents:
18298
diff
changeset
|
309 arg = Py_None; |
|
e427afb5637f
Revise the interface to the profiling and tracing support for the
Fred Drake <fdrake@acm.org>
parents:
18298
diff
changeset
|
310 Py_INCREF(arg); |
|
e427afb5637f
Revise the interface to the profiling and tracing support for the
Fred Drake <fdrake@acm.org>
parents:
18298
diff
changeset
|
311 PyTuple_SET_ITEM(args, 0, (PyObject *)frame); |
|
e427afb5637f
Revise the interface to the profiling and tracing support for the
Fred Drake <fdrake@acm.org>
parents:
18298
diff
changeset
|
312 PyTuple_SET_ITEM(args, 1, whatstr); |
|
e427afb5637f
Revise the interface to the profiling and tracing support for the
Fred Drake <fdrake@acm.org>
parents:
18298
diff
changeset
|
313 PyTuple_SET_ITEM(args, 2, arg); |
|
e427afb5637f
Revise the interface to the profiling and tracing support for the
Fred Drake <fdrake@acm.org>
parents:
18298
diff
changeset
|
314 |
|
e427afb5637f
Revise the interface to the profiling and tracing support for the
Fred Drake <fdrake@acm.org>
parents:
18298
diff
changeset
|
315 /* call the Python-level function */ |
|
e427afb5637f
Revise the interface to the profiling and tracing support for the
Fred Drake <fdrake@acm.org>
parents:
18298
diff
changeset
|
316 PyFrame_FastToLocals(frame); |
|
e427afb5637f
Revise the interface to the profiling and tracing support for the
Fred Drake <fdrake@acm.org>
parents:
18298
diff
changeset
|
317 result = PyEval_CallObject(callback, args); |
|
e427afb5637f
Revise the interface to the profiling and tracing support for the
Fred Drake <fdrake@acm.org>
parents:
18298
diff
changeset
|
318 PyFrame_LocalsToFast(frame, 1); |
|
e427afb5637f
Revise the interface to the profiling and tracing support for the
Fred Drake <fdrake@acm.org>
parents:
18298
diff
changeset
|
319 if (result == NULL) |
|
e427afb5637f
Revise the interface to the profiling and tracing support for the
Fred Drake <fdrake@acm.org>
parents:
18298
diff
changeset
|
320 PyTraceBack_Here(frame); |
|
e427afb5637f
Revise the interface to the profiling and tracing support for the
Fred Drake <fdrake@acm.org>
parents:
18298
diff
changeset
|
321 |
|
e427afb5637f
Revise the interface to the profiling and tracing support for the
Fred Drake <fdrake@acm.org>
parents:
18298
diff
changeset
|
322 /* cleanup */ |
|
e427afb5637f
Revise the interface to the profiling and tracing support for the
Fred Drake <fdrake@acm.org>
parents:
18298
diff
changeset
|
323 Py_DECREF(args); |
|
e427afb5637f
Revise the interface to the profiling and tracing support for the
Fred Drake <fdrake@acm.org>
parents:
18298
diff
changeset
|
324 return result; |
|
e427afb5637f
Revise the interface to the profiling and tracing support for the
Fred Drake <fdrake@acm.org>
parents:
18298
diff
changeset
|
325 } |
|
e427afb5637f
Revise the interface to the profiling and tracing support for the
Fred Drake <fdrake@acm.org>
parents:
18298
diff
changeset
|
326 |
|
e427afb5637f
Revise the interface to the profiling and tracing support for the
Fred Drake <fdrake@acm.org>
parents:
18298
diff
changeset
|
327 static int |
|
e427afb5637f
Revise the interface to the profiling and tracing support for the
Fred Drake <fdrake@acm.org>
parents:
18298
diff
changeset
|
328 profile_trampoline(PyObject *self, PyFrameObject *frame, |
|
e427afb5637f
Revise the interface to the profiling and tracing support for the
Fred Drake <fdrake@acm.org>
parents:
18298
diff
changeset
|
329 int what, PyObject *arg) |
|
e427afb5637f
Revise the interface to the profiling and tracing support for the
Fred Drake <fdrake@acm.org>
parents:
18298
diff
changeset
|
330 { |
|
e427afb5637f
Revise the interface to the profiling and tracing support for the
Fred Drake <fdrake@acm.org>
parents:
18298
diff
changeset
|
331 PyThreadState *tstate = frame->f_tstate; |
|
e427afb5637f
Revise the interface to the profiling and tracing support for the
Fred Drake <fdrake@acm.org>
parents:
18298
diff
changeset
|
332 PyObject *result; |
|
e427afb5637f
Revise the interface to the profiling and tracing support for the
Fred Drake <fdrake@acm.org>
parents:
18298
diff
changeset
|
333 |
|
20247
a4d328d50897
Rationalize the events passed to the profiler (no changes for the tracer).
Fred Drake <fdrake@acm.org>
parents:
19343
diff
changeset
|
334 if (arg == NULL) |
|
a4d328d50897
Rationalize the events passed to the profiler (no changes for the tracer).
Fred Drake <fdrake@acm.org>
parents:
19343
diff
changeset
|
335 arg = Py_None; |
|
18326
e427afb5637f
Revise the interface to the profiling and tracing support for the
Fred Drake <fdrake@acm.org>
parents:
18298
diff
changeset
|
336 result = call_trampoline(tstate, self, frame, what, arg); |
|
e427afb5637f
Revise the interface to the profiling and tracing support for the
Fred Drake <fdrake@acm.org>
parents:
18298
diff
changeset
|
337 if (result == NULL) { |
|
e427afb5637f
Revise the interface to the profiling and tracing support for the
Fred Drake <fdrake@acm.org>
parents:
18298
diff
changeset
|
338 PyEval_SetProfile(NULL, NULL); |
|
e427afb5637f
Revise the interface to the profiling and tracing support for the
Fred Drake <fdrake@acm.org>
parents:
18298
diff
changeset
|
339 return -1; |
|
e427afb5637f
Revise the interface to the profiling and tracing support for the
Fred Drake <fdrake@acm.org>
parents:
18298
diff
changeset
|
340 } |
|
e427afb5637f
Revise the interface to the profiling and tracing support for the
Fred Drake <fdrake@acm.org>
parents:
18298
diff
changeset
|
341 Py_DECREF(result); |
|
e427afb5637f
Revise the interface to the profiling and tracing support for the
Fred Drake <fdrake@acm.org>
parents:
18298
diff
changeset
|
342 return 0; |
|
e427afb5637f
Revise the interface to the profiling and tracing support for the
Fred Drake <fdrake@acm.org>
parents:
18298
diff
changeset
|
343 } |
|
e427afb5637f
Revise the interface to the profiling and tracing support for the
Fred Drake <fdrake@acm.org>
parents:
18298
diff
changeset
|
344 |
|
e427afb5637f
Revise the interface to the profiling and tracing support for the
Fred Drake <fdrake@acm.org>
parents:
18298
diff
changeset
|
345 static int |
|
e427afb5637f
Revise the interface to the profiling and tracing support for the
Fred Drake <fdrake@acm.org>
parents:
18298
diff
changeset
|
346 trace_trampoline(PyObject *self, PyFrameObject *frame, |
|
e427afb5637f
Revise the interface to the profiling and tracing support for the
Fred Drake <fdrake@acm.org>
parents:
18298
diff
changeset
|
347 int what, PyObject *arg) |
|
e427afb5637f
Revise the interface to the profiling and tracing support for the
Fred Drake <fdrake@acm.org>
parents:
18298
diff
changeset
|
348 { |
|
e427afb5637f
Revise the interface to the profiling and tracing support for the
Fred Drake <fdrake@acm.org>
parents:
18298
diff
changeset
|
349 PyThreadState *tstate = frame->f_tstate; |
|
e427afb5637f
Revise the interface to the profiling and tracing support for the
Fred Drake <fdrake@acm.org>
parents:
18298
diff
changeset
|
350 PyObject *callback; |
|
e427afb5637f
Revise the interface to the profiling and tracing support for the
Fred Drake <fdrake@acm.org>
parents:
18298
diff
changeset
|
351 PyObject *result; |
|
e427afb5637f
Revise the interface to the profiling and tracing support for the
Fred Drake <fdrake@acm.org>
parents:
18298
diff
changeset
|
352 |
|
e427afb5637f
Revise the interface to the profiling and tracing support for the
Fred Drake <fdrake@acm.org>
parents:
18298
diff
changeset
|
353 if (what == PyTrace_CALL) |
|
e427afb5637f
Revise the interface to the profiling and tracing support for the
Fred Drake <fdrake@acm.org>
parents:
18298
diff
changeset
|
354 callback = self; |
|
e427afb5637f
Revise the interface to the profiling and tracing support for the
Fred Drake <fdrake@acm.org>
parents:
18298
diff
changeset
|
355 else |
|
e427afb5637f
Revise the interface to the profiling and tracing support for the
Fred Drake <fdrake@acm.org>
parents:
18298
diff
changeset
|
356 callback = frame->f_trace; |
|
e427afb5637f
Revise the interface to the profiling and tracing support for the
Fred Drake <fdrake@acm.org>
parents:
18298
diff
changeset
|
357 if (callback == NULL) |
|
e427afb5637f
Revise the interface to the profiling and tracing support for the
Fred Drake <fdrake@acm.org>
parents:
18298
diff
changeset
|
358 return 0; |
|
e427afb5637f
Revise the interface to the profiling and tracing support for the
Fred Drake <fdrake@acm.org>
parents:
18298
diff
changeset
|
359 result = call_trampoline(tstate, callback, frame, what, arg); |
|
e427afb5637f
Revise the interface to the profiling and tracing support for the
Fred Drake <fdrake@acm.org>
parents:
18298
diff
changeset
|
360 if (result == NULL) { |
|
e427afb5637f
Revise the interface to the profiling and tracing support for the
Fred Drake <fdrake@acm.org>
parents:
18298
diff
changeset
|
361 PyEval_SetTrace(NULL, NULL); |
|
e427afb5637f
Revise the interface to the profiling and tracing support for the
Fred Drake <fdrake@acm.org>
parents:
18298
diff
changeset
|
362 Py_XDECREF(frame->f_trace); |
|
e427afb5637f
Revise the interface to the profiling and tracing support for the
Fred Drake <fdrake@acm.org>
parents:
18298
diff
changeset
|
363 frame->f_trace = NULL; |
|
e427afb5637f
Revise the interface to the profiling and tracing support for the
Fred Drake <fdrake@acm.org>
parents:
18298
diff
changeset
|
364 return -1; |
|
e427afb5637f
Revise the interface to the profiling and tracing support for the
Fred Drake <fdrake@acm.org>
parents:
18298
diff
changeset
|
365 } |
|
e427afb5637f
Revise the interface to the profiling and tracing support for the
Fred Drake <fdrake@acm.org>
parents:
18298
diff
changeset
|
366 if (result != Py_None) { |
|
e427afb5637f
Revise the interface to the profiling and tracing support for the
Fred Drake <fdrake@acm.org>
parents:
18298
diff
changeset
|
367 PyObject *temp = frame->f_trace; |
|
e427afb5637f
Revise the interface to the profiling and tracing support for the
Fred Drake <fdrake@acm.org>
parents:
18298
diff
changeset
|
368 frame->f_trace = NULL; |
|
e427afb5637f
Revise the interface to the profiling and tracing support for the
Fred Drake <fdrake@acm.org>
parents:
18298
diff
changeset
|
369 Py_XDECREF(temp); |
|
e427afb5637f
Revise the interface to the profiling and tracing support for the
Fred Drake <fdrake@acm.org>
parents:
18298
diff
changeset
|
370 frame->f_trace = result; |
|
e427afb5637f
Revise the interface to the profiling and tracing support for the
Fred Drake <fdrake@acm.org>
parents:
18298
diff
changeset
|
371 } |
|
e427afb5637f
Revise the interface to the profiling and tracing support for the
Fred Drake <fdrake@acm.org>
parents:
18298
diff
changeset
|
372 else { |
|
e427afb5637f
Revise the interface to the profiling and tracing support for the
Fred Drake <fdrake@acm.org>
parents:
18298
diff
changeset
|
373 Py_DECREF(result); |
|
e427afb5637f
Revise the interface to the profiling and tracing support for the
Fred Drake <fdrake@acm.org>
parents:
18298
diff
changeset
|
374 } |
|
e427afb5637f
Revise the interface to the profiling and tracing support for the
Fred Drake <fdrake@acm.org>
parents:
18298
diff
changeset
|
375 return 0; |
|
e427afb5637f
Revise the interface to the profiling and tracing support for the
Fred Drake <fdrake@acm.org>
parents:
18298
diff
changeset
|
376 } |
|
18136
4cb34314bd97
Instead of initializing & interning the strings passed to the profile
Fred Drake <fdrake@acm.org>
parents:
17396
diff
changeset
|
377 |
|
12649
c92668766f5d
M.-A. Lemburg <mal@lemburg.com>:
Fred Drake <fdrake@acm.org>
parents:
12398
diff
changeset
|
378 static PyObject * |
|
13658
f79434ee41fa
Mass ANSIfication of function definitions. Doesn't cover all 'extern'
Thomas Wouters <thomas@python.org>
parents:
13447
diff
changeset
|
379 sys_settrace(PyObject *self, PyObject *args) |
|
710
bc5c77fa8006
Added settrace() and setprofile().
Guido van Rossum <guido@python.org>
parents:
631
diff
changeset
|
380 { |
|
18326
e427afb5637f
Revise the interface to the profiling and tracing support for the
Fred Drake <fdrake@acm.org>
parents:
18298
diff
changeset
|
381 if (trace_init() == -1) |
|
18136
4cb34314bd97
Instead of initializing & interning the strings passed to the profile
Fred Drake <fdrake@acm.org>
parents:
17396
diff
changeset
|
382 return NULL; |
| 5372 | 383 if (args == Py_None) |
|
18326
e427afb5637f
Revise the interface to the profiling and tracing support for the
Fred Drake <fdrake@acm.org>
parents:
18298
diff
changeset
|
384 PyEval_SetTrace(NULL, NULL); |
|
788
ba4ec13c0f9f
Fix reference counts of sys_trace and sys_profile
Guido van Rossum <guido@python.org>
parents:
710
diff
changeset
|
385 else |
|
18326
e427afb5637f
Revise the interface to the profiling and tracing support for the
Fred Drake <fdrake@acm.org>
parents:
18298
diff
changeset
|
386 PyEval_SetTrace(trace_trampoline, args); |
| 5372 | 387 Py_INCREF(Py_None); |
| 388 return Py_None; | |
|
710
bc5c77fa8006
Added settrace() and setprofile().
Guido van Rossum <guido@python.org>
parents:
631
diff
changeset
|
389 } |
|
bc5c77fa8006
Added settrace() and setprofile().
Guido van Rossum <guido@python.org>
parents:
631
diff
changeset
|
390 |
|
23746
43ddcdcd3c71
Patch #505375: Make doc strings optional.
Martin v. Löwis <martin@v.loewis.de>
parents:
22604
diff
changeset
|
391 PyDoc_STRVAR(settrace_doc, |
|
8566
6e8b0e754a7f
Added doc strings. Maybe the doc string for the module itself is a bit
Guido van Rossum <guido@python.org>
parents:
8314
diff
changeset
|
392 "settrace(function)\n\ |
|
6e8b0e754a7f
Added doc strings. Maybe the doc string for the module itself is a bit
Guido van Rossum <guido@python.org>
parents:
8314
diff
changeset
|
393 \n\ |
|
6e8b0e754a7f
Added doc strings. Maybe the doc string for the module itself is a bit
Guido van Rossum <guido@python.org>
parents:
8314
diff
changeset
|
394 Set the global debug tracing function. It will be called on each\n\ |
|
23746
43ddcdcd3c71
Patch #505375: Make doc strings optional.
Martin v. Löwis <martin@v.loewis.de>
parents:
22604
diff
changeset
|
395 function call. See the debugger chapter in the library manual." |
|
43ddcdcd3c71
Patch #505375: Make doc strings optional.
Martin v. Löwis <martin@v.loewis.de>
parents:
22604
diff
changeset
|
396 ); |
|
8566
6e8b0e754a7f
Added doc strings. Maybe the doc string for the module itself is a bit
Guido van Rossum <guido@python.org>
parents:
8314
diff
changeset
|
397 |
| 5372 | 398 static PyObject * |
|
13658
f79434ee41fa
Mass ANSIfication of function definitions. Doesn't cover all 'extern'
Thomas Wouters <thomas@python.org>
parents:
13447
diff
changeset
|
399 sys_setprofile(PyObject *self, PyObject *args) |
|
710
bc5c77fa8006
Added settrace() and setprofile().
Guido van Rossum <guido@python.org>
parents:
631
diff
changeset
|
400 { |
|
18326
e427afb5637f
Revise the interface to the profiling and tracing support for the
Fred Drake <fdrake@acm.org>
parents:
18298
diff
changeset
|
401 if (trace_init() == -1) |
|
18136
4cb34314bd97
Instead of initializing & interning the strings passed to the profile
Fred Drake <fdrake@acm.org>
parents:
17396
diff
changeset
|
402 return NULL; |
| 5372 | 403 if (args == Py_None) |
|
18326
e427afb5637f
Revise the interface to the profiling and tracing support for the
Fred Drake <fdrake@acm.org>
parents:
18298
diff
changeset
|
404 PyEval_SetProfile(NULL, NULL); |
|
788
ba4ec13c0f9f
Fix reference counts of sys_trace and sys_profile
Guido van Rossum <guido@python.org>
parents:
710
diff
changeset
|
405 else |
|
18326
e427afb5637f
Revise the interface to the profiling and tracing support for the
Fred Drake <fdrake@acm.org>
parents:
18298
diff
changeset
|
406 PyEval_SetProfile(profile_trampoline, args); |
| 5372 | 407 Py_INCREF(Py_None); |
| 408 return Py_None; | |
|
710
bc5c77fa8006
Added settrace() and setprofile().
Guido van Rossum <guido@python.org>
parents:
631
diff
changeset
|
409 } |
|
bc5c77fa8006
Added settrace() and setprofile().
Guido van Rossum <guido@python.org>
parents:
631
diff
changeset
|
410 |
|
23746
43ddcdcd3c71
Patch #505375: Make doc strings optional.
Martin v. Löwis <martin@v.loewis.de>
parents:
22604
diff
changeset
|
411 PyDoc_STRVAR(setprofile_doc, |
|
8566
6e8b0e754a7f
Added doc strings. Maybe the doc string for the module itself is a bit
Guido van Rossum <guido@python.org>
parents:
8314
diff
changeset
|
412 "setprofile(function)\n\ |
|
6e8b0e754a7f
Added doc strings. Maybe the doc string for the module itself is a bit
Guido van Rossum <guido@python.org>
parents:
8314
diff
changeset
|
413 \n\ |
|
6e8b0e754a7f
Added doc strings. Maybe the doc string for the module itself is a bit
Guido van Rossum <guido@python.org>
parents:
8314
diff
changeset
|
414 Set the profiling function. It will be called on each function call\n\ |
|
23746
43ddcdcd3c71
Patch #505375: Make doc strings optional.
Martin v. Löwis <martin@v.loewis.de>
parents:
22604
diff
changeset
|
415 and return. See the profiler chapter in the library manual." |
|
43ddcdcd3c71
Patch #505375: Make doc strings optional.
Martin v. Löwis <martin@v.loewis.de>
parents:
22604
diff
changeset
|
416 ); |
|
8566
6e8b0e754a7f
Added doc strings. Maybe the doc string for the module itself is a bit
Guido van Rossum <guido@python.org>
parents:
8314
diff
changeset
|
417 |
| 5372 | 418 static PyObject * |
|
13658
f79434ee41fa
Mass ANSIfication of function definitions. Doesn't cover all 'extern'
Thomas Wouters <thomas@python.org>
parents:
13447
diff
changeset
|
419 sys_setcheckinterval(PyObject *self, PyObject *args) |
|
2093
e8cafb2b743a
sys.check_interval=x -> sys.setcheckinterval(x)
Guido van Rossum <guido@python.org>
parents:
2062
diff
changeset
|
420 { |
|
25108
3a26e352f0a6
replace thread state objects' ticker and checkinterval fields with two
Skip Montanaro <skip@pobox.com>
parents:
25099
diff
changeset
|
421 if (!PyArg_ParseTuple(args, "i:setcheckinterval", &_Py_CheckInterval)) |
|
2093
e8cafb2b743a
sys.check_interval=x -> sys.setcheckinterval(x)
Guido van Rossum <guido@python.org>
parents:
2062
diff
changeset
|
422 return NULL; |
| 5372 | 423 Py_INCREF(Py_None); |
| 424 return Py_None; | |
|
2093
e8cafb2b743a
sys.check_interval=x -> sys.setcheckinterval(x)
Guido van Rossum <guido@python.org>
parents:
2062
diff
changeset
|
425 } |
|
e8cafb2b743a
sys.check_interval=x -> sys.setcheckinterval(x)
Guido van Rossum <guido@python.org>
parents:
2062
diff
changeset
|
426 |
|
23746
43ddcdcd3c71
Patch #505375: Make doc strings optional.
Martin v. Löwis <martin@v.loewis.de>
parents:
22604
diff
changeset
|
427 PyDoc_STRVAR(setcheckinterval_doc, |
|
8566
6e8b0e754a7f
Added doc strings. Maybe the doc string for the module itself is a bit
Guido van Rossum <guido@python.org>
parents:
8314
diff
changeset
|
428 "setcheckinterval(n)\n\ |
|
6e8b0e754a7f
Added doc strings. Maybe the doc string for the module itself is a bit
Guido van Rossum <guido@python.org>
parents:
8314
diff
changeset
|
429 \n\ |
|
6e8b0e754a7f
Added doc strings. Maybe the doc string for the module itself is a bit
Guido van Rossum <guido@python.org>
parents:
8314
diff
changeset
|
430 Tell the Python interpreter to check for asynchronous events every\n\ |
|
23746
43ddcdcd3c71
Patch #505375: Make doc strings optional.
Martin v. Löwis <martin@v.loewis.de>
parents:
22604
diff
changeset
|
431 n instructions. This also affects how often thread switches occur." |
|
43ddcdcd3c71
Patch #505375: Make doc strings optional.
Martin v. Löwis <martin@v.loewis.de>
parents:
22604
diff
changeset
|
432 ); |
|
8566
6e8b0e754a7f
Added doc strings. Maybe the doc string for the module itself is a bit
Guido van Rossum <guido@python.org>
parents:
8314
diff
changeset
|
433 |
|
14308
b8b3f76ffd51
add user-modifiable recursion_limit
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
14295
diff
changeset
|
434 static PyObject * |
|
29765
e9e5832d706f
New function sys.getcheckinterval(), to complement setcheckinterval().
Tim Peters <tim.peters@gmail.com>
parents:
29065
diff
changeset
|
435 sys_getcheckinterval(PyObject *self, PyObject *args) |
|
e9e5832d706f
New function sys.getcheckinterval(), to complement setcheckinterval().
Tim Peters <tim.peters@gmail.com>
parents:
29065
diff
changeset
|
436 { |
|
e9e5832d706f
New function sys.getcheckinterval(), to complement setcheckinterval().
Tim Peters <tim.peters@gmail.com>
parents:
29065
diff
changeset
|
437 return PyInt_FromLong(_Py_CheckInterval); |
|
e9e5832d706f
New function sys.getcheckinterval(), to complement setcheckinterval().
Tim Peters <tim.peters@gmail.com>
parents:
29065
diff
changeset
|
438 } |
|
e9e5832d706f
New function sys.getcheckinterval(), to complement setcheckinterval().
Tim Peters <tim.peters@gmail.com>
parents:
29065
diff
changeset
|
439 |
|
e9e5832d706f
New function sys.getcheckinterval(), to complement setcheckinterval().
Tim Peters <tim.peters@gmail.com>
parents:
29065
diff
changeset
|
440 PyDoc_STRVAR(getcheckinterval_doc, |
|
e9e5832d706f
New function sys.getcheckinterval(), to complement setcheckinterval().
Tim Peters <tim.peters@gmail.com>
parents:
29065
diff
changeset
|
441 "getcheckinterval() -> current check interval; see setcheckinterval()." |
|
e9e5832d706f
New function sys.getcheckinterval(), to complement setcheckinterval().
Tim Peters <tim.peters@gmail.com>
parents:
29065
diff
changeset
|
442 ); |
|
e9e5832d706f
New function sys.getcheckinterval(), to complement setcheckinterval().
Tim Peters <tim.peters@gmail.com>
parents:
29065
diff
changeset
|
443 |
|
e9e5832d706f
New function sys.getcheckinterval(), to complement setcheckinterval().
Tim Peters <tim.peters@gmail.com>
parents:
29065
diff
changeset
|
444 static PyObject * |
|
14308
b8b3f76ffd51
add user-modifiable recursion_limit
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
14295
diff
changeset
|
445 sys_setrecursionlimit(PyObject *self, PyObject *args) |
|
b8b3f76ffd51
add user-modifiable recursion_limit
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
14295
diff
changeset
|
446 { |
|
b8b3f76ffd51
add user-modifiable recursion_limit
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
14295
diff
changeset
|
447 int new_limit; |
|
b8b3f76ffd51
add user-modifiable recursion_limit
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
14295
diff
changeset
|
448 if (!PyArg_ParseTuple(args, "i:setrecursionlimit", &new_limit)) |
|
b8b3f76ffd51
add user-modifiable recursion_limit
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
14295
diff
changeset
|
449 return NULL; |
|
b8b3f76ffd51
add user-modifiable recursion_limit
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
14295
diff
changeset
|
450 if (new_limit <= 0) { |
|
b8b3f76ffd51
add user-modifiable recursion_limit
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
14295
diff
changeset
|
451 PyErr_SetString(PyExc_ValueError, |
|
b8b3f76ffd51
add user-modifiable recursion_limit
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
14295
diff
changeset
|
452 "recursion limit must be positive"); |
|
b8b3f76ffd51
add user-modifiable recursion_limit
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
14295
diff
changeset
|
453 return NULL; |
|
b8b3f76ffd51
add user-modifiable recursion_limit
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
14295
diff
changeset
|
454 } |
|
b8b3f76ffd51
add user-modifiable recursion_limit
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
14295
diff
changeset
|
455 Py_SetRecursionLimit(new_limit); |
|
b8b3f76ffd51
add user-modifiable recursion_limit
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
14295
diff
changeset
|
456 Py_INCREF(Py_None); |
|
b8b3f76ffd51
add user-modifiable recursion_limit
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
14295
diff
changeset
|
457 return Py_None; |
|
b8b3f76ffd51
add user-modifiable recursion_limit
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
14295
diff
changeset
|
458 } |
|
b8b3f76ffd51
add user-modifiable recursion_limit
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
14295
diff
changeset
|
459 |
|
23746
43ddcdcd3c71
Patch #505375: Make doc strings optional.
Martin v. Löwis <martin@v.loewis.de>
parents:
22604
diff
changeset
|
460 PyDoc_STRVAR(setrecursionlimit_doc, |
|
14308
b8b3f76ffd51
add user-modifiable recursion_limit
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
14295
diff
changeset
|
461 "setrecursionlimit(n)\n\ |
|
b8b3f76ffd51
add user-modifiable recursion_limit
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
14295
diff
changeset
|
462 \n\ |
|
b8b3f76ffd51
add user-modifiable recursion_limit
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
14295
diff
changeset
|
463 Set the maximum depth of the Python interpreter stack to n. This\n\ |
|
b8b3f76ffd51
add user-modifiable recursion_limit
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
14295
diff
changeset
|
464 limit prevents infinite recursion from causing an overflow of the C\n\ |
|
b8b3f76ffd51
add user-modifiable recursion_limit
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
14295
diff
changeset
|
465 stack and crashing Python. The highest possible limit is platform-\n\ |
|
23746
43ddcdcd3c71
Patch #505375: Make doc strings optional.
Martin v. Löwis <martin@v.loewis.de>
parents:
22604
diff
changeset
|
466 dependent." |
|
43ddcdcd3c71
Patch #505375: Make doc strings optional.
Martin v. Löwis <martin@v.loewis.de>
parents:
22604
diff
changeset
|
467 ); |
|
14308
b8b3f76ffd51
add user-modifiable recursion_limit
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
14295
diff
changeset
|
468 |
|
b8b3f76ffd51
add user-modifiable recursion_limit
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
14295
diff
changeset
|
469 static PyObject * |
|
19301
b9701538f827
Patch #427190: Implement and use METH_NOARGS and METH_O.
Martin v. Löwis <martin@v.loewis.de>
parents:
18805
diff
changeset
|
470 sys_getrecursionlimit(PyObject *self) |
|
14308
b8b3f76ffd51
add user-modifiable recursion_limit
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
14295
diff
changeset
|
471 { |
|
b8b3f76ffd51
add user-modifiable recursion_limit
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
14295
diff
changeset
|
472 return PyInt_FromLong(Py_GetRecursionLimit()); |
|
b8b3f76ffd51
add user-modifiable recursion_limit
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
14295
diff
changeset
|
473 } |
|
b8b3f76ffd51
add user-modifiable recursion_limit
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
14295
diff
changeset
|
474 |
|
23746
43ddcdcd3c71
Patch #505375: Make doc strings optional.
Martin v. Löwis <martin@v.loewis.de>
parents:
22604
diff
changeset
|
475 PyDoc_STRVAR(getrecursionlimit_doc, |
|
14308
b8b3f76ffd51
add user-modifiable recursion_limit
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
14295
diff
changeset
|
476 "getrecursionlimit()\n\ |
|
b8b3f76ffd51
add user-modifiable recursion_limit
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
14295
diff
changeset
|
477 \n\ |
|
b8b3f76ffd51
add user-modifiable recursion_limit
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
14295
diff
changeset
|
478 Return the current value of the recursion limit, the maximum depth\n\ |
|
b8b3f76ffd51
add user-modifiable recursion_limit
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
14295
diff
changeset
|
479 of the Python interpreter stack. This limit prevents infinite\n\ |
|
24013
71f13cf4f9e2
Got rid of an extraneous semicolon.
Jack Jansen <jack.jansen@cwi.nl>
parents:
23947
diff
changeset
|
480 recursion from causing an overflow of the C stack and crashing Python." |
|
23746
43ddcdcd3c71
Patch #505375: Make doc strings optional.
Martin v. Löwis <martin@v.loewis.de>
parents:
22604
diff
changeset
|
481 ); |
|
14308
b8b3f76ffd51
add user-modifiable recursion_limit
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
14295
diff
changeset
|
482 |
|
25666
4a825b902310
Add os.path.supports_unicode_filenames for all platforms,
Mark Hammond <mhammond@skippinet.com.au>
parents:
25108
diff
changeset
|
483 #ifdef MS_WINDOWS |
|
4a825b902310
Add os.path.supports_unicode_filenames for all platforms,
Mark Hammond <mhammond@skippinet.com.au>
parents:
25108
diff
changeset
|
484 PyDoc_STRVAR(getwindowsversion_doc, |
|
4a825b902310
Add os.path.supports_unicode_filenames for all platforms,
Mark Hammond <mhammond@skippinet.com.au>
parents:
25108
diff
changeset
|
485 "getwindowsversion()\n\ |
|
4a825b902310
Add os.path.supports_unicode_filenames for all platforms,
Mark Hammond <mhammond@skippinet.com.au>
parents:
25108
diff
changeset
|
486 \n\ |
|
4a825b902310
Add os.path.supports_unicode_filenames for all platforms,
Mark Hammond <mhammond@skippinet.com.au>
parents:
25108
diff
changeset
|
487 Return information about the running version of Windows.\n\ |
|
4a825b902310
Add os.path.supports_unicode_filenames for all platforms,
Mark Hammond <mhammond@skippinet.com.au>
parents:
25108
diff
changeset
|
488 The result is a tuple of (major, minor, build, platform, text)\n\ |
|
4a825b902310
Add os.path.supports_unicode_filenames for all platforms,
Mark Hammond <mhammond@skippinet.com.au>
parents:
25108
diff
changeset
|
489 All elements are numbers, except text which is a string.\n\ |
|
4a825b902310
Add os.path.supports_unicode_filenames for all platforms,
Mark Hammond <mhammond@skippinet.com.au>
parents:
25108
diff
changeset
|
490 Platform may be 0 for win32s, 1 for Windows 9x/ME, 2 for Windows NT/2000/XP\n\ |
|
4a825b902310
Add os.path.supports_unicode_filenames for all platforms,
Mark Hammond <mhammond@skippinet.com.au>
parents:
25108
diff
changeset
|
491 " |
|
4a825b902310
Add os.path.supports_unicode_filenames for all platforms,
Mark Hammond <mhammond@skippinet.com.au>
parents:
25108
diff
changeset
|
492 ); |
|
4a825b902310
Add os.path.supports_unicode_filenames for all platforms,
Mark Hammond <mhammond@skippinet.com.au>
parents:
25108
diff
changeset
|
493 |
|
4a825b902310
Add os.path.supports_unicode_filenames for all platforms,
Mark Hammond <mhammond@skippinet.com.au>
parents:
25108
diff
changeset
|
494 static PyObject * |
|
4a825b902310
Add os.path.supports_unicode_filenames for all platforms,
Mark Hammond <mhammond@skippinet.com.au>
parents:
25108
diff
changeset
|
495 sys_getwindowsversion(PyObject *self) |
|
4a825b902310
Add os.path.supports_unicode_filenames for all platforms,
Mark Hammond <mhammond@skippinet.com.au>
parents:
25108
diff
changeset
|
496 { |
|
4a825b902310
Add os.path.supports_unicode_filenames for all platforms,
Mark Hammond <mhammond@skippinet.com.au>
parents:
25108
diff
changeset
|
497 OSVERSIONINFO ver; |
|
4a825b902310
Add os.path.supports_unicode_filenames for all platforms,
Mark Hammond <mhammond@skippinet.com.au>
parents:
25108
diff
changeset
|
498 ver.dwOSVersionInfoSize = sizeof(ver); |
|
4a825b902310
Add os.path.supports_unicode_filenames for all platforms,
Mark Hammond <mhammond@skippinet.com.au>
parents:
25108
diff
changeset
|
499 if (!GetVersionEx(&ver)) |
|
4a825b902310
Add os.path.supports_unicode_filenames for all platforms,
Mark Hammond <mhammond@skippinet.com.au>
parents:
25108
diff
changeset
|
500 return PyErr_SetFromWindowsErr(0); |
|
4a825b902310
Add os.path.supports_unicode_filenames for all platforms,
Mark Hammond <mhammond@skippinet.com.au>
parents:
25108
diff
changeset
|
501 return Py_BuildValue("HHHHs", |
|
4a825b902310
Add os.path.supports_unicode_filenames for all platforms,
Mark Hammond <mhammond@skippinet.com.au>
parents:
25108
diff
changeset
|
502 ver.dwMajorVersion, |
|
4a825b902310
Add os.path.supports_unicode_filenames for all platforms,
Mark Hammond <mhammond@skippinet.com.au>
parents:
25108
diff
changeset
|
503 ver.dwMinorVersion, |
|
4a825b902310
Add os.path.supports_unicode_filenames for all platforms,
Mark Hammond <mhammond@skippinet.com.au>
parents:
25108
diff
changeset
|
504 ver.dwBuildNumber, |
|
4a825b902310
Add os.path.supports_unicode_filenames for all platforms,
Mark Hammond <mhammond@skippinet.com.au>
parents:
25108
diff
changeset
|
505 ver.dwPlatformId, |
|
4a825b902310
Add os.path.supports_unicode_filenames for all platforms,
Mark Hammond <mhammond@skippinet.com.au>
parents:
25108
diff
changeset
|
506 ver.szCSDVersion); |
|
4a825b902310
Add os.path.supports_unicode_filenames for all platforms,
Mark Hammond <mhammond@skippinet.com.au>
parents:
25108
diff
changeset
|
507 } |
|
4a825b902310
Add os.path.supports_unicode_filenames for all platforms,
Mark Hammond <mhammond@skippinet.com.au>
parents:
25108
diff
changeset
|
508 |
|
4a825b902310
Add os.path.supports_unicode_filenames for all platforms,
Mark Hammond <mhammond@skippinet.com.au>
parents:
25108
diff
changeset
|
509 #endif /* MS_WINDOWS */ |
|
4a825b902310
Add os.path.supports_unicode_filenames for all platforms,
Mark Hammond <mhammond@skippinet.com.au>
parents:
25108
diff
changeset
|
510 |
|
18689
064de84385ca
Patch #412229: Add functions sys.getdlopenflags and sys.setdlopenflags.
Martin v. Löwis <martin@v.loewis.de>
parents:
18326
diff
changeset
|
511 #ifdef HAVE_DLOPEN |
|
064de84385ca
Patch #412229: Add functions sys.getdlopenflags and sys.setdlopenflags.
Martin v. Löwis <martin@v.loewis.de>
parents:
18326
diff
changeset
|
512 static PyObject * |
|
064de84385ca
Patch #412229: Add functions sys.getdlopenflags and sys.setdlopenflags.
Martin v. Löwis <martin@v.loewis.de>
parents:
18326
diff
changeset
|
513 sys_setdlopenflags(PyObject *self, PyObject *args) |
|
064de84385ca
Patch #412229: Add functions sys.getdlopenflags and sys.setdlopenflags.
Martin v. Löwis <martin@v.loewis.de>
parents:
18326
diff
changeset
|
514 { |
|
064de84385ca
Patch #412229: Add functions sys.getdlopenflags and sys.setdlopenflags.
Martin v. Löwis <martin@v.loewis.de>
parents:
18326
diff
changeset
|
515 int new_val; |
|
064de84385ca
Patch #412229: Add functions sys.getdlopenflags and sys.setdlopenflags.
Martin v. Löwis <martin@v.loewis.de>
parents:
18326
diff
changeset
|
516 PyThreadState *tstate = PyThreadState_Get(); |
|
064de84385ca
Patch #412229: Add functions sys.getdlopenflags and sys.setdlopenflags.
Martin v. Löwis <martin@v.loewis.de>
parents:
18326
diff
changeset
|
517 if (!PyArg_ParseTuple(args, "i:setdlopenflags", &new_val)) |
|
064de84385ca
Patch #412229: Add functions sys.getdlopenflags and sys.setdlopenflags.
Martin v. Löwis <martin@v.loewis.de>
parents:
18326
diff
changeset
|
518 return NULL; |
|
064de84385ca
Patch #412229: Add functions sys.getdlopenflags and sys.setdlopenflags.
Martin v. Löwis <martin@v.loewis.de>
parents:
18326
diff
changeset
|
519 if (!tstate) |
|
064de84385ca
Patch #412229: Add functions sys.getdlopenflags and sys.setdlopenflags.
Martin v. Löwis <martin@v.loewis.de>
parents:
18326
diff
changeset
|
520 return NULL; |
|
064de84385ca
Patch #412229: Add functions sys.getdlopenflags and sys.setdlopenflags.
Martin v. Löwis <martin@v.loewis.de>
parents:
18326
diff
changeset
|
521 tstate->interp->dlopenflags = new_val; |
|
064de84385ca
Patch #412229: Add functions sys.getdlopenflags and sys.setdlopenflags.
Martin v. Löwis <martin@v.loewis.de>
parents:
18326
diff
changeset
|
522 Py_INCREF(Py_None); |
|
064de84385ca
Patch #412229: Add functions sys.getdlopenflags and sys.setdlopenflags.
Martin v. Löwis <martin@v.loewis.de>
parents:
18326
diff
changeset
|
523 return Py_None; |
|
064de84385ca
Patch #412229: Add functions sys.getdlopenflags and sys.setdlopenflags.
Martin v. Löwis <martin@v.loewis.de>
parents:
18326
diff
changeset
|
524 } |
|
064de84385ca
Patch #412229: Add functions sys.getdlopenflags and sys.setdlopenflags.
Martin v. Löwis <martin@v.loewis.de>
parents:
18326
diff
changeset
|
525 |
|
23746
43ddcdcd3c71
Patch #505375: Make doc strings optional.
Martin v. Löwis <martin@v.loewis.de>
parents:
22604
diff
changeset
|
526 PyDoc_STRVAR(setdlopenflags_doc, |
|
18689
064de84385ca
Patch #412229: Add functions sys.getdlopenflags and sys.setdlopenflags.
Martin v. Löwis <martin@v.loewis.de>
parents:
18326
diff
changeset
|
527 "setdlopenflags(n) -> None\n\ |
|
064de84385ca
Patch #412229: Add functions sys.getdlopenflags and sys.setdlopenflags.
Martin v. Löwis <martin@v.loewis.de>
parents:
18326
diff
changeset
|
528 \n\ |
|
064de84385ca
Patch #412229: Add functions sys.getdlopenflags and sys.setdlopenflags.
Martin v. Löwis <martin@v.loewis.de>
parents:
18326
diff
changeset
|
529 Set the flags that will be used for dlopen() calls. Among other\n\ |
|
21833
070d392042e3
Fix spelling mistakes. Bugfix candidates.
Neal Norwitz <nnorwitz@gmail.com>
parents:
21712
diff
changeset
|
530 things, this will enable a lazy resolving of symbols when importing\n\ |
|
18689
064de84385ca
Patch #412229: Add functions sys.getdlopenflags and sys.setdlopenflags.
Martin v. Löwis <martin@v.loewis.de>
parents:
18326
diff
changeset
|
531 a module, if called as sys.setdlopenflags(0)\n\ |
|
21833
070d392042e3
Fix spelling mistakes. Bugfix candidates.
Neal Norwitz <nnorwitz@gmail.com>
parents:
21712
diff
changeset
|
532 To share symbols across extension modules, call as\n\ |
|
23746
43ddcdcd3c71
Patch #505375: Make doc strings optional.
Martin v. Löwis <martin@v.loewis.de>
parents:
22604
diff
changeset
|
533 sys.setdlopenflags(dl.RTLD_NOW|dl.RTLD_GLOBAL)" |
|
43ddcdcd3c71
Patch #505375: Make doc strings optional.
Martin v. Löwis <martin@v.loewis.de>
parents:
22604
diff
changeset
|
534 ); |
|
18689
064de84385ca
Patch #412229: Add functions sys.getdlopenflags and sys.setdlopenflags.
Martin v. Löwis <martin@v.loewis.de>
parents:
18326
diff
changeset
|
535 |
|
064de84385ca
Patch #412229: Add functions sys.getdlopenflags and sys.setdlopenflags.
Martin v. Löwis <martin@v.loewis.de>
parents:
18326
diff
changeset
|
536 static PyObject * |
|
064de84385ca
Patch #412229: Add functions sys.getdlopenflags and sys.setdlopenflags.
Martin v. Löwis <martin@v.loewis.de>
parents:
18326
diff
changeset
|
537 sys_getdlopenflags(PyObject *self, PyObject *args) |
|
064de84385ca
Patch #412229: Add functions sys.getdlopenflags and sys.setdlopenflags.
Martin v. Löwis <martin@v.loewis.de>
parents:
18326
diff
changeset
|
538 { |
|
064de84385ca
Patch #412229: Add functions sys.getdlopenflags and sys.setdlopenflags.
Martin v. Löwis <martin@v.loewis.de>
parents:
18326
diff
changeset
|
539 PyThreadState *tstate = PyThreadState_Get(); |
|
064de84385ca
Patch #412229: Add functions sys.getdlopenflags and sys.setdlopenflags.
Martin v. Löwis <martin@v.loewis.de>
parents:
18326
diff
changeset
|
540 if (!tstate) |
|
064de84385ca
Patch #412229: Add functions sys.getdlopenflags and sys.setdlopenflags.
Martin v. Löwis <martin@v.loewis.de>
parents:
18326
diff
changeset
|
541 return NULL; |
|
064de84385ca
Patch #412229: Add functions sys.getdlopenflags and sys.setdlopenflags.
Martin v. Löwis <martin@v.loewis.de>
parents:
18326
diff
changeset
|
542 return PyInt_FromLong(tstate->interp->dlopenflags); |
|
064de84385ca
Patch #412229: Add functions sys.getdlopenflags and sys.setdlopenflags.
Martin v. Löwis <martin@v.loewis.de>
parents:
18326
diff
changeset
|
543 } |
|
064de84385ca
Patch #412229: Add functions sys.getdlopenflags and sys.setdlopenflags.
Martin v. Löwis <martin@v.loewis.de>
parents:
18326
diff
changeset
|
544 |
|
23746
43ddcdcd3c71
Patch #505375: Make doc strings optional.
Martin v. Löwis <martin@v.loewis.de>
parents:
22604
diff
changeset
|
545 PyDoc_STRVAR(getdlopenflags_doc, |
|
18689
064de84385ca
Patch #412229: Add functions sys.getdlopenflags and sys.setdlopenflags.
Martin v. Löwis <martin@v.loewis.de>
parents:
18326
diff
changeset
|
546 "getdlopenflags() -> int\n\ |
|
064de84385ca
Patch #412229: Add functions sys.getdlopenflags and sys.setdlopenflags.
Martin v. Löwis <martin@v.loewis.de>
parents:
18326
diff
changeset
|
547 \n\ |
|
064de84385ca
Patch #412229: Add functions sys.getdlopenflags and sys.setdlopenflags.
Martin v. Löwis <martin@v.loewis.de>
parents:
18326
diff
changeset
|
548 Return the current value of the flags that are used for dlopen()\n\ |
|
23746
43ddcdcd3c71
Patch #505375: Make doc strings optional.
Martin v. Löwis <martin@v.loewis.de>
parents:
22604
diff
changeset
|
549 calls. The flag constants are defined in the dl module." |
|
43ddcdcd3c71
Patch #505375: Make doc strings optional.
Martin v. Löwis <martin@v.loewis.de>
parents:
22604
diff
changeset
|
550 ); |
|
18689
064de84385ca
Patch #412229: Add functions sys.getdlopenflags and sys.setdlopenflags.
Martin v. Löwis <martin@v.loewis.de>
parents:
18326
diff
changeset
|
551 #endif |
|
064de84385ca
Patch #412229: Add functions sys.getdlopenflags and sys.setdlopenflags.
Martin v. Löwis <martin@v.loewis.de>
parents:
18326
diff
changeset
|
552 |
|
1013
a1ce5a949828
Add an optional interface to turn malloc debugging on and off.
Guido van Rossum <guido@python.org>
parents:
901
diff
changeset
|
553 #ifdef USE_MALLOPT |
|
a1ce5a949828
Add an optional interface to turn malloc debugging on and off.
Guido van Rossum <guido@python.org>
parents:
901
diff
changeset
|
554 /* Link with -lmalloc (or -lmpc) on an SGI */ |
|
a1ce5a949828
Add an optional interface to turn malloc debugging on and off.
Guido van Rossum <guido@python.org>
parents:
901
diff
changeset
|
555 #include <malloc.h> |
|
a1ce5a949828
Add an optional interface to turn malloc debugging on and off.
Guido van Rossum <guido@python.org>
parents:
901
diff
changeset
|
556 |
| 5372 | 557 static PyObject * |
|
13658
f79434ee41fa
Mass ANSIfication of function definitions. Doesn't cover all 'extern'
Thomas Wouters <thomas@python.org>
parents:
13447
diff
changeset
|
558 sys_mdebug(PyObject *self, PyObject *args) |
|
1013
a1ce5a949828
Add an optional interface to turn malloc debugging on and off.
Guido van Rossum <guido@python.org>
parents:
901
diff
changeset
|
559 { |
|
a1ce5a949828
Add an optional interface to turn malloc debugging on and off.
Guido van Rossum <guido@python.org>
parents:
901
diff
changeset
|
560 int flag; |
|
12136
9b9abde032b3
Use modern PyArg_ParseTuple style, with function names.
Guido van Rossum <guido@python.org>
parents:
11882
diff
changeset
|
561 if (!PyArg_ParseTuple(args, "i:mdebug", &flag)) |
|
1013
a1ce5a949828
Add an optional interface to turn malloc debugging on and off.
Guido van Rossum <guido@python.org>
parents:
901
diff
changeset
|
562 return NULL; |
|
a1ce5a949828
Add an optional interface to turn malloc debugging on and off.
Guido van Rossum <guido@python.org>
parents:
901
diff
changeset
|
563 mallopt(M_DEBUG, flag); |
| 5372 | 564 Py_INCREF(Py_None); |
| 565 return Py_None; | |
|
1013
a1ce5a949828
Add an optional interface to turn malloc debugging on and off.
Guido van Rossum <guido@python.org>
parents:
901
diff
changeset
|
566 } |
|
a1ce5a949828
Add an optional interface to turn malloc debugging on and off.
Guido van Rossum <guido@python.org>
parents:
901
diff
changeset
|
567 #endif /* USE_MALLOPT */ |
|
a1ce5a949828
Add an optional interface to turn malloc debugging on and off.
Guido van Rossum <guido@python.org>
parents:
901
diff
changeset
|
568 |
| 5372 | 569 static PyObject * |
|
20655
7344687bf2c0
Convert getrefcount() to METH_O, and sys_excepthook() to use
Fred Drake <fdrake@acm.org>
parents:
20247
diff
changeset
|
570 sys_getrefcount(PyObject *self, PyObject *arg) |
|
3024
54aa87b1ccee
Implemented two new functions in sys:
Sjoerd Mullender <sjoerd@acm.org>
parents:
2810
diff
changeset
|
571 { |
|
12965
04c89d77dfdb
Added a new debug method sys.gettotalrefcount(), which returns the total number of references on all Python objects. This is only enabled when Py_TRACE_REFS is defined (which includes default debug builds under Windows).
Mark Hammond <mhammond@skippinet.com.au>
parents:
12877
diff
changeset
|
572 return PyInt_FromLong(arg->ob_refcnt); |
|
3024
54aa87b1ccee
Implemented two new functions in sys:
Sjoerd Mullender <sjoerd@acm.org>
parents:
2810
diff
changeset
|
573 } |
|
54aa87b1ccee
Implemented two new functions in sys:
Sjoerd Mullender <sjoerd@acm.org>
parents:
2810
diff
changeset
|
574 |
|
24126
fdf80e04e4bb
Rearranged and added comments to object.h, to clarify many things
Tim Peters <tim.peters@gmail.com>
parents:
24071
diff
changeset
|
575 #ifdef Py_REF_DEBUG |
|
12965
04c89d77dfdb
Added a new debug method sys.gettotalrefcount(), which returns the total number of references on all Python objects. This is only enabled when Py_TRACE_REFS is defined (which includes default debug builds under Windows).
Mark Hammond <mhammond@skippinet.com.au>
parents:
12877
diff
changeset
|
576 static PyObject * |
|
19301
b9701538f827
Patch #427190: Implement and use METH_NOARGS and METH_O.
Martin v. Löwis <martin@v.loewis.de>
parents:
18805
diff
changeset
|
577 sys_gettotalrefcount(PyObject *self) |
|
12965
04c89d77dfdb
Added a new debug method sys.gettotalrefcount(), which returns the total number of references on all Python objects. This is only enabled when Py_TRACE_REFS is defined (which includes default debug builds under Windows).
Mark Hammond <mhammond@skippinet.com.au>
parents:
12877
diff
changeset
|
578 { |
|
04c89d77dfdb
Added a new debug method sys.gettotalrefcount(), which returns the total number of references on all Python objects. This is only enabled when Py_TRACE_REFS is defined (which includes default debug builds under Windows).
Mark Hammond <mhammond@skippinet.com.au>
parents:
12877
diff
changeset
|
579 return PyInt_FromLong(_Py_RefTotal); |
|
04c89d77dfdb
Added a new debug method sys.gettotalrefcount(), which returns the total number of references on all Python objects. This is only enabled when Py_TRACE_REFS is defined (which includes default debug builds under Windows).
Mark Hammond <mhammond@skippinet.com.au>
parents:
12877
diff
changeset
|
580 } |
|
04c89d77dfdb
Added a new debug method sys.gettotalrefcount(), which returns the total number of references on all Python objects. This is only enabled when Py_TRACE_REFS is defined (which includes default debug builds under Windows).
Mark Hammond <mhammond@skippinet.com.au>
parents:
12877
diff
changeset
|
581 |
|
04c89d77dfdb
Added a new debug method sys.gettotalrefcount(), which returns the total number of references on all Python objects. This is only enabled when Py_TRACE_REFS is defined (which includes default debug builds under Windows).
Mark Hammond <mhammond@skippinet.com.au>
parents:
12877
diff
changeset
|
582 #endif /* Py_TRACE_REFS */ |
|
04c89d77dfdb
Added a new debug method sys.gettotalrefcount(), which returns the total number of references on all Python objects. This is only enabled when Py_TRACE_REFS is defined (which includes default debug builds under Windows).
Mark Hammond <mhammond@skippinet.com.au>
parents:
12877
diff
changeset
|
583 |
|
23746
43ddcdcd3c71
Patch #505375: Make doc strings optional.
Martin v. Löwis <martin@v.loewis.de>
parents:
22604
diff
changeset
|
584 PyDoc_STRVAR(getrefcount_doc, |
|
8566
6e8b0e754a7f
Added doc strings. Maybe the doc string for the module itself is a bit
Guido van Rossum <guido@python.org>
parents:
8314
diff
changeset
|
585 "getrefcount(object) -> integer\n\ |
|
6e8b0e754a7f
Added doc strings. Maybe the doc string for the module itself is a bit
Guido van Rossum <guido@python.org>
parents:
8314
diff
changeset
|
586 \n\ |
|
23947
37118b6e5f46
Fix the docstring for sys.getrefcount().
Fred Drake <fdrake@acm.org>
parents:
23746
diff
changeset
|
587 Return the reference count of object. The count returned is generally\n\ |
|
37118b6e5f46
Fix the docstring for sys.getrefcount().
Fred Drake <fdrake@acm.org>
parents:
23746
diff
changeset
|
588 one higher than you might expect, because it includes the (temporary)\n\ |
|
37118b6e5f46
Fix the docstring for sys.getrefcount().
Fred Drake <fdrake@acm.org>
parents:
23746
diff
changeset
|
589 reference as an argument to getrefcount()." |
|
23746
43ddcdcd3c71
Patch #505375: Make doc strings optional.
Martin v. Löwis <martin@v.loewis.de>
parents:
22604
diff
changeset
|
590 ); |
|
8566
6e8b0e754a7f
Added doc strings. Maybe the doc string for the module itself is a bit
Guido van Rossum <guido@python.org>
parents:
8314
diff
changeset
|
591 |
|
3024
54aa87b1ccee
Implemented two new functions in sys:
Sjoerd Mullender <sjoerd@acm.org>
parents:
2810
diff
changeset
|
592 #ifdef COUNT_ALLOCS |
|
54aa87b1ccee
Implemented two new functions in sys:
Sjoerd Mullender <sjoerd@acm.org>
parents:
2810
diff
changeset
|
593 static PyObject * |
|
19301
b9701538f827
Patch #427190: Implement and use METH_NOARGS and METH_O.
Martin v. Löwis <martin@v.loewis.de>
parents:
18805
diff
changeset
|
594 sys_getcounts(PyObject *self) |
|
3024
54aa87b1ccee
Implemented two new functions in sys:
Sjoerd Mullender <sjoerd@acm.org>
parents:
2810
diff
changeset
|
595 { |
|
13447
a89f7f268de4
Nuke all remaining occurrences of Py_PROTO and Py_FPROTO.
Tim Peters <tim.peters@gmail.com>
parents:
13256
diff
changeset
|
596 extern PyObject *get_counts(void); |
|
3024
54aa87b1ccee
Implemented two new functions in sys:
Sjoerd Mullender <sjoerd@acm.org>
parents:
2810
diff
changeset
|
597 |
|
54aa87b1ccee
Implemented two new functions in sys:
Sjoerd Mullender <sjoerd@acm.org>
parents:
2810
diff
changeset
|
598 return get_counts(); |
|
54aa87b1ccee
Implemented two new functions in sys:
Sjoerd Mullender <sjoerd@acm.org>
parents:
2810
diff
changeset
|
599 } |
|
54aa87b1ccee
Implemented two new functions in sys:
Sjoerd Mullender <sjoerd@acm.org>
parents:
2810
diff
changeset
|
600 #endif |
|
54aa87b1ccee
Implemented two new functions in sys:
Sjoerd Mullender <sjoerd@acm.org>
parents:
2810
diff
changeset
|
601 |
|
23746
43ddcdcd3c71
Patch #505375: Make doc strings optional.
Martin v. Löwis <martin@v.loewis.de>
parents:
22604
diff
changeset
|
602 PyDoc_STRVAR(getframe_doc, |
|
15487
f0ca4c67957b
_getframe(): New sys module function for getting at the stack frame.
Barry Warsaw <barry@python.org>
parents:
14375
diff
changeset
|
603 "_getframe([depth]) -> frameobject\n\ |
|
f0ca4c67957b
_getframe(): New sys module function for getting at the stack frame.
Barry Warsaw <barry@python.org>
parents:
14375
diff
changeset
|
604 \n\ |
|
f0ca4c67957b
_getframe(): New sys module function for getting at the stack frame.
Barry Warsaw <barry@python.org>
parents:
14375
diff
changeset
|
605 Return a frame object from the call stack. If optional integer depth is\n\ |
|
f0ca4c67957b
_getframe(): New sys module function for getting at the stack frame.
Barry Warsaw <barry@python.org>
parents:
14375
diff
changeset
|
606 given, return the frame object that many calls below the top of the stack.\n\ |
|
f0ca4c67957b
_getframe(): New sys module function for getting at the stack frame.
Barry Warsaw <barry@python.org>
parents:
14375
diff
changeset
|
607 If that is deeper than the call stack, ValueError is raised. The default\n\ |
|
f0ca4c67957b
_getframe(): New sys module function for getting at the stack frame.
Barry Warsaw <barry@python.org>
parents:
14375
diff
changeset
|
608 for depth is zero, returning the frame at the top of the call stack.\n\ |
|
f0ca4c67957b
_getframe(): New sys module function for getting at the stack frame.
Barry Warsaw <barry@python.org>
parents:
14375
diff
changeset
|
609 \n\ |
|
f0ca4c67957b
_getframe(): New sys module function for getting at the stack frame.
Barry Warsaw <barry@python.org>
parents:
14375
diff
changeset
|
610 This function should be used for internal and specialized\n\ |
|
23746
43ddcdcd3c71
Patch #505375: Make doc strings optional.
Martin v. Löwis <martin@v.loewis.de>
parents:
22604
diff
changeset
|
611 purposes only." |
|
43ddcdcd3c71
Patch #505375: Make doc strings optional.
Martin v. Löwis <martin@v.loewis.de>
parents:
22604
diff
changeset
|
612 ); |
|
15487
f0ca4c67957b
_getframe(): New sys module function for getting at the stack frame.
Barry Warsaw <barry@python.org>
parents:
14375
diff
changeset
|
613 |
|
f0ca4c67957b
_getframe(): New sys module function for getting at the stack frame.
Barry Warsaw <barry@python.org>
parents:
14375
diff
changeset
|
614 static PyObject * |
|
f0ca4c67957b
_getframe(): New sys module function for getting at the stack frame.
Barry Warsaw <barry@python.org>
parents:
14375
diff
changeset
|
615 sys_getframe(PyObject *self, PyObject *args) |
|
f0ca4c67957b
_getframe(): New sys module function for getting at the stack frame.
Barry Warsaw <barry@python.org>
parents:
14375
diff
changeset
|
616 { |
|
f0ca4c67957b
_getframe(): New sys module function for getting at the stack frame.
Barry Warsaw <barry@python.org>
parents:
14375
diff
changeset
|
617 PyFrameObject *f = PyThreadState_Get()->frame; |
|
f0ca4c67957b
_getframe(): New sys module function for getting at the stack frame.
Barry Warsaw <barry@python.org>
parents:
14375
diff
changeset
|
618 int depth = -1; |
|
f0ca4c67957b
_getframe(): New sys module function for getting at the stack frame.
Barry Warsaw <barry@python.org>
parents:
14375
diff
changeset
|
619 |
|
f0ca4c67957b
_getframe(): New sys module function for getting at the stack frame.
Barry Warsaw <barry@python.org>
parents:
14375
diff
changeset
|
620 if (!PyArg_ParseTuple(args, "|i:_getframe", &depth)) |
|
f0ca4c67957b
_getframe(): New sys module function for getting at the stack frame.
Barry Warsaw <barry@python.org>
parents:
14375
diff
changeset
|
621 return NULL; |
|
f0ca4c67957b
_getframe(): New sys module function for getting at the stack frame.
Barry Warsaw <barry@python.org>
parents:
14375
diff
changeset
|
622 |
|
f0ca4c67957b
_getframe(): New sys module function for getting at the stack frame.
Barry Warsaw <barry@python.org>
parents:
14375
diff
changeset
|
623 while (depth > 0 && f != NULL) { |
|
f0ca4c67957b
_getframe(): New sys module function for getting at the stack frame.
Barry Warsaw <barry@python.org>
parents:
14375
diff
changeset
|
624 f = f->f_back; |
|
f0ca4c67957b
_getframe(): New sys module function for getting at the stack frame.
Barry Warsaw <barry@python.org>
parents:
14375
diff
changeset
|
625 --depth; |
|
f0ca4c67957b
_getframe(): New sys module function for getting at the stack frame.
Barry Warsaw <barry@python.org>
parents:
14375
diff
changeset
|
626 } |
|
f0ca4c67957b
_getframe(): New sys module function for getting at the stack frame.
Barry Warsaw <barry@python.org>
parents:
14375
diff
changeset
|
627 if (f == NULL) { |
|
f0ca4c67957b
_getframe(): New sys module function for getting at the stack frame.
Barry Warsaw <barry@python.org>
parents:
14375
diff
changeset
|
628 PyErr_SetString(PyExc_ValueError, |
|
f0ca4c67957b
_getframe(): New sys module function for getting at the stack frame.
Barry Warsaw <barry@python.org>
parents:
14375
diff
changeset
|
629 "call stack is not deep enough"); |
|
f0ca4c67957b
_getframe(): New sys module function for getting at the stack frame.
Barry Warsaw <barry@python.org>
parents:
14375
diff
changeset
|
630 return NULL; |
|
f0ca4c67957b
_getframe(): New sys module function for getting at the stack frame.
Barry Warsaw <barry@python.org>
parents:
14375
diff
changeset
|
631 } |
|
f0ca4c67957b
_getframe(): New sys module function for getting at the stack frame.
Barry Warsaw <barry@python.org>
parents:
14375
diff
changeset
|
632 Py_INCREF(f); |
|
f0ca4c67957b
_getframe(): New sys module function for getting at the stack frame.
Barry Warsaw <barry@python.org>
parents:
14375
diff
changeset
|
633 return (PyObject*)f; |
|
f0ca4c67957b
_getframe(): New sys module function for getting at the stack frame.
Barry Warsaw <barry@python.org>
parents:
14375
diff
changeset
|
634 } |
|
f0ca4c67957b
_getframe(): New sys module function for getting at the stack frame.
Barry Warsaw <barry@python.org>
parents:
14375
diff
changeset
|
635 |
|
28556
78395e5b4782
- New function sys.call_tracing() allows pdb to debug code
Guido van Rossum <guido@python.org>
parents:
28174
diff
changeset
|
636 PyDoc_STRVAR(call_tracing_doc, |
|
78395e5b4782
- New function sys.call_tracing() allows pdb to debug code
Guido van Rossum <guido@python.org>
parents:
28174
diff
changeset
|
637 "call_tracing(func, args) -> object\n\ |
|
78395e5b4782
- New function sys.call_tracing() allows pdb to debug code
Guido van Rossum <guido@python.org>
parents:
28174
diff
changeset
|
638 \n\ |
|
78395e5b4782
- New function sys.call_tracing() allows pdb to debug code
Guido van Rossum <guido@python.org>
parents:
28174
diff
changeset
|
639 Call func(*args), while tracing is enabled. The tracing state is\n\ |
|
78395e5b4782
- New function sys.call_tracing() allows pdb to debug code
Guido van Rossum <guido@python.org>
parents:
28174
diff
changeset
|
640 saved, and restored afterwards. This is intended to be called from\n\ |
|
78395e5b4782
- New function sys.call_tracing() allows pdb to debug code
Guido van Rossum <guido@python.org>
parents:
28174
diff
changeset
|
641 a debugger from a checkpoint, to recursively debug some other code." |
|
78395e5b4782
- New function sys.call_tracing() allows pdb to debug code
Guido van Rossum <guido@python.org>
parents:
28174
diff
changeset
|
642 ); |
|
78395e5b4782
- New function sys.call_tracing() allows pdb to debug code
Guido van Rossum <guido@python.org>
parents:
28174
diff
changeset
|
643 |
|
78395e5b4782
- New function sys.call_tracing() allows pdb to debug code
Guido van Rossum <guido@python.org>
parents:
28174
diff
changeset
|
644 static PyObject * |
|
78395e5b4782
- New function sys.call_tracing() allows pdb to debug code
Guido van Rossum <guido@python.org>
parents:
28174
diff
changeset
|
645 sys_call_tracing(PyObject *self, PyObject *args) |
|
78395e5b4782
- New function sys.call_tracing() allows pdb to debug code
Guido van Rossum <guido@python.org>
parents:
28174
diff
changeset
|
646 { |
|
78395e5b4782
- New function sys.call_tracing() allows pdb to debug code
Guido van Rossum <guido@python.org>
parents:
28174
diff
changeset
|
647 PyObject *func, *funcargs; |
|
78395e5b4782
- New function sys.call_tracing() allows pdb to debug code
Guido van Rossum <guido@python.org>
parents:
28174
diff
changeset
|
648 if (!PyArg_ParseTuple(args, "OO:call_tracing", &func, &funcargs)) |
|
78395e5b4782
- New function sys.call_tracing() allows pdb to debug code
Guido van Rossum <guido@python.org>
parents:
28174
diff
changeset
|
649 return NULL; |
|
78395e5b4782
- New function sys.call_tracing() allows pdb to debug code
Guido van Rossum <guido@python.org>
parents:
28174
diff
changeset
|
650 return _PyEval_CallTracing(func, funcargs); |
|
78395e5b4782
- New function sys.call_tracing() allows pdb to debug code
Guido van Rossum <guido@python.org>
parents:
28174
diff
changeset
|
651 } |
|
78395e5b4782
- New function sys.call_tracing() allows pdb to debug code
Guido van Rossum <guido@python.org>
parents:
28174
diff
changeset
|
652 |
|
27712
16856c9514e0
Small function call optimization and special build option for call stats.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
27156
diff
changeset
|
653 PyDoc_STRVAR(callstats_doc, |
|
16856c9514e0
Small function call optimization and special build option for call stats.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
27156
diff
changeset
|
654 "callstats() -> tuple of integers\n\ |
|
16856c9514e0
Small function call optimization and special build option for call stats.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
27156
diff
changeset
|
655 \n\ |
|
16856c9514e0
Small function call optimization and special build option for call stats.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
27156
diff
changeset
|
656 Return a tuple of function call statistics, if CALL_PROFILE was defined\n\ |
|
16856c9514e0
Small function call optimization and special build option for call stats.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
27156
diff
changeset
|
657 when Python was built. Otherwise, return None.\n\ |
|
16856c9514e0
Small function call optimization and special build option for call stats.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
27156
diff
changeset
|
658 \n\ |
|
16856c9514e0
Small function call optimization and special build option for call stats.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
27156
diff
changeset
|
659 When enabled, this function returns detailed, implementation-specific\n\ |
|
16856c9514e0
Small function call optimization and special build option for call stats.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
27156
diff
changeset
|
660 details about the number of function calls executed. The return value is\n\ |
|
16856c9514e0
Small function call optimization and special build option for call stats.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
27156
diff
changeset
|
661 a 11-tuple where the entries in the tuple are counts of:\n\ |
|
16856c9514e0
Small function call optimization and special build option for call stats.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
27156
diff
changeset
|
662 0. all function calls\n\ |
|
16856c9514e0
Small function call optimization and special build option for call stats.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
27156
diff
changeset
|
663 1. calls to PyFunction_Type objects\n\ |
|
16856c9514e0
Small function call optimization and special build option for call stats.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
27156
diff
changeset
|
664 2. PyFunction calls that do not create an argument tuple\n\ |
|
16856c9514e0
Small function call optimization and special build option for call stats.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
27156
diff
changeset
|
665 3. PyFunction calls that do not create an argument tuple\n\ |
|
16856c9514e0
Small function call optimization and special build option for call stats.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
27156
diff
changeset
|
666 and bypass PyEval_EvalCodeEx()\n\ |
|
16856c9514e0
Small function call optimization and special build option for call stats.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
27156
diff
changeset
|
667 4. PyMethod calls\n\ |
|
16856c9514e0
Small function call optimization and special build option for call stats.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
27156
diff
changeset
|
668 5. PyMethod calls on bound methods\n\ |
|
16856c9514e0
Small function call optimization and special build option for call stats.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
27156
diff
changeset
|
669 6. PyType calls\n\ |
|
16856c9514e0
Small function call optimization and special build option for call stats.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
27156
diff
changeset
|
670 7. PyCFunction calls\n\ |
|
16856c9514e0
Small function call optimization and special build option for call stats.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
27156
diff
changeset
|
671 8. generator calls\n\ |
|
16856c9514e0
Small function call optimization and special build option for call stats.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
27156
diff
changeset
|
672 9. All other calls\n\ |
|
16856c9514e0
Small function call optimization and special build option for call stats.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
27156
diff
changeset
|
673 10. Number of stack pops performed by call_function()" |
|
16856c9514e0
Small function call optimization and special build option for call stats.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
27156
diff
changeset
|
674 ); |
|
15487
f0ca4c67957b
_getframe(): New sys module function for getting at the stack frame.
Barry Warsaw <barry@python.org>
parents:
14375
diff
changeset
|
675 |
|
3585
4ed09a3c3201
TRACE_REFS -> Py_TRACE_REFS
Guido van Rossum <guido@python.org>
parents:
3490
diff
changeset
|
676 #ifdef Py_TRACE_REFS |
|
3609
0b0c4ed1936a
rename printrefs, getobjects to _Py_ prefix
Guido van Rossum <guido@python.org>
parents:
3585
diff
changeset
|
677 /* Defined in objects.c because it uses static globals if that file */ |
|
13447
a89f7f268de4
Nuke all remaining occurrences of Py_PROTO and Py_FPROTO.
Tim Peters <tim.peters@gmail.com>
parents:
13256
diff
changeset
|
678 extern PyObject *_Py_GetObjects(PyObject *, PyObject *); |
|
3024
54aa87b1ccee
Implemented two new functions in sys:
Sjoerd Mullender <sjoerd@acm.org>
parents:
2810
diff
changeset
|
679 #endif |
|
3609
0b0c4ed1936a
rename printrefs, getobjects to _Py_ prefix
Guido van Rossum <guido@python.org>
parents:
3585
diff
changeset
|
680 |
|
5047
7a9cac7cb910
Added optional interface for dynamic execution profile (to be gathered
Guido van Rossum <guido@python.org>
parents:
4904
diff
changeset
|
681 #ifdef DYNAMIC_EXECUTION_PROFILE |
|
7a9cac7cb910
Added optional interface for dynamic execution profile (to be gathered
Guido van Rossum <guido@python.org>
parents:
4904
diff
changeset
|
682 /* Defined in ceval.c because it uses static globals if that file */ |
|
13447
a89f7f268de4
Nuke all remaining occurrences of Py_PROTO and Py_FPROTO.
Tim Peters <tim.peters@gmail.com>
parents:
13256
diff
changeset
|
683 extern PyObject *_Py_GetDXProfile(PyObject *, PyObject *); |
|
5047
7a9cac7cb910
Added optional interface for dynamic execution profile (to be gathered
Guido van Rossum <guido@python.org>
parents:
4904
diff
changeset
|
684 #endif |
|
7a9cac7cb910
Added optional interface for dynamic execution profile (to be gathered
Guido van Rossum <guido@python.org>
parents:
4904
diff
changeset
|
685 |
| 5372 | 686 static PyMethodDef sys_methods[] = { |
|
5047
7a9cac7cb910
Added optional interface for dynamic execution profile (to be gathered
Guido van Rossum <guido@python.org>
parents:
4904
diff
changeset
|
687 /* Might as well keep this in alphabetic order */ |
|
27712
16856c9514e0
Small function call optimization and special build option for call stats.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
27156
diff
changeset
|
688 {"callstats", (PyCFunction)PyEval_GetCallStats, METH_NOARGS, |
|
16856c9514e0
Small function call optimization and special build option for call stats.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
27156
diff
changeset
|
689 callstats_doc}, |
|
19301
b9701538f827
Patch #427190: Implement and use METH_NOARGS and METH_O.
Martin v. Löwis <martin@v.loewis.de>
parents:
18805
diff
changeset
|
690 {"displayhook", sys_displayhook, METH_O, displayhook_doc}, |
|
28119
869695cba2cd
- New function sys.exc_clear() clears the current exception. This is
Guido van Rossum <guido@python.org>
parents:
27977
diff
changeset
|
691 {"exc_info", sys_exc_info, METH_NOARGS, exc_info_doc}, |
|
869695cba2cd
- New function sys.exc_clear() clears the current exception. This is
Guido van Rossum <guido@python.org>
parents:
27977
diff
changeset
|
692 {"exc_clear", sys_exc_clear, METH_NOARGS, exc_clear_doc}, |
|
19301
b9701538f827
Patch #427190: Implement and use METH_NOARGS and METH_O.
Martin v. Löwis <martin@v.loewis.de>
parents:
18805
diff
changeset
|
693 {"excepthook", sys_excepthook, METH_VARARGS, excepthook_doc}, |
|
22604
3f4b2f93e8b5
Change sys_exit to use METH_VARARGS.
Neal Norwitz <nnorwitz@gmail.com>
parents:
22531
diff
changeset
|
694 {"exit", sys_exit, METH_VARARGS, exit_doc}, |
|
19343
7257e87e0720
Patch #445762: Support --disable-unicode
Martin v. Löwis <martin@v.loewis.de>
parents:
19301
diff
changeset
|
695 #ifdef Py_USING_UNICODE |
|
27712
16856c9514e0
Small function call optimization and special build option for call stats.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
27156
diff
changeset
|
696 {"getdefaultencoding", (PyCFunction)sys_getdefaultencoding, |
|
16856c9514e0
Small function call optimization and special build option for call stats.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
27156
diff
changeset
|
697 METH_NOARGS, getdefaultencoding_doc}, |
|
19343
7257e87e0720
Patch #445762: Support --disable-unicode
Martin v. Löwis <martin@v.loewis.de>
parents:
19301
diff
changeset
|
698 #endif |
|
18689
064de84385ca
Patch #412229: Add functions sys.getdlopenflags and sys.setdlopenflags.
Martin v. Löwis <martin@v.loewis.de>
parents:
18326
diff
changeset
|
699 #ifdef HAVE_DLOPEN |
|
19301
b9701538f827
Patch #427190: Implement and use METH_NOARGS and METH_O.
Martin v. Löwis <martin@v.loewis.de>
parents:
18805
diff
changeset
|
700 {"getdlopenflags", (PyCFunction)sys_getdlopenflags, METH_NOARGS, |
|
b9701538f827
Patch #427190: Implement and use METH_NOARGS and METH_O.
Martin v. Löwis <martin@v.loewis.de>
parents:
18805
diff
changeset
|
701 getdlopenflags_doc}, |
|
18689
064de84385ca
Patch #412229: Add functions sys.getdlopenflags and sys.setdlopenflags.
Martin v. Löwis <martin@v.loewis.de>
parents:
18326
diff
changeset
|
702 #endif |
|
3024
54aa87b1ccee
Implemented two new functions in sys:
Sjoerd Mullender <sjoerd@acm.org>
parents:
2810
diff
changeset
|
703 #ifdef COUNT_ALLOCS |
|
19301
b9701538f827
Patch #427190: Implement and use METH_NOARGS and METH_O.
Martin v. Löwis <martin@v.loewis.de>
parents:
18805
diff
changeset
|
704 {"getcounts", (PyCFunction)sys_getcounts, METH_NOARGS}, |
|
3024
54aa87b1ccee
Implemented two new functions in sys:
Sjoerd Mullender <sjoerd@acm.org>
parents:
2810
diff
changeset
|
705 #endif |
|
5047
7a9cac7cb910
Added optional interface for dynamic execution profile (to be gathered
Guido van Rossum <guido@python.org>
parents:
4904
diff
changeset
|
706 #ifdef DYNAMIC_EXECUTION_PROFILE |
|
19301
b9701538f827
Patch #427190: Implement and use METH_NOARGS and METH_O.
Martin v. Löwis <martin@v.loewis.de>
parents:
18805
diff
changeset
|
707 {"getdxp", _Py_GetDXProfile, METH_VARARGS}, |
|
5047
7a9cac7cb910
Added optional interface for dynamic execution profile (to be gathered
Guido van Rossum <guido@python.org>
parents:
4904
diff
changeset
|
708 #endif |
|
28174
3f90d21debe9
Always initialize Py_FileSystemDefaultEncoding on Unix in Py_Initialize,
Martin v. Löwis <martin@v.loewis.de>
parents:
28119
diff
changeset
|
709 #ifdef Py_USING_UNICODE |
|
3f90d21debe9
Always initialize Py_FileSystemDefaultEncoding on Unix in Py_Initialize,
Martin v. Löwis <martin@v.loewis.de>
parents:
28119
diff
changeset
|
710 {"getfilesystemencoding", (PyCFunction)sys_getfilesystemencoding, |
|
3f90d21debe9
Always initialize Py_FileSystemDefaultEncoding on Unix in Py_Initialize,
Martin v. Löwis <martin@v.loewis.de>
parents:
28119
diff
changeset
|
711 METH_NOARGS, getfilesystemencoding_doc}, |
|
3f90d21debe9
Always initialize Py_FileSystemDefaultEncoding on Unix in Py_Initialize,
Martin v. Löwis <martin@v.loewis.de>
parents:
28119
diff
changeset
|
712 #endif |
|
3585
4ed09a3c3201
TRACE_REFS -> Py_TRACE_REFS
Guido van Rossum <guido@python.org>
parents:
3490
diff
changeset
|
713 #ifdef Py_TRACE_REFS |
|
19301
b9701538f827
Patch #427190: Implement and use METH_NOARGS and METH_O.
Martin v. Löwis <martin@v.loewis.de>
parents:
18805
diff
changeset
|
714 {"getobjects", _Py_GetObjects, METH_VARARGS}, |
|
24126
fdf80e04e4bb
Rearranged and added comments to object.h, to clarify many things
Tim Peters <tim.peters@gmail.com>
parents:
24071
diff
changeset
|
715 #endif |
|
fdf80e04e4bb
Rearranged and added comments to object.h, to clarify many things
Tim Peters <tim.peters@gmail.com>
parents:
24071
diff
changeset
|
716 #ifdef Py_REF_DEBUG |
|
19301
b9701538f827
Patch #427190: Implement and use METH_NOARGS and METH_O.
Martin v. Löwis <martin@v.loewis.de>
parents:
18805
diff
changeset
|
717 {"gettotalrefcount", (PyCFunction)sys_gettotalrefcount, METH_NOARGS}, |
|
3024
54aa87b1ccee
Implemented two new functions in sys:
Sjoerd Mullender <sjoerd@acm.org>
parents:
2810
diff
changeset
|
718 #endif |
|
20655
7344687bf2c0
Convert getrefcount() to METH_O, and sys_excepthook() to use
Fred Drake <fdrake@acm.org>
parents:
20247
diff
changeset
|
719 {"getrefcount", (PyCFunction)sys_getrefcount, METH_O, getrefcount_doc}, |
|
19301
b9701538f827
Patch #427190: Implement and use METH_NOARGS and METH_O.
Martin v. Löwis <martin@v.loewis.de>
parents:
18805
diff
changeset
|
720 {"getrecursionlimit", (PyCFunction)sys_getrecursionlimit, METH_NOARGS, |
|
14308
b8b3f76ffd51
add user-modifiable recursion_limit
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
14295
diff
changeset
|
721 getrecursionlimit_doc}, |
|
19301
b9701538f827
Patch #427190: Implement and use METH_NOARGS and METH_O.
Martin v. Löwis <martin@v.loewis.de>
parents:
18805
diff
changeset
|
722 {"_getframe", sys_getframe, METH_VARARGS, getframe_doc}, |
|
25666
4a825b902310
Add os.path.supports_unicode_filenames for all platforms,
Mark Hammond <mhammond@skippinet.com.au>
parents:
25108
diff
changeset
|
723 #ifdef MS_WINDOWS |
|
4a825b902310
Add os.path.supports_unicode_filenames for all platforms,
Mark Hammond <mhammond@skippinet.com.au>
parents:
25108
diff
changeset
|
724 {"getwindowsversion", (PyCFunction)sys_getwindowsversion, METH_NOARGS, |
|
4a825b902310
Add os.path.supports_unicode_filenames for all platforms,
Mark Hammond <mhammond@skippinet.com.au>
parents:
25108
diff
changeset
|
725 getwindowsversion_doc}, |
|
4a825b902310
Add os.path.supports_unicode_filenames for all platforms,
Mark Hammond <mhammond@skippinet.com.au>
parents:
25108
diff
changeset
|
726 #endif /* MS_WINDOWS */ |
|
1013
a1ce5a949828
Add an optional interface to turn malloc debugging on and off.
Guido van Rossum <guido@python.org>
parents:
901
diff
changeset
|
727 #ifdef USE_MALLOPT |
|
19301
b9701538f827
Patch #427190: Implement and use METH_NOARGS and METH_O.
Martin v. Löwis <martin@v.loewis.de>
parents:
18805
diff
changeset
|
728 {"mdebug", sys_mdebug, METH_VARARGS}, |
|
1013
a1ce5a949828
Add an optional interface to turn malloc debugging on and off.
Guido van Rossum <guido@python.org>
parents:
901
diff
changeset
|
729 #endif |
|
19343
7257e87e0720
Patch #445762: Support --disable-unicode
Martin v. Löwis <martin@v.loewis.de>
parents:
19301
diff
changeset
|
730 #ifdef Py_USING_UNICODE |
|
19301
b9701538f827
Patch #427190: Implement and use METH_NOARGS and METH_O.
Martin v. Löwis <martin@v.loewis.de>
parents:
18805
diff
changeset
|
731 {"setdefaultencoding", sys_setdefaultencoding, METH_VARARGS, |
|
14308
b8b3f76ffd51
add user-modifiable recursion_limit
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
14295
diff
changeset
|
732 setdefaultencoding_doc}, |
|
19343
7257e87e0720
Patch #445762: Support --disable-unicode
Martin v. Löwis <martin@v.loewis.de>
parents:
19301
diff
changeset
|
733 #endif |
|
19301
b9701538f827
Patch #427190: Implement and use METH_NOARGS and METH_O.
Martin v. Löwis <martin@v.loewis.de>
parents:
18805
diff
changeset
|
734 {"setcheckinterval", sys_setcheckinterval, METH_VARARGS, |
|
14308
b8b3f76ffd51
add user-modifiable recursion_limit
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
14295
diff
changeset
|
735 setcheckinterval_doc}, |
|
29765
e9e5832d706f
New function sys.getcheckinterval(), to complement setcheckinterval().
Tim Peters <tim.peters@gmail.com>
parents:
29065
diff
changeset
|
736 {"getcheckinterval", sys_getcheckinterval, METH_NOARGS, |
|
e9e5832d706f
New function sys.getcheckinterval(), to complement setcheckinterval().
Tim Peters <tim.peters@gmail.com>
parents:
29065
diff
changeset
|
737 getcheckinterval_doc}, |
|
18689
064de84385ca
Patch #412229: Add functions sys.getdlopenflags and sys.setdlopenflags.
Martin v. Löwis <martin@v.loewis.de>
parents:
18326
diff
changeset
|
738 #ifdef HAVE_DLOPEN |
|
19301
b9701538f827
Patch #427190: Implement and use METH_NOARGS and METH_O.
Martin v. Löwis <martin@v.loewis.de>
parents:
18805
diff
changeset
|
739 {"setdlopenflags", sys_setdlopenflags, METH_VARARGS, |
|
b9701538f827
Patch #427190: Implement and use METH_NOARGS and METH_O.
Martin v. Löwis <martin@v.loewis.de>
parents:
18805
diff
changeset
|
740 setdlopenflags_doc}, |
|
18689
064de84385ca
Patch #412229: Add functions sys.getdlopenflags and sys.setdlopenflags.
Martin v. Löwis <martin@v.loewis.de>
parents:
18326
diff
changeset
|
741 #endif |
|
22119
0859e764509e
SF #506611, fix sys.setprofile(), sys.settrace() core dumps
Neal Norwitz <nnorwitz@gmail.com>
parents:
21833
diff
changeset
|
742 {"setprofile", sys_setprofile, METH_O, setprofile_doc}, |
|
19301
b9701538f827
Patch #427190: Implement and use METH_NOARGS and METH_O.
Martin v. Löwis <martin@v.loewis.de>
parents:
18805
diff
changeset
|
743 {"setrecursionlimit", sys_setrecursionlimit, METH_VARARGS, |
|
14308
b8b3f76ffd51
add user-modifiable recursion_limit
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
14295
diff
changeset
|
744 setrecursionlimit_doc}, |
|
22119
0859e764509e
SF #506611, fix sys.setprofile(), sys.settrace() core dumps
Neal Norwitz <nnorwitz@gmail.com>
parents:
21833
diff
changeset
|
745 {"settrace", sys_settrace, METH_O, settrace_doc}, |
|
28556
78395e5b4782
- New function sys.call_tracing() allows pdb to debug code
Guido van Rossum <guido@python.org>
parents:
28174
diff
changeset
|
746 {"call_tracing", sys_call_tracing, METH_VARARGS, call_tracing_doc}, |
| 86 | 747 {NULL, NULL} /* sentinel */ |
| 748 }; | |
| 749 | |
| 5372 | 750 static PyObject * |
|
13658
f79434ee41fa
Mass ANSIfication of function definitions. Doesn't cover all 'extern'
Thomas Wouters <thomas@python.org>
parents:
13447
diff
changeset
|
751 list_builtin_module_names(void) |
|
1198
2937897a7d8b
* Added Fixcprt.py: script to fix copyright message.
Guido van Rossum <guido@python.org>
parents:
1073
diff
changeset
|
752 { |
| 5372 | 753 PyObject *list = PyList_New(0); |
|
1198
2937897a7d8b
* Added Fixcprt.py: script to fix copyright message.
Guido van Rossum <guido@python.org>
parents:
1073
diff
changeset
|
754 int i; |
|
2937897a7d8b
* Added Fixcprt.py: script to fix copyright message.
Guido van Rossum <guido@python.org>
parents:
1073
diff
changeset
|
755 if (list == NULL) |
|
2937897a7d8b
* Added Fixcprt.py: script to fix copyright message.
Guido van Rossum <guido@python.org>
parents:
1073
diff
changeset
|
756 return NULL; |
|
6550
f406ec35bfca
Get rid of another reference to _PyImport_Inittab (now a static array)
Guido van Rossum <guido@python.org>
parents:
6352
diff
changeset
|
757 for (i = 0; PyImport_Inittab[i].name != NULL; i++) { |
|
5405
b7871ca930ad
Massive changes for separate thread state management.
Guido van Rossum <guido@python.org>
parents:
5377
diff
changeset
|
758 PyObject *name = PyString_FromString( |
|
6550
f406ec35bfca
Get rid of another reference to _PyImport_Inittab (now a static array)
Guido van Rossum <guido@python.org>
parents:
6352
diff
changeset
|
759 PyImport_Inittab[i].name); |
|
1198
2937897a7d8b
* Added Fixcprt.py: script to fix copyright message.
Guido van Rossum <guido@python.org>
parents:
1073
diff
changeset
|
760 if (name == NULL) |
|
2937897a7d8b
* Added Fixcprt.py: script to fix copyright message.
Guido van Rossum <guido@python.org>
parents:
1073
diff
changeset
|
761 break; |
| 5372 | 762 PyList_Append(list, name); |
| 763 Py_DECREF(name); | |
|
1198
2937897a7d8b
* Added Fixcprt.py: script to fix copyright message.
Guido van Rossum <guido@python.org>
parents:
1073
diff
changeset
|
764 } |
| 5372 | 765 if (PyList_Sort(list) != 0) { |
| 766 Py_DECREF(list); | |
|
1848
b724599401ff
Merge back to main trunk
Guido van Rossum <guido@python.org>
parents:
1198
diff
changeset
|
767 list = NULL; |
|
b724599401ff
Merge back to main trunk
Guido van Rossum <guido@python.org>
parents:
1198
diff
changeset
|
768 } |
|
4904
5dc20a9e0506
Make builtin_module_names a tuple instead of a list.
Guido van Rossum <guido@python.org>
parents:
4503
diff
changeset
|
769 if (list) { |
| 5372 | 770 PyObject *v = PyList_AsTuple(list); |
| 771 Py_DECREF(list); | |
|
4904
5dc20a9e0506
Make builtin_module_names a tuple instead of a list.
Guido van Rossum <guido@python.org>
parents:
4503
diff
changeset
|
772 list = v; |
|
5dc20a9e0506
Make builtin_module_names a tuple instead of a list.
Guido van Rossum <guido@python.org>
parents:
4503
diff
changeset
|
773 } |
|
1198
2937897a7d8b
* Added Fixcprt.py: script to fix copyright message.
Guido van Rossum <guido@python.org>
parents:
1073
diff
changeset
|
774 return list; |
|
2937897a7d8b
* Added Fixcprt.py: script to fix copyright message.
Guido van Rossum <guido@python.org>
parents:
1073
diff
changeset
|
775 } |
|
2937897a7d8b
* Added Fixcprt.py: script to fix copyright message.
Guido van Rossum <guido@python.org>
parents:
1073
diff
changeset
|
776 |
|
15595
0f42f6669e80
Add definitions for PySys_ResetWarnOptions() and
Guido van Rossum <guido@python.org>
parents:
15487
diff
changeset
|
777 static PyObject *warnoptions = NULL; |
|
0f42f6669e80
Add definitions for PySys_ResetWarnOptions() and
Guido van Rossum <guido@python.org>
parents:
15487
diff
changeset
|
778 |
|
0f42f6669e80
Add definitions for PySys_ResetWarnOptions() and
Guido van Rossum <guido@python.org>
parents:
15487
diff
changeset
|
779 void |
|
0f42f6669e80
Add definitions for PySys_ResetWarnOptions() and
Guido van Rossum <guido@python.org>
parents:
15487
diff
changeset
|
780 PySys_ResetWarnOptions(void) |
|
0f42f6669e80
Add definitions for PySys_ResetWarnOptions() and
Guido van Rossum <guido@python.org>
parents:
15487
diff
changeset
|
781 { |
|
0f42f6669e80
Add definitions for PySys_ResetWarnOptions() and
Guido van Rossum <guido@python.org>
parents:
15487
diff
changeset
|
782 if (warnoptions == NULL || !PyList_Check(warnoptions)) |
|
0f42f6669e80
Add definitions for PySys_ResetWarnOptions() and
Guido van Rossum <guido@python.org>
parents:
15487
diff
changeset
|
783 return; |
|
0f42f6669e80
Add definitions for PySys_ResetWarnOptions() and
Guido van Rossum <guido@python.org>
parents:
15487
diff
changeset
|
784 PyList_SetSlice(warnoptions, 0, PyList_GET_SIZE(warnoptions), NULL); |
|
0f42f6669e80
Add definitions for PySys_ResetWarnOptions() and
Guido van Rossum <guido@python.org>
parents:
15487
diff
changeset
|
785 } |
|
0f42f6669e80
Add definitions for PySys_ResetWarnOptions() and
Guido van Rossum <guido@python.org>
parents:
15487
diff
changeset
|
786 |
|
0f42f6669e80
Add definitions for PySys_ResetWarnOptions() and
Guido van Rossum <guido@python.org>
parents:
15487
diff
changeset
|
787 void |
|
0f42f6669e80
Add definitions for PySys_ResetWarnOptions() and
Guido van Rossum <guido@python.org>
parents:
15487
diff
changeset
|
788 PySys_AddWarnOption(char *s) |
|
0f42f6669e80
Add definitions for PySys_ResetWarnOptions() and
Guido van Rossum <guido@python.org>
parents:
15487
diff
changeset
|
789 { |
|
0f42f6669e80
Add definitions for PySys_ResetWarnOptions() and
Guido van Rossum <guido@python.org>
parents:
15487
diff
changeset
|
790 PyObject *str; |
|
0f42f6669e80
Add definitions for PySys_ResetWarnOptions() and
Guido van Rossum <guido@python.org>
parents:
15487
diff
changeset
|
791 |
|
0f42f6669e80
Add definitions for PySys_ResetWarnOptions() and
Guido van Rossum <guido@python.org>
parents:
15487
diff
changeset
|
792 if (warnoptions == NULL || !PyList_Check(warnoptions)) { |
|
0f42f6669e80
Add definitions for PySys_ResetWarnOptions() and
Guido van Rossum <guido@python.org>
parents:
15487
diff
changeset
|
793 Py_XDECREF(warnoptions); |
|
0f42f6669e80
Add definitions for PySys_ResetWarnOptions() and
Guido van Rossum <guido@python.org>
parents:
15487
diff
changeset
|
794 warnoptions = PyList_New(0); |
|
0f42f6669e80
Add definitions for PySys_ResetWarnOptions() and
Guido van Rossum <guido@python.org>
parents:
15487
diff
changeset
|
795 if (warnoptions == NULL) |
|
0f42f6669e80
Add definitions for PySys_ResetWarnOptions() and
Guido van Rossum <guido@python.org>
parents:
15487
diff
changeset
|
796 return; |
|
0f42f6669e80
Add definitions for PySys_ResetWarnOptions() and
Guido van Rossum <guido@python.org>
parents:
15487
diff
changeset
|
797 } |
|
0f42f6669e80
Add definitions for PySys_ResetWarnOptions() and
Guido van Rossum <guido@python.org>
parents:
15487
diff
changeset
|
798 str = PyString_FromString(s); |
|
0f42f6669e80
Add definitions for PySys_ResetWarnOptions() and
Guido van Rossum <guido@python.org>
parents:
15487
diff
changeset
|
799 if (str != NULL) { |
|
0f42f6669e80
Add definitions for PySys_ResetWarnOptions() and
Guido van Rossum <guido@python.org>
parents:
15487
diff
changeset
|
800 PyList_Append(warnoptions, str); |
|
0f42f6669e80
Add definitions for PySys_ResetWarnOptions() and
Guido van Rossum <guido@python.org>
parents:
15487
diff
changeset
|
801 Py_DECREF(str); |
|
0f42f6669e80
Add definitions for PySys_ResetWarnOptions() and
Guido van Rossum <guido@python.org>
parents:
15487
diff
changeset
|
802 } |
|
0f42f6669e80
Add definitions for PySys_ResetWarnOptions() and
Guido van Rossum <guido@python.org>
parents:
15487
diff
changeset
|
803 } |
|
0f42f6669e80
Add definitions for PySys_ResetWarnOptions() and
Guido van Rossum <guido@python.org>
parents:
15487
diff
changeset
|
804 |
|
8840
44baef8ab5c8
Gack. The module doc string is too long for VC++ 5.0.
Guido van Rossum <guido@python.org>
parents:
8566
diff
changeset
|
805 /* XXX This doc string is too long to be a single string literal in VC++ 5.0. |
|
44baef8ab5c8
Gack. The module doc string is too long for VC++ 5.0.
Guido van Rossum <guido@python.org>
parents:
8566
diff
changeset
|
806 Two literals concatenated works just fine. If you have a K&R compiler |
|
44baef8ab5c8
Gack. The module doc string is too long for VC++ 5.0.
Guido van Rossum <guido@python.org>
parents:
8566
diff
changeset
|
807 or other abomination that however *does* understand longer strings, |
|
44baef8ab5c8
Gack. The module doc string is too long for VC++ 5.0.
Guido van Rossum <guido@python.org>
parents:
8566
diff
changeset
|
808 get rid of the !!! comment in the middle and the quotes that surround it. */ |
|
23746
43ddcdcd3c71
Patch #505375: Make doc strings optional.
Martin v. Löwis <martin@v.loewis.de>
parents:
22604
diff
changeset
|
809 PyDoc_VAR(sys_doc) = |
|
43ddcdcd3c71
Patch #505375: Make doc strings optional.
Martin v. Löwis <martin@v.loewis.de>
parents:
22604
diff
changeset
|
810 PyDoc_STR( |
|
8566
6e8b0e754a7f
Added doc strings. Maybe the doc string for the module itself is a bit
Guido van Rossum <guido@python.org>
parents:
8314
diff
changeset
|
811 "This module provides access to some objects used or maintained by the\n\ |
|
6e8b0e754a7f
Added doc strings. Maybe the doc string for the module itself is a bit
Guido van Rossum <guido@python.org>
parents:
8314
diff
changeset
|
812 interpreter and to functions that interact strongly with the interpreter.\n\ |
|
6e8b0e754a7f
Added doc strings. Maybe the doc string for the module itself is a bit
Guido van Rossum <guido@python.org>
parents:
8314
diff
changeset
|
813 \n\ |
|
6e8b0e754a7f
Added doc strings. Maybe the doc string for the module itself is a bit
Guido van Rossum <guido@python.org>
parents:
8314
diff
changeset
|
814 Dynamic objects:\n\ |
|
6e8b0e754a7f
Added doc strings. Maybe the doc string for the module itself is a bit
Guido van Rossum <guido@python.org>
parents:
8314
diff
changeset
|
815 \n\ |
|
6e8b0e754a7f
Added doc strings. Maybe the doc string for the module itself is a bit
Guido van Rossum <guido@python.org>
parents:
8314
diff
changeset
|
816 argv -- command line arguments; argv[0] is the script pathname if known\n\ |
|
6e8b0e754a7f
Added doc strings. Maybe the doc string for the module itself is a bit
Guido van Rossum <guido@python.org>
parents:
8314
diff
changeset
|
817 path -- module search path; path[0] is the script directory, else ''\n\ |
|
6e8b0e754a7f
Added doc strings. Maybe the doc string for the module itself is a bit
Guido van Rossum <guido@python.org>
parents:
8314
diff
changeset
|
818 modules -- dictionary of loaded modules\n\ |
| 17164 | 819 \n\ |
| 820 displayhook -- called to show results in an interactive session\n\ | |
| 821 excepthook -- called to handle any uncaught exception other than SystemExit\n\ | |
| 822 To customize printing in an interactive session or to install a custom\n\ | |
| 823 top-level exception handler, assign other functions to replace these.\n\ | |
| 824 \n\ | |
| 825 exitfunc -- if sys.exitfunc exists, this routine is called when Python exits\n\ | |
| 826 Assigning to sys.exitfunc is deprecated; use the atexit module instead.\n\ | |
|
8566
6e8b0e754a7f
Added doc strings. Maybe the doc string for the module itself is a bit
Guido van Rossum <guido@python.org>
parents:
8314
diff
changeset
|
827 \n\ |
|
6e8b0e754a7f
Added doc strings. Maybe the doc string for the module itself is a bit
Guido van Rossum <guido@python.org>
parents:
8314
diff
changeset
|
828 stdin -- standard input file object; used by raw_input() and input()\n\ |
|
6e8b0e754a7f
Added doc strings. Maybe the doc string for the module itself is a bit
Guido van Rossum <guido@python.org>
parents:
8314
diff
changeset
|
829 stdout -- standard output file object; used by the print statement\n\ |
|
6e8b0e754a7f
Added doc strings. Maybe the doc string for the module itself is a bit
Guido van Rossum <guido@python.org>
parents:
8314
diff
changeset
|
830 stderr -- standard error object; used for error messages\n\ |
| 17164 | 831 By assigning other file objects (or objects that behave like files)\n\ |
| 832 to these, it is possible to redirect all of the interpreter's I/O.\n\ | |
|
8566
6e8b0e754a7f
Added doc strings. Maybe the doc string for the module itself is a bit
Guido van Rossum <guido@python.org>
parents:
8314
diff
changeset
|
833 \n\ |
|
6e8b0e754a7f
Added doc strings. Maybe the doc string for the module itself is a bit
Guido van Rossum <guido@python.org>
parents:
8314
diff
changeset
|
834 last_type -- type of last uncaught exception\n\ |
|
6e8b0e754a7f
Added doc strings. Maybe the doc string for the module itself is a bit
Guido van Rossum <guido@python.org>
parents:
8314
diff
changeset
|
835 last_value -- value of last uncaught exception\n\ |
|
6e8b0e754a7f
Added doc strings. Maybe the doc string for the module itself is a bit
Guido van Rossum <guido@python.org>
parents:
8314
diff
changeset
|
836 last_traceback -- traceback of last uncaught exception\n\ |
|
6e8b0e754a7f
Added doc strings. Maybe the doc string for the module itself is a bit
Guido van Rossum <guido@python.org>
parents:
8314
diff
changeset
|
837 These three are only available in an interactive session after a\n\ |
|
6e8b0e754a7f
Added doc strings. Maybe the doc string for the module itself is a bit
Guido van Rossum <guido@python.org>
parents:
8314
diff
changeset
|
838 traceback has been printed.\n\ |
|
6e8b0e754a7f
Added doc strings. Maybe the doc string for the module itself is a bit
Guido van Rossum <guido@python.org>
parents:
8314
diff
changeset
|
839 \n\ |
|
6e8b0e754a7f
Added doc strings. Maybe the doc string for the module itself is a bit
Guido van Rossum <guido@python.org>
parents:
8314
diff
changeset
|
840 exc_type -- type of exception currently being handled\n\ |
|
6e8b0e754a7f
Added doc strings. Maybe the doc string for the module itself is a bit
Guido van Rossum <guido@python.org>
parents:
8314
diff
changeset
|
841 exc_value -- value of exception currently being handled\n\ |
|
6e8b0e754a7f
Added doc strings. Maybe the doc string for the module itself is a bit
Guido van Rossum <guido@python.org>
parents:
8314
diff
changeset
|
842 exc_traceback -- traceback of exception currently being handled\n\ |
|
6e8b0e754a7f
Added doc strings. Maybe the doc string for the module itself is a bit
Guido van Rossum <guido@python.org>
parents:
8314
diff
changeset
|
843 The function exc_info() should be used instead of these three,\n\ |
|
6e8b0e754a7f
Added doc strings. Maybe the doc string for the module itself is a bit
Guido van Rossum <guido@python.org>
parents:
8314
diff
changeset
|
844 because it is thread-safe.\n\ |
|
9885
030ee50bd8d1
Jim Ahlstrom patch: the module doc string is too long for 16-bit VC
Guido van Rossum <guido@python.org>
parents:
9746
diff
changeset
|
845 " |
|
23746
43ddcdcd3c71
Patch #505375: Make doc strings optional.
Martin v. Löwis <martin@v.loewis.de>
parents:
22604
diff
changeset
|
846 ) |
| 17164 | 847 /* concatenating string here */ |
|
23746
43ddcdcd3c71
Patch #505375: Make doc strings optional.
Martin v. Löwis <martin@v.loewis.de>
parents:
22604
diff
changeset
|
848 PyDoc_STR( |
|
9885
030ee50bd8d1
Jim Ahlstrom patch: the module doc string is too long for 16-bit VC
Guido van Rossum <guido@python.org>
parents:
9746
diff
changeset
|
849 "\n\ |
|
8566
6e8b0e754a7f
Added doc strings. Maybe the doc string for the module itself is a bit
Guido van Rossum <guido@python.org>
parents:
8314
diff
changeset
|
850 Static objects:\n\ |
|
6e8b0e754a7f
Added doc strings. Maybe the doc string for the module itself is a bit
Guido van Rossum <guido@python.org>
parents:
8314
diff
changeset
|
851 \n\ |
|
6e8b0e754a7f
Added doc strings. Maybe the doc string for the module itself is a bit
Guido van Rossum <guido@python.org>
parents:
8314
diff
changeset
|
852 maxint -- the largest supported integer (the smallest is -maxint-1)\n\ |
|
18298
982163c4e9d2
Encode surrogates in UTF-8 even for a wide Py_UNICODE.
Martin v. Löwis <martin@v.loewis.de>
parents:
18136
diff
changeset
|
853 maxunicode -- the largest supported character\n\ |
|
21833
070d392042e3
Fix spelling mistakes. Bugfix candidates.
Neal Norwitz <nnorwitz@gmail.com>
parents:
21712
diff
changeset
|
854 builtin_module_names -- tuple of module names built into this interpreter\n\ |
|
12394
60dd95c75999
Define version_info to be a tuple (major, minor, micro, level); level
Fred Drake <fdrake@acm.org>
parents:
12136
diff
changeset
|
855 version -- the version of this interpreter as a string\n\ |
|
60dd95c75999
Define version_info to be a tuple (major, minor, micro, level); level
Fred Drake <fdrake@acm.org>
parents:
12136
diff
changeset
|
856 version_info -- version information as a tuple\n\ |
|
60dd95c75999
Define version_info to be a tuple (major, minor, micro, level); level
Fred Drake <fdrake@acm.org>
parents:
12136
diff
changeset
|
857 hexversion -- version information encoded as a single integer\n\ |
|
8566
6e8b0e754a7f
Added doc strings. Maybe the doc string for the module itself is a bit
Guido van Rossum <guido@python.org>
parents:
8314
diff
changeset
|
858 copyright -- copyright notice pertaining to this interpreter\n\ |
|
6e8b0e754a7f
Added doc strings. Maybe the doc string for the module itself is a bit
Guido van Rossum <guido@python.org>
parents:
8314
diff
changeset
|
859 platform -- platform identifier\n\ |
|
6e8b0e754a7f
Added doc strings. Maybe the doc string for the module itself is a bit
Guido van Rossum <guido@python.org>
parents:
8314
diff
changeset
|
860 executable -- pathname of this Python interpreter\n\ |
|
6e8b0e754a7f
Added doc strings. Maybe the doc string for the module itself is a bit
Guido van Rossum <guido@python.org>
parents:
8314
diff
changeset
|
861 prefix -- prefix used to find the Python library\n\ |
|
6e8b0e754a7f
Added doc strings. Maybe the doc string for the module itself is a bit
Guido van Rossum <guido@python.org>
parents:
8314
diff
changeset
|
862 exec_prefix -- prefix used to find the machine-specific Python library\n\ |
| 17164 | 863 " |
|
23746
43ddcdcd3c71
Patch #505375: Make doc strings optional.
Martin v. Löwis <martin@v.loewis.de>
parents:
22604
diff
changeset
|
864 ) |
| 17164 | 865 #ifdef MS_WINDOWS |
| 866 /* concatenating string here */ | |
|
23746
43ddcdcd3c71
Patch #505375: Make doc strings optional.
Martin v. Löwis <martin@v.loewis.de>
parents:
22604
diff
changeset
|
867 PyDoc_STR( |
| 17164 | 868 "dllhandle -- [Windows only] integer handle of the Python DLL\n\ |
|
8566
6e8b0e754a7f
Added doc strings. Maybe the doc string for the module itself is a bit
Guido van Rossum <guido@python.org>
parents:
8314
diff
changeset
|
869 winver -- [Windows only] version number of the Python DLL\n\ |
| 17164 | 870 " |
|
23746
43ddcdcd3c71
Patch #505375: Make doc strings optional.
Martin v. Löwis <martin@v.loewis.de>
parents:
22604
diff
changeset
|
871 ) |
| 17164 | 872 #endif /* MS_WINDOWS */ |
|
23746
43ddcdcd3c71
Patch #505375: Make doc strings optional.
Martin v. Löwis <martin@v.loewis.de>
parents:
22604
diff
changeset
|
873 PyDoc_STR( |
| 17164 | 874 "__stdin__ -- the original stdin; don't touch!\n\ |
| 875 __stdout__ -- the original stdout; don't touch!\n\ | |
| 876 __stderr__ -- the original stderr; don't touch!\n\ | |
| 877 __displayhook__ -- the original displayhook; don't touch!\n\ | |
| 878 __excepthook__ -- the original excepthook; don't touch!\n\ | |
|
8566
6e8b0e754a7f
Added doc strings. Maybe the doc string for the module itself is a bit
Guido van Rossum <guido@python.org>
parents:
8314
diff
changeset
|
879 \n\ |
|
6e8b0e754a7f
Added doc strings. Maybe the doc string for the module itself is a bit
Guido van Rossum <guido@python.org>
parents:
8314
diff
changeset
|
880 Functions:\n\ |
|
6e8b0e754a7f
Added doc strings. Maybe the doc string for the module itself is a bit
Guido van Rossum <guido@python.org>
parents:
8314
diff
changeset
|
881 \n\ |
|
15811
1a00d21910c8
Implementation of PEP-0217.
Moshe Zadka <moshez@math.huji.ac.il>
parents:
15595
diff
changeset
|
882 displayhook() -- print an object to the screen, and save it in __builtin__._\n\ |
| 17164 | 883 excepthook() -- print an exception and its traceback to sys.stderr\n\ |
|
8566
6e8b0e754a7f
Added doc strings. Maybe the doc string for the module itself is a bit
Guido van Rossum <guido@python.org>
parents:
8314
diff
changeset
|
884 exc_info() -- return thread-safe information about the current exception\n\ |
|
28119
869695cba2cd
- New function sys.exc_clear() clears the current exception. This is
Guido van Rossum <guido@python.org>
parents:
27977
diff
changeset
|
885 exc_clear() -- clear the exception state for the current thread\n\ |
|
8566
6e8b0e754a7f
Added doc strings. Maybe the doc string for the module itself is a bit
Guido van Rossum <guido@python.org>
parents:
8314
diff
changeset
|
886 exit() -- exit the interpreter by raising SystemExit\n\ |
|
18689
064de84385ca
Patch #412229: Add functions sys.getdlopenflags and sys.setdlopenflags.
Martin v. Löwis <martin@v.loewis.de>
parents:
18326
diff
changeset
|
887 getdlopenflags() -- returns flags to be used for dlopen() calls\n\ |
|
8566
6e8b0e754a7f
Added doc strings. Maybe the doc string for the module itself is a bit
Guido van Rossum <guido@python.org>
parents:
8314
diff
changeset
|
888 getrefcount() -- return the reference count for an object (plus one :-)\n\ |
|
14308
b8b3f76ffd51
add user-modifiable recursion_limit
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
14295
diff
changeset
|
889 getrecursionlimit() -- return the max recursion depth for the interpreter\n\ |
|
8566
6e8b0e754a7f
Added doc strings. Maybe the doc string for the module itself is a bit
Guido van Rossum <guido@python.org>
parents:
8314
diff
changeset
|
890 setcheckinterval() -- control how often the interpreter checks for events\n\ |
|
18689
064de84385ca
Patch #412229: Add functions sys.getdlopenflags and sys.setdlopenflags.
Martin v. Löwis <martin@v.loewis.de>
parents:
18326
diff
changeset
|
891 setdlopenflags() -- set the flags to be used for dlopen() calls\n\ |
|
8566
6e8b0e754a7f
Added doc strings. Maybe the doc string for the module itself is a bit
Guido van Rossum <guido@python.org>
parents:
8314
diff
changeset
|
892 setprofile() -- set the global profiling function\n\ |
|
14308
b8b3f76ffd51
add user-modifiable recursion_limit
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
14295
diff
changeset
|
893 setrecursionlimit() -- set the max recursion depth for the interpreter\n\ |
|
8566
6e8b0e754a7f
Added doc strings. Maybe the doc string for the module itself is a bit
Guido van Rossum <guido@python.org>
parents:
8314
diff
changeset
|
894 settrace() -- set the global debug tracing function\n\ |
|
13971
aa4202702252
The attempt to protect against MS_WIN16 compilers that do not support long
Fred Drake <fdrake@acm.org>
parents:
13968
diff
changeset
|
895 " |
|
23746
43ddcdcd3c71
Patch #505375: Make doc strings optional.
Martin v. Löwis <martin@v.loewis.de>
parents:
22604
diff
changeset
|
896 ) |
|
13971
aa4202702252
The attempt to protect against MS_WIN16 compilers that do not support long
Fred Drake <fdrake@acm.org>
parents:
13968
diff
changeset
|
897 /* end of sys_doc */ ; |
|
8566
6e8b0e754a7f
Added doc strings. Maybe the doc string for the module itself is a bit
Guido van Rossum <guido@python.org>
parents:
8314
diff
changeset
|
898 |
|
5926
8d2194e22e67
The last of the mass checkins for separate (sub)interpreters.
Guido van Rossum <guido@python.org>
parents:
5863
diff
changeset
|
899 PyObject * |
|
13658
f79434ee41fa
Mass ANSIfication of function definitions. Doesn't cover all 'extern'
Thomas Wouters <thomas@python.org>
parents:
13447
diff
changeset
|
900 _PySys_Init(void) |
| 6 | 901 { |
|
5926
8d2194e22e67
The last of the mass checkins for separate (sub)interpreters.
Guido van Rossum <guido@python.org>
parents:
5863
diff
changeset
|
902 PyObject *m, *v, *sysdict; |
|
8d2194e22e67
The last of the mass checkins for separate (sub)interpreters.
Guido van Rossum <guido@python.org>
parents:
5863
diff
changeset
|
903 PyObject *sysin, *sysout, *syserr; |
|
12398
2392d10e21f1
Simplify creation of the version_info value for clarity, per
Fred Drake <fdrake@acm.org>
parents:
12396
diff
changeset
|
904 char *s; |
|
29065
bf1634b023d5
Patch #612627: Add encoding attribute to file objects, and determine
Martin v. Löwis <martin@v.loewis.de>
parents:
28949
diff
changeset
|
905 #ifdef MS_WINDOWS |
|
bf1634b023d5
Patch #612627: Add encoding attribute to file objects, and determine
Martin v. Löwis <martin@v.loewis.de>
parents:
28949
diff
changeset
|
906 char buf[10]; |
|
bf1634b023d5
Patch #612627: Add encoding attribute to file objects, and determine
Martin v. Löwis <martin@v.loewis.de>
parents:
28949
diff
changeset
|
907 #endif |
|
bf1634b023d5
Patch #612627: Add encoding attribute to file objects, and determine
Martin v. Löwis <martin@v.loewis.de>
parents:
28949
diff
changeset
|
908 #if defined(HAVE_LANGINFO_H) && defined(CODESET) |
|
bf1634b023d5
Patch #612627: Add encoding attribute to file objects, and determine
Martin v. Löwis <martin@v.loewis.de>
parents:
28949
diff
changeset
|
909 char *oldloc, *codeset; |
|
bf1634b023d5
Patch #612627: Add encoding attribute to file objects, and determine
Martin v. Löwis <martin@v.loewis.de>
parents:
28949
diff
changeset
|
910 #endif |
|
5926
8d2194e22e67
The last of the mass checkins for separate (sub)interpreters.
Guido van Rossum <guido@python.org>
parents:
5863
diff
changeset
|
911 |
|
8566
6e8b0e754a7f
Added doc strings. Maybe the doc string for the module itself is a bit
Guido van Rossum <guido@python.org>
parents:
8314
diff
changeset
|
912 m = Py_InitModule3("sys", sys_methods, sys_doc); |
| 5372 | 913 sysdict = PyModule_GetDict(m); |
|
5926
8d2194e22e67
The last of the mass checkins for separate (sub)interpreters.
Guido van Rossum <guido@python.org>
parents:
5863
diff
changeset
|
914 |
|
8d2194e22e67
The last of the mass checkins for separate (sub)interpreters.
Guido van Rossum <guido@python.org>
parents:
5863
diff
changeset
|
915 sysin = PyFile_FromFile(stdin, "<stdin>", "r", NULL); |
|
8d2194e22e67
The last of the mass checkins for separate (sub)interpreters.
Guido van Rossum <guido@python.org>
parents:
5863
diff
changeset
|
916 sysout = PyFile_FromFile(stdout, "<stdout>", "w", NULL); |
|
8d2194e22e67
The last of the mass checkins for separate (sub)interpreters.
Guido van Rossum <guido@python.org>
parents:
5863
diff
changeset
|
917 syserr = PyFile_FromFile(stderr, "<stderr>", "w", NULL); |
| 5372 | 918 if (PyErr_Occurred()) |
|
5926
8d2194e22e67
The last of the mass checkins for separate (sub)interpreters.
Guido van Rossum <guido@python.org>
parents:
5863
diff
changeset
|
919 return NULL; |
|
29065
bf1634b023d5
Patch #612627: Add encoding attribute to file objects, and determine
Martin v. Löwis <martin@v.loewis.de>
parents:
28949
diff
changeset
|
920 #ifdef MS_WINDOWS |
|
bf1634b023d5
Patch #612627: Add encoding attribute to file objects, and determine
Martin v. Löwis <martin@v.loewis.de>
parents:
28949
diff
changeset
|
921 if(isatty(_fileno(stdin))){ |
|
bf1634b023d5
Patch #612627: Add encoding attribute to file objects, and determine
Martin v. Löwis <martin@v.loewis.de>
parents:
28949
diff
changeset
|
922 sprintf(buf, "cp%d", GetConsoleCP()); |
|
bf1634b023d5
Patch #612627: Add encoding attribute to file objects, and determine
Martin v. Löwis <martin@v.loewis.de>
parents:
28949
diff
changeset
|
923 if (!PyFile_SetEncoding(sysin, buf)) |
|
bf1634b023d5
Patch #612627: Add encoding attribute to file objects, and determine
Martin v. Löwis <martin@v.loewis.de>
parents:
28949
diff
changeset
|
924 return NULL; |
|
bf1634b023d5
Patch #612627: Add encoding attribute to file objects, and determine
Martin v. Löwis <martin@v.loewis.de>
parents:
28949
diff
changeset
|
925 } |
|
bf1634b023d5
Patch #612627: Add encoding attribute to file objects, and determine
Martin v. Löwis <martin@v.loewis.de>
parents:
28949
diff
changeset
|
926 if(isatty(_fileno(stdout))) { |
|
bf1634b023d5
Patch #612627: Add encoding attribute to file objects, and determine
Martin v. Löwis <martin@v.loewis.de>
parents:
28949
diff
changeset
|
927 sprintf(buf, "cp%d", GetConsoleOutputCP()); |
|
bf1634b023d5
Patch #612627: Add encoding attribute to file objects, and determine
Martin v. Löwis <martin@v.loewis.de>
parents:
28949
diff
changeset
|
928 if (!PyFile_SetEncoding(sysout, buf)) |
|
bf1634b023d5
Patch #612627: Add encoding attribute to file objects, and determine
Martin v. Löwis <martin@v.loewis.de>
parents:
28949
diff
changeset
|
929 return NULL; |
|
bf1634b023d5
Patch #612627: Add encoding attribute to file objects, and determine
Martin v. Löwis <martin@v.loewis.de>
parents:
28949
diff
changeset
|
930 } |
|
bf1634b023d5
Patch #612627: Add encoding attribute to file objects, and determine
Martin v. Löwis <martin@v.loewis.de>
parents:
28949
diff
changeset
|
931 #endif |
|
bf1634b023d5
Patch #612627: Add encoding attribute to file objects, and determine
Martin v. Löwis <martin@v.loewis.de>
parents:
28949
diff
changeset
|
932 |
|
bf1634b023d5
Patch #612627: Add encoding attribute to file objects, and determine
Martin v. Löwis <martin@v.loewis.de>
parents:
28949
diff
changeset
|
933 #if defined(HAVE_LANGINFO_H) && defined(CODESET) |
|
bf1634b023d5
Patch #612627: Add encoding attribute to file objects, and determine
Martin v. Löwis <martin@v.loewis.de>
parents:
28949
diff
changeset
|
934 oldloc = setlocale(LC_CTYPE, 0); |
|
bf1634b023d5
Patch #612627: Add encoding attribute to file objects, and determine
Martin v. Löwis <martin@v.loewis.de>
parents:
28949
diff
changeset
|
935 setlocale(LC_CTYPE, ""); |
|
bf1634b023d5
Patch #612627: Add encoding attribute to file objects, and determine
Martin v. Löwis <martin@v.loewis.de>
parents:
28949
diff
changeset
|
936 codeset = nl_langinfo(CODESET); |
|
bf1634b023d5
Patch #612627: Add encoding attribute to file objects, and determine
Martin v. Löwis <martin@v.loewis.de>
parents:
28949
diff
changeset
|
937 setlocale(LC_CTYPE, oldloc); |
|
bf1634b023d5
Patch #612627: Add encoding attribute to file objects, and determine
Martin v. Löwis <martin@v.loewis.de>
parents:
28949
diff
changeset
|
938 if(codeset && isatty(fileno(stdin))){ |
|
bf1634b023d5
Patch #612627: Add encoding attribute to file objects, and determine
Martin v. Löwis <martin@v.loewis.de>
parents:
28949
diff
changeset
|
939 if (!PyFile_SetEncoding(sysin, codeset)) |
|
bf1634b023d5
Patch #612627: Add encoding attribute to file objects, and determine
Martin v. Löwis <martin@v.loewis.de>
parents:
28949
diff
changeset
|
940 return NULL; |
|
bf1634b023d5
Patch #612627: Add encoding attribute to file objects, and determine
Martin v. Löwis <martin@v.loewis.de>
parents:
28949
diff
changeset
|
941 } |
|
bf1634b023d5
Patch #612627: Add encoding attribute to file objects, and determine
Martin v. Löwis <martin@v.loewis.de>
parents:
28949
diff
changeset
|
942 if(codeset && isatty(fileno(stdout))) { |
|
bf1634b023d5
Patch #612627: Add encoding attribute to file objects, and determine
Martin v. Löwis <martin@v.loewis.de>
parents:
28949
diff
changeset
|
943 if (!PyFile_SetEncoding(sysout, codeset)) |
|
bf1634b023d5
Patch #612627: Add encoding attribute to file objects, and determine
Martin v. Löwis <martin@v.loewis.de>
parents:
28949
diff
changeset
|
944 return NULL; |
|
bf1634b023d5
Patch #612627: Add encoding attribute to file objects, and determine
Martin v. Löwis <martin@v.loewis.de>
parents:
28949
diff
changeset
|
945 } |
|
bf1634b023d5
Patch #612627: Add encoding attribute to file objects, and determine
Martin v. Löwis <martin@v.loewis.de>
parents:
28949
diff
changeset
|
946 #endif |
|
bf1634b023d5
Patch #612627: Add encoding attribute to file objects, and determine
Martin v. Löwis <martin@v.loewis.de>
parents:
28949
diff
changeset
|
947 |
| 5372 | 948 PyDict_SetItemString(sysdict, "stdin", sysin); |
| 949 PyDict_SetItemString(sysdict, "stdout", sysout); | |
| 950 PyDict_SetItemString(sysdict, "stderr", syserr); | |
|
7402
c7454ca7d3ac
Make backup copies of stdin, stdout, stderr as __stdin__, __stdout__,
Guido van Rossum <guido@python.org>
parents:
6550
diff
changeset
|
951 /* Make backup copies for cleanup */ |
|
c7454ca7d3ac
Make backup copies of stdin, stdout, stderr as __stdin__, __stdout__,
Guido van Rossum <guido@python.org>
parents:
6550
diff
changeset
|
952 PyDict_SetItemString(sysdict, "__stdin__", sysin); |
|
c7454ca7d3ac
Make backup copies of stdin, stdout, stderr as __stdin__, __stdout__,
Guido van Rossum <guido@python.org>
parents:
6550
diff
changeset
|
953 PyDict_SetItemString(sysdict, "__stdout__", sysout); |
|
c7454ca7d3ac
Make backup copies of stdin, stdout, stderr as __stdin__, __stdout__,
Guido van Rossum <guido@python.org>
parents:
6550
diff
changeset
|
954 PyDict_SetItemString(sysdict, "__stderr__", syserr); |
| 17164 | 955 PyDict_SetItemString(sysdict, "__displayhook__", |
| 956 PyDict_GetItemString(sysdict, "displayhook")); | |
| 957 PyDict_SetItemString(sysdict, "__excepthook__", | |
| 958 PyDict_GetItemString(sysdict, "excepthook")); | |
|
5926
8d2194e22e67
The last of the mass checkins for separate (sub)interpreters.
Guido van Rossum <guido@python.org>
parents:
5863
diff
changeset
|
959 Py_XDECREF(sysin); |
|
8d2194e22e67
The last of the mass checkins for separate (sub)interpreters.
Guido van Rossum <guido@python.org>
parents:
5863
diff
changeset
|
960 Py_XDECREF(sysout); |
|
8d2194e22e67
The last of the mass checkins for separate (sub)interpreters.
Guido van Rossum <guido@python.org>
parents:
5863
diff
changeset
|
961 Py_XDECREF(syserr); |
| 5372 | 962 PyDict_SetItemString(sysdict, "version", |
| 963 v = PyString_FromString(Py_GetVersion())); | |
|
9964
d44cb87e500d
_PySys_Init(): Nailed small memory leak. The stringobject created for
Barry Warsaw <barry@python.org>
parents:
9885
diff
changeset
|
964 Py_XDECREF(v); |
|
9746
9342c60eaac0
Add sys.hexversion, which is an integer encoding the version in hexadecimal.
Guido van Rossum <guido@python.org>
parents:
9328
diff
changeset
|
965 PyDict_SetItemString(sysdict, "hexversion", |
|
9342c60eaac0
Add sys.hexversion, which is an integer encoding the version in hexadecimal.
Guido van Rossum <guido@python.org>
parents:
9328
diff
changeset
|
966 v = PyInt_FromLong(PY_VERSION_HEX)); |
| 5372 | 967 Py_XDECREF(v); |
|
12396
f82b2577fa0c
Capitulate, changing version_info to a 5-tuple:
Fred Drake <fdrake@acm.org>
parents:
12394
diff
changeset
|
968 /* |
|
f82b2577fa0c
Capitulate, changing version_info to a 5-tuple:
Fred Drake <fdrake@acm.org>
parents:
12394
diff
changeset
|
969 * These release level checks are mutually exclusive and cover |
|
f82b2577fa0c
Capitulate, changing version_info to a 5-tuple:
Fred Drake <fdrake@acm.org>
parents:
12394
diff
changeset
|
970 * the field, so don't get too fancy with the pre-processor! |
|
f82b2577fa0c
Capitulate, changing version_info to a 5-tuple:
Fred Drake <fdrake@acm.org>
parents:
12394
diff
changeset
|
971 */ |
|
f82b2577fa0c
Capitulate, changing version_info to a 5-tuple:
Fred Drake <fdrake@acm.org>
parents:
12394
diff
changeset
|
972 #if PY_RELEASE_LEVEL == PY_RELEASE_LEVEL_ALPHA |
|
12398
2392d10e21f1
Simplify creation of the version_info value for clarity, per
Fred Drake <fdrake@acm.org>
parents:
12396
diff
changeset
|
973 s = "alpha"; |
|
14295
e5253b692e9f
_PySys_Init(): When setting up sys.version_info, use #if/#elif.../#endif
Fred Drake <fdrake@acm.org>
parents:
14017
diff
changeset
|
974 #elif PY_RELEASE_LEVEL == PY_RELEASE_LEVEL_BETA |
|
12398
2392d10e21f1
Simplify creation of the version_info value for clarity, per
Fred Drake <fdrake@acm.org>
parents:
12396
diff
changeset
|
975 s = "beta"; |
|
14295
e5253b692e9f
_PySys_Init(): When setting up sys.version_info, use #if/#elif.../#endif
Fred Drake <fdrake@acm.org>
parents:
14017
diff
changeset
|
976 #elif PY_RELEASE_LEVEL == PY_RELEASE_LEVEL_GAMMA |
|
12398
2392d10e21f1
Simplify creation of the version_info value for clarity, per
Fred Drake <fdrake@acm.org>
parents:
12396
diff
changeset
|
977 s = "candidate"; |
|
14295
e5253b692e9f
_PySys_Init(): When setting up sys.version_info, use #if/#elif.../#endif
Fred Drake <fdrake@acm.org>
parents:
14017
diff
changeset
|
978 #elif PY_RELEASE_LEVEL == PY_RELEASE_LEVEL_FINAL |
|
12398
2392d10e21f1
Simplify creation of the version_info value for clarity, per
Fred Drake <fdrake@acm.org>
parents:
12396
diff
changeset
|
979 s = "final"; |
|
12396
f82b2577fa0c
Capitulate, changing version_info to a 5-tuple:
Fred Drake <fdrake@acm.org>
parents:
12394
diff
changeset
|
980 #endif |
|
12394
60dd95c75999
Define version_info to be a tuple (major, minor, micro, level); level
Fred Drake <fdrake@acm.org>
parents:
12136
diff
changeset
|
981 PyDict_SetItemString(sysdict, "version_info", |
|
12398
2392d10e21f1
Simplify creation of the version_info value for clarity, per
Fred Drake <fdrake@acm.org>
parents:
12396
diff
changeset
|
982 v = Py_BuildValue("iiisi", PY_MAJOR_VERSION, |
|
12394
60dd95c75999
Define version_info to be a tuple (major, minor, micro, level); level
Fred Drake <fdrake@acm.org>
parents:
12136
diff
changeset
|
983 PY_MINOR_VERSION, |
|
12398
2392d10e21f1
Simplify creation of the version_info value for clarity, per
Fred Drake <fdrake@acm.org>
parents:
12396
diff
changeset
|
984 PY_MICRO_VERSION, s, |
|
12396
f82b2577fa0c
Capitulate, changing version_info to a 5-tuple:
Fred Drake <fdrake@acm.org>
parents:
12394
diff
changeset
|
985 PY_RELEASE_SERIAL)); |
|
12394
60dd95c75999
Define version_info to be a tuple (major, minor, micro, level); level
Fred Drake <fdrake@acm.org>
parents:
12136
diff
changeset
|
986 Py_XDECREF(v); |
|
25099
a69a12484d69
expose PYTHON_API_VERSION macro as sys.api_version. Closes patch # 601456.
Skip Montanaro <skip@pobox.com>
parents:
24126
diff
changeset
|
987 PyDict_SetItemString(sysdict, "api_version", |
|
a69a12484d69
expose PYTHON_API_VERSION macro as sys.api_version. Closes patch # 601456.
Skip Montanaro <skip@pobox.com>
parents:
24126
diff
changeset
|
988 v = PyInt_FromLong(PYTHON_API_VERSION)); |
|
a69a12484d69
expose PYTHON_API_VERSION macro as sys.api_version. Closes patch # 601456.
Skip Montanaro <skip@pobox.com>
parents:
24126
diff
changeset
|
989 Py_XDECREF(v); |
| 5372 | 990 PyDict_SetItemString(sysdict, "copyright", |
| 991 v = PyString_FromString(Py_GetCopyright())); | |
| 992 Py_XDECREF(v); | |
| 993 PyDict_SetItemString(sysdict, "platform", | |
| 994 v = PyString_FromString(Py_GetPlatform())); | |
| 995 Py_XDECREF(v); | |
|
5598
1f206c91daee
Set sys.executable to full path of python (from argv[0]).
Guido van Rossum <guido@python.org>
parents:
5550
diff
changeset
|
996 PyDict_SetItemString(sysdict, "executable", |
|
1f206c91daee
Set sys.executable to full path of python (from argv[0]).
Guido van Rossum <guido@python.org>
parents:
5550
diff
changeset
|
997 v = PyString_FromString(Py_GetProgramFullPath())); |
|
1f206c91daee
Set sys.executable to full path of python (from argv[0]).
Guido van Rossum <guido@python.org>
parents:
5550
diff
changeset
|
998 Py_XDECREF(v); |
| 5372 | 999 PyDict_SetItemString(sysdict, "prefix", |
| 1000 v = PyString_FromString(Py_GetPrefix())); | |
| 1001 Py_XDECREF(v); | |
| 1002 PyDict_SetItemString(sysdict, "exec_prefix", | |
| 1003 v = PyString_FromString(Py_GetExecPrefix())); | |
| 1004 Py_XDECREF(v); | |
| 1005 PyDict_SetItemString(sysdict, "maxint", | |
| 1006 v = PyInt_FromLong(PyInt_GetMax())); | |
| 1007 Py_XDECREF(v); | |
|
19343
7257e87e0720
Patch #445762: Support --disable-unicode
Martin v. Löwis <martin@v.loewis.de>
parents:
19301
diff
changeset
|
1008 #ifdef Py_USING_UNICODE |
|
18298
982163c4e9d2
Encode surrogates in UTF-8 even for a wide Py_UNICODE.
Martin v. Löwis <martin@v.loewis.de>
parents:
18136
diff
changeset
|
1009 PyDict_SetItemString(sysdict, "maxunicode", |
|
982163c4e9d2
Encode surrogates in UTF-8 even for a wide Py_UNICODE.
Martin v. Löwis <martin@v.loewis.de>
parents:
18136
diff
changeset
|
1010 v = PyInt_FromLong(PyUnicode_GetMax())); |
|
982163c4e9d2
Encode surrogates in UTF-8 even for a wide Py_UNICODE.
Martin v. Löwis <martin@v.loewis.de>
parents:
18136
diff
changeset
|
1011 Py_XDECREF(v); |
|
19343
7257e87e0720
Patch #445762: Support --disable-unicode
Martin v. Löwis <martin@v.loewis.de>
parents:
19301
diff
changeset
|
1012 #endif |
| 5372 | 1013 PyDict_SetItemString(sysdict, "builtin_module_names", |
|
2052
d7e91437f0a2
Lots of changes, most minor (fatal() instead of abort(), use of
Guido van Rossum <guido@python.org>
parents:
1848
diff
changeset
|
1014 v = list_builtin_module_names()); |
| 5372 | 1015 Py_XDECREF(v); |
|
13968
841cf9012ac3
Add a byte_order value to the sys module. The value is "big" for
Fred Drake <fdrake@acm.org>
parents:
13694
diff
changeset
|
1016 { |
|
841cf9012ac3
Add a byte_order value to the sys module. The value is "big" for
Fred Drake <fdrake@acm.org>
parents:
13694
diff
changeset
|
1017 /* Assumes that longs are at least 2 bytes long. |
|
841cf9012ac3
Add a byte_order value to the sys module. The value is "big" for
Fred Drake <fdrake@acm.org>
parents:
13694
diff
changeset
|
1018 Should be safe! */ |
|
841cf9012ac3
Add a byte_order value to the sys module. The value is "big" for
Fred Drake <fdrake@acm.org>
parents:
13694
diff
changeset
|
1019 unsigned long number = 1; |
|
13977
eb9a36163a9e
Guido pointed out that all names in the sys module have no underscore,
Fred Drake <fdrake@acm.org>
parents:
13971
diff
changeset
|
1020 char *value; |
|
13968
841cf9012ac3
Add a byte_order value to the sys module. The value is "big" for
Fred Drake <fdrake@acm.org>
parents:
13694
diff
changeset
|
1021 |
|
841cf9012ac3
Add a byte_order value to the sys module. The value is "big" for
Fred Drake <fdrake@acm.org>
parents:
13694
diff
changeset
|
1022 s = (char *) &number; |
|
841cf9012ac3
Add a byte_order value to the sys module. The value is "big" for
Fred Drake <fdrake@acm.org>
parents:
13694
diff
changeset
|
1023 if (s[0] == 0) |
|
13977
eb9a36163a9e
Guido pointed out that all names in the sys module have no underscore,
Fred Drake <fdrake@acm.org>
parents:
13971
diff
changeset
|
1024 value = "big"; |
|
13968
841cf9012ac3
Add a byte_order value to the sys module. The value is "big" for
Fred Drake <fdrake@acm.org>
parents:
13694
diff
changeset
|
1025 else |
|
13977
eb9a36163a9e
Guido pointed out that all names in the sys module have no underscore,
Fred Drake <fdrake@acm.org>
parents:
13971
diff
changeset
|
1026 value = "little"; |
|
eb9a36163a9e
Guido pointed out that all names in the sys module have no underscore,
Fred Drake <fdrake@acm.org>
parents:
13971
diff
changeset
|
1027 PyDict_SetItemString(sysdict, "byteorder", |
|
14017
128f641191c3
_PySys_Init(): Fix another Insure discovered memory leak; the PyString
Barry Warsaw <barry@python.org>
parents:
13977
diff
changeset
|
1028 v = PyString_FromString(value)); |
|
128f641191c3
_PySys_Init(): Fix another Insure discovered memory leak; the PyString
Barry Warsaw <barry@python.org>
parents:
13977
diff
changeset
|
1029 Py_XDECREF(v); |
|
13968
841cf9012ac3
Add a byte_order value to the sys module. The value is "big" for
Fred Drake <fdrake@acm.org>
parents:
13694
diff
changeset
|
1030 } |
|
4126
c80c515999b9
Use MS_DLL_ID as sys.winver
Guido van Rossum <guido@python.org>
parents:
3877
diff
changeset
|
1031 #ifdef MS_COREDLL |
| 5372 | 1032 PyDict_SetItemString(sysdict, "dllhandle", |
|
13096
8c8de5b736dc
Trent Mick's Win64 changes: size_t vs. int or long; also some overflow
Guido van Rossum <guido@python.org>
parents:
12965
diff
changeset
|
1033 v = PyLong_FromVoidPtr(PyWin_DLLhModule)); |
| 5372 | 1034 Py_XDECREF(v); |
| 1035 PyDict_SetItemString(sysdict, "winver", | |
|
6352
b62a7a59414e
Get DLL version from a variable.
Guido van Rossum <guido@python.org>
parents:
5955
diff
changeset
|
1036 v = PyString_FromString(PyWin_DLLVersionString)); |
| 5372 | 1037 Py_XDECREF(v); |
|
3490
1dfc519ea3cb
Under NT, define sys.dllhandle and sys.winver (Mark H.).
Guido van Rossum <guido@python.org>
parents:
3326
diff
changeset
|
1038 #endif |
|
15595
0f42f6669e80
Add definitions for PySys_ResetWarnOptions() and
Guido van Rossum <guido@python.org>
parents:
15487
diff
changeset
|
1039 if (warnoptions == NULL) { |
|
0f42f6669e80
Add definitions for PySys_ResetWarnOptions() and
Guido van Rossum <guido@python.org>
parents:
15487
diff
changeset
|
1040 warnoptions = PyList_New(0); |
|
0f42f6669e80
Add definitions for PySys_ResetWarnOptions() and
Guido van Rossum <guido@python.org>
parents:
15487
diff
changeset
|
1041 } |
|
0f42f6669e80
Add definitions for PySys_ResetWarnOptions() and
Guido van Rossum <guido@python.org>
parents:
15487
diff
changeset
|
1042 else { |
|
0f42f6669e80
Add definitions for PySys_ResetWarnOptions() and
Guido van Rossum <guido@python.org>
parents:
15487
diff
changeset
|
1043 Py_INCREF(warnoptions); |
|
0f42f6669e80
Add definitions for PySys_ResetWarnOptions() and
Guido van Rossum <guido@python.org>
parents:
15487
diff
changeset
|
1044 } |
|
0f42f6669e80
Add definitions for PySys_ResetWarnOptions() and
Guido van Rossum <guido@python.org>
parents:
15487
diff
changeset
|
1045 if (warnoptions != NULL) { |
|
15846
d41f9b0a40ca
Neil discovered a bad DECREF on warnoptions, that caused repeated
Guido van Rossum <guido@python.org>
parents:
15812
diff
changeset
|
1046 PyDict_SetItemString(sysdict, "warnoptions", warnoptions); |
|
15595
0f42f6669e80
Add definitions for PySys_ResetWarnOptions() and
Guido van Rossum <guido@python.org>
parents:
15487
diff
changeset
|
1047 } |
|
0f42f6669e80
Add definitions for PySys_ResetWarnOptions() and
Guido van Rossum <guido@python.org>
parents:
15487
diff
changeset
|
1048 |
| 5372 | 1049 if (PyErr_Occurred()) |
|
5926
8d2194e22e67
The last of the mass checkins for separate (sub)interpreters.
Guido van Rossum <guido@python.org>
parents:
5863
diff
changeset
|
1050 return NULL; |
|
8d2194e22e67
The last of the mass checkins for separate (sub)interpreters.
Guido van Rossum <guido@python.org>
parents:
5863
diff
changeset
|
1051 return m; |
| 86 | 1052 } |
| 1053 | |
| 5372 | 1054 static PyObject * |
|
13658
f79434ee41fa
Mass ANSIfication of function definitions. Doesn't cover all 'extern'
Thomas Wouters <thomas@python.org>
parents:
13447
diff
changeset
|
1055 makepathobject(char *path, int delim) |
| 86 | 1056 { |
| 1057 int i, n; | |
| 1058 char *p; | |
| 5372 | 1059 PyObject *v, *w; |
| 6 | 1060 |
| 86 | 1061 n = 1; |
| 1062 p = path; | |
| 1063 while ((p = strchr(p, delim)) != NULL) { | |
| 1064 n++; | |
| 1065 p++; | |
| 1066 } | |
| 5372 | 1067 v = PyList_New(n); |
| 86 | 1068 if (v == NULL) |
| 1069 return NULL; | |
| 1070 for (i = 0; ; i++) { | |
| 1071 p = strchr(path, delim); | |
| 1072 if (p == NULL) | |
| 1073 p = strchr(path, '\0'); /* End of string */ | |
| 5372 | 1074 w = PyString_FromStringAndSize(path, (int) (p - path)); |
| 86 | 1075 if (w == NULL) { |
| 5372 | 1076 Py_DECREF(v); |
| 86 | 1077 return NULL; |
| 1078 } | |
| 5372 | 1079 PyList_SetItem(v, i, w); |
| 86 | 1080 if (*p == '\0') |
| 1081 break; | |
| 1082 path = p+1; | |
| 1083 } | |
| 1084 return v; | |
| 1085 } | |
| 1086 | |
| 1087 void | |
|
13658
f79434ee41fa
Mass ANSIfication of function definitions. Doesn't cover all 'extern'
Thomas Wouters <thomas@python.org>
parents:
13447
diff
changeset
|
1088 PySys_SetPath(char *path) |
| 86 | 1089 { |
| 5372 | 1090 PyObject *v; |
| 86 | 1091 if ((v = makepathobject(path, DELIM)) == NULL) |
| 5372 | 1092 Py_FatalError("can't create sys.path"); |
| 1093 if (PySys_SetObject("path", v) != 0) | |
| 1094 Py_FatalError("can't assign sys.path"); | |
| 1095 Py_DECREF(v); | |
|
83
f6bcf3c1d714
Empty all modules' symbol tables, so most circular references are
Guido van Rossum <guido@python.org>
parents:
6
diff
changeset
|
1096 } |
|
f6bcf3c1d714
Empty all modules' symbol tables, so most circular references are
Guido van Rossum <guido@python.org>
parents:
6
diff
changeset
|
1097 |
| 5372 | 1098 static PyObject * |
|
13658
f79434ee41fa
Mass ANSIfication of function definitions. Doesn't cover all 'extern'
Thomas Wouters <thomas@python.org>
parents:
13447
diff
changeset
|
1099 makeargvobject(int argc, char **argv) |
|
83
f6bcf3c1d714
Empty all modules' symbol tables, so most circular references are
Guido van Rossum <guido@python.org>
parents:
6
diff
changeset
|
1100 { |
| 5372 | 1101 PyObject *av; |
|
596
e18f1fa398a3
Ensure that sys.argv[0] always exists (maybe as empty string).
Guido van Rossum <guido@python.org>
parents:
549
diff
changeset
|
1102 if (argc <= 0 || argv == NULL) { |
|
e18f1fa398a3
Ensure that sys.argv[0] always exists (maybe as empty string).
Guido van Rossum <guido@python.org>
parents:
549
diff
changeset
|
1103 /* Ensure at least one (empty) argument is seen */ |
|
e18f1fa398a3
Ensure that sys.argv[0] always exists (maybe as empty string).
Guido van Rossum <guido@python.org>
parents:
549
diff
changeset
|
1104 static char *empty_argv[1] = {""}; |
|
e18f1fa398a3
Ensure that sys.argv[0] always exists (maybe as empty string).
Guido van Rossum <guido@python.org>
parents:
549
diff
changeset
|
1105 argv = empty_argv; |
|
e18f1fa398a3
Ensure that sys.argv[0] always exists (maybe as empty string).
Guido van Rossum <guido@python.org>
parents:
549
diff
changeset
|
1106 argc = 1; |
|
e18f1fa398a3
Ensure that sys.argv[0] always exists (maybe as empty string).
Guido van Rossum <guido@python.org>
parents:
549
diff
changeset
|
1107 } |
| 5372 | 1108 av = PyList_New(argc); |
| 86 | 1109 if (av != NULL) { |
| 1110 int i; | |
| 1111 for (i = 0; i < argc; i++) { | |
|
28949
ac487a7f7f2c
Patch #708495: Port more stuff to OpenVMS.
Martin v. Löwis <martin@v.loewis.de>
parents:
28556
diff
changeset
|
1112 #ifdef __VMS |
|
ac487a7f7f2c
Patch #708495: Port more stuff to OpenVMS.
Martin v. Löwis <martin@v.loewis.de>
parents:
28556
diff
changeset
|
1113 PyObject *v; |
|
ac487a7f7f2c
Patch #708495: Port more stuff to OpenVMS.
Martin v. Löwis <martin@v.loewis.de>
parents:
28556
diff
changeset
|
1114 |
|
ac487a7f7f2c
Patch #708495: Port more stuff to OpenVMS.
Martin v. Löwis <martin@v.loewis.de>
parents:
28556
diff
changeset
|
1115 /* argv[0] is the script pathname if known */ |
|
ac487a7f7f2c
Patch #708495: Port more stuff to OpenVMS.
Martin v. Löwis <martin@v.loewis.de>
parents:
28556
diff
changeset
|
1116 if (i == 0) { |
|
ac487a7f7f2c
Patch #708495: Port more stuff to OpenVMS.
Martin v. Löwis <martin@v.loewis.de>
parents:
28556
diff
changeset
|
1117 char* fn = decc$translate_vms(argv[0]); |
|
ac487a7f7f2c
Patch #708495: Port more stuff to OpenVMS.
Martin v. Löwis <martin@v.loewis.de>
parents:
28556
diff
changeset
|
1118 if ((fn == (char *)0) || fn == (char *)-1) |
|
ac487a7f7f2c
Patch #708495: Port more stuff to OpenVMS.
Martin v. Löwis <martin@v.loewis.de>
parents:
28556
diff
changeset
|
1119 v = PyString_FromString(argv[0]); |
|
ac487a7f7f2c
Patch #708495: Port more stuff to OpenVMS.
Martin v. Löwis <martin@v.loewis.de>
parents:
28556
diff
changeset
|
1120 else |
|
ac487a7f7f2c
Patch #708495: Port more stuff to OpenVMS.
Martin v. Löwis <martin@v.loewis.de>
parents:
28556
diff
changeset
|
1121 v = PyString_FromString( |
|
ac487a7f7f2c
Patch #708495: Port more stuff to OpenVMS.
Martin v. Löwis <martin@v.loewis.de>
parents:
28556
diff
changeset
|
1122 decc$translate_vms(argv[0])); |
|
ac487a7f7f2c
Patch #708495: Port more stuff to OpenVMS.
Martin v. Löwis <martin@v.loewis.de>
parents:
28556
diff
changeset
|
1123 } else |
|
ac487a7f7f2c
Patch #708495: Port more stuff to OpenVMS.
Martin v. Löwis <martin@v.loewis.de>
parents:
28556
diff
changeset
|
1124 v = PyString_FromString(argv[i]); |
|
ac487a7f7f2c
Patch #708495: Port more stuff to OpenVMS.
Martin v. Löwis <martin@v.loewis.de>
parents:
28556
diff
changeset
|
1125 #else |
| 5372 | 1126 PyObject *v = PyString_FromString(argv[i]); |
|
28949
ac487a7f7f2c
Patch #708495: Port more stuff to OpenVMS.
Martin v. Löwis <martin@v.loewis.de>
parents:
28556
diff
changeset
|
1127 #endif |
| 86 | 1128 if (v == NULL) { |
| 5372 | 1129 Py_DECREF(av); |
| 86 | 1130 av = NULL; |
| 1131 break; | |
| 1132 } | |
| 5372 | 1133 PyList_SetItem(av, i, v); |
|
83
f6bcf3c1d714
Empty all modules' symbol tables, so most circular references are
Guido van Rossum <guido@python.org>
parents:
6
diff
changeset
|
1134 } |
|
f6bcf3c1d714
Empty all modules' symbol tables, so most circular references are
Guido van Rossum <guido@python.org>
parents:
6
diff
changeset
|
1135 } |
| 86 | 1136 return av; |
| 6 | 1137 } |
| 1138 | |
| 1139 void | |
|
13658
f79434ee41fa
Mass ANSIfication of function definitions. Doesn't cover all 'extern'
Thomas Wouters <thomas@python.org>
parents:
13447
diff
changeset
|
1140 PySys_SetArgv(int argc, char **argv) |
| 6 | 1141 { |
|
27977
0fe321e78ad3
- sys.path[0] (the directory from which the script is loaded) is now
Guido van Rossum <guido@python.org>
parents:
27712
diff
changeset
|
1142 #if defined(HAVE_REALPATH) |
|
0fe321e78ad3
- sys.path[0] (the directory from which the script is loaded) is now
Guido van Rossum <guido@python.org>
parents:
27712
diff
changeset
|
1143 char fullpath[MAXPATHLEN]; |
|
0fe321e78ad3
- sys.path[0] (the directory from which the script is loaded) is now
Guido van Rossum <guido@python.org>
parents:
27712
diff
changeset
|
1144 #elif defined(MS_WINDOWS) |
|
27156
585a6460f577
Patch #664376: sys.path[0] should contain absolute pathname.
Thomas Heller <theller@ctypes.org>
parents:
25666
diff
changeset
|
1145 char fullpath[MAX_PATH]; |
|
585a6460f577
Patch #664376: sys.path[0] should contain absolute pathname.
Thomas Heller <theller@ctypes.org>
parents:
25666
diff
changeset
|
1146 #endif |
| 5372 | 1147 PyObject *av = makeargvobject(argc, argv); |
| 1148 PyObject *path = PySys_GetObject("path"); | |
| 86 | 1149 if (av == NULL) |
| 5372 | 1150 Py_FatalError("no mem for sys.argv"); |
| 1151 if (PySys_SetObject("argv", av) != 0) | |
| 1152 Py_FatalError("can't assign sys.argv"); | |
|
3877
408e374934e5
Always insert script directory in front of sys.path -- if there's no
Guido van Rossum <guido@python.org>
parents:
3806
diff
changeset
|
1153 if (path != NULL) { |
|
5340
db673e98f28d
Expand one level of symbolic link in sys.argv[0] before inserting its
Guido van Rossum <guido@python.org>
parents:
5047
diff
changeset
|
1154 char *argv0 = argv[0]; |
|
3877
408e374934e5
Always insert script directory in front of sys.path -- if there's no
Guido van Rossum <guido@python.org>
parents:
3806
diff
changeset
|
1155 char *p = NULL; |
|
4256
e225e70fd657
Changes to setpythonpath():
Guido van Rossum <guido@python.org>
parents:
4126
diff
changeset
|
1156 int n = 0; |
| 5372 | 1157 PyObject *a; |
|
5340
db673e98f28d
Expand one level of symbolic link in sys.argv[0] before inserting its
Guido van Rossum <guido@python.org>
parents:
5047
diff
changeset
|
1158 #ifdef HAVE_READLINK |
|
db673e98f28d
Expand one level of symbolic link in sys.argv[0] before inserting its
Guido van Rossum <guido@python.org>
parents:
5047
diff
changeset
|
1159 char link[MAXPATHLEN+1]; |
|
db673e98f28d
Expand one level of symbolic link in sys.argv[0] before inserting its
Guido van Rossum <guido@python.org>
parents:
5047
diff
changeset
|
1160 char argv0copy[2*MAXPATHLEN+1]; |
|
db673e98f28d
Expand one level of symbolic link in sys.argv[0] before inserting its
Guido van Rossum <guido@python.org>
parents:
5047
diff
changeset
|
1161 int nr = 0; |
|
db673e98f28d
Expand one level of symbolic link in sys.argv[0] before inserting its
Guido van Rossum <guido@python.org>
parents:
5047
diff
changeset
|
1162 if (argc > 0 && argv0 != NULL) |
|
db673e98f28d
Expand one level of symbolic link in sys.argv[0] before inserting its
Guido van Rossum <guido@python.org>
parents:
5047
diff
changeset
|
1163 nr = readlink(argv0, link, MAXPATHLEN); |
|
db673e98f28d
Expand one level of symbolic link in sys.argv[0] before inserting its
Guido van Rossum <guido@python.org>
parents:
5047
diff
changeset
|
1164 if (nr > 0) { |
|
db673e98f28d
Expand one level of symbolic link in sys.argv[0] before inserting its
Guido van Rossum <guido@python.org>
parents:
5047
diff
changeset
|
1165 /* It's a symlink */ |
|
db673e98f28d
Expand one level of symbolic link in sys.argv[0] before inserting its
Guido van Rossum <guido@python.org>
parents:
5047
diff
changeset
|
1166 link[nr] = '\0'; |
|
db673e98f28d
Expand one level of symbolic link in sys.argv[0] before inserting its
Guido van Rossum <guido@python.org>
parents:
5047
diff
changeset
|
1167 if (link[0] == SEP) |
|
db673e98f28d
Expand one level of symbolic link in sys.argv[0] before inserting its
Guido van Rossum <guido@python.org>
parents:
5047
diff
changeset
|
1168 argv0 = link; /* Link to absolute path */ |
|
db673e98f28d
Expand one level of symbolic link in sys.argv[0] before inserting its
Guido van Rossum <guido@python.org>
parents:
5047
diff
changeset
|
1169 else if (strchr(link, SEP) == NULL) |
|
db673e98f28d
Expand one level of symbolic link in sys.argv[0] before inserting its
Guido van Rossum <guido@python.org>
parents:
5047
diff
changeset
|
1170 ; /* Link without path */ |
|
db673e98f28d
Expand one level of symbolic link in sys.argv[0] before inserting its
Guido van Rossum <guido@python.org>
parents:
5047
diff
changeset
|
1171 else { |
|
db673e98f28d
Expand one level of symbolic link in sys.argv[0] before inserting its
Guido van Rossum <guido@python.org>
parents:
5047
diff
changeset
|
1172 /* Must join(dirname(argv0), link) */ |
|
db673e98f28d
Expand one level of symbolic link in sys.argv[0] before inserting its
Guido van Rossum <guido@python.org>
parents:
5047
diff
changeset
|
1173 char *q = strrchr(argv0, SEP); |
|
db673e98f28d
Expand one level of symbolic link in sys.argv[0] before inserting its
Guido van Rossum <guido@python.org>
parents:
5047
diff
changeset
|
1174 if (q == NULL) |
|
db673e98f28d
Expand one level of symbolic link in sys.argv[0] before inserting its
Guido van Rossum <guido@python.org>
parents:
5047
diff
changeset
|
1175 argv0 = link; /* argv0 without path */ |
|
db673e98f28d
Expand one level of symbolic link in sys.argv[0] before inserting its
Guido van Rossum <guido@python.org>
parents:
5047
diff
changeset
|
1176 else { |
|
db673e98f28d
Expand one level of symbolic link in sys.argv[0] before inserting its
Guido van Rossum <guido@python.org>
parents:
5047
diff
changeset
|
1177 /* Must make a copy */ |
|
db673e98f28d
Expand one level of symbolic link in sys.argv[0] before inserting its
Guido van Rossum <guido@python.org>
parents:
5047
diff
changeset
|
1178 strcpy(argv0copy, argv0); |
|
db673e98f28d
Expand one level of symbolic link in sys.argv[0] before inserting its
Guido van Rossum <guido@python.org>
parents:
5047
diff
changeset
|
1179 q = strrchr(argv0copy, SEP); |
|
db673e98f28d
Expand one level of symbolic link in sys.argv[0] before inserting its
Guido van Rossum <guido@python.org>
parents:
5047
diff
changeset
|
1180 strcpy(q+1, link); |
|
db673e98f28d
Expand one level of symbolic link in sys.argv[0] before inserting its
Guido van Rossum <guido@python.org>
parents:
5047
diff
changeset
|
1181 argv0 = argv0copy; |
|
db673e98f28d
Expand one level of symbolic link in sys.argv[0] before inserting its
Guido van Rossum <guido@python.org>
parents:
5047
diff
changeset
|
1182 } |
|
db673e98f28d
Expand one level of symbolic link in sys.argv[0] before inserting its
Guido van Rossum <guido@python.org>
parents:
5047
diff
changeset
|
1183 } |
|
db673e98f28d
Expand one level of symbolic link in sys.argv[0] before inserting its
Guido van Rossum <guido@python.org>
parents:
5047
diff
changeset
|
1184 } |
|
db673e98f28d
Expand one level of symbolic link in sys.argv[0] before inserting its
Guido van Rossum <guido@python.org>
parents:
5047
diff
changeset
|
1185 #endif /* HAVE_READLINK */ |
|
4256
e225e70fd657
Changes to setpythonpath():
Guido van Rossum <guido@python.org>
parents:
4126
diff
changeset
|
1186 #if SEP == '\\' /* Special case for MS filename syntax */ |
|
5340
db673e98f28d
Expand one level of symbolic link in sys.argv[0] before inserting its
Guido van Rossum <guido@python.org>
parents:
5047
diff
changeset
|
1187 if (argc > 0 && argv0 != NULL) { |
|
4256
e225e70fd657
Changes to setpythonpath():
Guido van Rossum <guido@python.org>
parents:
4126
diff
changeset
|
1188 char *q; |
|
27156
585a6460f577
Patch #664376: sys.path[0] should contain absolute pathname.
Thomas Heller <theller@ctypes.org>
parents:
25666
diff
changeset
|
1189 #ifdef MS_WINDOWS |
|
585a6460f577
Patch #664376: sys.path[0] should contain absolute pathname.
Thomas Heller <theller@ctypes.org>
parents:
25666
diff
changeset
|
1190 char *ptemp; |
|
585a6460f577
Patch #664376: sys.path[0] should contain absolute pathname.
Thomas Heller <theller@ctypes.org>
parents:
25666
diff
changeset
|
1191 if (GetFullPathName(argv0, |
|
585a6460f577
Patch #664376: sys.path[0] should contain absolute pathname.
Thomas Heller <theller@ctypes.org>
parents:
25666
diff
changeset
|
1192 sizeof(fullpath), |
|
585a6460f577
Patch #664376: sys.path[0] should contain absolute pathname.
Thomas Heller <theller@ctypes.org>
parents:
25666
diff
changeset
|
1193 fullpath, |
|
585a6460f577
Patch #664376: sys.path[0] should contain absolute pathname.
Thomas Heller <theller@ctypes.org>
parents:
25666
diff
changeset
|
1194 &ptemp)) { |
|
585a6460f577
Patch #664376: sys.path[0] should contain absolute pathname.
Thomas Heller <theller@ctypes.org>
parents:
25666
diff
changeset
|
1195 argv0 = fullpath; |
|
585a6460f577
Patch #664376: sys.path[0] should contain absolute pathname.
Thomas Heller <theller@ctypes.org>
parents:
25666
diff
changeset
|
1196 } |
|
585a6460f577
Patch #664376: sys.path[0] should contain absolute pathname.
Thomas Heller <theller@ctypes.org>
parents:
25666
diff
changeset
|
1197 #endif |
|
5340
db673e98f28d
Expand one level of symbolic link in sys.argv[0] before inserting its
Guido van Rossum <guido@python.org>
parents:
5047
diff
changeset
|
1198 p = strrchr(argv0, SEP); |
|
4256
e225e70fd657
Changes to setpythonpath():
Guido van Rossum <guido@python.org>
parents:
4126
diff
changeset
|
1199 /* Test for alternate separator */ |
|
5340
db673e98f28d
Expand one level of symbolic link in sys.argv[0] before inserting its
Guido van Rossum <guido@python.org>
parents:
5047
diff
changeset
|
1200 q = strrchr(p ? p : argv0, '/'); |
|
4256
e225e70fd657
Changes to setpythonpath():
Guido van Rossum <guido@python.org>
parents:
4126
diff
changeset
|
1201 if (q != NULL) |
|
e225e70fd657
Changes to setpythonpath():
Guido van Rossum <guido@python.org>
parents:
4126
diff
changeset
|
1202 p = q; |
|
e225e70fd657
Changes to setpythonpath():
Guido van Rossum <guido@python.org>
parents:
4126
diff
changeset
|
1203 if (p != NULL) { |
|
5340
db673e98f28d
Expand one level of symbolic link in sys.argv[0] before inserting its
Guido van Rossum <guido@python.org>
parents:
5047
diff
changeset
|
1204 n = p + 1 - argv0; |
|
4256
e225e70fd657
Changes to setpythonpath():
Guido van Rossum <guido@python.org>
parents:
4126
diff
changeset
|
1205 if (n > 1 && p[-1] != ':') |
|
e225e70fd657
Changes to setpythonpath():
Guido van Rossum <guido@python.org>
parents:
4126
diff
changeset
|
1206 n--; /* Drop trailing separator */ |
|
e225e70fd657
Changes to setpythonpath():
Guido van Rossum <guido@python.org>
parents:
4126
diff
changeset
|
1207 } |
|
e225e70fd657
Changes to setpythonpath():
Guido van Rossum <guido@python.org>
parents:
4126
diff
changeset
|
1208 } |
|
e225e70fd657
Changes to setpythonpath():
Guido van Rossum <guido@python.org>
parents:
4126
diff
changeset
|
1209 #else /* All other filename syntaxes */ |
|
27977
0fe321e78ad3
- sys.path[0] (the directory from which the script is loaded) is now
Guido van Rossum <guido@python.org>
parents:
27712
diff
changeset
|
1210 if (argc > 0 && argv0 != NULL) { |
|
0fe321e78ad3
- sys.path[0] (the directory from which the script is loaded) is now
Guido van Rossum <guido@python.org>
parents:
27712
diff
changeset
|
1211 #if defined(HAVE_REALPATH) |
|
0fe321e78ad3
- sys.path[0] (the directory from which the script is loaded) is now
Guido van Rossum <guido@python.org>
parents:
27712
diff
changeset
|
1212 if (realpath(argv0, fullpath)) { |
|
0fe321e78ad3
- sys.path[0] (the directory from which the script is loaded) is now
Guido van Rossum <guido@python.org>
parents:
27712
diff
changeset
|
1213 argv0 = fullpath; |
|
0fe321e78ad3
- sys.path[0] (the directory from which the script is loaded) is now
Guido van Rossum <guido@python.org>
parents:
27712
diff
changeset
|
1214 } |
|
0fe321e78ad3
- sys.path[0] (the directory from which the script is loaded) is now
Guido van Rossum <guido@python.org>
parents:
27712
diff
changeset
|
1215 #endif |
|
5340
db673e98f28d
Expand one level of symbolic link in sys.argv[0] before inserting its
Guido van Rossum <guido@python.org>
parents:
5047
diff
changeset
|
1216 p = strrchr(argv0, SEP); |
|
27977
0fe321e78ad3
- sys.path[0] (the directory from which the script is loaded) is now
Guido van Rossum <guido@python.org>
parents:
27712
diff
changeset
|
1217 } |
|
4256
e225e70fd657
Changes to setpythonpath():
Guido van Rossum <guido@python.org>
parents:
4126
diff
changeset
|
1218 if (p != NULL) { |
|
17396
beb9d2b02846
Updated version of RISCOS support. SF patch 411213 by Dietmar Schwertberger
Guido van Rossum <guido@python.org>
parents:
17164
diff
changeset
|
1219 #ifndef RISCOS |
|
5340
db673e98f28d
Expand one level of symbolic link in sys.argv[0] before inserting its
Guido van Rossum <guido@python.org>
parents:
5047
diff
changeset
|
1220 n = p + 1 - argv0; |
|
17396
beb9d2b02846
Updated version of RISCOS support. SF patch 411213 by Dietmar Schwertberger
Guido van Rossum <guido@python.org>
parents:
17164
diff
changeset
|
1221 #else /* don't include trailing separator */ |
|
beb9d2b02846
Updated version of RISCOS support. SF patch 411213 by Dietmar Schwertberger
Guido van Rossum <guido@python.org>
parents:
17164
diff
changeset
|
1222 n = p - argv0; |
|
beb9d2b02846
Updated version of RISCOS support. SF patch 411213 by Dietmar Schwertberger
Guido van Rossum <guido@python.org>
parents:
17164
diff
changeset
|
1223 #endif /* RISCOS */ |
|
4256
e225e70fd657
Changes to setpythonpath():
Guido van Rossum <guido@python.org>
parents:
4126
diff
changeset
|
1224 #if SEP == '/' /* Special case for Unix filename syntax */ |
|
e225e70fd657
Changes to setpythonpath():
Guido van Rossum <guido@python.org>
parents:
4126
diff
changeset
|
1225 if (n > 1) |
|
e225e70fd657
Changes to setpythonpath():
Guido van Rossum <guido@python.org>
parents:
4126
diff
changeset
|
1226 n--; /* Drop trailing separator */ |
|
e225e70fd657
Changes to setpythonpath():
Guido van Rossum <guido@python.org>
parents:
4126
diff
changeset
|
1227 #endif /* Unix */ |
|
e225e70fd657
Changes to setpythonpath():
Guido van Rossum <guido@python.org>
parents:
4126
diff
changeset
|
1228 } |
|
e225e70fd657
Changes to setpythonpath():
Guido van Rossum <guido@python.org>
parents:
4126
diff
changeset
|
1229 #endif /* All others */ |
| 5372 | 1230 a = PyString_FromStringAndSize(argv0, n); |
|
3877
408e374934e5
Always insert script directory in front of sys.path -- if there's no
Guido van Rossum <guido@python.org>
parents:
3806
diff
changeset
|
1231 if (a == NULL) |
| 5372 | 1232 Py_FatalError("no mem for sys.path insertion"); |
| 1233 if (PyList_Insert(path, 0, a) < 0) | |
| 1234 Py_FatalError("sys.path.insert(0) failed"); | |
| 1235 Py_DECREF(a); | |
|
3806
93868c7a15c9
As a side effect of calling PySys_SetArgv (setpythonargv), the
Guido van Rossum <guido@python.org>
parents:
3738
diff
changeset
|
1236 } |
| 5372 | 1237 Py_DECREF(av); |
| 6 | 1238 } |
|
8314
f94d5ae642a9
New APIs to write to sys.stdout or sys.stderr using a printf-like interface.
Guido van Rossum <guido@python.org>
parents:
7402
diff
changeset
|
1239 |
|
f94d5ae642a9
New APIs to write to sys.stdout or sys.stderr using a printf-like interface.
Guido van Rossum <guido@python.org>
parents:
7402
diff
changeset
|
1240 |
|
f94d5ae642a9
New APIs to write to sys.stdout or sys.stderr using a printf-like interface.
Guido van Rossum <guido@python.org>
parents:
7402
diff
changeset
|
1241 /* APIs to write to sys.stdout or sys.stderr using a printf-like interface. |
|
f94d5ae642a9
New APIs to write to sys.stdout or sys.stderr using a printf-like interface.
Guido van Rossum <guido@python.org>
parents:
7402
diff
changeset
|
1242 Adapted from code submitted by Just van Rossum. |
|
f94d5ae642a9
New APIs to write to sys.stdout or sys.stderr using a printf-like interface.
Guido van Rossum <guido@python.org>
parents:
7402
diff
changeset
|
1243 |
|
f94d5ae642a9
New APIs to write to sys.stdout or sys.stderr using a printf-like interface.
Guido van Rossum <guido@python.org>
parents:
7402
diff
changeset
|
1244 PySys_WriteStdout(format, ...) |
|
f94d5ae642a9
New APIs to write to sys.stdout or sys.stderr using a printf-like interface.
Guido van Rossum <guido@python.org>
parents:
7402
diff
changeset
|
1245 PySys_WriteStderr(format, ...) |
|
f94d5ae642a9
New APIs to write to sys.stdout or sys.stderr using a printf-like interface.
Guido van Rossum <guido@python.org>
parents:
7402
diff
changeset
|
1246 |
|
f94d5ae642a9
New APIs to write to sys.stdout or sys.stderr using a printf-like interface.
Guido van Rossum <guido@python.org>
parents:
7402
diff
changeset
|
1247 The first function writes to sys.stdout; the second to sys.stderr. When |
|
f94d5ae642a9
New APIs to write to sys.stdout or sys.stderr using a printf-like interface.
Guido van Rossum <guido@python.org>
parents:
7402
diff
changeset
|
1248 there is a problem, they write to the real (C level) stdout or stderr; |
|
9328
81574e4646b4
Patches for mywrite() by Marc Lemburg: save/restore the error state
Guido van Rossum <guido@python.org>
parents:
8840
diff
changeset
|
1249 no exceptions are raised. |
|
8314
f94d5ae642a9
New APIs to write to sys.stdout or sys.stderr using a printf-like interface.
Guido van Rossum <guido@python.org>
parents:
7402
diff
changeset
|
1250 |
|
f94d5ae642a9
New APIs to write to sys.stdout or sys.stderr using a printf-like interface.
Guido van Rossum <guido@python.org>
parents:
7402
diff
changeset
|
1251 Both take a printf-style format string as their first argument followed |
|
f94d5ae642a9
New APIs to write to sys.stdout or sys.stderr using a printf-like interface.
Guido van Rossum <guido@python.org>
parents:
7402
diff
changeset
|
1252 by a variable length argument list determined by the format string. |
|
f94d5ae642a9
New APIs to write to sys.stdout or sys.stderr using a printf-like interface.
Guido van Rossum <guido@python.org>
parents:
7402
diff
changeset
|
1253 |
|
f94d5ae642a9
New APIs to write to sys.stdout or sys.stderr using a printf-like interface.
Guido van Rossum <guido@python.org>
parents:
7402
diff
changeset
|
1254 *** WARNING *** |
|
f94d5ae642a9
New APIs to write to sys.stdout or sys.stderr using a printf-like interface.
Guido van Rossum <guido@python.org>
parents:
7402
diff
changeset
|
1255 |
|
f94d5ae642a9
New APIs to write to sys.stdout or sys.stderr using a printf-like interface.
Guido van Rossum <guido@python.org>
parents:
7402
diff
changeset
|
1256 The format should limit the total size of the formatted output string to |
|
f94d5ae642a9
New APIs to write to sys.stdout or sys.stderr using a printf-like interface.
Guido van Rossum <guido@python.org>
parents:
7402
diff
changeset
|
1257 1000 bytes. In particular, this means that no unrestricted "%s" formats |
|
f94d5ae642a9
New APIs to write to sys.stdout or sys.stderr using a printf-like interface.
Guido van Rossum <guido@python.org>
parents:
7402
diff
changeset
|
1258 should occur; these should be limited using "%.<N>s where <N> is a |
|
f94d5ae642a9
New APIs to write to sys.stdout or sys.stderr using a printf-like interface.
Guido van Rossum <guido@python.org>
parents:
7402
diff
changeset
|
1259 decimal number calculated so that <N> plus the maximum size of other |
|
f94d5ae642a9
New APIs to write to sys.stdout or sys.stderr using a printf-like interface.
Guido van Rossum <guido@python.org>
parents:
7402
diff
changeset
|
1260 formatted text does not exceed 1000 bytes. Also watch out for "%f", |
|
f94d5ae642a9
New APIs to write to sys.stdout or sys.stderr using a printf-like interface.
Guido van Rossum <guido@python.org>
parents:
7402
diff
changeset
|
1261 which can print hundreds of digits for very large numbers. |
|
f94d5ae642a9
New APIs to write to sys.stdout or sys.stderr using a printf-like interface.
Guido van Rossum <guido@python.org>
parents:
7402
diff
changeset
|
1262 |
|
f94d5ae642a9
New APIs to write to sys.stdout or sys.stderr using a printf-like interface.
Guido van Rossum <guido@python.org>
parents:
7402
diff
changeset
|
1263 */ |
|
f94d5ae642a9
New APIs to write to sys.stdout or sys.stderr using a printf-like interface.
Guido van Rossum <guido@python.org>
parents:
7402
diff
changeset
|
1264 |
|
f94d5ae642a9
New APIs to write to sys.stdout or sys.stderr using a printf-like interface.
Guido van Rossum <guido@python.org>
parents:
7402
diff
changeset
|
1265 static void |
|
13658
f79434ee41fa
Mass ANSIfication of function definitions. Doesn't cover all 'extern'
Thomas Wouters <thomas@python.org>
parents:
13447
diff
changeset
|
1266 mywrite(char *name, FILE *fp, const char *format, va_list va) |
|
8314
f94d5ae642a9
New APIs to write to sys.stdout or sys.stderr using a printf-like interface.
Guido van Rossum <guido@python.org>
parents:
7402
diff
changeset
|
1267 { |
|
f94d5ae642a9
New APIs to write to sys.stdout or sys.stderr using a printf-like interface.
Guido van Rossum <guido@python.org>
parents:
7402
diff
changeset
|
1268 PyObject *file; |
|
9328
81574e4646b4
Patches for mywrite() by Marc Lemburg: save/restore the error state
Guido van Rossum <guido@python.org>
parents:
8840
diff
changeset
|
1269 PyObject *error_type, *error_value, *error_traceback; |
|
8314
f94d5ae642a9
New APIs to write to sys.stdout or sys.stderr using a printf-like interface.
Guido van Rossum <guido@python.org>
parents:
7402
diff
changeset
|
1270 |
|
9328
81574e4646b4
Patches for mywrite() by Marc Lemburg: save/restore the error state
Guido van Rossum <guido@python.org>
parents:
8840
diff
changeset
|
1271 PyErr_Fetch(&error_type, &error_value, &error_traceback); |
|
8314
f94d5ae642a9
New APIs to write to sys.stdout or sys.stderr using a printf-like interface.
Guido van Rossum <guido@python.org>
parents:
7402
diff
changeset
|
1272 file = PySys_GetObject(name); |
|
f94d5ae642a9
New APIs to write to sys.stdout or sys.stderr using a printf-like interface.
Guido van Rossum <guido@python.org>
parents:
7402
diff
changeset
|
1273 if (file == NULL || PyFile_AsFile(file) == fp) |
|
f94d5ae642a9
New APIs to write to sys.stdout or sys.stderr using a printf-like interface.
Guido van Rossum <guido@python.org>
parents:
7402
diff
changeset
|
1274 vfprintf(fp, format, va); |
|
f94d5ae642a9
New APIs to write to sys.stdout or sys.stderr using a printf-like interface.
Guido van Rossum <guido@python.org>
parents:
7402
diff
changeset
|
1275 else { |
|
f94d5ae642a9
New APIs to write to sys.stdout or sys.stderr using a printf-like interface.
Guido van Rossum <guido@python.org>
parents:
7402
diff
changeset
|
1276 char buffer[1001]; |
|
21127
dd28a4ecb37f
mywrite(): The test for trouble in PyOS_vsnprintf was wrong on both
Tim Peters <tim.peters@gmail.com>
parents:
21091
diff
changeset
|
1277 const int written = PyOS_vsnprintf(buffer, sizeof(buffer), |
|
dd28a4ecb37f
mywrite(): The test for trouble in PyOS_vsnprintf was wrong on both
Tim Peters <tim.peters@gmail.com>
parents:
21091
diff
changeset
|
1278 format, va); |
|
8314
f94d5ae642a9
New APIs to write to sys.stdout or sys.stderr using a printf-like interface.
Guido van Rossum <guido@python.org>
parents:
7402
diff
changeset
|
1279 if (PyFile_WriteString(buffer, file) != 0) { |
|
f94d5ae642a9
New APIs to write to sys.stdout or sys.stderr using a printf-like interface.
Guido van Rossum <guido@python.org>
parents:
7402
diff
changeset
|
1280 PyErr_Clear(); |
|
f94d5ae642a9
New APIs to write to sys.stdout or sys.stderr using a printf-like interface.
Guido van Rossum <guido@python.org>
parents:
7402
diff
changeset
|
1281 fputs(buffer, fp); |
|
f94d5ae642a9
New APIs to write to sys.stdout or sys.stderr using a printf-like interface.
Guido van Rossum <guido@python.org>
parents:
7402
diff
changeset
|
1282 } |
|
21145
87fa6e9bd77e
mysnprintf.c: Massive rewrite of PyOS_snprintf and PyOS_vsnprintf, to
Tim Peters <tim.peters@gmail.com>
parents:
21127
diff
changeset
|
1283 if (written < 0 || written >= sizeof(buffer)) { |
|
21091
47f6533674fd
Use PyOS_vsnprintf() and check its return value.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
20943
diff
changeset
|
1284 const char *truncated = "... truncated"; |
|
47f6533674fd
Use PyOS_vsnprintf() and check its return value.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
20943
diff
changeset
|
1285 if (PyFile_WriteString(truncated, file) != 0) { |
|
47f6533674fd
Use PyOS_vsnprintf() and check its return value.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
20943
diff
changeset
|
1286 PyErr_Clear(); |
|
47f6533674fd
Use PyOS_vsnprintf() and check its return value.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
20943
diff
changeset
|
1287 fputs(truncated, fp); |
|
47f6533674fd
Use PyOS_vsnprintf() and check its return value.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
20943
diff
changeset
|
1288 } |
|
47f6533674fd
Use PyOS_vsnprintf() and check its return value.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
20943
diff
changeset
|
1289 } |
|
8314
f94d5ae642a9
New APIs to write to sys.stdout or sys.stderr using a printf-like interface.
Guido van Rossum <guido@python.org>
parents:
7402
diff
changeset
|
1290 } |
|
9328
81574e4646b4
Patches for mywrite() by Marc Lemburg: save/restore the error state
Guido van Rossum <guido@python.org>
parents:
8840
diff
changeset
|
1291 PyErr_Restore(error_type, error_value, error_traceback); |
|
8314
f94d5ae642a9
New APIs to write to sys.stdout or sys.stderr using a printf-like interface.
Guido van Rossum <guido@python.org>
parents:
7402
diff
changeset
|
1292 } |
|
f94d5ae642a9
New APIs to write to sys.stdout or sys.stderr using a printf-like interface.
Guido van Rossum <guido@python.org>
parents:
7402
diff
changeset
|
1293 |
|
f94d5ae642a9
New APIs to write to sys.stdout or sys.stderr using a printf-like interface.
Guido van Rossum <guido@python.org>
parents:
7402
diff
changeset
|
1294 void |
|
f94d5ae642a9
New APIs to write to sys.stdout or sys.stderr using a printf-like interface.
Guido van Rossum <guido@python.org>
parents:
7402
diff
changeset
|
1295 PySys_WriteStdout(const char *format, ...) |
|
f94d5ae642a9
New APIs to write to sys.stdout or sys.stderr using a printf-like interface.
Guido van Rossum <guido@python.org>
parents:
7402
diff
changeset
|
1296 { |
|
f94d5ae642a9
New APIs to write to sys.stdout or sys.stderr using a printf-like interface.
Guido van Rossum <guido@python.org>
parents:
7402
diff
changeset
|
1297 va_list va; |
|
f94d5ae642a9
New APIs to write to sys.stdout or sys.stderr using a printf-like interface.
Guido van Rossum <guido@python.org>
parents:
7402
diff
changeset
|
1298 |
|
f94d5ae642a9
New APIs to write to sys.stdout or sys.stderr using a printf-like interface.
Guido van Rossum <guido@python.org>
parents:
7402
diff
changeset
|
1299 va_start(va, format); |
|
f94d5ae642a9
New APIs to write to sys.stdout or sys.stderr using a printf-like interface.
Guido van Rossum <guido@python.org>
parents:
7402
diff
changeset
|
1300 mywrite("stdout", stdout, format, va); |
|
f94d5ae642a9
New APIs to write to sys.stdout or sys.stderr using a printf-like interface.
Guido van Rossum <guido@python.org>
parents:
7402
diff
changeset
|
1301 va_end(va); |
|
f94d5ae642a9
New APIs to write to sys.stdout or sys.stderr using a printf-like interface.
Guido van Rossum <guido@python.org>
parents:
7402
diff
changeset
|
1302 } |
|
f94d5ae642a9
New APIs to write to sys.stdout or sys.stderr using a printf-like interface.
Guido van Rossum <guido@python.org>
parents:
7402
diff
changeset
|
1303 |
|
f94d5ae642a9
New APIs to write to sys.stdout or sys.stderr using a printf-like interface.
Guido van Rossum <guido@python.org>
parents:
7402
diff
changeset
|
1304 void |
|
f94d5ae642a9
New APIs to write to sys.stdout or sys.stderr using a printf-like interface.
Guido van Rossum <guido@python.org>
parents:
7402
diff
changeset
|
1305 PySys_WriteStderr(const char *format, ...) |
|
f94d5ae642a9
New APIs to write to sys.stdout or sys.stderr using a printf-like interface.
Guido van Rossum <guido@python.org>
parents:
7402
diff
changeset
|
1306 { |
|
f94d5ae642a9
New APIs to write to sys.stdout or sys.stderr using a printf-like interface.
Guido van Rossum <guido@python.org>
parents:
7402
diff
changeset
|
1307 va_list va; |
|
f94d5ae642a9
New APIs to write to sys.stdout or sys.stderr using a printf-like interface.
Guido van Rossum <guido@python.org>
parents:
7402
diff
changeset
|
1308 |
|
f94d5ae642a9
New APIs to write to sys.stdout or sys.stderr using a printf-like interface.
Guido van Rossum <guido@python.org>
parents:
7402
diff
changeset
|
1309 va_start(va, format); |
|
f94d5ae642a9
New APIs to write to sys.stdout or sys.stderr using a printf-like interface.
Guido van Rossum <guido@python.org>
parents:
7402
diff
changeset
|
1310 mywrite("stderr", stderr, format, va); |
|
f94d5ae642a9
New APIs to write to sys.stdout or sys.stderr using a printf-like interface.
Guido van Rossum <guido@python.org>
parents:
7402
diff
changeset
|
1311 va_end(va); |
|
f94d5ae642a9
New APIs to write to sys.stdout or sys.stderr using a printf-like interface.
Guido van Rossum <guido@python.org>
parents:
7402
diff
changeset
|
1312 } |
