Add parameters for running command

This commit is contained in:
Aoran Zeng
2024-06-14 15:51:54 +08:00
parent 20abe49100
commit 7468c7d0d4
2 changed files with 127 additions and 109 deletions

View File

@@ -18,7 +18,8 @@
#define Exit_UserCause 1
#define Exit_Unsupported 2
#define Exit_MatinerIssue 3
#define Exit_FatalError 4
#define Exit_FatalBug 4
#define Exit_FatalUnkownError 5
#define chsrc_log(str) xy_log(App_Name,str)
#define chsrc_succ(str) xy_succ(App_Name,str)
@@ -438,7 +439,7 @@ chsrc_confirm_source (SourceInfo *source)
else if (source_has_empty_url (source))
{
chsrc_error ("该源URL不存在请向开发团队提交bug");
exit (Exit_FatalError);
exit (Exit_FatalBug);
}
else
{
@@ -573,14 +574,22 @@ not_root:
}
#define RunOpt_Default 0x0000
#define RunOpt_No_Note_On_Sccess 0x0001 // 运行成功不提示用户,只有运行失败时才提示用户
#define RunOpt_No_Last_New_Line 0x0010 // 不输出最后的空行
#define RunOpt_Fatal_On_Error 0x0100 // 若命令运行失败,直接退出
static void
chsrc_run (const char *cmd)
chsrc_run (const char *cmd, int run_option)
{
xy_info_remarkably (App_Name, "运行", cmd);
int status = system (cmd);
if (0==status)
{
xy_succ_remarkably (App_Name, "运行", "命令执行成功");
if (! (RunOpt_No_Note_On_Sccess & run_option))
{
xy_succ_remarkably (App_Name, "运行", "命令执行成功");
}
}
else
{
@@ -588,8 +597,17 @@ chsrc_run (const char *cmd)
sprintf (buf, "%d", status);
char *str = xy_2strjoin ("命令执行失败,返回码 ", buf);
xy_error_remarkably (App_Name, "运行", str);
if (RunOpt_Fatal_On_Error)
{
chsrc_error ("关键错误,强制结束");
exit (Exit_FatalUnkownError);
}
}
if (! (RunOpt_No_Last_New_Line & run_option))
{
puts ("");
}
puts ("");
}
@@ -606,7 +624,7 @@ chsrc_take_a_look_at_file (const char *path)
{
cmd = xy_2strjoin ("cat ", path);
}
chsrc_run (cmd);
chsrc_run (cmd, RunOpt_No_Note_On_Sccess|RunOpt_No_Last_New_Line);
}
static void
@@ -624,7 +642,7 @@ chsrc_ensure_dir (const char *dir)
}
char *cmd = xy_2strjoin (mkdir_cmd, dir);
cmd = xy_str_to_quietcmd (cmd);
chsrc_run (cmd);
chsrc_run (cmd, RunOpt_Default);
}
static void
@@ -643,7 +661,7 @@ chsrc_append_to_file (const char *str, const char *file)
{
cmd = xy_strjoin (4, "echo '", str, "' >> ", file);
}
chsrc_run (cmd);
chsrc_run (cmd, RunOpt_Default);
}
static void
@@ -662,7 +680,7 @@ chsrc_overwrite_file (const char *str, const char *file)
{
cmd = xy_strjoin (4, "echo '", str, "' > ", file);
}
chsrc_run (cmd);
chsrc_run (cmd, RunOpt_Default);
}
static void
@@ -685,7 +703,7 @@ chsrc_backup (const char *path)
cmd = xy_strjoin (5, "cp ", path, " ", path, ".bak --backup='t'");
}
chsrc_run (cmd);
chsrc_run (cmd, RunOpt_Default);
chsrc_note_remarkably (xy_strjoin (3, "备份文件名 ", path, ".bak"));
}