读取配置文件失败后添加默认的垃圾桶目录
This commit is contained in:
parent
96246e8eb8
commit
5df2ddbd89
32
build_mv.sh
32
build_mv.sh
@ -1,4 +1,4 @@
|
|||||||
#!/bin/bsh
|
#!/bin/bash
|
||||||
#
|
#
|
||||||
# Build MV command
|
# Build MV command
|
||||||
# Based on coreutils-8.32
|
# Based on coreutils-8.32
|
||||||
@ -8,12 +8,12 @@
|
|||||||
function init() {
|
function init() {
|
||||||
SHELL_FOLDER=$(dirname $(readlink -f "$0"));
|
SHELL_FOLDER=$(dirname $(readlink -f "$0"));
|
||||||
set -x
|
set -x
|
||||||
|
CC=${CROSS_COMPILE}gcc
|
||||||
|
AR=${CROSS_COMPILE}ar
|
||||||
|
STRIP=${CROSS_COMPILE}strip
|
||||||
}
|
}
|
||||||
|
|
||||||
function LIB() {
|
function LIB() {
|
||||||
apt-get build-dep coreutils
|
|
||||||
|
|
||||||
S=(copy-acl.c set-acl.c acl-errno-valid.c acl-internal.c get-permissions.c set-permissions.c allocator.c areadlink.c areadlink-with-size.c areadlinkat.c argmatch.c argv-iter.c openat-proc.c backupfile.c backup-rename.c backupfile.c backup-find.c base32.c base64.c binary-io.c bitrotate.c buffer-lcm.c c-ctype.c c-strcasecmp.c c-strncasecmp.c c-strtod.c c-strtold.c canon-host.c canonicalize.c careadlinkat.c chmodat.c chownat.c cl-strtod.c cl-strtold.c cloexec.c close-stream.c closein.c closeout.c count-leading-zeros.c af_alg.c md5.c sha1.c sha256.c sha512.c cycle-check.c di-set.c diacrit.c opendir-safer.c dirname.c basename.c dirname-lgpl.c basename-lgpl.c stripslash.c dtoastr.c dtotimespec.c exclude.c exitfail.c fadvise.c creat-safer.c open-safer.c fd-hook.c fd-reopen.c fd-safer-flag.c dup-safer-flag.c fdutimensat.c file-has-acl.c file-set.c file-type.c filemode.c filenamecat.c filenamecat-lgpl.c filevercmp.c fopen-safer.c fprintftime.c freading.c freadseek.c freopen-safer.c ftoastr.c full-read.c full-write.c gethrxtime.c xtime.c getndelim2.c getprogname.c gettime.c getugroups.c hard-locale.c hash.c hash-pjw.c hash-triple.c heap.c human.c i-ring.c idcache.c ino-map.c imaxtostr.c inttostr.c offtostr.c uinttostr.c umaxtostr.c ldtoastr.c linebuffer.c localcharset.c glthread/lock.c long-options.c malloca.c math.c mbchar.c mbiter.c mbsalign.c mbscasecmp.c mbschr.c mbslen.c mbsstr.c mbswidth.c mbuiter.c memcasecmp.c memchr2.c memcmp2.c memcoll.c mgetgroups.c mkancesdirs.c dirchownmod.c mkdir-p.c modechange.c mpsort.c nproc.c nstrftime.c openat-die.c openat-safer.c opendirat.c parse-datetime.c physmem.c pipe2.c posixtm.c posixver.c printf-frexp.c printf-frexpl.c priv-set.c progname.c propername.c qcopy-acl.c qset-acl.c quotearg.c randint.c randperm.c randread.c rand-isaac.c read-file.c readtokens.c readtokens0.c renameatu.c root-dev-ino.c safe-read.c safe-write.c same.c save-cwd.c savedir.c savewd.c selinux-at.c se-context.c se-selinux.c setlocale_null.c settime.c sig-handler.c sockets.c stat-time.c statat.c mkstemp-safer.c striconv.c strnlen1.c strintcmp.c strnumcmp.c sys_socket.c tempname.c glthread/threadlib.c timespec.c glthread/tls.c trim.c u64.c unicodeio.c unistd.c dup-safer.c fd-safer.c pipe-safer.c unistr/u8-mbtoucr.c unistr/u8-uctomb.c unistr/u8-uctomb-aux.c uniwidth/width.c unlinkdir.c userspec.c utimecmp.c utimens.c verror.c version-etc.c version-etc-fsf.c wctype-h.c write-any-file.c xmalloc.c xalloc-die.c xbinary-io.c xdectoimax.c xdectoumax.c xfts.c xgetcwd.c xgetgroups.c xgethostname.c xmemcoll.c xnanosleep.c xprintf.c xreadlink.c xsize.c xstriconv.c xstrndup.c xstrtod.c xstrtoimax.c xstrtol.c xstrtoul.c xstrtol-error.c xstrtold.c xstrtoumax.c xvasprintf.c xasprintf.c yesno.c asnprintf.c chdir-long.c fchmodat.c fclose.c fcntl.c fflush.c fpurge.c freadahead.c freadptr.c fseek.c fseeko.c fseterr.c fsusage.c fts.c getfilecon.c isapipe.c lchmod.c localtime-buffer.c mbrlen.c mbrtowc.c mknod.c mkstemp.c mktime.c mountlist.c nanosleep.c obstack.c printf-args.c printf-parse.c readutmp.c regex.c sig2str.c time_rz.c vasnprintf.c)
|
S=(copy-acl.c set-acl.c acl-errno-valid.c acl-internal.c get-permissions.c set-permissions.c allocator.c areadlink.c areadlink-with-size.c areadlinkat.c argmatch.c argv-iter.c openat-proc.c backupfile.c backup-rename.c backupfile.c backup-find.c base32.c base64.c binary-io.c bitrotate.c buffer-lcm.c c-ctype.c c-strcasecmp.c c-strncasecmp.c c-strtod.c c-strtold.c canon-host.c canonicalize.c careadlinkat.c chmodat.c chownat.c cl-strtod.c cl-strtold.c cloexec.c close-stream.c closein.c closeout.c count-leading-zeros.c af_alg.c md5.c sha1.c sha256.c sha512.c cycle-check.c di-set.c diacrit.c opendir-safer.c dirname.c basename.c dirname-lgpl.c basename-lgpl.c stripslash.c dtoastr.c dtotimespec.c exclude.c exitfail.c fadvise.c creat-safer.c open-safer.c fd-hook.c fd-reopen.c fd-safer-flag.c dup-safer-flag.c fdutimensat.c file-has-acl.c file-set.c file-type.c filemode.c filenamecat.c filenamecat-lgpl.c filevercmp.c fopen-safer.c fprintftime.c freading.c freadseek.c freopen-safer.c ftoastr.c full-read.c full-write.c gethrxtime.c xtime.c getndelim2.c getprogname.c gettime.c getugroups.c hard-locale.c hash.c hash-pjw.c hash-triple.c heap.c human.c i-ring.c idcache.c ino-map.c imaxtostr.c inttostr.c offtostr.c uinttostr.c umaxtostr.c ldtoastr.c linebuffer.c localcharset.c glthread/lock.c long-options.c malloca.c math.c mbchar.c mbiter.c mbsalign.c mbscasecmp.c mbschr.c mbslen.c mbsstr.c mbswidth.c mbuiter.c memcasecmp.c memchr2.c memcmp2.c memcoll.c mgetgroups.c mkancesdirs.c dirchownmod.c mkdir-p.c modechange.c mpsort.c nproc.c nstrftime.c openat-die.c openat-safer.c opendirat.c parse-datetime.c physmem.c pipe2.c posixtm.c posixver.c printf-frexp.c printf-frexpl.c priv-set.c progname.c propername.c qcopy-acl.c qset-acl.c quotearg.c randint.c randperm.c randread.c rand-isaac.c read-file.c readtokens.c readtokens0.c renameatu.c root-dev-ino.c safe-read.c safe-write.c same.c save-cwd.c savedir.c savewd.c selinux-at.c se-context.c se-selinux.c setlocale_null.c settime.c sig-handler.c sockets.c stat-time.c statat.c mkstemp-safer.c striconv.c strnlen1.c strintcmp.c strnumcmp.c sys_socket.c tempname.c glthread/threadlib.c timespec.c glthread/tls.c trim.c u64.c unicodeio.c unistd.c dup-safer.c fd-safer.c pipe-safer.c unistr/u8-mbtoucr.c unistr/u8-uctomb.c unistr/u8-uctomb-aux.c uniwidth/width.c unlinkdir.c userspec.c utimecmp.c utimens.c verror.c version-etc.c version-etc-fsf.c wctype-h.c write-any-file.c xmalloc.c xalloc-die.c xbinary-io.c xdectoimax.c xdectoumax.c xfts.c xgetcwd.c xgetgroups.c xgethostname.c xmemcoll.c xnanosleep.c xprintf.c xreadlink.c xsize.c xstriconv.c xstrndup.c xstrtod.c xstrtoimax.c xstrtol.c xstrtoul.c xstrtol-error.c xstrtold.c xstrtoumax.c xvasprintf.c xasprintf.c yesno.c asnprintf.c chdir-long.c fchmodat.c fclose.c fcntl.c fflush.c fpurge.c freadahead.c freadptr.c fseek.c fseeko.c fseterr.c fsusage.c fts.c getfilecon.c isapipe.c lchmod.c localtime-buffer.c mbrlen.c mbrtowc.c mknod.c mkstemp.c mktime.c mountlist.c nanosleep.c obstack.c printf-args.c printf-parse.c readutmp.c regex.c sig2str.c time_rz.c vasnprintf.c)
|
||||||
O="copy-acl.o set-acl.o acl-errno-valid.o acl-internal.o get-permissions.o set-permissions.o allocator.o areadlink.o areadlink-with-size.o areadlinkat.o argmatch.o argv-iter.o openat-proc.o backupfile.o backup-rename.o backupfile.o backup-find.o base32.o base64.o binary-io.o bitrotate.o buffer-lcm.o c-ctype.o c-strcasecmp.o c-strncasecmp.o c-strtod.o c-strtold.o canon-host.o canonicalize.o careadlinkat.o chmodat.o chownat.o cl-strtod.o cl-strtold.o cloexec.o close-stream.o closein.o closeout.o count-leading-zeros.o af_alg.o md5.o sha1.o sha256.o sha512.o cycle-check.o di-set.o diacrit.o opendir-safer.o dirname.o basename.o dirname-lgpl.o basename-lgpl.o stripslash.o dtoastr.o dtotimespec.o exclude.o exitfail.o fadvise.o creat-safer.o open-safer.o fd-hook.o fd-reopen.o fd-safer-flag.o dup-safer-flag.o fdutimensat.o file-has-acl.o file-set.o file-type.o filemode.o filenamecat.o filenamecat-lgpl.o filevercmp.o fopen-safer.o fprintftime.o freading.o freadseek.o freopen-safer.o ftoastr.o full-read.o full-write.o gethrxtime.o xtime.o getndelim2.o getprogname.o gettime.o getugroups.o hard-locale.o hash.o hash-pjw.o hash-triple.o heap.o human.o i-ring.o idcache.o ino-map.o imaxtostr.o inttostr.o offtostr.o uinttostr.o umaxtostr.o ldtoastr.o linebuffer.o localcharset.o glthread/lock.o long-options.o malloca.o math.o mbchar.o mbiter.o mbsalign.o mbscasecmp.o mbschr.o mbslen.o mbsstr.o mbswidth.o mbuiter.o memcasecmp.o memchr2.o memcmp2.o memcoll.o mgetgroups.o mkancesdirs.o dirchownmod.o mkdir-p.o modechange.o mpsort.o nproc.o nstrftime.o openat-die.o openat-safer.o opendirat.o parse-datetime.o physmem.o pipe2.o posixtm.o posixver.o printf-frexp.o printf-frexpl.o priv-set.o progname.o propername.o qcopy-acl.o qset-acl.o quotearg.o randint.o randperm.o randread.o rand-isaac.o read-file.o readtokens.o readtokens0.o renameatu.o root-dev-ino.o safe-read.o safe-write.o same.o save-cwd.o savedir.o savewd.o selinux-at.o se-context.o se-selinux.o setlocale_null.o settime.o sig-handler.o sockets.o stat-time.o statat.o mkstemp-safer.o striconv.o strnlen1.o strintcmp.o strnumcmp.o sys_socket.o tempname.o glthread/threadlib.o timespec.o glthread/tls.o trim.o u64.o unicodeio.o unistd.o dup-safer.o fd-safer.o pipe-safer.o unistr/u8-mbtoucr.o unistr/u8-uctomb.o unistr/u8-uctomb-aux.o uniwidth/width.o unlinkdir.o userspec.o utimecmp.o utimens.o verror.o version-etc.o version-etc-fsf.o wctype-h.o write-any-file.o xmalloc.o xalloc-die.o xbinary-io.o xdectoimax.o xdectoumax.o xfts.o xgetcwd.o xgetgroups.o xgethostname.o xmemcoll.o xnanosleep.o xprintf.o xreadlink.o xsize.o xstriconv.o xstrndup.o xstrtod.o xstrtoimax.o xstrtol.o xstrtoul.o xstrtol-error.o xstrtold.o xstrtoumax.o xvasprintf.o xasprintf.o yesno.o asnprintf.o chdir-long.o fchmodat.o fclose.o fcntl.o fflush.o fpurge.o freadahead.o freadptr.o fseek.o fseeko.o fseterr.o fsusage.o fts.o getfilecon.o isapipe.o lchmod.o localtime-buffer.o mbrlen.o mbrtowc.o mknod.o mkstemp.o mktime.o mountlist.o nanosleep.o obstack.o printf-args.o printf-parse.o readutmp.o regex.o sig2str.o time_rz.o vasnprintf.o"
|
O="copy-acl.o set-acl.o acl-errno-valid.o acl-internal.o get-permissions.o set-permissions.o allocator.o areadlink.o areadlink-with-size.o areadlinkat.o argmatch.o argv-iter.o openat-proc.o backupfile.o backup-rename.o backupfile.o backup-find.o base32.o base64.o binary-io.o bitrotate.o buffer-lcm.o c-ctype.o c-strcasecmp.o c-strncasecmp.o c-strtod.o c-strtold.o canon-host.o canonicalize.o careadlinkat.o chmodat.o chownat.o cl-strtod.o cl-strtold.o cloexec.o close-stream.o closein.o closeout.o count-leading-zeros.o af_alg.o md5.o sha1.o sha256.o sha512.o cycle-check.o di-set.o diacrit.o opendir-safer.o dirname.o basename.o dirname-lgpl.o basename-lgpl.o stripslash.o dtoastr.o dtotimespec.o exclude.o exitfail.o fadvise.o creat-safer.o open-safer.o fd-hook.o fd-reopen.o fd-safer-flag.o dup-safer-flag.o fdutimensat.o file-has-acl.o file-set.o file-type.o filemode.o filenamecat.o filenamecat-lgpl.o filevercmp.o fopen-safer.o fprintftime.o freading.o freadseek.o freopen-safer.o ftoastr.o full-read.o full-write.o gethrxtime.o xtime.o getndelim2.o getprogname.o gettime.o getugroups.o hard-locale.o hash.o hash-pjw.o hash-triple.o heap.o human.o i-ring.o idcache.o ino-map.o imaxtostr.o inttostr.o offtostr.o uinttostr.o umaxtostr.o ldtoastr.o linebuffer.o localcharset.o glthread/lock.o long-options.o malloca.o math.o mbchar.o mbiter.o mbsalign.o mbscasecmp.o mbschr.o mbslen.o mbsstr.o mbswidth.o mbuiter.o memcasecmp.o memchr2.o memcmp2.o memcoll.o mgetgroups.o mkancesdirs.o dirchownmod.o mkdir-p.o modechange.o mpsort.o nproc.o nstrftime.o openat-die.o openat-safer.o opendirat.o parse-datetime.o physmem.o pipe2.o posixtm.o posixver.o printf-frexp.o printf-frexpl.o priv-set.o progname.o propername.o qcopy-acl.o qset-acl.o quotearg.o randint.o randperm.o randread.o rand-isaac.o read-file.o readtokens.o readtokens0.o renameatu.o root-dev-ino.o safe-read.o safe-write.o same.o save-cwd.o savedir.o savewd.o selinux-at.o se-context.o se-selinux.o setlocale_null.o settime.o sig-handler.o sockets.o stat-time.o statat.o mkstemp-safer.o striconv.o strnlen1.o strintcmp.o strnumcmp.o sys_socket.o tempname.o glthread/threadlib.o timespec.o glthread/tls.o trim.o u64.o unicodeio.o unistd.o dup-safer.o fd-safer.o pipe-safer.o unistr/u8-mbtoucr.o unistr/u8-uctomb.o unistr/u8-uctomb-aux.o uniwidth/width.o unlinkdir.o userspec.o utimecmp.o utimens.o verror.o version-etc.o version-etc-fsf.o wctype-h.o write-any-file.o xmalloc.o xalloc-die.o xbinary-io.o xdectoimax.o xdectoumax.o xfts.o xgetcwd.o xgetgroups.o xgethostname.o xmemcoll.o xnanosleep.o xprintf.o xreadlink.o xsize.o xstriconv.o xstrndup.o xstrtod.o xstrtoimax.o xstrtol.o xstrtoul.o xstrtol-error.o xstrtold.o xstrtoumax.o xvasprintf.o xasprintf.o yesno.o asnprintf.o chdir-long.o fchmodat.o fclose.o fcntl.o fflush.o fpurge.o freadahead.o freadptr.o fseek.o fseeko.o fseterr.o fsusage.o fts.o getfilecon.o isapipe.o lchmod.o localtime-buffer.o mbrlen.o mbrtowc.o mknod.o mkstemp.o mktime.o mountlist.o nanosleep.o obstack.o printf-args.o printf-parse.o readutmp.o regex.o sig2str.o time_rz.o vasnprintf.o"
|
||||||
|
|
||||||
@ -21,7 +21,7 @@ function LIB() {
|
|||||||
echo $i
|
echo $i
|
||||||
o=$(echo $i | sed 's/\.c/\.o/');
|
o=$(echo $i | sed 's/\.c/\.o/');
|
||||||
echo $o;
|
echo $o;
|
||||||
gcc -I. -I./lib -Ilib -I./lib -g -O2 -c -o lib/${o} lib/${i}
|
${CC} -I. -I./lib -Ilib -I./lib -g -O2 -c -o lib/${o} lib/${i}
|
||||||
done
|
done
|
||||||
|
|
||||||
cd ${SHELL_FOLDER}/lib;
|
cd ${SHELL_FOLDER}/lib;
|
||||||
@ -30,21 +30,21 @@ function LIB() {
|
|||||||
|
|
||||||
function MV() {
|
function MV() {
|
||||||
cd ${SHELL_FOLDER};
|
cd ${SHELL_FOLDER};
|
||||||
gcc -I./lib -c -o version.o version.c
|
${CC} -I./lib -c -o version.o version.c
|
||||||
ar cr libver.a version.o
|
${AR} cr libver.a version.o
|
||||||
gcc -I. -I./lib -g -O2 -c -o remove.o remove.c
|
${CC} -I. -I./lib -g -O2 -c -o remove.o remove.c
|
||||||
gcc -I. -I./lib -g -O2 -c -o copy.o copy.c
|
${CC} -I. -I./lib -g -O2 -c -o copy.o copy.c
|
||||||
gcc -I. -I./lib -g -O2 -c -o cp-hash.o cp-hash.c
|
${CC} -I. -I./lib -g -O2 -c -o cp-hash.o cp-hash.c
|
||||||
gcc -I. -I./lib -g -O2 -c -o extent-scan.o extent-scan.c
|
${CC} -I. -I./lib -g -O2 -c -o extent-scan.o extent-scan.c
|
||||||
gcc -I. -I./lib -g -O2 -c -o force-link.o force-link.c
|
${CC} -I. -I./lib -g -O2 -c -o force-link.o force-link.c
|
||||||
gcc -I. -I./lib -g -O2 -c -o selinux.o selinux.c
|
${CC} -I. -I./lib -g -O2 -c -o selinux.o selinux.c
|
||||||
gcc -I. -I./lib -g -O2 -c -o mv.o mv.c
|
${CC} -I. -I./lib -g -O2 -c -o mv.o mv.c
|
||||||
|
|
||||||
gcc -g -O2 -Wl,--as-needed -o mv \
|
${CC} -g -O2 -Wl,--as-needed -o mv \
|
||||||
mv.o remove.o copy.o cp-hash.o extent-scan.o force-link.o selinux.o libver.a lib/libcoreutils.a lib/libcoreutils.a \
|
mv.o remove.o copy.o cp-hash.o extent-scan.o force-link.o selinux.o libver.a lib/libcoreutils.a lib/libcoreutils.a \
|
||||||
-lselinux -lacl -lattr -pthread -lpcre2-8 -ldl -static
|
-lselinux -lacl -lattr -pthread -lpcre2-8 -ldl -static
|
||||||
mv ./mv rm_
|
mv ./mv rm_
|
||||||
strip ./rm_
|
$STRIP ./rm_
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
37
mv.c
37
mv.c
@ -331,7 +331,7 @@ If you specify more than one of -i, -f, -n, only the final one takes effect.\n\
|
|||||||
printf("\n\033[31mInstead of rm command to prevent mistaken deletion of files\n\
|
printf("\n\033[31mInstead of rm command to prevent mistaken deletion of files\n\
|
||||||
Author: aixiao@aixiao.me\033[0m\n");
|
Author: aixiao@aixiao.me\033[0m\n");
|
||||||
printf("\n\033[31m代替rm命令,以防止错误删除文件\n\
|
printf("\n\033[31m代替rm命令,以防止错误删除文件\n\
|
||||||
Author: aixiao@aixiao.me\033[0m\n");
|
作者: aixiao@aixiao.me\033[0m\n");
|
||||||
|
|
||||||
|
|
||||||
emit_backup_suffix_note ();
|
emit_backup_suffix_note ();
|
||||||
@ -340,6 +340,7 @@ Author: aixiao@aixiao.me\033[0m\n");
|
|||||||
exit (status);
|
exit (status);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 在这里删除字符串里的'\n'
|
||||||
static void delchar(char *str, char c)
|
static void delchar(char *str, char c)
|
||||||
{
|
{
|
||||||
int i, j;
|
int i, j;
|
||||||
@ -353,14 +354,25 @@ static void delchar(char *str, char c)
|
|||||||
str[j] = '\0'; //字符串结束
|
str[j] = '\0'; //字符串结束
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 读取配置文件
|
||||||
static char *read_config(char *config_file, char *buffer)
|
static char *read_config(char *config_file, char *buffer)
|
||||||
{
|
{
|
||||||
char temp_buffer[270];
|
char temp_buffer[270];
|
||||||
FILE *fd;
|
FILE *fd;
|
||||||
|
|
||||||
|
|
||||||
fd = fopen(config_file, "r"); //打开文件
|
fd = fopen(config_file, "r"); //打开文件
|
||||||
|
if (fd == NULL) {
|
||||||
|
return strcpy(buffer, "/tmp/");
|
||||||
|
}
|
||||||
memset(temp_buffer, 0, 270);
|
memset(temp_buffer, 0, 270);
|
||||||
fread(temp_buffer, sizeof(temp_buffer) / sizeof((temp_buffer)[0]), sizeof(*temp_buffer), fd); //读取配置
|
size_t ret = fread(temp_buffer, sizeof(temp_buffer) / sizeof((temp_buffer)[0]), sizeof(*temp_buffer), fd); //读取配置
|
||||||
|
/*
|
||||||
|
if (ret != sizeof(*temp_buffer)) {
|
||||||
|
fprintf(stderr, "fread() failed: %zu\n", ret);
|
||||||
|
exit(EXIT_FAILURE);
|
||||||
|
}
|
||||||
|
*/
|
||||||
delchar(temp_buffer, 10); // 删除'\n'
|
delchar(temp_buffer, 10); // 删除'\n'
|
||||||
|
|
||||||
return strcpy(buffer, temp_buffer);
|
return strcpy(buffer, temp_buffer);
|
||||||
@ -381,14 +393,14 @@ main (int argc, char **argv)
|
|||||||
char **file;
|
char **file;
|
||||||
bool selinux_enabled = (0 < is_selinux_enabled ());
|
bool selinux_enabled = (0 < is_selinux_enabled ());
|
||||||
|
|
||||||
char *argvs[20];
|
char *argvs[20]; // 复制 *argv[] 到 *argvs[20]
|
||||||
for (int i=0; i<argc; i++) {
|
for (int i=0; i<argc; i++) {
|
||||||
argvs[i] = argv[i];
|
argvs[i] = argv[i];
|
||||||
}
|
}
|
||||||
|
|
||||||
char delete_path[270];
|
char delete_path[270];
|
||||||
memset(delete_path, 0, 270);
|
memset(delete_path, 0, 270);
|
||||||
read_config("/etc/rm_.conf", delete_path);
|
read_config("/etc/rm_.conf", delete_path); // 如果有配置文件存在, 读取配置文件, 如果读取配置文件失败默认使用"/tmp/"目录来当作垃圾桶目录
|
||||||
//printf("%s", delete_path);
|
//printf("%s", delete_path);
|
||||||
|
|
||||||
char mkdir_s[270];
|
char mkdir_s[270];
|
||||||
@ -402,20 +414,20 @@ main (int argc, char **argv)
|
|||||||
else
|
else
|
||||||
{
|
{
|
||||||
printf("%s DOESN'T EXISIT!\n", delete_path);
|
printf("%s DOESN'T EXISIT!\n", delete_path);
|
||||||
if (-1 == system("mount -o remount,rw /")) {
|
if (-1 == system("mount -o remount,rw /")) { // 调用mount命令改变根目录读写权限
|
||||||
perror("system");
|
perror("system mount");
|
||||||
}
|
}
|
||||||
if (-1 == system(mkdir_s)) {
|
if (-1 == system(mkdir_s)) { // 调用mkdir命令创建不存在的垃圾桶目录
|
||||||
perror("system");
|
perror("system mkdir");
|
||||||
} else {
|
} else {
|
||||||
printf("%s Directory Created Successfully!\n", delete_path);
|
printf("%s Directory Created Successfully!\n", delete_path);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
argvs[argc] = delete_path;
|
argvs[argc] = delete_path; // 使argv最后一个参数为垃圾桶目录
|
||||||
char **head_argvs;
|
char **head_argvs;
|
||||||
head_argvs = &(argvs[0]);
|
head_argvs = &(argvs[0]); // head_argvs指向argvs[0]
|
||||||
argc = argc + 1;
|
argc = argc + 1; // 改变argc数
|
||||||
|
|
||||||
initialize_main (&argc, &argvs);
|
initialize_main (&argc, &argvs);
|
||||||
set_program_name (argvs[0]);
|
set_program_name (argvs[0]);
|
||||||
@ -495,12 +507,13 @@ main (int argc, char **argv)
|
|||||||
usage (EXIT_FAILURE);
|
usage (EXIT_FAILURE);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
x.interactive = I_ALWAYS_YES;
|
x.interactive = I_ALWAYS_YES; // 默认使用-f参数
|
||||||
|
|
||||||
n_files = argc - optind;
|
n_files = argc - optind;
|
||||||
file = (head_argvs + optind);
|
file = (head_argvs + optind);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
// 测试, 打印新的argv参数
|
||||||
int i=0;
|
int i=0;
|
||||||
while(i < argc)
|
while(i < argc)
|
||||||
{
|
{
|
||||||
|
Loading…
Reference in New Issue
Block a user