diff --git a/Userland/Libraries/LibCoreDump/Reader.cpp b/Userland/Libraries/LibCoreDump/Reader.cpp index 843513e04c..ef6dd837f7 100644 --- a/Userland/Libraries/LibCoreDump/Reader.cpp +++ b/Userland/Libraries/LibCoreDump/Reader.cpp @@ -184,7 +184,35 @@ String Reader::process_executable_path() const return executable_path.as_string_or({}); } -const HashMap Reader::metadata() const +Vector Reader::process_arguments() const +{ + auto process_info = this->process_info(); + auto arguments = process_info.get("arguments"); + if (!arguments.is_array()) + return {}; + Vector vector; + arguments.as_array().for_each([&](auto& value) { + if (value.is_string()) + vector.append(value.as_string()); + }); + return vector; +} + +Vector Reader::process_environment() const +{ + auto process_info = this->process_info(); + auto environment = process_info.get("environment"); + if (!environment.is_array()) + return {}; + Vector vector; + environment.as_array().for_each([&](auto& value) { + if (value.is_string()) + vector.append(value.as_string()); + }); + return vector; +} + +HashMap Reader::metadata() const { const ELF::Core::Metadata* metadata_notes_entry = nullptr; for (NotesEntryIterator it((const u8*)m_coredump_image.program_header(m_notes_segment_index).raw_data()); !it.at_end(); it.next()) { diff --git a/Userland/Libraries/LibCoreDump/Reader.h b/Userland/Libraries/LibCoreDump/Reader.h index 15a7f38198..7fd3aaf715 100644 --- a/Userland/Libraries/LibCoreDump/Reader.h +++ b/Userland/Libraries/LibCoreDump/Reader.h @@ -65,7 +65,9 @@ public: int process_pid() const; u8 process_termination_signal() const; String process_executable_path() const; - const HashMap metadata() const; + Vector process_arguments() const; + Vector process_environment() const; + HashMap metadata() const; private: Reader(NonnullRefPtr);