更优雅
This commit is contained in:
parent
494e3724ed
commit
cefd122c19
64
mv.c
64
mv.c
@ -378,26 +378,9 @@ static char *read_config(char *config_file, char *buffer)
|
||||
return strcpy(buffer, temp_buffer);
|
||||
}
|
||||
|
||||
int
|
||||
main (int argc, char **argv)
|
||||
// 处理参数
|
||||
int process_argv(int argc, char *argv[], char **argvs)
|
||||
{
|
||||
int c;
|
||||
bool ok;
|
||||
bool make_backups = false;
|
||||
char const *backup_suffix = NULL;
|
||||
char *version_control_string = NULL;
|
||||
struct cp_options x;
|
||||
char *target_directory = NULL;
|
||||
bool no_target_directory = false;
|
||||
int n_files;
|
||||
char **file;
|
||||
bool selinux_enabled = (0 < is_selinux_enabled ());
|
||||
|
||||
char *argvs[20]; // 复制 *argv[] 到 *argvs[20]
|
||||
for (int i=0; i<argc; i++) {
|
||||
argvs[i] = argv[i];
|
||||
}
|
||||
|
||||
char delete_path[270];
|
||||
memset(delete_path, 0, 270);
|
||||
read_config("/etc/rm_.conf", delete_path); // 如果有配置文件存在, 读取配置文件, 如果读取配置文件失败默认使用"/tmp/"目录来当作垃圾桶目录
|
||||
@ -424,8 +407,38 @@ main (int argc, char **argv)
|
||||
}
|
||||
}
|
||||
|
||||
argvs[argc] = delete_path; // 使argv最后一个参数为垃圾桶目录
|
||||
for (int i=0; i<argc; i++)
|
||||
{
|
||||
argvs[i] = argv[i];
|
||||
}
|
||||
|
||||
char *s = malloc(270);
|
||||
strcpy(s, delete_path);
|
||||
argvs[argc] = s;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
int
|
||||
main (int argc, char **argv)
|
||||
{
|
||||
int c;
|
||||
bool ok;
|
||||
bool make_backups = false;
|
||||
char const *backup_suffix = NULL;
|
||||
char *version_control_string = NULL;
|
||||
struct cp_options x;
|
||||
char *target_directory = NULL;
|
||||
bool no_target_directory = false;
|
||||
int n_files;
|
||||
char **file;
|
||||
bool selinux_enabled = (0 < is_selinux_enabled ());
|
||||
|
||||
/* 处理 argv */
|
||||
char **head_argvs;
|
||||
char *argvs[20] = { malloc(sizeof(char *)) };
|
||||
process_argv(argc, argv, &(argvs[0]));
|
||||
head_argvs = &(argvs[0]); // head_argvs指向argvs[0]
|
||||
argc = argc + 1; // 改变argc数
|
||||
|
||||
@ -512,16 +525,7 @@ x.interactive = I_ALWAYS_YES; // 默认使用-f参数
|
||||
n_files = argc - optind;
|
||||
file = (head_argvs + optind);
|
||||
|
||||
/*
|
||||
// 测试, 打印新的argv参数
|
||||
int i=0;
|
||||
while(i < argc)
|
||||
{
|
||||
printf("%s\n", head_argvs[i]);
|
||||
i++;
|
||||
}
|
||||
printf("%d\n", argc);
|
||||
*/
|
||||
|
||||
if (n_files <= !target_directory)
|
||||
{
|
||||
if (n_files <= 0)
|
||||
|
Loading…
Reference in New Issue
Block a user