All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Dmitry V. Levin" <ldv@altlinux.org>
To: Konstantin Bukin <kbukin@gmail.com>
Cc: mtk.manpages@gmail.com, linux-man@vger.kernel.org
Subject: Re: [PATCH] stat.2: fixed inode printing in example program
Date: Sun, 13 Sep 2020 18:16:42 +0300	[thread overview]
Message-ID: <20200913151642.GA14054@altlinux.org> (raw)
In-Reply-To: <20200913150449.11188-1-kbukin@gmail.com>

On Sun, Sep 13, 2020 at 08:04:49AM -0700, Konstantin Bukin wrote:
> inode numbers are expected to be positive. Casting them to a signed type
> may result in printing negative values. E.g. running example program on
> the following file:
> 
> $ ls -li test.txt
> 9280843260537405888 -r--r--r-- 1 kbukin hardware 300 Jul 21 06:36 test.txt
> 
> resutls in the following output:
> 
> $ ./example test.txt
> ID of containing device:  [0,480]
> File type:                regular file
> I-node number:            -9165900813172145728
> Mode:                     100444 (octal)
> Link count:               1
> Ownership:                UID=2743   GID=30
> Preferred I/O block size: 32768 bytes
> File size:                300 bytes
> Blocks allocated:         8
> Last status change:       Tue Jul 21 06:36:50 2020
> Last file access:         Sat Sep 12 14:13:38 2020
> Last file modification:   Tue Jul 21 06:36:50 2020
> 
> Such erroneous reporting happens for inode values greater than maximum
> value which can be stored in signed long. Casting does not seem to be
> necessary here. Printing inode as unsigned long fixes the issue.
> ---
>  man2/stat.2 | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/man2/stat.2 b/man2/stat.2
> index 7e5417480..76997bcbe 100644
> --- a/man2/stat.2
> +++ b/man2/stat.2
> @@ -681,7 +681,7 @@ main(int argc, char *argv[])
>      default:       printf("unknown?\en");                break;
>      }
>  
> -    printf("I\-node number:            %ld\en", (long) sb.st_ino);
> +    printf("I\-node number:            %lu\en", sb.st_ino);

By the way, the type of st_ino is ino_t which might be larger than long,
so both the old and the new variants are not correct.


-- 
ldv

  reply	other threads:[~2020-09-13 15:16 UTC|newest]

Thread overview: 17+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-09-13 15:04 [PATCH] stat.2: fixed inode printing in example program Konstantin Bukin
2020-09-13 15:16 ` Dmitry V. Levin [this message]
2020-09-13 17:24   ` Konstantin Bukin
2020-09-13 17:38     ` Dmitry V. Levin
2020-09-13 18:04       ` Alejandro Colomar
2020-09-13 18:16         ` Konstantin Bukin
2020-09-13 18:30           ` Alejandro Colomar
2020-09-13 18:42             ` Konstantin Bukin
2020-09-13 18:46               ` Alejandro Colomar
2020-09-13 19:12                 ` Konstantin Bukin
2020-09-13 19:39                   ` Konstantin Bukin
2020-09-13 19:40                     ` Konstantin Bukin
2020-09-14  9:30                       ` Michael Kerrisk (man-pages)
2020-09-13 18:04       ` Konstantin Bukin
2020-09-13 18:29 Konstantin Bukin
2020-09-13 18:43 ` Alejandro Colomar
2020-09-13 19:32   ` Konstantin Bukin

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20200913151642.GA14054@altlinux.org \
    --to=ldv@altlinux.org \
    --cc=kbukin@gmail.com \
    --cc=linux-man@vger.kernel.org \
    --cc=mtk.manpages@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.