From e987034cb209869c0ed1ffa8e8b69f2fd5dc8318 Mon Sep 17 00:00:00 2001 From: iacore Date: Mon, 10 Nov 2025 01:21:02 +0000 Subject: [PATCH 1/2] wip: get_service_description_dir doesn't seem to service directory --- src/dinitctl.cc | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/dinitctl.cc b/src/dinitctl.cc index 1945c52b..32d04fd7 100644 --- a/src/dinitctl.cc +++ b/src/dinitctl.cc @@ -1,6 +1,7 @@ #include #include #include +#include #include #include #include @@ -67,6 +68,7 @@ static int trigger_service(int socknum, cpbuffer_t &rbuffer, const char *service static int cat_service_log(int socknum, cpbuffer_t &rbuffer, const char *service_name, bool do_clear); static int signal_send(int socknum, cpbuffer_t &rbuffer, const char *service_name, sig_num_t sig_num); static int signal_list(); +static std::string get_service_description_dir(int socknum, cpbuffer_t &rbuffer, handle_t service_handle); enum class ctl_cmd { NONE, @@ -1735,6 +1737,12 @@ static int service_status(int socknum, cpbuffer_t &rbuffer, const char *service_ if (service_pid != -1) { cout << " Process ID: " << service_pid << "\n"; } + + std::string service_dir = get_service_description_dir(socknum, rbuffer, handle); + if (!service_dir.empty()) { + std::string path = service_dir + "/" + service_name; + cout << " Path: " << path << "\n"; + } } return 0; @@ -1832,6 +1840,7 @@ static int shutdown_dinit(int socknum, cpbuffer_t &rbuffer, bool verbose) } // Get the service description directory for a loaded service +// Returns empty string when cannot find the directory static std::string get_service_description_dir(int socknum, cpbuffer_t &rbuffer, handle_t service_handle) { auto m = membuf() From 27ae9e54ae80f8e473ebc032b2719b69d7680893 Mon Sep 17 00:00:00 2001 From: iacore Date: Mon, 10 Nov 2025 01:32:32 +0000 Subject: [PATCH 2/2] no idea how to use this --- src/dinitctl.cc | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/src/dinitctl.cc b/src/dinitctl.cc index 32d04fd7..ba47b8d1 100644 --- a/src/dinitctl.cc +++ b/src/dinitctl.cc @@ -1738,11 +1738,19 @@ static int service_status(int socknum, cpbuffer_t &rbuffer, const char *service_ cout << " Process ID: " << service_pid << "\n"; } - std::string service_dir = get_service_description_dir(socknum, rbuffer, handle); - if (!service_dir.empty()) { - std::string path = service_dir + "/" + service_name; - cout << " Path: " << path << "\n"; + + handle_t from_handle; + + if (!load_service(socknum, rbuffer, service_name, &from_handle, nullptr)) { + // TODO: handle error here? + } else { + std::string service_dir = get_service_description_dir(socknum, rbuffer, from_handle); + if (!service_dir.empty()) { + std::string path = service_dir + "/" + service_name; + cout << " Path: " << path << "\n"; + } } + } return 0;