[PATCH] less: further tweaks to regular file detection
Denys Vlasenko
vda.linux at googlemail.com
Mon Aug 3 14:42:04 UTC 2015
Applied, thanks!
On Fri, Jul 31, 2015 at 6:33 PM, Ron Yorston <rmy at pobox.com> wrote:
> Test explicitly for REOPEN flags: update_num_lines is called
> unconditionally so (num_lines != NOT_REGULAR_FILE) is also true when
> num_lines contains a valid number of lines.
>
> The call to fstat doesn't need to be in #if ENABLE_FEATURE_LESS_FLAGS:
> the whole function is already in such a test.
>
> Signed-off-by: Ron Yorston <rmy at pobox.com>
> ---
> miscutils/less.c | 16 +++++-----------
> 1 file changed, 5 insertions(+), 11 deletions(-)
>
> diff --git a/miscutils/less.c b/miscutils/less.c
> index be8d20e..7a441bf 100644
> --- a/miscutils/less.c
> +++ b/miscutils/less.c
> @@ -615,11 +615,12 @@ static int safe_lineno(int fline)
> static void update_num_lines(void)
> {
> int count, fd;
> + struct stat stbuf;
> ssize_t len, i;
> char buf[4096];
>
> /* only do this for regular files */
> - if (num_lines != NOT_REGULAR_FILE) {
> + if (num_lines == REOPEN_AND_COUNT || num_lines == REOPEN_STDIN) {
> count = 0;
> fd = open("/proc/self/fd/0", O_RDONLY);
> if (fd < 0 && num_lines == REOPEN_AND_COUNT) {
> @@ -631,17 +632,10 @@ static void update_num_lines(void)
> num_lines = NOT_REGULAR_FILE;
> return;
> }
> -#if ENABLE_FEATURE_LESS_FLAGS
> - {
> - struct stat stbuf;
> - if (fstat(fd, &stbuf) != 0
> - || !S_ISREG(stbuf.st_mode)
> - ) {
> - num_lines = NOT_REGULAR_FILE;
> - goto do_close;
> - }
> + if (fstat(fd, &stbuf) != 0 || !S_ISREG(stbuf.st_mode)) {
> + num_lines = NOT_REGULAR_FILE;
> + goto do_close;
> }
> -#endif
> while ((len = safe_read(fd, buf, sizeof(buf))) > 0) {
> for (i = 0; i < len; ++i) {
> if (buf[i] == '\n' && ++count == MAXLINES)
> --
> 2.4.3
>
> _______________________________________________
> busybox mailing list
> busybox at busybox.net
> http://lists.busybox.net/mailman/listinfo/busybox
More information about the busybox
mailing list