mirror of
https://github.com/Ed94/raddebugger.git
synced 2026-08-06 13:58:40 +00:00
absolutify target stdout/stderr/stdin paths based on working directory
This commit is contained in:
+15
-6
@@ -5262,25 +5262,32 @@ ctrl_thread__end_and_flush_info_log(void)
|
|||||||
internal void
|
internal void
|
||||||
ctrl_thread__launch(DMN_CtrlCtx *ctrl_ctx, CTRL_Msg *msg)
|
ctrl_thread__launch(DMN_CtrlCtx *ctrl_ctx, CTRL_Msg *msg)
|
||||||
{
|
{
|
||||||
|
Temp scratch = scratch_begin(0, 0);
|
||||||
|
|
||||||
|
//- rjf: produce full stdout/stderr/stdin paths
|
||||||
|
String8 stdout_path = path_absolute_dst_from_relative_dst_src(scratch.arena, msg->stdout_path, msg->path);
|
||||||
|
String8 stdin_path = path_absolute_dst_from_relative_dst_src(scratch.arena, msg->stdin_path, msg->path);
|
||||||
|
String8 stderr_path = path_absolute_dst_from_relative_dst_src(scratch.arena, msg->stderr_path, msg->path);
|
||||||
|
|
||||||
//- rjf: obtain stdout/stderr/stdin handles
|
//- rjf: obtain stdout/stderr/stdin handles
|
||||||
OS_Handle stdout_handle = {0};
|
OS_Handle stdout_handle = {0};
|
||||||
OS_Handle stderr_handle = {0};
|
OS_Handle stderr_handle = {0};
|
||||||
OS_Handle stdin_handle = {0};
|
OS_Handle stdin_handle = {0};
|
||||||
if(msg->stdout_path.size != 0)
|
if(stdout_path.size != 0)
|
||||||
{
|
{
|
||||||
OS_Handle f = os_file_open(OS_AccessFlag_Write|OS_AccessFlag_Read, msg->stdout_path);
|
OS_Handle f = os_file_open(OS_AccessFlag_Write|OS_AccessFlag_Read, stdout_path);
|
||||||
os_file_close(f);
|
os_file_close(f);
|
||||||
stdout_handle = os_file_open(OS_AccessFlag_Write|OS_AccessFlag_Append|OS_AccessFlag_ShareRead|OS_AccessFlag_ShareWrite|OS_AccessFlag_Inherited, msg->stdout_path);
|
stdout_handle = os_file_open(OS_AccessFlag_Write|OS_AccessFlag_Append|OS_AccessFlag_ShareRead|OS_AccessFlag_ShareWrite|OS_AccessFlag_Inherited, msg->stdout_path);
|
||||||
}
|
}
|
||||||
if(msg->stderr_path.size != 0)
|
if(stderr_path.size != 0)
|
||||||
{
|
{
|
||||||
OS_Handle f = os_file_open(OS_AccessFlag_Write|OS_AccessFlag_Read, msg->stderr_path);
|
OS_Handle f = os_file_open(OS_AccessFlag_Write|OS_AccessFlag_Read, stderr_path);
|
||||||
os_file_close(f);
|
os_file_close(f);
|
||||||
stderr_handle = os_file_open(OS_AccessFlag_Write|OS_AccessFlag_Append|OS_AccessFlag_ShareRead|OS_AccessFlag_ShareWrite|OS_AccessFlag_Inherited, msg->stderr_path);
|
stderr_handle = os_file_open(OS_AccessFlag_Write|OS_AccessFlag_Append|OS_AccessFlag_ShareRead|OS_AccessFlag_ShareWrite|OS_AccessFlag_Inherited, msg->stderr_path);
|
||||||
}
|
}
|
||||||
if(msg->stdin_path.size != 0)
|
if(stdin_path.size != 0)
|
||||||
{
|
{
|
||||||
stdin_handle = os_file_open(OS_AccessFlag_Read|OS_AccessFlag_ShareRead|OS_AccessFlag_ShareWrite|OS_AccessFlag_Inherited, msg->stdin_path);
|
stdin_handle = os_file_open(OS_AccessFlag_Read|OS_AccessFlag_ShareRead|OS_AccessFlag_ShareWrite|OS_AccessFlag_Inherited, stdin_path);
|
||||||
}
|
}
|
||||||
|
|
||||||
//- rjf: launch
|
//- rjf: launch
|
||||||
@@ -5313,6 +5320,8 @@ ctrl_thread__launch(DMN_CtrlCtx *ctrl_ctx, CTRL_Msg *msg)
|
|||||||
ctrl_entity_equip_string(entity_ctx_rw_store, entry, string);
|
ctrl_entity_equip_string(entity_ctx_rw_store, entry, string);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
scratch_end(scratch);
|
||||||
}
|
}
|
||||||
|
|
||||||
internal void
|
internal void
|
||||||
|
|||||||
+1
-1
@@ -90,7 +90,7 @@ path_absolute_dst_from_relative_dst_src(Arena *arena, String8 dst, String8 src)
|
|||||||
{
|
{
|
||||||
String8 result = dst;
|
String8 result = dst;
|
||||||
PathStyle dst_style = path_style_from_str8(dst);
|
PathStyle dst_style = path_style_from_str8(dst);
|
||||||
if(dst_style == PathStyle_Relative)
|
if(dst.size != 0 && dst_style == PathStyle_Relative)
|
||||||
{
|
{
|
||||||
Temp scratch = scratch_begin(&arena, 1);
|
Temp scratch = scratch_begin(&arena, 1);
|
||||||
String8 dst_from_src_absolute = push_str8f(scratch.arena, "%S/%S", src, dst);
|
String8 dst_from_src_absolute = push_str8f(scratch.arena, "%S/%S", src, dst);
|
||||||
|
|||||||
Reference in New Issue
Block a user