bpo-31845: Fix reading flags from environment (GH-4105) · python/cpython@d7ac061 (original) (raw)
`@@ -522,39 +522,33 @@ read_command_line(int argc, wchar_t **argv, _Py_CommandLineDetails *cmdline)
`
522
522
`return 0;
`
523
523
`}
`
524
524
``
525
``
`-
static int
`
526
``
`-
apply_command_line_and_environment(_Py_CommandLineDetails *cmdline)
`
``
525
`+
static void
`
``
526
`+
maybe_set_flag(int *flag, int value)
`
527
527
`{
`
528
``
`-
char *p;
`
529
``
`-
Py_BytesWarningFlag = cmdline->bytes_warning;
`
530
``
`-
Py_DebugFlag = cmdline->debug;
`
531
``
`-
Py_InspectFlag = cmdline->inspect;
`
532
``
`-
Py_InteractiveFlag = cmdline->interactive;
`
533
``
`-
Py_IsolatedFlag = cmdline->isolated;
`
534
``
`-
Py_OptimizeFlag = cmdline->optimization_level;
`
535
``
`-
Py_DontWriteBytecodeFlag = cmdline->dont_write_bytecode;
`
536
``
`-
Py_NoUserSiteDirectory = cmdline->no_user_site_directory;
`
537
``
`-
Py_NoSiteFlag = cmdline->no_site_import;
`
538
``
`-
Py_UnbufferedStdioFlag = cmdline->use_unbuffered_io;
`
539
``
`-
Py_VerboseFlag = cmdline->verbosity;
`
540
``
`-
Py_QuietFlag = cmdline->quiet_flag;
`
541
``
-
542
``
`-
if (!Py_InspectFlag &&
`
543
``
`-
(p = Py_GETENV("PYTHONINSPECT")) && *p != '\0') {
`
544
``
`-
Py_InspectFlag = 1;
`
545
``
`-
cmdline->inspect = 1;
`
546
``
`-
}
`
547
``
`-
if (!cmdline->use_unbuffered_io &&
`
548
``
`-
(p = Py_GETENV("PYTHONUNBUFFERED")) && *p != '\0') {
`
549
``
`-
Py_UnbufferedStdioFlag = 1;
`
550
``
`-
cmdline->use_unbuffered_io = 1;
`
``
528
`+
/* Helper to set flag variables from command line options
`
``
529
`+
- uses the higher of the two values if they're both set
`
``
530
`+
- otherwise leaves the flag unset
`
``
531
`+
*/
`
``
532
`+
if (*flag < value) {
`
``
533
`+
*flag = value;
`
551
534
` }
`
``
535
`+
}
`
552
536
``
553
``
`-
if (!Py_NoUserSiteDirectory &&
`
554
``
`-
(p = Py_GETENV("PYTHONNOUSERSITE")) && *p != '\0') {
`
555
``
`-
Py_NoUserSiteDirectory = 1;
`
556
``
`-
cmdline->no_user_site_directory = 1;
`
557
``
`-
}
`
``
537
`+
static int
`
``
538
`+
apply_command_line_and_environment(_Py_CommandLineDetails *cmdline)
`
``
539
`+
{
`
``
540
`+
maybe_set_flag(&Py_BytesWarningFlag, cmdline->bytes_warning);
`
``
541
`+
maybe_set_flag(&Py_DebugFlag, cmdline->debug);
`
``
542
`+
maybe_set_flag(&Py_InspectFlag, cmdline->inspect);
`
``
543
`+
maybe_set_flag(&Py_InteractiveFlag, cmdline->interactive);
`
``
544
`+
maybe_set_flag(&Py_IsolatedFlag, cmdline->isolated);
`
``
545
`+
maybe_set_flag(&Py_OptimizeFlag, cmdline->optimization_level);
`
``
546
`+
maybe_set_flag(&Py_DontWriteBytecodeFlag, cmdline->dont_write_bytecode);
`
``
547
`+
maybe_set_flag(&Py_NoUserSiteDirectory, cmdline->no_user_site_directory);
`
``
548
`+
maybe_set_flag(&Py_NoSiteFlag, cmdline->no_site_import);
`
``
549
`+
maybe_set_flag(&Py_UnbufferedStdioFlag, cmdline->use_unbuffered_io);
`
``
550
`+
maybe_set_flag(&Py_VerboseFlag, cmdline->verbosity);
`
``
551
`+
maybe_set_flag(&Py_QuietFlag, cmdline->quiet_flag);
`
558
552
``
559
553
`/* TODO: Apply PYTHONWARNINGS & -W options to sys module here */
`
560
554
`/* TODO: Apply -X options to sys module here */
`