mirror of
https://github.com/jarun/advcpmv.git
synced 2026-02-01 13:17:41 +01:00
fix progressbars not showing when moving files and global progress
This commit is contained in:
@@ -1,6 +1,6 @@
|
|||||||
diff -aur coreutils-8.32/src/copy.c coreutils-8.32-patched-nc/src/copy.c
|
diff -aur coreutils-8.32/src/copy.c coreutils-8.32-patched/src/copy.c
|
||||||
--- coreutils-8.32/src/copy.c 2020-01-01 15:13:12.000000000 +0100
|
--- coreutils-8.32/src/copy.c 2020-01-01 15:13:12.000000000 +0100
|
||||||
+++ coreutils-8.32-patched-nc/src/copy.c 2022-02-14 21:14:14.171156659 +0100
|
+++ coreutils-8.32-patched/src/copy.c 2022-04-03 21:03:04.869415222 +0200
|
||||||
@@ -129,6 +129,133 @@
|
@@ -129,6 +129,133 @@
|
||||||
dev_t dev;
|
dev_t dev;
|
||||||
};
|
};
|
||||||
@@ -135,7 +135,7 @@ diff -aur coreutils-8.32/src/copy.c coreutils-8.32-patched-nc/src/copy.c
|
|||||||
/* Initial size of the cp.dest_info hash table. */
|
/* Initial size of the cp.dest_info hash table. */
|
||||||
#define DEST_INFO_INITIAL_CAPACITY 61
|
#define DEST_INFO_INITIAL_CAPACITY 61
|
||||||
|
|
||||||
@@ -258,18 +385,124 @@
|
@@ -258,18 +385,125 @@
|
||||||
bytes read. */
|
bytes read. */
|
||||||
static bool
|
static bool
|
||||||
sparse_copy (int src_fd, int dest_fd, char *buf, size_t buf_size,
|
sparse_copy (int src_fd, int dest_fd, char *buf, size_t buf_size,
|
||||||
@@ -204,11 +204,13 @@ diff -aur coreutils-8.32/src/copy.c coreutils-8.32-patched-nc/src/copy.c
|
|||||||
+ format_time(f_ttime, sec_remaining, true);
|
+ format_time(f_ttime, sec_remaining, true);
|
||||||
+ format_time(f_ftime, sec_fremaining, true);
|
+ format_time(f_ftime, sec_fremaining, true);
|
||||||
+
|
+
|
||||||
+ sprintf ( s_progress->cProgressField[1],
|
+ int fs_len;
|
||||||
|
+ fs_len = sprintf ( s_progress->cProgressField[1],
|
||||||
+ move_mode
|
+ move_mode
|
||||||
+ ? "%d of %d files moved (about %s remaining)"
|
+ ? "%d of %d files moved (about %s remaining)"
|
||||||
+ : "%d of %d files copied (about %s remaining)",
|
+ : "%d of %d files copied (about %s remaining)",
|
||||||
+ g_iFilesCopied, g_iTotalFiles, f_ttime );
|
+ g_iFilesCopied, g_iTotalFiles, f_ttime );
|
||||||
|
+ s_progress->cProgressField[1][fs_len] = ' ';
|
||||||
+
|
+
|
||||||
+ char s_ftime[40] = "";
|
+ char s_ftime[40] = "";
|
||||||
+
|
+
|
||||||
@@ -222,7 +224,6 @@ diff -aur coreutils-8.32/src/copy.c coreutils-8.32-patched-nc/src/copy.c
|
|||||||
+ ? "moving at %s/s %s"
|
+ ? "moving at %s/s %s"
|
||||||
+ : "copying at %s/s %s", s_copy_speed, s_ftime );
|
+ : "copying at %s/s %s", s_copy_speed, s_ftime );
|
||||||
+
|
+
|
||||||
+ int fs_len;
|
|
||||||
+ if ( g_iTotalFiles > 1 )
|
+ if ( g_iTotalFiles > 1 )
|
||||||
+ {
|
+ {
|
||||||
+ /* global progress bar */
|
+ /* global progress bar */
|
||||||
@@ -262,7 +263,7 @@ diff -aur coreutils-8.32/src/copy.c coreutils-8.32-patched-nc/src/copy.c
|
|||||||
ssize_t n_read = read (src_fd, buf, MIN (max_n_read, buf_size));
|
ssize_t n_read = read (src_fd, buf, MIN (max_n_read, buf_size));
|
||||||
if (n_read < 0)
|
if (n_read < 0)
|
||||||
{
|
{
|
||||||
@@ -354,6 +587,14 @@
|
@@ -354,6 +588,14 @@
|
||||||
certain files in /proc or /sys with linux kernels. */
|
certain files in /proc or /sys with linux kernels. */
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -277,7 +278,7 @@ diff -aur coreutils-8.32/src/copy.c coreutils-8.32-patched-nc/src/copy.c
|
|||||||
/* Ensure a trailing hole is created, so that subsequent
|
/* Ensure a trailing hole is created, so that subsequent
|
||||||
calls of sparse_copy() start at the correct offset. */
|
calls of sparse_copy() start at the correct offset. */
|
||||||
if (make_hole && ! create_hole (dest_fd, dst_name, punch_holes, psize))
|
if (make_hole && ! create_hole (dest_fd, dst_name, punch_holes, psize))
|
||||||
@@ -420,9 +661,11 @@
|
@@ -420,9 +662,11 @@
|
||||||
static bool
|
static bool
|
||||||
extent_copy (int src_fd, int dest_fd, char *buf, size_t buf_size,
|
extent_copy (int src_fd, int dest_fd, char *buf, size_t buf_size,
|
||||||
size_t hole_size, off_t src_total_size,
|
size_t hole_size, off_t src_total_size,
|
||||||
@@ -291,7 +292,7 @@ diff -aur coreutils-8.32/src/copy.c coreutils-8.32-patched-nc/src/copy.c
|
|||||||
{
|
{
|
||||||
struct extent_scan scan;
|
struct extent_scan scan;
|
||||||
off_t last_ext_start = 0;
|
off_t last_ext_start = 0;
|
||||||
@@ -553,10 +796,16 @@
|
@@ -553,10 +797,16 @@
|
||||||
last_ext_len = ext_len;
|
last_ext_len = ext_len;
|
||||||
bool read_hole;
|
bool read_hole;
|
||||||
|
|
||||||
@@ -310,7 +311,7 @@ diff -aur coreutils-8.32/src/copy.c coreutils-8.32-patched-nc/src/copy.c
|
|||||||
goto fail;
|
goto fail;
|
||||||
|
|
||||||
dest_pos = ext_start + n_read;
|
dest_pos = ext_start + n_read;
|
||||||
@@ -1305,6 +1554,75 @@
|
@@ -1305,6 +1555,75 @@
|
||||||
buf_alloc = xmalloc (buf_size + buf_alignment);
|
buf_alloc = xmalloc (buf_size + buf_alignment);
|
||||||
buf = ptr_align (buf_alloc, buf_alignment);
|
buf = ptr_align (buf_alloc, buf_alignment);
|
||||||
|
|
||||||
@@ -386,7 +387,7 @@ diff -aur coreutils-8.32/src/copy.c coreutils-8.32-patched-nc/src/copy.c
|
|||||||
if (sparse_src)
|
if (sparse_src)
|
||||||
{
|
{
|
||||||
bool normal_copy_required;
|
bool normal_copy_required;
|
||||||
@@ -1316,7 +1634,9 @@
|
@@ -1316,7 +1635,9 @@
|
||||||
if (extent_copy (source_desc, dest_desc, buf, buf_size, hole_size,
|
if (extent_copy (source_desc, dest_desc, buf, buf_size, hole_size,
|
||||||
src_open_sb.st_size,
|
src_open_sb.st_size,
|
||||||
make_holes ? x->sparse_mode : SPARSE_NEVER,
|
make_holes ? x->sparse_mode : SPARSE_NEVER,
|
||||||
@@ -397,7 +398,7 @@ diff -aur coreutils-8.32/src/copy.c coreutils-8.32-patched-nc/src/copy.c
|
|||||||
goto preserve_metadata;
|
goto preserve_metadata;
|
||||||
|
|
||||||
if (! normal_copy_required)
|
if (! normal_copy_required)
|
||||||
@@ -1328,11 +1648,14 @@
|
@@ -1328,11 +1649,14 @@
|
||||||
|
|
||||||
off_t n_read;
|
off_t n_read;
|
||||||
bool wrote_hole_at_eof;
|
bool wrote_hole_at_eof;
|
||||||
@@ -415,7 +416,7 @@ diff -aur coreutils-8.32/src/copy.c coreutils-8.32-patched-nc/src/copy.c
|
|||||||
{
|
{
|
||||||
return_val = false;
|
return_val = false;
|
||||||
goto close_src_and_dst_desc;
|
goto close_src_and_dst_desc;
|
||||||
@@ -1343,6 +1666,12 @@
|
@@ -1343,6 +1667,12 @@
|
||||||
return_val = false;
|
return_val = false;
|
||||||
goto close_src_and_dst_desc;
|
goto close_src_and_dst_desc;
|
||||||
}
|
}
|
||||||
@@ -428,7 +429,7 @@ diff -aur coreutils-8.32/src/copy.c coreutils-8.32-patched-nc/src/copy.c
|
|||||||
}
|
}
|
||||||
|
|
||||||
preserve_metadata:
|
preserve_metadata:
|
||||||
@@ -1716,15 +2045,15 @@
|
@@ -1716,15 +2046,15 @@
|
||||||
fprintf (stderr,
|
fprintf (stderr,
|
||||||
(x->move_mode || x->unlink_dest_before_opening
|
(x->move_mode || x->unlink_dest_before_opening
|
||||||
|| x->unlink_dest_after_failed_open)
|
|| x->unlink_dest_after_failed_open)
|
||||||
@@ -447,9 +448,9 @@ diff -aur coreutils-8.32/src/copy.c coreutils-8.32-patched-nc/src/copy.c
|
|||||||
program_name, quoteaf (dst_name));
|
program_name, quoteaf (dst_name));
|
||||||
}
|
}
|
||||||
|
|
||||||
diff -aur coreutils-8.32/src/copy.h coreutils-8.32-patched-nc/src/copy.h
|
diff -aur coreutils-8.32/src/copy.h coreutils-8.32-patched/src/copy.h
|
||||||
--- coreutils-8.32/src/copy.h 2020-01-01 15:13:12.000000000 +0100
|
--- coreutils-8.32/src/copy.h 2020-01-01 15:13:12.000000000 +0100
|
||||||
+++ coreutils-8.32-patched-nc/src/copy.h 2022-02-14 21:14:14.175156795 +0100
|
+++ coreutils-8.32-patched/src/copy.h 2022-04-03 21:03:04.873415280 +0200
|
||||||
@@ -234,6 +234,9 @@
|
@@ -234,6 +234,9 @@
|
||||||
Create destination directories as usual. */
|
Create destination directories as usual. */
|
||||||
bool symbolic_link;
|
bool symbolic_link;
|
||||||
@@ -483,9 +484,9 @@ diff -aur coreutils-8.32/src/copy.h coreutils-8.32-patched-nc/src/copy.h
|
|||||||
+/* END progress mod */
|
+/* END progress mod */
|
||||||
+
|
+
|
||||||
#endif
|
#endif
|
||||||
diff -aur coreutils-8.32/src/cp.c coreutils-8.32-patched-nc/src/cp.c
|
diff -aur coreutils-8.32/src/cp.c coreutils-8.32-patched/src/cp.c
|
||||||
--- coreutils-8.32/src/cp.c 2020-01-01 15:13:12.000000000 +0100
|
--- coreutils-8.32/src/cp.c 2020-01-01 15:13:12.000000000 +0100
|
||||||
+++ coreutils-8.32-patched-nc/src/cp.c 2022-02-14 21:14:14.175156795 +0100
|
+++ coreutils-8.32-patched/src/cp.c 2022-04-03 21:03:04.873415280 +0200
|
||||||
@@ -131,6 +131,7 @@
|
@@ -131,6 +131,7 @@
|
||||||
{"symbolic-link", no_argument, NULL, 's'},
|
{"symbolic-link", no_argument, NULL, 's'},
|
||||||
{"target-directory", required_argument, NULL, 't'},
|
{"target-directory", required_argument, NULL, 't'},
|
||||||
@@ -674,9 +675,9 @@ diff -aur coreutils-8.32/src/cp.c coreutils-8.32-patched-nc/src/cp.c
|
|||||||
case 'H':
|
case 'H':
|
||||||
x.dereference = DEREF_COMMAND_LINE_ARGUMENTS;
|
x.dereference = DEREF_COMMAND_LINE_ARGUMENTS;
|
||||||
break;
|
break;
|
||||||
diff -aur coreutils-8.32/src/mv.c coreutils-8.32-patched-nc/src/mv.c
|
diff -aur coreutils-8.32/src/mv.c coreutils-8.32-patched/src/mv.c
|
||||||
--- coreutils-8.32/src/mv.c 2020-01-01 15:13:12.000000000 +0100
|
--- coreutils-8.32/src/mv.c 2020-01-01 15:13:12.000000000 +0100
|
||||||
+++ coreutils-8.32-patched-nc/src/mv.c 2022-02-14 21:14:14.175156795 +0100
|
+++ coreutils-8.32-patched/src/mv.c 2022-04-03 21:03:04.873415280 +0200
|
||||||
@@ -66,6 +66,7 @@
|
@@ -66,6 +66,7 @@
|
||||||
{"target-directory", required_argument, NULL, 't'},
|
{"target-directory", required_argument, NULL, 't'},
|
||||||
{"update", no_argument, NULL, 'u'},
|
{"update", no_argument, NULL, 'u'},
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
diff -aur coreutils-9.0/src/copy.c coreutils-9.0-patched/src/copy.c
|
diff -aur coreutils-9.0/src/copy.c coreutils-9.0-patched/src/copy.c
|
||||||
--- coreutils-9.0/src/copy.c 2021-09-24 17:01:05.000000000 +0530
|
--- coreutils-9.0/src/copy.c 2021-09-24 13:31:05.000000000 +0200
|
||||||
+++ coreutils-9.0-patched/src/copy.c 2022-03-27 05:54:15.840209369 +0530
|
+++ coreutils-9.0-patched/src/copy.c 2022-04-03 21:03:04.881415398 +0200
|
||||||
@@ -129,6 +129,133 @@
|
@@ -129,6 +129,133 @@
|
||||||
dev_t dev;
|
dev_t dev;
|
||||||
};
|
};
|
||||||
@@ -161,7 +161,128 @@ diff -aur coreutils-9.0/src/copy.c coreutils-9.0-patched/src/copy.c
|
|||||||
/* If not looking for holes, use copy_file_range if functional,
|
/* If not looking for holes, use copy_file_range if functional,
|
||||||
but don't use if reflink disallowed as that may be implicit. */
|
but don't use if reflink disallowed as that may be implicit. */
|
||||||
if ((! hole_size) && allow_reflink && functional_copy_file_range ())
|
if ((! hole_size) && allow_reflink && functional_copy_file_range ())
|
||||||
@@ -362,6 +498,103 @@
|
@@ -317,8 +453,105 @@
|
||||||
|
surely aligned well. */
|
||||||
|
ssize_t ssize_max = TYPE_MAXIMUM (ssize_t);
|
||||||
|
ptrdiff_t copy_max = MIN (ssize_max, SIZE_MAX) >> 30 << 30;
|
||||||
|
+
|
||||||
|
+ /* BEGIN progress mod */
|
||||||
|
+ if (progress) {
|
||||||
|
+ /* update countdown */
|
||||||
|
+ s_progress->iCountDown--;
|
||||||
|
+ char * sProgressBar = s_progress->cProgressField[5];
|
||||||
|
+ if ( s_progress->iCountDown < 0 )
|
||||||
|
+ s_progress->iCountDown = 100;
|
||||||
|
+
|
||||||
|
+ /* just print one line with the percentage, but not always */
|
||||||
|
+ if ( s_progress->iCountDown == 0 )
|
||||||
|
+ {
|
||||||
|
+ /* calculate current speed */
|
||||||
|
+ struct timeval cur_time;
|
||||||
|
+ gettimeofday ( & cur_time, NULL );
|
||||||
|
+ int cur_size = g_iTotalWritten + *total_n_read / 1024;
|
||||||
|
+ int cur_fsize = g_iFTotalWritten + *total_n_read / 1024;
|
||||||
|
+ int usec_elapsed = cur_time.tv_usec - s_progress->last_time.tv_usec;
|
||||||
|
+ double sec_elapsed = ( double ) usec_elapsed / 1000000.f;
|
||||||
|
+ sec_elapsed += ( double ) ( cur_time.tv_sec - s_progress->last_time.tv_sec );
|
||||||
|
+ int copy_speed = ( int ) ( ( double ) ( cur_size - s_progress->last_size )
|
||||||
|
+ / sec_elapsed );
|
||||||
|
+ char s_copy_speed[20];
|
||||||
|
+ file_size_format ( s_copy_speed, copy_speed >= 0 ? copy_speed : 0, 1 );
|
||||||
|
+ /* update vars */
|
||||||
|
+ s_progress->last_time = cur_time;
|
||||||
|
+ s_progress->last_size = cur_size;
|
||||||
|
+
|
||||||
|
+ /* how many time has passed since the start? */
|
||||||
|
+ int isec_elapsed = cur_time.tv_sec - g_oStartTime.tv_sec;
|
||||||
|
+ int isec_felapsed = cur_time.tv_sec - g_oFStartTime.tv_sec;
|
||||||
|
+ int sec_remaining = ( int ) ( ( double ) isec_elapsed / cur_size
|
||||||
|
+ * g_iTotalSize ) - isec_elapsed;
|
||||||
|
+ int sec_fremaining = ( int ) ( ( double ) isec_felapsed / cur_fsize
|
||||||
|
+ * g_iFTotalSize ) - isec_felapsed;
|
||||||
|
+ /* print out */
|
||||||
|
+
|
||||||
|
+ char f_ttime[20];
|
||||||
|
+ char f_ftime[20];
|
||||||
|
+ format_time(f_ttime, sec_remaining, true);
|
||||||
|
+ format_time(f_ftime, sec_fremaining, true);
|
||||||
|
+
|
||||||
|
+ int fs_len;
|
||||||
|
+ fs_len = sprintf ( s_progress->cProgressField[1],
|
||||||
|
+ move_mode
|
||||||
|
+ ? "%d of %d files moved (about %s remaining)"
|
||||||
|
+ : "%d of %d files copied (about %s remaining)",
|
||||||
|
+ g_iFilesCopied, g_iTotalFiles, f_ttime );
|
||||||
|
+ s_progress->cProgressField[1][fs_len] = ' ';
|
||||||
|
+
|
||||||
|
+ char s_ftime[40] = "";
|
||||||
|
+
|
||||||
|
+ if (g_iTotalFiles > 1)
|
||||||
|
+ sprintf ( s_ftime, "(about %s remaining)", f_ftime );
|
||||||
|
+ else
|
||||||
|
+ sprintf ( s_ftime, "(about %s remaining)", f_ttime );
|
||||||
|
+
|
||||||
|
+ if ( g_iTotalFiles > 1 )
|
||||||
|
+ {
|
||||||
|
+ /* global progress bar */
|
||||||
|
+ file_progress_bar ( s_progress->cProgressField[2], s_progress->iBarLength,
|
||||||
|
+ g_iTotalWritten + *total_n_read / 1024, g_iTotalSize );
|
||||||
|
+
|
||||||
|
+ /* print the global status */
|
||||||
|
+ fs_len = file_size_format ( s_progress->cProgressField[1] + s_progress->iBarLength - 21,
|
||||||
|
+ g_iTotalWritten + *total_n_read / 1024, 1 );
|
||||||
|
+ s_progress->cProgressField[1][s_progress->iBarLength - 21 + fs_len] = ' ';
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ /* set current progress bar to be always 100 % */
|
||||||
|
+ file_progress_bar ( sProgressBar, s_progress->iBarLength, s_progress->src_open_sb.st_size, s_progress->src_open_sb.st_size );
|
||||||
|
+ s_progress->cProgressField[5][s_progress->iBarLength-2] = '0';
|
||||||
|
+ s_progress->cProgressField[5][s_progress->iBarLength-1] = '%';
|
||||||
|
+ s_progress->cProgressField[5][s_progress->iBarLength] = '\0';
|
||||||
|
+
|
||||||
|
+ /* print the status as always full filesize*/
|
||||||
|
+ fs_len = file_size_format ( s_progress->cProgressField[4] + s_progress->iBarLength - 21, s_progress->src_open_sb.st_size, 0 );
|
||||||
|
+ s_progress->cProgressField[4][s_progress->iBarLength - 21 + fs_len] = ' ';
|
||||||
|
+
|
||||||
|
+ /* print the field */
|
||||||
|
+ int it;
|
||||||
|
+ for ( it = g_iTotalFiles>1 ? 0 : 3; it < 6; it++ )
|
||||||
|
+ {
|
||||||
|
+ printf ( "\033[K%s\n", s_progress->cProgressField[it] );
|
||||||
|
+ if ( strlen ( s_progress->cProgressField[it] ) < s_progress->iBarLength )
|
||||||
|
+ printf ( "%s", "" );
|
||||||
|
+ }
|
||||||
|
+ if ( g_iTotalFiles > 1 )
|
||||||
|
+ printf ( "\r\033[6A" );
|
||||||
|
+ else
|
||||||
|
+ printf ( "\r\033[3A" );
|
||||||
|
+ fflush ( stdout );
|
||||||
|
+ }
|
||||||
|
+ }
|
||||||
|
+ /* END progress mod */
|
||||||
|
+
|
||||||
|
ssize_t n_copied = copy_file_range (src_fd, NULL, dest_fd, NULL,
|
||||||
|
MIN (max_n_read, copy_max), 0);
|
||||||
|
+
|
||||||
|
if (n_copied == 0)
|
||||||
|
{
|
||||||
|
/* copy_file_range incorrectly returns 0 when reading from
|
||||||
|
@@ -355,6 +588,14 @@
|
||||||
|
}
|
||||||
|
max_n_read -= n_copied;
|
||||||
|
*total_n_read += n_copied;
|
||||||
|
+
|
||||||
|
+ /* BEGIN progress mod */
|
||||||
|
+ if (progress) {
|
||||||
|
+ /* update total size */
|
||||||
|
+ g_iTotalWritten += *total_n_read / 1024;
|
||||||
|
+ g_iFilesCopied++;
|
||||||
|
+ }
|
||||||
|
+ /* END progress mod */
|
||||||
|
}
|
||||||
|
|
||||||
|
bool make_hole = false;
|
||||||
|
@@ -362,6 +603,104 @@
|
||||||
|
|
||||||
while (max_n_read)
|
while (max_n_read)
|
||||||
{
|
{
|
||||||
@@ -207,11 +328,13 @@ diff -aur coreutils-9.0/src/copy.c coreutils-9.0-patched/src/copy.c
|
|||||||
+ format_time(f_ttime, sec_remaining, true);
|
+ format_time(f_ttime, sec_remaining, true);
|
||||||
+ format_time(f_ftime, sec_fremaining, true);
|
+ format_time(f_ftime, sec_fremaining, true);
|
||||||
+
|
+
|
||||||
+ sprintf ( s_progress->cProgressField[1],
|
+ int fs_len;
|
||||||
|
+ fs_len = sprintf ( s_progress->cProgressField[1],
|
||||||
+ move_mode
|
+ move_mode
|
||||||
+ ? "%d of %d files moved (about %s remaining)"
|
+ ? "%d of %d files moved (about %s remaining)"
|
||||||
+ : "%d of %d files copied (about %s remaining)",
|
+ : "%d of %d files copied (about %s remaining)",
|
||||||
+ g_iFilesCopied, g_iTotalFiles, f_ttime );
|
+ g_iFilesCopied, g_iTotalFiles, f_ttime );
|
||||||
|
+ s_progress->cProgressField[1][fs_len] = ' ';
|
||||||
+
|
+
|
||||||
+ char s_ftime[40] = "";
|
+ char s_ftime[40] = "";
|
||||||
+
|
+
|
||||||
@@ -225,7 +348,6 @@ diff -aur coreutils-9.0/src/copy.c coreutils-9.0-patched/src/copy.c
|
|||||||
+ ? "moving at %s/s %s"
|
+ ? "moving at %s/s %s"
|
||||||
+ : "copying at %s/s %s", s_copy_speed, s_ftime );
|
+ : "copying at %s/s %s", s_copy_speed, s_ftime );
|
||||||
+
|
+
|
||||||
+ int fs_len;
|
|
||||||
+ if ( g_iTotalFiles > 1 )
|
+ if ( g_iTotalFiles > 1 )
|
||||||
+ {
|
+ {
|
||||||
+ /* global progress bar */
|
+ /* global progress bar */
|
||||||
@@ -265,7 +387,7 @@ diff -aur coreutils-9.0/src/copy.c coreutils-9.0-patched/src/copy.c
|
|||||||
ssize_t n_read = read (src_fd, buf, MIN (max_n_read, buf_size));
|
ssize_t n_read = read (src_fd, buf, MIN (max_n_read, buf_size));
|
||||||
if (n_read < 0)
|
if (n_read < 0)
|
||||||
{
|
{
|
||||||
@@ -446,6 +679,14 @@
|
@@ -446,6 +785,14 @@
|
||||||
certain files in /proc or /sys with linux kernels. */
|
certain files in /proc or /sys with linux kernels. */
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -280,7 +402,7 @@ diff -aur coreutils-9.0/src/copy.c coreutils-9.0-patched/src/copy.c
|
|||||||
/* Ensure a trailing hole is created, so that subsequent
|
/* Ensure a trailing hole is created, so that subsequent
|
||||||
calls of sparse_copy() start at the correct offset. */
|
calls of sparse_copy() start at the correct offset. */
|
||||||
if (make_hole && ! create_hole (dest_fd, dst_name, punch_holes, psize))
|
if (make_hole && ! create_hole (dest_fd, dst_name, punch_holes, psize))
|
||||||
@@ -516,9 +757,11 @@
|
@@ -516,9 +863,11 @@
|
||||||
static bool
|
static bool
|
||||||
lseek_copy (int src_fd, int dest_fd, char *buf, size_t buf_size,
|
lseek_copy (int src_fd, int dest_fd, char *buf, size_t buf_size,
|
||||||
size_t hole_size, off_t ext_start, off_t src_total_size,
|
size_t hole_size, off_t ext_start, off_t src_total_size,
|
||||||
@@ -294,7 +416,7 @@ diff -aur coreutils-9.0/src/copy.c coreutils-9.0-patched/src/copy.c
|
|||||||
{
|
{
|
||||||
off_t last_ext_start = 0;
|
off_t last_ext_start = 0;
|
||||||
off_t last_ext_len = 0;
|
off_t last_ext_len = 0;
|
||||||
@@ -590,10 +833,16 @@
|
@@ -590,10 +939,16 @@
|
||||||
is conservative and may miss some holes. */
|
is conservative and may miss some holes. */
|
||||||
off_t n_read;
|
off_t n_read;
|
||||||
bool read_hole;
|
bool read_hole;
|
||||||
@@ -313,7 +435,7 @@ diff -aur coreutils-9.0/src/copy.c coreutils-9.0-patched/src/copy.c
|
|||||||
return false;
|
return false;
|
||||||
|
|
||||||
dest_pos = ext_start + n_read;
|
dest_pos = ext_start + n_read;
|
||||||
@@ -1374,8 +1623,80 @@
|
@@ -1374,8 +1729,80 @@
|
||||||
buf_alloc = xmalloc (buf_size + buf_alignment);
|
buf_alloc = xmalloc (buf_size + buf_alignment);
|
||||||
buf = ptr_align (buf_alloc, buf_alignment);
|
buf = ptr_align (buf_alloc, buf_alignment);
|
||||||
|
|
||||||
@@ -394,7 +516,7 @@ diff -aur coreutils-9.0/src/copy.c coreutils-9.0-patched/src/copy.c
|
|||||||
if (! (
|
if (! (
|
||||||
#ifdef SEEK_HOLE
|
#ifdef SEEK_HOLE
|
||||||
scantype == LSEEK_SCANTYPE
|
scantype == LSEEK_SCANTYPE
|
||||||
@@ -1383,15 +1704,17 @@
|
@@ -1383,15 +1810,17 @@
|
||||||
scan_inference.ext_start, src_open_sb.st_size,
|
scan_inference.ext_start, src_open_sb.st_size,
|
||||||
make_holes ? x->sparse_mode : SPARSE_NEVER,
|
make_holes ? x->sparse_mode : SPARSE_NEVER,
|
||||||
x->reflink_mode != REFLINK_NEVER,
|
x->reflink_mode != REFLINK_NEVER,
|
||||||
@@ -415,7 +537,7 @@ diff -aur coreutils-9.0/src/copy.c coreutils-9.0-patched/src/copy.c
|
|||||||
{
|
{
|
||||||
return_val = false;
|
return_val = false;
|
||||||
goto close_src_and_dst_desc;
|
goto close_src_and_dst_desc;
|
||||||
@@ -1402,6 +1725,14 @@
|
@@ -1402,6 +1831,14 @@
|
||||||
return_val = false;
|
return_val = false;
|
||||||
goto close_src_and_dst_desc;
|
goto close_src_and_dst_desc;
|
||||||
}
|
}
|
||||||
@@ -431,8 +553,8 @@ diff -aur coreutils-9.0/src/copy.c coreutils-9.0-patched/src/copy.c
|
|||||||
|
|
||||||
if (x->preserve_timestamps)
|
if (x->preserve_timestamps)
|
||||||
diff -aur coreutils-9.0/src/copy.h coreutils-9.0-patched/src/copy.h
|
diff -aur coreutils-9.0/src/copy.h coreutils-9.0-patched/src/copy.h
|
||||||
--- coreutils-9.0/src/copy.h 2021-09-24 17:01:05.000000000 +0530
|
--- coreutils-9.0/src/copy.h 2021-09-24 13:31:05.000000000 +0200
|
||||||
+++ coreutils-9.0-patched/src/copy.h 2022-03-27 05:54:15.844209471 +0530
|
+++ coreutils-9.0-patched/src/copy.h 2022-04-03 21:03:04.881415398 +0200
|
||||||
@@ -236,6 +236,9 @@
|
@@ -236,6 +236,9 @@
|
||||||
Create destination directories as usual. */
|
Create destination directories as usual. */
|
||||||
bool symbolic_link;
|
bool symbolic_link;
|
||||||
@@ -467,8 +589,8 @@ diff -aur coreutils-9.0/src/copy.h coreutils-9.0-patched/src/copy.h
|
|||||||
+
|
+
|
||||||
#endif
|
#endif
|
||||||
diff -aur coreutils-9.0/src/cp.c coreutils-9.0-patched/src/cp.c
|
diff -aur coreutils-9.0/src/cp.c coreutils-9.0-patched/src/cp.c
|
||||||
--- coreutils-9.0/src/cp.c 2021-09-24 17:01:05.000000000 +0530
|
--- coreutils-9.0/src/cp.c 2021-09-24 13:31:05.000000000 +0200
|
||||||
+++ coreutils-9.0-patched/src/cp.c 2022-03-27 06:28:53.896713403 +0530
|
+++ coreutils-9.0-patched/src/cp.c 2022-04-03 21:03:04.885415457 +0200
|
||||||
@@ -131,6 +131,7 @@
|
@@ -131,6 +131,7 @@
|
||||||
{"symbolic-link", no_argument, NULL, 's'},
|
{"symbolic-link", no_argument, NULL, 's'},
|
||||||
{"target-directory", required_argument, NULL, 't'},
|
{"target-directory", required_argument, NULL, 't'},
|
||||||
@@ -669,8 +791,8 @@ diff -aur coreutils-9.0/src/cp.c coreutils-9.0-patched/src/cp.c
|
|||||||
? xget_version (_("backup type"),
|
? xget_version (_("backup type"),
|
||||||
version_control_string)
|
version_control_string)
|
||||||
diff -aur coreutils-9.0/src/mv.c coreutils-9.0-patched/src/mv.c
|
diff -aur coreutils-9.0/src/mv.c coreutils-9.0-patched/src/mv.c
|
||||||
--- coreutils-9.0/src/mv.c 2021-09-24 17:01:05.000000000 +0530
|
--- coreutils-9.0/src/mv.c 2021-09-24 13:31:05.000000000 +0200
|
||||||
+++ coreutils-9.0-patched/src/mv.c 2022-03-27 06:38:49.800838574 +0530
|
+++ coreutils-9.0-patched/src/mv.c 2022-04-03 21:03:04.885415457 +0200
|
||||||
@@ -66,6 +66,7 @@
|
@@ -66,6 +66,7 @@
|
||||||
{"target-directory", required_argument, NULL, 't'},
|
{"target-directory", required_argument, NULL, 't'},
|
||||||
{"update", no_argument, NULL, 'u'},
|
{"update", no_argument, NULL, 'u'},
|
||||||
|
|||||||
Reference in New Issue
Block a user