# DP: fix long vs. long long confusion when there is a 64-bit time_t # DP: on a 32-bit long system, such as all newer 32-bit architectures --- a/src/pcm/pcm.c +++ b/src/pcm/pcm.c @@ -2257,11 +2257,11 @@ int snd_pcm_status_dump(snd_pcm_status_t { assert(status); snd_output_printf(out, " state : %s\n", snd_pcm_state_name((snd_pcm_state_t) status->state)); - snd_output_printf(out, " trigger_time: %ld.%06ld\n", - status->trigger_tstamp.tv_sec, - status->trigger_tstamp.tv_nsec / 1000); - snd_output_printf(out, " tstamp : %ld.%06ld\n", - status->tstamp.tv_sec, status->tstamp.tv_nsec / 1000); + snd_output_printf(out, " trigger_time: %lld.%06ld\n", + (long long)status->trigger_tstamp.tv_sec, + (long)status->trigger_tstamp.tv_nsec / 1000L); + snd_output_printf(out, " tstamp : %lld.%06ld\n", + (long long)status->tstamp.tv_sec, (long)status->tstamp.tv_nsec / 1000L); snd_output_printf(out, " delay : %ld\n", (long)status->delay); snd_output_printf(out, " avail : %ld\n", (long)status->avail); snd_output_printf(out, " avail_max : %ld\n", (long)status->avail_max); --- a/test/latency.c +++ b/test/latency.c @@ -325,12 +325,12 @@ void setscheduler(void) printf("!!!Scheduler set to Round Robin with priority %i FAILED!!!\n", sched_param.sched_priority); } -long timediff(snd_timestamp_t t1, snd_timestamp_t t2) +long long timediff(snd_timestamp_t t1, snd_timestamp_t t2) { - signed long l; + signed long long l; t1.tv_sec -= t2.tv_sec; - l = (signed long) t1.tv_usec - (signed long) t2.tv_usec; + l = (signed long long) t1.tv_usec - (signed long long) t2.tv_usec; if (l < 0) { t1.tv_sec--; l = 1000000 + l; @@ -682,10 +682,10 @@ int main(int argc, char *argv[]) snd_pcm_nonblock(phandle, !block ? 1 : 0); if (ok) { #if 1 - printf("Playback time = %li.%i, Record time = %li.%i, diff = %li\n", - p_tstamp.tv_sec, + printf("Playback time = %lli.%i, Record time = %lli.%i, diff = %lli\n", + (long long)p_tstamp.tv_sec, (int)p_tstamp.tv_usec, - c_tstamp.tv_sec, + (long long)c_tstamp.tv_sec, (int)c_tstamp.tv_usec, timediff(p_tstamp, c_tstamp)); #endif --- a/test/queue_timer.c +++ b/test/queue_timer.c @@ -99,11 +99,11 @@ main(int argc ATTRIBUTE_UNUSED, char **a normalize(&diffdiff); prevdiff = diff; - fprintf(stderr, " real time: %12ld sec %8ld usec\nqueue time: %12ld sec %8ld usec\n diff: %12ld sec %8ld usec\n diffdiff: %12ld sec %8ld usec\n", - tv.tv_sec, tv.tv_usec, - (long)rtime->tv_sec, (long)rtime->tv_nsec / 1000, - diff.tv_sec, diff.tv_usec, - (long)diffdiff.tv_sec, (long)diffdiff.tv_usec); + fprintf(stderr, " real time: %12lld sec %8ld usec\nqueue time: %12lld sec %8ld usec\n diff: %12lld sec %8ld usec\n diffdiff: %12lld sec %8ld usec\n", + (long long)tv.tv_sec, (long)tv.tv_usec, + (long long)rtime->tv_sec, (long)rtime->tv_nsec / 1000, + (long long)diff.tv_sec, (long)diff.tv_usec, + (long long)diffdiff.tv_sec, (long)diffdiff.tv_usec); if (diffdiff.tv_usec > 5000 || diffdiff.tv_usec < -5000) {