From: Paul Eggert Date: Fri, 10 Feb 2023 03:10:47 +0000 (-0800) Subject: cp: simplify infer_scantype X-Git-Tag: v9.2~62 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=d374d32ccf12f8cf33c8f823d573498b7c8b27a4;p=thirdparty%2Fcoreutils.git cp: simplify infer_scantype * src/copy.c (infer_scantype): Do not set *SCAN_INFERENCE when returning a value other than LSEEK_SCANTYPE. This is just minor refactoring; it simplifies the code a bit. Callers are uneffected. doc: document --preserve=mode better --- diff --git a/src/copy.c b/src/copy.c index e16fedb28d..dfbb557de2 100644 --- a/src/copy.c +++ b/src/copy.c @@ -1052,7 +1052,7 @@ union scan_inference }; /* Return how to scan a file with descriptor FD and stat buffer SB. - Store any information gathered into *SCAN_INFERENCE. */ + Set *SCAN_INFERENCE if returning LSEEK_SCANTYPE. */ static enum scantype infer_scantype (int fd, struct stat const *sb, union scan_inference *scan_inference) @@ -1060,19 +1060,17 @@ infer_scantype (int fd, struct stat const *sb, if (! (HAVE_STRUCT_STAT_ST_BLOCKS && S_ISREG (sb->st_mode) && ST_NBLOCKS (*sb) < sb->st_size / ST_NBLOCKSIZE)) - { - scan_inference->ext_start = -1; - return PLAIN_SCANTYPE; - } + return PLAIN_SCANTYPE; #ifdef SEEK_HOLE - scan_inference->ext_start = lseek (fd, 0, SEEK_DATA); - if (0 <= scan_inference->ext_start || errno == ENXIO) - return LSEEK_SCANTYPE; + off_t ext_start = lseek (fd, 0, SEEK_DATA); + if (0 <= ext_start || errno == ENXIO) + { + scan_inference->ext_start = ext_start; + return LSEEK_SCANTYPE; + } else if (errno != EINVAL && !is_ENOTSUP (errno)) return ERROR_SCANTYPE; -#else - scan_inference->ext_start = -1; #endif return ZERO_SCANTYPE;