Blame e2tools-printf-lld-64bit.patch
|
|
46d6aa0 |
Caution: Checking __WORDSIZE == 64 is not enough.
|
|
|
46d6aa0 |
|
|
|
46d6aa0 |
On x86_64, << printf("%7" PRIu64, (__u64)1); >> lets gcc throw a warning.
|
|
|
46d6aa0 |
__u64 seems to be a long int; uint64_t a long long int; PRIu64 "llu".
|
|
|
46d6aa0 |
So __u64 is not compatible with PRIu64, even though it is a 64bit value.
|
|
|
46d6aa0 |
|
|
|
46d6aa0 |
diff -ru e2tools-0.0.16-orig/ls.c e2tools-0.0.16-lld/ls.c
|
|
|
46d6aa0 |
--- e2tools-0.0.16-orig/ls.c 2007-12-08 23:57:40.000000000 +0100
|
|
|
46d6aa0 |
+++ e2tools-0.0.16-lld/ls.c 2007-12-09 03:10:24.000000000 +0100
|
|
|
46d6aa0 |
@@ -44,6 +44,8 @@
|
|
|
46d6aa0 |
#include "e2tools.h"
|
|
|
46d6aa0 |
#include "elist.h"
|
|
|
46d6aa0 |
#include <regex.h>
|
|
|
46d6aa0 |
+#include <stdint.h>
|
|
|
46d6aa0 |
+#include <inttypes.h>
|
|
|
46d6aa0 |
|
|
|
46d6aa0 |
/*
|
|
|
46d6aa0 |
* list directory
|
|
|
46d6aa0 |
@@ -657,8 +659,8 @@
|
|
|
cd4f2a6 |
if (LINUX_S_ISDIR(info->inode.i_mode))
|
|
|
cd4f2a6 |
printf("%7d", info->inode.i_size);
|
|
|
cd4f2a6 |
else
|
|
|
46d6aa0 |
- printf("%7lld", info->inode.i_size |
|
|
|
46d6aa0 |
- ((__u64)info->inode.i_size_high << 32));
|
|
|
46d6aa0 |
+ printf("%7" PRIu64, (uint64_t)(info->inode.i_size |
|
|
|
46d6aa0 |
+ ((__u64)info->inode.i_size_high << 32)));
|
|
|
cd4f2a6 |
printf(" %s %s\n", datestr, info->name);
|
|
|
cd4f2a6 |
|
|
|
cd4f2a6 |
} /* end of long_disp */
|