Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 10 additions & 4 deletions src/ctrl/ctrl_core.c
Original file line number Diff line number Diff line change
Expand Up @@ -1513,10 +1513,16 @@ ctrl_init(void)
ctrl_state->c2u_ring_cv = cond_var_alloc();
{
Temp scratch = scratch_begin(0, 0);
String8 user_program_data_path = os_get_process_info()->user_program_data_path;
String8 user_data_folder = push_str8f(scratch.arena, "%S/raddbg/logs", user_program_data_path);
os_make_directory(user_data_folder);
ctrl_state->ctrl_thread_log_path = push_str8f(ctrl_state->arena, "%S/ctrl_thread.raddbg_log", user_data_folder);

String8 user_program_state_path = os_get_process_info()->user_program_state_path;

String8 user_log_folder = push_str8f(scratch.arena, "%S/raddbg", user_program_state_path);
os_make_directory(user_log_folder);

user_log_folder = push_str8f(scratch.arena, "%S/raddbg/logs", user_program_state_path);
os_make_directory(user_log_folder);

ctrl_state->ctrl_thread_log_path = push_str8f(ctrl_state->arena, "%S/ctrl_thread.raddbg_log", user_log_folder);
os_write_data_to_file_path(ctrl_state->ctrl_thread_log_path, str8_zero());
scratch_end(scratch);
}
Expand Down
21 changes: 18 additions & 3 deletions src/os/core/linux/os_core_linux.c
Original file line number Diff line number Diff line change
Expand Up @@ -1446,6 +1446,22 @@ lnx_signal_handler(int sig, siginfo_t *info, void *arg)
_exit(1);
}

String8
getenv_or_append_to_home(char *env, char *or)
{
char *env_str = getenv(env);
if (env_str == 0 || cstring8_length((U8 *)env_str) == 0) {
char *home = getenv("HOME");

String8 or_str = push_str8f(os_lnx_state.arena, "%S/%S",
str8_cstring(home),
str8_cstring(or));
return or_str;
} else {
return str8_cstring(env_str);
}
}

int
main(int argc, char **argv)
{
Expand Down Expand Up @@ -1571,10 +1587,9 @@ main(int argc, char **argv)
info->initial_path = os_get_current_path(os_lnx_state.arena);
}

// rjf: grab home directory
{
char *home = getenv("HOME");
info->user_program_data_path = str8_cstring(home);
info->user_program_state_path = getenv_or_append_to_home("XDG_STATE_HOME", ".local/state");
info->user_program_config_path = getenv_or_append_to_home("XDG_CONFIG_HOME", ".config");
}

