All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] stat.2: fixed inode printing in example program
@ 2020-09-13 15:04 Konstantin Bukin
  2020-09-13 15:16 ` Dmitry V. Levin
  0 siblings, 1 reply; 17+ messages in thread
From: Konstantin Bukin @ 2020-09-13 15:04 UTC (permalink / raw)
  To: mtk.manpages; +Cc: Konstantin Bukin, linux-man

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);
 
     printf("Mode:                     %lo (octal)\en",
             (unsigned long) sb.st_mode);
-- 
2.17.0


^ permalink raw reply related	[flat|nested] 17+ messages in thread
* [PATCH] stat.2: fixed inode printing in example program
@ 2020-09-13 18:29 Konstantin Bukin
  2020-09-13 18:43 ` Alejandro Colomar
  0 siblings, 1 reply; 17+ messages in thread
From: Konstantin Bukin @ 2020-09-13 18:29 UTC (permalink / raw)
  To: mtk.manpages; +Cc: Konstantin Bukin, linux-man

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 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..89990e581 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:            %llu\en", sb.st_ino);
 
     printf("Mode:                     %lo (octal)\en",
             (unsigned long) sb.st_mode);
-- 
2.17.0


^ permalink raw reply related	[flat|nested] 17+ messages in thread

end of thread, other threads:[~2020-09-14  9:30 UTC | newest]

Thread overview: 17+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-09-13 15:04 [PATCH] stat.2: fixed inode printing in example program Konstantin Bukin
2020-09-13 15:16 ` Dmitry V. Levin
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

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.