From: Damir Tomic Date: Sat, 4 Jul 2015 21:32:08 +0000 (+0200) Subject: timevalops.c: X-Git-Tag: NTP_4_3_64~4^2~5^2~1^2 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=640bdd0e1cfe3f01c7bda5c385f57c2e7a7bcfe2;p=thirdparty%2Fntp.git timevalops.c: added timevaltoa() and fixed the printfs timespecops.c: added timespectoa() and fixed the printfs bk: 559850d8fGBsVxnqqnjVP8DLjM4kDw --- diff --git a/tests/libntp/run-timespecops.c b/tests/libntp/run-timespecops.c index 48a9a51fd..b33552024 100644 --- a/tests/libntp/run-timespecops.c +++ b/tests/libntp/run-timespecops.c @@ -73,34 +73,34 @@ int main(int argc, char *argv[]) progname = argv[0]; Unity.TestFile = "timespecops.c"; UnityBegin("timespecops.c"); - RUN_TEST(test_Helpers1, 149); - RUN_TEST(test_Normalise, 169); - RUN_TEST(test_SignNoFrac, 183); - RUN_TEST(test_SignWithFrac, 195); - RUN_TEST(test_CmpFracEQ, 209); - RUN_TEST(test_CmpFracGT, 222); - RUN_TEST(test_CmpFracLT, 235); - RUN_TEST(test_AddFullNorm, 252); - RUN_TEST(test_AddFullOflow1, 266); - RUN_TEST(test_AddNsecNorm, 280); - RUN_TEST(test_AddNsecOflow1, 292); - RUN_TEST(test_SubFullNorm, 308); - RUN_TEST(test_SubFullOflow, 322); - RUN_TEST(test_SubNsecNorm, 336); - RUN_TEST(test_SubNsecOflow, 348); - RUN_TEST(test_Neg, 364); - RUN_TEST(test_AbsNoFrac, 381); - RUN_TEST(test_AbsWithFrac, 392); - RUN_TEST(test_Helpers2, 407); - RUN_TEST(test_ToLFPbittest, 439); - RUN_TEST(test_ToLFPrelPos, 452); - RUN_TEST(test_ToLFPrelNeg, 464); - RUN_TEST(test_ToLFPabs, 476); - RUN_TEST(test_FromLFPbittest, 491); - RUN_TEST(test_FromLFPrelPos, 510); - RUN_TEST(test_FromLFPrelNeg, 523); - RUN_TEST(test_LFProundtrip, 538); - RUN_TEST(test_ToString, 557); + RUN_TEST(test_Helpers1, 206); + RUN_TEST(test_Normalise, 226); + RUN_TEST(test_SignNoFrac, 240); + RUN_TEST(test_SignWithFrac, 252); + RUN_TEST(test_CmpFracEQ, 266); + RUN_TEST(test_CmpFracGT, 279); + RUN_TEST(test_CmpFracLT, 292); + RUN_TEST(test_AddFullNorm, 309); + RUN_TEST(test_AddFullOflow1, 323); + RUN_TEST(test_AddNsecNorm, 337); + RUN_TEST(test_AddNsecOflow1, 349); + RUN_TEST(test_SubFullNorm, 365); + RUN_TEST(test_SubFullOflow, 379); + RUN_TEST(test_SubNsecNorm, 393); + RUN_TEST(test_SubNsecOflow, 405); + RUN_TEST(test_Neg, 421); + RUN_TEST(test_AbsNoFrac, 438); + RUN_TEST(test_AbsWithFrac, 449); + RUN_TEST(test_Helpers2, 464); + RUN_TEST(test_ToLFPbittest, 496); + RUN_TEST(test_ToLFPrelPos, 509); + RUN_TEST(test_ToLFPrelNeg, 521); + RUN_TEST(test_ToLFPabs, 533); + RUN_TEST(test_FromLFPbittest, 548); + RUN_TEST(test_FromLFPrelPos, 567); + RUN_TEST(test_FromLFPrelNeg, 580); + RUN_TEST(test_LFProundtrip, 595); + RUN_TEST(test_ToString, 614); return (UnityEnd()); } diff --git a/tests/libntp/run-timevalops.c b/tests/libntp/run-timevalops.c index 0a2616ef2..9f99cc6c7 100644 --- a/tests/libntp/run-timevalops.c +++ b/tests/libntp/run-timevalops.c @@ -73,34 +73,34 @@ int main(int argc, char *argv[]) progname = argv[0]; Unity.TestFile = "timevalops.c"; UnityBegin("timevalops.c"); - RUN_TEST(test_Helpers1, 149); - RUN_TEST(test_Normalise, 169); - RUN_TEST(test_SignNoFrac, 183); - RUN_TEST(test_SignWithFrac, 195); - RUN_TEST(test_CmpFracEQ, 210); - RUN_TEST(test_CmpFracGT, 224); - RUN_TEST(test_CmpFracLT, 238); - RUN_TEST(test_AddFullNorm, 256); - RUN_TEST(test_AddFullOflow1, 270); - RUN_TEST(test_AddUsecNorm, 284); - RUN_TEST(test_AddUsecOflow1, 296); - RUN_TEST(test_SubFullNorm, 312); - RUN_TEST(test_SubFullOflow, 326); - RUN_TEST(test_SubUsecNorm, 340); - RUN_TEST(test_SubUsecOflow, 352); - RUN_TEST(test_Neg, 368); - RUN_TEST(test_AbsNoFrac, 385); - RUN_TEST(test_AbsWithFrac, 396); - RUN_TEST(test_Helpers2, 412); - RUN_TEST(test_ToLFPbittest, 445); - RUN_TEST(test_ToLFPrelPos, 460); - RUN_TEST(test_ToLFPrelNeg, 474); - RUN_TEST(test_ToLFPabs, 487); - RUN_TEST(test_FromLFPbittest, 505); - RUN_TEST(test_FromLFPrelPos, 523); - RUN_TEST(test_FromLFPrelNeg, 536); - RUN_TEST(test_LFProundtrip, 550); - RUN_TEST(test_ToString, 569); + RUN_TEST(test_Helpers1, 201); + RUN_TEST(test_Normalise, 221); + RUN_TEST(test_SignNoFrac, 235); + RUN_TEST(test_SignWithFrac, 247); + RUN_TEST(test_CmpFracEQ, 262); + RUN_TEST(test_CmpFracGT, 276); + RUN_TEST(test_CmpFracLT, 290); + RUN_TEST(test_AddFullNorm, 308); + RUN_TEST(test_AddFullOflow1, 322); + RUN_TEST(test_AddUsecNorm, 336); + RUN_TEST(test_AddUsecOflow1, 348); + RUN_TEST(test_SubFullNorm, 364); + RUN_TEST(test_SubFullOflow, 378); + RUN_TEST(test_SubUsecNorm, 392); + RUN_TEST(test_SubUsecOflow, 404); + RUN_TEST(test_Neg, 420); + RUN_TEST(test_AbsNoFrac, 437); + RUN_TEST(test_AbsWithFrac, 448); + RUN_TEST(test_Helpers2, 464); + RUN_TEST(test_ToLFPbittest, 497); + RUN_TEST(test_ToLFPrelPos, 512); + RUN_TEST(test_ToLFPrelNeg, 526); + RUN_TEST(test_ToLFPabs, 539); + RUN_TEST(test_FromLFPbittest, 557); + RUN_TEST(test_FromLFPrelPos, 575); + RUN_TEST(test_FromLFPrelNeg, 588); + RUN_TEST(test_LFProundtrip, 602); + RUN_TEST(test_ToString, 621); return (UnityEnd()); } diff --git a/tests/libntp/timespecops.c b/tests/libntp/timespecops.c index ac7a45d6c..ee222f6d0 100644 --- a/tests/libntp/timespecops.c +++ b/tests/libntp/timespecops.c @@ -48,6 +48,55 @@ struct timespec timespec_init(time_t hi, long lo){ return V; } +char * timespectoa( const struct timespec *in) +{ + long nsec, q; + long long sec; + char sign; + + nsec = in->tv_nsec; + sec = in->tv_sec; + + /* normalise time stamp first. This is a floor division. Let + * the compiler sort out the division itself. + */ + q = nsec / 1000000000; + nsec = nsec % 1000000000; + if (nsec < 0) { + q -= 1; + nsec += 1000000000; + } + sec += q; + + /* get absolute value */ + if (sec < 0) { + sign = '-'; + sec = -sec; + if (nsec) { + nsec = 1000000000 - nsec; + sec -= 1; + } + } else { + sign = '+'; + } + + size_t sz; + //sz = snprintf(NULL, 0, "%c%llu.%09u", sign, (unsigned long long)sec, (unsigned int)nsec); + //printf("NUM: %d\n",sz); + //char * buf = (char *)malloc(sz+1); + //snprintf(buf, sz+1, "%c%llu.%09u", sign, (unsigned long long)sec, (unsigned int)nsec); + char * buf = (char *)malloc(48); + sz = snprintf(buf, 48, "%c%llu.%09u", sign, (unsigned long long)sec, (unsigned int)nsec); + //printf("NUM: %d\n",sz); + if(sz > 48){ + printf("ERROR: insufficient space allocated\n"); + } //this should never happen + + return buf; +} + + + //taken from lfpfunc.c -> maybe remove this from timevalops.c and lfpfunc. and put in c_timstructs.h ????!!!!! l_fp l_fp_init(int32 i, u_int32 f) { @@ -89,7 +138,15 @@ bool AssertTimespecClose(const struct timespec m,const struct timespec n, const return TRUE; else { - printf("m_expr which is %ld.%lu \nand\nn_expr which is %ld.%lu\nare not close; diff=%ld.%lunsec\n",m.tv_sec,m.tv_nsec,n.tv_sec,n.tv_nsec,diff.tv_sec,diff.tv_nsec); + char * a = timespectoa(&m); + char * b = timespectoa(&n); + char * c = timespectoa(&diff); + printf("TIMESPEC_PRINTF:\nm_expr %s n_expr %s diff %s\n",a,b,c); + free(a); + free(b); + free(c); + //printf below is wrong + //printf("m_expr which is %ld.%lu \nand\nn_expr which is %ld.%lu\nare not close; diff=%ld.%lunsec\n",m.tv_sec,m.tv_nsec,n.tv_sec,n.tv_nsec,diff.tv_sec,diff.tv_nsec); return FALSE; } } diff --git a/tests/libntp/timevalops.c b/tests/libntp/timevalops.c index 9d832673d..743b4375c 100644 --- a/tests/libntp/timevalops.c +++ b/tests/libntp/timevalops.c @@ -43,6 +43,50 @@ struct timeval timeval_init( time_t hi, long lo){ const bool timeval_isValid(struct timeval V) { return V.tv_usec >= 0 && V.tv_usec < 1000000; } +char * timevaltoa( const struct timeval *in) +{ + suseconds_t usec, q; + long long sec; + char sign; + + usec = in->tv_usec; + sec = in->tv_sec; + + /* normalise time stamp first. This is a floor division. Let + * the compiler sort out the division itself. + */ + q = usec / 1000000; + usec = usec % 1000000; + if (usec < 0) { + q -= 1; + usec += 1000000; + } + sec += q; + + /* get absolute value */ + if (sec < 0) { + sign = '-'; + sec = -sec; + if (usec) { + usec = 1000000 - usec; + sec -= 1; + } + } else { + sign = '+'; + } + + size_t sz; + char * buf = (char *)malloc(48); + sz = snprintf(buf, 48, "%c%llu.%06u", sign, (unsigned long long)sec, (unsigned int)usec); + + if(sz > 48){ + printf("ERROR: insufficient space allocated"); + } //this should never happen + + return buf; +} + + //taken from lfpfunc.c -> maybe remove this from timevalops.c and lfpfunc. and put in c_timstructs.h ????!!!!! l_fp l_fp_init(int32 i, u_int32 f) { @@ -63,7 +107,15 @@ bool AssertTimevalClose(const struct timeval m, const struct timeval n, const st else { - printf("m_expr which is %ld.%lu \nand\nn_expr which is %ld.%lu\nare not close; diff=%ld.%luusec\n",m.tv_sec,m.tv_usec,n.tv_sec,n.tv_usec,diff.tv_sec,diff.tv_usec); + char * a = timevaltoa(&m); + char * b = timevaltoa(&n); + char * c = timevaltoa(&diff); + printf("TIMESPEC_PRINTF:\nm_expr %s n_expr %s diff %s\n",a,b,c); + free(a); + free(b); + free(c); + //printf below is wrong + //printf("m_expr which is %ld.%lu \nand\nn_expr which is %ld.%lu\nare not close; diff=%ld.%luusec\n",m.tv_sec,m.tv_usec,n.tv_sec,n.tv_usec,diff.tv_sec,diff.tv_usec); //I don't have variables m_expr and n_expr in unity, those are command line arguments which only getst has!!! return FALSE;