Mercurial > cpython-lru_cache-weakref
annotate Modules/main.c @ 84007:dbfbdf2b5c19 3.3
Fix #17967: For ftp urls CWD to target instead of hopping to each directory
towards target. This fixes a bug where target is accessible, but parent
directories are restricted.
| author | Senthil Kumaran <senthil@uthcode.com> |
|---|---|
| date | Sat, 01 Jun 2013 08:27:06 -0700 |
| parents | 421a8a5ffbb2 |
| children | 4b33f74ab0f1 51caa0820fad |
| rev | line source |
|---|---|
| 2896 | 1 /* Python interpreter main program */ |
| 2 | |
| 3 #include "Python.h" | |
|
6763
12824fe04a08
Two changes by Jeff Rush (slightly tweaked):
Guido van Rossum <guido@python.org>
parents:
6538
diff
changeset
|
4 #include "osdefs.h" |
| 2896 | 5 |
|
49053
6746c6bee286
Issue #3705: py3k aborts if "-c" or "-m" is given a non-ascii value.
Antoine Pitrou <solipsis@pitrou.net>
parents:
48989
diff
changeset
|
6 #include <locale.h> |
|
6746c6bee286
Issue #3705: py3k aborts if "-c" or "-m" is given a non-ascii value.
Antoine Pitrou <solipsis@pitrou.net>
parents:
48989
diff
changeset
|
7 |
|
26550
b9c912e2c3c0
Patch #614055: Support OpenVMS.
Martin v. Löwis <martin@v.loewis.de>
parents:
25826
diff
changeset
|
8 #ifdef __VMS |
|
69580
ec754f8d2917
Issue #11918: OS/2 and VMS are no more supported because of the lack of
Victor Stinner <victor.stinner@haypocalc.com>
parents:
69070
diff
changeset
|
9 #error "PEP 11: VMS is now unsupported, code will be removed in Python 3.4" |
|
28169
bc2d07230934
Patch #696645: Remove VMS code with uncertain authorship.
Martin v. Löwis <martin@v.loewis.de>
parents:
26764
diff
changeset
|
10 #include <unixlib.h> |
|
26550
b9c912e2c3c0
Patch #614055: Support OpenVMS.
Martin v. Löwis <martin@v.loewis.de>
parents:
25826
diff
changeset
|
11 #endif |
|
b9c912e2c3c0
Patch #614055: Support OpenVMS.
Martin v. Löwis <martin@v.loewis.de>
parents:
25826
diff
changeset
|
12 |
|
24695
a989a2eaa2ac
On Cygwin, put stdin, stderr, and stdout in binary mode when the -u
Sjoerd Mullender <sjoerd@acm.org>
parents:
24480
diff
changeset
|
13 #if defined(MS_WINDOWS) || defined(__CYGWIN__) |
|
43048
6500c8bd7fea
Implement PYTHONNOERRORWINDOW.
Martin v. Löwis <martin@v.loewis.de>
parents:
42954
diff
changeset
|
14 #include <windows.h> |
|
38453
29ae5e0fc348
Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents:
37879
diff
changeset
|
15 #ifdef HAVE_FCNTL_H |
|
5000
7c7a186b6d86
Fix the _setmode() patch for MS_WINDOWS: include <fcntl.h> and use
Guido van Rossum <guido@python.org>
parents:
4934
diff
changeset
|
16 #include <fcntl.h> |
|
46318
22a74eaf6b22
Change command line processing API to use wchar_t.
Martin v. Löwis <martin@v.loewis.de>
parents:
45865
diff
changeset
|
17 #define PATH_MAX MAXPATHLEN |
|
5000
7c7a186b6d86
Fix the _setmode() patch for MS_WINDOWS: include <fcntl.h> and use
Guido van Rossum <guido@python.org>
parents:
4934
diff
changeset
|
18 #endif |
|
38453
29ae5e0fc348
Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents:
37879
diff
changeset
|
19 #endif |
|
5000
7c7a186b6d86
Fix the _setmode() patch for MS_WINDOWS: include <fcntl.h> and use
Guido van Rossum <guido@python.org>
parents:
4934
diff
changeset
|
20 |
|
43048
6500c8bd7fea
Implement PYTHONNOERRORWINDOW.
Martin v. Löwis <martin@v.loewis.de>
parents:
42954
diff
changeset
|
21 #ifdef _MSC_VER |
|
6500c8bd7fea
Implement PYTHONNOERRORWINDOW.
Martin v. Löwis <martin@v.loewis.de>
parents:
42954
diff
changeset
|
22 #include <crtdbg.h> |
|
6500c8bd7fea
Implement PYTHONNOERRORWINDOW.
Martin v. Löwis <martin@v.loewis.de>
parents:
42954
diff
changeset
|
23 #endif |
|
6500c8bd7fea
Implement PYTHONNOERRORWINDOW.
Martin v. Löwis <martin@v.loewis.de>
parents:
42954
diff
changeset
|
24 |
|
22114
c454b76d51e7
OS/2 EMX port changes (Modules part of patch #450267):
Andrew MacIntyre <andymac@bullseye.apana.org.au>
parents:
21928
diff
changeset
|
25 #if (defined(PYOS_OS2) && !defined(PYCC_GCC)) || defined(MS_WINDOWS) |
|
6763
12824fe04a08
Two changes by Jeff Rush (slightly tweaked):
Guido van Rossum <guido@python.org>
parents:
6538
diff
changeset
|
26 #define PYTHONHOMEHELP "<prefix>\\lib" |
|
12824fe04a08
Two changes by Jeff Rush (slightly tweaked):
Guido van Rossum <guido@python.org>
parents:
6538
diff
changeset
|
27 #else |
|
22114
c454b76d51e7
OS/2 EMX port changes (Modules part of patch #450267):
Andrew MacIntyre <andymac@bullseye.apana.org.au>
parents:
21928
diff
changeset
|
28 #if defined(PYOS_OS2) && defined(PYCC_GCC) |
|
c454b76d51e7
OS/2 EMX port changes (Modules part of patch #450267):
Andrew MacIntyre <andymac@bullseye.apana.org.au>
parents:
21928
diff
changeset
|
29 #define PYTHONHOMEHELP "<prefix>/Lib" |
|
c454b76d51e7
OS/2 EMX port changes (Modules part of patch #450267):
Andrew MacIntyre <andymac@bullseye.apana.org.au>
parents:
21928
diff
changeset
|
30 #else |
|
18088
86ccf93cc952
Removed the Python version from the PYTHONHOMEHELP string. It was
Marc-André Lemburg <mal@egenix.com>
parents:
17396
diff
changeset
|
31 #define PYTHONHOMEHELP "<prefix>/pythonX.X" |
|
6763
12824fe04a08
Two changes by Jeff Rush (slightly tweaked):
Guido van Rossum <guido@python.org>
parents:
6538
diff
changeset
|
32 #endif |
|
22114
c454b76d51e7
OS/2 EMX port changes (Modules part of patch #450267):
Andrew MacIntyre <andymac@bullseye.apana.org.au>
parents:
21928
diff
changeset
|
33 #endif |
|
6763
12824fe04a08
Two changes by Jeff Rush (slightly tweaked):
Guido van Rossum <guido@python.org>
parents:
6538
diff
changeset
|
34 |
|
15374
a826a46bae54
Move our own getopt() implementation to _PyOS_GetOpt(), and use it
Thomas Wouters <thomas@python.org>
parents:
14603
diff
changeset
|
35 #include "pygetopt.h" |
|
a826a46bae54
Move our own getopt() implementation to _PyOS_GetOpt(), and use it
Thomas Wouters <thomas@python.org>
parents:
14603
diff
changeset
|
36 |
|
14411
a707a5f17139
Instead of printing all 9 lines of copyright info, print
Guido van Rossum <guido@python.org>
parents:
14375
diff
changeset
|
37 #define COPYRIGHT \ |
|
18692
00695551d721
Add "help" to the things one is encouraged to type for more
Guido van Rossum <guido@python.org>
parents:
18611
diff
changeset
|
38 "Type \"help\", \"copyright\", \"credits\" or \"license\" " \ |
|
00695551d721
Add "help" to the things one is encouraged to type for more
Guido van Rossum <guido@python.org>
parents:
18611
diff
changeset
|
39 "for more information." |
|
14411
a707a5f17139
Instead of printing all 9 lines of copyright info, print
Guido van Rossum <guido@python.org>
parents:
14375
diff
changeset
|
40 |
|
37879
f731859e9b3b
Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents:
37875
diff
changeset
|
41 #ifdef __cplusplus |
|
f731859e9b3b
Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents:
37875
diff
changeset
|
42 extern "C" { |
|
f731859e9b3b
Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents:
37875
diff
changeset
|
43 #endif |
|
f731859e9b3b
Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents:
37875
diff
changeset
|
44 |
|
3773
6e40a2a3e6ef
New style names for getprogramname and getargcargv
Guido van Rossum <guido@python.org>
parents:
3701
diff
changeset
|
45 /* For Py_GetArgcArgv(); set by main() */ |
|
46318
22a74eaf6b22
Change command line processing API to use wchar_t.
Martin v. Löwis <martin@v.loewis.de>
parents:
45865
diff
changeset
|
46 static wchar_t **orig_argv; |
| 2896 | 47 static int orig_argc; |
| 48 | |
|
17396
beb9d2b02846
Updated version of RISCOS support. SF patch 411213 by Dietmar Schwertberger
Guido van Rossum <guido@python.org>
parents:
17125
diff
changeset
|
49 /* command line options */ |
|
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
|
50 #define BASE_OPTS L"bBc:dEhiJm:OqRsStuvVW:xX:?" |
|
17396
beb9d2b02846
Updated version of RISCOS support. SF patch 411213 by Dietmar Schwertberger
Guido van Rossum <guido@python.org>
parents:
17125
diff
changeset
|
51 |
|
beb9d2b02846
Updated version of RISCOS support. SF patch 411213 by Dietmar Schwertberger
Guido van Rossum <guido@python.org>
parents:
17125
diff
changeset
|
52 #define PROGRAM_OPTS BASE_OPTS |
|
16944
4baa5a955532
RISCOS changes by dschwertberger.
Guido van Rossum <guido@python.org>
parents:
16752
diff
changeset
|
53 |
| 2896 | 54 /* Short usage message (with %s for argv0) */ |
| 55 static char *usage_line = | |
|
46318
22a74eaf6b22
Change command line processing API to use wchar_t.
Martin v. Löwis <martin@v.loewis.de>
parents:
45865
diff
changeset
|
56 "usage: %ls [option] ... [-c cmd | -m mod | file | -] [arg] ...\n"; |
| 2896 | 57 |
| 58 /* Long usage message, split into parts < 512 bytes */ | |
|
19633
c0a44829bcd5
Add warning mode for classic division, almost exactly as specified in
Guido van Rossum <guido@python.org>
parents:
18808
diff
changeset
|
59 static char *usage_1 = "\ |
| 2896 | 60 Options and arguments (and corresponding environment variables):\n\ |
|
48989
6154516be49c
Fixed wording of python --help text.
Christian Heimes <christian@cheimes.de>
parents:
47464
diff
changeset
|
61 -b : issue warnings about str(bytes_instance), str(bytearray_instance)\n\ |
|
6154516be49c
Fixed wording of python --help text.
Christian Heimes <christian@cheimes.de>
parents:
47464
diff
changeset
|
62 and comparing bytes/bytearray with str. (-bb: issue errors)\n\ |
|
44587
fb5a6330f71b
Merged revisions 59822-59841 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
43914
diff
changeset
|
63 -B : don't write .py[co] files on import; also PYTHONDONTWRITEBYTECODE=x\n\ |
|
19633
c0a44829bcd5
Add warning mode for classic division, almost exactly as specified in
Guido van Rossum <guido@python.org>
parents:
18808
diff
changeset
|
64 -c cmd : program passed in as string (terminates option list)\n\ |
|
40450
cc992d75d5b3
Four months of trunk changes (including a few releases...)
Thomas Wouters <thomas@python.org>
parents:
39442
diff
changeset
|
65 -d : debug output from parser; also PYTHONDEBUG=x\n\ |
|
44587
fb5a6330f71b
Merged revisions 59822-59841 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
43914
diff
changeset
|
66 -E : ignore PYTHON* environment variables (such as PYTHONPATH)\n\ |
|
39442
654c380cf8b9
Merged revisions 46753-51188 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
38453
diff
changeset
|
67 -h : print this help message and exit (also --help)\n\ |
|
43777
0d462d789b18
Merging the py3k-pep3137 branch back into the py3k branch.
Guido van Rossum <guido@python.org>
parents:
43734
diff
changeset
|
68 "; |
|
0d462d789b18
Merging the py3k-pep3137 branch back into the py3k branch.
Guido van Rossum <guido@python.org>
parents:
43734
diff
changeset
|
69 static char *usage_2 = "\ |
|
40450
cc992d75d5b3
Four months of trunk changes (including a few releases...)
Thomas Wouters <thomas@python.org>
parents:
39442
diff
changeset
|
70 -i : inspect interactively after running script; forces a prompt even\n\ |
|
cc992d75d5b3
Four months of trunk changes (including a few releases...)
Thomas Wouters <thomas@python.org>
parents:
39442
diff
changeset
|
71 if stdin does not appear to be a terminal; also PYTHONINSPECT=x\n\ |
|
33680
bcafb68ad985
SF patch #1035498: -m option to run a module as a script
Raymond Hettinger <python@rcn.com>
parents:
33188
diff
changeset
|
72 -m mod : run library module as a script (terminates option list)\n\ |
|
40450
cc992d75d5b3
Four months of trunk changes (including a few releases...)
Thomas Wouters <thomas@python.org>
parents:
39442
diff
changeset
|
73 -O : optimize generated bytecode slightly; also PYTHONOPTIMIZE=x\n\ |
|
9986
d4b8ddd9a4fd
Document -OO; "unsafe" optimization that removes docstrings.
Guido van Rossum <guido@python.org>
parents:
9601
diff
changeset
|
74 -OO : remove doc-strings in addition to the -O optimizations\n\ |
|
66687
f35a6d7e325f
#1772833: add -q command line option.
Georg Brandl <georg@python.org>
parents:
66556
diff
changeset
|
75 -q : don't print version and copyright messages on interactive startup\n\ |
|
46708
74b9c85361f8
Merged revisions 62774-62775,62785,62787-62788 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
46453
diff
changeset
|
76 -s : don't add user site directory to sys.path; also PYTHONNOUSERSITE\n\ |
|
6203
f57ae68aa3ae
Added -X option to suppress default import of site.py. Also split the
Guido van Rossum <guido@python.org>
parents:
6199
diff
changeset
|
77 -S : don't imply 'import site' on initialization\n\ |
|
f57ae68aa3ae
Added -X option to suppress default import of site.py. Also split the
Guido van Rossum <guido@python.org>
parents:
6199
diff
changeset
|
78 "; |
|
19633
c0a44829bcd5
Add warning mode for classic division, almost exactly as specified in
Guido van Rossum <guido@python.org>
parents:
18808
diff
changeset
|
79 static char *usage_3 = "\ |
|
43777
0d462d789b18
Merging the py3k-pep3137 branch back into the py3k branch.
Guido van Rossum <guido@python.org>
parents:
43734
diff
changeset
|
80 -u : unbuffered binary stdout and stderr; also PYTHONUNBUFFERED=x\n\ |
|
33680
bcafb68ad985
SF patch #1035498: -m option to run a module as a script
Raymond Hettinger <python@rcn.com>
parents:
33188
diff
changeset
|
81 see man page for details on internal buffering relating to '-u'\n\ |
|
40450
cc992d75d5b3
Four months of trunk changes (including a few releases...)
Thomas Wouters <thomas@python.org>
parents:
39442
diff
changeset
|
82 -v : verbose (trace import statements); also PYTHONVERBOSE=x\n\ |
|
cc992d75d5b3
Four months of trunk changes (including a few releases...)
Thomas Wouters <thomas@python.org>
parents:
39442
diff
changeset
|
83 can be supplied multiple times to increase verbosity\n\ |
|
39442
654c380cf8b9
Merged revisions 46753-51188 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
38453
diff
changeset
|
84 -V : print the Python version number and exit (also --version)\n\ |
|
40450
cc992d75d5b3
Four months of trunk changes (including a few releases...)
Thomas Wouters <thomas@python.org>
parents:
39442
diff
changeset
|
85 -W arg : warning control; arg is action:message:category:module:lineno\n\ |
|
60436
f369db0d5845
Merged revisions 79878-79880 via svnmerge from
Philip Jenvey <pjenvey@underboss.org>
parents:
59536
diff
changeset
|
86 also PYTHONWARNINGS=arg\n\ |
|
19633
c0a44829bcd5
Add warning mode for classic division, almost exactly as specified in
Guido van Rossum <guido@python.org>
parents:
18808
diff
changeset
|
87 -x : skip first line of source, allowing use of non-Unix forms of #!cmd\n\ |
|
65575
0b5bfba7a907
Issue #10089: Add support for arbitrary -X options on the command-line.
Antoine Pitrou <solipsis@pitrou.net>
parents:
65484
diff
changeset
|
88 -X opt : set implementation-specific option\n\ |
|
43777
0d462d789b18
Merging the py3k-pep3137 branch back into the py3k branch.
Guido van Rossum <guido@python.org>
parents:
43734
diff
changeset
|
89 "; |
|
0d462d789b18
Merging the py3k-pep3137 branch back into the py3k branch.
Guido van Rossum <guido@python.org>
parents:
43734
diff
changeset
|
90 static char *usage_4 = "\ |
| 2896 | 91 file : program read from script file\n\ |
| 92 - : program read from stdin (default; interactive mode if a tty)\n\ | |
|
40450
cc992d75d5b3
Four months of trunk changes (including a few releases...)
Thomas Wouters <thomas@python.org>
parents:
39442
diff
changeset
|
93 arg ...: arguments passed to program in sys.argv[1:]\n\n\ |
| 2896 | 94 Other environment variables:\n\ |
| 95 PYTHONSTARTUP: file executed on interactive startup (no default)\n\ | |
|
6763
12824fe04a08
Two changes by Jeff Rush (slightly tweaked):
Guido van Rossum <guido@python.org>
parents:
6538
diff
changeset
|
96 PYTHONPATH : '%c'-separated list of directories prefixed to the\n\ |
| 2896 | 97 default module search path. The result is sys.path.\n\ |
|
44587
fb5a6330f71b
Merged revisions 59822-59841 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
43914
diff
changeset
|
98 "; |
|
64172
38ce947c28fb
PYTHONFSENCODING is not available on Windows or Mac OS X
Victor Stinner <victor.stinner@haypocalc.com>
parents:
64154
diff
changeset
|
99 static char *usage_5 = |
|
38ce947c28fb
PYTHONFSENCODING is not available on Windows or Mac OS X
Victor Stinner <victor.stinner@haypocalc.com>
parents:
64154
diff
changeset
|
100 "PYTHONHOME : alternate <prefix> directory (or <prefix>%c<exec_prefix>).\n" |
|
38ce947c28fb
PYTHONFSENCODING is not available on Windows or Mac OS X
Victor Stinner <victor.stinner@haypocalc.com>
parents:
64154
diff
changeset
|
101 " The default module search path uses %s.\n" |
|
38ce947c28fb
PYTHONFSENCODING is not available on Windows or Mac OS X
Victor Stinner <victor.stinner@haypocalc.com>
parents:
64154
diff
changeset
|
102 "PYTHONCASEOK : ignore case in 'import' statements (Windows).\n" |
|
38ce947c28fb
PYTHONFSENCODING is not available on Windows or Mac OS X
Victor Stinner <victor.stinner@haypocalc.com>
parents:
64154
diff
changeset
|
103 "PYTHONIOENCODING: Encoding[:errors] used for stdin/stdout/stderr.\n" |
|
75097
ed76dc34b39d
Merge 3.2: Issue #13703 plus some related test suite fixes.
Georg Brandl <georg@python.org>
diff
changeset
|
104 "PYTHONFAULTHANDLER: dump the Python traceback on fatal errors.\n\ |
| 2896 | 105 "; |
|
75066
f4b7ecf8a5f8
Issue #13703: add a way to randomize the hash values of basic types (str, bytes, datetime)
Georg Brandl <georg@python.org>
parents:
67586
diff
changeset
|
106 static char *usage_6 = "\ |
| 75157 | 107 PYTHONHASHSEED: if this variable is set to 'random', a random value is used\n\ |
|
75152
198e31774f0f
enable hash randomization by default
Benjamin Peterson <benjamin@python.org>
parents:
75143
diff
changeset
|
108 to seed the hashes of str, bytes and datetime objects. It can also be\n\ |
|
198e31774f0f
enable hash randomization by default
Benjamin Peterson <benjamin@python.org>
parents:
75143
diff
changeset
|
109 set to an integer in the range [0,4294967295] to get hash values with a\n\ |
|
198e31774f0f
enable hash randomization by default
Benjamin Peterson <benjamin@python.org>
parents:
75143
diff
changeset
|
110 predictable seed.\n\ |
|
75066
f4b7ecf8a5f8
Issue #13703: add a way to randomize the hash values of basic types (str, bytes, datetime)
Georg Brandl <georg@python.org>
parents:
67586
diff
changeset
|
111 "; |
| 2896 | 112 |
|
28453
df9b7cee1339
Patch #672053: Return a result from Py_Main, instead of exiting.
Martin v. Löwis <martin@v.loewis.de>
parents:
28451
diff
changeset
|
113 static int |
|
46318
22a74eaf6b22
Change command line processing API to use wchar_t.
Martin v. Löwis <martin@v.loewis.de>
parents:
45865
diff
changeset
|
114 usage(int exitcode, wchar_t* program) |
|
14603
80a782086a57
Py_Main(), usage(), usage_mid: Add -h and -V flags to print the usage
Barry Warsaw <barry@python.org>
parents:
14411
diff
changeset
|
115 { |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59536
diff
changeset
|
116 FILE *f = exitcode ? stderr : stdout; |
|
19633
c0a44829bcd5
Add warning mode for classic division, almost exactly as specified in
Guido van Rossum <guido@python.org>
parents:
18808
diff
changeset
|
117 |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59536
diff
changeset
|
118 fprintf(f, usage_line, program); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59536
diff
changeset
|
119 if (exitcode) |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59536
diff
changeset
|
120 fprintf(f, "Try `python -h' for more information.\n"); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59536
diff
changeset
|
121 else { |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59536
diff
changeset
|
122 fputs(usage_1, f); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59536
diff
changeset
|
123 fputs(usage_2, f); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59536
diff
changeset
|
124 fputs(usage_3, f); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59536
diff
changeset
|
125 fprintf(f, usage_4, DELIM); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59536
diff
changeset
|
126 fprintf(f, usage_5, DELIM, PYTHONHOMEHELP); |
|
75066
f4b7ecf8a5f8
Issue #13703: add a way to randomize the hash values of basic types (str, bytes, datetime)
Georg Brandl <georg@python.org>
parents:
67586
diff
changeset
|
127 fputs(usage_6, f); |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59536
diff
changeset
|
128 } |
|
26550
b9c912e2c3c0
Patch #614055: Support OpenVMS.
Martin v. Löwis <martin@v.loewis.de>
parents:
25826
diff
changeset
|
129 #if defined(__VMS) |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59536
diff
changeset
|
130 if (exitcode == 0) { |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59536
diff
changeset
|
131 /* suppress 'error' message */ |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59536
diff
changeset
|
132 return 1; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59536
diff
changeset
|
133 } |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59536
diff
changeset
|
134 else { |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59536
diff
changeset
|
135 /* STS$M_INHIB_MSG + SS$_ABORT */ |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59536
diff
changeset
|
136 return 0x1000002c; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59536
diff
changeset
|
137 } |
|
26550
b9c912e2c3c0
Patch #614055: Support OpenVMS.
Martin v. Löwis <martin@v.loewis.de>
parents:
25826
diff
changeset
|
138 #else |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59536
diff
changeset
|
139 return exitcode; |
|
26550
b9c912e2c3c0
Patch #614055: Support OpenVMS.
Martin v. Löwis <martin@v.loewis.de>
parents:
25826
diff
changeset
|
140 #endif |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59536
diff
changeset
|
141 /*NOTREACHED*/ |
|
14603
80a782086a57
Py_Main(), usage(), usage_mid: Add -h and -V flags to print the usage
Barry Warsaw <barry@python.org>
parents:
14411
diff
changeset
|
142 } |
|
80a782086a57
Py_Main(), usage(), usage_mid: Add -h and -V flags to print the usage
Barry Warsaw <barry@python.org>
parents:
14411
diff
changeset
|
143 |
|
30935
5d2b0e9062d5
Patch #794400: Let PYTHONSTARTUP influence the compiler flags.
Martin v. Löwis <martin@v.loewis.de>
parents:
30723
diff
changeset
|
144 static void RunStartupFile(PyCompilerFlags *cf) |
|
5d2b0e9062d5
Patch #794400: Let PYTHONSTARTUP influence the compiler flags.
Martin v. Löwis <martin@v.loewis.de>
parents:
30723
diff
changeset
|
145 { |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59536
diff
changeset
|
146 char *startup = Py_GETENV("PYTHONSTARTUP"); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59536
diff
changeset
|
147 if (startup != NULL && startup[0] != '\0') { |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59536
diff
changeset
|
148 FILE *fp = fopen(startup, "r"); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59536
diff
changeset
|
149 if (fp != NULL) { |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59536
diff
changeset
|
150 (void) PyRun_SimpleFileExFlags(fp, startup, 0, cf); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59536
diff
changeset
|
151 PyErr_Clear(); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59536
diff
changeset
|
152 fclose(fp); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59536
diff
changeset
|
153 } else { |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59536
diff
changeset
|
154 int save_errno; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59536
diff
changeset
|
155 |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59536
diff
changeset
|
156 save_errno = errno; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59536
diff
changeset
|
157 PySys_WriteStderr("Could not open PYTHONSTARTUP\n"); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59536
diff
changeset
|
158 errno = save_errno; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59536
diff
changeset
|
159 PyErr_SetFromErrnoWithFilename(PyExc_IOError, |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59536
diff
changeset
|
160 startup); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59536
diff
changeset
|
161 PyErr_Print(); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59536
diff
changeset
|
162 PyErr_Clear(); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59536
diff
changeset
|
163 } |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59536
diff
changeset
|
164 } |
|
30935
5d2b0e9062d5
Patch #794400: Let PYTHONSTARTUP influence the compiler flags.
Martin v. Löwis <martin@v.loewis.de>
parents:
30723
diff
changeset
|
165 } |
|
5d2b0e9062d5
Patch #794400: Let PYTHONSTARTUP influence the compiler flags.
Martin v. Löwis <martin@v.loewis.de>
parents:
30723
diff
changeset
|
166 |
|
37875
a4c70f3968be
Merge part of the trunk changes into the p3yk branch. This merges from 43030
Thomas Wouters <thomas@python.org>
parents:
36988
diff
changeset
|
167 |
|
49053
6746c6bee286
Issue #3705: py3k aborts if "-c" or "-m" is given a non-ascii value.
Antoine Pitrou <solipsis@pitrou.net>
parents:
48989
diff
changeset
|
168 static int RunModule(wchar_t *modname, int set_argv0) |
|
33680
bcafb68ad985
SF patch #1035498: -m option to run a module as a script
Raymond Hettinger <python@rcn.com>
parents:
33188
diff
changeset
|
169 { |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59536
diff
changeset
|
170 PyObject *module, *runpy, *runmodule, *runargs, *result; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59536
diff
changeset
|
171 runpy = PyImport_ImportModule("runpy"); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59536
diff
changeset
|
172 if (runpy == NULL) { |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59536
diff
changeset
|
173 fprintf(stderr, "Could not import runpy module\n"); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59536
diff
changeset
|
174 return -1; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59536
diff
changeset
|
175 } |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59536
diff
changeset
|
176 runmodule = PyObject_GetAttrString(runpy, "_run_module_as_main"); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59536
diff
changeset
|
177 if (runmodule == NULL) { |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59536
diff
changeset
|
178 fprintf(stderr, "Could not access runpy._run_module_as_main\n"); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59536
diff
changeset
|
179 Py_DECREF(runpy); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59536
diff
changeset
|
180 return -1; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59536
diff
changeset
|
181 } |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59536
diff
changeset
|
182 module = PyUnicode_FromWideChar(modname, wcslen(modname)); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59536
diff
changeset
|
183 if (module == NULL) { |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59536
diff
changeset
|
184 fprintf(stderr, "Could not convert module name to unicode\n"); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59536
diff
changeset
|
185 Py_DECREF(runpy); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59536
diff
changeset
|
186 Py_DECREF(runmodule); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59536
diff
changeset
|
187 return -1; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59536
diff
changeset
|
188 } |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59536
diff
changeset
|
189 runargs = Py_BuildValue("(Oi)", module, set_argv0); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59536
diff
changeset
|
190 if (runargs == NULL) { |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59536
diff
changeset
|
191 fprintf(stderr, |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59536
diff
changeset
|
192 "Could not create arguments for runpy._run_module_as_main\n"); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59536
diff
changeset
|
193 Py_DECREF(runpy); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59536
diff
changeset
|
194 Py_DECREF(runmodule); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59536
diff
changeset
|
195 Py_DECREF(module); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59536
diff
changeset
|
196 return -1; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59536
diff
changeset
|
197 } |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59536
diff
changeset
|
198 result = PyObject_Call(runmodule, runargs, NULL); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59536
diff
changeset
|
199 if (result == NULL) { |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59536
diff
changeset
|
200 PyErr_Print(); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59536
diff
changeset
|
201 } |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59536
diff
changeset
|
202 Py_DECREF(runpy); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59536
diff
changeset
|
203 Py_DECREF(runmodule); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59536
diff
changeset
|
204 Py_DECREF(module); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59536
diff
changeset
|
205 Py_DECREF(runargs); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59536
diff
changeset
|
206 if (result == NULL) { |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59536
diff
changeset
|
207 return -1; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59536
diff
changeset
|
208 } |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59536
diff
changeset
|
209 Py_DECREF(result); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59536
diff
changeset
|
210 return 0; |
|
33680
bcafb68ad985
SF patch #1035498: -m option to run a module as a script
Raymond Hettinger <python@rcn.com>
parents:
33188
diff
changeset
|
211 } |
|
14603
80a782086a57
Py_Main(), usage(), usage_mid: Add -h and -V flags to print the usage
Barry Warsaw <barry@python.org>
parents:
14411
diff
changeset
|
212 |
|
65155
f237fde925fa
Rewrite RunMainFromImporter()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
64667
diff
changeset
|
213 static int |
|
f237fde925fa
Rewrite RunMainFromImporter()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
64667
diff
changeset
|
214 RunMainFromImporter(wchar_t *filename) |
|
43897
41f7c13ef161
Merged revisions 59005-59040 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
43850
diff
changeset
|
215 { |
|
65155
f237fde925fa
Rewrite RunMainFromImporter()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
64667
diff
changeset
|
216 PyObject *argv0 = NULL, *importer, *sys_path; |
|
f237fde925fa
Rewrite RunMainFromImporter()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
64667
diff
changeset
|
217 int sts; |
|
43897
41f7c13ef161
Merged revisions 59005-59040 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
43850
diff
changeset
|
218 |
|
65155
f237fde925fa
Rewrite RunMainFromImporter()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
64667
diff
changeset
|
219 argv0 = PyUnicode_FromWideChar(filename, wcslen(filename)); |
|
f237fde925fa
Rewrite RunMainFromImporter()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
64667
diff
changeset
|
220 if (argv0 == NULL) |
|
f237fde925fa
Rewrite RunMainFromImporter()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
64667
diff
changeset
|
221 goto error; |
|
f237fde925fa
Rewrite RunMainFromImporter()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
64667
diff
changeset
|
222 |
|
f237fde925fa
Rewrite RunMainFromImporter()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
64667
diff
changeset
|
223 importer = PyImport_GetImporter(argv0); |
|
f237fde925fa
Rewrite RunMainFromImporter()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
64667
diff
changeset
|
224 if (importer == NULL) |
|
f237fde925fa
Rewrite RunMainFromImporter()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
64667
diff
changeset
|
225 goto error; |
|
f237fde925fa
Rewrite RunMainFromImporter()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
64667
diff
changeset
|
226 |
|
76582
7025ee00dbf6
Issue #14605: Use None in sys.path_importer_cache to represent no
Brett Cannon <brett@python.org>
parents:
75157
diff
changeset
|
227 if (importer == Py_None) { |
|
65155
f237fde925fa
Rewrite RunMainFromImporter()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
64667
diff
changeset
|
228 Py_DECREF(argv0); |
|
f237fde925fa
Rewrite RunMainFromImporter()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
64667
diff
changeset
|
229 Py_DECREF(importer); |
|
61466
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60688
diff
changeset
|
230 return -1; |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60688
diff
changeset
|
231 } |
|
65155
f237fde925fa
Rewrite RunMainFromImporter()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
64667
diff
changeset
|
232 Py_DECREF(importer); |
|
f237fde925fa
Rewrite RunMainFromImporter()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
64667
diff
changeset
|
233 |
|
f237fde925fa
Rewrite RunMainFromImporter()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
64667
diff
changeset
|
234 /* argv0 is usable as an import source, so put it in sys.path[0] |
|
f237fde925fa
Rewrite RunMainFromImporter()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
64667
diff
changeset
|
235 and import __main__ */ |
|
f237fde925fa
Rewrite RunMainFromImporter()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
64667
diff
changeset
|
236 sys_path = PySys_GetObject("path"); |
|
f237fde925fa
Rewrite RunMainFromImporter()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
64667
diff
changeset
|
237 if (sys_path == NULL) |
|
f237fde925fa
Rewrite RunMainFromImporter()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
64667
diff
changeset
|
238 goto error; |
|
f237fde925fa
Rewrite RunMainFromImporter()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
64667
diff
changeset
|
239 if (PyList_SetItem(sys_path, 0, argv0)) { |
|
f237fde925fa
Rewrite RunMainFromImporter()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
64667
diff
changeset
|
240 argv0 = NULL; |
|
f237fde925fa
Rewrite RunMainFromImporter()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
64667
diff
changeset
|
241 goto error; |
|
f237fde925fa
Rewrite RunMainFromImporter()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
64667
diff
changeset
|
242 } |
|
f237fde925fa
Rewrite RunMainFromImporter()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
64667
diff
changeset
|
243 Py_INCREF(argv0); |
|
f237fde925fa
Rewrite RunMainFromImporter()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
64667
diff
changeset
|
244 |
|
f237fde925fa
Rewrite RunMainFromImporter()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
64667
diff
changeset
|
245 sts = RunModule(L"__main__", 0); |
|
f237fde925fa
Rewrite RunMainFromImporter()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
64667
diff
changeset
|
246 return sts != 0; |
|
43897
41f7c13ef161
Merged revisions 59005-59040 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
43850
diff
changeset
|
247 |
|
65155
f237fde925fa
Rewrite RunMainFromImporter()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
64667
diff
changeset
|
248 error: |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59536
diff
changeset
|
249 Py_XDECREF(argv0); |
|
65155
f237fde925fa
Rewrite RunMainFromImporter()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
64667
diff
changeset
|
250 PyErr_Print(); |
|
f237fde925fa
Rewrite RunMainFromImporter()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
64667
diff
changeset
|
251 return 1; |
|
43897
41f7c13ef161
Merged revisions 59005-59040 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
43850
diff
changeset
|
252 } |
|
41f7c13ef161
Merged revisions 59005-59040 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
43850
diff
changeset
|
253 |
|
63792
275acfcccccb
Issue #9425: Create run_command() subfunction
Victor Stinner <victor.stinner@haypocalc.com>
parents:
61751
diff
changeset
|
254 static int |
|
275acfcccccb
Issue #9425: Create run_command() subfunction
Victor Stinner <victor.stinner@haypocalc.com>
parents:
61751
diff
changeset
|
255 run_command(wchar_t *command, PyCompilerFlags *cf) |
|
275acfcccccb
Issue #9425: Create run_command() subfunction
Victor Stinner <victor.stinner@haypocalc.com>
parents:
61751
diff
changeset
|
256 { |
|
275acfcccccb
Issue #9425: Create run_command() subfunction
Victor Stinner <victor.stinner@haypocalc.com>
parents:
61751
diff
changeset
|
257 PyObject *unicode, *bytes; |
|
275acfcccccb
Issue #9425: Create run_command() subfunction
Victor Stinner <victor.stinner@haypocalc.com>
parents:
61751
diff
changeset
|
258 int ret; |
|
275acfcccccb
Issue #9425: Create run_command() subfunction
Victor Stinner <victor.stinner@haypocalc.com>
parents:
61751
diff
changeset
|
259 |
|
275acfcccccb
Issue #9425: Create run_command() subfunction
Victor Stinner <victor.stinner@haypocalc.com>
parents:
61751
diff
changeset
|
260 unicode = PyUnicode_FromWideChar(command, -1); |
|
275acfcccccb
Issue #9425: Create run_command() subfunction
Victor Stinner <victor.stinner@haypocalc.com>
parents:
61751
diff
changeset
|
261 if (unicode == NULL) |
|
275acfcccccb
Issue #9425: Create run_command() subfunction
Victor Stinner <victor.stinner@haypocalc.com>
parents:
61751
diff
changeset
|
262 goto error; |
|
275acfcccccb
Issue #9425: Create run_command() subfunction
Victor Stinner <victor.stinner@haypocalc.com>
parents:
61751
diff
changeset
|
263 bytes = PyUnicode_AsUTF8String(unicode); |
|
275acfcccccb
Issue #9425: Create run_command() subfunction
Victor Stinner <victor.stinner@haypocalc.com>
parents:
61751
diff
changeset
|
264 Py_DECREF(unicode); |
|
275acfcccccb
Issue #9425: Create run_command() subfunction
Victor Stinner <victor.stinner@haypocalc.com>
parents:
61751
diff
changeset
|
265 if (bytes == NULL) |
|
275acfcccccb
Issue #9425: Create run_command() subfunction
Victor Stinner <victor.stinner@haypocalc.com>
parents:
61751
diff
changeset
|
266 goto error; |
|
275acfcccccb
Issue #9425: Create run_command() subfunction
Victor Stinner <victor.stinner@haypocalc.com>
parents:
61751
diff
changeset
|
267 ret = PyRun_SimpleStringFlags(PyBytes_AsString(bytes), cf); |
|
275acfcccccb
Issue #9425: Create run_command() subfunction
Victor Stinner <victor.stinner@haypocalc.com>
parents:
61751
diff
changeset
|
268 Py_DECREF(bytes); |
|
275acfcccccb
Issue #9425: Create run_command() subfunction
Victor Stinner <victor.stinner@haypocalc.com>
parents:
61751
diff
changeset
|
269 return ret != 0; |
|
275acfcccccb
Issue #9425: Create run_command() subfunction
Victor Stinner <victor.stinner@haypocalc.com>
parents:
61751
diff
changeset
|
270 |
|
275acfcccccb
Issue #9425: Create run_command() subfunction
Victor Stinner <victor.stinner@haypocalc.com>
parents:
61751
diff
changeset
|
271 error: |
|
64154
790d48788874
Improve error message if the command is not decodable
Victor Stinner <victor.stinner@haypocalc.com>
parents:
64151
diff
changeset
|
272 PySys_WriteStderr("Unable to decode the command from the command line:\n"); |
|
63792
275acfcccccb
Issue #9425: Create run_command() subfunction
Victor Stinner <victor.stinner@haypocalc.com>
parents:
61751
diff
changeset
|
273 PyErr_Print(); |
|
275acfcccccb
Issue #9425: Create run_command() subfunction
Victor Stinner <victor.stinner@haypocalc.com>
parents:
61751
diff
changeset
|
274 return 1; |
|
275acfcccccb
Issue #9425: Create run_command() subfunction
Victor Stinner <victor.stinner@haypocalc.com>
parents:
61751
diff
changeset
|
275 } |
|
275acfcccccb
Issue #9425: Create run_command() subfunction
Victor Stinner <victor.stinner@haypocalc.com>
parents:
61751
diff
changeset
|
276 |
|
63796
0ed665e8a115
Issue #9425: Create run_file() subfunction
Victor Stinner <victor.stinner@haypocalc.com>
parents:
63792
diff
changeset
|
277 static int |
|
0ed665e8a115
Issue #9425: Create run_file() subfunction
Victor Stinner <victor.stinner@haypocalc.com>
parents:
63792
diff
changeset
|
278 run_file(FILE *fp, const wchar_t *filename, PyCompilerFlags *p_cf) |
|
0ed665e8a115
Issue #9425: Create run_file() subfunction
Victor Stinner <victor.stinner@haypocalc.com>
parents:
63792
diff
changeset
|
279 { |
|
0ed665e8a115
Issue #9425: Create run_file() subfunction
Victor Stinner <victor.stinner@haypocalc.com>
parents:
63792
diff
changeset
|
280 PyObject *unicode, *bytes = NULL; |
|
0ed665e8a115
Issue #9425: Create run_file() subfunction
Victor Stinner <victor.stinner@haypocalc.com>
parents:
63792
diff
changeset
|
281 char *filename_str; |
|
0ed665e8a115
Issue #9425: Create run_file() subfunction
Victor Stinner <victor.stinner@haypocalc.com>
parents:
63792
diff
changeset
|
282 int run; |
|
0ed665e8a115
Issue #9425: Create run_file() subfunction
Victor Stinner <victor.stinner@haypocalc.com>
parents:
63792
diff
changeset
|
283 |
|
0ed665e8a115
Issue #9425: Create run_file() subfunction
Victor Stinner <victor.stinner@haypocalc.com>
parents:
63792
diff
changeset
|
284 /* call pending calls like signal handlers (SIGINT) */ |
|
0ed665e8a115
Issue #9425: Create run_file() subfunction
Victor Stinner <victor.stinner@haypocalc.com>
parents:
63792
diff
changeset
|
285 if (Py_MakePendingCalls() == -1) { |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59536
diff
changeset
|
286 PyErr_Print(); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59536
diff
changeset
|
287 return 1; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59536
diff
changeset
|
288 } |
|
63796
0ed665e8a115
Issue #9425: Create run_file() subfunction
Victor Stinner <victor.stinner@haypocalc.com>
parents:
63792
diff
changeset
|
289 |
|
0ed665e8a115
Issue #9425: Create run_file() subfunction
Victor Stinner <victor.stinner@haypocalc.com>
parents:
63792
diff
changeset
|
290 if (filename) { |
|
0ed665e8a115
Issue #9425: Create run_file() subfunction
Victor Stinner <victor.stinner@haypocalc.com>
parents:
63792
diff
changeset
|
291 unicode = PyUnicode_FromWideChar(filename, wcslen(filename)); |
|
0ed665e8a115
Issue #9425: Create run_file() subfunction
Victor Stinner <victor.stinner@haypocalc.com>
parents:
63792
diff
changeset
|
292 if (unicode != NULL) { |
|
65484
39cdcc7d3e20
run_file(): encode the filename with PyUnicode_EncodeFSDefault() instead of
Victor Stinner <victor.stinner@haypocalc.com>
parents:
65412
diff
changeset
|
293 bytes = PyUnicode_EncodeFSDefault(unicode); |
|
63796
0ed665e8a115
Issue #9425: Create run_file() subfunction
Victor Stinner <victor.stinner@haypocalc.com>
parents:
63792
diff
changeset
|
294 Py_DECREF(unicode); |
|
0ed665e8a115
Issue #9425: Create run_file() subfunction
Victor Stinner <victor.stinner@haypocalc.com>
parents:
63792
diff
changeset
|
295 } |
|
0ed665e8a115
Issue #9425: Create run_file() subfunction
Victor Stinner <victor.stinner@haypocalc.com>
parents:
63792
diff
changeset
|
296 if (bytes != NULL) |
|
0ed665e8a115
Issue #9425: Create run_file() subfunction
Victor Stinner <victor.stinner@haypocalc.com>
parents:
63792
diff
changeset
|
297 filename_str = PyBytes_AsString(bytes); |
|
0ed665e8a115
Issue #9425: Create run_file() subfunction
Victor Stinner <victor.stinner@haypocalc.com>
parents:
63792
diff
changeset
|
298 else { |
|
0ed665e8a115
Issue #9425: Create run_file() subfunction
Victor Stinner <victor.stinner@haypocalc.com>
parents:
63792
diff
changeset
|
299 PyErr_Clear(); |
|
65484
39cdcc7d3e20
run_file(): encode the filename with PyUnicode_EncodeFSDefault() instead of
Victor Stinner <victor.stinner@haypocalc.com>
parents:
65412
diff
changeset
|
300 filename_str = "<encoding error>"; |
|
63796
0ed665e8a115
Issue #9425: Create run_file() subfunction
Victor Stinner <victor.stinner@haypocalc.com>
parents:
63792
diff
changeset
|
301 } |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59536
diff
changeset
|
302 } |
|
63796
0ed665e8a115
Issue #9425: Create run_file() subfunction
Victor Stinner <victor.stinner@haypocalc.com>
parents:
63792
diff
changeset
|
303 else |
|
0ed665e8a115
Issue #9425: Create run_file() subfunction
Victor Stinner <victor.stinner@haypocalc.com>
parents:
63792
diff
changeset
|
304 filename_str = "<stdin>"; |
|
0ed665e8a115
Issue #9425: Create run_file() subfunction
Victor Stinner <victor.stinner@haypocalc.com>
parents:
63792
diff
changeset
|
305 |
|
0ed665e8a115
Issue #9425: Create run_file() subfunction
Victor Stinner <victor.stinner@haypocalc.com>
parents:
63792
diff
changeset
|
306 run = PyRun_AnyFileExFlags(fp, filename_str, filename != NULL, p_cf); |
|
0ed665e8a115
Issue #9425: Create run_file() subfunction
Victor Stinner <victor.stinner@haypocalc.com>
parents:
63792
diff
changeset
|
307 Py_XDECREF(bytes); |
|
0ed665e8a115
Issue #9425: Create run_file() subfunction
Victor Stinner <victor.stinner@haypocalc.com>
parents:
63792
diff
changeset
|
308 return run != 0; |
|
43897
41f7c13ef161
Merged revisions 59005-59040 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
43850
diff
changeset
|
309 } |
|
41f7c13ef161
Merged revisions 59005-59040 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
43850
diff
changeset
|
310 |
|
41f7c13ef161
Merged revisions 59005-59040 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
43850
diff
changeset
|
311 |
| 2896 | 312 /* Main program */ |
| 313 | |
|
24471
f66b3a3509c7
Excise DL_EXPORT/DL_IMPORT from Modules/*. Required adding a prototype
Mark Hammond <mhammond@skippinet.com.au>
parents:
24405
diff
changeset
|
314 int |
|
46318
22a74eaf6b22
Change command line processing API to use wchar_t.
Martin v. Löwis <martin@v.loewis.de>
parents:
45865
diff
changeset
|
315 Py_Main(int argc, wchar_t **argv) |
| 2896 | 316 { |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59536
diff
changeset
|
317 int c; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59536
diff
changeset
|
318 int sts; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59536
diff
changeset
|
319 wchar_t *command = NULL; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59536
diff
changeset
|
320 wchar_t *filename = NULL; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59536
diff
changeset
|
321 wchar_t *module = NULL; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59536
diff
changeset
|
322 FILE *fp = stdin; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59536
diff
changeset
|
323 char *p; |
|
60593
62d11785204f
#7301: decode $PYTHONWARNINGS in the same way as argv, test non-ascii values
Philip Jenvey <pjenvey@underboss.org>
parents:
60516
diff
changeset
|
324 #ifdef MS_WINDOWS |
|
61466
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60688
diff
changeset
|
325 wchar_t *wp; |
|
60593
62d11785204f
#7301: decode $PYTHONWARNINGS in the same way as argv, test non-ascii values
Philip Jenvey <pjenvey@underboss.org>
parents:
60516
diff
changeset
|
326 #endif |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59536
diff
changeset
|
327 int skipfirstline = 0; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59536
diff
changeset
|
328 int stdin_is_interactive = 0; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59536
diff
changeset
|
329 int help = 0; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59536
diff
changeset
|
330 int version = 0; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59536
diff
changeset
|
331 int saw_unbuffered_flag = 0; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59536
diff
changeset
|
332 PyCompilerFlags cf; |
| 2896 | 333 |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59536
diff
changeset
|
334 cf.cf_flags = 0; |
|
19633
c0a44829bcd5
Add warning mode for classic division, almost exactly as specified in
Guido van Rossum <guido@python.org>
parents:
18808
diff
changeset
|
335 |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59536
diff
changeset
|
336 orig_argc = argc; /* For Py_GetArgcArgv() */ |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59536
diff
changeset
|
337 orig_argv = argv; |
| 2896 | 338 |
|
75142
0e8bd4785ea0
Fix test failure in test_cmd_line by initializing the hash secret at the earliest point.
Antoine Pitrou <solipsis@pitrou.net>
parents:
75073
diff
changeset
|
339 /* Hash randomization needed early for all string operations |
|
0e8bd4785ea0
Fix test failure in test_cmd_line by initializing the hash secret at the earliest point.
Antoine Pitrou <solipsis@pitrou.net>
parents:
75073
diff
changeset
|
340 (including -W and -X options). */ |
|
80566
654a628f5f00
#16306: report only the first unknown option and add more tests. Patch by Serhiy Storchaka.
Ezio Melotti <ezio.melotti@gmail.com>
parents:
78703
diff
changeset
|
341 _PyOS_opterr = 0; /* prevent printing the error in 1st pass */ |
|
75142
0e8bd4785ea0
Fix test failure in test_cmd_line by initializing the hash secret at the earliest point.
Antoine Pitrou <solipsis@pitrou.net>
parents:
75073
diff
changeset
|
342 while ((c = _PyOS_GetOpt(argc, argv, PROGRAM_OPTS)) != EOF) { |
|
0e8bd4785ea0
Fix test failure in test_cmd_line by initializing the hash secret at the earliest point.
Antoine Pitrou <solipsis@pitrou.net>
parents:
75073
diff
changeset
|
343 if (c == 'm' || c == 'c') { |
|
0e8bd4785ea0
Fix test failure in test_cmd_line by initializing the hash secret at the earliest point.
Antoine Pitrou <solipsis@pitrou.net>
parents:
75073
diff
changeset
|
344 /* -c / -m is the last option: following arguments are |
|
0e8bd4785ea0
Fix test failure in test_cmd_line by initializing the hash secret at the earliest point.
Antoine Pitrou <solipsis@pitrou.net>
parents:
75073
diff
changeset
|
345 not interpreter options. */ |
|
0e8bd4785ea0
Fix test failure in test_cmd_line by initializing the hash secret at the earliest point.
Antoine Pitrou <solipsis@pitrou.net>
parents:
75073
diff
changeset
|
346 break; |
|
0e8bd4785ea0
Fix test failure in test_cmd_line by initializing the hash secret at the earliest point.
Antoine Pitrou <solipsis@pitrou.net>
parents:
75073
diff
changeset
|
347 } |
|
75152
198e31774f0f
enable hash randomization by default
Benjamin Peterson <benjamin@python.org>
parents:
75143
diff
changeset
|
348 if (c == 'E') { |
|
75142
0e8bd4785ea0
Fix test failure in test_cmd_line by initializing the hash secret at the earliest point.
Antoine Pitrou <solipsis@pitrou.net>
parents:
75073
diff
changeset
|
349 Py_IgnoreEnvironmentFlag++; |
|
0e8bd4785ea0
Fix test failure in test_cmd_line by initializing the hash secret at the earliest point.
Antoine Pitrou <solipsis@pitrou.net>
parents:
75073
diff
changeset
|
350 break; |
|
0e8bd4785ea0
Fix test failure in test_cmd_line by initializing the hash secret at the earliest point.
Antoine Pitrou <solipsis@pitrou.net>
parents:
75073
diff
changeset
|
351 } |
|
0e8bd4785ea0
Fix test failure in test_cmd_line by initializing the hash secret at the earliest point.
Antoine Pitrou <solipsis@pitrou.net>
parents:
75073
diff
changeset
|
352 } |
|
0e8bd4785ea0
Fix test failure in test_cmd_line by initializing the hash secret at the earliest point.
Antoine Pitrou <solipsis@pitrou.net>
parents:
75073
diff
changeset
|
353 |
|
75152
198e31774f0f
enable hash randomization by default
Benjamin Peterson <benjamin@python.org>
parents:
75143
diff
changeset
|
354 Py_HashRandomizationFlag = 1; |
|
75142
0e8bd4785ea0
Fix test failure in test_cmd_line by initializing the hash secret at the earliest point.
Antoine Pitrou <solipsis@pitrou.net>
parents:
75073
diff
changeset
|
355 _PyRandom_Init(); |
|
0e8bd4785ea0
Fix test failure in test_cmd_line by initializing the hash secret at the earliest point.
Antoine Pitrou <solipsis@pitrou.net>
parents:
75073
diff
changeset
|
356 |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59536
diff
changeset
|
357 PySys_ResetWarnOptions(); |
|
75142
0e8bd4785ea0
Fix test failure in test_cmd_line by initializing the hash secret at the earliest point.
Antoine Pitrou <solipsis@pitrou.net>
parents:
75073
diff
changeset
|
358 _PyOS_ResetGetOpt(); |
| 15593 | 359 |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59536
diff
changeset
|
360 while ((c = _PyOS_GetOpt(argc, argv, PROGRAM_OPTS)) != EOF) { |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59536
diff
changeset
|
361 if (c == 'c') { |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59536
diff
changeset
|
362 size_t len; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59536
diff
changeset
|
363 /* -c is the last option; following arguments |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59536
diff
changeset
|
364 that look like options are left for the |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59536
diff
changeset
|
365 command to interpret. */ |
|
49708
fb725366f9ac
#3705: Command-line arguments were not correctly decoded when the
Amaury Forgeot d'Arc <amauryfa@gmail.com>
parents:
49620
diff
changeset
|
366 |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59536
diff
changeset
|
367 len = wcslen(_PyOS_optarg) + 1 + 1; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59536
diff
changeset
|
368 command = (wchar_t *)malloc(sizeof(wchar_t) * len); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59536
diff
changeset
|
369 if (command == NULL) |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59536
diff
changeset
|
370 Py_FatalError( |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59536
diff
changeset
|
371 "not enough memory to copy -c argument"); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59536
diff
changeset
|
372 wcscpy(command, _PyOS_optarg); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59536
diff
changeset
|
373 command[len - 2] = '\n'; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59536
diff
changeset
|
374 command[len - 1] = 0; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59536
diff
changeset
|
375 break; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59536
diff
changeset
|
376 } |
|
19633
c0a44829bcd5
Add warning mode for classic division, almost exactly as specified in
Guido van Rossum <guido@python.org>
parents:
18808
diff
changeset
|
377 |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59536
diff
changeset
|
378 if (c == 'm') { |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59536
diff
changeset
|
379 /* -m is the last option; following arguments |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59536
diff
changeset
|
380 that look like options are left for the |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59536
diff
changeset
|
381 module to interpret. */ |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59536
diff
changeset
|
382 module = _PyOS_optarg; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59536
diff
changeset
|
383 break; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59536
diff
changeset
|
384 } |
|
33680
bcafb68ad985
SF patch #1035498: -m option to run a module as a script
Raymond Hettinger <python@rcn.com>
parents:
33188
diff
changeset
|
385 |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59536
diff
changeset
|
386 switch (c) { |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59536
diff
changeset
|
387 case 'b': |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59536
diff
changeset
|
388 Py_BytesWarningFlag++; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59536
diff
changeset
|
389 break; |
| 2896 | 390 |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59536
diff
changeset
|
391 case 'd': |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59536
diff
changeset
|
392 Py_DebugFlag++; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59536
diff
changeset
|
393 break; |
| 2896 | 394 |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59536
diff
changeset
|
395 case 'i': |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59536
diff
changeset
|
396 Py_InspectFlag++; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59536
diff
changeset
|
397 Py_InteractiveFlag++; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59536
diff
changeset
|
398 break; |
| 2896 | 399 |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59536
diff
changeset
|
400 /* case 'J': reserved for Jython */ |
|
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:
46325
diff
changeset
|
401 |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59536
diff
changeset
|
402 case 'O': |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59536
diff
changeset
|
403 Py_OptimizeFlag++; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59536
diff
changeset
|
404 break; |
|
5166
7151bb727776
Add -O option which sets Py_OptimizeFlag to avoid emitting SET_LINENO.
Guido van Rossum <guido@python.org>
parents:
5113
diff
changeset
|
405 |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59536
diff
changeset
|
406 case 'B': |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59536
diff
changeset
|
407 Py_DontWriteBytecodeFlag++; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59536
diff
changeset
|
408 break; |
|
44587
fb5a6330f71b
Merged revisions 59822-59841 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
43914
diff
changeset
|
409 |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59536
diff
changeset
|
410 case 's': |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59536
diff
changeset
|
411 Py_NoUserSiteDirectory++; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59536
diff
changeset
|
412 break; |
|
46708
74b9c85361f8
Merged revisions 62774-62775,62785,62787-62788 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
46453
diff
changeset
|
413 |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59536
diff
changeset
|
414 case 'S': |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59536
diff
changeset
|
415 Py_NoSiteFlag++; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59536
diff
changeset
|
416 break; |
|
6203
f57ae68aa3ae
Added -X option to suppress default import of site.py. Also split the
Guido van Rossum <guido@python.org>
parents:
6199
diff
changeset
|
417 |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59536
diff
changeset
|
418 case 'E': |
|
75142
0e8bd4785ea0
Fix test failure in test_cmd_line by initializing the hash secret at the earliest point.
Antoine Pitrou <solipsis@pitrou.net>
parents:
75073
diff
changeset
|
419 /* Already handled above */ |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59536
diff
changeset
|
420 break; |
|
18808
a8b1acc7a21f
Add -E command line switch (ignore environment variables like PYTHONHOME
Neil Schemenauer <nascheme@enme.ucalgary.ca>
parents:
18692
diff
changeset
|
421 |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59536
diff
changeset
|
422 case 't': |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59536
diff
changeset
|
423 /* ignored for backwards compatibility */ |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59536
diff
changeset
|
424 break; |
|
7966
8c268d0e8822
Add -t option to set the Py_TabcheckFlag flag.
Guido van Rossum <guido@python.org>
parents:
7571
diff
changeset
|
425 |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59536
diff
changeset
|
426 case 'u': |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59536
diff
changeset
|
427 Py_UnbufferedStdioFlag = 1; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59536
diff
changeset
|
428 saw_unbuffered_flag = 1; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59536
diff
changeset
|
429 break; |
| 2896 | 430 |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59536
diff
changeset
|
431 case 'v': |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59536
diff
changeset
|
432 Py_VerboseFlag++; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59536
diff
changeset
|
433 break; |
| 2896 | 434 |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59536
diff
changeset
|
435 case 'x': |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59536
diff
changeset
|
436 skipfirstline = 1; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59536
diff
changeset
|
437 break; |
|
6763
12824fe04a08
Two changes by Jeff Rush (slightly tweaked):
Guido van Rossum <guido@python.org>
parents:
6538
diff
changeset
|
438 |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59536
diff
changeset
|
439 case 'h': |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59536
diff
changeset
|
440 case '?': |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59536
diff
changeset
|
441 help++; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59536
diff
changeset
|
442 break; |
|
36988
49c6eb688906
Checkpoint. 218 tests are okay; 53 are failing. Done so far:
Guido van Rossum <guido@python.org>
parents:
36910
diff
changeset
|
443 |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59536
diff
changeset
|
444 case 'V': |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59536
diff
changeset
|
445 version++; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59536
diff
changeset
|
446 break; |
| 12537 | 447 |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59536
diff
changeset
|
448 case 'W': |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59536
diff
changeset
|
449 PySys_AddWarnOption(_PyOS_optarg); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59536
diff
changeset
|
450 break; |
| 15593 | 451 |
|
65575
0b5bfba7a907
Issue #10089: Add support for arbitrary -X options on the command-line.
Antoine Pitrou <solipsis@pitrou.net>
parents:
65484
diff
changeset
|
452 case 'X': |
|
0b5bfba7a907
Issue #10089: Add support for arbitrary -X options on the command-line.
Antoine Pitrou <solipsis@pitrou.net>
parents:
65484
diff
changeset
|
453 PySys_AddXOption(_PyOS_optarg); |
|
0b5bfba7a907
Issue #10089: Add support for arbitrary -X options on the command-line.
Antoine Pitrou <solipsis@pitrou.net>
parents:
65484
diff
changeset
|
454 break; |
|
0b5bfba7a907
Issue #10089: Add support for arbitrary -X options on the command-line.
Antoine Pitrou <solipsis@pitrou.net>
parents:
65484
diff
changeset
|
455 |
|
66687
f35a6d7e325f
#1772833: add -q command line option.
Georg Brandl <georg@python.org>
parents:
66556
diff
changeset
|
456 case 'q': |
|
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:
66687
diff
changeset
|
457 Py_QuietFlag++; |
|
66687
f35a6d7e325f
#1772833: add -q command line option.
Georg Brandl <georg@python.org>
parents:
66556
diff
changeset
|
458 break; |
|
f35a6d7e325f
#1772833: add -q command line option.
Georg Brandl <georg@python.org>
parents:
66556
diff
changeset
|
459 |
|
75066
f4b7ecf8a5f8
Issue #13703: add a way to randomize the hash values of basic types (str, bytes, datetime)
Georg Brandl <georg@python.org>
parents:
67586
diff
changeset
|
460 case 'R': |
|
75152
198e31774f0f
enable hash randomization by default
Benjamin Peterson <benjamin@python.org>
parents:
75143
diff
changeset
|
461 /* Ignored */ |
|
75066
f4b7ecf8a5f8
Issue #13703: add a way to randomize the hash values of basic types (str, bytes, datetime)
Georg Brandl <georg@python.org>
parents:
67586
diff
changeset
|
462 break; |
|
f4b7ecf8a5f8
Issue #13703: add a way to randomize the hash values of basic types (str, bytes, datetime)
Georg Brandl <georg@python.org>
parents:
67586
diff
changeset
|
463 |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59536
diff
changeset
|
464 /* This space reserved for other options */ |
| 2896 | 465 |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59536
diff
changeset
|
466 default: |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59536
diff
changeset
|
467 return usage(2, argv[0]); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59536
diff
changeset
|
468 /*NOTREACHED*/ |
| 2896 | 469 |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59536
diff
changeset
|
470 } |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59536
diff
changeset
|
471 } |
| 2896 | 472 |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59536
diff
changeset
|
473 if (help) |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59536
diff
changeset
|
474 return usage(0, argv[0]); |
|
14603
80a782086a57
Py_Main(), usage(), usage_mid: Add -h and -V flags to print the usage
Barry Warsaw <barry@python.org>
parents:
14411
diff
changeset
|
475 |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59536
diff
changeset
|
476 if (version) { |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59536
diff
changeset
|
477 fprintf(stderr, "Python %s\n", PY_VERSION); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59536
diff
changeset
|
478 return 0; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59536
diff
changeset
|
479 } |
|
14603
80a782086a57
Py_Main(), usage(), usage_mid: Add -h and -V flags to print the usage
Barry Warsaw <barry@python.org>
parents:
14411
diff
changeset
|
480 |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59536
diff
changeset
|
481 if (!Py_InspectFlag && |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59536
diff
changeset
|
482 (p = Py_GETENV("PYTHONINSPECT")) && *p != '\0') |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59536
diff
changeset
|
483 Py_InspectFlag = 1; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59536
diff
changeset
|
484 if (!saw_unbuffered_flag && |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59536
diff
changeset
|
485 (p = Py_GETENV("PYTHONUNBUFFERED")) && *p != '\0') |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59536
diff
changeset
|
486 Py_UnbufferedStdioFlag = 1; |
|
18808
a8b1acc7a21f
Add -E command line switch (ignore environment variables like PYTHONHOME
Neil Schemenauer <nascheme@enme.ucalgary.ca>
parents:
18692
diff
changeset
|
487 |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59536
diff
changeset
|
488 if (!Py_NoUserSiteDirectory && |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59536
diff
changeset
|
489 (p = Py_GETENV("PYTHONNOUSERSITE")) && *p != '\0') |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59536
diff
changeset
|
490 Py_NoUserSiteDirectory = 1; |
|
46708
74b9c85361f8
Merged revisions 62774-62775,62785,62787-62788 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
46453
diff
changeset
|
491 |
|
60593
62d11785204f
#7301: decode $PYTHONWARNINGS in the same way as argv, test non-ascii values
Philip Jenvey <pjenvey@underboss.org>
parents:
60516
diff
changeset
|
492 #ifdef MS_WINDOWS |
|
61466
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60688
diff
changeset
|
493 if (!Py_IgnoreEnvironmentFlag && (wp = _wgetenv(L"PYTHONWARNINGS")) && |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60688
diff
changeset
|
494 *wp != L'\0') { |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60688
diff
changeset
|
495 wchar_t *buf, *warning; |
|
60593
62d11785204f
#7301: decode $PYTHONWARNINGS in the same way as argv, test non-ascii values
Philip Jenvey <pjenvey@underboss.org>
parents:
60516
diff
changeset
|
496 |
|
61466
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60688
diff
changeset
|
497 buf = (wchar_t *)malloc((wcslen(wp) + 1) * sizeof(wchar_t)); |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60688
diff
changeset
|
498 if (buf == NULL) |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60688
diff
changeset
|
499 Py_FatalError( |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60688
diff
changeset
|
500 "not enough memory to copy PYTHONWARNINGS"); |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60688
diff
changeset
|
501 wcscpy(buf, wp); |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60688
diff
changeset
|
502 for (warning = wcstok(buf, L","); |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60688
diff
changeset
|
503 warning != NULL; |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60688
diff
changeset
|
504 warning = wcstok(NULL, L",")) { |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60688
diff
changeset
|
505 PySys_AddWarnOption(warning); |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60688
diff
changeset
|
506 } |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60688
diff
changeset
|
507 free(buf); |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60688
diff
changeset
|
508 } |
|
60593
62d11785204f
#7301: decode $PYTHONWARNINGS in the same way as argv, test non-ascii values
Philip Jenvey <pjenvey@underboss.org>
parents:
60516
diff
changeset
|
509 #else |
|
61466
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60688
diff
changeset
|
510 if ((p = Py_GETENV("PYTHONWARNINGS")) && *p != '\0') { |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60688
diff
changeset
|
511 char *buf, *oldloc; |
|
64629
586a411cac7c
Issue #8589: surrogateescape error handler is not available at startup
Victor Stinner <victor.stinner@haypocalc.com>
parents:
64172
diff
changeset
|
512 PyObject *unicode; |
|
60436
f369db0d5845
Merged revisions 79878-79880 via svnmerge from
Philip Jenvey <pjenvey@underboss.org>
parents:
59536
diff
changeset
|
513 |
|
61466
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60688
diff
changeset
|
514 /* settle for strtok here as there's no one standard |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60688
diff
changeset
|
515 C89 wcstok */ |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60688
diff
changeset
|
516 buf = (char *)malloc(strlen(p) + 1); |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60688
diff
changeset
|
517 if (buf == NULL) |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60688
diff
changeset
|
518 Py_FatalError( |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60688
diff
changeset
|
519 "not enough memory to copy PYTHONWARNINGS"); |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60688
diff
changeset
|
520 strcpy(buf, p); |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60688
diff
changeset
|
521 oldloc = strdup(setlocale(LC_ALL, NULL)); |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60688
diff
changeset
|
522 setlocale(LC_ALL, ""); |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60688
diff
changeset
|
523 for (p = strtok(buf, ","); p != NULL; p = strtok(NULL, ",")) { |
|
64667
ed43ebda35f2
Isse #8589: Decode PYTHONWARNINGS from utf-8 on Mac OS X
Victor Stinner <victor.stinner@haypocalc.com>
parents:
64629
diff
changeset
|
524 #ifdef __APPLE__ |
|
ed43ebda35f2
Isse #8589: Decode PYTHONWARNINGS from utf-8 on Mac OS X
Victor Stinner <victor.stinner@haypocalc.com>
parents:
64629
diff
changeset
|
525 /* Use utf-8 on Mac OS X */ |
|
ed43ebda35f2
Isse #8589: Decode PYTHONWARNINGS from utf-8 on Mac OS X
Victor Stinner <victor.stinner@haypocalc.com>
parents:
64629
diff
changeset
|
526 unicode = PyUnicode_FromString(p); |
|
ed43ebda35f2
Isse #8589: Decode PYTHONWARNINGS from utf-8 on Mac OS X
Victor Stinner <victor.stinner@haypocalc.com>
parents:
64629
diff
changeset
|
527 #else |
|
74009
07802351ccad
Issue #13560: Locale codec functions use the classic "errors" parameter,
Victor Stinner <victor.stinner@haypocalc.com>
parents:
74002
diff
changeset
|
528 unicode = PyUnicode_DecodeLocale(p, "surrogateescape"); |
|
74002
279b0aee0cfb
Add PyUnicode_DecodeLocaleAndSize() and PyUnicode_DecodeLocale()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
73997
diff
changeset
|
529 #endif |
|
279b0aee0cfb
Add PyUnicode_DecodeLocaleAndSize() and PyUnicode_DecodeLocale()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
73997
diff
changeset
|
530 if (unicode == NULL) { |
|
279b0aee0cfb
Add PyUnicode_DecodeLocaleAndSize() and PyUnicode_DecodeLocale()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
73997
diff
changeset
|
531 /* ignore errors */ |
|
279b0aee0cfb
Add PyUnicode_DecodeLocaleAndSize() and PyUnicode_DecodeLocale()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
73997
diff
changeset
|
532 PyErr_Clear(); |
|
64629
586a411cac7c
Issue #8589: surrogateescape error handler is not available at startup
Victor Stinner <victor.stinner@haypocalc.com>
parents:
64172
diff
changeset
|
533 continue; |
|
74002
279b0aee0cfb
Add PyUnicode_DecodeLocaleAndSize() and PyUnicode_DecodeLocale()
Victor Stinner <victor.stinner@haypocalc.com>
parents:
73997
diff
changeset
|
534 } |
|
64629
586a411cac7c
Issue #8589: surrogateescape error handler is not available at startup
Victor Stinner <victor.stinner@haypocalc.com>
parents:
64172
diff
changeset
|
535 PySys_AddWarnOptionUnicode(unicode); |
|
586a411cac7c
Issue #8589: surrogateescape error handler is not available at startup
Victor Stinner <victor.stinner@haypocalc.com>
parents:
64172
diff
changeset
|
536 Py_DECREF(unicode); |
|
61466
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60688
diff
changeset
|
537 } |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60688
diff
changeset
|
538 setlocale(LC_ALL, oldloc); |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60688
diff
changeset
|
539 free(oldloc); |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60688
diff
changeset
|
540 free(buf); |
|
cab14be0ada1
Recorded merge of revisions 81029 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
60688
diff
changeset
|
541 } |
|
60593
62d11785204f
#7301: decode $PYTHONWARNINGS in the same way as argv, test non-ascii values
Philip Jenvey <pjenvey@underboss.org>
parents:
60516
diff
changeset
|
542 #endif |
|
60436
f369db0d5845
Merged revisions 79878-79880 via svnmerge from
Philip Jenvey <pjenvey@underboss.org>
parents:
59536
diff
changeset
|
543 |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59536
diff
changeset
|
544 if (command == NULL && module == NULL && _PyOS_optind < argc && |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59536
diff
changeset
|
545 wcscmp(argv[_PyOS_optind], L"-") != 0) |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59536
diff
changeset
|
546 { |
|
28169
bc2d07230934
Patch #696645: Remove VMS code with uncertain authorship.
Martin v. Löwis <martin@v.loewis.de>
parents:
26764
diff
changeset
|
547 #ifdef __VMS |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59536
diff
changeset
|
548 filename = decc$translate_vms(argv[_PyOS_optind]); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59536
diff
changeset
|
549 if (filename == (char *)0 || filename == (char *)-1) |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59536
diff
changeset
|
550 filename = argv[_PyOS_optind]; |
|
28169
bc2d07230934
Patch #696645: Remove VMS code with uncertain authorship.
Martin v. Löwis <martin@v.loewis.de>
parents:
26764
diff
changeset
|
551 |
|
bc2d07230934
Patch #696645: Remove VMS code with uncertain authorship.
Martin v. Löwis <martin@v.loewis.de>
parents:
26764
diff
changeset
|
552 #else |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59536
diff
changeset
|
553 filename = argv[_PyOS_optind]; |
|
28169
bc2d07230934
Patch #696645: Remove VMS code with uncertain authorship.
Martin v. Löwis <martin@v.loewis.de>
parents:
26764
diff
changeset
|
554 #endif |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59536
diff
changeset
|
555 } |
|
5109
0bbf97861cd9
My version of Lee Busby's patches to make '-i' pretend stdin is a tty
Guido van Rossum <guido@python.org>
parents:
5000
diff
changeset
|
556 |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59536
diff
changeset
|
557 stdin_is_interactive = Py_FdIsInteractive(stdin, (char *)0); |
|
5109
0bbf97861cd9
My version of Lee Busby's patches to make '-i' pretend stdin is a tty
Guido van Rossum <guido@python.org>
parents:
5000
diff
changeset
|
558 |
|
67431
0933c3753a71
Issue #10841: set binary mode on files; the parser translates newlines
Victor Stinner <victor.stinner@haypocalc.com>
parents:
67193
diff
changeset
|
559 #if defined(MS_WINDOWS) || defined(__CYGWIN__) |
|
0933c3753a71
Issue #10841: set binary mode on files; the parser translates newlines
Victor Stinner <victor.stinner@haypocalc.com>
parents:
67193
diff
changeset
|
560 /* don't translate newlines (\r\n <=> \n) */ |
|
0933c3753a71
Issue #10841: set binary mode on files; the parser translates newlines
Victor Stinner <victor.stinner@haypocalc.com>
parents:
67193
diff
changeset
|
561 _setmode(fileno(stdin), O_BINARY); |
|
0933c3753a71
Issue #10841: set binary mode on files; the parser translates newlines
Victor Stinner <victor.stinner@haypocalc.com>
parents:
67193
diff
changeset
|
562 _setmode(fileno(stdout), O_BINARY); |
|
0933c3753a71
Issue #10841: set binary mode on files; the parser translates newlines
Victor Stinner <victor.stinner@haypocalc.com>
parents:
67193
diff
changeset
|
563 _setmode(fileno(stderr), O_BINARY); |
|
0933c3753a71
Issue #10841: set binary mode on files; the parser translates newlines
Victor Stinner <victor.stinner@haypocalc.com>
parents:
67193
diff
changeset
|
564 #endif |
|
0933c3753a71
Issue #10841: set binary mode on files; the parser translates newlines
Victor Stinner <victor.stinner@haypocalc.com>
parents:
67193
diff
changeset
|
565 |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59536
diff
changeset
|
566 if (Py_UnbufferedStdioFlag) { |
|
7571
968aaba281c5
Don't use setvbuf unless HAVE_SETVBUF is defined.
Guido van Rossum <guido@python.org>
parents:
6763
diff
changeset
|
567 #ifdef HAVE_SETVBUF |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59536
diff
changeset
|
568 setvbuf(stdin, (char *)NULL, _IONBF, BUFSIZ); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59536
diff
changeset
|
569 setvbuf(stdout, (char *)NULL, _IONBF, BUFSIZ); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59536
diff
changeset
|
570 setvbuf(stderr, (char *)NULL, _IONBF, BUFSIZ); |
|
7571
968aaba281c5
Don't use setvbuf unless HAVE_SETVBUF is defined.
Guido van Rossum <guido@python.org>
parents:
6763
diff
changeset
|
571 #else /* !HAVE_SETVBUF */ |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59536
diff
changeset
|
572 setbuf(stdin, (char *)NULL); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59536
diff
changeset
|
573 setbuf(stdout, (char *)NULL); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59536
diff
changeset
|
574 setbuf(stderr, (char *)NULL); |
|
7571
968aaba281c5
Don't use setvbuf unless HAVE_SETVBUF is defined.
Guido van Rossum <guido@python.org>
parents:
6763
diff
changeset
|
575 #endif /* !HAVE_SETVBUF */ |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59536
diff
changeset
|
576 } |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59536
diff
changeset
|
577 else if (Py_InteractiveFlag) { |
|
5320
c3ddb84a7761
OK, I lied. On Windows, _IOLBF seems to be the same as full
Guido van Rossum <guido@python.org>
parents:
5319
diff
changeset
|
578 #ifdef MS_WINDOWS |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59536
diff
changeset
|
579 /* Doesn't have to have line-buffered -- use unbuffered */ |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59536
diff
changeset
|
580 /* Any set[v]buf(stdin, ...) screws up Tkinter :-( */ |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59536
diff
changeset
|
581 setvbuf(stdout, (char *)NULL, _IONBF, BUFSIZ); |
|
7571
968aaba281c5
Don't use setvbuf unless HAVE_SETVBUF is defined.
Guido van Rossum <guido@python.org>
parents:
6763
diff
changeset
|
582 #else /* !MS_WINDOWS */ |
|
968aaba281c5
Don't use setvbuf unless HAVE_SETVBUF is defined.
Guido van Rossum <guido@python.org>
parents:
6763
diff
changeset
|
583 #ifdef HAVE_SETVBUF |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59536
diff
changeset
|
584 setvbuf(stdin, (char *)NULL, _IOLBF, BUFSIZ); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59536
diff
changeset
|
585 setvbuf(stdout, (char *)NULL, _IOLBF, BUFSIZ); |
|
7571
968aaba281c5
Don't use setvbuf unless HAVE_SETVBUF is defined.
Guido van Rossum <guido@python.org>
parents:
6763
diff
changeset
|
586 #endif /* HAVE_SETVBUF */ |
|
968aaba281c5
Don't use setvbuf unless HAVE_SETVBUF is defined.
Guido van Rossum <guido@python.org>
parents:
6763
diff
changeset
|
587 #endif /* !MS_WINDOWS */ |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59536
diff
changeset
|
588 /* Leave stderr alone - it should be unbuffered anyway. */ |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59536
diff
changeset
|
589 } |
|
26550
b9c912e2c3c0
Patch #614055: Support OpenVMS.
Martin v. Löwis <martin@v.loewis.de>
parents:
25826
diff
changeset
|
590 #ifdef __VMS |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59536
diff
changeset
|
591 else { |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59536
diff
changeset
|
592 setvbuf (stdout, (char *)NULL, _IOLBF, BUFSIZ); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59536
diff
changeset
|
593 } |
|
26550
b9c912e2c3c0
Patch #614055: Support OpenVMS.
Martin v. Löwis <martin@v.loewis.de>
parents:
25826
diff
changeset
|
594 #endif /* __VMS */ |
| 2896 | 595 |
|
28175
395eb561ece1
removing one Mac hack and add another:
Just van Rossum <just@letterror.com>
parents:
28169
diff
changeset
|
596 #ifdef __APPLE__ |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59536
diff
changeset
|
597 /* On MacOS X, when the Python interpreter is embedded in an |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59536
diff
changeset
|
598 application bundle, it gets executed by a bootstrapping script |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59536
diff
changeset
|
599 that does os.execve() with an argv[0] that's different from the |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59536
diff
changeset
|
600 actual Python executable. This is needed to keep the Finder happy, |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59536
diff
changeset
|
601 or rather, to work around Apple's overly strict requirements of |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59536
diff
changeset
|
602 the process name. However, we still need a usable sys.executable, |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59536
diff
changeset
|
603 so the actual executable path is passed in an environment variable. |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59536
diff
changeset
|
604 See Lib/plat-mac/bundlebuiler.py for details about the bootstrap |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59536
diff
changeset
|
605 script. */ |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59536
diff
changeset
|
606 if ((p = Py_GETENV("PYTHONEXECUTABLE")) && *p != '\0') { |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59536
diff
changeset
|
607 wchar_t* buffer; |
|
78703
526c6262d91f
Fix for issue 15716: interpreter could crash when PYTHONEXECUTABLE was set on Mac OS X.
Ronald Oussoren <ronaldoussoren@mac.com>
parents:
77946
diff
changeset
|
608 size_t len = strlen(p) + 1; |
|
51560
cab4e2e484a2
Merged revisions 69540 via svnmerge from
Ronald Oussoren <ronaldoussoren@mac.com>
parents:
50666
diff
changeset
|
609 |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59536
diff
changeset
|
610 buffer = malloc(len * sizeof(wchar_t)); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59536
diff
changeset
|
611 if (buffer == NULL) { |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59536
diff
changeset
|
612 Py_FatalError( |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59536
diff
changeset
|
613 "not enough memory to copy PYTHONEXECUTABLE"); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59536
diff
changeset
|
614 } |
|
51560
cab4e2e484a2
Merged revisions 69540 via svnmerge from
Ronald Oussoren <ronaldoussoren@mac.com>
parents:
50666
diff
changeset
|
615 |
|
68102
e2f96bd29252
Issue #8914: fix various warnings from the Clang static analyzer v254.
Brett Cannon <bcannon@gmail.com>
parents:
67583
diff
changeset
|
616 mbstowcs(buffer, p, len); |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59536
diff
changeset
|
617 Py_SetProgramName(buffer); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59536
diff
changeset
|
618 /* buffer is now handed off - do not free */ |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59536
diff
changeset
|
619 } else { |
|
78160
b79d276041a8
Closes #15307: symlinks now work on OS X with framework Python builds. Patch by Ronald Oussoren.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
77947
diff
changeset
|
620 #ifdef WITH_NEXT_FRAMEWORK |
|
b79d276041a8
Closes #15307: symlinks now work on OS X with framework Python builds. Patch by Ronald Oussoren.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
77947
diff
changeset
|
621 char* pyvenv_launcher = getenv("__PYVENV_LAUNCHER__"); |
|
b79d276041a8
Closes #15307: symlinks now work on OS X with framework Python builds. Patch by Ronald Oussoren.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
77947
diff
changeset
|
622 |
|
b79d276041a8
Closes #15307: symlinks now work on OS X with framework Python builds. Patch by Ronald Oussoren.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
77947
diff
changeset
|
623 if (pyvenv_launcher && *pyvenv_launcher) { |
|
b79d276041a8
Closes #15307: symlinks now work on OS X with framework Python builds. Patch by Ronald Oussoren.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
77947
diff
changeset
|
624 /* Used by Mac/Tools/pythonw.c to forward |
|
b79d276041a8
Closes #15307: symlinks now work on OS X with framework Python builds. Patch by Ronald Oussoren.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
77947
diff
changeset
|
625 * the argv0 of the stub executable |
|
b79d276041a8
Closes #15307: symlinks now work on OS X with framework Python builds. Patch by Ronald Oussoren.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
77947
diff
changeset
|
626 */ |
|
b79d276041a8
Closes #15307: symlinks now work on OS X with framework Python builds. Patch by Ronald Oussoren.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
77947
diff
changeset
|
627 wchar_t* wbuf = _Py_char2wchar(pyvenv_launcher, NULL); |
|
b79d276041a8
Closes #15307: symlinks now work on OS X with framework Python builds. Patch by Ronald Oussoren.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
77947
diff
changeset
|
628 |
|
b79d276041a8
Closes #15307: symlinks now work on OS X with framework Python builds. Patch by Ronald Oussoren.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
77947
diff
changeset
|
629 if (wbuf == NULL) { |
|
b79d276041a8
Closes #15307: symlinks now work on OS X with framework Python builds. Patch by Ronald Oussoren.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
77947
diff
changeset
|
630 Py_FatalError("Cannot decode __PYVENV_LAUNCHER__"); |
|
b79d276041a8
Closes #15307: symlinks now work on OS X with framework Python builds. Patch by Ronald Oussoren.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
77947
diff
changeset
|
631 } |
|
b79d276041a8
Closes #15307: symlinks now work on OS X with framework Python builds. Patch by Ronald Oussoren.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
77947
diff
changeset
|
632 Py_SetProgramName(wbuf); |
|
b79d276041a8
Closes #15307: symlinks now work on OS X with framework Python builds. Patch by Ronald Oussoren.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
77947
diff
changeset
|
633 |
|
b79d276041a8
Closes #15307: symlinks now work on OS X with framework Python builds. Patch by Ronald Oussoren.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
77947
diff
changeset
|
634 /* Don't free wbuf, the argument to Py_SetProgramName |
|
b79d276041a8
Closes #15307: symlinks now work on OS X with framework Python builds. Patch by Ronald Oussoren.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
77947
diff
changeset
|
635 * must remain valid until the Py_Finalize is called. |
|
b79d276041a8
Closes #15307: symlinks now work on OS X with framework Python builds. Patch by Ronald Oussoren.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
77947
diff
changeset
|
636 */ |
|
b79d276041a8
Closes #15307: symlinks now work on OS X with framework Python builds. Patch by Ronald Oussoren.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
77947
diff
changeset
|
637 } else { |
|
b79d276041a8
Closes #15307: symlinks now work on OS X with framework Python builds. Patch by Ronald Oussoren.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
77947
diff
changeset
|
638 Py_SetProgramName(argv[0]); |
|
b79d276041a8
Closes #15307: symlinks now work on OS X with framework Python builds. Patch by Ronald Oussoren.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
77947
diff
changeset
|
639 } |
|
b79d276041a8
Closes #15307: symlinks now work on OS X with framework Python builds. Patch by Ronald Oussoren.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
77947
diff
changeset
|
640 #else |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59536
diff
changeset
|
641 Py_SetProgramName(argv[0]); |
|
78160
b79d276041a8
Closes #15307: symlinks now work on OS X with framework Python builds. Patch by Ronald Oussoren.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents:
77947
diff
changeset
|
642 #endif |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59536
diff
changeset
|
643 } |
|
28175
395eb561ece1
removing one Mac hack and add another:
Just van Rossum <just@letterror.com>
parents:
28169
diff
changeset
|
644 #else |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59536
diff
changeset
|
645 Py_SetProgramName(argv[0]); |
|
28176
48a5113dfef9
An #endif was missing in Just's patch. Added.
Jack Jansen <jack.jansen@cwi.nl>
parents:
28175
diff
changeset
|
646 #endif |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59536
diff
changeset
|
647 Py_Initialize(); |
|
5851
edaf1cb63dc0
This is no longer the real main program; it now defines Py_Main(), so
Guido van Rossum <guido@python.org>
parents:
5547
diff
changeset
|
648 |
|
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:
66687
diff
changeset
|
649 if (!Py_QuietFlag && (Py_VerboseFlag || |
|
66687
f35a6d7e325f
#1772833: add -q command line option.
Georg Brandl <georg@python.org>
parents:
66556
diff
changeset
|
650 (command == NULL && filename == NULL && |
|
f35a6d7e325f
#1772833: add -q command line option.
Georg Brandl <georg@python.org>
parents:
66556
diff
changeset
|
651 module == NULL && stdin_is_interactive))) { |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59536
diff
changeset
|
652 fprintf(stderr, "Python %s on %s\n", |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59536
diff
changeset
|
653 Py_GetVersion(), Py_GetPlatform()); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59536
diff
changeset
|
654 if (!Py_NoSiteFlag) |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59536
diff
changeset
|
655 fprintf(stderr, "%s\n", COPYRIGHT); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59536
diff
changeset
|
656 } |
|
19633
c0a44829bcd5
Add warning mode for classic division, almost exactly as specified in
Guido van Rossum <guido@python.org>
parents:
18808
diff
changeset
|
657 |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59536
diff
changeset
|
658 if (command != NULL) { |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59536
diff
changeset
|
659 /* Backup _PyOS_optind and force sys.argv[0] = '-c' */ |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59536
diff
changeset
|
660 _PyOS_optind--; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59536
diff
changeset
|
661 argv[_PyOS_optind] = L"-c"; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59536
diff
changeset
|
662 } |
| 2896 | 663 |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59536
diff
changeset
|
664 if (module != NULL) { |
|
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:
63962
diff
changeset
|
665 /* Backup _PyOS_optind and force sys.argv[0] = '-m'*/ |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59536
diff
changeset
|
666 _PyOS_optind--; |
|
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:
63962
diff
changeset
|
667 argv[_PyOS_optind] = L"-m"; |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59536
diff
changeset
|
668 } |
|
33680
bcafb68ad985
SF patch #1035498: -m option to run a module as a script
Raymond Hettinger <python@rcn.com>
parents:
33188
diff
changeset
|
669 |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59536
diff
changeset
|
670 PySys_SetArgv(argc-_PyOS_optind, argv+_PyOS_optind); |
| 2896 | 671 |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59536
diff
changeset
|
672 if ((Py_InspectFlag || (command == NULL && filename == NULL && module == NULL)) && |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59536
diff
changeset
|
673 isatty(fileno(stdin))) { |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59536
diff
changeset
|
674 PyObject *v; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59536
diff
changeset
|
675 v = PyImport_ImportModule("readline"); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59536
diff
changeset
|
676 if (v == NULL) |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59536
diff
changeset
|
677 PyErr_Clear(); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59536
diff
changeset
|
678 else |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59536
diff
changeset
|
679 Py_DECREF(v); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59536
diff
changeset
|
680 } |
|
6316
c2359665be80
Move the "import readline" to an earlier place so it is also done when
Guido van Rossum <guido@python.org>
parents:
6203
diff
changeset
|
681 |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59536
diff
changeset
|
682 if (command) { |
|
63792
275acfcccccb
Issue #9425: Create run_command() subfunction
Victor Stinner <victor.stinner@haypocalc.com>
parents:
61751
diff
changeset
|
683 sts = run_command(command, &cf); |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59536
diff
changeset
|
684 free(command); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59536
diff
changeset
|
685 } else if (module) { |
|
77946
fcbd3bda7c0f
Fix issue # 15033 - Return the proper exitcode for failure when modules are invoked using -m switch. Patch contributed by Jeff Knupp
Senthil Kumaran <senthil@uthcode.com>
parents:
75156
diff
changeset
|
686 sts = (RunModule(module, 1) != 0); |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59536
diff
changeset
|
687 } |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59536
diff
changeset
|
688 else { |
|
43897
41f7c13ef161
Merged revisions 59005-59040 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
43850
diff
changeset
|
689 |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59536
diff
changeset
|
690 if (filename == NULL && stdin_is_interactive) { |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59536
diff
changeset
|
691 Py_InspectFlag = 0; /* do exit on SystemExit */ |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59536
diff
changeset
|
692 RunStartupFile(&cf); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59536
diff
changeset
|
693 } |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59536
diff
changeset
|
694 /* XXX */ |
|
43897
41f7c13ef161
Merged revisions 59005-59040 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
43850
diff
changeset
|
695 |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59536
diff
changeset
|
696 sts = -1; /* keep track of whether we've already run __main__ */ |
|
43897
41f7c13ef161
Merged revisions 59005-59040 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
43850
diff
changeset
|
697 |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59536
diff
changeset
|
698 if (filename != NULL) { |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59536
diff
changeset
|
699 sts = RunMainFromImporter(filename); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59536
diff
changeset
|
700 } |
|
43897
41f7c13ef161
Merged revisions 59005-59040 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
43850
diff
changeset
|
701 |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59536
diff
changeset
|
702 if (sts==-1 && filename!=NULL) { |
|
65303
b65206129b5c
Py_Main() uses _Py_wchar2char() to encode the filename in error messages
Victor Stinner <victor.stinner@haypocalc.com>
parents:
65265
diff
changeset
|
703 fp = _Py_wfopen(filename, L"r"); |
|
b65206129b5c
Py_Main() uses _Py_wchar2char() to encode the filename in error messages
Victor Stinner <victor.stinner@haypocalc.com>
parents:
65265
diff
changeset
|
704 if (fp == NULL) { |
|
b65206129b5c
Py_Main() uses _Py_wchar2char() to encode the filename in error messages
Victor Stinner <victor.stinner@haypocalc.com>
parents:
65265
diff
changeset
|
705 char *cfilename_buffer; |
|
b65206129b5c
Py_Main() uses _Py_wchar2char() to encode the filename in error messages
Victor Stinner <victor.stinner@haypocalc.com>
parents:
65265
diff
changeset
|
706 const char *cfilename; |
|
73996
6a966179c73a
Issue #10350: Read and save errno before calling a function which might overwrite it.
Antoine Pitrou <solipsis@pitrou.net>
parents:
68257
diff
changeset
|
707 int err = errno; |
|
66092
1b5f47e2e0f0
PyUnicode_EncodeFS() raises an exception if _Py_wchar2char() fails
Victor Stinner <victor.stinner@haypocalc.com>
parents:
65575
diff
changeset
|
708 cfilename_buffer = _Py_wchar2char(filename, NULL); |
|
65303
b65206129b5c
Py_Main() uses _Py_wchar2char() to encode the filename in error messages
Victor Stinner <victor.stinner@haypocalc.com>
parents:
65265
diff
changeset
|
709 if (cfilename_buffer != NULL) |
|
b65206129b5c
Py_Main() uses _Py_wchar2char() to encode the filename in error messages
Victor Stinner <victor.stinner@haypocalc.com>
parents:
65265
diff
changeset
|
710 cfilename = cfilename_buffer; |
|
b65206129b5c
Py_Main() uses _Py_wchar2char() to encode the filename in error messages
Victor Stinner <victor.stinner@haypocalc.com>
parents:
65265
diff
changeset
|
711 else |
|
b65206129b5c
Py_Main() uses _Py_wchar2char() to encode the filename in error messages
Victor Stinner <victor.stinner@haypocalc.com>
parents:
65265
diff
changeset
|
712 cfilename = "<unprintable file name>"; |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59536
diff
changeset
|
713 fprintf(stderr, "%ls: can't open file '%s': [Errno %d] %s\n", |
|
73996
6a966179c73a
Issue #10350: Read and save errno before calling a function which might overwrite it.
Antoine Pitrou <solipsis@pitrou.net>
parents:
68257
diff
changeset
|
714 argv[0], cfilename, err, strerror(err)); |
|
65303
b65206129b5c
Py_Main() uses _Py_wchar2char() to encode the filename in error messages
Victor Stinner <victor.stinner@haypocalc.com>
parents:
65265
diff
changeset
|
715 if (cfilename_buffer) |
|
b65206129b5c
Py_Main() uses _Py_wchar2char() to encode the filename in error messages
Victor Stinner <victor.stinner@haypocalc.com>
parents:
65265
diff
changeset
|
716 PyMem_Free(cfilename_buffer); |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59536
diff
changeset
|
717 return 2; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59536
diff
changeset
|
718 } |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59536
diff
changeset
|
719 else if (skipfirstline) { |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59536
diff
changeset
|
720 int ch; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59536
diff
changeset
|
721 /* Push back first newline so line numbers |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59536
diff
changeset
|
722 remain the same */ |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59536
diff
changeset
|
723 while ((ch = getc(fp)) != EOF) { |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59536
diff
changeset
|
724 if (ch == '\n') { |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59536
diff
changeset
|
725 (void)ungetc(ch, fp); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59536
diff
changeset
|
726 break; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59536
diff
changeset
|
727 } |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59536
diff
changeset
|
728 } |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59536
diff
changeset
|
729 } |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59536
diff
changeset
|
730 { |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59536
diff
changeset
|
731 /* XXX: does this work on Win/Win64? (see posix_fstat) */ |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59536
diff
changeset
|
732 struct stat sb; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59536
diff
changeset
|
733 if (fstat(fileno(fp), &sb) == 0 && |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59536
diff
changeset
|
734 S_ISDIR(sb.st_mode)) { |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59536
diff
changeset
|
735 fprintf(stderr, "%ls: '%ls' is a directory, cannot continue\n", argv[0], filename); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59536
diff
changeset
|
736 fclose(fp); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59536
diff
changeset
|
737 return 1; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59536
diff
changeset
|
738 } |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59536
diff
changeset
|
739 } |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59536
diff
changeset
|
740 } |
|
43897
41f7c13ef161
Merged revisions 59005-59040 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
43850
diff
changeset
|
741 |
|
63796
0ed665e8a115
Issue #9425: Create run_file() subfunction
Victor Stinner <victor.stinner@haypocalc.com>
parents:
63792
diff
changeset
|
742 if (sts == -1) |
|
0ed665e8a115
Issue #9425: Create run_file() subfunction
Victor Stinner <victor.stinner@haypocalc.com>
parents:
63792
diff
changeset
|
743 sts = run_file(fp, filename, &cf); |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59536
diff
changeset
|
744 } |
|
29682
920777640d28
Py_Main(): Add a check for the PYTHONINSPECT environment variable
Barry Warsaw <barry@python.org>
parents:
28453
diff
changeset
|
745 |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59536
diff
changeset
|
746 /* Check this environment variable at the end, to give programs the |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59536
diff
changeset
|
747 * opportunity to set it from Python. |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59536
diff
changeset
|
748 */ |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59536
diff
changeset
|
749 if (!Py_InspectFlag && |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59536
diff
changeset
|
750 (p = Py_GETENV("PYTHONINSPECT")) && *p != '\0') |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59536
diff
changeset
|
751 { |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59536
diff
changeset
|
752 Py_InspectFlag = 1; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59536
diff
changeset
|
753 } |
| 2896 | 754 |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59536
diff
changeset
|
755 if (Py_InspectFlag && stdin_is_interactive && |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59536
diff
changeset
|
756 (filename != NULL || command != NULL || module != NULL)) { |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59536
diff
changeset
|
757 Py_InspectFlag = 0; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59536
diff
changeset
|
758 /* XXX */ |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59536
diff
changeset
|
759 sts = PyRun_AnyFileFlags(stdin, "<stdin>", &cf) != 0; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59536
diff
changeset
|
760 } |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59536
diff
changeset
|
761 |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59536
diff
changeset
|
762 Py_Finalize(); |
|
16752
5c3aedc969da
Py_Main(): When compiled by Insure (i.e. __INSURE__ is defined), call
Barry Warsaw <barry@python.org>
parents:
16731
diff
changeset
|
763 |
|
5c3aedc969da
Py_Main(): When compiled by Insure (i.e. __INSURE__ is defined), call
Barry Warsaw <barry@python.org>
parents:
16731
diff
changeset
|
764 #ifdef __INSURE__ |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59536
diff
changeset
|
765 /* Insure++ is a memory analysis tool that aids in discovering |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59536
diff
changeset
|
766 * memory leaks and other memory problems. On Python exit, the |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59536
diff
changeset
|
767 * interned string dictionaries are flagged as being in use at exit |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59536
diff
changeset
|
768 * (which it is). Under normal circumstances, this is fine because |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59536
diff
changeset
|
769 * the memory will be automatically reclaimed by the system. Under |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59536
diff
changeset
|
770 * memory debugging, it's a huge source of useless noise, so we |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59536
diff
changeset
|
771 * trade off slower shutdown for less distraction in the memory |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59536
diff
changeset
|
772 * reports. -baw |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59536
diff
changeset
|
773 */ |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59536
diff
changeset
|
774 _Py_ReleaseInternedUnicodeStrings(); |
|
16752
5c3aedc969da
Py_Main(): When compiled by Insure (i.e. __INSURE__ is defined), call
Barry Warsaw <barry@python.org>
parents:
16731
diff
changeset
|
775 #endif /* __INSURE__ */ |
|
5c3aedc969da
Py_Main(): When compiled by Insure (i.e. __INSURE__ is defined), call
Barry Warsaw <barry@python.org>
parents:
16731
diff
changeset
|
776 |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59536
diff
changeset
|
777 return sts; |
| 2896 | 778 } |
| 779 | |
|
31606
fd2103ae6f29
Add pystack definition to Misc/gdbinit with some explanation of its behavior
Skip Montanaro <skip@pobox.com>
parents:
30968
diff
changeset
|
780 /* this is gonna seem *real weird*, but if you put some other code between |
|
fd2103ae6f29
Add pystack definition to Misc/gdbinit with some explanation of its behavior
Skip Montanaro <skip@pobox.com>
parents:
30968
diff
changeset
|
781 Py_Main() and Py_GetArgcArgv() you will need to adjust the test in the |
|
fd2103ae6f29
Add pystack definition to Misc/gdbinit with some explanation of its behavior
Skip Montanaro <skip@pobox.com>
parents:
30968
diff
changeset
|
782 while statement in Misc/gdbinit:ppystack */ |
| 2896 | 783 |
| 784 /* Make the *original* argc/argv available to other modules. | |
| 785 This is rare, but it is needed by the secureware extension. */ | |
| 786 | |
| 787 void | |
|
46318
22a74eaf6b22
Change command line processing API to use wchar_t.
Martin v. Löwis <martin@v.loewis.de>
parents:
45865
diff
changeset
|
788 Py_GetArgcArgv(int *argc, wchar_t ***argv) |
| 2896 | 789 { |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59536
diff
changeset
|
790 *argc = orig_argc; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
59536
diff
changeset
|
791 *argv = orig_argv; |
| 2896 | 792 } |
|
37879
f731859e9b3b
Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents:
37875
diff
changeset
|
793 |
|
f731859e9b3b
Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents:
37875
diff
changeset
|
794 #ifdef __cplusplus |
|
f731859e9b3b
Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents:
37875
diff
changeset
|
795 } |
|
f731859e9b3b
Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents:
37875
diff
changeset
|
796 #endif |
