diff options
author | Lennart Poettering <lennart@poettering.net> | 2018-03-23 18:24:07 +0100 |
---|---|---|
committer | Lennart Poettering <lennart@poettering.net> | 2018-04-13 11:32:46 +0200 |
commit | 75036dce9418024a05d20db3c5fb069aeccdec5d (patch) | |
tree | d78ad421f39c5706115148f15c4cff7f4c6792ae | |
parent | e0c5c7d8fa07f44c2b694c809703cb8a59f0dfed (diff) | |
download | systemd-75036dce9418024a05d20db3c5fb069aeccdec5d.tar.gz systemd-75036dce9418024a05d20db3c5fb069aeccdec5d.tar.bz2 systemd-75036dce9418024a05d20db3c5fb069aeccdec5d.zip |
copy: drop _unlikely_() that isn't obviously the case
If a tool only invokes copy_bytes() a single time the _unlikely_() will always be
wrong, and is hence not useful. Let's drop it and let the compiler
figure our what to do, instead of misleading it.
Also, some coding style imprvoements.
-rw-r--r-- | src/basic/copy.c | 20 |
1 files changed, 11 insertions, 9 deletions
diff --git a/src/basic/copy.c b/src/basic/copy.c index 18a245a92c..96d059d0e5 100644 --- a/src/basic/copy.c +++ b/src/basic/copy.c @@ -38,23 +38,25 @@ #define COPY_BUFFER_SIZE (16*1024u) -static ssize_t try_copy_file_range(int fd_in, loff_t *off_in, - int fd_out, loff_t *off_out, - size_t len, - unsigned int flags) { +static ssize_t try_copy_file_range( + int fd_in, loff_t *off_in, + int fd_out, loff_t *off_out, + size_t len, + unsigned int flags) { + static int have = -1; ssize_t r; - if (have == false) + if (have == 0) return -ENOSYS; r = copy_file_range(fd_in, off_in, fd_out, off_out, len, flags); - if (_unlikely_(have < 0)) + if (have < 0) have = r >= 0 || errno != ENOSYS; - if (r >= 0) - return r; - else + if (r < 0) return -errno; + + return r; } enum { |