blob: bdcae13771befe7560d89822fba9f76713ae61e8 [file] [log] [blame]
// Copyright 2020 The Fuchsia Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include <lib/syslog/cpp/macros.h>
#include <cstdlib>
#include "src/developer/forensics/crash_reports/main.h"
#include "src/developer/forensics/exceptions/handler/main.h"
#include "src/developer/forensics/exceptions/main.h"
#include "src/developer/forensics/feedback_data/main.h"
#include "src/developer/forensics/feedback_data/system_log_recorder/main.h"
#include "src/developer/forensics/last_reboot/main.h"
int main(int argc, const char** argv) {
// For components' main executables, argv[0] is the binary path.
// For sub-processes, argv[0] is the process name.
FX_CHECK(argc >= 1);
const auto argv0 = std::string(argv[0]);
if (argv0 == "/pkg/bin/crash_reports") {
return ::forensics::crash_reports::main();
}
if (argv0 == "/pkg/bin/exceptions") {
return ::forensics::exceptions::main();
}
if (argv0.rfind("exception_handler_") == 0) {
return ::forensics::exceptions::handler::main(argv0);
}
if (argv0 == "/pkg/bin/feedback_data") {
return ::forensics::feedback_data::main();
}
if (argv0 == "/pkg/bin/last_reboot") {
return ::forensics::last_reboot::main();
}
if (argv0 == "system_log_recorder") {
return ::forensics::feedback_data::system_log_recorder::main();
}
return EXIT_FAILURE;
}