head 1.1; access; symbols pkgsrc-2026Q1:1.1.0.112 pkgsrc-2026Q1-base:1.1 pkgsrc-2025Q4:1.1.0.110 pkgsrc-2025Q4-base:1.1 pkgsrc-2025Q3:1.1.0.108 pkgsrc-2025Q3-base:1.1 pkgsrc-2025Q2:1.1.0.106 pkgsrc-2025Q2-base:1.1 pkgsrc-2025Q1:1.1.0.104 pkgsrc-2025Q1-base:1.1 pkgsrc-2024Q4:1.1.0.102 pkgsrc-2024Q4-base:1.1 pkgsrc-2024Q3:1.1.0.100 pkgsrc-2024Q3-base:1.1 pkgsrc-2024Q2:1.1.0.98 pkgsrc-2024Q2-base:1.1 pkgsrc-2024Q1:1.1.0.96 pkgsrc-2024Q1-base:1.1 pkgsrc-2023Q4:1.1.0.94 pkgsrc-2023Q4-base:1.1 pkgsrc-2023Q3:1.1.0.92 pkgsrc-2023Q3-base:1.1 pkgsrc-2023Q2:1.1.0.90 pkgsrc-2023Q2-base:1.1 pkgsrc-2023Q1:1.1.0.88 pkgsrc-2023Q1-base:1.1 pkgsrc-2022Q4:1.1.0.86 pkgsrc-2022Q4-base:1.1 pkgsrc-2022Q3:1.1.0.84 pkgsrc-2022Q3-base:1.1 pkgsrc-2022Q2:1.1.0.82 pkgsrc-2022Q2-base:1.1 pkgsrc-2022Q1:1.1.0.80 pkgsrc-2022Q1-base:1.1 pkgsrc-2021Q4:1.1.0.78 pkgsrc-2021Q4-base:1.1 pkgsrc-2021Q3:1.1.0.76 pkgsrc-2021Q3-base:1.1 pkgsrc-2021Q2:1.1.0.74 pkgsrc-2021Q2-base:1.1 pkgsrc-2021Q1:1.1.0.72 pkgsrc-2021Q1-base:1.1 pkgsrc-2020Q4:1.1.0.70 pkgsrc-2020Q4-base:1.1 pkgsrc-2020Q3:1.1.0.68 pkgsrc-2020Q3-base:1.1 pkgsrc-2020Q2:1.1.0.64 pkgsrc-2020Q2-base:1.1 pkgsrc-2020Q1:1.1.0.44 pkgsrc-2020Q1-base:1.1 pkgsrc-2019Q4:1.1.0.66 pkgsrc-2019Q4-base:1.1 pkgsrc-2019Q3:1.1.0.62 pkgsrc-2019Q3-base:1.1 pkgsrc-2019Q2:1.1.0.60 pkgsrc-2019Q2-base:1.1 pkgsrc-2019Q1:1.1.0.58 pkgsrc-2019Q1-base:1.1 pkgsrc-2018Q4:1.1.0.56 pkgsrc-2018Q4-base:1.1 pkgsrc-2018Q3:1.1.0.54 pkgsrc-2018Q3-base:1.1 pkgsrc-2018Q2:1.1.0.52 pkgsrc-2018Q2-base:1.1 pkgsrc-2018Q1:1.1.0.50 pkgsrc-2018Q1-base:1.1 pkgsrc-2017Q4:1.1.0.48 pkgsrc-2017Q4-base:1.1 pkgsrc-2017Q3:1.1.0.46 pkgsrc-2017Q3-base:1.1 pkgsrc-2017Q2:1.1.0.42 pkgsrc-2017Q2-base:1.1 pkgsrc-2017Q1:1.1.0.40 pkgsrc-2017Q1-base:1.1 pkgsrc-2016Q4:1.1.0.38 pkgsrc-2016Q4-base:1.1 pkgsrc-2016Q3:1.1.0.36 pkgsrc-2016Q3-base:1.1 pkgsrc-2016Q2:1.1.0.34 pkgsrc-2016Q2-base:1.1 pkgsrc-2016Q1:1.1.0.32 pkgsrc-2016Q1-base:1.1 pkgsrc-2015Q4:1.1.0.30 pkgsrc-2015Q4-base:1.1 pkgsrc-2015Q3:1.1.0.28 pkgsrc-2015Q3-base:1.1 pkgsrc-2015Q2:1.1.0.26 pkgsrc-2015Q2-base:1.1 pkgsrc-2015Q1:1.1.0.24 pkgsrc-2015Q1-base:1.1 pkgsrc-2014Q4:1.1.0.22 pkgsrc-2014Q4-base:1.1 pkgsrc-2014Q3:1.1.0.20 pkgsrc-2014Q3-base:1.1 pkgsrc-2014Q2:1.1.0.18 pkgsrc-2014Q2-base:1.1 pkgsrc-2014Q1:1.1.0.16 pkgsrc-2014Q1-base:1.1 pkgsrc-2013Q4:1.1.0.14 pkgsrc-2013Q4-base:1.1 pkgsrc-2013Q3:1.1.0.12 pkgsrc-2013Q3-base:1.1 pkgsrc-2013Q2:1.1.0.10 pkgsrc-2013Q2-base:1.1 pkgsrc-2013Q1:1.1.0.8 pkgsrc-2013Q1-base:1.1 pkgsrc-2012Q4:1.1.0.6 pkgsrc-2012Q4-base:1.1 pkgsrc-2012Q3:1.1.0.4 pkgsrc-2012Q3-base:1.1 pkgsrc-2012Q2:1.1.0.2 pkgsrc-2012Q2-base:1.1; locks; strict; comment @# @; 1.1 date 2012.06.18.04.45.47; author dholland; state Exp; branches; next ; desc @@ 1.1 log @Fix time handling; avoids need to use -lcompat and should fix the Linux build. While here, tidy a couple bits of pkglint. PKGREVISION -> 3. Set LICENSE to generic-nonlicense as that appears to describe the situation. @ text @$NetBSD$ - use gettimeofday() rather than ftime(), which is very obsolete - don't truncate time_t (or worse, time_t * 1000) to int Note that because all times used elsewhere are relative, we can get away with subtracting off the start time like this. We could also probably get away with truncating to int, except that (a) it's untidy, (b) likely to attract attention from program checkers, and (c) can result in formally undefined behavior if we happen to be running across one of the moments where the milliseconds value passes through signed overflow. --- main.c~ 2003-02-05 06:02:40.000000000 +0000 +++ main.c @@@@ -15,18 +15,25 @@@@ #include "protos.h" -/* get_ms() returns the milliseconds elapsed since midnight, - January 1, 1970. */ +/* get_ms() returns the milliseconds elapsed since an arbitrary epoch + determined at program startup. */ -#include -BOOL ftime_ok = FALSE; /* does ftime return milliseconds? */ +#include +BOOL gettimeofday_ok = FALSE; /* are we getting better than just seconds? */ int get_ms() { - struct timeb timebuffer; - ftime(&timebuffer); - if (timebuffer.millitm != 0) - ftime_ok = TRUE; - return (timebuffer.time * 1000) + timebuffer.millitm; + static BOOL initialized = 0; + static time_t epoch; + struct timeval timebuffer; + gettimeofday(&timebuffer, NULL); + if (!initialized) { + epoch = timebuffer.tv_sec; + initialized = 1; + } + timebuffer.tv_sec -= epoch; + if (timebuffer.tv_usec != 0) + gettimeofday_ok = TRUE; + return (timebuffer.tv_sec * 1000) + timebuffer.tv_usec / 1000; } @@@@ -496,9 +503,9 @@@@ void bench() printf("\n"); printf("Nodes: %d\n", nodes); printf("Best time: %d ms\n", t[0]); - if (!ftime_ok) { + if (!gettimeofday_ok) { printf("\n"); - printf("Your compiler's ftime() function is apparently only accurate\n"); + printf("Your compiler's gettimeofday() function is apparently only accurate\n"); printf("to the second. Please change the get_ms() function in main.c\n"); printf("to make it more accurate.\n"); printf("\n"); @