rm_/rm_.c

83 lines
1.9 KiB
C
Raw Normal View History

2019-12-06 23:48:38 +08:00
#include "rm_.h"
int copyfile(char *old_file, char *new_file)
{
FILE *fp1 = NULL; //指向源文件
FILE *fp2 = NULL; //指向目的文件
char buffer[1024] = { 0 }; //缓存
int n = 0; //文件大小
if ((old_file == NULL) || (new_file == NULL)) {
return -1;
}
if ((fp1 = fopen(old_file, "r")) != NULL) {
if ((fp2 = fopen(new_file, "w")) != NULL) {
while ((n = fread(buffer, 1, sizeof(buffer), fp1)) > 0) {
fwrite(buffer, n, 1, fp2);
memset(buffer, 0, sizeof(buffer));
}
fclose(fp1);
fclose(fp2);
return 1;
}
}
return 0;
}
int main(int argc, char **argv)
{
char new_file[CACHE_SIZE];
bzero(new_file, 0);
if ((getuid()) != 0) {
printf("Root用户运行?\n");
return -1;
}
if (argc == 1) {
printf("%s file1 file2 file3 ...\n", argv[0]);
return -1;
}
if (!access(DELETE, 0)) {
printf("%s 垃圾桶目录存在\n", DELETE);
} else {
printf("%s 创建垃圾桶目录\n", DELETE);
if ((mkdir(DELETE, S_IRWXU | S_IRGRP | S_IXGRP | S_IROTH | S_IXOTH)) ==
0) {
printf("%s 创建垃圾桶成功\n", DELETE);
}
}
for (int i = 1; i < argc; i++) {
bzero(new_file, 0);
strcpy(new_file, DELETE);
char *p; // 去除./ ../ ../../ ...
p=strrchr(argv[i],'/');
if (p != NULL)
p=p+1;
else {
p=argv[i];
}
strcat(new_file, p);
printf("移动到 %s\n", new_file);
cp(argv[i], new_file);
}
for (int i = 1; i < argc; i++) {
if (remove(argv[i]) == 0) {
printf("%s 删除成功\n", argv[i]);
} else {
printf("%s 删除失败\n", argv[i]);
}
}
return 0;
}