scratch_end(scratch);
Expand Down
3 changes: 2 additions & 1 deletion src/os/core/os_core.h
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,8 @@ struct OS_ProcessInfo
B32 large_pages_allowed;
String8 binary_path;
String8 initial_path;
String8 user_program_data_path;
String8 user_program_state_path;
String8 user_program_config_path;
String8List module_load_paths;
String8List environment;
};
Expand Down
4 changes: 3 additions & 1 deletion src/os/core/win32/os_core_win32.c
Original file line number Diff line number Diff line change
Expand Up @@ -1818,7 +1818,9 @@ w32_entry_point_caller(int argc, WCHAR **wargv)
U16 *buffer = push_array_no_zero(scratch.arena, U16, size);
if(SUCCEEDED(SHGetFolderPathW(0, CSIDL_APPDATA, 0, 0, (WCHAR*)buffer)))
{
info->user_program_data_path = str8_from_16(arena, str16_cstring(buffer));
String8 path = str8_from_16(arena, str16_cstring(buffer));
info->user_program_state_path = path;
info->user_program_config_path = path;
}
scratch_end(scratch);
}
Expand Down
27 changes: 16 additions & 11 deletions src/raddbg/raddbg_core.c
Original file line number Diff line number Diff line change
Expand Up @@ -9319,7 +9319,7 @@ rd_theme_tree_from_name(Arena *arena, Access *access, String8 theme_name)
}
if(theme_tree == &md_nil_node)
{
String8 path = push_str8f(scratch.arena, "%S/raddbg/themes/%S", os_get_process_info()->user_program_data_path, theme_name);
String8 path = push_str8f(scratch.arena, "%S/raddbg/themes/%S", os_get_process_info()->user_program_config_path, theme_name);
U64 endt_us = os_now_microseconds()+100;
if(rd_state->frame_index <= 5)
{
Expand Down Expand Up @@ -9974,10 +9974,15 @@ rd_init(CmdLine *cmdln)
log_select(rd_state->log);
{
Temp scratch = scratch_begin(0, 0);
String8 user_program_data_path = os_get_process_info()->user_program_data_path;
String8 user_data_folder = push_str8f(scratch.arena, "%S/raddbg/logs", user_program_data_path);
rd_state->log_path = push_str8f(rd_state->arena, "%S/ui_thread.raddbg_log", user_data_folder);
os_make_directory(user_data_folder);
String8 user_program_state_path = os_get_process_info()->user_program_state_path;

String8 user_log_folder = push_str8f(scratch.arena, "%S/raddbg", user_program_state_path);
os_make_directory(user_log_folder);

user_log_folder = push_str8f(scratch.arena, "%S/raddbg/logs", user_program_state_path);
rd_state->log_path = push_str8f(rd_state->arena, "%S/ui_thread.raddbg_log", user_log_folder);
os_make_directory(user_log_folder);

os_write_data_to_file_path(rd_state->log_path, str8_zero());
scratch_end(scratch);
}
Expand Down Expand Up @@ -10196,8 +10201,8 @@ rd_init(CmdLine *cmdln)
}
}
{
String8 user_program_data_path = os_get_process_info()->user_program_data_path;
String8 user_data_folder = push_str8f(scratch.arena, "%S/raddbg", user_program_data_path);
String8 user_program_config_path = os_get_process_info()->user_program_config_path;
String8 user_data_folder = push_str8f(scratch.arena, "%S/raddbg", user_program_config_path);
os_make_directory(user_data_folder);
if(user_path.size == 0)
{
Expand Down Expand Up @@ -12518,8 +12523,8 @@ rd_frame(void)
String8 project_path = rd_path_from_cfg(recent_project);
if(project_path.size == 0)
{
String8 user_program_data_path = os_get_process_info()->user_program_data_path;
String8 user_data_folder = push_str8f(scratch.arena, "%S/%S", user_program_data_path, str8_lit("raddbg"));
String8 user_program_config_path = os_get_process_info()->user_program_config_path;
String8 user_data_folder = push_str8f(scratch.arena, "%S/%S", user_program_config_path, str8_lit("raddbg"));
os_make_directory(user_data_folder);
project_path = push_str8f(scratch.arena, "%S/default.raddbg_project", user_data_folder);
}
Expand Down Expand Up @@ -12637,7 +12642,7 @@ rd_frame(void)
case RD_CmdKind_RecordUserAsLastOpened:
{
String8 file_path = rd_regs()->file_path;
String8 last_user_path = push_str8f(scratch.arena, "%S/raddbg/last_user", os_get_process_info()->user_program_data_path);
String8 last_user_path = push_str8f(scratch.arena, "%S/raddbg/last_user", os_get_process_info()->user_program_config_path);
os_write_data_to_file_path(last_user_path, file_path);
}break;

Expand Down Expand Up @@ -15211,7 +15216,7 @@ rd_frame(void)
String8 name = rd_regs()->string;
if(name.size != 0)
{
String8 themes_folder = push_str8f(scratch.arena, "%S/raddbg/themes", os_get_process_info()->user_program_data_path);
String8 themes_folder = push_str8f(scratch.arena, "%S/raddbg/themes", os_get_process_info()->user_program_config_path);
if(os_make_directory(themes_folder))
{
String8 dst_path = push_str8f(scratch.arena, "%S/%S", themes_folder, name);
Expand Down
2 changes: 1 addition & 1 deletion src/raddbg/raddbg_eval.c
Original file line number Diff line number Diff line change
Expand Up @@ -122,7 +122,7 @@ E_TYPE_EXPAND_INFO_FUNCTION_DEF(themes)

//- rjf: gather theme files
{
String8 theme_folder = push_str8f(scratch.arena, "%S/raddbg/themes", os_get_process_info()->user_program_data_path);
String8 theme_folder = push_str8f(scratch.arena, "%S/raddbg/themes", os_get_process_info()->user_program_config_path);
OS_FileIter *it = os_file_iter_begin(scratch.arena, theme_folder, OS_FileIterFlag_SkipFolders);
for(OS_FileInfo info = {0}; os_file_iter_next(scratch.arena, it, &info);)
{
Expand Down