Mercurial > cpython-lru_cache-weakref
annotate Python/sysmodule.c @ 75073:4a31f6b11e7a 3.2
Merge from 3.1: Issue #13703: add a way to randomize the hash values of basic types (str, bytes, datetime)
in order to make algorithmic complexity attacks on (e.g.) web apps much more complicated.
The environment variable PYTHONHASHSEED and the new command line flag -R control this
behavior.
| author | Georg Brandl <georg@python.org> |
|---|---|
| date | Mon, 20 Feb 2012 21:31:46 +0100 |
| parents | fdcda5b74317 f4b7ecf8a5f8 |
| children | ed76dc34b39d |
| 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" |
|
35742
1c4d192f1568
Merge ast-branch to head
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
35673
diff
changeset
|
18 #include "code.h" |
|
15487
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" |
| 86 | 20 |
|
710
bc5c77fa8006
Added settrace() and setprofile().
Guido van Rossum <guido@python.org>
parents:
631
diff
changeset
|
21 #include "osdefs.h" |
| 86 | 22 |
|
25666
4a825b902310
Add os.path.supports_unicode_filenames for all platforms,
Mark Hammond <mhammond@skippinet.com.au>
parents:
25108
diff
changeset
|
23 #ifdef MS_WINDOWS |
|
4a825b902310
Add os.path.supports_unicode_filenames for all platforms,
Mark Hammond <mhammond@skippinet.com.au>
parents:
25108
diff
changeset
|
24 #define WIN32_LEAN_AND_MEAN |
|
43813
1561763cda72
No need to include windows.h twice
Amaury Forgeot d'Arc <amauryfa@gmail.com>
parents:
43777
diff
changeset
|
25 #include <windows.h> |
|
25666
4a825b902310
Add os.path.supports_unicode_filenames for all platforms,
Mark Hammond <mhammond@skippinet.com.au>
parents:
25108
diff
changeset
|
26 #endif /* MS_WINDOWS */ |
|
4a825b902310
Add os.path.supports_unicode_filenames for all platforms,
Mark Hammond <mhammond@skippinet.com.au>
parents:
25108
diff
changeset
|
27 |
|
4291
1427d61f1307
Rationalized MS ifdefs
Guido van Rossum <guido@python.org>
parents:
4256
diff
changeset
|
28 #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
|
29 extern void *PyWin_DLLhModule; |
|
6352
b62a7a59414e
Get DLL version from a variable.
Guido van Rossum <guido@python.org>
parents:
5955
diff
changeset
|
30 /* 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
|
31 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
|
32 #endif |
|
1dfc519ea3cb
Under NT, define sys.dllhandle and sys.winver (Mark H.).
Guido van Rossum <guido@python.org>
parents:
3326
diff
changeset
|
33 |
|
28949
ac487a7f7f2c
Patch #708495: Port more stuff to OpenVMS.
Martin v. Löwis <martin@v.loewis.de>
parents:
28556
diff
changeset
|
34 #ifdef __VMS |
|
ac487a7f7f2c
Patch #708495: Port more stuff to OpenVMS.
Martin v. Löwis <martin@v.loewis.de>
parents:
28556
diff
changeset
|
35 #include <unixlib.h> |
|
ac487a7f7f2c
Patch #708495: Port more stuff to OpenVMS.
Martin v. Löwis <martin@v.loewis.de>
parents:
28556
diff
changeset
|
36 #endif |
|
ac487a7f7f2c
Patch #708495: Port more stuff to OpenVMS.
Martin v. Löwis <martin@v.loewis.de>
parents:
28556
diff
changeset
|
37 |
|
29065
bf1634b023d5
Patch #612627: Add encoding attribute to file objects, and determine
Martin v. Löwis <martin@v.loewis.de>
parents:
28949
diff
changeset
|
38 #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
|
39 #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
|
40 #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
|
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 |
| 5372 | 43 PyObject * |
|
42812
a99ec4befda8
Add const to input string parameters
Neal Norwitz <nnorwitz@gmail.com>
parents:
42703
diff
changeset
|
44 PySys_GetObject(const char *name) |
| 6 | 45 { |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
46 PyThreadState *tstate = PyThreadState_GET(); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
47 PyObject *sd = tstate->interp->sysdict; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
48 if (sd == NULL) |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
49 return NULL; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
50 return PyDict_GetItemString(sd, name); |
| 6 | 51 } |
| 52 | |
| 53 int | |
|
42812
a99ec4befda8
Add const to input string parameters
Neal Norwitz <nnorwitz@gmail.com>
parents:
42703
diff
changeset
|
54 PySys_SetObject(const char *name, PyObject *v) |
| 6 | 55 { |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
56 PyThreadState *tstate = PyThreadState_GET(); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
57 PyObject *sd = tstate->interp->sysdict; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
58 if (v == NULL) { |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
59 if (PyDict_GetItemString(sd, name) == NULL) |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
60 return 0; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
61 else |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
62 return PyDict_DelItemString(sd, name); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
63 } |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
64 else |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
65 return PyDict_SetItemString(sd, name, v); |
| 6 | 66 } |
| 67 | |
|
66719
ba709ad3ff4c
Issue #10601: sys.displayhook uses 'backslashreplace' error handler on
Victor Stinner <victor.stinner@haypocalc.com>
parents:
66556
diff
changeset
|
68 /* Write repr(o) to sys.stdout using sys.stdout.encoding and 'backslashreplace' |
|
ba709ad3ff4c
Issue #10601: sys.displayhook uses 'backslashreplace' error handler on
Victor Stinner <victor.stinner@haypocalc.com>
parents:
66556
diff
changeset
|
69 error handler. If sys.stdout has a buffer attribute, use |
|
ba709ad3ff4c
Issue #10601: sys.displayhook uses 'backslashreplace' error handler on
Victor Stinner <victor.stinner@haypocalc.com>
parents:
66556
diff
changeset
|
70 sys.stdout.buffer.write(encoded), otherwise redecode the string and use |
|
ba709ad3ff4c
Issue #10601: sys.displayhook uses 'backslashreplace' error handler on
Victor Stinner <victor.stinner@haypocalc.com>
parents:
66556
diff
changeset
|
71 sys.stdout.write(redecoded). |
|
ba709ad3ff4c
Issue #10601: sys.displayhook uses 'backslashreplace' error handler on
Victor Stinner <victor.stinner@haypocalc.com>
parents:
66556
diff
changeset
|
72 |
|
ba709ad3ff4c
Issue #10601: sys.displayhook uses 'backslashreplace' error handler on
Victor Stinner <victor.stinner@haypocalc.com>
parents:
66556
diff
changeset
|
73 Helper function for sys_displayhook(). */ |
|
ba709ad3ff4c
Issue #10601: sys.displayhook uses 'backslashreplace' error handler on
Victor Stinner <victor.stinner@haypocalc.com>
parents:
66556
diff
changeset
|
74 static int |
|
ba709ad3ff4c
Issue #10601: sys.displayhook uses 'backslashreplace' error handler on
Victor Stinner <victor.stinner@haypocalc.com>
parents:
66556
diff
changeset
|
75 sys_displayhook_unencodable(PyObject *outf, PyObject *o) |
|
ba709ad3ff4c
Issue #10601: sys.displayhook uses 'backslashreplace' error handler on
Victor Stinner <victor.stinner@haypocalc.com>
parents:
66556
diff
changeset
|
76 { |
|
ba709ad3ff4c
Issue #10601: sys.displayhook uses 'backslashreplace' error handler on
Victor Stinner <victor.stinner@haypocalc.com>
parents:
66556
diff
changeset
|
77 PyObject *stdout_encoding = NULL; |
|
ba709ad3ff4c
Issue #10601: sys.displayhook uses 'backslashreplace' error handler on
Victor Stinner <victor.stinner@haypocalc.com>
parents:
66556
diff
changeset
|
78 PyObject *encoded, *escaped_str, *repr_str, *buffer, *result; |
|
ba709ad3ff4c
Issue #10601: sys.displayhook uses 'backslashreplace' error handler on
Victor Stinner <victor.stinner@haypocalc.com>
parents:
66556
diff
changeset
|
79 char *stdout_encoding_str; |
|
ba709ad3ff4c
Issue #10601: sys.displayhook uses 'backslashreplace' error handler on
Victor Stinner <victor.stinner@haypocalc.com>
parents:
66556
diff
changeset
|
80 int ret; |
|
ba709ad3ff4c
Issue #10601: sys.displayhook uses 'backslashreplace' error handler on
Victor Stinner <victor.stinner@haypocalc.com>
parents:
66556
diff
changeset
|
81 |
|
ba709ad3ff4c
Issue #10601: sys.displayhook uses 'backslashreplace' error handler on
Victor Stinner <victor.stinner@haypocalc.com>
parents:
66556
diff
changeset
|
82 stdout_encoding = PyObject_GetAttrString(outf, "encoding"); |
|
ba709ad3ff4c
Issue #10601: sys.displayhook uses 'backslashreplace' error handler on
Victor Stinner <victor.stinner@haypocalc.com>
parents:
66556
diff
changeset
|
83 if (stdout_encoding == NULL) |
|
ba709ad3ff4c
Issue #10601: sys.displayhook uses 'backslashreplace' error handler on
Victor Stinner <victor.stinner@haypocalc.com>
parents:
66556
diff
changeset
|
84 goto error; |
|
ba709ad3ff4c
Issue #10601: sys.displayhook uses 'backslashreplace' error handler on
Victor Stinner <victor.stinner@haypocalc.com>
parents:
66556
diff
changeset
|
85 stdout_encoding_str = _PyUnicode_AsString(stdout_encoding); |
|
ba709ad3ff4c
Issue #10601: sys.displayhook uses 'backslashreplace' error handler on
Victor Stinner <victor.stinner@haypocalc.com>
parents:
66556
diff
changeset
|
86 if (stdout_encoding_str == NULL) |
|
ba709ad3ff4c
Issue #10601: sys.displayhook uses 'backslashreplace' error handler on
Victor Stinner <victor.stinner@haypocalc.com>
parents:
66556
diff
changeset
|
87 goto error; |
|
ba709ad3ff4c
Issue #10601: sys.displayhook uses 'backslashreplace' error handler on
Victor Stinner <victor.stinner@haypocalc.com>
parents:
66556
diff
changeset
|
88 |
|
ba709ad3ff4c
Issue #10601: sys.displayhook uses 'backslashreplace' error handler on
Victor Stinner <victor.stinner@haypocalc.com>
parents:
66556
diff
changeset
|
89 repr_str = PyObject_Repr(o); |
|
ba709ad3ff4c
Issue #10601: sys.displayhook uses 'backslashreplace' error handler on
Victor Stinner <victor.stinner@haypocalc.com>
parents:
66556
diff
changeset
|
90 if (repr_str == NULL) |
|
ba709ad3ff4c
Issue #10601: sys.displayhook uses 'backslashreplace' error handler on
Victor Stinner <victor.stinner@haypocalc.com>
parents:
66556
diff
changeset
|
91 goto error; |
|
ba709ad3ff4c
Issue #10601: sys.displayhook uses 'backslashreplace' error handler on
Victor Stinner <victor.stinner@haypocalc.com>
parents:
66556
diff
changeset
|
92 encoded = PyUnicode_AsEncodedString(repr_str, |
|
ba709ad3ff4c
Issue #10601: sys.displayhook uses 'backslashreplace' error handler on
Victor Stinner <victor.stinner@haypocalc.com>
parents:
66556
diff
changeset
|
93 stdout_encoding_str, |
|
ba709ad3ff4c
Issue #10601: sys.displayhook uses 'backslashreplace' error handler on
Victor Stinner <victor.stinner@haypocalc.com>
parents:
66556
diff
changeset
|
94 "backslashreplace"); |
|
ba709ad3ff4c
Issue #10601: sys.displayhook uses 'backslashreplace' error handler on
Victor Stinner <victor.stinner@haypocalc.com>
parents:
66556
diff
changeset
|
95 Py_DECREF(repr_str); |
|
ba709ad3ff4c
Issue #10601: sys.displayhook uses 'backslashreplace' error handler on
Victor Stinner <victor.stinner@haypocalc.com>
parents:
66556
diff
changeset
|
96 if (encoded == NULL) |
|
ba709ad3ff4c
Issue #10601: sys.displayhook uses 'backslashreplace' error handler on
Victor Stinner <victor.stinner@haypocalc.com>
parents:
66556
diff
changeset
|
97 goto error; |
|
ba709ad3ff4c
Issue #10601: sys.displayhook uses 'backslashreplace' error handler on
Victor Stinner <victor.stinner@haypocalc.com>
parents:
66556
diff
changeset
|
98 |
|
ba709ad3ff4c
Issue #10601: sys.displayhook uses 'backslashreplace' error handler on
Victor Stinner <victor.stinner@haypocalc.com>
parents:
66556
diff
changeset
|
99 buffer = PyObject_GetAttrString(outf, "buffer"); |
|
ba709ad3ff4c
Issue #10601: sys.displayhook uses 'backslashreplace' error handler on
Victor Stinner <victor.stinner@haypocalc.com>
parents:
66556
diff
changeset
|
100 if (buffer) { |
|
ba709ad3ff4c
Issue #10601: sys.displayhook uses 'backslashreplace' error handler on
Victor Stinner <victor.stinner@haypocalc.com>
parents:
66556
diff
changeset
|
101 result = PyObject_CallMethod(buffer, "write", "(O)", encoded); |
|
ba709ad3ff4c
Issue #10601: sys.displayhook uses 'backslashreplace' error handler on
Victor Stinner <victor.stinner@haypocalc.com>
parents:
66556
diff
changeset
|
102 Py_DECREF(buffer); |
|
ba709ad3ff4c
Issue #10601: sys.displayhook uses 'backslashreplace' error handler on
Victor Stinner <victor.stinner@haypocalc.com>
parents:
66556
diff
changeset
|
103 Py_DECREF(encoded); |
|
ba709ad3ff4c
Issue #10601: sys.displayhook uses 'backslashreplace' error handler on
Victor Stinner <victor.stinner@haypocalc.com>
parents:
66556
diff
changeset
|
104 if (result == NULL) |
|
ba709ad3ff4c
Issue #10601: sys.displayhook uses 'backslashreplace' error handler on
Victor Stinner <victor.stinner@haypocalc.com>
parents:
66556
diff
changeset
|
105 goto error; |
|
ba709ad3ff4c
Issue #10601: sys.displayhook uses 'backslashreplace' error handler on
Victor Stinner <victor.stinner@haypocalc.com>
parents:
66556
diff
changeset
|
106 Py_DECREF(result); |
|
ba709ad3ff4c
Issue #10601: sys.displayhook uses 'backslashreplace' error handler on
Victor Stinner <victor.stinner@haypocalc.com>
parents:
66556
diff
changeset
|
107 } |
|
ba709ad3ff4c
Issue #10601: sys.displayhook uses 'backslashreplace' error handler on
Victor Stinner <victor.stinner@haypocalc.com>
parents:
66556
diff
changeset
|
108 else { |
|
ba709ad3ff4c
Issue #10601: sys.displayhook uses 'backslashreplace' error handler on
Victor Stinner <victor.stinner@haypocalc.com>
parents:
66556
diff
changeset
|
109 PyErr_Clear(); |
|
ba709ad3ff4c
Issue #10601: sys.displayhook uses 'backslashreplace' error handler on
Victor Stinner <victor.stinner@haypocalc.com>
parents:
66556
diff
changeset
|
110 escaped_str = PyUnicode_FromEncodedObject(encoded, |
|
ba709ad3ff4c
Issue #10601: sys.displayhook uses 'backslashreplace' error handler on
Victor Stinner <victor.stinner@haypocalc.com>
parents:
66556
diff
changeset
|
111 stdout_encoding_str, |
|
ba709ad3ff4c
Issue #10601: sys.displayhook uses 'backslashreplace' error handler on
Victor Stinner <victor.stinner@haypocalc.com>
parents:
66556
diff
changeset
|
112 "strict"); |
|
ba709ad3ff4c
Issue #10601: sys.displayhook uses 'backslashreplace' error handler on
Victor Stinner <victor.stinner@haypocalc.com>
parents:
66556
diff
changeset
|
113 Py_DECREF(encoded); |
|
ba709ad3ff4c
Issue #10601: sys.displayhook uses 'backslashreplace' error handler on
Victor Stinner <victor.stinner@haypocalc.com>
parents:
66556
diff
changeset
|
114 if (PyFile_WriteObject(escaped_str, outf, Py_PRINT_RAW) != 0) { |
|
ba709ad3ff4c
Issue #10601: sys.displayhook uses 'backslashreplace' error handler on
Victor Stinner <victor.stinner@haypocalc.com>
parents:
66556
diff
changeset
|
115 Py_DECREF(escaped_str); |
|
ba709ad3ff4c
Issue #10601: sys.displayhook uses 'backslashreplace' error handler on
Victor Stinner <victor.stinner@haypocalc.com>
parents:
66556
diff
changeset
|
116 goto error; |
|
ba709ad3ff4c
Issue #10601: sys.displayhook uses 'backslashreplace' error handler on
Victor Stinner <victor.stinner@haypocalc.com>
parents:
66556
diff
changeset
|
117 } |
|
ba709ad3ff4c
Issue #10601: sys.displayhook uses 'backslashreplace' error handler on
Victor Stinner <victor.stinner@haypocalc.com>
parents:
66556
diff
changeset
|
118 Py_DECREF(escaped_str); |
|
ba709ad3ff4c
Issue #10601: sys.displayhook uses 'backslashreplace' error handler on
Victor Stinner <victor.stinner@haypocalc.com>
parents:
66556
diff
changeset
|
119 } |
|
ba709ad3ff4c
Issue #10601: sys.displayhook uses 'backslashreplace' error handler on
Victor Stinner <victor.stinner@haypocalc.com>
parents:
66556
diff
changeset
|
120 ret = 0; |
|
ba709ad3ff4c
Issue #10601: sys.displayhook uses 'backslashreplace' error handler on
Victor Stinner <victor.stinner@haypocalc.com>
parents:
66556
diff
changeset
|
121 goto finally; |
|
ba709ad3ff4c
Issue #10601: sys.displayhook uses 'backslashreplace' error handler on
Victor Stinner <victor.stinner@haypocalc.com>
parents:
66556
diff
changeset
|
122 |
|
ba709ad3ff4c
Issue #10601: sys.displayhook uses 'backslashreplace' error handler on
Victor Stinner <victor.stinner@haypocalc.com>
parents:
66556
diff
changeset
|
123 error: |
|
ba709ad3ff4c
Issue #10601: sys.displayhook uses 'backslashreplace' error handler on
Victor Stinner <victor.stinner@haypocalc.com>
parents:
66556
diff
changeset
|
124 ret = -1; |
|
ba709ad3ff4c
Issue #10601: sys.displayhook uses 'backslashreplace' error handler on
Victor Stinner <victor.stinner@haypocalc.com>
parents:
66556
diff
changeset
|
125 finally: |
|
ba709ad3ff4c
Issue #10601: sys.displayhook uses 'backslashreplace' error handler on
Victor Stinner <victor.stinner@haypocalc.com>
parents:
66556
diff
changeset
|
126 Py_XDECREF(stdout_encoding); |
|
ba709ad3ff4c
Issue #10601: sys.displayhook uses 'backslashreplace' error handler on
Victor Stinner <victor.stinner@haypocalc.com>
parents:
66556
diff
changeset
|
127 return ret; |
|
ba709ad3ff4c
Issue #10601: sys.displayhook uses 'backslashreplace' error handler on
Victor Stinner <victor.stinner@haypocalc.com>
parents:
66556
diff
changeset
|
128 } |
|
ba709ad3ff4c
Issue #10601: sys.displayhook uses 'backslashreplace' error handler on
Victor Stinner <victor.stinner@haypocalc.com>
parents:
66556
diff
changeset
|
129 |
| 5372 | 130 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
|
131 sys_displayhook(PyObject *self, PyObject *o) |
|
15811
1a00d21910c8
Implementation of PEP-0217.
Moshe Zadka <moshez@math.huji.ac.il>
parents:
15595
diff
changeset
|
132 { |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
133 PyObject *outf; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
134 PyInterpreterState *interp = PyThreadState_GET()->interp; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
135 PyObject *modules = interp->modules; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
136 PyObject *builtins = PyDict_GetItemString(modules, "builtins"); |
|
66719
ba709ad3ff4c
Issue #10601: sys.displayhook uses 'backslashreplace' error handler on
Victor Stinner <victor.stinner@haypocalc.com>
parents:
66556
diff
changeset
|
137 int err; |
|
15811
1a00d21910c8
Implementation of PEP-0217.
Moshe Zadka <moshez@math.huji.ac.il>
parents:
15595
diff
changeset
|
138 |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
139 if (builtins == NULL) { |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
140 PyErr_SetString(PyExc_RuntimeError, "lost builtins module"); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
141 return NULL; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
142 } |
|
18805
4462c57f6c94
Patch number #422106 by Greg Ball, to fix segmentation
Moshe Zadka <moshez@math.huji.ac.il>
parents:
18689
diff
changeset
|
143 |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
144 /* Print value except if None */ |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
145 /* After printing, also assign to '_' */ |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
146 /* Before, set '_' to None to avoid recursion */ |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
147 if (o == Py_None) { |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
148 Py_INCREF(Py_None); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
149 return Py_None; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
150 } |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
151 if (PyObject_SetAttrString(builtins, "_", Py_None) != 0) |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
152 return NULL; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
153 outf = PySys_GetObject("stdout"); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
154 if (outf == NULL || outf == Py_None) { |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
155 PyErr_SetString(PyExc_RuntimeError, "lost sys.stdout"); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
156 return NULL; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
157 } |
|
66719
ba709ad3ff4c
Issue #10601: sys.displayhook uses 'backslashreplace' error handler on
Victor Stinner <victor.stinner@haypocalc.com>
parents:
66556
diff
changeset
|
158 if (PyFile_WriteObject(o, outf, 0) != 0) { |
|
ba709ad3ff4c
Issue #10601: sys.displayhook uses 'backslashreplace' error handler on
Victor Stinner <victor.stinner@haypocalc.com>
parents:
66556
diff
changeset
|
159 if (PyErr_ExceptionMatches(PyExc_UnicodeEncodeError)) { |
|
ba709ad3ff4c
Issue #10601: sys.displayhook uses 'backslashreplace' error handler on
Victor Stinner <victor.stinner@haypocalc.com>
parents:
66556
diff
changeset
|
160 /* repr(o) is not encodable to sys.stdout.encoding with |
|
ba709ad3ff4c
Issue #10601: sys.displayhook uses 'backslashreplace' error handler on
Victor Stinner <victor.stinner@haypocalc.com>
parents:
66556
diff
changeset
|
161 * sys.stdout.errors error handler (which is probably 'strict') */ |
|
ba709ad3ff4c
Issue #10601: sys.displayhook uses 'backslashreplace' error handler on
Victor Stinner <victor.stinner@haypocalc.com>
parents:
66556
diff
changeset
|
162 PyErr_Clear(); |
|
ba709ad3ff4c
Issue #10601: sys.displayhook uses 'backslashreplace' error handler on
Victor Stinner <victor.stinner@haypocalc.com>
parents:
66556
diff
changeset
|
163 err = sys_displayhook_unencodable(outf, o); |
|
ba709ad3ff4c
Issue #10601: sys.displayhook uses 'backslashreplace' error handler on
Victor Stinner <victor.stinner@haypocalc.com>
parents:
66556
diff
changeset
|
164 if (err) |
|
ba709ad3ff4c
Issue #10601: sys.displayhook uses 'backslashreplace' error handler on
Victor Stinner <victor.stinner@haypocalc.com>
parents:
66556
diff
changeset
|
165 return NULL; |
|
ba709ad3ff4c
Issue #10601: sys.displayhook uses 'backslashreplace' error handler on
Victor Stinner <victor.stinner@haypocalc.com>
parents:
66556
diff
changeset
|
166 } |
|
ba709ad3ff4c
Issue #10601: sys.displayhook uses 'backslashreplace' error handler on
Victor Stinner <victor.stinner@haypocalc.com>
parents:
66556
diff
changeset
|
167 else { |
|
ba709ad3ff4c
Issue #10601: sys.displayhook uses 'backslashreplace' error handler on
Victor Stinner <victor.stinner@haypocalc.com>
parents:
66556
diff
changeset
|
168 return NULL; |
|
ba709ad3ff4c
Issue #10601: sys.displayhook uses 'backslashreplace' error handler on
Victor Stinner <victor.stinner@haypocalc.com>
parents:
66556
diff
changeset
|
169 } |
|
ba709ad3ff4c
Issue #10601: sys.displayhook uses 'backslashreplace' error handler on
Victor Stinner <victor.stinner@haypocalc.com>
parents:
66556
diff
changeset
|
170 } |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
171 if (PyFile_WriteString("\n", outf) != 0) |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
172 return NULL; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
173 if (PyObject_SetAttrString(builtins, "_", o) != 0) |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
174 return NULL; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
175 Py_INCREF(Py_None); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
176 return Py_None; |
|
15811
1a00d21910c8
Implementation of PEP-0217.
Moshe Zadka <moshez@math.huji.ac.il>
parents:
15595
diff
changeset
|
177 } |
|
1a00d21910c8
Implementation of PEP-0217.
Moshe Zadka <moshez@math.huji.ac.il>
parents:
15595
diff
changeset
|
178 |
|
23746
43ddcdcd3c71
Patch #505375: Make doc strings optional.
Martin v. Löwis <martin@v.loewis.de>
parents:
22604
diff
changeset
|
179 PyDoc_STRVAR(displayhook_doc, |
| 17164 | 180 "displayhook(object) -> None\n" |
|
15811
1a00d21910c8
Implementation of PEP-0217.
Moshe Zadka <moshez@math.huji.ac.il>
parents:
15595
diff
changeset
|
181 "\n" |
|
59302
4b413dfa27f9
Merged revisions 78622 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
55611
diff
changeset
|
182 "Print an object to sys.stdout and also save it in builtins._\n" |
|
23746
43ddcdcd3c71
Patch #505375: Make doc strings optional.
Martin v. Löwis <martin@v.loewis.de>
parents:
22604
diff
changeset
|
183 ); |
| 17164 | 184 |
| 185 static PyObject * | |
| 186 sys_excepthook(PyObject* self, PyObject* args) | |
| 187 { | |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
188 PyObject *exc, *value, *tb; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
189 if (!PyArg_UnpackTuple(args, "excepthook", 3, 3, &exc, &value, &tb)) |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
190 return NULL; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
191 PyErr_Display(exc, value, tb); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
192 Py_INCREF(Py_None); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
193 return Py_None; |
| 17164 | 194 } |
| 195 | |
|
23746
43ddcdcd3c71
Patch #505375: Make doc strings optional.
Martin v. Löwis <martin@v.loewis.de>
parents:
22604
diff
changeset
|
196 PyDoc_STRVAR(excepthook_doc, |
| 17164 | 197 "excepthook(exctype, value, traceback) -> None\n" |
| 198 "\n" | |
|
23746
43ddcdcd3c71
Patch #505375: Make doc strings optional.
Martin v. Löwis <martin@v.loewis.de>
parents:
22604
diff
changeset
|
199 "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
|
200 ); |
|
15811
1a00d21910c8
Implementation of PEP-0217.
Moshe Zadka <moshez@math.huji.ac.il>
parents:
15595
diff
changeset
|
201 |
|
1a00d21910c8
Implementation of PEP-0217.
Moshe Zadka <moshez@math.huji.ac.il>
parents:
15595
diff
changeset
|
202 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
|
203 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
|
204 { |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
205 PyThreadState *tstate; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
206 tstate = PyThreadState_GET(); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
207 return Py_BuildValue( |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
208 "(OOO)", |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
209 tstate->exc_type != NULL ? tstate->exc_type : Py_None, |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
210 tstate->exc_value != NULL ? tstate->exc_value : Py_None, |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
211 tstate->exc_traceback != NULL ? |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
212 tstate->exc_traceback : Py_None); |
|
5405
b7871ca930ad
Massive changes for separate thread state management.
Guido van Rossum <guido@python.org>
parents:
5377
diff
changeset
|
213 } |
|
b7871ca930ad
Massive changes for separate thread state management.
Guido van Rossum <guido@python.org>
parents:
5377
diff
changeset
|
214 |
|
23746
43ddcdcd3c71
Patch #505375: Make doc strings optional.
Martin v. Löwis <martin@v.loewis.de>
parents:
22604
diff
changeset
|
215 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
|
216 "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
|
217 \n\ |
|
28119
869695cba2cd
- New function sys.exc_clear() clears the current exception. This is
Guido van Rossum <guido@python.org>
parents:
27977
diff
changeset
|
218 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
|
219 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
|
220 ); |
|
869695cba2cd
- New function sys.exc_clear() clears the current exception. This is
Guido van Rossum <guido@python.org>
parents:
27977
diff
changeset
|
221 |
|
869695cba2cd
- New function sys.exc_clear() clears the current exception. This is
Guido van Rossum <guido@python.org>
parents:
27977
diff
changeset
|
222 static PyObject * |
|
13658
f79434ee41fa
Mass ANSIfication of function definitions. Doesn't cover all 'extern'
Thomas Wouters <thomas@python.org>
parents:
13447
diff
changeset
|
223 sys_exit(PyObject *self, PyObject *args) |
| 6 | 224 { |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
225 PyObject *exit_code = 0; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
226 if (!PyArg_UnpackTuple(args, "exit", 0, 1, &exit_code)) |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
227 return NULL; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
228 /* Raise SystemExit so callers may catch it or clean up. */ |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
229 PyErr_SetObject(PyExc_SystemExit, exit_code); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
230 return NULL; |
| 6 | 231 } |
| 232 | |
|
23746
43ddcdcd3c71
Patch #505375: Make doc strings optional.
Martin v. Löwis <martin@v.loewis.de>
parents:
22604
diff
changeset
|
233 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
|
234 "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
|
235 \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
|
236 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
|
237 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
|
238 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
|
239 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
|
240 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
|
241 ); |
|
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
|
242 |
|
20943
e4d380f5f297
Include sys_getdefaultencoding in #ifdef Py_USING_UNICODE. Fixes #479571.
Martin v. Löwis <martin@v.loewis.de>
parents:
20655
diff
changeset
|
243 |
| 5372 | 244 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
|
245 sys_getdefaultencoding(PyObject *self) |
|
12649
c92668766f5d
M.-A. Lemburg <mal@lemburg.com>:
Fred Drake <fdrake@acm.org>
parents:
12398
diff
changeset
|
246 { |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
247 return PyUnicode_FromString(PyUnicode_GetDefaultEncoding()); |
|
12649
c92668766f5d
M.-A. Lemburg <mal@lemburg.com>:
Fred Drake <fdrake@acm.org>
parents:
12398
diff
changeset
|
248 } |
|
c92668766f5d
M.-A. Lemburg <mal@lemburg.com>:
Fred Drake <fdrake@acm.org>
parents:
12398
diff
changeset
|
249 |
|
23746
43ddcdcd3c71
Patch #505375: Make doc strings optional.
Martin v. Löwis <martin@v.loewis.de>
parents:
22604
diff
changeset
|
250 PyDoc_STRVAR(getdefaultencoding_doc, |
|
12877
78231bbe605d
Marc-Andre Lemburg <mal@lemburg.com>:
Marc-André Lemburg <mal@egenix.com>
parents:
12649
diff
changeset
|
251 "getdefaultencoding() -> string\n\ |
|
12649
c92668766f5d
M.-A. Lemburg <mal@lemburg.com>:
Fred Drake <fdrake@acm.org>
parents:
12398
diff
changeset
|
252 \n\ |
|
c92668766f5d
M.-A. Lemburg <mal@lemburg.com>:
Fred Drake <fdrake@acm.org>
parents:
12398
diff
changeset
|
253 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
|
254 implementation." |
|
43ddcdcd3c71
Patch #505375: Make doc strings optional.
Martin v. Löwis <martin@v.loewis.de>
parents:
22604
diff
changeset
|
255 ); |
|
12649
c92668766f5d
M.-A. Lemburg <mal@lemburg.com>:
Fred Drake <fdrake@acm.org>
parents:
12398
diff
changeset
|
256 |
|
c92668766f5d
M.-A. Lemburg <mal@lemburg.com>:
Fred Drake <fdrake@acm.org>
parents:
12398
diff
changeset
|
257 static PyObject * |
|
28174
3f90d21debe9
Always initialize Py_FileSystemDefaultEncoding on Unix in Py_Initialize,
Martin v. Löwis <martin@v.loewis.de>
parents:
28119
diff
changeset
|
258 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
|
259 { |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
260 if (Py_FileSystemDefaultEncoding) |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
261 return PyUnicode_FromString(Py_FileSystemDefaultEncoding); |
|
69077
a00b9a5688da
sys.getfilesystemencoding() raises a RuntimeError if initfsencoding() was not
Victor Stinner <victor.stinner@haypocalc.com>
parents:
68489
diff
changeset
|
262 PyErr_SetString(PyExc_RuntimeError, |
|
a00b9a5688da
sys.getfilesystemencoding() raises a RuntimeError if initfsencoding() was not
Victor Stinner <victor.stinner@haypocalc.com>
parents:
68489
diff
changeset
|
263 "filesystem encoding is not initialized"); |
|
a00b9a5688da
sys.getfilesystemencoding() raises a RuntimeError if initfsencoding() was not
Victor Stinner <victor.stinner@haypocalc.com>
parents:
68489
diff
changeset
|
264 return NULL; |
|
28174
3f90d21debe9
Always initialize Py_FileSystemDefaultEncoding on Unix in Py_Initialize,
Martin v. Löwis <martin@v.loewis.de>
parents:
28119
diff
changeset
|
265 } |
|
3f90d21debe9
Always initialize Py_FileSystemDefaultEncoding on Unix in Py_Initialize,
Martin v. Löwis <martin@v.loewis.de>
parents:
28119
diff
changeset
|
266 |
|
3f90d21debe9
Always initialize Py_FileSystemDefaultEncoding on Unix in Py_Initialize,
Martin v. Löwis <martin@v.loewis.de>
parents:
28119
diff
changeset
|
267 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
|
268 "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
|
269 \n\ |
|
3f90d21debe9
Always initialize Py_FileSystemDefaultEncoding on Unix in Py_Initialize,
Martin v. Löwis <martin@v.loewis.de>
parents:
28119
diff
changeset
|
270 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
|
271 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
|
272 ); |
|
3f90d21debe9
Always initialize Py_FileSystemDefaultEncoding on Unix in Py_Initialize,
Martin v. Löwis <martin@v.loewis.de>
parents:
28119
diff
changeset
|
273 |
|
49403
e822992cf6ce
Issue #3187: Add sys.setfilesystemencoding.
Martin v. Löwis <martin@v.loewis.de>
parents:
48499
diff
changeset
|
274 static PyObject * |
|
40484
8565e3fea9b6
Patch #1601678: move intern() to sys.intern().
Georg Brandl <georg@python.org>
parents:
40450
diff
changeset
|
275 sys_intern(PyObject *self, PyObject *args) |
|
8565e3fea9b6
Patch #1601678: move intern() to sys.intern().
Georg Brandl <georg@python.org>
parents:
40450
diff
changeset
|
276 { |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
277 PyObject *s; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
278 if (!PyArg_ParseTuple(args, "U:intern", &s)) |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
279 return NULL; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
280 if (PyUnicode_CheckExact(s)) { |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
281 Py_INCREF(s); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
282 PyUnicode_InternInPlace(&s); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
283 return s; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
284 } |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
285 else { |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
286 PyErr_Format(PyExc_TypeError, |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
287 "can't intern %.400s", s->ob_type->tp_name); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
288 return NULL; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
289 } |
|
40484
8565e3fea9b6
Patch #1601678: move intern() to sys.intern().
Georg Brandl <georg@python.org>
parents:
40450
diff
changeset
|
290 } |
|
8565e3fea9b6
Patch #1601678: move intern() to sys.intern().
Georg Brandl <georg@python.org>
parents:
40450
diff
changeset
|
291 |
|
8565e3fea9b6
Patch #1601678: move intern() to sys.intern().
Georg Brandl <georg@python.org>
parents:
40450
diff
changeset
|
292 PyDoc_STRVAR(intern_doc, |
|
8565e3fea9b6
Patch #1601678: move intern() to sys.intern().
Georg Brandl <georg@python.org>
parents:
40450
diff
changeset
|
293 "intern(string) -> string\n\ |
|
8565e3fea9b6
Patch #1601678: move intern() to sys.intern().
Georg Brandl <georg@python.org>
parents:
40450
diff
changeset
|
294 \n\ |
|
8565e3fea9b6
Patch #1601678: move intern() to sys.intern().
Georg Brandl <georg@python.org>
parents:
40450
diff
changeset
|
295 ``Intern'' the given string. This enters the string in the (global)\n\ |
|
8565e3fea9b6
Patch #1601678: move intern() to sys.intern().
Georg Brandl <georg@python.org>
parents:
40450
diff
changeset
|
296 table of interned strings whose purpose is to speed up dictionary lookups.\n\ |
|
8565e3fea9b6
Patch #1601678: move intern() to sys.intern().
Georg Brandl <georg@python.org>
parents:
40450
diff
changeset
|
297 Return the string itself or the previously interned string object with the\n\ |
|
8565e3fea9b6
Patch #1601678: move intern() to sys.intern().
Georg Brandl <georg@python.org>
parents:
40450
diff
changeset
|
298 same value."); |
|
8565e3fea9b6
Patch #1601678: move intern() to sys.intern().
Georg Brandl <georg@python.org>
parents:
40450
diff
changeset
|
299 |
|
8565e3fea9b6
Patch #1601678: move intern() to sys.intern().
Georg Brandl <georg@python.org>
parents:
40450
diff
changeset
|
300 |
|
18326
e427afb5637f
Revise the interface to the profiling and tracing support for the
Fred Drake <fdrake@acm.org>
parents:
18298
diff
changeset
|
301 /* |
|
e427afb5637f
Revise the interface to the profiling and tracing support for the
Fred Drake <fdrake@acm.org>
parents:
18298
diff
changeset
|
302 * 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
|
303 * 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
|
304 */ |
|
31796
1c117dbb2def
Enable the profiling of C functions (builtins and extensions)
Nicholas Bastin <nick.bastin@gmail.com>
parents:
30108
diff
changeset
|
305 static PyObject *whatstrings[7] = {NULL, NULL, NULL, NULL, NULL, NULL, NULL}; |
|
18326
e427afb5637f
Revise the interface to the profiling and tracing support for the
Fred Drake <fdrake@acm.org>
parents:
18298
diff
changeset
|
306 |
|
e427afb5637f
Revise the interface to the profiling and tracing support for the
Fred Drake <fdrake@acm.org>
parents:
18298
diff
changeset
|
307 static int |
|
e427afb5637f
Revise the interface to the profiling and tracing support for the
Fred Drake <fdrake@acm.org>
parents:
18298
diff
changeset
|
308 trace_init(void) |
|
e427afb5637f
Revise the interface to the profiling and tracing support for the
Fred Drake <fdrake@acm.org>
parents:
18298
diff
changeset
|
309 { |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
310 static char *whatnames[7] = {"call", "exception", "line", "return", |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
311 "c_call", "c_exception", "c_return"}; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
312 PyObject *name; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
313 int i; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
314 for (i = 0; i < 7; ++i) { |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
315 if (whatstrings[i] == NULL) { |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
316 name = PyUnicode_InternFromString(whatnames[i]); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
317 if (name == NULL) |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
318 return -1; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
319 whatstrings[i] = name; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
320 } |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
321 } |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
322 return 0; |
|
18326
e427afb5637f
Revise the interface to the profiling and tracing support for the
Fred Drake <fdrake@acm.org>
parents:
18298
diff
changeset
|
323 } |
|
e427afb5637f
Revise the interface to the profiling and tracing support for the
Fred Drake <fdrake@acm.org>
parents:
18298
diff
changeset
|
324 |
|
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 static PyObject * |
|
e427afb5637f
Revise the interface to the profiling and tracing support for the
Fred Drake <fdrake@acm.org>
parents:
18298
diff
changeset
|
327 call_trampoline(PyThreadState *tstate, PyObject* callback, |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
328 PyFrameObject *frame, int what, PyObject *arg) |
|
18326
e427afb5637f
Revise the interface to the profiling and tracing support for the
Fred Drake <fdrake@acm.org>
parents:
18298
diff
changeset
|
329 { |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
330 PyObject *args = PyTuple_New(3); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
331 PyObject *whatstr; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
332 PyObject *result; |
|
18326
e427afb5637f
Revise the interface to the profiling and tracing support for the
Fred Drake <fdrake@acm.org>
parents:
18298
diff
changeset
|
333 |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
334 if (args == NULL) |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
335 return NULL; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
336 Py_INCREF(frame); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
337 whatstr = whatstrings[what]; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
338 Py_INCREF(whatstr); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
339 if (arg == NULL) |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
340 arg = Py_None; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
341 Py_INCREF(arg); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
342 PyTuple_SET_ITEM(args, 0, (PyObject *)frame); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
343 PyTuple_SET_ITEM(args, 1, whatstr); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
344 PyTuple_SET_ITEM(args, 2, arg); |
|
18326
e427afb5637f
Revise the interface to the profiling and tracing support for the
Fred Drake <fdrake@acm.org>
parents:
18298
diff
changeset
|
345 |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
346 /* call the Python-level function */ |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
347 PyFrame_FastToLocals(frame); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
348 result = PyEval_CallObject(callback, args); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
349 PyFrame_LocalsToFast(frame, 1); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
350 if (result == NULL) |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
351 PyTraceBack_Here(frame); |
|
18326
e427afb5637f
Revise the interface to the profiling and tracing support for the
Fred Drake <fdrake@acm.org>
parents:
18298
diff
changeset
|
352 |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
353 /* cleanup */ |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
354 Py_DECREF(args); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
355 return result; |
|
18326
e427afb5637f
Revise the interface to the profiling and tracing support for the
Fred Drake <fdrake@acm.org>
parents:
18298
diff
changeset
|
356 } |
|
e427afb5637f
Revise the interface to the profiling and tracing support for the
Fred Drake <fdrake@acm.org>
parents:
18298
diff
changeset
|
357 |
|
e427afb5637f
Revise the interface to the profiling and tracing support for the
Fred Drake <fdrake@acm.org>
parents:
18298
diff
changeset
|
358 static int |
|
e427afb5637f
Revise the interface to the profiling and tracing support for the
Fred Drake <fdrake@acm.org>
parents:
18298
diff
changeset
|
359 profile_trampoline(PyObject *self, PyFrameObject *frame, |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
360 int what, PyObject *arg) |
|
18326
e427afb5637f
Revise the interface to the profiling and tracing support for the
Fred Drake <fdrake@acm.org>
parents:
18298
diff
changeset
|
361 { |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
362 PyThreadState *tstate = frame->f_tstate; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
363 PyObject *result; |
|
18326
e427afb5637f
Revise the interface to the profiling and tracing support for the
Fred Drake <fdrake@acm.org>
parents:
18298
diff
changeset
|
364 |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
365 if (arg == NULL) |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
366 arg = Py_None; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
367 result = call_trampoline(tstate, self, frame, what, arg); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
368 if (result == NULL) { |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
369 PyEval_SetProfile(NULL, NULL); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
370 return -1; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
371 } |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
372 Py_DECREF(result); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
373 return 0; |
|
18326
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 |
|
e427afb5637f
Revise the interface to the profiling and tracing support for the
Fred Drake <fdrake@acm.org>
parents:
18298
diff
changeset
|
376 static int |
|
e427afb5637f
Revise the interface to the profiling and tracing support for the
Fred Drake <fdrake@acm.org>
parents:
18298
diff
changeset
|
377 trace_trampoline(PyObject *self, PyFrameObject *frame, |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
378 int what, PyObject *arg) |
|
18326
e427afb5637f
Revise the interface to the profiling and tracing support for the
Fred Drake <fdrake@acm.org>
parents:
18298
diff
changeset
|
379 { |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
380 PyThreadState *tstate = frame->f_tstate; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
381 PyObject *callback; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
382 PyObject *result; |
|
18326
e427afb5637f
Revise the interface to the profiling and tracing support for the
Fred Drake <fdrake@acm.org>
parents:
18298
diff
changeset
|
383 |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
384 if (what == PyTrace_CALL) |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
385 callback = self; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
386 else |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
387 callback = frame->f_trace; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
388 if (callback == NULL) |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
389 return 0; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
390 result = call_trampoline(tstate, callback, frame, what, arg); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
391 if (result == NULL) { |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
392 PyEval_SetTrace(NULL, NULL); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
393 Py_XDECREF(frame->f_trace); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
394 frame->f_trace = NULL; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
395 return -1; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
396 } |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
397 if (result != Py_None) { |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
398 PyObject *temp = frame->f_trace; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
399 frame->f_trace = NULL; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
400 Py_XDECREF(temp); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
401 frame->f_trace = result; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
402 } |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
403 else { |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
404 Py_DECREF(result); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
405 } |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
406 return 0; |
|
18326
e427afb5637f
Revise the interface to the profiling and tracing support for the
Fred Drake <fdrake@acm.org>
parents:
18298
diff
changeset
|
407 } |
|
18136
4cb34314bd97
Instead of initializing & interning the strings passed to the profile
Fred Drake <fdrake@acm.org>
parents:
17396
diff
changeset
|
408 |
|
12649
c92668766f5d
M.-A. Lemburg <mal@lemburg.com>:
Fred Drake <fdrake@acm.org>
parents:
12398
diff
changeset
|
409 static PyObject * |
|
13658
f79434ee41fa
Mass ANSIfication of function definitions. Doesn't cover all 'extern'
Thomas Wouters <thomas@python.org>
parents:
13447
diff
changeset
|
410 sys_settrace(PyObject *self, PyObject *args) |
|
710
bc5c77fa8006
Added settrace() and setprofile().
Guido van Rossum <guido@python.org>
parents:
631
diff
changeset
|
411 { |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
412 if (trace_init() == -1) |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
413 return NULL; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
414 if (args == Py_None) |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
415 PyEval_SetTrace(NULL, NULL); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
416 else |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
417 PyEval_SetTrace(trace_trampoline, args); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
418 Py_INCREF(Py_None); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
419 return Py_None; |
|
710
bc5c77fa8006
Added settrace() and setprofile().
Guido van Rossum <guido@python.org>
parents:
631
diff
changeset
|
420 } |
|
bc5c77fa8006
Added settrace() and setprofile().
Guido van Rossum <guido@python.org>
parents:
631
diff
changeset
|
421 |
|
23746
43ddcdcd3c71
Patch #505375: Make doc strings optional.
Martin v. Löwis <martin@v.loewis.de>
parents:
22604
diff
changeset
|
422 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
|
423 "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
|
424 \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
|
425 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
|
426 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
|
427 ); |
|
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 |
| 5372 | 429 static PyObject * |
|
44828
ef7d72d98485
Merged revisions 60124-60142 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44699
diff
changeset
|
430 sys_gettrace(PyObject *self, PyObject *args) |
|
ef7d72d98485
Merged revisions 60124-60142 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44699
diff
changeset
|
431 { |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
432 PyThreadState *tstate = PyThreadState_GET(); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
433 PyObject *temp = tstate->c_traceobj; |
|
44828
ef7d72d98485
Merged revisions 60124-60142 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44699
diff
changeset
|
434 |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
435 if (temp == NULL) |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
436 temp = Py_None; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
437 Py_INCREF(temp); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
438 return temp; |
|
44828
ef7d72d98485
Merged revisions 60124-60142 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44699
diff
changeset
|
439 } |
|
ef7d72d98485
Merged revisions 60124-60142 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44699
diff
changeset
|
440 |
|
ef7d72d98485
Merged revisions 60124-60142 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44699
diff
changeset
|
441 PyDoc_STRVAR(gettrace_doc, |
|
ef7d72d98485
Merged revisions 60124-60142 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44699
diff
changeset
|
442 "gettrace()\n\ |
|
ef7d72d98485
Merged revisions 60124-60142 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44699
diff
changeset
|
443 \n\ |
|
ef7d72d98485
Merged revisions 60124-60142 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44699
diff
changeset
|
444 Return the global debug tracing function set with sys.settrace.\n\ |
|
ef7d72d98485
Merged revisions 60124-60142 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44699
diff
changeset
|
445 See the debugger chapter in the library manual." |
|
ef7d72d98485
Merged revisions 60124-60142 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44699
diff
changeset
|
446 ); |
|
ef7d72d98485
Merged revisions 60124-60142 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44699
diff
changeset
|
447 |
|
ef7d72d98485
Merged revisions 60124-60142 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44699
diff
changeset
|
448 static PyObject * |
|
13658
f79434ee41fa
Mass ANSIfication of function definitions. Doesn't cover all 'extern'
Thomas Wouters <thomas@python.org>
parents:
13447
diff
changeset
|
449 sys_setprofile(PyObject *self, PyObject *args) |
|
710
bc5c77fa8006
Added settrace() and setprofile().
Guido van Rossum <guido@python.org>
parents:
631
diff
changeset
|
450 { |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
451 if (trace_init() == -1) |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
452 return NULL; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
453 if (args == Py_None) |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
454 PyEval_SetProfile(NULL, NULL); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
455 else |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
456 PyEval_SetProfile(profile_trampoline, args); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
457 Py_INCREF(Py_None); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
458 return Py_None; |
|
710
bc5c77fa8006
Added settrace() and setprofile().
Guido van Rossum <guido@python.org>
parents:
631
diff
changeset
|
459 } |
|
bc5c77fa8006
Added settrace() and setprofile().
Guido van Rossum <guido@python.org>
parents:
631
diff
changeset
|
460 |
|
23746
43ddcdcd3c71
Patch #505375: Make doc strings optional.
Martin v. Löwis <martin@v.loewis.de>
parents:
22604
diff
changeset
|
461 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
|
462 "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
|
463 \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
|
464 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
|
465 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
|
466 ); |
|
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
|
467 |
| 5372 | 468 static PyObject * |
|
44828
ef7d72d98485
Merged revisions 60124-60142 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44699
diff
changeset
|
469 sys_getprofile(PyObject *self, PyObject *args) |
|
ef7d72d98485
Merged revisions 60124-60142 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44699
diff
changeset
|
470 { |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
471 PyThreadState *tstate = PyThreadState_GET(); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
472 PyObject *temp = tstate->c_profileobj; |
|
44828
ef7d72d98485
Merged revisions 60124-60142 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44699
diff
changeset
|
473 |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
474 if (temp == NULL) |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
475 temp = Py_None; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
476 Py_INCREF(temp); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
477 return temp; |
|
44828
ef7d72d98485
Merged revisions 60124-60142 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44699
diff
changeset
|
478 } |
|
ef7d72d98485
Merged revisions 60124-60142 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44699
diff
changeset
|
479 |
|
ef7d72d98485
Merged revisions 60124-60142 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44699
diff
changeset
|
480 PyDoc_STRVAR(getprofile_doc, |
|
ef7d72d98485
Merged revisions 60124-60142 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44699
diff
changeset
|
481 "getprofile()\n\ |
|
ef7d72d98485
Merged revisions 60124-60142 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44699
diff
changeset
|
482 \n\ |
|
ef7d72d98485
Merged revisions 60124-60142 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44699
diff
changeset
|
483 Return the profiling function set with sys.setprofile.\n\ |
|
ef7d72d98485
Merged revisions 60124-60142 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44699
diff
changeset
|
484 See the profiler chapter in the library manual." |
|
ef7d72d98485
Merged revisions 60124-60142 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44699
diff
changeset
|
485 ); |
|
ef7d72d98485
Merged revisions 60124-60142 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44699
diff
changeset
|
486 |
|
57175
fdd6484f1210
Merge in the new GIL.
Antoine Pitrou <solipsis@pitrou.net>
parents:
55611
diff
changeset
|
487 static int _check_interval = 100; |
|
fdd6484f1210
Merge in the new GIL.
Antoine Pitrou <solipsis@pitrou.net>
parents:
55611
diff
changeset
|
488 |
|
44828
ef7d72d98485
Merged revisions 60124-60142 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44699
diff
changeset
|
489 static PyObject * |
|
13658
f79434ee41fa
Mass ANSIfication of function definitions. Doesn't cover all 'extern'
Thomas Wouters <thomas@python.org>
parents:
13447
diff
changeset
|
490 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
|
491 { |
|
61466
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60889
diff
changeset
|
492 if (PyErr_WarnEx(PyExc_DeprecationWarning, |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60889
diff
changeset
|
493 "sys.getcheckinterval() and sys.setcheckinterval() " |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60889
diff
changeset
|
494 "are deprecated. Use sys.setswitchinterval() " |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60889
diff
changeset
|
495 "instead.", 1) < 0) |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60889
diff
changeset
|
496 return NULL; |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60889
diff
changeset
|
497 if (!PyArg_ParseTuple(args, "i:setcheckinterval", &_check_interval)) |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
498 return NULL; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
499 Py_INCREF(Py_None); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
500 return Py_None; |
|
2093
e8cafb2b743a
sys.check_interval=x -> sys.setcheckinterval(x)
Guido van Rossum <guido@python.org>
parents:
2062
diff
changeset
|
501 } |
|
e8cafb2b743a
sys.check_interval=x -> sys.setcheckinterval(x)
Guido van Rossum <guido@python.org>
parents:
2062
diff
changeset
|
502 |
|
23746
43ddcdcd3c71
Patch #505375: Make doc strings optional.
Martin v. Löwis <martin@v.loewis.de>
parents:
22604
diff
changeset
|
503 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
|
504 "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
|
505 \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
|
506 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
|
507 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
|
508 ); |
|
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
|
509 |
|
14308
b8b3f76ffd51
add user-modifiable recursion_limit
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
14295
diff
changeset
|
510 static PyObject * |
|
29765
e9e5832d706f
New function sys.getcheckinterval(), to complement setcheckinterval().
Tim Peters <tim.peters@gmail.com>
parents:
29065
diff
changeset
|
511 sys_getcheckinterval(PyObject *self, PyObject *args) |
|
e9e5832d706f
New function sys.getcheckinterval(), to complement setcheckinterval().
Tim Peters <tim.peters@gmail.com>
parents:
29065
diff
changeset
|
512 { |
|
61466
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60889
diff
changeset
|
513 if (PyErr_WarnEx(PyExc_DeprecationWarning, |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60889
diff
changeset
|
514 "sys.getcheckinterval() and sys.setcheckinterval() " |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60889
diff
changeset
|
515 "are deprecated. Use sys.getswitchinterval() " |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60889
diff
changeset
|
516 "instead.", 1) < 0) |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60889
diff
changeset
|
517 return NULL; |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60889
diff
changeset
|
518 return PyLong_FromLong(_check_interval); |
|
29765
e9e5832d706f
New function sys.getcheckinterval(), to complement setcheckinterval().
Tim Peters <tim.peters@gmail.com>
parents:
29065
diff
changeset
|
519 } |
|
e9e5832d706f
New function sys.getcheckinterval(), to complement setcheckinterval().
Tim Peters <tim.peters@gmail.com>
parents:
29065
diff
changeset
|
520 |
|
e9e5832d706f
New function sys.getcheckinterval(), to complement setcheckinterval().
Tim Peters <tim.peters@gmail.com>
parents:
29065
diff
changeset
|
521 PyDoc_STRVAR(getcheckinterval_doc, |
|
e9e5832d706f
New function sys.getcheckinterval(), to complement setcheckinterval().
Tim Peters <tim.peters@gmail.com>
parents:
29065
diff
changeset
|
522 "getcheckinterval() -> current check interval; see setcheckinterval()." |
|
e9e5832d706f
New function sys.getcheckinterval(), to complement setcheckinterval().
Tim Peters <tim.peters@gmail.com>
parents:
29065
diff
changeset
|
523 ); |
|
e9e5832d706f
New function sys.getcheckinterval(), to complement setcheckinterval().
Tim Peters <tim.peters@gmail.com>
parents:
29065
diff
changeset
|
524 |
|
57175
fdd6484f1210
Merge in the new GIL.
Antoine Pitrou <solipsis@pitrou.net>
parents:
55611
diff
changeset
|
525 #ifdef WITH_THREAD |
|
fdd6484f1210
Merge in the new GIL.
Antoine Pitrou <solipsis@pitrou.net>
parents:
55611
diff
changeset
|
526 static PyObject * |
|
fdd6484f1210
Merge in the new GIL.
Antoine Pitrou <solipsis@pitrou.net>
parents:
55611
diff
changeset
|
527 sys_setswitchinterval(PyObject *self, PyObject *args) |
|
fdd6484f1210
Merge in the new GIL.
Antoine Pitrou <solipsis@pitrou.net>
parents:
55611
diff
changeset
|
528 { |
|
61466
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60889
diff
changeset
|
529 double d; |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60889
diff
changeset
|
530 if (!PyArg_ParseTuple(args, "d:setswitchinterval", &d)) |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60889
diff
changeset
|
531 return NULL; |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60889
diff
changeset
|
532 if (d <= 0.0) { |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60889
diff
changeset
|
533 PyErr_SetString(PyExc_ValueError, |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60889
diff
changeset
|
534 "switch interval must be strictly positive"); |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60889
diff
changeset
|
535 return NULL; |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60889
diff
changeset
|
536 } |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60889
diff
changeset
|
537 _PyEval_SetSwitchInterval((unsigned long) (1e6 * d)); |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60889
diff
changeset
|
538 Py_INCREF(Py_None); |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60889
diff
changeset
|
539 return Py_None; |
|
57175
fdd6484f1210
Merge in the new GIL.
Antoine Pitrou <solipsis@pitrou.net>
parents:
55611
diff
changeset
|
540 } |
|
fdd6484f1210
Merge in the new GIL.
Antoine Pitrou <solipsis@pitrou.net>
parents:
55611
diff
changeset
|
541 |
|
fdd6484f1210
Merge in the new GIL.
Antoine Pitrou <solipsis@pitrou.net>
parents:
55611
diff
changeset
|
542 PyDoc_STRVAR(setswitchinterval_doc, |
|
fdd6484f1210
Merge in the new GIL.
Antoine Pitrou <solipsis@pitrou.net>
parents:
55611
diff
changeset
|
543 "setswitchinterval(n)\n\ |
|
fdd6484f1210
Merge in the new GIL.
Antoine Pitrou <solipsis@pitrou.net>
parents:
55611
diff
changeset
|
544 \n\ |
|
fdd6484f1210
Merge in the new GIL.
Antoine Pitrou <solipsis@pitrou.net>
parents:
55611
diff
changeset
|
545 Set the ideal thread switching delay inside the Python interpreter\n\ |
|
fdd6484f1210
Merge in the new GIL.
Antoine Pitrou <solipsis@pitrou.net>
parents:
55611
diff
changeset
|
546 The actual frequency of switching threads can be lower if the\n\ |
|
fdd6484f1210
Merge in the new GIL.
Antoine Pitrou <solipsis@pitrou.net>
parents:
55611
diff
changeset
|
547 interpreter executes long sequences of uninterruptible code\n\ |
|
fdd6484f1210
Merge in the new GIL.
Antoine Pitrou <solipsis@pitrou.net>
parents:
55611
diff
changeset
|
548 (this is implementation-specific and workload-dependent).\n\ |
|
fdd6484f1210
Merge in the new GIL.
Antoine Pitrou <solipsis@pitrou.net>
parents:
55611
diff
changeset
|
549 \n\ |
|
fdd6484f1210
Merge in the new GIL.
Antoine Pitrou <solipsis@pitrou.net>
parents:
55611
diff
changeset
|
550 The parameter must represent the desired switching delay in seconds\n\ |
|
fdd6484f1210
Merge in the new GIL.
Antoine Pitrou <solipsis@pitrou.net>
parents:
55611
diff
changeset
|
551 A typical value is 0.005 (5 milliseconds)." |
|
fdd6484f1210
Merge in the new GIL.
Antoine Pitrou <solipsis@pitrou.net>
parents:
55611
diff
changeset
|
552 ); |
|
fdd6484f1210
Merge in the new GIL.
Antoine Pitrou <solipsis@pitrou.net>
parents:
55611
diff
changeset
|
553 |
|
fdd6484f1210
Merge in the new GIL.
Antoine Pitrou <solipsis@pitrou.net>
parents:
55611
diff
changeset
|
554 static PyObject * |
|
fdd6484f1210
Merge in the new GIL.
Antoine Pitrou <solipsis@pitrou.net>
parents:
55611
diff
changeset
|
555 sys_getswitchinterval(PyObject *self, PyObject *args) |
|
fdd6484f1210
Merge in the new GIL.
Antoine Pitrou <solipsis@pitrou.net>
parents:
55611
diff
changeset
|
556 { |
|
61466
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60889
diff
changeset
|
557 return PyFloat_FromDouble(1e-6 * _PyEval_GetSwitchInterval()); |
|
57175
fdd6484f1210
Merge in the new GIL.
Antoine Pitrou <solipsis@pitrou.net>
parents:
55611
diff
changeset
|
558 } |
|
fdd6484f1210
Merge in the new GIL.
Antoine Pitrou <solipsis@pitrou.net>
parents:
55611
diff
changeset
|
559 |
|
fdd6484f1210
Merge in the new GIL.
Antoine Pitrou <solipsis@pitrou.net>
parents:
55611
diff
changeset
|
560 PyDoc_STRVAR(getswitchinterval_doc, |
|
fdd6484f1210
Merge in the new GIL.
Antoine Pitrou <solipsis@pitrou.net>
parents:
55611
diff
changeset
|
561 "getswitchinterval() -> current thread switch interval; see setswitchinterval()." |
|
fdd6484f1210
Merge in the new GIL.
Antoine Pitrou <solipsis@pitrou.net>
parents:
55611
diff
changeset
|
562 ); |
|
fdd6484f1210
Merge in the new GIL.
Antoine Pitrou <solipsis@pitrou.net>
parents:
55611
diff
changeset
|
563 |
|
fdd6484f1210
Merge in the new GIL.
Antoine Pitrou <solipsis@pitrou.net>
parents:
55611
diff
changeset
|
564 #endif /* WITH_THREAD */ |
|
fdd6484f1210
Merge in the new GIL.
Antoine Pitrou <solipsis@pitrou.net>
parents:
55611
diff
changeset
|
565 |
|
32301
41c59d80bbc5
Patch #510695: Add TSC profiling for the VM.
Martin v. Löwis <martin@v.loewis.de>
parents:
31797
diff
changeset
|
566 #ifdef WITH_TSC |
|
41c59d80bbc5
Patch #510695: Add TSC profiling for the VM.
Martin v. Löwis <martin@v.loewis.de>
parents:
31797
diff
changeset
|
567 static PyObject * |
|
41c59d80bbc5
Patch #510695: Add TSC profiling for the VM.
Martin v. Löwis <martin@v.loewis.de>
parents:
31797
diff
changeset
|
568 sys_settscdump(PyObject *self, PyObject *args) |
|
41c59d80bbc5
Patch #510695: Add TSC profiling for the VM.
Martin v. Löwis <martin@v.loewis.de>
parents:
31797
diff
changeset
|
569 { |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
570 int bool; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
571 PyThreadState *tstate = PyThreadState_Get(); |
|
32301
41c59d80bbc5
Patch #510695: Add TSC profiling for the VM.
Martin v. Löwis <martin@v.loewis.de>
parents:
31797
diff
changeset
|
572 |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
573 if (!PyArg_ParseTuple(args, "i:settscdump", &bool)) |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
574 return NULL; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
575 if (bool) |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
576 tstate->interp->tscdump = 1; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
577 else |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
578 tstate->interp->tscdump = 0; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
579 Py_INCREF(Py_None); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
580 return Py_None; |
|
36211
6d743e5baf14
Trimmed trailing whitespace.
Tim Peters <tim.peters@gmail.com>
parents:
36207
diff
changeset
|
581 |
|
32301
41c59d80bbc5
Patch #510695: Add TSC profiling for the VM.
Martin v. Löwis <martin@v.loewis.de>
parents:
31797
diff
changeset
|
582 } |
|
41c59d80bbc5
Patch #510695: Add TSC profiling for the VM.
Martin v. Löwis <martin@v.loewis.de>
parents:
31797
diff
changeset
|
583 |
|
36211
6d743e5baf14
Trimmed trailing whitespace.
Tim Peters <tim.peters@gmail.com>
parents:
36207
diff
changeset
|
584 PyDoc_STRVAR(settscdump_doc, |
|
32301
41c59d80bbc5
Patch #510695: Add TSC profiling for the VM.
Martin v. Löwis <martin@v.loewis.de>
parents:
31797
diff
changeset
|
585 "settscdump(bool)\n\ |
|
41c59d80bbc5
Patch #510695: Add TSC profiling for the VM.
Martin v. Löwis <martin@v.loewis.de>
parents:
31797
diff
changeset
|
586 \n\ |
|
41c59d80bbc5
Patch #510695: Add TSC profiling for the VM.
Martin v. Löwis <martin@v.loewis.de>
parents:
31797
diff
changeset
|
587 If true, tell the Python interpreter to dump VM measurements to\n\ |
|
41c59d80bbc5
Patch #510695: Add TSC profiling for the VM.
Martin v. Löwis <martin@v.loewis.de>
parents:
31797
diff
changeset
|
588 stderr. If false, turn off dump. The measurements are based on the\n\ |
| 33104 | 589 processor's time-stamp counter." |
|
36211
6d743e5baf14
Trimmed trailing whitespace.
Tim Peters <tim.peters@gmail.com>
parents:
36207
diff
changeset
|
590 ); |
|
32344
748129e6e108
Remove compiler warning
Neal Norwitz <nnorwitz@gmail.com>
parents:
32301
diff
changeset
|
591 #endif /* TSC */ |
|
32301
41c59d80bbc5
Patch #510695: Add TSC profiling for the VM.
Martin v. Löwis <martin@v.loewis.de>
parents:
31797
diff
changeset
|
592 |
|
29765
e9e5832d706f
New function sys.getcheckinterval(), to complement setcheckinterval().
Tim Peters <tim.peters@gmail.com>
parents:
29065
diff
changeset
|
593 static PyObject * |
|
14308
b8b3f76ffd51
add user-modifiable recursion_limit
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
14295
diff
changeset
|
594 sys_setrecursionlimit(PyObject *self, PyObject *args) |
|
b8b3f76ffd51
add user-modifiable recursion_limit
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
14295
diff
changeset
|
595 { |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
596 int new_limit; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
597 if (!PyArg_ParseTuple(args, "i:setrecursionlimit", &new_limit)) |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
598 return NULL; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
599 if (new_limit <= 0) { |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
600 PyErr_SetString(PyExc_ValueError, |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
601 "recursion limit must be positive"); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
602 return NULL; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
603 } |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
604 Py_SetRecursionLimit(new_limit); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
605 Py_INCREF(Py_None); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
606 return Py_None; |
|
14308
b8b3f76ffd51
add user-modifiable recursion_limit
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
14295
diff
changeset
|
607 } |
|
b8b3f76ffd51
add user-modifiable recursion_limit
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
14295
diff
changeset
|
608 |
|
61873
0bc8ffe6ba9a
Issue #8188: Introduce a new scheme for computing hashes of numbers
Mark Dickinson <dickinsm@gmail.com>
parents:
61790
diff
changeset
|
609 static PyTypeObject Hash_InfoType; |
|
0bc8ffe6ba9a
Issue #8188: Introduce a new scheme for computing hashes of numbers
Mark Dickinson <dickinsm@gmail.com>
parents:
61790
diff
changeset
|
610 |
|
0bc8ffe6ba9a
Issue #8188: Introduce a new scheme for computing hashes of numbers
Mark Dickinson <dickinsm@gmail.com>
parents:
61790
diff
changeset
|
611 PyDoc_STRVAR(hash_info_doc, |
|
0bc8ffe6ba9a
Issue #8188: Introduce a new scheme for computing hashes of numbers
Mark Dickinson <dickinsm@gmail.com>
parents:
61790
diff
changeset
|
612 "hash_info\n\ |
|
0bc8ffe6ba9a
Issue #8188: Introduce a new scheme for computing hashes of numbers
Mark Dickinson <dickinsm@gmail.com>
parents:
61790
diff
changeset
|
613 \n\ |
|
0bc8ffe6ba9a
Issue #8188: Introduce a new scheme for computing hashes of numbers
Mark Dickinson <dickinsm@gmail.com>
parents:
61790
diff
changeset
|
614 A struct sequence providing parameters used for computing\n\ |
|
0bc8ffe6ba9a
Issue #8188: Introduce a new scheme for computing hashes of numbers
Mark Dickinson <dickinsm@gmail.com>
parents:
61790
diff
changeset
|
615 numeric hashes. The attributes are read only."); |
|
0bc8ffe6ba9a
Issue #8188: Introduce a new scheme for computing hashes of numbers
Mark Dickinson <dickinsm@gmail.com>
parents:
61790
diff
changeset
|
616 |
|
0bc8ffe6ba9a
Issue #8188: Introduce a new scheme for computing hashes of numbers
Mark Dickinson <dickinsm@gmail.com>
parents:
61790
diff
changeset
|
617 static PyStructSequence_Field hash_info_fields[] = { |
|
0bc8ffe6ba9a
Issue #8188: Introduce a new scheme for computing hashes of numbers
Mark Dickinson <dickinsm@gmail.com>
parents:
61790
diff
changeset
|
618 {"width", "width of the type used for hashing, in bits"}, |
|
0bc8ffe6ba9a
Issue #8188: Introduce a new scheme for computing hashes of numbers
Mark Dickinson <dickinsm@gmail.com>
parents:
61790
diff
changeset
|
619 {"modulus", "prime number giving the modulus on which the hash " |
|
0bc8ffe6ba9a
Issue #8188: Introduce a new scheme for computing hashes of numbers
Mark Dickinson <dickinsm@gmail.com>
parents:
61790
diff
changeset
|
620 "function is based"}, |
|
0bc8ffe6ba9a
Issue #8188: Introduce a new scheme for computing hashes of numbers
Mark Dickinson <dickinsm@gmail.com>
parents:
61790
diff
changeset
|
621 {"inf", "value to be used for hash of a positive infinity"}, |
|
0bc8ffe6ba9a
Issue #8188: Introduce a new scheme for computing hashes of numbers
Mark Dickinson <dickinsm@gmail.com>
parents:
61790
diff
changeset
|
622 {"nan", "value to be used for hash of a nan"}, |
|
0bc8ffe6ba9a
Issue #8188: Introduce a new scheme for computing hashes of numbers
Mark Dickinson <dickinsm@gmail.com>
parents:
61790
diff
changeset
|
623 {"imag", "multiplier used for the imaginary part of a complex number"}, |
|
0bc8ffe6ba9a
Issue #8188: Introduce a new scheme for computing hashes of numbers
Mark Dickinson <dickinsm@gmail.com>
parents:
61790
diff
changeset
|
624 {NULL, NULL} |
|
0bc8ffe6ba9a
Issue #8188: Introduce a new scheme for computing hashes of numbers
Mark Dickinson <dickinsm@gmail.com>
parents:
61790
diff
changeset
|
625 }; |
|
0bc8ffe6ba9a
Issue #8188: Introduce a new scheme for computing hashes of numbers
Mark Dickinson <dickinsm@gmail.com>
parents:
61790
diff
changeset
|
626 |
|
0bc8ffe6ba9a
Issue #8188: Introduce a new scheme for computing hashes of numbers
Mark Dickinson <dickinsm@gmail.com>
parents:
61790
diff
changeset
|
627 static PyStructSequence_Desc hash_info_desc = { |
|
0bc8ffe6ba9a
Issue #8188: Introduce a new scheme for computing hashes of numbers
Mark Dickinson <dickinsm@gmail.com>
parents:
61790
diff
changeset
|
628 "sys.hash_info", |
|
0bc8ffe6ba9a
Issue #8188: Introduce a new scheme for computing hashes of numbers
Mark Dickinson <dickinsm@gmail.com>
parents:
61790
diff
changeset
|
629 hash_info_doc, |
|
0bc8ffe6ba9a
Issue #8188: Introduce a new scheme for computing hashes of numbers
Mark Dickinson <dickinsm@gmail.com>
parents:
61790
diff
changeset
|
630 hash_info_fields, |
|
0bc8ffe6ba9a
Issue #8188: Introduce a new scheme for computing hashes of numbers
Mark Dickinson <dickinsm@gmail.com>
parents:
61790
diff
changeset
|
631 5, |
|
0bc8ffe6ba9a
Issue #8188: Introduce a new scheme for computing hashes of numbers
Mark Dickinson <dickinsm@gmail.com>
parents:
61790
diff
changeset
|
632 }; |
|
0bc8ffe6ba9a
Issue #8188: Introduce a new scheme for computing hashes of numbers
Mark Dickinson <dickinsm@gmail.com>
parents:
61790
diff
changeset
|
633 |
|
62828
1f37d082a9aa
- sysmodule.c (get_hash_info): Define as static function.
Matthias Klose <doko@ubuntu.com>
parents:
62189
diff
changeset
|
634 static PyObject * |
|
61873
0bc8ffe6ba9a
Issue #8188: Introduce a new scheme for computing hashes of numbers
Mark Dickinson <dickinsm@gmail.com>
parents:
61790
diff
changeset
|
635 get_hash_info(void) |
|
0bc8ffe6ba9a
Issue #8188: Introduce a new scheme for computing hashes of numbers
Mark Dickinson <dickinsm@gmail.com>
parents:
61790
diff
changeset
|
636 { |
|
0bc8ffe6ba9a
Issue #8188: Introduce a new scheme for computing hashes of numbers
Mark Dickinson <dickinsm@gmail.com>
parents:
61790
diff
changeset
|
637 PyObject *hash_info; |
|
0bc8ffe6ba9a
Issue #8188: Introduce a new scheme for computing hashes of numbers
Mark Dickinson <dickinsm@gmail.com>
parents:
61790
diff
changeset
|
638 int field = 0; |
|
0bc8ffe6ba9a
Issue #8188: Introduce a new scheme for computing hashes of numbers
Mark Dickinson <dickinsm@gmail.com>
parents:
61790
diff
changeset
|
639 hash_info = PyStructSequence_New(&Hash_InfoType); |
|
0bc8ffe6ba9a
Issue #8188: Introduce a new scheme for computing hashes of numbers
Mark Dickinson <dickinsm@gmail.com>
parents:
61790
diff
changeset
|
640 if (hash_info == NULL) |
|
0bc8ffe6ba9a
Issue #8188: Introduce a new scheme for computing hashes of numbers
Mark Dickinson <dickinsm@gmail.com>
parents:
61790
diff
changeset
|
641 return NULL; |
|
0bc8ffe6ba9a
Issue #8188: Introduce a new scheme for computing hashes of numbers
Mark Dickinson <dickinsm@gmail.com>
parents:
61790
diff
changeset
|
642 PyStructSequence_SET_ITEM(hash_info, field++, |
|
65494
e8969fb822fc
make hashes always the size of pointers; introduce Py_hash_t #9778
Benjamin Peterson <benjamin@python.org>
parents:
65389
diff
changeset
|
643 PyLong_FromLong(8*sizeof(Py_hash_t))); |
|
61873
0bc8ffe6ba9a
Issue #8188: Introduce a new scheme for computing hashes of numbers
Mark Dickinson <dickinsm@gmail.com>
parents:
61790
diff
changeset
|
644 PyStructSequence_SET_ITEM(hash_info, field++, |
|
65603
be8ae6b17539
follow up to #9778: define and use an unsigned hash type
Benjamin Peterson <benjamin@python.org>
parents:
65575
diff
changeset
|
645 PyLong_FromSsize_t(_PyHASH_MODULUS)); |
|
61873
0bc8ffe6ba9a
Issue #8188: Introduce a new scheme for computing hashes of numbers
Mark Dickinson <dickinsm@gmail.com>
parents:
61790
diff
changeset
|
646 PyStructSequence_SET_ITEM(hash_info, field++, |
|
0bc8ffe6ba9a
Issue #8188: Introduce a new scheme for computing hashes of numbers
Mark Dickinson <dickinsm@gmail.com>
parents:
61790
diff
changeset
|
647 PyLong_FromLong(_PyHASH_INF)); |
|
0bc8ffe6ba9a
Issue #8188: Introduce a new scheme for computing hashes of numbers
Mark Dickinson <dickinsm@gmail.com>
parents:
61790
diff
changeset
|
648 PyStructSequence_SET_ITEM(hash_info, field++, |
|
0bc8ffe6ba9a
Issue #8188: Introduce a new scheme for computing hashes of numbers
Mark Dickinson <dickinsm@gmail.com>
parents:
61790
diff
changeset
|
649 PyLong_FromLong(_PyHASH_NAN)); |
|
0bc8ffe6ba9a
Issue #8188: Introduce a new scheme for computing hashes of numbers
Mark Dickinson <dickinsm@gmail.com>
parents:
61790
diff
changeset
|
650 PyStructSequence_SET_ITEM(hash_info, field++, |
|
0bc8ffe6ba9a
Issue #8188: Introduce a new scheme for computing hashes of numbers
Mark Dickinson <dickinsm@gmail.com>
parents:
61790
diff
changeset
|
651 PyLong_FromLong(_PyHASH_IMAG)); |
|
0bc8ffe6ba9a
Issue #8188: Introduce a new scheme for computing hashes of numbers
Mark Dickinson <dickinsm@gmail.com>
parents:
61790
diff
changeset
|
652 if (PyErr_Occurred()) { |
|
0bc8ffe6ba9a
Issue #8188: Introduce a new scheme for computing hashes of numbers
Mark Dickinson <dickinsm@gmail.com>
parents:
61790
diff
changeset
|
653 Py_CLEAR(hash_info); |
|
0bc8ffe6ba9a
Issue #8188: Introduce a new scheme for computing hashes of numbers
Mark Dickinson <dickinsm@gmail.com>
parents:
61790
diff
changeset
|
654 return NULL; |
|
0bc8ffe6ba9a
Issue #8188: Introduce a new scheme for computing hashes of numbers
Mark Dickinson <dickinsm@gmail.com>
parents:
61790
diff
changeset
|
655 } |
|
0bc8ffe6ba9a
Issue #8188: Introduce a new scheme for computing hashes of numbers
Mark Dickinson <dickinsm@gmail.com>
parents:
61790
diff
changeset
|
656 return hash_info; |
|
0bc8ffe6ba9a
Issue #8188: Introduce a new scheme for computing hashes of numbers
Mark Dickinson <dickinsm@gmail.com>
parents:
61790
diff
changeset
|
657 } |
|
0bc8ffe6ba9a
Issue #8188: Introduce a new scheme for computing hashes of numbers
Mark Dickinson <dickinsm@gmail.com>
parents:
61790
diff
changeset
|
658 |
|
0bc8ffe6ba9a
Issue #8188: Introduce a new scheme for computing hashes of numbers
Mark Dickinson <dickinsm@gmail.com>
parents:
61790
diff
changeset
|
659 |
|
23746
43ddcdcd3c71
Patch #505375: Make doc strings optional.
Martin v. Löwis <martin@v.loewis.de>
parents:
22604
diff
changeset
|
660 PyDoc_STRVAR(setrecursionlimit_doc, |
|
14308
b8b3f76ffd51
add user-modifiable recursion_limit
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
14295
diff
changeset
|
661 "setrecursionlimit(n)\n\ |
|
b8b3f76ffd51
add user-modifiable recursion_limit
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
14295
diff
changeset
|
662 \n\ |
|
b8b3f76ffd51
add user-modifiable recursion_limit
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
14295
diff
changeset
|
663 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
|
664 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
|
665 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
|
666 dependent." |
|
43ddcdcd3c71
Patch #505375: Make doc strings optional.
Martin v. Löwis <martin@v.loewis.de>
parents:
22604
diff
changeset
|
667 ); |
|
14308
b8b3f76ffd51
add user-modifiable recursion_limit
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
14295
diff
changeset
|
668 |
|
b8b3f76ffd51
add user-modifiable recursion_limit
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
14295
diff
changeset
|
669 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
|
670 sys_getrecursionlimit(PyObject *self) |
|
14308
b8b3f76ffd51
add user-modifiable recursion_limit
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
14295
diff
changeset
|
671 { |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
672 return PyLong_FromLong(Py_GetRecursionLimit()); |
|
14308
b8b3f76ffd51
add user-modifiable recursion_limit
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
14295
diff
changeset
|
673 } |
|
b8b3f76ffd51
add user-modifiable recursion_limit
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
14295
diff
changeset
|
674 |
|
23746
43ddcdcd3c71
Patch #505375: Make doc strings optional.
Martin v. Löwis <martin@v.loewis.de>
parents:
22604
diff
changeset
|
675 PyDoc_STRVAR(getrecursionlimit_doc, |
|
14308
b8b3f76ffd51
add user-modifiable recursion_limit
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
14295
diff
changeset
|
676 "getrecursionlimit()\n\ |
|
b8b3f76ffd51
add user-modifiable recursion_limit
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
14295
diff
changeset
|
677 \n\ |
|
b8b3f76ffd51
add user-modifiable recursion_limit
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
14295
diff
changeset
|
678 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
|
679 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
|
680 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
|
681 ); |
|
14308
b8b3f76ffd51
add user-modifiable recursion_limit
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
14295
diff
changeset
|
682 |
|
25666
4a825b902310
Add os.path.supports_unicode_filenames for all platforms,
Mark Hammond <mhammond@skippinet.com.au>
parents:
25108
diff
changeset
|
683 #ifdef MS_WINDOWS |
|
4a825b902310
Add os.path.supports_unicode_filenames for all platforms,
Mark Hammond <mhammond@skippinet.com.au>
parents:
25108
diff
changeset
|
684 PyDoc_STRVAR(getwindowsversion_doc, |
|
4a825b902310
Add os.path.supports_unicode_filenames for all platforms,
Mark Hammond <mhammond@skippinet.com.au>
parents:
25108
diff
changeset
|
685 "getwindowsversion()\n\ |
|
4a825b902310
Add os.path.supports_unicode_filenames for all platforms,
Mark Hammond <mhammond@skippinet.com.au>
parents:
25108
diff
changeset
|
686 \n\ |
|
58507
7379cf70fd60
Merged revisions 77763 via svnmerge from
Eric Smith <eric@trueblade.com>
parents:
57181
diff
changeset
|
687 Return information about the running version of Windows as a named tuple.\n\ |
|
7379cf70fd60
Merged revisions 77763 via svnmerge from
Eric Smith <eric@trueblade.com>
parents:
57181
diff
changeset
|
688 The members are named: major, minor, build, platform, service_pack,\n\ |
|
7379cf70fd60
Merged revisions 77763 via svnmerge from
Eric Smith <eric@trueblade.com>
parents:
57181
diff
changeset
|
689 service_pack_major, service_pack_minor, suite_mask, and product_type. For\n\ |
|
68489
81d7f78a633a
#11515: Merge with 3.1.
Ezio Melotti <ezio.melotti@gmail.com>
parents:
68276
diff
changeset
|
690 backward compatibility, only the first 5 items are available by indexing.\n\ |
|
58507
7379cf70fd60
Merged revisions 77763 via svnmerge from
Eric Smith <eric@trueblade.com>
parents:
57181
diff
changeset
|
691 All elements are numbers, except service_pack which is a string. Platform\n\ |
|
7379cf70fd60
Merged revisions 77763 via svnmerge from
Eric Smith <eric@trueblade.com>
parents:
57181
diff
changeset
|
692 may be 0 for win32s, 1 for Windows 9x/ME, 2 for Windows NT/2000/XP/Vista/7,\n\ |
|
7379cf70fd60
Merged revisions 77763 via svnmerge from
Eric Smith <eric@trueblade.com>
parents:
57181
diff
changeset
|
693 3 for Windows CE. Product_type may be 1 for a workstation, 2 for a domain\n\ |
|
7379cf70fd60
Merged revisions 77763 via svnmerge from
Eric Smith <eric@trueblade.com>
parents:
57181
diff
changeset
|
694 controller, 3 for a server." |
|
25666
4a825b902310
Add os.path.supports_unicode_filenames for all platforms,
Mark Hammond <mhammond@skippinet.com.au>
parents:
25108
diff
changeset
|
695 ); |
|
4a825b902310
Add os.path.supports_unicode_filenames for all platforms,
Mark Hammond <mhammond@skippinet.com.au>
parents:
25108
diff
changeset
|
696 |
|
58507
7379cf70fd60
Merged revisions 77763 via svnmerge from
Eric Smith <eric@trueblade.com>
parents:
57181
diff
changeset
|
697 static PyTypeObject WindowsVersionType = {0, 0, 0, 0, 0, 0}; |
|
7379cf70fd60
Merged revisions 77763 via svnmerge from
Eric Smith <eric@trueblade.com>
parents:
57181
diff
changeset
|
698 |
|
7379cf70fd60
Merged revisions 77763 via svnmerge from
Eric Smith <eric@trueblade.com>
parents:
57181
diff
changeset
|
699 static PyStructSequence_Field windows_version_fields[] = { |
|
61466
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60889
diff
changeset
|
700 {"major", "Major version number"}, |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60889
diff
changeset
|
701 {"minor", "Minor version number"}, |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60889
diff
changeset
|
702 {"build", "Build number"}, |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60889
diff
changeset
|
703 {"platform", "Operating system platform"}, |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60889
diff
changeset
|
704 {"service_pack", "Latest Service Pack installed on the system"}, |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60889
diff
changeset
|
705 {"service_pack_major", "Service Pack major version number"}, |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60889
diff
changeset
|
706 {"service_pack_minor", "Service Pack minor version number"}, |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60889
diff
changeset
|
707 {"suite_mask", "Bit mask identifying available product suites"}, |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60889
diff
changeset
|
708 {"product_type", "System product type"}, |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60889
diff
changeset
|
709 {0} |
|
58507
7379cf70fd60
Merged revisions 77763 via svnmerge from
Eric Smith <eric@trueblade.com>
parents:
57181
diff
changeset
|
710 }; |
|
7379cf70fd60
Merged revisions 77763 via svnmerge from
Eric Smith <eric@trueblade.com>
parents:
57181
diff
changeset
|
711 |
|
7379cf70fd60
Merged revisions 77763 via svnmerge from
Eric Smith <eric@trueblade.com>
parents:
57181
diff
changeset
|
712 static PyStructSequence_Desc windows_version_desc = { |
|
61466
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60889
diff
changeset
|
713 "sys.getwindowsversion", /* name */ |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60889
diff
changeset
|
714 getwindowsversion_doc, /* doc */ |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60889
diff
changeset
|
715 windows_version_fields, /* fields */ |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60889
diff
changeset
|
716 5 /* For backward compatibility, |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60889
diff
changeset
|
717 only the first 5 items are accessible |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60889
diff
changeset
|
718 via indexing, the rest are name only */ |
|
58507
7379cf70fd60
Merged revisions 77763 via svnmerge from
Eric Smith <eric@trueblade.com>
parents:
57181
diff
changeset
|
719 }; |
|
7379cf70fd60
Merged revisions 77763 via svnmerge from
Eric Smith <eric@trueblade.com>
parents:
57181
diff
changeset
|
720 |
|
25666
4a825b902310
Add os.path.supports_unicode_filenames for all platforms,
Mark Hammond <mhammond@skippinet.com.au>
parents:
25108
diff
changeset
|
721 static PyObject * |
|
4a825b902310
Add os.path.supports_unicode_filenames for all platforms,
Mark Hammond <mhammond@skippinet.com.au>
parents:
25108
diff
changeset
|
722 sys_getwindowsversion(PyObject *self) |
|
4a825b902310
Add os.path.supports_unicode_filenames for all platforms,
Mark Hammond <mhammond@skippinet.com.au>
parents:
25108
diff
changeset
|
723 { |
|
61466
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60889
diff
changeset
|
724 PyObject *version; |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60889
diff
changeset
|
725 int pos = 0; |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60889
diff
changeset
|
726 OSVERSIONINFOEX ver; |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
727 ver.dwOSVersionInfoSize = sizeof(ver); |
|
61466
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60889
diff
changeset
|
728 if (!GetVersionEx((OSVERSIONINFO*) &ver)) |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
729 return PyErr_SetFromWindowsErr(0); |
|
58507
7379cf70fd60
Merged revisions 77763 via svnmerge from
Eric Smith <eric@trueblade.com>
parents:
57181
diff
changeset
|
730 |
|
61466
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60889
diff
changeset
|
731 version = PyStructSequence_New(&WindowsVersionType); |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60889
diff
changeset
|
732 if (version == NULL) |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60889
diff
changeset
|
733 return NULL; |
|
58507
7379cf70fd60
Merged revisions 77763 via svnmerge from
Eric Smith <eric@trueblade.com>
parents:
57181
diff
changeset
|
734 |
|
61466
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60889
diff
changeset
|
735 PyStructSequence_SET_ITEM(version, pos++, PyLong_FromLong(ver.dwMajorVersion)); |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60889
diff
changeset
|
736 PyStructSequence_SET_ITEM(version, pos++, PyLong_FromLong(ver.dwMinorVersion)); |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60889
diff
changeset
|
737 PyStructSequence_SET_ITEM(version, pos++, PyLong_FromLong(ver.dwBuildNumber)); |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60889
diff
changeset
|
738 PyStructSequence_SET_ITEM(version, pos++, PyLong_FromLong(ver.dwPlatformId)); |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60889
diff
changeset
|
739 PyStructSequence_SET_ITEM(version, pos++, PyUnicode_FromString(ver.szCSDVersion)); |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60889
diff
changeset
|
740 PyStructSequence_SET_ITEM(version, pos++, PyLong_FromLong(ver.wServicePackMajor)); |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60889
diff
changeset
|
741 PyStructSequence_SET_ITEM(version, pos++, PyLong_FromLong(ver.wServicePackMinor)); |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60889
diff
changeset
|
742 PyStructSequence_SET_ITEM(version, pos++, PyLong_FromLong(ver.wSuiteMask)); |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60889
diff
changeset
|
743 PyStructSequence_SET_ITEM(version, pos++, PyLong_FromLong(ver.wProductType)); |
|
58507
7379cf70fd60
Merged revisions 77763 via svnmerge from
Eric Smith <eric@trueblade.com>
parents:
57181
diff
changeset
|
744 |
|
61466
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60889
diff
changeset
|
745 return version; |
|
25666
4a825b902310
Add os.path.supports_unicode_filenames for all platforms,
Mark Hammond <mhammond@skippinet.com.au>
parents:
25108
diff
changeset
|
746 } |
|
4a825b902310
Add os.path.supports_unicode_filenames for all platforms,
Mark Hammond <mhammond@skippinet.com.au>
parents:
25108
diff
changeset
|
747 |
|
4a825b902310
Add os.path.supports_unicode_filenames for all platforms,
Mark Hammond <mhammond@skippinet.com.au>
parents:
25108
diff
changeset
|
748 #endif /* MS_WINDOWS */ |
|
4a825b902310
Add os.path.supports_unicode_filenames for all platforms,
Mark Hammond <mhammond@skippinet.com.au>
parents:
25108
diff
changeset
|
749 |
|
18689
064de84385ca
Patch #412229: Add functions sys.getdlopenflags and sys.setdlopenflags.
Martin v. Löwis <martin@v.loewis.de>
parents:
18326
diff
changeset
|
750 #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
|
751 static PyObject * |
|
064de84385ca
Patch #412229: Add functions sys.getdlopenflags and sys.setdlopenflags.
Martin v. Löwis <martin@v.loewis.de>
parents:
18326
diff
changeset
|
752 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
|
753 { |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
754 int new_val; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
755 PyThreadState *tstate = PyThreadState_GET(); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
756 if (!PyArg_ParseTuple(args, "i:setdlopenflags", &new_val)) |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
757 return NULL; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
758 if (!tstate) |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
759 return NULL; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
760 tstate->interp->dlopenflags = new_val; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
761 Py_INCREF(Py_None); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
762 return Py_None; |
|
18689
064de84385ca
Patch #412229: Add functions sys.getdlopenflags and sys.setdlopenflags.
Martin v. Löwis <martin@v.loewis.de>
parents:
18326
diff
changeset
|
763 } |
|
064de84385ca
Patch #412229: Add functions sys.getdlopenflags and sys.setdlopenflags.
Martin v. Löwis <martin@v.loewis.de>
parents:
18326
diff
changeset
|
764 |
|
23746
43ddcdcd3c71
Patch #505375: Make doc strings optional.
Martin v. Löwis <martin@v.loewis.de>
parents:
22604
diff
changeset
|
765 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
|
766 "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
|
767 \n\ |
|
55611
4d38e51e7cdc
Merged revisions 74062 via svnmerge from
Georg Brandl <georg@python.org>
parents:
54326
diff
changeset
|
768 Set the flags used by the interpreter for dlopen calls, such as when the\n\ |
|
4d38e51e7cdc
Merged revisions 74062 via svnmerge from
Georg Brandl <georg@python.org>
parents:
54326
diff
changeset
|
769 interpreter loads extension modules. Among other things, this will enable\n\ |
|
4d38e51e7cdc
Merged revisions 74062 via svnmerge from
Georg Brandl <georg@python.org>
parents:
54326
diff
changeset
|
770 a lazy resolving of symbols when importing a module, if called as\n\ |
|
4d38e51e7cdc
Merged revisions 74062 via svnmerge from
Georg Brandl <georg@python.org>
parents:
54326
diff
changeset
|
771 sys.setdlopenflags(0). To share symbols across extension modules, call as\n\ |
|
4d38e51e7cdc
Merged revisions 74062 via svnmerge from
Georg Brandl <georg@python.org>
parents:
54326
diff
changeset
|
772 sys.setdlopenflags(ctypes.RTLD_GLOBAL). Symbolic names for the flag modules\n\ |
|
4d38e51e7cdc
Merged revisions 74062 via svnmerge from
Georg Brandl <georg@python.org>
parents:
54326
diff
changeset
|
773 can be either found in the ctypes module, or in the DLFCN module. If DLFCN\n\ |
|
4d38e51e7cdc
Merged revisions 74062 via svnmerge from
Georg Brandl <georg@python.org>
parents:
54326
diff
changeset
|
774 is not available, it can be generated from /usr/include/dlfcn.h using the\n\ |
|
4d38e51e7cdc
Merged revisions 74062 via svnmerge from
Georg Brandl <georg@python.org>
parents:
54326
diff
changeset
|
775 h2py script."); |
|
18689
064de84385ca
Patch #412229: Add functions sys.getdlopenflags and sys.setdlopenflags.
Martin v. Löwis <martin@v.loewis.de>
parents:
18326
diff
changeset
|
776 |
|
064de84385ca
Patch #412229: Add functions sys.getdlopenflags and sys.setdlopenflags.
Martin v. Löwis <martin@v.loewis.de>
parents:
18326
diff
changeset
|
777 static PyObject * |
|
064de84385ca
Patch #412229: Add functions sys.getdlopenflags and sys.setdlopenflags.
Martin v. Löwis <martin@v.loewis.de>
parents:
18326
diff
changeset
|
778 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
|
779 { |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
780 PyThreadState *tstate = PyThreadState_GET(); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
781 if (!tstate) |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
782 return NULL; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
783 return PyLong_FromLong(tstate->interp->dlopenflags); |
|
18689
064de84385ca
Patch #412229: Add functions sys.getdlopenflags and sys.setdlopenflags.
Martin v. Löwis <martin@v.loewis.de>
parents:
18326
diff
changeset
|
784 } |
|
064de84385ca
Patch #412229: Add functions sys.getdlopenflags and sys.setdlopenflags.
Martin v. Löwis <martin@v.loewis.de>
parents:
18326
diff
changeset
|
785 |
|
23746
43ddcdcd3c71
Patch #505375: Make doc strings optional.
Martin v. Löwis <martin@v.loewis.de>
parents:
22604
diff
changeset
|
786 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
|
787 "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
|
788 \n\ |
|
55611
4d38e51e7cdc
Merged revisions 74062 via svnmerge from
Georg Brandl <georg@python.org>
parents:
54326
diff
changeset
|
789 Return the current value of the flags that are used for dlopen calls.\n\ |
|
4d38e51e7cdc
Merged revisions 74062 via svnmerge from
Georg Brandl <georg@python.org>
parents:
54326
diff
changeset
|
790 The flag constants are defined in the ctypes and DLFCN modules."); |
|
4d38e51e7cdc
Merged revisions 74062 via svnmerge from
Georg Brandl <georg@python.org>
parents:
54326
diff
changeset
|
791 |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
792 #endif /* HAVE_DLOPEN */ |
|
18689
064de84385ca
Patch #412229: Add functions sys.getdlopenflags and sys.setdlopenflags.
Martin v. Löwis <martin@v.loewis.de>
parents:
18326
diff
changeset
|
793 |
|
1013
a1ce5a949828
Add an optional interface to turn malloc debugging on and off.
Guido van Rossum <guido@python.org>
parents:
901
diff
changeset
|
794 #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
|
795 /* 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
|
796 #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
|
797 |
| 5372 | 798 static PyObject * |
|
13658
f79434ee41fa
Mass ANSIfication of function definitions. Doesn't cover all 'extern'
Thomas Wouters <thomas@python.org>
parents:
13447
diff
changeset
|
799 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
|
800 { |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
801 int flag; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
802 if (!PyArg_ParseTuple(args, "i:mdebug", &flag)) |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
803 return NULL; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
804 mallopt(M_DEBUG, flag); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
805 Py_INCREF(Py_None); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
806 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
|
807 } |
|
a1ce5a949828
Add an optional interface to turn malloc debugging on and off.
Guido van Rossum <guido@python.org>
parents:
901
diff
changeset
|
808 #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
|
809 |
| 5372 | 810 static PyObject * |
|
48467
c0c06ffaea83
Merged revisions 64842,64853,64856,64945 via svnmerge from
Robert Schuppenies <okkotonushi@googlemail.com>
parents:
47580
diff
changeset
|
811 sys_getsizeof(PyObject *self, PyObject *args, PyObject *kwds) |
|
47466
58f4b60773fe
Merged revisions 63856-63857,63859-63860 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
47464
diff
changeset
|
812 { |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
813 PyObject *res = NULL; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
814 static PyObject *str__sizeof__ = NULL, *gc_head_size = NULL; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
815 static char *kwlist[] = {"object", "default", 0}; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
816 PyObject *o, *dflt = NULL; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
817 PyObject *method; |
|
48467
c0c06ffaea83
Merged revisions 64842,64853,64856,64945 via svnmerge from
Robert Schuppenies <okkotonushi@googlemail.com>
parents:
47580
diff
changeset
|
818 |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
819 if (!PyArg_ParseTupleAndKeywords(args, kwds, "O|O:getsizeof", |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
820 kwlist, &o, &dflt)) |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
821 return NULL; |
|
47466
58f4b60773fe
Merged revisions 63856-63857,63859-63860 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
47464
diff
changeset
|
822 |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
823 /* Initialize static variable for GC head size */ |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
824 if (gc_head_size == NULL) { |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
825 gc_head_size = PyLong_FromSsize_t(sizeof(PyGC_Head)); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
826 if (gc_head_size == NULL) |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
827 return NULL; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
828 } |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
829 |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
830 /* Make sure the type is initialized. float gets initialized late */ |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
831 if (PyType_Ready(Py_TYPE(o)) < 0) |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
832 return NULL; |
|
53954
1b15a57e1f02
Merged revisions 72508 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
53185
diff
changeset
|
833 |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
834 method = _PyObject_LookupSpecial(o, "__sizeof__", |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
835 &str__sizeof__); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
836 if (method == NULL) { |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
837 if (!PyErr_Occurred()) |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
838 PyErr_Format(PyExc_TypeError, |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
839 "Type %.100s doesn't define __sizeof__", |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
840 Py_TYPE(o)->tp_name); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
841 } |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
842 else { |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
843 res = PyObject_CallFunctionObjArgs(method, NULL); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
844 Py_DECREF(method); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
845 } |
|
48467
c0c06ffaea83
Merged revisions 64842,64853,64856,64945 via svnmerge from
Robert Schuppenies <okkotonushi@googlemail.com>
parents:
47580
diff
changeset
|
846 |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
847 /* Has a default value been given */ |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
848 if ((res == NULL) && (dflt != NULL) && |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
849 PyErr_ExceptionMatches(PyExc_TypeError)) |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
850 { |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
851 PyErr_Clear(); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
852 Py_INCREF(dflt); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
853 return dflt; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
854 } |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
855 else if (res == NULL) |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
856 return res; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
857 |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
858 /* add gc_head size */ |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
859 if (PyObject_IS_GC(o)) { |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
860 PyObject *tmp = res; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
861 res = PyNumber_Add(tmp, gc_head_size); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
862 Py_DECREF(tmp); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
863 } |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
864 return res; |
|
47466
58f4b60773fe
Merged revisions 63856-63857,63859-63860 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
47464
diff
changeset
|
865 } |
|
58f4b60773fe
Merged revisions 63856-63857,63859-63860 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
47464
diff
changeset
|
866 |
|
58f4b60773fe
Merged revisions 63856-63857,63859-63860 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
47464
diff
changeset
|
867 PyDoc_STRVAR(getsizeof_doc, |
|
48467
c0c06ffaea83
Merged revisions 64842,64853,64856,64945 via svnmerge from
Robert Schuppenies <okkotonushi@googlemail.com>
parents:
47580
diff
changeset
|
868 "getsizeof(object, default) -> int\n\ |
|
47466
58f4b60773fe
Merged revisions 63856-63857,63859-63860 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
47464
diff
changeset
|
869 \n\ |
|
58f4b60773fe
Merged revisions 63856-63857,63859-63860 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
47464
diff
changeset
|
870 Return the size of object in bytes."); |
|
58f4b60773fe
Merged revisions 63856-63857,63859-63860 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
47464
diff
changeset
|
871 |
|
58f4b60773fe
Merged revisions 63856-63857,63859-63860 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
47464
diff
changeset
|
872 static PyObject * |
|
20655
7344687bf2c0
Convert getrefcount() to METH_O, and sys_excepthook() to use
Fred Drake <fdrake@acm.org>
parents:
20247
diff
changeset
|
873 sys_getrefcount(PyObject *self, PyObject *arg) |
|
3024
54aa87b1ccee
Implemented two new functions in sys:
Sjoerd Mullender <sjoerd@acm.org>
parents:
2810
diff
changeset
|
874 { |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
875 return PyLong_FromSsize_t(arg->ob_refcnt); |
|
3024
54aa87b1ccee
Implemented two new functions in sys:
Sjoerd Mullender <sjoerd@acm.org>
parents:
2810
diff
changeset
|
876 } |
|
54aa87b1ccee
Implemented two new functions in sys:
Sjoerd Mullender <sjoerd@acm.org>
parents:
2810
diff
changeset
|
877 |
|
24126
fdf80e04e4bb
Rearranged and added comments to object.h, to clarify many things
Tim Peters <tim.peters@gmail.com>
parents:
24071
diff
changeset
|
878 #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
|
879 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
|
880 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
|
881 { |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
882 return PyLong_FromSsize_t(_Py_GetRefTotal()); |
|
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
|
883 } |
|
37879
f731859e9b3b
Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents:
37042
diff
changeset
|
884 #endif /* 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
|
885 |
|
23746
43ddcdcd3c71
Patch #505375: Make doc strings optional.
Martin v. Löwis <martin@v.loewis.de>
parents:
22604
diff
changeset
|
886 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
|
887 "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
|
888 \n\ |
|
23947
37118b6e5f46
Fix the docstring for sys.getrefcount().
Fred Drake <fdrake@acm.org>
parents:
23746
diff
changeset
|
889 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
|
890 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
|
891 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
|
892 ); |
|
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
|
893 |
|
3024
54aa87b1ccee
Implemented two new functions in sys:
Sjoerd Mullender <sjoerd@acm.org>
parents:
2810
diff
changeset
|
894 #ifdef COUNT_ALLOCS |
|
54aa87b1ccee
Implemented two new functions in sys:
Sjoerd Mullender <sjoerd@acm.org>
parents:
2810
diff
changeset
|
895 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
|
896 sys_getcounts(PyObject *self) |
|
3024
54aa87b1ccee
Implemented two new functions in sys:
Sjoerd Mullender <sjoerd@acm.org>
parents:
2810
diff
changeset
|
897 { |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
898 extern PyObject *get_counts(void); |
|
3024
54aa87b1ccee
Implemented two new functions in sys:
Sjoerd Mullender <sjoerd@acm.org>
parents:
2810
diff
changeset
|
899 |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
900 return get_counts(); |
|
3024
54aa87b1ccee
Implemented two new functions in sys:
Sjoerd Mullender <sjoerd@acm.org>
parents:
2810
diff
changeset
|
901 } |
|
54aa87b1ccee
Implemented two new functions in sys:
Sjoerd Mullender <sjoerd@acm.org>
parents:
2810
diff
changeset
|
902 #endif |
|
54aa87b1ccee
Implemented two new functions in sys:
Sjoerd Mullender <sjoerd@acm.org>
parents:
2810
diff
changeset
|
903 |
|
23746
43ddcdcd3c71
Patch #505375: Make doc strings optional.
Martin v. Löwis <martin@v.loewis.de>
parents:
22604
diff
changeset
|
904 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
|
905 "_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
|
906 \n\ |
|
f0ca4c67957b
_getframe(): New sys module function for getting at the stack frame.
Barry Warsaw <barry@python.org>
parents:
14375
diff
changeset
|
907 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
|
908 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
|
909 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
|
910 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
|
911 \n\ |
|
f0ca4c67957b
_getframe(): New sys module function for getting at the stack frame.
Barry Warsaw <barry@python.org>
parents:
14375
diff
changeset
|
912 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
|
913 purposes only." |
|
43ddcdcd3c71
Patch #505375: Make doc strings optional.
Martin v. Löwis <martin@v.loewis.de>
parents:
22604
diff
changeset
|
914 ); |
|
15487
f0ca4c67957b
_getframe(): New sys module function for getting at the stack frame.
Barry Warsaw <barry@python.org>
parents:
14375
diff
changeset
|
915 |
|
f0ca4c67957b
_getframe(): New sys module function for getting at the stack frame.
Barry Warsaw <barry@python.org>
parents:
14375
diff
changeset
|
916 static PyObject * |
|
f0ca4c67957b
_getframe(): New sys module function for getting at the stack frame.
Barry Warsaw <barry@python.org>
parents:
14375
diff
changeset
|
917 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
|
918 { |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
919 PyFrameObject *f = PyThreadState_GET()->frame; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
920 int depth = -1; |
|
15487
f0ca4c67957b
_getframe(): New sys module function for getting at the stack frame.
Barry Warsaw <barry@python.org>
parents:
14375
diff
changeset
|
921 |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
922 if (!PyArg_ParseTuple(args, "|i:_getframe", &depth)) |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
923 return NULL; |
|
15487
f0ca4c67957b
_getframe(): New sys module function for getting at the stack frame.
Barry Warsaw <barry@python.org>
parents:
14375
diff
changeset
|
924 |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
925 while (depth > 0 && f != NULL) { |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
926 f = f->f_back; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
927 --depth; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
928 } |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
929 if (f == NULL) { |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
930 PyErr_SetString(PyExc_ValueError, |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
931 "call stack is not deep enough"); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
932 return NULL; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
933 } |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
934 Py_INCREF(f); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
935 return (PyObject*)f; |
|
15487
f0ca4c67957b
_getframe(): New sys module function for getting at the stack frame.
Barry Warsaw <barry@python.org>
parents:
14375
diff
changeset
|
936 } |
|
f0ca4c67957b
_getframe(): New sys module function for getting at the stack frame.
Barry Warsaw <barry@python.org>
parents:
14375
diff
changeset
|
937 |
|
39442
654c380cf8b9
Merged revisions 46753-51188 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
38673
diff
changeset
|
938 PyDoc_STRVAR(current_frames_doc, |
|
654c380cf8b9
Merged revisions 46753-51188 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
38673
diff
changeset
|
939 "_current_frames() -> dictionary\n\ |
|
654c380cf8b9
Merged revisions 46753-51188 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
38673
diff
changeset
|
940 \n\ |
|
654c380cf8b9
Merged revisions 46753-51188 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
38673
diff
changeset
|
941 Return a dictionary mapping each current thread T's thread id to T's\n\ |
|
654c380cf8b9
Merged revisions 46753-51188 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
38673
diff
changeset
|
942 current stack frame.\n\ |
|
654c380cf8b9
Merged revisions 46753-51188 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
38673
diff
changeset
|
943 \n\ |
|
654c380cf8b9
Merged revisions 46753-51188 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
38673
diff
changeset
|
944 This function should be used for specialized purposes only." |
|
654c380cf8b9
Merged revisions 46753-51188 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
38673
diff
changeset
|
945 ); |
|
654c380cf8b9
Merged revisions 46753-51188 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
38673
diff
changeset
|
946 |
|
654c380cf8b9
Merged revisions 46753-51188 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
38673
diff
changeset
|
947 static PyObject * |
|
654c380cf8b9
Merged revisions 46753-51188 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
38673
diff
changeset
|
948 sys_current_frames(PyObject *self, PyObject *noargs) |
|
654c380cf8b9
Merged revisions 46753-51188 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
38673
diff
changeset
|
949 { |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
950 return _PyThread_CurrentFrames(); |
|
39442
654c380cf8b9
Merged revisions 46753-51188 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
38673
diff
changeset
|
951 } |
|
654c380cf8b9
Merged revisions 46753-51188 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
38673
diff
changeset
|
952 |
|
28556
78395e5b4782
- New function sys.call_tracing() allows pdb to debug code
Guido van Rossum <guido@python.org>
parents:
28174
diff
changeset
|
953 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
|
954 "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
|
955 \n\ |
|
78395e5b4782
- New function sys.call_tracing() allows pdb to debug code
Guido van Rossum <guido@python.org>
parents:
28174
diff
changeset
|
956 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
|
957 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
|
958 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
|
959 ); |
|
78395e5b4782
- New function sys.call_tracing() allows pdb to debug code
Guido van Rossum <guido@python.org>
parents:
28174
diff
changeset
|
960 |
|
78395e5b4782
- New function sys.call_tracing() allows pdb to debug code
Guido van Rossum <guido@python.org>
parents:
28174
diff
changeset
|
961 static PyObject * |
|
78395e5b4782
- New function sys.call_tracing() allows pdb to debug code
Guido van Rossum <guido@python.org>
parents:
28174
diff
changeset
|
962 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
|
963 { |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
964 PyObject *func, *funcargs; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
965 if (!PyArg_ParseTuple(args, "OO!:call_tracing", &func, &PyTuple_Type, &funcargs)) |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
966 return NULL; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
967 return _PyEval_CallTracing(func, funcargs); |
|
28556
78395e5b4782
- New function sys.call_tracing() allows pdb to debug code
Guido van Rossum <guido@python.org>
parents:
28174
diff
changeset
|
968 } |
|
78395e5b4782
- New function sys.call_tracing() allows pdb to debug code
Guido van Rossum <guido@python.org>
parents:
28174
diff
changeset
|
969 |
|
27712
16856c9514e0
Small function call optimization and special build option for call stats.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
27156
diff
changeset
|
970 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
|
971 "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
|
972 \n\ |
|
16856c9514e0
Small function call optimization and special build option for call stats.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
27156
diff
changeset
|
973 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
|
974 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
|
975 \n\ |
|
16856c9514e0
Small function call optimization and special build option for call stats.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
27156
diff
changeset
|
976 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
|
977 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
|
978 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
|
979 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
|
980 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
|
981 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
|
982 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
|
983 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
|
984 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
|
985 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
|
986 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
|
987 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
|
988 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
|
989 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
|
990 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
|
991 ); |
|
15487
f0ca4c67957b
_getframe(): New sys module function for getting at the stack frame.
Barry Warsaw <barry@python.org>
parents:
14375
diff
changeset
|
992 |
|
37879
f731859e9b3b
Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents:
37042
diff
changeset
|
993 #ifdef __cplusplus |
|
f731859e9b3b
Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents:
37042
diff
changeset
|
994 extern "C" { |
|
f731859e9b3b
Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents:
37042
diff
changeset
|
995 #endif |
|
f731859e9b3b
Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents:
37042
diff
changeset
|
996 |
|
3585
4ed09a3c3201
TRACE_REFS -> Py_TRACE_REFS
Guido van Rossum <guido@python.org>
parents:
3490
diff
changeset
|
997 #ifdef Py_TRACE_REFS |
|
3609
0b0c4ed1936a
rename printrefs, getobjects to _Py_ prefix
Guido van Rossum <guido@python.org>
parents:
3585
diff
changeset
|
998 /* 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
|
999 extern PyObject *_Py_GetObjects(PyObject *, PyObject *); |
|
3024
54aa87b1ccee
Implemented two new functions in sys:
Sjoerd Mullender <sjoerd@acm.org>
parents:
2810
diff
changeset
|
1000 #endif |
|
3609
0b0c4ed1936a
rename printrefs, getobjects to _Py_ prefix
Guido van Rossum <guido@python.org>
parents:
3585
diff
changeset
|
1001 |
|
5047
7a9cac7cb910
Added optional interface for dynamic execution profile (to be gathered
Guido van Rossum <guido@python.org>
parents:
4904
diff
changeset
|
1002 #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
|
1003 /* 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
|
1004 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
|
1005 #endif |
|
7a9cac7cb910
Added optional interface for dynamic execution profile (to be gathered
Guido van Rossum <guido@python.org>
parents:
4904
diff
changeset
|
1006 |
|
37879
f731859e9b3b
Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents:
37042
diff
changeset
|
1007 #ifdef __cplusplus |
|
f731859e9b3b
Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents:
37042
diff
changeset
|
1008 } |
|
f731859e9b3b
Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents:
37042
diff
changeset
|
1009 #endif |
|
f731859e9b3b
Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents:
37042
diff
changeset
|
1010 |
|
45145
3d7b84daa34a
Merged revisions 60481,60485,60489-60492,60494-60496,60498-60499,60501-60503,60505-60506,60508-60509,60523-60524,60532,60543,60545,60547-60548,60552-60567 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45071
diff
changeset
|
1011 static PyObject * |
|
3d7b84daa34a
Merged revisions 60481,60485,60489-60492,60494-60496,60498-60499,60501-60503,60505-60506,60508-60509,60523-60524,60532,60543,60545,60547-60548,60552-60567 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45071
diff
changeset
|
1012 sys_clear_type_cache(PyObject* self, PyObject* args) |
|
3d7b84daa34a
Merged revisions 60481,60485,60489-60492,60494-60496,60498-60499,60501-60503,60505-60506,60508-60509,60523-60524,60532,60543,60545,60547-60548,60552-60567 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45071
diff
changeset
|
1013 { |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1014 PyType_ClearCache(); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1015 Py_RETURN_NONE; |
|
45145
3d7b84daa34a
Merged revisions 60481,60485,60489-60492,60494-60496,60498-60499,60501-60503,60505-60506,60508-60509,60523-60524,60532,60543,60545,60547-60548,60552-60567 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45071
diff
changeset
|
1016 } |
|
3d7b84daa34a
Merged revisions 60481,60485,60489-60492,60494-60496,60498-60499,60501-60503,60505-60506,60508-60509,60523-60524,60532,60543,60545,60547-60548,60552-60567 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45071
diff
changeset
|
1017 |
|
3d7b84daa34a
Merged revisions 60481,60485,60489-60492,60494-60496,60498-60499,60501-60503,60505-60506,60508-60509,60523-60524,60532,60543,60545,60547-60548,60552-60567 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45071
diff
changeset
|
1018 PyDoc_STRVAR(sys_clear_type_cache__doc__, |
|
3d7b84daa34a
Merged revisions 60481,60485,60489-60492,60494-60496,60498-60499,60501-60503,60505-60506,60508-60509,60523-60524,60532,60543,60545,60547-60548,60552-60567 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45071
diff
changeset
|
1019 "_clear_type_cache() -> None\n\ |
|
3d7b84daa34a
Merged revisions 60481,60485,60489-60492,60494-60496,60498-60499,60501-60503,60505-60506,60508-60509,60523-60524,60532,60543,60545,60547-60548,60552-60567 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45071
diff
changeset
|
1020 Clear the internal type lookup cache."); |
|
3d7b84daa34a
Merged revisions 60481,60485,60489-60492,60494-60496,60498-60499,60501-60503,60505-60506,60508-60509,60523-60524,60532,60543,60545,60547-60548,60552-60567 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45071
diff
changeset
|
1021 |
|
3d7b84daa34a
Merged revisions 60481,60485,60489-60492,60494-60496,60498-60499,60501-60503,60505-60506,60508-60509,60523-60524,60532,60543,60545,60547-60548,60552-60567 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45071
diff
changeset
|
1022 |
| 5372 | 1023 static PyMethodDef sys_methods[] = { |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1024 /* Might as well keep this in alphabetic order */ |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1025 {"callstats", (PyCFunction)PyEval_GetCallStats, METH_NOARGS, |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1026 callstats_doc}, |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1027 {"_clear_type_cache", sys_clear_type_cache, METH_NOARGS, |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1028 sys_clear_type_cache__doc__}, |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1029 {"_current_frames", sys_current_frames, METH_NOARGS, |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1030 current_frames_doc}, |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1031 {"displayhook", sys_displayhook, METH_O, displayhook_doc}, |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1032 {"exc_info", sys_exc_info, METH_NOARGS, exc_info_doc}, |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1033 {"excepthook", sys_excepthook, METH_VARARGS, excepthook_doc}, |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1034 {"exit", sys_exit, METH_VARARGS, exit_doc}, |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1035 {"getdefaultencoding", (PyCFunction)sys_getdefaultencoding, |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1036 METH_NOARGS, getdefaultencoding_doc}, |
|
18689
064de84385ca
Patch #412229: Add functions sys.getdlopenflags and sys.setdlopenflags.
Martin v. Löwis <martin@v.loewis.de>
parents:
18326
diff
changeset
|
1037 #ifdef HAVE_DLOPEN |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1038 {"getdlopenflags", (PyCFunction)sys_getdlopenflags, METH_NOARGS, |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1039 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
|
1040 #endif |
|
3024
54aa87b1ccee
Implemented two new functions in sys:
Sjoerd Mullender <sjoerd@acm.org>
parents:
2810
diff
changeset
|
1041 #ifdef COUNT_ALLOCS |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1042 {"getcounts", (PyCFunction)sys_getcounts, METH_NOARGS}, |
|
3024
54aa87b1ccee
Implemented two new functions in sys:
Sjoerd Mullender <sjoerd@acm.org>
parents:
2810
diff
changeset
|
1043 #endif |
|
5047
7a9cac7cb910
Added optional interface for dynamic execution profile (to be gathered
Guido van Rossum <guido@python.org>
parents:
4904
diff
changeset
|
1044 #ifdef DYNAMIC_EXECUTION_PROFILE |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1045 {"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
|
1046 #endif |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1047 {"getfilesystemencoding", (PyCFunction)sys_getfilesystemencoding, |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1048 METH_NOARGS, getfilesystemencoding_doc}, |
|
3585
4ed09a3c3201
TRACE_REFS -> Py_TRACE_REFS
Guido van Rossum <guido@python.org>
parents:
3490
diff
changeset
|
1049 #ifdef Py_TRACE_REFS |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1050 {"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
|
1051 #endif |
|
fdf80e04e4bb
Rearranged and added comments to object.h, to clarify many things
Tim Peters <tim.peters@gmail.com>
parents:
24071
diff
changeset
|
1052 #ifdef Py_REF_DEBUG |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1053 {"gettotalrefcount", (PyCFunction)sys_gettotalrefcount, METH_NOARGS}, |
|
3024
54aa87b1ccee
Implemented two new functions in sys:
Sjoerd Mullender <sjoerd@acm.org>
parents:
2810
diff
changeset
|
1054 #endif |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1055 {"getrefcount", (PyCFunction)sys_getrefcount, METH_O, getrefcount_doc}, |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1056 {"getrecursionlimit", (PyCFunction)sys_getrecursionlimit, METH_NOARGS, |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1057 getrecursionlimit_doc}, |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1058 {"getsizeof", (PyCFunction)sys_getsizeof, |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1059 METH_VARARGS | METH_KEYWORDS, getsizeof_doc}, |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1060 {"_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
|
1061 #ifdef MS_WINDOWS |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1062 {"getwindowsversion", (PyCFunction)sys_getwindowsversion, METH_NOARGS, |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1063 getwindowsversion_doc}, |
|
25666
4a825b902310
Add os.path.supports_unicode_filenames for all platforms,
Mark Hammond <mhammond@skippinet.com.au>
parents:
25108
diff
changeset
|
1064 #endif /* MS_WINDOWS */ |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1065 {"intern", sys_intern, METH_VARARGS, intern_doc}, |
|
1013
a1ce5a949828
Add an optional interface to turn malloc debugging on and off.
Guido van Rossum <guido@python.org>
parents:
901
diff
changeset
|
1066 #ifdef USE_MALLOPT |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1067 {"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
|
1068 #endif |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1069 {"setcheckinterval", sys_setcheckinterval, METH_VARARGS, |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1070 setcheckinterval_doc}, |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1071 {"getcheckinterval", sys_getcheckinterval, METH_NOARGS, |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1072 getcheckinterval_doc}, |
|
57175
fdd6484f1210
Merge in the new GIL.
Antoine Pitrou <solipsis@pitrou.net>
parents:
55611
diff
changeset
|
1073 #ifdef WITH_THREAD |
|
61466
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60889
diff
changeset
|
1074 {"setswitchinterval", sys_setswitchinterval, METH_VARARGS, |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60889
diff
changeset
|
1075 setswitchinterval_doc}, |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60889
diff
changeset
|
1076 {"getswitchinterval", sys_getswitchinterval, METH_NOARGS, |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60889
diff
changeset
|
1077 getswitchinterval_doc}, |
|
57175
fdd6484f1210
Merge in the new GIL.
Antoine Pitrou <solipsis@pitrou.net>
parents:
55611
diff
changeset
|
1078 #endif |
|
18689
064de84385ca
Patch #412229: Add functions sys.getdlopenflags and sys.setdlopenflags.
Martin v. Löwis <martin@v.loewis.de>
parents:
18326
diff
changeset
|
1079 #ifdef HAVE_DLOPEN |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1080 {"setdlopenflags", sys_setdlopenflags, METH_VARARGS, |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1081 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
|
1082 #endif |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1083 {"setprofile", sys_setprofile, METH_O, setprofile_doc}, |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1084 {"getprofile", sys_getprofile, METH_NOARGS, getprofile_doc}, |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1085 {"setrecursionlimit", sys_setrecursionlimit, METH_VARARGS, |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1086 setrecursionlimit_doc}, |
|
32301
41c59d80bbc5
Patch #510695: Add TSC profiling for the VM.
Martin v. Löwis <martin@v.loewis.de>
parents:
31797
diff
changeset
|
1087 #ifdef WITH_TSC |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1088 {"settscdump", sys_settscdump, METH_VARARGS, settscdump_doc}, |
|
32301
41c59d80bbc5
Patch #510695: Add TSC profiling for the VM.
Martin v. Löwis <martin@v.loewis.de>
parents:
31797
diff
changeset
|
1089 #endif |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1090 {"settrace", sys_settrace, METH_O, settrace_doc}, |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1091 {"gettrace", sys_gettrace, METH_NOARGS, gettrace_doc}, |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1092 {"call_tracing", sys_call_tracing, METH_VARARGS, call_tracing_doc}, |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1093 {NULL, NULL} /* sentinel */ |
| 86 | 1094 }; |
| 1095 | |
| 5372 | 1096 static PyObject * |
|
13658
f79434ee41fa
Mass ANSIfication of function definitions. Doesn't cover all 'extern'
Thomas Wouters <thomas@python.org>
parents:
13447
diff
changeset
|
1097 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
|
1098 { |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1099 PyObject *list = PyList_New(0); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1100 int i; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1101 if (list == NULL) |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1102 return NULL; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1103 for (i = 0; PyImport_Inittab[i].name != NULL; i++) { |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1104 PyObject *name = PyUnicode_FromString( |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1105 PyImport_Inittab[i].name); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1106 if (name == NULL) |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1107 break; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1108 PyList_Append(list, name); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1109 Py_DECREF(name); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1110 } |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1111 if (PyList_Sort(list) != 0) { |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1112 Py_DECREF(list); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1113 list = NULL; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1114 } |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1115 if (list) { |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1116 PyObject *v = PyList_AsTuple(list); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1117 Py_DECREF(list); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1118 list = v; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1119 } |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1120 return list; |
|
1198
2937897a7d8b
* Added Fixcprt.py: script to fix copyright message.
Guido van Rossum <guido@python.org>
parents:
1073
diff
changeset
|
1121 } |
|
2937897a7d8b
* Added Fixcprt.py: script to fix copyright message.
Guido van Rossum <guido@python.org>
parents:
1073
diff
changeset
|
1122 |
|
15595
0f42f6669e80
Add definitions for PySys_ResetWarnOptions() and
Guido van Rossum <guido@python.org>
parents:
15487
diff
changeset
|
1123 static PyObject *warnoptions = NULL; |
|
0f42f6669e80
Add definitions for PySys_ResetWarnOptions() and
Guido van Rossum <guido@python.org>
parents:
15487
diff
changeset
|
1124 |
|
0f42f6669e80
Add definitions for PySys_ResetWarnOptions() and
Guido van Rossum <guido@python.org>
parents:
15487
diff
changeset
|
1125 void |
|
0f42f6669e80
Add definitions for PySys_ResetWarnOptions() and
Guido van Rossum <guido@python.org>
parents:
15487
diff
changeset
|
1126 PySys_ResetWarnOptions(void) |
|
0f42f6669e80
Add definitions for PySys_ResetWarnOptions() and
Guido van Rossum <guido@python.org>
parents:
15487
diff
changeset
|
1127 { |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1128 if (warnoptions == NULL || !PyList_Check(warnoptions)) |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1129 return; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1130 PyList_SetSlice(warnoptions, 0, PyList_GET_SIZE(warnoptions), NULL); |
|
15595
0f42f6669e80
Add definitions for PySys_ResetWarnOptions() and
Guido van Rossum <guido@python.org>
parents:
15487
diff
changeset
|
1131 } |
|
0f42f6669e80
Add definitions for PySys_ResetWarnOptions() and
Guido van Rossum <guido@python.org>
parents:
15487
diff
changeset
|
1132 |
|
0f42f6669e80
Add definitions for PySys_ResetWarnOptions() and
Guido van Rossum <guido@python.org>
parents:
15487
diff
changeset
|
1133 void |
|
61751
b7f71f60437b
Issue #8589: Decode PYTHONWARNINGS environment variable with the file system
Victor Stinner <victor.stinner@haypocalc.com>
parents:
61466
diff
changeset
|
1134 PySys_AddWarnOptionUnicode(PyObject *unicode) |
|
15595
0f42f6669e80
Add definitions for PySys_ResetWarnOptions() and
Guido van Rossum <guido@python.org>
parents:
15487
diff
changeset
|
1135 { |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1136 if (warnoptions == NULL || !PyList_Check(warnoptions)) { |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1137 Py_XDECREF(warnoptions); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1138 warnoptions = PyList_New(0); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1139 if (warnoptions == NULL) |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1140 return; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1141 } |
|
61751
b7f71f60437b
Issue #8589: Decode PYTHONWARNINGS environment variable with the file system
Victor Stinner <victor.stinner@haypocalc.com>
parents:
61466
diff
changeset
|
1142 PyList_Append(warnoptions, unicode); |
|
b7f71f60437b
Issue #8589: Decode PYTHONWARNINGS environment variable with the file system
Victor Stinner <victor.stinner@haypocalc.com>
parents:
61466
diff
changeset
|
1143 } |
|
b7f71f60437b
Issue #8589: Decode PYTHONWARNINGS environment variable with the file system
Victor Stinner <victor.stinner@haypocalc.com>
parents:
61466
diff
changeset
|
1144 |
|
b7f71f60437b
Issue #8589: Decode PYTHONWARNINGS environment variable with the file system
Victor Stinner <victor.stinner@haypocalc.com>
parents:
61466
diff
changeset
|
1145 void |
|
b7f71f60437b
Issue #8589: Decode PYTHONWARNINGS environment variable with the file system
Victor Stinner <victor.stinner@haypocalc.com>
parents:
61466
diff
changeset
|
1146 PySys_AddWarnOption(const wchar_t *s) |
|
b7f71f60437b
Issue #8589: Decode PYTHONWARNINGS environment variable with the file system
Victor Stinner <victor.stinner@haypocalc.com>
parents:
61466
diff
changeset
|
1147 { |
|
b7f71f60437b
Issue #8589: Decode PYTHONWARNINGS environment variable with the file system
Victor Stinner <victor.stinner@haypocalc.com>
parents:
61466
diff
changeset
|
1148 PyObject *unicode; |
|
b7f71f60437b
Issue #8589: Decode PYTHONWARNINGS environment variable with the file system
Victor Stinner <victor.stinner@haypocalc.com>
parents:
61466
diff
changeset
|
1149 unicode = PyUnicode_FromWideChar(s, -1); |
|
b7f71f60437b
Issue #8589: Decode PYTHONWARNINGS environment variable with the file system
Victor Stinner <victor.stinner@haypocalc.com>
parents:
61466
diff
changeset
|
1150 if (unicode == NULL) |
|
b7f71f60437b
Issue #8589: Decode PYTHONWARNINGS environment variable with the file system
Victor Stinner <victor.stinner@haypocalc.com>
parents:
61466
diff
changeset
|
1151 return; |
|
b7f71f60437b
Issue #8589: Decode PYTHONWARNINGS environment variable with the file system
Victor Stinner <victor.stinner@haypocalc.com>
parents:
61466
diff
changeset
|
1152 PySys_AddWarnOptionUnicode(unicode); |
|
b7f71f60437b
Issue #8589: Decode PYTHONWARNINGS environment variable with the file system
Victor Stinner <victor.stinner@haypocalc.com>
parents:
61466
diff
changeset
|
1153 Py_DECREF(unicode); |
|
15595
0f42f6669e80
Add definitions for PySys_ResetWarnOptions() and
Guido van Rossum <guido@python.org>
parents:
15487
diff
changeset
|
1154 } |
|
0f42f6669e80
Add definitions for PySys_ResetWarnOptions() and
Guido van Rossum <guido@python.org>
parents:
15487
diff
changeset
|
1155 |
|
46430
47d9bbe10897
Merged revisions 62260-62261,62266,62271,62277-62279,62289-62290,62293-62298,62302-62306,62308,62311,62313-62315,62319-62321 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
46318
diff
changeset
|
1156 int |
|
47d9bbe10897
Merged revisions 62260-62261,62266,62271,62277-62279,62289-62290,62293-62298,62302-62306,62308,62311,62313-62315,62319-62321 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
46318
diff
changeset
|
1157 PySys_HasWarnOptions(void) |
|
47d9bbe10897
Merged revisions 62260-62261,62266,62271,62277-62279,62289-62290,62293-62298,62302-62306,62308,62311,62313-62315,62319-62321 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
46318
diff
changeset
|
1158 { |
|
47d9bbe10897
Merged revisions 62260-62261,62266,62271,62277-62279,62289-62290,62293-62298,62302-62306,62308,62311,62313-62315,62319-62321 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
46318
diff
changeset
|
1159 return (warnoptions != NULL && (PyList_Size(warnoptions) > 0)) ? 1 : 0; |
|
47d9bbe10897
Merged revisions 62260-62261,62266,62271,62277-62279,62289-62290,62293-62298,62302-62306,62308,62311,62313-62315,62319-62321 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
46318
diff
changeset
|
1160 } |
|
47d9bbe10897
Merged revisions 62260-62261,62266,62271,62277-62279,62289-62290,62293-62298,62302-62306,62308,62311,62313-62315,62319-62321 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
46318
diff
changeset
|
1161 |
|
65575
0b5bfba7a907
Issue #10089: Add support for arbitrary -X options on the command-line.
Antoine Pitrou <solipsis@pitrou.net>
parents:
65494
diff
changeset
|
1162 static PyObject *xoptions = NULL; |
|
0b5bfba7a907
Issue #10089: Add support for arbitrary -X options on the command-line.
Antoine Pitrou <solipsis@pitrou.net>
parents:
65494
diff
changeset
|
1163 |
|
0b5bfba7a907
Issue #10089: Add support for arbitrary -X options on the command-line.
Antoine Pitrou <solipsis@pitrou.net>
parents:
65494
diff
changeset
|
1164 static PyObject * |
|
0b5bfba7a907
Issue #10089: Add support for arbitrary -X options on the command-line.
Antoine Pitrou <solipsis@pitrou.net>
parents:
65494
diff
changeset
|
1165 get_xoptions(void) |
|
0b5bfba7a907
Issue #10089: Add support for arbitrary -X options on the command-line.
Antoine Pitrou <solipsis@pitrou.net>
parents:
65494
diff
changeset
|
1166 { |
|
0b5bfba7a907
Issue #10089: Add support for arbitrary -X options on the command-line.
Antoine Pitrou <solipsis@pitrou.net>
parents:
65494
diff
changeset
|
1167 if (xoptions == NULL || !PyDict_Check(xoptions)) { |
|
0b5bfba7a907
Issue #10089: Add support for arbitrary -X options on the command-line.
Antoine Pitrou <solipsis@pitrou.net>
parents:
65494
diff
changeset
|
1168 Py_XDECREF(xoptions); |
|
0b5bfba7a907
Issue #10089: Add support for arbitrary -X options on the command-line.
Antoine Pitrou <solipsis@pitrou.net>
parents:
65494
diff
changeset
|
1169 xoptions = PyDict_New(); |
|
0b5bfba7a907
Issue #10089: Add support for arbitrary -X options on the command-line.
Antoine Pitrou <solipsis@pitrou.net>
parents:
65494
diff
changeset
|
1170 } |
|
0b5bfba7a907
Issue #10089: Add support for arbitrary -X options on the command-line.
Antoine Pitrou <solipsis@pitrou.net>
parents:
65494
diff
changeset
|
1171 return xoptions; |
|
0b5bfba7a907
Issue #10089: Add support for arbitrary -X options on the command-line.
Antoine Pitrou <solipsis@pitrou.net>
parents:
65494
diff
changeset
|
1172 } |
|
0b5bfba7a907
Issue #10089: Add support for arbitrary -X options on the command-line.
Antoine Pitrou <solipsis@pitrou.net>
parents:
65494
diff
changeset
|
1173 |
|
0b5bfba7a907
Issue #10089: Add support for arbitrary -X options on the command-line.
Antoine Pitrou <solipsis@pitrou.net>
parents:
65494
diff
changeset
|
1174 void |
|
0b5bfba7a907
Issue #10089: Add support for arbitrary -X options on the command-line.
Antoine Pitrou <solipsis@pitrou.net>
parents:
65494
diff
changeset
|
1175 PySys_AddXOption(const wchar_t *s) |
|
0b5bfba7a907
Issue #10089: Add support for arbitrary -X options on the command-line.
Antoine Pitrou <solipsis@pitrou.net>
parents:
65494
diff
changeset
|
1176 { |
|
0b5bfba7a907
Issue #10089: Add support for arbitrary -X options on the command-line.
Antoine Pitrou <solipsis@pitrou.net>
parents:
65494
diff
changeset
|
1177 PyObject *opts; |
|
0b5bfba7a907
Issue #10089: Add support for arbitrary -X options on the command-line.
Antoine Pitrou <solipsis@pitrou.net>
parents:
65494
diff
changeset
|
1178 PyObject *name = NULL, *value = NULL; |
|
0b5bfba7a907
Issue #10089: Add support for arbitrary -X options on the command-line.
Antoine Pitrou <solipsis@pitrou.net>
parents:
65494
diff
changeset
|
1179 const wchar_t *name_end; |
|
0b5bfba7a907
Issue #10089: Add support for arbitrary -X options on the command-line.
Antoine Pitrou <solipsis@pitrou.net>
parents:
65494
diff
changeset
|
1180 int r; |
|
0b5bfba7a907
Issue #10089: Add support for arbitrary -X options on the command-line.
Antoine Pitrou <solipsis@pitrou.net>
parents:
65494
diff
changeset
|
1181 |
|
0b5bfba7a907
Issue #10089: Add support for arbitrary -X options on the command-line.
Antoine Pitrou <solipsis@pitrou.net>
parents:
65494
diff
changeset
|
1182 opts = get_xoptions(); |
|
0b5bfba7a907
Issue #10089: Add support for arbitrary -X options on the command-line.
Antoine Pitrou <solipsis@pitrou.net>
parents:
65494
diff
changeset
|
1183 if (opts == NULL) |
|
0b5bfba7a907
Issue #10089: Add support for arbitrary -X options on the command-line.
Antoine Pitrou <solipsis@pitrou.net>
parents:
65494
diff
changeset
|
1184 goto error; |
|
0b5bfba7a907
Issue #10089: Add support for arbitrary -X options on the command-line.
Antoine Pitrou <solipsis@pitrou.net>
parents:
65494
diff
changeset
|
1185 |
|
0b5bfba7a907
Issue #10089: Add support for arbitrary -X options on the command-line.
Antoine Pitrou <solipsis@pitrou.net>
parents:
65494
diff
changeset
|
1186 name_end = wcschr(s, L'='); |
|
0b5bfba7a907
Issue #10089: Add support for arbitrary -X options on the command-line.
Antoine Pitrou <solipsis@pitrou.net>
parents:
65494
diff
changeset
|
1187 if (!name_end) { |
|
0b5bfba7a907
Issue #10089: Add support for arbitrary -X options on the command-line.
Antoine Pitrou <solipsis@pitrou.net>
parents:
65494
diff
changeset
|
1188 name = PyUnicode_FromWideChar(s, -1); |
|
0b5bfba7a907
Issue #10089: Add support for arbitrary -X options on the command-line.
Antoine Pitrou <solipsis@pitrou.net>
parents:
65494
diff
changeset
|
1189 value = Py_True; |
|
0b5bfba7a907
Issue #10089: Add support for arbitrary -X options on the command-line.
Antoine Pitrou <solipsis@pitrou.net>
parents:
65494
diff
changeset
|
1190 Py_INCREF(value); |
|
0b5bfba7a907
Issue #10089: Add support for arbitrary -X options on the command-line.
Antoine Pitrou <solipsis@pitrou.net>
parents:
65494
diff
changeset
|
1191 } |
|
0b5bfba7a907
Issue #10089: Add support for arbitrary -X options on the command-line.
Antoine Pitrou <solipsis@pitrou.net>
parents:
65494
diff
changeset
|
1192 else { |
|
0b5bfba7a907
Issue #10089: Add support for arbitrary -X options on the command-line.
Antoine Pitrou <solipsis@pitrou.net>
parents:
65494
diff
changeset
|
1193 name = PyUnicode_FromWideChar(s, name_end - s); |
|
0b5bfba7a907
Issue #10089: Add support for arbitrary -X options on the command-line.
Antoine Pitrou <solipsis@pitrou.net>
parents:
65494
diff
changeset
|
1194 value = PyUnicode_FromWideChar(name_end + 1, -1); |
|
0b5bfba7a907
Issue #10089: Add support for arbitrary -X options on the command-line.
Antoine Pitrou <solipsis@pitrou.net>
parents:
65494
diff
changeset
|
1195 } |
|
0b5bfba7a907
Issue #10089: Add support for arbitrary -X options on the command-line.
Antoine Pitrou <solipsis@pitrou.net>
parents:
65494
diff
changeset
|
1196 if (name == NULL || value == NULL) |
|
0b5bfba7a907
Issue #10089: Add support for arbitrary -X options on the command-line.
Antoine Pitrou <solipsis@pitrou.net>
parents:
65494
diff
changeset
|
1197 goto error; |
|
0b5bfba7a907
Issue #10089: Add support for arbitrary -X options on the command-line.
Antoine Pitrou <solipsis@pitrou.net>
parents:
65494
diff
changeset
|
1198 r = PyDict_SetItem(opts, name, value); |
|
0b5bfba7a907
Issue #10089: Add support for arbitrary -X options on the command-line.
Antoine Pitrou <solipsis@pitrou.net>
parents:
65494
diff
changeset
|
1199 Py_DECREF(name); |
|
0b5bfba7a907
Issue #10089: Add support for arbitrary -X options on the command-line.
Antoine Pitrou <solipsis@pitrou.net>
parents:
65494
diff
changeset
|
1200 Py_DECREF(value); |
|
0b5bfba7a907
Issue #10089: Add support for arbitrary -X options on the command-line.
Antoine Pitrou <solipsis@pitrou.net>
parents:
65494
diff
changeset
|
1201 return; |
|
0b5bfba7a907
Issue #10089: Add support for arbitrary -X options on the command-line.
Antoine Pitrou <solipsis@pitrou.net>
parents:
65494
diff
changeset
|
1202 |
|
0b5bfba7a907
Issue #10089: Add support for arbitrary -X options on the command-line.
Antoine Pitrou <solipsis@pitrou.net>
parents:
65494
diff
changeset
|
1203 error: |
|
0b5bfba7a907
Issue #10089: Add support for arbitrary -X options on the command-line.
Antoine Pitrou <solipsis@pitrou.net>
parents:
65494
diff
changeset
|
1204 Py_XDECREF(name); |
|
0b5bfba7a907
Issue #10089: Add support for arbitrary -X options on the command-line.
Antoine Pitrou <solipsis@pitrou.net>
parents:
65494
diff
changeset
|
1205 Py_XDECREF(value); |
|
0b5bfba7a907
Issue #10089: Add support for arbitrary -X options on the command-line.
Antoine Pitrou <solipsis@pitrou.net>
parents:
65494
diff
changeset
|
1206 /* No return value, therefore clear error state if possible */ |
|
0b5bfba7a907
Issue #10089: Add support for arbitrary -X options on the command-line.
Antoine Pitrou <solipsis@pitrou.net>
parents:
65494
diff
changeset
|
1207 if (_Py_atomic_load_relaxed(&_PyThreadState_Current)) |
|
0b5bfba7a907
Issue #10089: Add support for arbitrary -X options on the command-line.
Antoine Pitrou <solipsis@pitrou.net>
parents:
65494
diff
changeset
|
1208 PyErr_Clear(); |
|
0b5bfba7a907
Issue #10089: Add support for arbitrary -X options on the command-line.
Antoine Pitrou <solipsis@pitrou.net>
parents:
65494
diff
changeset
|
1209 } |
|
0b5bfba7a907
Issue #10089: Add support for arbitrary -X options on the command-line.
Antoine Pitrou <solipsis@pitrou.net>
parents:
65494
diff
changeset
|
1210 |
|
0b5bfba7a907
Issue #10089: Add support for arbitrary -X options on the command-line.
Antoine Pitrou <solipsis@pitrou.net>
parents:
65494
diff
changeset
|
1211 PyObject * |
|
0b5bfba7a907
Issue #10089: Add support for arbitrary -X options on the command-line.
Antoine Pitrou <solipsis@pitrou.net>
parents:
65494
diff
changeset
|
1212 PySys_GetXOptions(void) |
|
0b5bfba7a907
Issue #10089: Add support for arbitrary -X options on the command-line.
Antoine Pitrou <solipsis@pitrou.net>
parents:
65494
diff
changeset
|
1213 { |
|
0b5bfba7a907
Issue #10089: Add support for arbitrary -X options on the command-line.
Antoine Pitrou <solipsis@pitrou.net>
parents:
65494
diff
changeset
|
1214 return get_xoptions(); |
|
0b5bfba7a907
Issue #10089: Add support for arbitrary -X options on the command-line.
Antoine Pitrou <solipsis@pitrou.net>
parents:
65494
diff
changeset
|
1215 } |
|
0b5bfba7a907
Issue #10089: Add support for arbitrary -X options on the command-line.
Antoine Pitrou <solipsis@pitrou.net>
parents:
65494
diff
changeset
|
1216 |
|
8840
44baef8ab5c8
Gack. The module doc string is too long for VC++ 5.0.
Guido van Rossum <guido@python.org>
parents:
8566
diff
changeset
|
1217 /* 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
|
1218 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
|
1219 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
|
1220 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
|
1221 PyDoc_VAR(sys_doc) = |
|
43ddcdcd3c71
Patch #505375: Make doc strings optional.
Martin v. Löwis <martin@v.loewis.de>
parents:
22604
diff
changeset
|
1222 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
|
1223 "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
|
1224 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
|
1225 \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
|
1226 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
|
1227 \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
|
1228 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
|
1229 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
|
1230 modules -- dictionary of loaded modules\n\ |
| 17164 | 1231 \n\ |
| 1232 displayhook -- called to show results in an interactive session\n\ | |
| 1233 excepthook -- called to handle any uncaught exception other than SystemExit\n\ | |
| 1234 To customize printing in an interactive session or to install a custom\n\ | |
| 1235 top-level exception handler, assign other functions to replace these.\n\ | |
| 1236 \n\ | |
|
48470
3d868254ff7e
correct docstring
Benjamin Peterson <benjamin@python.org>
parents:
48467
diff
changeset
|
1237 stdin -- standard input file object; used by input()\n\ |
|
40788
e9a6234b26af
* Remove PRINT_ITEM(_TO), PRINT_NEWLINE(_TO) opcodes.
Georg Brandl <georg@python.org>
parents:
40737
diff
changeset
|
1238 stdout -- standard output file object; used by print()\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
|
1239 stderr -- standard error object; used for error messages\n\ |
| 17164 | 1240 By assigning other file objects (or objects that behave like files)\n\ |
| 1241 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
|
1242 \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
|
1243 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
|
1244 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
|
1245 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
|
1246 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
|
1247 traceback has been printed.\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
|
1248 " |
|
23746
43ddcdcd3c71
Patch #505375: Make doc strings optional.
Martin v. Löwis <martin@v.loewis.de>
parents:
22604
diff
changeset
|
1249 ) |
| 17164 | 1250 /* concatenating string here */ |
|
23746
43ddcdcd3c71
Patch #505375: Make doc strings optional.
Martin v. Löwis <martin@v.loewis.de>
parents:
22604
diff
changeset
|
1251 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
|
1252 "\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
|
1253 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
|
1254 \n\ |
| 44311 | 1255 float_info -- a dict with information about the float implementation.\n\ |
|
52215
bb5de24a343f
Issue #4258: Make it possible to use 30-bit digits for PyLongs:
Mark Dickinson <dickinsm@gmail.com>
parents:
51378
diff
changeset
|
1256 int_info -- a struct sequence with information about the int implementation.\n\ |
|
43100
4e6b4ba60c3b
Remove the simple slicing API. All slicing is now done with slice objects.
Thomas Wouters <thomas@python.org>
parents:
42896
diff
changeset
|
1257 maxsize -- the largest supported length of containers.\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
|
1258 maxunicode -- the largest supported character\n\ |
|
21833
070d392042e3
Fix spelling mistakes. Bugfix candidates.
Neal Norwitz <nnorwitz@gmail.com>
parents:
21712
diff
changeset
|
1259 builtin_module_names -- tuple of module names built into this interpreter\n\ |
| 44311 | 1260 subversion -- subversion information of the build as tuple\n\ |
|
12394
60dd95c75999
Define version_info to be a tuple (major, minor, micro, level); level
Fred Drake <fdrake@acm.org>
parents:
12136
diff
changeset
|
1261 version -- the version of this interpreter as a string\n\ |
|
51378
4cc49d978ec2
Merged revisions 69331 via svnmerge from
Eric Smith <eric@trueblade.com>
parents:
50743
diff
changeset
|
1262 version_info -- version information as a named tuple\n\ |
|
12394
60dd95c75999
Define version_info to be a tuple (major, minor, micro, level); level
Fred Drake <fdrake@acm.org>
parents:
12136
diff
changeset
|
1263 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
|
1264 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
|
1265 platform -- platform identifier\n\ |
|
74725
fdcda5b74317
Document absoluteness of sys.executable
Petri Lehtinen <petri@digip.org>
parents:
69482
diff
changeset
|
1266 executable -- absolute path of the executable binary of the Python 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
|
1267 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
|
1268 exec_prefix -- prefix used to find the machine-specific Python library\n\ |
|
53185
97ae7a709c1d
Issue #1580: use short float repr where possible.
Mark Dickinson <dickinsm@gmail.com>
parents:
52215
diff
changeset
|
1269 float_repr_style -- string indicating the style of repr() output for floats\n\ |
| 17164 | 1270 " |
|
23746
43ddcdcd3c71
Patch #505375: Make doc strings optional.
Martin v. Löwis <martin@v.loewis.de>
parents:
22604
diff
changeset
|
1271 ) |
| 17164 | 1272 #ifdef MS_WINDOWS |
| 1273 /* concatenating string here */ | |
|
23746
43ddcdcd3c71
Patch #505375: Make doc strings optional.
Martin v. Löwis <martin@v.loewis.de>
parents:
22604
diff
changeset
|
1274 PyDoc_STR( |
| 17164 | 1275 "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
|
1276 winver -- [Windows only] version number of the Python DLL\n\ |
| 17164 | 1277 " |
|
23746
43ddcdcd3c71
Patch #505375: Make doc strings optional.
Martin v. Löwis <martin@v.loewis.de>
parents:
22604
diff
changeset
|
1278 ) |
| 17164 | 1279 #endif /* MS_WINDOWS */ |
|
23746
43ddcdcd3c71
Patch #505375: Make doc strings optional.
Martin v. Löwis <martin@v.loewis.de>
parents:
22604
diff
changeset
|
1280 PyDoc_STR( |
| 17164 | 1281 "__stdin__ -- the original stdin; don't touch!\n\ |
| 1282 __stdout__ -- the original stdout; don't touch!\n\ | |
| 1283 __stderr__ -- the original stderr; don't touch!\n\ | |
| 1284 __displayhook__ -- the original displayhook; don't touch!\n\ | |
| 1285 __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
|
1286 \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
|
1287 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
|
1288 \n\ |
|
44098
0889daf6d0d9
#1535: rename __builtin__ module to builtins.
Georg Brandl <georg@python.org>
parents:
44086
diff
changeset
|
1289 displayhook() -- print an object to the screen, and save it in builtins._\n\ |
| 17164 | 1290 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
|
1291 exc_info() -- return thread-safe information about the current 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
|
1292 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
|
1293 getdlopenflags() -- returns flags to be used for dlopen() calls\n\ |
|
44828
ef7d72d98485
Merged revisions 60124-60142 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44699
diff
changeset
|
1294 getprofile() -- get the global profiling function\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
|
1295 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
|
1296 getrecursionlimit() -- return the max recursion depth for the interpreter\n\ |
|
47466
58f4b60773fe
Merged revisions 63856-63857,63859-63860 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
47464
diff
changeset
|
1297 getsizeof() -- return the size of an object in bytes\n\ |
|
44828
ef7d72d98485
Merged revisions 60124-60142 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44699
diff
changeset
|
1298 gettrace() -- get the global debug tracing function\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
|
1299 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
|
1300 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
|
1301 setprofile() -- set the global profiling function\n\ |
|
14308
b8b3f76ffd51
add user-modifiable recursion_limit
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
14295
diff
changeset
|
1302 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
|
1303 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
|
1304 " |
|
23746
43ddcdcd3c71
Patch #505375: Make doc strings optional.
Martin v. Löwis <martin@v.loewis.de>
parents:
22604
diff
changeset
|
1305 ) |
|
13971
aa4202702252
The attempt to protect against MS_WIN16 compilers that do not support long
Fred Drake <fdrake@acm.org>
parents:
13968
diff
changeset
|
1306 /* 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
|
1307 |
|
36207
825a041813fb
Drop sys.build_number. Add sys.subversion.
Martin v. Löwis <martin@v.loewis.de>
parents:
36070
diff
changeset
|
1308 /* Subversion branch and revision management */ |
|
825a041813fb
Drop sys.build_number. Add sys.subversion.
Martin v. Löwis <martin@v.loewis.de>
parents:
36070
diff
changeset
|
1309 static int svn_initialized; |
|
825a041813fb
Drop sys.build_number. Add sys.subversion.
Martin v. Löwis <martin@v.loewis.de>
parents:
36070
diff
changeset
|
1310 static char patchlevel_revision[50]; /* Just the number */ |
|
825a041813fb
Drop sys.build_number. Add sys.subversion.
Martin v. Löwis <martin@v.loewis.de>
parents:
36070
diff
changeset
|
1311 static char branch[50]; |
|
825a041813fb
Drop sys.build_number. Add sys.subversion.
Martin v. Löwis <martin@v.loewis.de>
parents:
36070
diff
changeset
|
1312 static char shortbranch[50]; |
|
825a041813fb
Drop sys.build_number. Add sys.subversion.
Martin v. Löwis <martin@v.loewis.de>
parents:
36070
diff
changeset
|
1313 static const char *svn_revision; |
|
825a041813fb
Drop sys.build_number. Add sys.subversion.
Martin v. Löwis <martin@v.loewis.de>
parents:
36070
diff
changeset
|
1314 |
|
36212
cee05980f1fd
svnversion_init(): Use standard layout for function defn.
Tim Peters <tim.peters@gmail.com>
parents:
36211
diff
changeset
|
1315 static void |
|
cee05980f1fd
svnversion_init(): Use standard layout for function defn.
Tim Peters <tim.peters@gmail.com>
parents:
36211
diff
changeset
|
1316 svnversion_init(void) |
|
36207
825a041813fb
Drop sys.build_number. Add sys.subversion.
Martin v. Löwis <martin@v.loewis.de>
parents:
36070
diff
changeset
|
1317 { |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1318 if (svn_initialized) |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1319 return; |
|
36207
825a041813fb
Drop sys.build_number. Add sys.subversion.
Martin v. Löwis <martin@v.loewis.de>
parents:
36070
diff
changeset
|
1320 |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1321 svn_initialized = 1; |
|
69481
febb6cf195e7
Up-port changeset 5cf8f6da8743 (closes #11890)
Jesus Cea <jcea@jcea.es>
parents:
68274
diff
changeset
|
1322 *patchlevel_revision = '\0'; |
|
febb6cf195e7
Up-port changeset 5cf8f6da8743 (closes #11890)
Jesus Cea <jcea@jcea.es>
parents:
68274
diff
changeset
|
1323 strcpy(branch, ""); |
|
febb6cf195e7
Up-port changeset 5cf8f6da8743 (closes #11890)
Jesus Cea <jcea@jcea.es>
parents:
68274
diff
changeset
|
1324 strcpy(shortbranch, "unknown"); |
|
febb6cf195e7
Up-port changeset 5cf8f6da8743 (closes #11890)
Jesus Cea <jcea@jcea.es>
parents:
68274
diff
changeset
|
1325 svn_revision = ""; |
|
36207
825a041813fb
Drop sys.build_number. Add sys.subversion.
Martin v. Löwis <martin@v.loewis.de>
parents:
36070
diff
changeset
|
1326 } |
|
825a041813fb
Drop sys.build_number. Add sys.subversion.
Martin v. Löwis <martin@v.loewis.de>
parents:
36070
diff
changeset
|
1327 |
|
825a041813fb
Drop sys.build_number. Add sys.subversion.
Martin v. Löwis <martin@v.loewis.de>
parents:
36070
diff
changeset
|
1328 /* Return svnversion output if available. |
|
825a041813fb
Drop sys.build_number. Add sys.subversion.
Martin v. Löwis <martin@v.loewis.de>
parents:
36070
diff
changeset
|
1329 Else return Revision of patchlevel.h if on branch. |
|
825a041813fb
Drop sys.build_number. Add sys.subversion.
Martin v. Löwis <martin@v.loewis.de>
parents:
36070
diff
changeset
|
1330 Else return empty string */ |
|
825a041813fb
Drop sys.build_number. Add sys.subversion.
Martin v. Löwis <martin@v.loewis.de>
parents:
36070
diff
changeset
|
1331 const char* |
|
825a041813fb
Drop sys.build_number. Add sys.subversion.
Martin v. Löwis <martin@v.loewis.de>
parents:
36070
diff
changeset
|
1332 Py_SubversionRevision() |
|
825a041813fb
Drop sys.build_number. Add sys.subversion.
Martin v. Löwis <martin@v.loewis.de>
parents:
36070
diff
changeset
|
1333 { |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1334 svnversion_init(); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1335 return svn_revision; |
|
36207
825a041813fb
Drop sys.build_number. Add sys.subversion.
Martin v. Löwis <martin@v.loewis.de>
parents:
36070
diff
changeset
|
1336 } |
|
825a041813fb
Drop sys.build_number. Add sys.subversion.
Martin v. Löwis <martin@v.loewis.de>
parents:
36070
diff
changeset
|
1337 |
|
825a041813fb
Drop sys.build_number. Add sys.subversion.
Martin v. Löwis <martin@v.loewis.de>
parents:
36070
diff
changeset
|
1338 const char* |
|
825a041813fb
Drop sys.build_number. Add sys.subversion.
Martin v. Löwis <martin@v.loewis.de>
parents:
36070
diff
changeset
|
1339 Py_SubversionShortBranch() |
|
825a041813fb
Drop sys.build_number. Add sys.subversion.
Martin v. Löwis <martin@v.loewis.de>
parents:
36070
diff
changeset
|
1340 { |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1341 svnversion_init(); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1342 return shortbranch; |
|
36207
825a041813fb
Drop sys.build_number. Add sys.subversion.
Martin v. Löwis <martin@v.loewis.de>
parents:
36070
diff
changeset
|
1343 } |
|
825a041813fb
Drop sys.build_number. Add sys.subversion.
Martin v. Löwis <martin@v.loewis.de>
parents:
36070
diff
changeset
|
1344 |
|
44674
1154158a199f
Merged revisions 59933-59951 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44587
diff
changeset
|
1345 |
|
1154158a199f
Merged revisions 59933-59951 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44587
diff
changeset
|
1346 PyDoc_STRVAR(flags__doc__, |
|
1154158a199f
Merged revisions 59933-59951 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44587
diff
changeset
|
1347 "sys.flags\n\ |
|
1154158a199f
Merged revisions 59933-59951 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44587
diff
changeset
|
1348 \n\ |
|
1154158a199f
Merged revisions 59933-59951 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44587
diff
changeset
|
1349 Flags provided through command line arguments or environment vars."); |
|
1154158a199f
Merged revisions 59933-59951 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44587
diff
changeset
|
1350 |
|
1154158a199f
Merged revisions 59933-59951 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44587
diff
changeset
|
1351 static PyTypeObject FlagsType; |
|
1154158a199f
Merged revisions 59933-59951 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44587
diff
changeset
|
1352 |
|
1154158a199f
Merged revisions 59933-59951 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44587
diff
changeset
|
1353 static PyStructSequence_Field flags_fields[] = { |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1354 {"debug", "-d"}, |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1355 {"division_warning", "-Q"}, |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1356 {"inspect", "-i"}, |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1357 {"interactive", "-i"}, |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1358 {"optimize", "-O or -OO"}, |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1359 {"dont_write_bytecode", "-B"}, |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1360 {"no_user_site", "-s"}, |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1361 {"no_site", "-S"}, |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1362 {"ignore_environment", "-E"}, |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1363 {"verbose", "-v"}, |
|
44674
1154158a199f
Merged revisions 59933-59951 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44587
diff
changeset
|
1364 #ifdef RISCOS |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1365 {"riscos_wimp", "???"}, |
|
44674
1154158a199f
Merged revisions 59933-59951 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44587
diff
changeset
|
1366 #endif |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1367 /* {"unbuffered", "-u"}, */ |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1368 /* {"skip_first", "-x"}, */ |
|
67193
b7be652daf6e
Add sys.flags.quiet attribute for the new -q option, as noted missing by Eric in #1772833.
Georg Brandl <georg@python.org>
parents:
66719
diff
changeset
|
1369 {"bytes_warning", "-b"}, |
|
b7be652daf6e
Add sys.flags.quiet attribute for the new -q option, as noted missing by Eric in #1772833.
Georg Brandl <georg@python.org>
parents:
66719
diff
changeset
|
1370 {"quiet", "-q"}, |
|
75073
4a31f6b11e7a
Merge from 3.1: Issue #13703: add a way to randomize the hash values of basic types (str, bytes, datetime)
Georg Brandl <georg@python.org>
diff
changeset
|
1371 {"hash_randomization", "-R"}, |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1372 {0} |
|
44674
1154158a199f
Merged revisions 59933-59951 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44587
diff
changeset
|
1373 }; |
|
1154158a199f
Merged revisions 59933-59951 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44587
diff
changeset
|
1374 |
|
1154158a199f
Merged revisions 59933-59951 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44587
diff
changeset
|
1375 static PyStructSequence_Desc flags_desc = { |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1376 "sys.flags", /* name */ |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1377 flags__doc__, /* doc */ |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1378 flags_fields, /* fields */ |
|
44674
1154158a199f
Merged revisions 59933-59951 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44587
diff
changeset
|
1379 #ifdef RISCOS |
|
75073
4a31f6b11e7a
Merge from 3.1: Issue #13703: add a way to randomize the hash values of basic types (str, bytes, datetime)
Georg Brandl <georg@python.org>
diff
changeset
|
1380 14 |
|
44674
1154158a199f
Merged revisions 59933-59951 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44587
diff
changeset
|
1381 #else |
|
75073
4a31f6b11e7a
Merge from 3.1: Issue #13703: add a way to randomize the hash values of basic types (str, bytes, datetime)
Georg Brandl <georg@python.org>
diff
changeset
|
1382 13 |
|
44674
1154158a199f
Merged revisions 59933-59951 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44587
diff
changeset
|
1383 #endif |
|
1154158a199f
Merged revisions 59933-59951 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44587
diff
changeset
|
1384 }; |
|
1154158a199f
Merged revisions 59933-59951 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44587
diff
changeset
|
1385 |
|
1154158a199f
Merged revisions 59933-59951 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44587
diff
changeset
|
1386 static PyObject* |
|
1154158a199f
Merged revisions 59933-59951 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44587
diff
changeset
|
1387 make_flags(void) |
|
1154158a199f
Merged revisions 59933-59951 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44587
diff
changeset
|
1388 { |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1389 int pos = 0; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1390 PyObject *seq; |
|
44674
1154158a199f
Merged revisions 59933-59951 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44587
diff
changeset
|
1391 |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1392 seq = PyStructSequence_New(&FlagsType); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1393 if (seq == NULL) |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1394 return NULL; |
|
44674
1154158a199f
Merged revisions 59933-59951 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44587
diff
changeset
|
1395 |
|
1154158a199f
Merged revisions 59933-59951 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44587
diff
changeset
|
1396 #define SetFlag(flag) \ |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1397 PyStructSequence_SET_ITEM(seq, pos++, PyLong_FromLong(flag)) |
|
44674
1154158a199f
Merged revisions 59933-59951 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44587
diff
changeset
|
1398 |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1399 SetFlag(Py_DebugFlag); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1400 SetFlag(Py_DivisionWarningFlag); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1401 SetFlag(Py_InspectFlag); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1402 SetFlag(Py_InteractiveFlag); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1403 SetFlag(Py_OptimizeFlag); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1404 SetFlag(Py_DontWriteBytecodeFlag); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1405 SetFlag(Py_NoUserSiteDirectory); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1406 SetFlag(Py_NoSiteFlag); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1407 SetFlag(Py_IgnoreEnvironmentFlag); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1408 SetFlag(Py_VerboseFlag); |
|
44674
1154158a199f
Merged revisions 59933-59951 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44587
diff
changeset
|
1409 #ifdef RISCOS |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1410 SetFlag(Py_RISCOSWimpFlag); |
|
44674
1154158a199f
Merged revisions 59933-59951 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44587
diff
changeset
|
1411 #endif |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1412 /* SetFlag(saw_unbuffered_flag); */ |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1413 /* SetFlag(skipfirstline); */ |
|
46430
47d9bbe10897
Merged revisions 62260-62261,62266,62271,62277-62279,62289-62290,62293-62298,62302-62306,62308,62311,62313-62315,62319-62321 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
46318
diff
changeset
|
1414 SetFlag(Py_BytesWarningFlag); |
|
67193
b7be652daf6e
Add sys.flags.quiet attribute for the new -q option, as noted missing by Eric in #1772833.
Georg Brandl <georg@python.org>
parents:
66719
diff
changeset
|
1415 SetFlag(Py_QuietFlag); |
|
75066
f4b7ecf8a5f8
Issue #13703: add a way to randomize the hash values of basic types (str, bytes, datetime)
Georg Brandl <georg@python.org>
parents:
69481
diff
changeset
|
1416 SetFlag(Py_HashRandomizationFlag); |
|
44674
1154158a199f
Merged revisions 59933-59951 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44587
diff
changeset
|
1417 #undef SetFlag |
|
1154158a199f
Merged revisions 59933-59951 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44587
diff
changeset
|
1418 |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1419 if (PyErr_Occurred()) { |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1420 return NULL; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1421 } |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1422 return seq; |
|
44674
1154158a199f
Merged revisions 59933-59951 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44587
diff
changeset
|
1423 } |
|
1154158a199f
Merged revisions 59933-59951 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44587
diff
changeset
|
1424 |
|
51378
4cc49d978ec2
Merged revisions 69331 via svnmerge from
Eric Smith <eric@trueblade.com>
parents:
50743
diff
changeset
|
1425 PyDoc_STRVAR(version_info__doc__, |
|
4cc49d978ec2
Merged revisions 69331 via svnmerge from
Eric Smith <eric@trueblade.com>
parents:
50743
diff
changeset
|
1426 "sys.version_info\n\ |
|
4cc49d978ec2
Merged revisions 69331 via svnmerge from
Eric Smith <eric@trueblade.com>
parents:
50743
diff
changeset
|
1427 \n\ |
|
4cc49d978ec2
Merged revisions 69331 via svnmerge from
Eric Smith <eric@trueblade.com>
parents:
50743
diff
changeset
|
1428 Version information as a named tuple."); |
|
4cc49d978ec2
Merged revisions 69331 via svnmerge from
Eric Smith <eric@trueblade.com>
parents:
50743
diff
changeset
|
1429 |
|
4cc49d978ec2
Merged revisions 69331 via svnmerge from
Eric Smith <eric@trueblade.com>
parents:
50743
diff
changeset
|
1430 static PyTypeObject VersionInfoType; |
|
4cc49d978ec2
Merged revisions 69331 via svnmerge from
Eric Smith <eric@trueblade.com>
parents:
50743
diff
changeset
|
1431 |
|
4cc49d978ec2
Merged revisions 69331 via svnmerge from
Eric Smith <eric@trueblade.com>
parents:
50743
diff
changeset
|
1432 static PyStructSequence_Field version_info_fields[] = { |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1433 {"major", "Major release number"}, |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1434 {"minor", "Minor release number"}, |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1435 {"micro", "Patch release number"}, |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1436 {"releaselevel", "'alpha', 'beta', 'candidate', or 'release'"}, |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1437 {"serial", "Serial release number"}, |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1438 {0} |
|
51378
4cc49d978ec2
Merged revisions 69331 via svnmerge from
Eric Smith <eric@trueblade.com>
parents:
50743
diff
changeset
|
1439 }; |
|
4cc49d978ec2
Merged revisions 69331 via svnmerge from
Eric Smith <eric@trueblade.com>
parents:
50743
diff
changeset
|
1440 |
|
4cc49d978ec2
Merged revisions 69331 via svnmerge from
Eric Smith <eric@trueblade.com>
parents:
50743
diff
changeset
|
1441 static PyStructSequence_Desc version_info_desc = { |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1442 "sys.version_info", /* name */ |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1443 version_info__doc__, /* doc */ |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1444 version_info_fields, /* fields */ |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1445 5 |
|
51378
4cc49d978ec2
Merged revisions 69331 via svnmerge from
Eric Smith <eric@trueblade.com>
parents:
50743
diff
changeset
|
1446 }; |
|
4cc49d978ec2
Merged revisions 69331 via svnmerge from
Eric Smith <eric@trueblade.com>
parents:
50743
diff
changeset
|
1447 |
|
4cc49d978ec2
Merged revisions 69331 via svnmerge from
Eric Smith <eric@trueblade.com>
parents:
50743
diff
changeset
|
1448 static PyObject * |
|
4cc49d978ec2
Merged revisions 69331 via svnmerge from
Eric Smith <eric@trueblade.com>
parents:
50743
diff
changeset
|
1449 make_version_info(void) |
|
4cc49d978ec2
Merged revisions 69331 via svnmerge from
Eric Smith <eric@trueblade.com>
parents:
50743
diff
changeset
|
1450 { |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1451 PyObject *version_info; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1452 char *s; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1453 int pos = 0; |
|
51378
4cc49d978ec2
Merged revisions 69331 via svnmerge from
Eric Smith <eric@trueblade.com>
parents:
50743
diff
changeset
|
1454 |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1455 version_info = PyStructSequence_New(&VersionInfoType); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1456 if (version_info == NULL) { |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1457 return NULL; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1458 } |
|
51378
4cc49d978ec2
Merged revisions 69331 via svnmerge from
Eric Smith <eric@trueblade.com>
parents:
50743
diff
changeset
|
1459 |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1460 /* |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1461 * These release level checks are mutually exclusive and cover |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1462 * the field, so don't get too fancy with the pre-processor! |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1463 */ |
|
51378
4cc49d978ec2
Merged revisions 69331 via svnmerge from
Eric Smith <eric@trueblade.com>
parents:
50743
diff
changeset
|
1464 #if PY_RELEASE_LEVEL == PY_RELEASE_LEVEL_ALPHA |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1465 s = "alpha"; |
|
51378
4cc49d978ec2
Merged revisions 69331 via svnmerge from
Eric Smith <eric@trueblade.com>
parents:
50743
diff
changeset
|
1466 #elif PY_RELEASE_LEVEL == PY_RELEASE_LEVEL_BETA |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1467 s = "beta"; |
|
51378
4cc49d978ec2
Merged revisions 69331 via svnmerge from
Eric Smith <eric@trueblade.com>
parents:
50743
diff
changeset
|
1468 #elif PY_RELEASE_LEVEL == PY_RELEASE_LEVEL_GAMMA |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1469 s = "candidate"; |
|
51378
4cc49d978ec2
Merged revisions 69331 via svnmerge from
Eric Smith <eric@trueblade.com>
parents:
50743
diff
changeset
|
1470 #elif PY_RELEASE_LEVEL == PY_RELEASE_LEVEL_FINAL |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1471 s = "final"; |
|
51378
4cc49d978ec2
Merged revisions 69331 via svnmerge from
Eric Smith <eric@trueblade.com>
parents:
50743
diff
changeset
|
1472 #endif |
|
4cc49d978ec2
Merged revisions 69331 via svnmerge from
Eric Smith <eric@trueblade.com>
parents:
50743
diff
changeset
|
1473 |
|
4cc49d978ec2
Merged revisions 69331 via svnmerge from
Eric Smith <eric@trueblade.com>
parents:
50743
diff
changeset
|
1474 #define SetIntItem(flag) \ |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1475 PyStructSequence_SET_ITEM(version_info, pos++, PyLong_FromLong(flag)) |
|
51378
4cc49d978ec2
Merged revisions 69331 via svnmerge from
Eric Smith <eric@trueblade.com>
parents:
50743
diff
changeset
|
1476 #define SetStrItem(flag) \ |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1477 PyStructSequence_SET_ITEM(version_info, pos++, PyUnicode_FromString(flag)) |
|
51378
4cc49d978ec2
Merged revisions 69331 via svnmerge from
Eric Smith <eric@trueblade.com>
parents:
50743
diff
changeset
|
1478 |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1479 SetIntItem(PY_MAJOR_VERSION); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1480 SetIntItem(PY_MINOR_VERSION); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1481 SetIntItem(PY_MICRO_VERSION); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1482 SetStrItem(s); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1483 SetIntItem(PY_RELEASE_SERIAL); |
|
51378
4cc49d978ec2
Merged revisions 69331 via svnmerge from
Eric Smith <eric@trueblade.com>
parents:
50743
diff
changeset
|
1484 #undef SetIntItem |
|
4cc49d978ec2
Merged revisions 69331 via svnmerge from
Eric Smith <eric@trueblade.com>
parents:
50743
diff
changeset
|
1485 #undef SetStrItem |
|
4cc49d978ec2
Merged revisions 69331 via svnmerge from
Eric Smith <eric@trueblade.com>
parents:
50743
diff
changeset
|
1486 |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1487 if (PyErr_Occurred()) { |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1488 Py_CLEAR(version_info); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1489 return NULL; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1490 } |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1491 return version_info; |
|
51378
4cc49d978ec2
Merged revisions 69331 via svnmerge from
Eric Smith <eric@trueblade.com>
parents:
50743
diff
changeset
|
1492 } |
|
4cc49d978ec2
Merged revisions 69331 via svnmerge from
Eric Smith <eric@trueblade.com>
parents:
50743
diff
changeset
|
1493 |
|
47580
94f64f11fdd0
Implement PEP 3121: new module initialization and finalization API.
Martin v. Löwis <martin@v.loewis.de>
parents:
47489
diff
changeset
|
1494 static struct PyModuleDef sysmodule = { |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1495 PyModuleDef_HEAD_INIT, |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1496 "sys", |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1497 sys_doc, |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1498 -1, /* multiple "initialization" just copies the module dict. */ |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1499 sys_methods, |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1500 NULL, |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1501 NULL, |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1502 NULL, |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1503 NULL |
|
47580
94f64f11fdd0
Implement PEP 3121: new module initialization and finalization API.
Martin v. Löwis <martin@v.loewis.de>
parents:
47489
diff
changeset
|
1504 }; |
|
94f64f11fdd0
Implement PEP 3121: new module initialization and finalization API.
Martin v. Löwis <martin@v.loewis.de>
parents:
47489
diff
changeset
|
1505 |
|
5926
8d2194e22e67
The last of the mass checkins for separate (sub)interpreters.
Guido van Rossum <guido@python.org>
parents:
5863
diff
changeset
|
1506 PyObject * |
|
13658
f79434ee41fa
Mass ANSIfication of function definitions. Doesn't cover all 'extern'
Thomas Wouters <thomas@python.org>
parents:
13447
diff
changeset
|
1507 _PySys_Init(void) |
| 6 | 1508 { |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1509 PyObject *m, *v, *sysdict; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1510 char *s; |
|
5926
8d2194e22e67
The last of the mass checkins for separate (sub)interpreters.
Guido van Rossum <guido@python.org>
parents:
5863
diff
changeset
|
1511 |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1512 m = PyModule_Create(&sysmodule); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1513 if (m == NULL) |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1514 return NULL; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1515 sysdict = PyModule_GetDict(m); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1516 #define SET_SYS_FROM_STRING(key, value) \ |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1517 v = value; \ |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1518 if (v != NULL) \ |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1519 PyDict_SetItemString(sysdict, key, v); \ |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1520 Py_XDECREF(v) |
|
5926
8d2194e22e67
The last of the mass checkins for separate (sub)interpreters.
Guido van Rossum <guido@python.org>
parents:
5863
diff
changeset
|
1521 |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1522 /* Check that stdin is not a directory |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1523 Using shell redirection, you can redirect stdin to a directory, |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1524 crashing the Python interpreter. Catch this common mistake here |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1525 and output a useful error message. Note that under MS Windows, |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1526 the shell already prevents that. */ |
|
50743
e8154bd322cb
Merged revisions 68540 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
49613
diff
changeset
|
1527 #if !defined(MS_WINDOWS) |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1528 { |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1529 struct stat sb; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1530 if (fstat(fileno(stdin), &sb) == 0 && |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1531 S_ISDIR(sb.st_mode)) { |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1532 /* There's nothing more we can do. */ |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1533 /* Py_FatalError() will core dump, so just exit. */ |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1534 PySys_WriteStderr("Python error: <stdin> is a directory, cannot continue\n"); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1535 exit(EXIT_FAILURE); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1536 } |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1537 } |
|
50743
e8154bd322cb
Merged revisions 68540 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
49613
diff
changeset
|
1538 #endif |
|
35673
612a12178e47
SF bug #887946, segfault if redirecting directory
Neal Norwitz <nnorwitz@gmail.com>
parents:
35572
diff
changeset
|
1539 |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1540 /* stdin/stdout/stderr are now set by pythonrun.c */ |
|
29065
bf1634b023d5
Patch #612627: Add encoding attribute to file objects, and determine
Martin v. Löwis <martin@v.loewis.de>
parents:
28949
diff
changeset
|
1541 |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1542 PyDict_SetItemString(sysdict, "__displayhook__", |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1543 PyDict_GetItemString(sysdict, "displayhook")); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1544 PyDict_SetItemString(sysdict, "__excepthook__", |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1545 PyDict_GetItemString(sysdict, "excepthook")); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1546 SET_SYS_FROM_STRING("version", |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1547 PyUnicode_FromString(Py_GetVersion())); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1548 SET_SYS_FROM_STRING("hexversion", |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1549 PyLong_FromLong(PY_VERSION_HEX)); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1550 svnversion_init(); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1551 SET_SYS_FROM_STRING("subversion", |
|
62155
600c23127207
Issue #8848: U / U# formats of Py_BuildValue() are just alias to s / s#
Victor Stinner <victor.stinner@haypocalc.com>
parents:
61873
diff
changeset
|
1552 Py_BuildValue("(sss)", "CPython", branch, |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1553 svn_revision)); |
|
68274
f57c94073b35
Commit the hg build identification patch from the pymigr repo.
Georg Brandl <georg@python.org>
parents:
62190
diff
changeset
|
1554 SET_SYS_FROM_STRING("_mercurial", |
|
f57c94073b35
Commit the hg build identification patch from the pymigr repo.
Georg Brandl <georg@python.org>
parents:
62190
diff
changeset
|
1555 Py_BuildValue("(szz)", "CPython", _Py_hgidentifier(), |
|
f57c94073b35
Commit the hg build identification patch from the pymigr repo.
Georg Brandl <georg@python.org>
parents:
62190
diff
changeset
|
1556 _Py_hgversion())); |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1557 SET_SYS_FROM_STRING("dont_write_bytecode", |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1558 PyBool_FromLong(Py_DontWriteBytecodeFlag)); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1559 SET_SYS_FROM_STRING("api_version", |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1560 PyLong_FromLong(PYTHON_API_VERSION)); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1561 SET_SYS_FROM_STRING("copyright", |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1562 PyUnicode_FromString(Py_GetCopyright())); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1563 SET_SYS_FROM_STRING("platform", |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1564 PyUnicode_FromString(Py_GetPlatform())); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1565 SET_SYS_FROM_STRING("executable", |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1566 PyUnicode_FromWideChar( |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1567 Py_GetProgramFullPath(), -1)); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1568 SET_SYS_FROM_STRING("prefix", |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1569 PyUnicode_FromWideChar(Py_GetPrefix(), -1)); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1570 SET_SYS_FROM_STRING("exec_prefix", |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1571 PyUnicode_FromWideChar(Py_GetExecPrefix(), -1)); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1572 SET_SYS_FROM_STRING("maxsize", |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1573 PyLong_FromSsize_t(PY_SSIZE_T_MAX)); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1574 SET_SYS_FROM_STRING("float_info", |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1575 PyFloat_GetInfo()); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1576 SET_SYS_FROM_STRING("int_info", |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1577 PyLong_GetInfo()); |
|
61873
0bc8ffe6ba9a
Issue #8188: Introduce a new scheme for computing hashes of numbers
Mark Dickinson <dickinsm@gmail.com>
parents:
61790
diff
changeset
|
1578 /* initialize hash_info */ |
|
0bc8ffe6ba9a
Issue #8188: Introduce a new scheme for computing hashes of numbers
Mark Dickinson <dickinsm@gmail.com>
parents:
61790
diff
changeset
|
1579 if (Hash_InfoType.tp_name == 0) |
|
0bc8ffe6ba9a
Issue #8188: Introduce a new scheme for computing hashes of numbers
Mark Dickinson <dickinsm@gmail.com>
parents:
61790
diff
changeset
|
1580 PyStructSequence_InitType(&Hash_InfoType, &hash_info_desc); |
|
0bc8ffe6ba9a
Issue #8188: Introduce a new scheme for computing hashes of numbers
Mark Dickinson <dickinsm@gmail.com>
parents:
61790
diff
changeset
|
1581 SET_SYS_FROM_STRING("hash_info", |
|
0bc8ffe6ba9a
Issue #8188: Introduce a new scheme for computing hashes of numbers
Mark Dickinson <dickinsm@gmail.com>
parents:
61790
diff
changeset
|
1582 get_hash_info()); |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1583 SET_SYS_FROM_STRING("maxunicode", |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1584 PyLong_FromLong(PyUnicode_GetMax())); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1585 SET_SYS_FROM_STRING("builtin_module_names", |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1586 list_builtin_module_names()); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1587 { |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1588 /* Assumes that longs are at least 2 bytes long. |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1589 Should be safe! */ |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1590 unsigned long number = 1; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1591 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
|
1592 |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1593 s = (char *) &number; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1594 if (s[0] == 0) |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1595 value = "big"; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1596 else |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1597 value = "little"; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1598 SET_SYS_FROM_STRING("byteorder", |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1599 PyUnicode_FromString(value)); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1600 } |
|
4126
c80c515999b9
Use MS_DLL_ID as sys.winver
Guido van Rossum <guido@python.org>
parents:
3877
diff
changeset
|
1601 #ifdef MS_COREDLL |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1602 SET_SYS_FROM_STRING("dllhandle", |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1603 PyLong_FromVoidPtr(PyWin_DLLhModule)); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1604 SET_SYS_FROM_STRING("winver", |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1605 PyUnicode_FromString(PyWin_DLLVersionString)); |
|
3490
1dfc519ea3cb
Under NT, define sys.dllhandle and sys.winver (Mark H.).
Guido van Rossum <guido@python.org>
parents:
3326
diff
changeset
|
1606 #endif |
|
65389
932f97bfbdc0
First (uncontroversial) part of issue 9807.
Barry Warsaw <barry@python.org>
parents:
65166
diff
changeset
|
1607 #ifdef ABIFLAGS |
|
932f97bfbdc0
First (uncontroversial) part of issue 9807.
Barry Warsaw <barry@python.org>
parents:
65166
diff
changeset
|
1608 SET_SYS_FROM_STRING("abiflags", |
|
932f97bfbdc0
First (uncontroversial) part of issue 9807.
Barry Warsaw <barry@python.org>
parents:
65166
diff
changeset
|
1609 PyUnicode_FromString(ABIFLAGS)); |
|
932f97bfbdc0
First (uncontroversial) part of issue 9807.
Barry Warsaw <barry@python.org>
parents:
65166
diff
changeset
|
1610 #endif |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1611 if (warnoptions == NULL) { |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1612 warnoptions = PyList_New(0); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1613 } |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1614 else { |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1615 Py_INCREF(warnoptions); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1616 } |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1617 if (warnoptions != NULL) { |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1618 PyDict_SetItemString(sysdict, "warnoptions", warnoptions); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1619 } |
|
36211
6d743e5baf14
Trimmed trailing whitespace.
Tim Peters <tim.peters@gmail.com>
parents:
36207
diff
changeset
|
1620 |
|
65575
0b5bfba7a907
Issue #10089: Add support for arbitrary -X options on the command-line.
Antoine Pitrou <solipsis@pitrou.net>
parents:
65494
diff
changeset
|
1621 v = get_xoptions(); |
|
0b5bfba7a907
Issue #10089: Add support for arbitrary -X options on the command-line.
Antoine Pitrou <solipsis@pitrou.net>
parents:
65494
diff
changeset
|
1622 if (v != NULL) { |
|
0b5bfba7a907
Issue #10089: Add support for arbitrary -X options on the command-line.
Antoine Pitrou <solipsis@pitrou.net>
parents:
65494
diff
changeset
|
1623 PyDict_SetItemString(sysdict, "_xoptions", v); |
|
0b5bfba7a907
Issue #10089: Add support for arbitrary -X options on the command-line.
Antoine Pitrou <solipsis@pitrou.net>
parents:
65494
diff
changeset
|
1624 } |
|
0b5bfba7a907
Issue #10089: Add support for arbitrary -X options on the command-line.
Antoine Pitrou <solipsis@pitrou.net>
parents:
65494
diff
changeset
|
1625 |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1626 /* version_info */ |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1627 if (VersionInfoType.tp_name == 0) |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1628 PyStructSequence_InitType(&VersionInfoType, &version_info_desc); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1629 SET_SYS_FROM_STRING("version_info", make_version_info()); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1630 /* prevent user from creating new instances */ |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1631 VersionInfoType.tp_init = NULL; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1632 VersionInfoType.tp_new = NULL; |
|
51378
4cc49d978ec2
Merged revisions 69331 via svnmerge from
Eric Smith <eric@trueblade.com>
parents:
50743
diff
changeset
|
1633 |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1634 /* flags */ |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1635 if (FlagsType.tp_name == 0) |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1636 PyStructSequence_InitType(&FlagsType, &flags_desc); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1637 SET_SYS_FROM_STRING("flags", make_flags()); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1638 /* prevent user from creating new instances */ |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1639 FlagsType.tp_init = NULL; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1640 FlagsType.tp_new = NULL; |
|
44674
1154158a199f
Merged revisions 59933-59951 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44587
diff
changeset
|
1641 |
|
58507
7379cf70fd60
Merged revisions 77763 via svnmerge from
Eric Smith <eric@trueblade.com>
parents:
57181
diff
changeset
|
1642 |
|
7379cf70fd60
Merged revisions 77763 via svnmerge from
Eric Smith <eric@trueblade.com>
parents:
57181
diff
changeset
|
1643 #if defined(MS_WINDOWS) |
|
61466
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60889
diff
changeset
|
1644 /* getwindowsversion */ |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60889
diff
changeset
|
1645 if (WindowsVersionType.tp_name == 0) |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60889
diff
changeset
|
1646 PyStructSequence_InitType(&WindowsVersionType, &windows_version_desc); |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60889
diff
changeset
|
1647 /* prevent user from creating new instances */ |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60889
diff
changeset
|
1648 WindowsVersionType.tp_init = NULL; |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60889
diff
changeset
|
1649 WindowsVersionType.tp_new = NULL; |
|
58507
7379cf70fd60
Merged revisions 77763 via svnmerge from
Eric Smith <eric@trueblade.com>
parents:
57181
diff
changeset
|
1650 #endif |
|
7379cf70fd60
Merged revisions 77763 via svnmerge from
Eric Smith <eric@trueblade.com>
parents:
57181
diff
changeset
|
1651 |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1652 /* float repr style: 0.03 (short) vs 0.029999999999999999 (legacy) */ |
|
53185
97ae7a709c1d
Issue #1580: use short float repr where possible.
Mark Dickinson <dickinsm@gmail.com>
parents:
52215
diff
changeset
|
1653 #ifndef PY_NO_SHORT_FLOAT_REPR |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1654 SET_SYS_FROM_STRING("float_repr_style", |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1655 PyUnicode_FromString("short")); |
|
53185
97ae7a709c1d
Issue #1580: use short float repr where possible.
Mark Dickinson <dickinsm@gmail.com>
parents:
52215
diff
changeset
|
1656 #else |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1657 SET_SYS_FROM_STRING("float_repr_style", |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1658 PyUnicode_FromString("legacy")); |
|
53185
97ae7a709c1d
Issue #1580: use short float repr where possible.
Mark Dickinson <dickinsm@gmail.com>
parents:
52215
diff
changeset
|
1659 #endif |
|
97ae7a709c1d
Issue #1580: use short float repr where possible.
Mark Dickinson <dickinsm@gmail.com>
parents:
52215
diff
changeset
|
1660 |
|
45071
f380d991390e
Merged revisions 60441-60474 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45026
diff
changeset
|
1661 #undef SET_SYS_FROM_STRING |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1662 if (PyErr_Occurred()) |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1663 return NULL; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1664 return m; |
| 86 | 1665 } |
| 1666 | |
| 5372 | 1667 static PyObject * |
|
46318
22a74eaf6b22
Change command line processing API to use wchar_t.
Martin v. Löwis <martin@v.loewis.de>
parents:
45145
diff
changeset
|
1668 makepathobject(const wchar_t *path, wchar_t delim) |
| 86 | 1669 { |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1670 int i, n; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1671 const wchar_t *p; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1672 PyObject *v, *w; |
|
36211
6d743e5baf14
Trimmed trailing whitespace.
Tim Peters <tim.peters@gmail.com>
parents:
36207
diff
changeset
|
1673 |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1674 n = 1; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1675 p = path; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1676 while ((p = wcschr(p, delim)) != NULL) { |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1677 n++; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1678 p++; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1679 } |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1680 v = PyList_New(n); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1681 if (v == NULL) |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1682 return NULL; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1683 for (i = 0; ; i++) { |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1684 p = wcschr(path, delim); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1685 if (p == NULL) |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1686 p = path + wcslen(path); /* End of string */ |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1687 w = PyUnicode_FromWideChar(path, (Py_ssize_t)(p - path)); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1688 if (w == NULL) { |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1689 Py_DECREF(v); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1690 return NULL; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1691 } |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1692 PyList_SetItem(v, i, w); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1693 if (*p == '\0') |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1694 break; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1695 path = p+1; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1696 } |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1697 return v; |
| 86 | 1698 } |
| 1699 | |
| 1700 void | |
|
46318
22a74eaf6b22
Change command line processing API to use wchar_t.
Martin v. Löwis <martin@v.loewis.de>
parents:
45145
diff
changeset
|
1701 PySys_SetPath(const wchar_t *path) |
| 86 | 1702 { |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1703 PyObject *v; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1704 if ((v = makepathobject(path, DELIM)) == NULL) |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1705 Py_FatalError("can't create sys.path"); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1706 if (PySys_SetObject("path", v) != 0) |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1707 Py_FatalError("can't assign sys.path"); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1708 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
|
1709 } |
|
f6bcf3c1d714
Empty all modules' symbol tables, so most circular references are
Guido van Rossum <guido@python.org>
parents:
6
diff
changeset
|
1710 |
| 5372 | 1711 static PyObject * |
|
46318
22a74eaf6b22
Change command line processing API to use wchar_t.
Martin v. Löwis <martin@v.loewis.de>
parents:
45145
diff
changeset
|
1712 makeargvobject(int argc, wchar_t **argv) |
|
83
f6bcf3c1d714
Empty all modules' symbol tables, so most circular references are
Guido van Rossum <guido@python.org>
parents:
6
diff
changeset
|
1713 { |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1714 PyObject *av; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1715 if (argc <= 0 || argv == NULL) { |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1716 /* Ensure at least one (empty) argument is seen */ |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1717 static wchar_t *empty_argv[1] = {L""}; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1718 argv = empty_argv; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1719 argc = 1; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1720 } |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1721 av = PyList_New(argc); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1722 if (av != NULL) { |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1723 int i; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1724 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
|
1725 #ifdef __VMS |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1726 PyObject *v; |
|
28949
ac487a7f7f2c
Patch #708495: Port more stuff to OpenVMS.
Martin v. Löwis <martin@v.loewis.de>
parents:
28556
diff
changeset
|
1727 |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1728 /* argv[0] is the script pathname if known */ |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1729 if (i == 0) { |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1730 char* fn = decc$translate_vms(argv[0]); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1731 if ((fn == (char *)0) || fn == (char *)-1) |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1732 v = PyUnicode_FromString(argv[0]); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1733 else |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1734 v = PyUnicode_FromString( |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1735 decc$translate_vms(argv[0])); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1736 } else |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1737 v = PyUnicode_FromString(argv[i]); |
|
28949
ac487a7f7f2c
Patch #708495: Port more stuff to OpenVMS.
Martin v. Löwis <martin@v.loewis.de>
parents:
28556
diff
changeset
|
1738 #else |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1739 PyObject *v = PyUnicode_FromWideChar(argv[i], -1); |
|
28949
ac487a7f7f2c
Patch #708495: Port more stuff to OpenVMS.
Martin v. Löwis <martin@v.loewis.de>
parents:
28556
diff
changeset
|
1740 #endif |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1741 if (v == NULL) { |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1742 Py_DECREF(av); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1743 av = NULL; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1744 break; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1745 } |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1746 PyList_SetItem(av, i, v); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1747 } |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1748 } |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1749 return av; |
| 6 | 1750 } |
| 1751 | |
|
64110
212a16f906a6
Issue #8202: Set sys.argv[0] to -m rather than -c while searching for the module to execute. Also updates all the cmd_line_script tests to validate the setting of sys.path[0] and the current working directory
Nick Coghlan <ncoghlan@gmail.com>
parents:
64064
diff
changeset
|
1752 #define _HAVE_SCRIPT_ARGUMENT(argc, argv) \ |
|
212a16f906a6
Issue #8202: Set sys.argv[0] to -m rather than -c while searching for the module to execute. Also updates all the cmd_line_script tests to validate the setting of sys.path[0] and the current working directory
Nick Coghlan <ncoghlan@gmail.com>
parents:
64064
diff
changeset
|
1753 (argc > 0 && argv0 != NULL && \ |
|
212a16f906a6
Issue #8202: Set sys.argv[0] to -m rather than -c while searching for the module to execute. Also updates all the cmd_line_script tests to validate the setting of sys.path[0] and the current working directory
Nick Coghlan <ncoghlan@gmail.com>
parents:
64064
diff
changeset
|
1754 wcscmp(argv0, L"-c") != 0 && wcscmp(argv0, L"-m") != 0) |
|
65154
62c58dc912e8
Create a subfunction for PySys_SetArgvEx()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
64622
diff
changeset
|
1755 |
|
62c58dc912e8
Create a subfunction for PySys_SetArgvEx()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
64622
diff
changeset
|
1756 static void |
|
62c58dc912e8
Create a subfunction for PySys_SetArgvEx()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
64622
diff
changeset
|
1757 sys_update_path(int argc, wchar_t **argv) |
|
46318
22a74eaf6b22
Change command line processing API to use wchar_t.
Martin v. Löwis <martin@v.loewis.de>
parents:
45145
diff
changeset
|
1758 { |
|
65154
62c58dc912e8
Create a subfunction for PySys_SetArgvEx()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
64622
diff
changeset
|
1759 wchar_t *argv0; |
|
62c58dc912e8
Create a subfunction for PySys_SetArgvEx()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
64622
diff
changeset
|
1760 wchar_t *p = NULL; |
|
62c58dc912e8
Create a subfunction for PySys_SetArgvEx()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
64622
diff
changeset
|
1761 Py_ssize_t n = 0; |
|
62c58dc912e8
Create a subfunction for PySys_SetArgvEx()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
64622
diff
changeset
|
1762 PyObject *a; |
|
62c58dc912e8
Create a subfunction for PySys_SetArgvEx()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
64622
diff
changeset
|
1763 PyObject *path; |
|
62c58dc912e8
Create a subfunction for PySys_SetArgvEx()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
64622
diff
changeset
|
1764 #ifdef HAVE_READLINK |
|
62c58dc912e8
Create a subfunction for PySys_SetArgvEx()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
64622
diff
changeset
|
1765 wchar_t link[MAXPATHLEN+1]; |
|
62c58dc912e8
Create a subfunction for PySys_SetArgvEx()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
64622
diff
changeset
|
1766 wchar_t argv0copy[2*MAXPATHLEN+1]; |
|
62c58dc912e8
Create a subfunction for PySys_SetArgvEx()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
64622
diff
changeset
|
1767 int nr = 0; |
|
46318
22a74eaf6b22
Change command line processing API to use wchar_t.
Martin v. Löwis <martin@v.loewis.de>
parents:
45145
diff
changeset
|
1768 #endif |
|
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
|
1769 #if defined(HAVE_REALPATH) |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1770 wchar_t fullpath[MAXPATHLEN]; |
|
50743
e8154bd322cb
Merged revisions 68540 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
49613
diff
changeset
|
1771 #elif defined(MS_WINDOWS) && !defined(MS_WINCE) |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1772 wchar_t fullpath[MAX_PATH]; |
|
27156
585a6460f577
Patch #664376: sys.path[0] should contain absolute pathname.
Thomas Heller <theller@ctypes.org>
parents:
25666
diff
changeset
|
1773 #endif |
|
65154
62c58dc912e8
Create a subfunction for PySys_SetArgvEx()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
64622
diff
changeset
|
1774 |
|
62c58dc912e8
Create a subfunction for PySys_SetArgvEx()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
64622
diff
changeset
|
1775 path = PySys_GetObject("path"); |
|
62c58dc912e8
Create a subfunction for PySys_SetArgvEx()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
64622
diff
changeset
|
1776 if (path == NULL) |
|
62c58dc912e8
Create a subfunction for PySys_SetArgvEx()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
64622
diff
changeset
|
1777 return; |
|
62c58dc912e8
Create a subfunction for PySys_SetArgvEx()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
64622
diff
changeset
|
1778 |
|
62c58dc912e8
Create a subfunction for PySys_SetArgvEx()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
64622
diff
changeset
|
1779 argv0 = argv[0]; |
|
62c58dc912e8
Create a subfunction for PySys_SetArgvEx()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
64622
diff
changeset
|
1780 |
|
62c58dc912e8
Create a subfunction for PySys_SetArgvEx()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
64622
diff
changeset
|
1781 #ifdef HAVE_READLINK |
|
62c58dc912e8
Create a subfunction for PySys_SetArgvEx()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
64622
diff
changeset
|
1782 if (_HAVE_SCRIPT_ARGUMENT(argc, argv)) |
|
62c58dc912e8
Create a subfunction for PySys_SetArgvEx()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
64622
diff
changeset
|
1783 nr = _Py_wreadlink(argv0, link, MAXPATHLEN); |
|
62c58dc912e8
Create a subfunction for PySys_SetArgvEx()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
64622
diff
changeset
|
1784 if (nr > 0) { |
|
62c58dc912e8
Create a subfunction for PySys_SetArgvEx()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
64622
diff
changeset
|
1785 /* It's a symlink */ |
|
62c58dc912e8
Create a subfunction for PySys_SetArgvEx()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
64622
diff
changeset
|
1786 link[nr] = '\0'; |
|
62c58dc912e8
Create a subfunction for PySys_SetArgvEx()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
64622
diff
changeset
|
1787 if (link[0] == SEP) |
|
62c58dc912e8
Create a subfunction for PySys_SetArgvEx()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
64622
diff
changeset
|
1788 argv0 = link; /* Link to absolute path */ |
|
62c58dc912e8
Create a subfunction for PySys_SetArgvEx()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
64622
diff
changeset
|
1789 else if (wcschr(link, SEP) == NULL) |
|
62c58dc912e8
Create a subfunction for PySys_SetArgvEx()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
64622
diff
changeset
|
1790 ; /* Link without path */ |
|
62c58dc912e8
Create a subfunction for PySys_SetArgvEx()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
64622
diff
changeset
|
1791 else { |
|
62c58dc912e8
Create a subfunction for PySys_SetArgvEx()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
64622
diff
changeset
|
1792 /* Must join(dirname(argv0), link) */ |
|
62c58dc912e8
Create a subfunction for PySys_SetArgvEx()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
64622
diff
changeset
|
1793 wchar_t *q = wcsrchr(argv0, SEP); |
|
62c58dc912e8
Create a subfunction for PySys_SetArgvEx()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
64622
diff
changeset
|
1794 if (q == NULL) |
|
62c58dc912e8
Create a subfunction for PySys_SetArgvEx()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
64622
diff
changeset
|
1795 argv0 = link; /* argv0 without path */ |
|
62c58dc912e8
Create a subfunction for PySys_SetArgvEx()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
64622
diff
changeset
|
1796 else { |
|
62c58dc912e8
Create a subfunction for PySys_SetArgvEx()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
64622
diff
changeset
|
1797 /* Must make a copy */ |
|
62c58dc912e8
Create a subfunction for PySys_SetArgvEx()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
64622
diff
changeset
|
1798 wcscpy(argv0copy, argv0); |
|
62c58dc912e8
Create a subfunction for PySys_SetArgvEx()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
64622
diff
changeset
|
1799 q = wcsrchr(argv0copy, SEP); |
|
62c58dc912e8
Create a subfunction for PySys_SetArgvEx()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
64622
diff
changeset
|
1800 wcscpy(q+1, link); |
|
62c58dc912e8
Create a subfunction for PySys_SetArgvEx()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
64622
diff
changeset
|
1801 argv0 = argv0copy; |
|
62c58dc912e8
Create a subfunction for PySys_SetArgvEx()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
64622
diff
changeset
|
1802 } |
|
62c58dc912e8
Create a subfunction for PySys_SetArgvEx()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
64622
diff
changeset
|
1803 } |
|
62c58dc912e8
Create a subfunction for PySys_SetArgvEx()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
64622
diff
changeset
|
1804 } |
|
62c58dc912e8
Create a subfunction for PySys_SetArgvEx()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
64622
diff
changeset
|
1805 #endif /* HAVE_READLINK */ |
|
62c58dc912e8
Create a subfunction for PySys_SetArgvEx()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
64622
diff
changeset
|
1806 #if SEP == '\\' /* Special case for MS filename syntax */ |
|
62c58dc912e8
Create a subfunction for PySys_SetArgvEx()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
64622
diff
changeset
|
1807 if (_HAVE_SCRIPT_ARGUMENT(argc, argv)) { |
|
62c58dc912e8
Create a subfunction for PySys_SetArgvEx()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
64622
diff
changeset
|
1808 wchar_t *q; |
|
62c58dc912e8
Create a subfunction for PySys_SetArgvEx()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
64622
diff
changeset
|
1809 #if defined(MS_WINDOWS) && !defined(MS_WINCE) |
|
62c58dc912e8
Create a subfunction for PySys_SetArgvEx()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
64622
diff
changeset
|
1810 /* This code here replaces the first element in argv with the full |
|
62c58dc912e8
Create a subfunction for PySys_SetArgvEx()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
64622
diff
changeset
|
1811 path that it represents. Under CE, there are no relative paths so |
|
62c58dc912e8
Create a subfunction for PySys_SetArgvEx()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
64622
diff
changeset
|
1812 the argument must be the full path anyway. */ |
|
62c58dc912e8
Create a subfunction for PySys_SetArgvEx()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
64622
diff
changeset
|
1813 wchar_t *ptemp; |
|
62c58dc912e8
Create a subfunction for PySys_SetArgvEx()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
64622
diff
changeset
|
1814 if (GetFullPathNameW(argv0, |
|
62c58dc912e8
Create a subfunction for PySys_SetArgvEx()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
64622
diff
changeset
|
1815 sizeof(fullpath)/sizeof(fullpath[0]), |
|
62c58dc912e8
Create a subfunction for PySys_SetArgvEx()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
64622
diff
changeset
|
1816 fullpath, |
|
62c58dc912e8
Create a subfunction for PySys_SetArgvEx()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
64622
diff
changeset
|
1817 &ptemp)) { |
|
62c58dc912e8
Create a subfunction for PySys_SetArgvEx()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
64622
diff
changeset
|
1818 argv0 = fullpath; |
|
62c58dc912e8
Create a subfunction for PySys_SetArgvEx()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
64622
diff
changeset
|
1819 } |
|
62c58dc912e8
Create a subfunction for PySys_SetArgvEx()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
64622
diff
changeset
|
1820 #endif |
|
62c58dc912e8
Create a subfunction for PySys_SetArgvEx()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
64622
diff
changeset
|
1821 p = wcsrchr(argv0, SEP); |
|
62c58dc912e8
Create a subfunction for PySys_SetArgvEx()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
64622
diff
changeset
|
1822 /* Test for alternate separator */ |
|
62c58dc912e8
Create a subfunction for PySys_SetArgvEx()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
64622
diff
changeset
|
1823 q = wcsrchr(p ? p : argv0, '/'); |
|
62c58dc912e8
Create a subfunction for PySys_SetArgvEx()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
64622
diff
changeset
|
1824 if (q != NULL) |
|
62c58dc912e8
Create a subfunction for PySys_SetArgvEx()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
64622
diff
changeset
|
1825 p = q; |
|
62c58dc912e8
Create a subfunction for PySys_SetArgvEx()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
64622
diff
changeset
|
1826 if (p != NULL) { |
|
62c58dc912e8
Create a subfunction for PySys_SetArgvEx()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
64622
diff
changeset
|
1827 n = p + 1 - argv0; |
|
62c58dc912e8
Create a subfunction for PySys_SetArgvEx()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
64622
diff
changeset
|
1828 if (n > 1 && p[-1] != ':') |
|
62c58dc912e8
Create a subfunction for PySys_SetArgvEx()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
64622
diff
changeset
|
1829 n--; /* Drop trailing separator */ |
|
62c58dc912e8
Create a subfunction for PySys_SetArgvEx()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
64622
diff
changeset
|
1830 } |
|
62c58dc912e8
Create a subfunction for PySys_SetArgvEx()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
64622
diff
changeset
|
1831 } |
|
62c58dc912e8
Create a subfunction for PySys_SetArgvEx()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
64622
diff
changeset
|
1832 #else /* All other filename syntaxes */ |
|
62c58dc912e8
Create a subfunction for PySys_SetArgvEx()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
64622
diff
changeset
|
1833 if (_HAVE_SCRIPT_ARGUMENT(argc, argv)) { |
|
62c58dc912e8
Create a subfunction for PySys_SetArgvEx()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
64622
diff
changeset
|
1834 #if defined(HAVE_REALPATH) |
|
65166
8fd5d06462e6
_Py_wrealpath() requires the size of the output buffer
Victor Stinner <victor.stinner@haypocalc.com>
parents:
65162
diff
changeset
|
1835 if (_Py_wrealpath(argv0, fullpath, PATH_MAX)) { |
|
65154
62c58dc912e8
Create a subfunction for PySys_SetArgvEx()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
64622
diff
changeset
|
1836 argv0 = fullpath; |
|
62c58dc912e8
Create a subfunction for PySys_SetArgvEx()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
64622
diff
changeset
|
1837 } |
|
62c58dc912e8
Create a subfunction for PySys_SetArgvEx()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
64622
diff
changeset
|
1838 #endif |
|
62c58dc912e8
Create a subfunction for PySys_SetArgvEx()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
64622
diff
changeset
|
1839 p = wcsrchr(argv0, SEP); |
|
62c58dc912e8
Create a subfunction for PySys_SetArgvEx()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
64622
diff
changeset
|
1840 } |
|
62c58dc912e8
Create a subfunction for PySys_SetArgvEx()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
64622
diff
changeset
|
1841 if (p != NULL) { |
|
62c58dc912e8
Create a subfunction for PySys_SetArgvEx()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
64622
diff
changeset
|
1842 n = p + 1 - argv0; |
|
62c58dc912e8
Create a subfunction for PySys_SetArgvEx()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
64622
diff
changeset
|
1843 #if SEP == '/' /* Special case for Unix filename syntax */ |
|
62c58dc912e8
Create a subfunction for PySys_SetArgvEx()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
64622
diff
changeset
|
1844 if (n > 1) |
|
62c58dc912e8
Create a subfunction for PySys_SetArgvEx()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
64622
diff
changeset
|
1845 n--; /* Drop trailing separator */ |
|
62c58dc912e8
Create a subfunction for PySys_SetArgvEx()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
64622
diff
changeset
|
1846 #endif /* Unix */ |
|
62c58dc912e8
Create a subfunction for PySys_SetArgvEx()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
64622
diff
changeset
|
1847 } |
|
62c58dc912e8
Create a subfunction for PySys_SetArgvEx()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
64622
diff
changeset
|
1848 #endif /* All others */ |
|
62c58dc912e8
Create a subfunction for PySys_SetArgvEx()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
64622
diff
changeset
|
1849 a = PyUnicode_FromWideChar(argv0, n); |
|
62c58dc912e8
Create a subfunction for PySys_SetArgvEx()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
64622
diff
changeset
|
1850 if (a == NULL) |
|
62c58dc912e8
Create a subfunction for PySys_SetArgvEx()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
64622
diff
changeset
|
1851 Py_FatalError("no mem for sys.path insertion"); |
|
62c58dc912e8
Create a subfunction for PySys_SetArgvEx()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
64622
diff
changeset
|
1852 if (PyList_Insert(path, 0, a) < 0) |
|
62c58dc912e8
Create a subfunction for PySys_SetArgvEx()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
64622
diff
changeset
|
1853 Py_FatalError("sys.path.insert(0) failed"); |
|
62c58dc912e8
Create a subfunction for PySys_SetArgvEx()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
64622
diff
changeset
|
1854 Py_DECREF(a); |
|
62c58dc912e8
Create a subfunction for PySys_SetArgvEx()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
64622
diff
changeset
|
1855 } |
|
62c58dc912e8
Create a subfunction for PySys_SetArgvEx()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
64622
diff
changeset
|
1856 |
|
62c58dc912e8
Create a subfunction for PySys_SetArgvEx()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
64622
diff
changeset
|
1857 void |
|
62c58dc912e8
Create a subfunction for PySys_SetArgvEx()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
64622
diff
changeset
|
1858 PySys_SetArgvEx(int argc, wchar_t **argv, int updatepath) |
|
62c58dc912e8
Create a subfunction for PySys_SetArgvEx()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
64622
diff
changeset
|
1859 { |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1860 PyObject *av = makeargvobject(argc, argv); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1861 if (av == NULL) |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1862 Py_FatalError("no mem for sys.argv"); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1863 if (PySys_SetObject("argv", av) != 0) |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1864 Py_FatalError("can't assign sys.argv"); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1865 Py_DECREF(av); |
|
65154
62c58dc912e8
Create a subfunction for PySys_SetArgvEx()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
64622
diff
changeset
|
1866 if (updatepath) |
|
62c58dc912e8
Create a subfunction for PySys_SetArgvEx()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
64622
diff
changeset
|
1867 sys_update_path(argc, argv); |
| 6 | 1868 } |
|
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
|
1869 |
|
61791
9db8c414921f
Merged revisions 81400 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61467
diff
changeset
|
1870 void |
|
9db8c414921f
Merged revisions 81400 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61467
diff
changeset
|
1871 PySys_SetArgv(int argc, wchar_t **argv) |
|
9db8c414921f
Merged revisions 81400 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61467
diff
changeset
|
1872 { |
|
9db8c414921f
Merged revisions 81400 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61467
diff
changeset
|
1873 PySys_SetArgvEx(argc, argv, 1); |
|
9db8c414921f
Merged revisions 81400 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61467
diff
changeset
|
1874 } |
|
9db8c414921f
Merged revisions 81400 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61467
diff
changeset
|
1875 |
|
60890
c6b4f4f2b9a8
Merged revisions 80404 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents:
59302
diff
changeset
|
1876 /* Reimplementation of PyFile_WriteString() no calling indirectly |
|
c6b4f4f2b9a8
Merged revisions 80404 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents:
59302
diff
changeset
|
1877 PyErr_CheckSignals(): avoid the call to PyObject_Str(). */ |
|
c6b4f4f2b9a8
Merged revisions 80404 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents:
59302
diff
changeset
|
1878 |
|
c6b4f4f2b9a8
Merged revisions 80404 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents:
59302
diff
changeset
|
1879 static int |
|
64064
5d9bdf5aa07b
Issue #9599: Create PySys_FormatStdout() and PySys_FormatStderr()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
62828
diff
changeset
|
1880 sys_pyfile_write_unicode(PyObject *unicode, PyObject *file) |
|
60890
c6b4f4f2b9a8
Merged revisions 80404 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents:
59302
diff
changeset
|
1881 { |
|
64064
5d9bdf5aa07b
Issue #9599: Create PySys_FormatStdout() and PySys_FormatStderr()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
62828
diff
changeset
|
1882 PyObject *writer = NULL, *args = NULL, *result = NULL; |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1883 int err; |
|
60890
c6b4f4f2b9a8
Merged revisions 80404 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents:
59302
diff
changeset
|
1884 |
|
62190
7ccc55811413
Merged revisions 81841 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents:
61791
diff
changeset
|
1885 if (file == NULL) |
|
7ccc55811413
Merged revisions 81841 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents:
61791
diff
changeset
|
1886 return -1; |
|
7ccc55811413
Merged revisions 81841 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents:
61791
diff
changeset
|
1887 |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1888 writer = PyObject_GetAttrString(file, "write"); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1889 if (writer == NULL) |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1890 goto error; |
|
60890
c6b4f4f2b9a8
Merged revisions 80404 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents:
59302
diff
changeset
|
1891 |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1892 args = PyTuple_Pack(1, unicode); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1893 if (args == NULL) |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1894 goto error; |
|
60890
c6b4f4f2b9a8
Merged revisions 80404 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents:
59302
diff
changeset
|
1895 |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1896 result = PyEval_CallObject(writer, args); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1897 if (result == NULL) { |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1898 goto error; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1899 } else { |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1900 err = 0; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1901 goto finally; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1902 } |
|
60890
c6b4f4f2b9a8
Merged revisions 80404 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents:
59302
diff
changeset
|
1903 |
|
c6b4f4f2b9a8
Merged revisions 80404 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents:
59302
diff
changeset
|
1904 error: |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1905 err = -1; |
|
60890
c6b4f4f2b9a8
Merged revisions 80404 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents:
59302
diff
changeset
|
1906 finally: |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1907 Py_XDECREF(writer); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1908 Py_XDECREF(args); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1909 Py_XDECREF(result); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1910 return err; |
|
60890
c6b4f4f2b9a8
Merged revisions 80404 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents:
59302
diff
changeset
|
1911 } |
|
c6b4f4f2b9a8
Merged revisions 80404 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents:
59302
diff
changeset
|
1912 |
|
64064
5d9bdf5aa07b
Issue #9599: Create PySys_FormatStdout() and PySys_FormatStderr()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
62828
diff
changeset
|
1913 static int |
|
5d9bdf5aa07b
Issue #9599: Create PySys_FormatStdout() and PySys_FormatStderr()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
62828
diff
changeset
|
1914 sys_pyfile_write(const char *text, PyObject *file) |
|
5d9bdf5aa07b
Issue #9599: Create PySys_FormatStdout() and PySys_FormatStderr()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
62828
diff
changeset
|
1915 { |
|
5d9bdf5aa07b
Issue #9599: Create PySys_FormatStdout() and PySys_FormatStderr()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
62828
diff
changeset
|
1916 PyObject *unicode = NULL; |
|
5d9bdf5aa07b
Issue #9599: Create PySys_FormatStdout() and PySys_FormatStderr()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
62828
diff
changeset
|
1917 int err; |
|
5d9bdf5aa07b
Issue #9599: Create PySys_FormatStdout() and PySys_FormatStderr()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
62828
diff
changeset
|
1918 |
|
5d9bdf5aa07b
Issue #9599: Create PySys_FormatStdout() and PySys_FormatStderr()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
62828
diff
changeset
|
1919 if (file == NULL) |
|
5d9bdf5aa07b
Issue #9599: Create PySys_FormatStdout() and PySys_FormatStderr()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
62828
diff
changeset
|
1920 return -1; |
|
5d9bdf5aa07b
Issue #9599: Create PySys_FormatStdout() and PySys_FormatStderr()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
62828
diff
changeset
|
1921 |
|
5d9bdf5aa07b
Issue #9599: Create PySys_FormatStdout() and PySys_FormatStderr()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
62828
diff
changeset
|
1922 unicode = PyUnicode_FromString(text); |
|
5d9bdf5aa07b
Issue #9599: Create PySys_FormatStdout() and PySys_FormatStderr()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
62828
diff
changeset
|
1923 if (unicode == NULL) |
|
5d9bdf5aa07b
Issue #9599: Create PySys_FormatStdout() and PySys_FormatStderr()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
62828
diff
changeset
|
1924 return -1; |
|
5d9bdf5aa07b
Issue #9599: Create PySys_FormatStdout() and PySys_FormatStderr()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
62828
diff
changeset
|
1925 |
|
5d9bdf5aa07b
Issue #9599: Create PySys_FormatStdout() and PySys_FormatStderr()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
62828
diff
changeset
|
1926 err = sys_pyfile_write_unicode(unicode, file); |
|
5d9bdf5aa07b
Issue #9599: Create PySys_FormatStdout() and PySys_FormatStderr()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
62828
diff
changeset
|
1927 Py_DECREF(unicode); |
|
5d9bdf5aa07b
Issue #9599: Create PySys_FormatStdout() and PySys_FormatStderr()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
62828
diff
changeset
|
1928 return err; |
|
5d9bdf5aa07b
Issue #9599: Create PySys_FormatStdout() and PySys_FormatStderr()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
62828
diff
changeset
|
1929 } |
|
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
|
1930 |
|
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
|
1931 /* 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
|
1932 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
|
1933 |
|
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
|
1934 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
|
1935 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
|
1936 |
|
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
|
1937 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
|
1938 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
|
1939 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
|
1940 |
|
60890
c6b4f4f2b9a8
Merged revisions 80404 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents:
59302
diff
changeset
|
1941 PyErr_CheckSignals() is not called to avoid the execution of the Python |
|
64064
5d9bdf5aa07b
Issue #9599: Create PySys_FormatStdout() and PySys_FormatStderr()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
62828
diff
changeset
|
1942 signal handlers: they may raise a new exception whereas sys_write() |
|
5d9bdf5aa07b
Issue #9599: Create PySys_FormatStdout() and PySys_FormatStderr()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
62828
diff
changeset
|
1943 ignores all exceptions. |
|
60890
c6b4f4f2b9a8
Merged revisions 80404 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents:
59302
diff
changeset
|
1944 |
|
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
|
1945 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
|
1946 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
|
1947 |
|
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
|
1948 *** 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
|
1949 |
|
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
|
1950 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
|
1951 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
|
1952 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
|
1953 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
|
1954 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
|
1955 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
|
1956 |
|
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
|
1957 */ |
|
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
|
1958 |
|
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
|
1959 static void |
|
64064
5d9bdf5aa07b
Issue #9599: Create PySys_FormatStdout() and PySys_FormatStderr()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
62828
diff
changeset
|
1960 sys_write(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
|
1961 { |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1962 PyObject *file; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1963 PyObject *error_type, *error_value, *error_traceback; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1964 char buffer[1001]; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1965 int written; |
|
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
|
1966 |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1967 PyErr_Fetch(&error_type, &error_value, &error_traceback); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1968 file = PySys_GetObject(name); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1969 written = PyOS_vsnprintf(buffer, sizeof(buffer), format, va); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1970 if (sys_pyfile_write(buffer, file) != 0) { |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1971 PyErr_Clear(); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1972 fputs(buffer, fp); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1973 } |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1974 if (written < 0 || (size_t)written >= sizeof(buffer)) { |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1975 const char *truncated = "... truncated"; |
|
64064
5d9bdf5aa07b
Issue #9599: Create PySys_FormatStdout() and PySys_FormatStderr()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
62828
diff
changeset
|
1976 if (sys_pyfile_write(truncated, file) != 0) |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1977 fputs(truncated, fp); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1978 } |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1979 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
|
1980 } |
|
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
|
1981 |
|
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
|
1982 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
|
1983 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
|
1984 { |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1985 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
|
1986 |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1987 va_start(va, format); |
|
64064
5d9bdf5aa07b
Issue #9599: Create PySys_FormatStdout() and PySys_FormatStderr()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
62828
diff
changeset
|
1988 sys_write("stdout", stdout, format, va); |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1989 va_end(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
|
1990 } |
|
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
|
1991 |
|
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
|
1992 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
|
1993 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
|
1994 { |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1995 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
|
1996 |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1997 va_start(va, format); |
|
64064
5d9bdf5aa07b
Issue #9599: Create PySys_FormatStdout() and PySys_FormatStderr()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
62828
diff
changeset
|
1998 sys_write("stderr", stderr, format, va); |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60890
diff
changeset
|
1999 va_end(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
|
2000 } |
|
64064
5d9bdf5aa07b
Issue #9599: Create PySys_FormatStdout() and PySys_FormatStderr()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
62828
diff
changeset
|
2001 |
|
5d9bdf5aa07b
Issue #9599: Create PySys_FormatStdout() and PySys_FormatStderr()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
62828
diff
changeset
|
2002 static void |
|
5d9bdf5aa07b
Issue #9599: Create PySys_FormatStdout() and PySys_FormatStderr()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
62828
diff
changeset
|
2003 sys_format(char *name, FILE *fp, const char *format, va_list va) |
|
5d9bdf5aa07b
Issue #9599: Create PySys_FormatStdout() and PySys_FormatStderr()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
62828
diff
changeset
|
2004 { |
|
5d9bdf5aa07b
Issue #9599: Create PySys_FormatStdout() and PySys_FormatStderr()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
62828
diff
changeset
|
2005 PyObject *file, *message; |
|
5d9bdf5aa07b
Issue #9599: Create PySys_FormatStdout() and PySys_FormatStderr()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
62828
diff
changeset
|
2006 PyObject *error_type, *error_value, *error_traceback; |
|
5d9bdf5aa07b
Issue #9599: Create PySys_FormatStdout() and PySys_FormatStderr()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
62828
diff
changeset
|
2007 char *utf8; |
|
5d9bdf5aa07b
Issue #9599: Create PySys_FormatStdout() and PySys_FormatStderr()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
62828
diff
changeset
|
2008 |
|
5d9bdf5aa07b
Issue #9599: Create PySys_FormatStdout() and PySys_FormatStderr()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
62828
diff
changeset
|
2009 PyErr_Fetch(&error_type, &error_value, &error_traceback); |
|
5d9bdf5aa07b
Issue #9599: Create PySys_FormatStdout() and PySys_FormatStderr()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
62828
diff
changeset
|
2010 file = PySys_GetObject(name); |
|
5d9bdf5aa07b
Issue #9599: Create PySys_FormatStdout() and PySys_FormatStderr()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
62828
diff
changeset
|
2011 message = PyUnicode_FromFormatV(format, va); |
|
5d9bdf5aa07b
Issue #9599: Create PySys_FormatStdout() and PySys_FormatStderr()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
62828
diff
changeset
|
2012 if (message != NULL) { |
|
5d9bdf5aa07b
Issue #9599: Create PySys_FormatStdout() and PySys_FormatStderr()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
62828
diff
changeset
|
2013 if (sys_pyfile_write_unicode(message, file) != 0) { |
|
5d9bdf5aa07b
Issue #9599: Create PySys_FormatStdout() and PySys_FormatStderr()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
62828
diff
changeset
|
2014 PyErr_Clear(); |
|
5d9bdf5aa07b
Issue #9599: Create PySys_FormatStdout() and PySys_FormatStderr()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
62828
diff
changeset
|
2015 utf8 = _PyUnicode_AsString(message); |
|
5d9bdf5aa07b
Issue #9599: Create PySys_FormatStdout() and PySys_FormatStderr()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
62828
diff
changeset
|
2016 if (utf8 != NULL) |
|
5d9bdf5aa07b
Issue #9599: Create PySys_FormatStdout() and PySys_FormatStderr()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
62828
diff
changeset
|
2017 fputs(utf8, fp); |
|
5d9bdf5aa07b
Issue #9599: Create PySys_FormatStdout() and PySys_FormatStderr()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
62828
diff
changeset
|
2018 } |
|
5d9bdf5aa07b
Issue #9599: Create PySys_FormatStdout() and PySys_FormatStderr()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
62828
diff
changeset
|
2019 Py_DECREF(message); |
|
5d9bdf5aa07b
Issue #9599: Create PySys_FormatStdout() and PySys_FormatStderr()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
62828
diff
changeset
|
2020 } |
|
5d9bdf5aa07b
Issue #9599: Create PySys_FormatStdout() and PySys_FormatStderr()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
62828
diff
changeset
|
2021 PyErr_Restore(error_type, error_value, error_traceback); |
|
5d9bdf5aa07b
Issue #9599: Create PySys_FormatStdout() and PySys_FormatStderr()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
62828
diff
changeset
|
2022 } |
|
5d9bdf5aa07b
Issue #9599: Create PySys_FormatStdout() and PySys_FormatStderr()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
62828
diff
changeset
|
2023 |
|
5d9bdf5aa07b
Issue #9599: Create PySys_FormatStdout() and PySys_FormatStderr()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
62828
diff
changeset
|
2024 void |
|
5d9bdf5aa07b
Issue #9599: Create PySys_FormatStdout() and PySys_FormatStderr()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
62828
diff
changeset
|
2025 PySys_FormatStdout(const char *format, ...) |
|
5d9bdf5aa07b
Issue #9599: Create PySys_FormatStdout() and PySys_FormatStderr()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
62828
diff
changeset
|
2026 { |
|
5d9bdf5aa07b
Issue #9599: Create PySys_FormatStdout() and PySys_FormatStderr()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
62828
diff
changeset
|
2027 va_list va; |
|
5d9bdf5aa07b
Issue #9599: Create PySys_FormatStdout() and PySys_FormatStderr()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
62828
diff
changeset
|
2028 |
|
5d9bdf5aa07b
Issue #9599: Create PySys_FormatStdout() and PySys_FormatStderr()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
62828
diff
changeset
|
2029 va_start(va, format); |
|
5d9bdf5aa07b
Issue #9599: Create PySys_FormatStdout() and PySys_FormatStderr()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
62828
diff
changeset
|
2030 sys_format("stdout", stdout, format, va); |
|
5d9bdf5aa07b
Issue #9599: Create PySys_FormatStdout() and PySys_FormatStderr()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
62828
diff
changeset
|
2031 va_end(va); |
|
5d9bdf5aa07b
Issue #9599: Create PySys_FormatStdout() and PySys_FormatStderr()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
62828
diff
changeset
|
2032 } |
|
5d9bdf5aa07b
Issue #9599: Create PySys_FormatStdout() and PySys_FormatStderr()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
62828
diff
changeset
|
2033 |
|
5d9bdf5aa07b
Issue #9599: Create PySys_FormatStdout() and PySys_FormatStderr()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
62828
diff
changeset
|
2034 void |
|
5d9bdf5aa07b
Issue #9599: Create PySys_FormatStdout() and PySys_FormatStderr()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
62828
diff
changeset
|
2035 PySys_FormatStderr(const char *format, ...) |
|
5d9bdf5aa07b
Issue #9599: Create PySys_FormatStdout() and PySys_FormatStderr()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
62828
diff
changeset
|
2036 { |
|
5d9bdf5aa07b
Issue #9599: Create PySys_FormatStdout() and PySys_FormatStderr()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
62828
diff
changeset
|
2037 va_list va; |
|
5d9bdf5aa07b
Issue #9599: Create PySys_FormatStdout() and PySys_FormatStderr()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
62828
diff
changeset
|
2038 |
|
5d9bdf5aa07b
Issue #9599: Create PySys_FormatStdout() and PySys_FormatStderr()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
62828
diff
changeset
|
2039 va_start(va, format); |
|
5d9bdf5aa07b
Issue #9599: Create PySys_FormatStdout() and PySys_FormatStderr()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
62828
diff
changeset
|
2040 sys_format("stderr", stderr, format, va); |
|
5d9bdf5aa07b
Issue #9599: Create PySys_FormatStdout() and PySys_FormatStderr()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
62828
diff
changeset
|
2041 va_end(va); |
|
5d9bdf5aa07b
Issue #9599: Create PySys_FormatStdout() and PySys_FormatStderr()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
62828
diff
changeset
|
2042 } |
