Package: bs1770gain
Version: 0.4.5-1
Severity: wishlist
Tags: patch
I noticed a build failure on the non-official x32 architecture, build
log available from
<URL:
http://buildd.debian-ports.org/status/fetch.php?pkg=bs1770gain&arch=x32&ver=0.4.5-1&stamp=1435292575
>.
The build fail like this:
bs1770gain.c: In function 'main':
bs1770gain.c:647:5: error: format '%ld' expects argument of type 'long int',
but argument 3 has type 'clock_t' [-Werror=format=]
fprintf(stderr, "Duration: %ld ms.\n",(t2-t1)/CLOCKS_PER_MILLIS);
^
cc1: all warnings being treated as errors
The reason is that clock_t is not of type 'long int' on this platform.
Based on the information available from
<URL:
http://stackoverflow.com/questions/1083142/what-s-the-correct-way-to-use-printf-to-print-a-clock-t
>,
refering to
<URL: http://pubs.opengroup.org/onlinepubs/009695399/basedefs/sys/types.h.html >
where it is stated that "clock_t shall be integer or real-floating
types", I guess the best way to make this code portable is to cast it to
a known type before printing it. I suggest using uintmax_t and the %ju
format specifier like this:
diff --git a/bs1770gain/bs1770gain.c b/bs1770gain/bs1770gain.c
index 1bfda59..a624212 100755
--- a/bs1770gain/bs1770gain.c
+++ b/bs1770gain/bs1770gain.c
@@ -644,7 +644,7 @@ int main(int argc, char **argv)
root.vmt->cleanup(&root);
if (options.time)
- fprintf(stderr, "Duration: %ld ms.\n",(t2-t1)/CLOCKS_PER_MILLIS);
+ fprintf(stderr, "Duration: %ju
ms.\n",(uintmax_t)((t2-t1)/CLOCKS_PER_MILLIS));
// cleanup:
sox_quit();
// still reachable: 9,689 bytes in 51 blocks
--
Happy hacking
Petter Reinholdtsen
--
To UNSUBSCRIBE, email to [email protected]
with a subject of "unsubscribe". Trouble? Contact [email protected]