aboutsummaryrefslogtreecommitdiff
path: root/coreutils
diff options
context:
space:
mode:
authorRon Yorston <rmy@pobox.com>2023-01-05 08:56:27 +0000
committerRon Yorston <rmy@pobox.com>2023-01-05 08:56:27 +0000
commite5e4a2fec5435192d1672e6db2f335cb5e89f877 (patch)
tree08cb827a40817ea4824bc9336d57eda669c4d4b2 /coreutils
parent4343f3926355f55fc023203c992527fc34bf609e (diff)
parentb1884deb514c35289d37e7bfbf23f770b0bd09b3 (diff)
downloadbusybox-w32-e5e4a2fec5435192d1672e6db2f335cb5e89f877.tar.gz
busybox-w32-e5e4a2fec5435192d1672e6db2f335cb5e89f877.tar.bz2
busybox-w32-e5e4a2fec5435192d1672e6db2f335cb5e89f877.zip
Merge branch 'busybox' into merge
Diffstat (limited to 'coreutils')
-rw-r--r--coreutils/dd.c20
-rw-r--r--coreutils/mv.c4
2 files changed, 20 insertions, 4 deletions
diff --git a/coreutils/dd.c b/coreutils/dd.c
index a3c9ababf..a704ca99b 100644
--- a/coreutils/dd.c
+++ b/coreutils/dd.c
@@ -203,6 +203,7 @@ static void dd_output_status(int UNUSED_PARAM cur_signal)
203} 203}
204 204
205#if ENABLE_FEATURE_DD_IBS_OBS 205#if ENABLE_FEATURE_DD_IBS_OBS
206# ifdef O_DIRECT
206static int clear_O_DIRECT(int fd) 207static int clear_O_DIRECT(int fd)
207{ 208{
208 if (errno == EINVAL) { 209 if (errno == EINVAL) {
@@ -214,6 +215,7 @@ static int clear_O_DIRECT(int fd)
214 } 215 }
215 return 0; 216 return 0;
216} 217}
218# endif
217#endif 219#endif
218 220
219static ssize_t dd_read(void *ibuf, size_t ibs) 221static ssize_t dd_read(void *ibuf, size_t ibs)
@@ -228,8 +230,10 @@ static ssize_t dd_read(void *ibuf, size_t ibs)
228#endif 230#endif
229 n = safe_read(ifd, ibuf, ibs); 231 n = safe_read(ifd, ibuf, ibs);
230#if ENABLE_FEATURE_DD_IBS_OBS 232#if ENABLE_FEATURE_DD_IBS_OBS
233# ifdef O_DIRECT
231 if (n < 0 && (G.flags & FLAG_IDIRECT) && clear_O_DIRECT(ifd)) 234 if (n < 0 && (G.flags & FLAG_IDIRECT) && clear_O_DIRECT(ifd))
232 goto read_again; 235 goto read_again;
236# endif
233#endif 237#endif
234 return n; 238 return n;
235} 239}
@@ -242,8 +246,10 @@ static bool write_and_stats(const void *buf, size_t len, size_t obs,
242 IF_FEATURE_DD_IBS_OBS(write_again:) 246 IF_FEATURE_DD_IBS_OBS(write_again:)
243 n = full_write(ofd, buf, len); 247 n = full_write(ofd, buf, len);
244#if ENABLE_FEATURE_DD_IBS_OBS 248#if ENABLE_FEATURE_DD_IBS_OBS
249# ifdef O_DIRECT
245 if (n < 0 && (G.flags & FLAG_ODIRECT) && clear_O_DIRECT(ofd)) 250 if (n < 0 && (G.flags & FLAG_ODIRECT) && clear_O_DIRECT(ofd))
246 goto write_again; 251 goto write_again;
252# endif
247#endif 253#endif
248 254
249#if ENABLE_FEATURE_DD_THIRD_STATUS_LINE 255#if ENABLE_FEATURE_DD_THIRD_STATUS_LINE
@@ -506,8 +512,13 @@ int dd_main(int argc UNUSED_PARAM, char **argv)
506 if (infile) { 512 if (infile) {
507 int iflag = O_RDONLY; 513 int iflag = O_RDONLY;
508#if ENABLE_FEATURE_DD_IBS_OBS 514#if ENABLE_FEATURE_DD_IBS_OBS
509 if (G.flags & FLAG_IDIRECT) 515 if (G.flags & FLAG_IDIRECT) {
516# ifdef O_DIRECT
510 iflag |= O_DIRECT; 517 iflag |= O_DIRECT;
518# else
519 bb_error_msg_and_die("O_DIRECT not supported on this platform");
520# endif
521 }
511#endif 522#endif
512 xmove_fd(MINGW_SPECIAL(xopen)(infile, iflag), ifd); 523 xmove_fd(MINGW_SPECIAL(xopen)(infile, iflag), ifd);
513#if ENABLE_PLATFORM_MINGW32 524#if ENABLE_PLATFORM_MINGW32
@@ -524,8 +535,13 @@ int dd_main(int argc UNUSED_PARAM, char **argv)
524 if (G.flags & FLAG_APPEND) 535 if (G.flags & FLAG_APPEND)
525 oflag |= O_APPEND; 536 oflag |= O_APPEND;
526#if ENABLE_FEATURE_DD_IBS_OBS 537#if ENABLE_FEATURE_DD_IBS_OBS
527 if (G.flags & FLAG_ODIRECT) 538 if (G.flags & FLAG_ODIRECT) {
539# ifdef O_DIRECT
528 oflag |= O_DIRECT; 540 oflag |= O_DIRECT;
541# else
542 bb_error_msg_and_die("O_DIRECT not supported on this platform");
543# endif
544 }
529#endif 545#endif
530 xmove_fd(xopen(outfile, oflag), ofd); 546 xmove_fd(xopen(outfile, oflag), ofd);
531 547
diff --git a/coreutils/mv.c b/coreutils/mv.c
index fd2422683..cf6169a1e 100644
--- a/coreutils/mv.c
+++ b/coreutils/mv.c
@@ -71,9 +71,9 @@ int mv_main(int argc, char **argv)
71 "no-target-directory\0" No_argument "T" 71 "no-target-directory\0" No_argument "T"
72 "target-directory\0" Required_argument "t" 72 "target-directory\0" Required_argument "t"
73 IF_FEATURE_VERBOSE( 73 IF_FEATURE_VERBOSE(
74 "verbose\0" No_argument "v", 74 "verbose\0" No_argument "v"
75 &last
76 ) 75 )
76 , &last
77 ); 77 );
78 argc -= optind; 78 argc -= optind;
79 argv += optind; 79 argv += optind;