From d024637e948fc9446cbc315da5a32a79c7b2db41 Mon Sep 17 00:00:00 2001 From: Aoran Zeng Date: Fri, 29 Sep 2023 21:23:58 +0800 Subject: [PATCH] Ensure dir --- chsrc.c | 7 ++++--- chsrc.h | 22 +++++++++++++++++++++- 2 files changed, 25 insertions(+), 4 deletions(-) diff --git a/chsrc.c b/chsrc.c index 487d217..3947bce 100644 --- a/chsrc.c +++ b/chsrc.c @@ -1719,14 +1719,15 @@ wr_guix_setsrc (char* option) } + void -wr_nix_check_cmd_() +wr_nix_check_cmd () { char* check_cmd = xy_str_to_quietcmd("nix-channel --version"); bool exist = does_the_program_exist (check_cmd, "nix-channel"); if (!exist) { - xy_error ("chsrc: 未找到 nix-channel 命令,请检查是否存在"); + chsrc_error ("未找到 nix-channel 命令,请检查是否存在"); exit(1); } } @@ -1739,7 +1740,7 @@ wr_nix_check_cmd_() void wr_nix_setsrc (char* option) { - wr_nix_check_cmd_(); + wr_nix_check_cmd (); int index = use_specific_mirror_or_auto_select (option, wr_nix); diff --git a/chsrc.h b/chsrc.h index f7f2273..db72fc1 100644 --- a/chsrc.h +++ b/chsrc.h @@ -3,7 +3,7 @@ * License : GPLv3 * Authors : Aoran Zeng * Created on : <2023-08-29> - * Last modified : <2023-09-27> + * Last modified : <2023-09-29> * * chsrc: * @@ -291,10 +291,27 @@ chsrc_check_file (const char* path) chsrc_run (cmd); } +static void +chsrc_ensure_dir (const char* dir) +{ + char* mkdir_cmd = NULL; + if (xy_on_windows) { + mkdir_cmd = "md "; + } else { + mkdir_cmd = "mkdir -p "; + } + char* cmd = xy_2strjoin (mkdir_cmd, dir); + cmd = xy_str_to_quietcmd (cmd); + chsrc_run (cmd); +} + static void chsrc_append_to_file (const char* str, const char* file) { file = xy_uniform_path (file); + char* dir = xy_parent_dir (file); + chsrc_ensure_dir (dir); + char* cmd = NULL; if (xy_on_windows) { cmd = xy_strjoin (4, "echo ", str, " >> ", file); @@ -308,6 +325,9 @@ static void chsrc_overwrite_file (const char* str, const char* file) { file = xy_uniform_path (file); + char* dir = xy_parent_dir (file); + chsrc_ensure_dir (dir); + char* cmd = NULL; if (xy_on_windows) { cmd = xy_strjoin (4, "echo ", str, " > ", file);