@@ -61,7 +61,8 @@ static void WriteNodeReport(Isolate* isolate,
6161 std::ostream& out,
6262 Local<Value> error,
6363 bool  compact,
64-  bool  exclude_network = false );
64+  bool  exclude_network = false ,
65+  bool  exclude_env = false );
6566static  void  PrintVersionInformation (JSONWriter* writer,
6667 bool  exclude_network = false );
6768static  void  PrintJavaScriptErrorStack (JSONWriter* writer,
@@ -78,6 +79,7 @@ static void PrintJavaScriptErrorProperties(JSONWriter* writer,
7879static  void  PrintNativeStack (JSONWriter* writer);
7980static  void  PrintResourceUsage (JSONWriter* writer);
8081static  void  PrintGCStatistics (JSONWriter* writer, Isolate* isolate);
82+ static  void  PrintEnvironmentVariables (JSONWriter* writer);
8183static  void  PrintSystemInformation (JSONWriter* writer);
8284static  void  PrintLoadedLibraries (JSONWriter* writer);
8385static  void  PrintComponentVersions (JSONWriter* writer);
@@ -95,7 +97,8 @@ static void WriteNodeReport(Isolate* isolate,
9597 std::ostream& out,
9698 Local<Value> error,
9799 bool  compact,
98-  bool  exclude_network) {
100+  bool  exclude_network,
101+  bool  exclude_env) {
99102 //  Obtain the current time and the pid.
100103 TIME_TYPE tm_struct;
101104 DiagnosticFilename::LocalTime (&tm_struct);
@@ -249,6 +252,9 @@ static void WriteNodeReport(Isolate* isolate,
249252 writer.json_arrayend ();
250253
251254 //  Report operating system information
255+  if  (exclude_env == false ) {
256+  PrintEnvironmentVariables (&writer);
257+  }
252258 PrintSystemInformation (&writer);
253259
254260 writer.json_objectend ();
@@ -694,8 +700,7 @@ static void PrintResourceUsage(JSONWriter* writer) {
694700#endif  //  RUSAGE_THREAD
695701}
696702
697- //  Report operating system information.
698- static  void  PrintSystemInformation (JSONWriter* writer) {
703+ static  void  PrintEnvironmentVariables (JSONWriter* writer) {
699704 uv_env_item_t * envitems;
700705 int  envcount;
701706 int  r;
@@ -715,7 +720,10 @@ static void PrintSystemInformation(JSONWriter* writer) {
715720 }
716721
717722 writer->json_objectend ();
723+ }
718724
725+ //  Report operating system information.
726+ static  void  PrintSystemInformation (JSONWriter* writer) {
719727#ifndef  _WIN32
720728 static  struct  {
721729 const  char * description;
@@ -915,6 +923,10 @@ std::string TriggerNodeReport(Isolate* isolate,
915923 bool  exclude_network = env != nullptr  ? env->options ()->report_exclude_network 
916924 : per_process::cli_options->per_isolate 
917925 ->per_env ->report_exclude_network ;
926+  bool  exclude_env =
927+  env != nullptr 
928+  ? env->report_exclude_env ()
929+  : per_process::cli_options->per_isolate ->per_env ->report_exclude_env ;
918930
919931 report::WriteNodeReport (isolate,
920932 env,
@@ -924,7 +936,8 @@ std::string TriggerNodeReport(Isolate* isolate,
924936 *outstream,
925937 error,
926938 compact,
927-  exclude_network);
939+  exclude_network,
940+  exclude_env);
928941
929942 //  Do not close stdout/stderr, only close files we opened.
930943 if  (outfile.is_open ()) {
@@ -978,8 +991,20 @@ void GetNodeReport(Isolate* isolate,
978991 bool  exclude_network = env != nullptr  ? env->options ()->report_exclude_network 
979992 : per_process::cli_options->per_isolate 
980993 ->per_env ->report_exclude_network ;
981-  report::WriteNodeReport (
982-  isolate, env, message, trigger, " "  , out, error, false , exclude_network);
994+  bool  exclude_env =
995+  env != nullptr 
996+  ? env->report_exclude_env ()
997+  : per_process::cli_options->per_isolate ->per_env ->report_exclude_env ;
998+  report::WriteNodeReport (isolate,
999+  env,
1000+  message,
1001+  trigger,
1002+  " "  ,
1003+  out,
1004+  error,
1005+  false ,
1006+  exclude_network,
1007+  exclude_env);
9831008}
9841009
9851010//  External function to trigger a report, writing to a supplied stream.
@@ -995,8 +1020,20 @@ void GetNodeReport(Environment* env,
9951020 bool  exclude_network = env != nullptr  ? env->options ()->report_exclude_network 
9961021 : per_process::cli_options->per_isolate 
9971022 ->per_env ->report_exclude_network ;
998-  report::WriteNodeReport (
999-  isolate, env, message, trigger, " "  , out, error, false , exclude_network);
1023+  bool  exclude_env =
1024+  env != nullptr 
1025+  ? env->report_exclude_env ()
1026+  : per_process::cli_options->per_isolate ->per_env ->report_exclude_env ;
1027+  report::WriteNodeReport (isolate,
1028+  env,
1029+  message,
1030+  trigger,
1031+  " "  ,
1032+  out,
1033+  error,
1034+  false ,
1035+  exclude_network,
1036+  exclude_env);
10001037}
10011038
10021039} //  namespace node
0 commit comments