From 2c850f934d7087061e6f8540ee3a273b9817fbc7 Mon Sep 17 00:00:00 2001 From: "Claudius \"keldu\" Holeksa" Date: Thu, 16 Oct 2025 11:56:19 +0200 Subject: Some changes in todo --- run_and_record/c++/main.cpp | 52 ++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 51 insertions(+), 1 deletion(-) (limited to 'run_and_record/c++') diff --git a/run_and_record/c++/main.cpp b/run_and_record/c++/main.cpp index 81ca570..9a33f59 100644 --- a/run_and_record/c++/main.cpp +++ b/run_and_record/c++/main.cpp @@ -24,6 +24,18 @@ using RarArgs = Args< } +/** + * Check if HOME env variable is set and where it points to. + */ +saw::error_or get_home_env(){ + const char* home = std::getenv("HOME"); + if(not home){ + return saw::make_error("HOME env variable not set"); + } + + return {home}; +} + /** * Run program by fork + exec * Arguments are the program path + following args @@ -78,8 +90,46 @@ saw::error_or kel_main(int argc, char** argv){ // args til 1 // Run program with argc - (sep_pos+1) = 1 arg_count => argc_prog = 1 starting at sep_pos+1 - // 0 til i/sep_pos-1 with count of sep_pos + + // Grab home variable Check the default config location and try to decode the file saw::data args; + { + auto eo_home = get_home_env(); + if(eo_home.is_error()){ + return std::move(eov.get_error()); + } + auto& home = eov.get_value(); + + auto conf_file = home / ".config" / "kel" / "run_and_record.json"; + + saw::remote file_remote; + auto eo_addr = file_remote.parse_address(conf_file); + if(eo_addr.is_error()){ + return std::move(eo_addr.get_error()); + } + auto& addr = eo_addr.get_value(); + auto eo_srv = file_remote.template data_listen({*addr}); + if(eo_srv.is_error()){ + return std::move(eo_srv.get_error()); + } + auto& srv = eo_srv.get_value(); + saw::id fid{0u}; + + auto eo_data = srv->receive({fid}); + if(eo_data.is_error()){ + return std::move(eo_data.get_error()); + } + auto& data = eo_data.get_value(); + + saw::codec json_cdc; + auto& args_str = args.template get<"arguments">(); + auto eo_dec = json_cdc.decode(data,args_str); + if(eo_dec.is_error()){ + return eo_dec; + } + } + + // 0 til i/sep_pos-1 with count of sep_pos { saw::data enc_args{sep_pos,argv}; saw::codec args_codec; -- cgit v1.2.3