aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/microhttpd/mhd_str.c47
-rw-r--r--src/microhttpd/mhd_str.h22
-rw-r--r--src/microhttpd/test_str.c907
3 files changed, 975 insertions, 1 deletions
diff --git a/src/microhttpd/mhd_str.c b/src/microhttpd/mhd_str.c
index b106859d..1c77a46d 100644
--- a/src/microhttpd/mhd_str.c
+++ b/src/microhttpd/mhd_str.c
@@ -1294,3 +1294,50 @@ MHD_uint64_to_str (uint64_t val,
1294 } 1294 }
1295 return 0; /* The buffer is too small */ 1295 return 0; /* The buffer is too small */
1296} 1296}
1297
1298
1299size_t
1300MHD_uint8_to_str_pad (uint8_t val,
1301 uint8_t min_digits,
1302 char *buf,
1303 size_t buf_size)
1304{
1305 size_t pos; /**< the position of the current printed digit */
1306 int digit;
1307 mhd_assert (3 >= min_digits);
1308 if (0 == buf_size)
1309 return 0;
1310
1311 pos = 0;
1312 digit = val / 100;
1313 if (0 == digit)
1314 {
1315 if (3 <= min_digits)
1316 buf[pos++] = '0';
1317 }
1318 else
1319 {
1320 buf[pos++] = '0' + digit;
1321 val %= 100;
1322 min_digits = 2;
1323 }
1324
1325 if (buf_size <= pos)
1326 return 0;
1327 digit = val / 10;
1328 if (0 == digit)
1329 {
1330 if (2 <= min_digits)
1331 buf[pos++] = '0';
1332 }
1333 else
1334 {
1335 buf[pos++] = '0' + digit;
1336 val %= 10;
1337 }
1338
1339 if (buf_size <= pos)
1340 return 0;
1341 buf[pos++] = '0' + val;
1342 return pos;
1343}
diff --git a/src/microhttpd/mhd_str.h b/src/microhttpd/mhd_str.h
index 9cc4bb19..b21ae256 100644
--- a/src/microhttpd/mhd_str.h
+++ b/src/microhttpd/mhd_str.h
@@ -424,4 +424,26 @@ MHD_uint64_to_str (uint64_t val,
424 size_t buf_size); 424 size_t buf_size);
425 425
426 426
427/**
428 * Convert uint16_t value to decimal US-ASCII string padded with
429 * zeros on the left side.
430 *
431 * @note: result is NOT zero-terminated.
432 * @param val the value to convert
433 * @param min_digits the minimal number of digits to print,
434 * output padded with zeros on the left side,
435 * 'zero' value is interpreted as 'one',
436 * valid values are 3, 2, 1, 0
437 * @param buf the buffer to result to
438 * @param buf_size size of the @a buffer
439 * @return number of charters has been put to the @a buf,
440 * zero if buffer is too small (buffer may be modified).
441 */
442size_t
443MHD_uint8_to_str_pad (uint8_t val,
444 uint8_t min_digits,
445 char *buf,
446 size_t buf_size);
447
448
427#endif /* MHD_STR_H */ 449#endif /* MHD_STR_H */
diff --git a/src/microhttpd/test_str.c b/src/microhttpd/test_str.c
index a65cb61d..941f8406 100644
--- a/src/microhttpd/test_str.c
+++ b/src/microhttpd/test_str.c
@@ -3685,12 +3685,901 @@ check_strx_from_uint32 (void)
3685} 3685}
3686 3686
3687 3687
3688static const struct str_with_value duint8_w_values_p1[] = {
3689 {D_STR_W_LEN ("0"), 1, 0},
3690 {D_STR_W_LEN ("1"), 1, 1},
3691 {D_STR_W_LEN ("2"), 1, 2},
3692 {D_STR_W_LEN ("3"), 1, 3},
3693 {D_STR_W_LEN ("4"), 1, 4},
3694 {D_STR_W_LEN ("5"), 1, 5},
3695 {D_STR_W_LEN ("6"), 1, 6},
3696 {D_STR_W_LEN ("7"), 1, 7},
3697 {D_STR_W_LEN ("8"), 1, 8},
3698 {D_STR_W_LEN ("9"), 1, 9},
3699 {D_STR_W_LEN ("10"), 2, 10},
3700 {D_STR_W_LEN ("11"), 2, 11},
3701 {D_STR_W_LEN ("12"), 2, 12},
3702 {D_STR_W_LEN ("13"), 2, 13},
3703 {D_STR_W_LEN ("14"), 2, 14},
3704 {D_STR_W_LEN ("15"), 2, 15},
3705 {D_STR_W_LEN ("16"), 2, 16},
3706 {D_STR_W_LEN ("17"), 2, 17},
3707 {D_STR_W_LEN ("18"), 2, 18},
3708 {D_STR_W_LEN ("19"), 2, 19},
3709 {D_STR_W_LEN ("20"), 2, 20},
3710 {D_STR_W_LEN ("21"), 2, 21},
3711 {D_STR_W_LEN ("22"), 2, 22},
3712 {D_STR_W_LEN ("23"), 2, 23},
3713 {D_STR_W_LEN ("24"), 2, 24},
3714 {D_STR_W_LEN ("25"), 2, 25},
3715 {D_STR_W_LEN ("26"), 2, 26},
3716 {D_STR_W_LEN ("27"), 2, 27},
3717 {D_STR_W_LEN ("28"), 2, 28},
3718 {D_STR_W_LEN ("29"), 2, 29},
3719 {D_STR_W_LEN ("30"), 2, 30},
3720 {D_STR_W_LEN ("31"), 2, 31},
3721 {D_STR_W_LEN ("32"), 2, 32},
3722 {D_STR_W_LEN ("33"), 2, 33},
3723 {D_STR_W_LEN ("34"), 2, 34},
3724 {D_STR_W_LEN ("35"), 2, 35},
3725 {D_STR_W_LEN ("36"), 2, 36},
3726 {D_STR_W_LEN ("37"), 2, 37},
3727 {D_STR_W_LEN ("38"), 2, 38},
3728 {D_STR_W_LEN ("39"), 2, 39},
3729 {D_STR_W_LEN ("40"), 2, 40},
3730 {D_STR_W_LEN ("41"), 2, 41},
3731 {D_STR_W_LEN ("42"), 2, 42},
3732 {D_STR_W_LEN ("43"), 2, 43},
3733 {D_STR_W_LEN ("44"), 2, 44},
3734 {D_STR_W_LEN ("45"), 2, 45},
3735 {D_STR_W_LEN ("46"), 2, 46},
3736 {D_STR_W_LEN ("47"), 2, 47},
3737 {D_STR_W_LEN ("48"), 2, 48},
3738 {D_STR_W_LEN ("49"), 2, 49},
3739 {D_STR_W_LEN ("50"), 2, 50},
3740 {D_STR_W_LEN ("51"), 2, 51},
3741 {D_STR_W_LEN ("52"), 2, 52},
3742 {D_STR_W_LEN ("53"), 2, 53},
3743 {D_STR_W_LEN ("54"), 2, 54},
3744 {D_STR_W_LEN ("55"), 2, 55},
3745 {D_STR_W_LEN ("56"), 2, 56},
3746 {D_STR_W_LEN ("57"), 2, 57},
3747 {D_STR_W_LEN ("58"), 2, 58},
3748 {D_STR_W_LEN ("59"), 2, 59},
3749 {D_STR_W_LEN ("60"), 2, 60},
3750 {D_STR_W_LEN ("61"), 2, 61},
3751 {D_STR_W_LEN ("62"), 2, 62},
3752 {D_STR_W_LEN ("63"), 2, 63},
3753 {D_STR_W_LEN ("64"), 2, 64},
3754 {D_STR_W_LEN ("65"), 2, 65},
3755 {D_STR_W_LEN ("66"), 2, 66},
3756 {D_STR_W_LEN ("67"), 2, 67},
3757 {D_STR_W_LEN ("68"), 2, 68},
3758 {D_STR_W_LEN ("69"), 2, 69},
3759 {D_STR_W_LEN ("70"), 2, 70},
3760 {D_STR_W_LEN ("71"), 2, 71},
3761 {D_STR_W_LEN ("72"), 2, 72},
3762 {D_STR_W_LEN ("73"), 2, 73},
3763 {D_STR_W_LEN ("74"), 2, 74},
3764 {D_STR_W_LEN ("75"), 2, 75},
3765 {D_STR_W_LEN ("76"), 2, 76},
3766 {D_STR_W_LEN ("77"), 2, 77},
3767 {D_STR_W_LEN ("78"), 2, 78},
3768 {D_STR_W_LEN ("79"), 2, 79},
3769 {D_STR_W_LEN ("80"), 2, 80},
3770 {D_STR_W_LEN ("81"), 2, 81},
3771 {D_STR_W_LEN ("82"), 2, 82},
3772 {D_STR_W_LEN ("83"), 2, 83},
3773 {D_STR_W_LEN ("84"), 2, 84},
3774 {D_STR_W_LEN ("85"), 2, 85},
3775 {D_STR_W_LEN ("86"), 2, 86},
3776 {D_STR_W_LEN ("87"), 2, 87},
3777 {D_STR_W_LEN ("88"), 2, 88},
3778 {D_STR_W_LEN ("89"), 2, 89},
3779 {D_STR_W_LEN ("90"), 2, 90},
3780 {D_STR_W_LEN ("91"), 2, 91},
3781 {D_STR_W_LEN ("92"), 2, 92},
3782 {D_STR_W_LEN ("93"), 2, 93},
3783 {D_STR_W_LEN ("94"), 2, 94},
3784 {D_STR_W_LEN ("95"), 2, 95},
3785 {D_STR_W_LEN ("96"), 2, 96},
3786 {D_STR_W_LEN ("97"), 2, 97},
3787 {D_STR_W_LEN ("98"), 2, 98},
3788 {D_STR_W_LEN ("99"), 2, 99},
3789 {D_STR_W_LEN ("100"), 3, 100},
3790 {D_STR_W_LEN ("101"), 3, 101},
3791 {D_STR_W_LEN ("102"), 3, 102},
3792 {D_STR_W_LEN ("103"), 3, 103},
3793 {D_STR_W_LEN ("104"), 3, 104},
3794 {D_STR_W_LEN ("105"), 3, 105},
3795 {D_STR_W_LEN ("106"), 3, 106},
3796 {D_STR_W_LEN ("107"), 3, 107},
3797 {D_STR_W_LEN ("108"), 3, 108},
3798 {D_STR_W_LEN ("109"), 3, 109},
3799 {D_STR_W_LEN ("110"), 3, 110},
3800 {D_STR_W_LEN ("111"), 3, 111},
3801 {D_STR_W_LEN ("112"), 3, 112},
3802 {D_STR_W_LEN ("113"), 3, 113},
3803 {D_STR_W_LEN ("114"), 3, 114},
3804 {D_STR_W_LEN ("115"), 3, 115},
3805 {D_STR_W_LEN ("116"), 3, 116},
3806 {D_STR_W_LEN ("117"), 3, 117},
3807 {D_STR_W_LEN ("118"), 3, 118},
3808 {D_STR_W_LEN ("119"), 3, 119},
3809 {D_STR_W_LEN ("120"), 3, 120},
3810 {D_STR_W_LEN ("121"), 3, 121},
3811 {D_STR_W_LEN ("122"), 3, 122},
3812 {D_STR_W_LEN ("123"), 3, 123},
3813 {D_STR_W_LEN ("124"), 3, 124},
3814 {D_STR_W_LEN ("125"), 3, 125},
3815 {D_STR_W_LEN ("126"), 3, 126},
3816 {D_STR_W_LEN ("127"), 3, 127},
3817 {D_STR_W_LEN ("128"), 3, 128},
3818 {D_STR_W_LEN ("129"), 3, 129},
3819 {D_STR_W_LEN ("130"), 3, 130},
3820 {D_STR_W_LEN ("131"), 3, 131},
3821 {D_STR_W_LEN ("132"), 3, 132},
3822 {D_STR_W_LEN ("133"), 3, 133},
3823 {D_STR_W_LEN ("134"), 3, 134},
3824 {D_STR_W_LEN ("135"), 3, 135},
3825 {D_STR_W_LEN ("136"), 3, 136},
3826 {D_STR_W_LEN ("137"), 3, 137},
3827 {D_STR_W_LEN ("138"), 3, 138},
3828 {D_STR_W_LEN ("139"), 3, 139},
3829 {D_STR_W_LEN ("140"), 3, 140},
3830 {D_STR_W_LEN ("141"), 3, 141},
3831 {D_STR_W_LEN ("142"), 3, 142},
3832 {D_STR_W_LEN ("143"), 3, 143},
3833 {D_STR_W_LEN ("144"), 3, 144},
3834 {D_STR_W_LEN ("145"), 3, 145},
3835 {D_STR_W_LEN ("146"), 3, 146},
3836 {D_STR_W_LEN ("147"), 3, 147},
3837 {D_STR_W_LEN ("148"), 3, 148},
3838 {D_STR_W_LEN ("149"), 3, 149},
3839 {D_STR_W_LEN ("150"), 3, 150},
3840 {D_STR_W_LEN ("151"), 3, 151},
3841 {D_STR_W_LEN ("152"), 3, 152},
3842 {D_STR_W_LEN ("153"), 3, 153},
3843 {D_STR_W_LEN ("154"), 3, 154},
3844 {D_STR_W_LEN ("155"), 3, 155},
3845 {D_STR_W_LEN ("156"), 3, 156},
3846 {D_STR_W_LEN ("157"), 3, 157},
3847 {D_STR_W_LEN ("158"), 3, 158},
3848 {D_STR_W_LEN ("159"), 3, 159},
3849 {D_STR_W_LEN ("160"), 3, 160},
3850 {D_STR_W_LEN ("161"), 3, 161},
3851 {D_STR_W_LEN ("162"), 3, 162},
3852 {D_STR_W_LEN ("163"), 3, 163},
3853 {D_STR_W_LEN ("164"), 3, 164},
3854 {D_STR_W_LEN ("165"), 3, 165},
3855 {D_STR_W_LEN ("166"), 3, 166},
3856 {D_STR_W_LEN ("167"), 3, 167},
3857 {D_STR_W_LEN ("168"), 3, 168},
3858 {D_STR_W_LEN ("169"), 3, 169},
3859 {D_STR_W_LEN ("170"), 3, 170},
3860 {D_STR_W_LEN ("171"), 3, 171},
3861 {D_STR_W_LEN ("172"), 3, 172},
3862 {D_STR_W_LEN ("173"), 3, 173},
3863 {D_STR_W_LEN ("174"), 3, 174},
3864 {D_STR_W_LEN ("175"), 3, 175},
3865 {D_STR_W_LEN ("176"), 3, 176},
3866 {D_STR_W_LEN ("177"), 3, 177},
3867 {D_STR_W_LEN ("178"), 3, 178},
3868 {D_STR_W_LEN ("179"), 3, 179},
3869 {D_STR_W_LEN ("180"), 3, 180},
3870 {D_STR_W_LEN ("181"), 3, 181},
3871 {D_STR_W_LEN ("182"), 3, 182},
3872 {D_STR_W_LEN ("183"), 3, 183},
3873 {D_STR_W_LEN ("184"), 3, 184},
3874 {D_STR_W_LEN ("185"), 3, 185},
3875 {D_STR_W_LEN ("186"), 3, 186},
3876 {D_STR_W_LEN ("187"), 3, 187},
3877 {D_STR_W_LEN ("188"), 3, 188},
3878 {D_STR_W_LEN ("189"), 3, 189},
3879 {D_STR_W_LEN ("190"), 3, 190},
3880 {D_STR_W_LEN ("191"), 3, 191},
3881 {D_STR_W_LEN ("192"), 3, 192},
3882 {D_STR_W_LEN ("193"), 3, 193},
3883 {D_STR_W_LEN ("194"), 3, 194},
3884 {D_STR_W_LEN ("195"), 3, 195},
3885 {D_STR_W_LEN ("196"), 3, 196},
3886 {D_STR_W_LEN ("197"), 3, 197},
3887 {D_STR_W_LEN ("198"), 3, 198},
3888 {D_STR_W_LEN ("199"), 3, 199},
3889 {D_STR_W_LEN ("200"), 3, 200},
3890 {D_STR_W_LEN ("201"), 3, 201},
3891 {D_STR_W_LEN ("202"), 3, 202},
3892 {D_STR_W_LEN ("203"), 3, 203},
3893 {D_STR_W_LEN ("204"), 3, 204},
3894 {D_STR_W_LEN ("205"), 3, 205},
3895 {D_STR_W_LEN ("206"), 3, 206},
3896 {D_STR_W_LEN ("207"), 3, 207},
3897 {D_STR_W_LEN ("208"), 3, 208},
3898 {D_STR_W_LEN ("209"), 3, 209},
3899 {D_STR_W_LEN ("210"), 3, 210},
3900 {D_STR_W_LEN ("211"), 3, 211},
3901 {D_STR_W_LEN ("212"), 3, 212},
3902 {D_STR_W_LEN ("213"), 3, 213},
3903 {D_STR_W_LEN ("214"), 3, 214},
3904 {D_STR_W_LEN ("215"), 3, 215},
3905 {D_STR_W_LEN ("216"), 3, 216},
3906 {D_STR_W_LEN ("217"), 3, 217},
3907 {D_STR_W_LEN ("218"), 3, 218},
3908 {D_STR_W_LEN ("219"), 3, 219},
3909 {D_STR_W_LEN ("220"), 3, 220},
3910 {D_STR_W_LEN ("221"), 3, 221},
3911 {D_STR_W_LEN ("222"), 3, 222},
3912 {D_STR_W_LEN ("223"), 3, 223},
3913 {D_STR_W_LEN ("224"), 3, 224},
3914 {D_STR_W_LEN ("225"), 3, 225},
3915 {D_STR_W_LEN ("226"), 3, 226},
3916 {D_STR_W_LEN ("227"), 3, 227},
3917 {D_STR_W_LEN ("228"), 3, 228},
3918 {D_STR_W_LEN ("229"), 3, 229},
3919 {D_STR_W_LEN ("230"), 3, 230},
3920 {D_STR_W_LEN ("231"), 3, 231},
3921 {D_STR_W_LEN ("232"), 3, 232},
3922 {D_STR_W_LEN ("233"), 3, 233},
3923 {D_STR_W_LEN ("234"), 3, 234},
3924 {D_STR_W_LEN ("235"), 3, 235},
3925 {D_STR_W_LEN ("236"), 3, 236},
3926 {D_STR_W_LEN ("237"), 3, 237},
3927 {D_STR_W_LEN ("238"), 3, 238},
3928 {D_STR_W_LEN ("239"), 3, 239},
3929 {D_STR_W_LEN ("240"), 3, 240},
3930 {D_STR_W_LEN ("241"), 3, 241},
3931 {D_STR_W_LEN ("242"), 3, 242},
3932 {D_STR_W_LEN ("243"), 3, 243},
3933 {D_STR_W_LEN ("244"), 3, 244},
3934 {D_STR_W_LEN ("245"), 3, 245},
3935 {D_STR_W_LEN ("246"), 3, 246},
3936 {D_STR_W_LEN ("247"), 3, 247},
3937 {D_STR_W_LEN ("248"), 3, 248},
3938 {D_STR_W_LEN ("249"), 3, 249},
3939 {D_STR_W_LEN ("250"), 3, 250},
3940 {D_STR_W_LEN ("251"), 3, 251},
3941 {D_STR_W_LEN ("252"), 3, 252},
3942 {D_STR_W_LEN ("253"), 3, 253},
3943 {D_STR_W_LEN ("254"), 3, 254},
3944 {D_STR_W_LEN ("255"), 3, 255},
3945};
3946
3947static const struct str_with_value duint8_w_values_p2[] = {
3948 {D_STR_W_LEN ("00"), 2, 0},
3949 {D_STR_W_LEN ("01"), 2, 1},
3950 {D_STR_W_LEN ("02"), 2, 2},
3951 {D_STR_W_LEN ("03"), 2, 3},
3952 {D_STR_W_LEN ("04"), 2, 4},
3953 {D_STR_W_LEN ("05"), 2, 5},
3954 {D_STR_W_LEN ("06"), 2, 6},
3955 {D_STR_W_LEN ("07"), 2, 7},
3956 {D_STR_W_LEN ("08"), 2, 8},
3957 {D_STR_W_LEN ("09"), 2, 9},
3958 {D_STR_W_LEN ("10"), 2, 10},
3959 {D_STR_W_LEN ("11"), 2, 11},
3960 {D_STR_W_LEN ("12"), 2, 12},
3961 {D_STR_W_LEN ("13"), 2, 13},
3962 {D_STR_W_LEN ("14"), 2, 14},
3963 {D_STR_W_LEN ("15"), 2, 15},
3964 {D_STR_W_LEN ("16"), 2, 16},
3965 {D_STR_W_LEN ("17"), 2, 17},
3966 {D_STR_W_LEN ("18"), 2, 18},
3967 {D_STR_W_LEN ("19"), 2, 19},
3968 {D_STR_W_LEN ("20"), 2, 20},
3969 {D_STR_W_LEN ("21"), 2, 21},
3970 {D_STR_W_LEN ("22"), 2, 22},
3971 {D_STR_W_LEN ("23"), 2, 23},
3972 {D_STR_W_LEN ("24"), 2, 24},
3973 {D_STR_W_LEN ("25"), 2, 25},
3974 {D_STR_W_LEN ("26"), 2, 26},
3975 {D_STR_W_LEN ("27"), 2, 27},
3976 {D_STR_W_LEN ("28"), 2, 28},
3977 {D_STR_W_LEN ("29"), 2, 29},
3978 {D_STR_W_LEN ("30"), 2, 30},
3979 {D_STR_W_LEN ("31"), 2, 31},
3980 {D_STR_W_LEN ("32"), 2, 32},
3981 {D_STR_W_LEN ("33"), 2, 33},
3982 {D_STR_W_LEN ("34"), 2, 34},
3983 {D_STR_W_LEN ("35"), 2, 35},
3984 {D_STR_W_LEN ("36"), 2, 36},
3985 {D_STR_W_LEN ("37"), 2, 37},
3986 {D_STR_W_LEN ("38"), 2, 38},
3987 {D_STR_W_LEN ("39"), 2, 39},
3988 {D_STR_W_LEN ("40"), 2, 40},
3989 {D_STR_W_LEN ("41"), 2, 41},
3990 {D_STR_W_LEN ("42"), 2, 42},
3991 {D_STR_W_LEN ("43"), 2, 43},
3992 {D_STR_W_LEN ("44"), 2, 44},
3993 {D_STR_W_LEN ("45"), 2, 45},
3994 {D_STR_W_LEN ("46"), 2, 46},
3995 {D_STR_W_LEN ("47"), 2, 47},
3996 {D_STR_W_LEN ("48"), 2, 48},
3997 {D_STR_W_LEN ("49"), 2, 49},
3998 {D_STR_W_LEN ("50"), 2, 50},
3999 {D_STR_W_LEN ("51"), 2, 51},
4000 {D_STR_W_LEN ("52"), 2, 52},
4001 {D_STR_W_LEN ("53"), 2, 53},
4002 {D_STR_W_LEN ("54"), 2, 54},
4003 {D_STR_W_LEN ("55"), 2, 55},
4004 {D_STR_W_LEN ("56"), 2, 56},
4005 {D_STR_W_LEN ("57"), 2, 57},
4006 {D_STR_W_LEN ("58"), 2, 58},
4007 {D_STR_W_LEN ("59"), 2, 59},
4008 {D_STR_W_LEN ("60"), 2, 60},
4009 {D_STR_W_LEN ("61"), 2, 61},
4010 {D_STR_W_LEN ("62"), 2, 62},
4011 {D_STR_W_LEN ("63"), 2, 63},
4012 {D_STR_W_LEN ("64"), 2, 64},
4013 {D_STR_W_LEN ("65"), 2, 65},
4014 {D_STR_W_LEN ("66"), 2, 66},
4015 {D_STR_W_LEN ("67"), 2, 67},
4016 {D_STR_W_LEN ("68"), 2, 68},
4017 {D_STR_W_LEN ("69"), 2, 69},
4018 {D_STR_W_LEN ("70"), 2, 70},
4019 {D_STR_W_LEN ("71"), 2, 71},
4020 {D_STR_W_LEN ("72"), 2, 72},
4021 {D_STR_W_LEN ("73"), 2, 73},
4022 {D_STR_W_LEN ("74"), 2, 74},
4023 {D_STR_W_LEN ("75"), 2, 75},
4024 {D_STR_W_LEN ("76"), 2, 76},
4025 {D_STR_W_LEN ("77"), 2, 77},
4026 {D_STR_W_LEN ("78"), 2, 78},
4027 {D_STR_W_LEN ("79"), 2, 79},
4028 {D_STR_W_LEN ("80"), 2, 80},
4029 {D_STR_W_LEN ("81"), 2, 81},
4030 {D_STR_W_LEN ("82"), 2, 82},
4031 {D_STR_W_LEN ("83"), 2, 83},
4032 {D_STR_W_LEN ("84"), 2, 84},
4033 {D_STR_W_LEN ("85"), 2, 85},
4034 {D_STR_W_LEN ("86"), 2, 86},
4035 {D_STR_W_LEN ("87"), 2, 87},
4036 {D_STR_W_LEN ("88"), 2, 88},
4037 {D_STR_W_LEN ("89"), 2, 89},
4038 {D_STR_W_LEN ("90"), 2, 90},
4039 {D_STR_W_LEN ("91"), 2, 91},
4040 {D_STR_W_LEN ("92"), 2, 92},
4041 {D_STR_W_LEN ("93"), 2, 93},
4042 {D_STR_W_LEN ("94"), 2, 94},
4043 {D_STR_W_LEN ("95"), 2, 95},
4044 {D_STR_W_LEN ("96"), 2, 96},
4045 {D_STR_W_LEN ("97"), 2, 97},
4046 {D_STR_W_LEN ("98"), 2, 98},
4047 {D_STR_W_LEN ("99"), 2, 99},
4048 {D_STR_W_LEN ("100"), 3, 100},
4049 {D_STR_W_LEN ("101"), 3, 101},
4050 {D_STR_W_LEN ("102"), 3, 102},
4051 {D_STR_W_LEN ("103"), 3, 103},
4052 {D_STR_W_LEN ("104"), 3, 104},
4053 {D_STR_W_LEN ("105"), 3, 105},
4054 {D_STR_W_LEN ("106"), 3, 106},
4055 {D_STR_W_LEN ("107"), 3, 107},
4056 {D_STR_W_LEN ("108"), 3, 108},
4057 {D_STR_W_LEN ("109"), 3, 109},
4058 {D_STR_W_LEN ("110"), 3, 110},
4059 {D_STR_W_LEN ("111"), 3, 111},
4060 {D_STR_W_LEN ("112"), 3, 112},
4061 {D_STR_W_LEN ("113"), 3, 113},
4062 {D_STR_W_LEN ("114"), 3, 114},
4063 {D_STR_W_LEN ("115"), 3, 115},
4064 {D_STR_W_LEN ("116"), 3, 116},
4065 {D_STR_W_LEN ("117"), 3, 117},
4066 {D_STR_W_LEN ("118"), 3, 118},
4067 {D_STR_W_LEN ("119"), 3, 119},
4068 {D_STR_W_LEN ("120"), 3, 120},
4069 {D_STR_W_LEN ("121"), 3, 121},
4070 {D_STR_W_LEN ("122"), 3, 122},
4071 {D_STR_W_LEN ("123"), 3, 123},
4072 {D_STR_W_LEN ("124"), 3, 124},
4073 {D_STR_W_LEN ("125"), 3, 125},
4074 {D_STR_W_LEN ("126"), 3, 126},
4075 {D_STR_W_LEN ("127"), 3, 127},
4076 {D_STR_W_LEN ("128"), 3, 128},
4077 {D_STR_W_LEN ("129"), 3, 129},
4078 {D_STR_W_LEN ("130"), 3, 130},
4079 {D_STR_W_LEN ("131"), 3, 131},
4080 {D_STR_W_LEN ("132"), 3, 132},
4081 {D_STR_W_LEN ("133"), 3, 133},
4082 {D_STR_W_LEN ("134"), 3, 134},
4083 {D_STR_W_LEN ("135"), 3, 135},
4084 {D_STR_W_LEN ("136"), 3, 136},
4085 {D_STR_W_LEN ("137"), 3, 137},
4086 {D_STR_W_LEN ("138"), 3, 138},
4087 {D_STR_W_LEN ("139"), 3, 139},
4088 {D_STR_W_LEN ("140"), 3, 140},
4089 {D_STR_W_LEN ("141"), 3, 141},
4090 {D_STR_W_LEN ("142"), 3, 142},
4091 {D_STR_W_LEN ("143"), 3, 143},
4092 {D_STR_W_LEN ("144"), 3, 144},
4093 {D_STR_W_LEN ("145"), 3, 145},
4094 {D_STR_W_LEN ("146"), 3, 146},
4095 {D_STR_W_LEN ("147"), 3, 147},
4096 {D_STR_W_LEN ("148"), 3, 148},
4097 {D_STR_W_LEN ("149"), 3, 149},
4098 {D_STR_W_LEN ("150"), 3, 150},
4099 {D_STR_W_LEN ("151"), 3, 151},
4100 {D_STR_W_LEN ("152"), 3, 152},
4101 {D_STR_W_LEN ("153"), 3, 153},
4102 {D_STR_W_LEN ("154"), 3, 154},
4103 {D_STR_W_LEN ("155"), 3, 155},
4104 {D_STR_W_LEN ("156"), 3, 156},
4105 {D_STR_W_LEN ("157"), 3, 157},
4106 {D_STR_W_LEN ("158"), 3, 158},
4107 {D_STR_W_LEN ("159"), 3, 159},
4108 {D_STR_W_LEN ("160"), 3, 160},
4109 {D_STR_W_LEN ("161"), 3, 161},
4110 {D_STR_W_LEN ("162"), 3, 162},
4111 {D_STR_W_LEN ("163"), 3, 163},
4112 {D_STR_W_LEN ("164"), 3, 164},
4113 {D_STR_W_LEN ("165"), 3, 165},
4114 {D_STR_W_LEN ("166"), 3, 166},
4115 {D_STR_W_LEN ("167"), 3, 167},
4116 {D_STR_W_LEN ("168"), 3, 168},
4117 {D_STR_W_LEN ("169"), 3, 169},
4118 {D_STR_W_LEN ("170"), 3, 170},
4119 {D_STR_W_LEN ("171"), 3, 171},
4120 {D_STR_W_LEN ("172"), 3, 172},
4121 {D_STR_W_LEN ("173"), 3, 173},
4122 {D_STR_W_LEN ("174"), 3, 174},
4123 {D_STR_W_LEN ("175"), 3, 175},
4124 {D_STR_W_LEN ("176"), 3, 176},
4125 {D_STR_W_LEN ("177"), 3, 177},
4126 {D_STR_W_LEN ("178"), 3, 178},
4127 {D_STR_W_LEN ("179"), 3, 179},
4128 {D_STR_W_LEN ("180"), 3, 180},
4129 {D_STR_W_LEN ("181"), 3, 181},
4130 {D_STR_W_LEN ("182"), 3, 182},
4131 {D_STR_W_LEN ("183"), 3, 183},
4132 {D_STR_W_LEN ("184"), 3, 184},
4133 {D_STR_W_LEN ("185"), 3, 185},
4134 {D_STR_W_LEN ("186"), 3, 186},
4135 {D_STR_W_LEN ("187"), 3, 187},
4136 {D_STR_W_LEN ("188"), 3, 188},
4137 {D_STR_W_LEN ("189"), 3, 189},
4138 {D_STR_W_LEN ("190"), 3, 190},
4139 {D_STR_W_LEN ("191"), 3, 191},
4140 {D_STR_W_LEN ("192"), 3, 192},
4141 {D_STR_W_LEN ("193"), 3, 193},
4142 {D_STR_W_LEN ("194"), 3, 194},
4143 {D_STR_W_LEN ("195"), 3, 195},
4144 {D_STR_W_LEN ("196"), 3, 196},
4145 {D_STR_W_LEN ("197"), 3, 197},
4146 {D_STR_W_LEN ("198"), 3, 198},
4147 {D_STR_W_LEN ("199"), 3, 199},
4148 {D_STR_W_LEN ("200"), 3, 200},
4149 {D_STR_W_LEN ("201"), 3, 201},
4150 {D_STR_W_LEN ("202"), 3, 202},
4151 {D_STR_W_LEN ("203"), 3, 203},
4152 {D_STR_W_LEN ("204"), 3, 204},
4153 {D_STR_W_LEN ("205"), 3, 205},
4154 {D_STR_W_LEN ("206"), 3, 206},
4155 {D_STR_W_LEN ("207"), 3, 207},
4156 {D_STR_W_LEN ("208"), 3, 208},
4157 {D_STR_W_LEN ("209"), 3, 209},
4158 {D_STR_W_LEN ("210"), 3, 210},
4159 {D_STR_W_LEN ("211"), 3, 211},
4160 {D_STR_W_LEN ("212"), 3, 212},
4161 {D_STR_W_LEN ("213"), 3, 213},
4162 {D_STR_W_LEN ("214"), 3, 214},
4163 {D_STR_W_LEN ("215"), 3, 215},
4164 {D_STR_W_LEN ("216"), 3, 216},
4165 {D_STR_W_LEN ("217"), 3, 217},
4166 {D_STR_W_LEN ("218"), 3, 218},
4167 {D_STR_W_LEN ("219"), 3, 219},
4168 {D_STR_W_LEN ("220"), 3, 220},
4169 {D_STR_W_LEN ("221"), 3, 221},
4170 {D_STR_W_LEN ("222"), 3, 222},
4171 {D_STR_W_LEN ("223"), 3, 223},
4172 {D_STR_W_LEN ("224"), 3, 224},
4173 {D_STR_W_LEN ("225"), 3, 225},
4174 {D_STR_W_LEN ("226"), 3, 226},
4175 {D_STR_W_LEN ("227"), 3, 227},
4176 {D_STR_W_LEN ("228"), 3, 228},
4177 {D_STR_W_LEN ("229"), 3, 229},
4178 {D_STR_W_LEN ("230"), 3, 230},
4179 {D_STR_W_LEN ("231"), 3, 231},
4180 {D_STR_W_LEN ("232"), 3, 232},
4181 {D_STR_W_LEN ("233"), 3, 233},
4182 {D_STR_W_LEN ("234"), 3, 234},
4183 {D_STR_W_LEN ("235"), 3, 235},
4184 {D_STR_W_LEN ("236"), 3, 236},
4185 {D_STR_W_LEN ("237"), 3, 237},
4186 {D_STR_W_LEN ("238"), 3, 238},
4187 {D_STR_W_LEN ("239"), 3, 239},
4188 {D_STR_W_LEN ("240"), 3, 240},
4189 {D_STR_W_LEN ("241"), 3, 241},
4190 {D_STR_W_LEN ("242"), 3, 242},
4191 {D_STR_W_LEN ("243"), 3, 243},
4192 {D_STR_W_LEN ("244"), 3, 244},
4193 {D_STR_W_LEN ("245"), 3, 245},
4194 {D_STR_W_LEN ("246"), 3, 246},
4195 {D_STR_W_LEN ("247"), 3, 247},
4196 {D_STR_W_LEN ("248"), 3, 248},
4197 {D_STR_W_LEN ("249"), 3, 249},
4198 {D_STR_W_LEN ("250"), 3, 250},
4199 {D_STR_W_LEN ("251"), 3, 251},
4200 {D_STR_W_LEN ("252"), 3, 252},
4201 {D_STR_W_LEN ("253"), 3, 253},
4202 {D_STR_W_LEN ("254"), 3, 254},
4203 {D_STR_W_LEN ("255"), 3, 255}
4204};
4205
4206static const struct str_with_value duint8_w_values_p3[] = {
4207 {D_STR_W_LEN ("000"), 3, 0},
4208 {D_STR_W_LEN ("001"), 3, 1},
4209 {D_STR_W_LEN ("002"), 3, 2},
4210 {D_STR_W_LEN ("003"), 3, 3},
4211 {D_STR_W_LEN ("004"), 3, 4},
4212 {D_STR_W_LEN ("005"), 3, 5},
4213 {D_STR_W_LEN ("006"), 3, 6},
4214 {D_STR_W_LEN ("007"), 3, 7},
4215 {D_STR_W_LEN ("008"), 3, 8},
4216 {D_STR_W_LEN ("009"), 3, 9},
4217 {D_STR_W_LEN ("010"), 3, 10},
4218 {D_STR_W_LEN ("011"), 3, 11},
4219 {D_STR_W_LEN ("012"), 3, 12},
4220 {D_STR_W_LEN ("013"), 3, 13},
4221 {D_STR_W_LEN ("014"), 3, 14},
4222 {D_STR_W_LEN ("015"), 3, 15},
4223 {D_STR_W_LEN ("016"), 3, 16},
4224 {D_STR_W_LEN ("017"), 3, 17},
4225 {D_STR_W_LEN ("018"), 3, 18},
4226 {D_STR_W_LEN ("019"), 3, 19},
4227 {D_STR_W_LEN ("020"), 3, 20},
4228 {D_STR_W_LEN ("021"), 3, 21},
4229 {D_STR_W_LEN ("022"), 3, 22},
4230 {D_STR_W_LEN ("023"), 3, 23},
4231 {D_STR_W_LEN ("024"), 3, 24},
4232 {D_STR_W_LEN ("025"), 3, 25},
4233 {D_STR_W_LEN ("026"), 3, 26},
4234 {D_STR_W_LEN ("027"), 3, 27},
4235 {D_STR_W_LEN ("028"), 3, 28},
4236 {D_STR_W_LEN ("029"), 3, 29},
4237 {D_STR_W_LEN ("030"), 3, 30},
4238 {D_STR_W_LEN ("031"), 3, 31},
4239 {D_STR_W_LEN ("032"), 3, 32},
4240 {D_STR_W_LEN ("033"), 3, 33},
4241 {D_STR_W_LEN ("034"), 3, 34},
4242 {D_STR_W_LEN ("035"), 3, 35},
4243 {D_STR_W_LEN ("036"), 3, 36},
4244 {D_STR_W_LEN ("037"), 3, 37},
4245 {D_STR_W_LEN ("038"), 3, 38},
4246 {D_STR_W_LEN ("039"), 3, 39},
4247 {D_STR_W_LEN ("040"), 3, 40},
4248 {D_STR_W_LEN ("041"), 3, 41},
4249 {D_STR_W_LEN ("042"), 3, 42},
4250 {D_STR_W_LEN ("043"), 3, 43},
4251 {D_STR_W_LEN ("044"), 3, 44},
4252 {D_STR_W_LEN ("045"), 3, 45},
4253 {D_STR_W_LEN ("046"), 3, 46},
4254 {D_STR_W_LEN ("047"), 3, 47},
4255 {D_STR_W_LEN ("048"), 3, 48},
4256 {D_STR_W_LEN ("049"), 3, 49},
4257 {D_STR_W_LEN ("050"), 3, 50},
4258 {D_STR_W_LEN ("051"), 3, 51},
4259 {D_STR_W_LEN ("052"), 3, 52},
4260 {D_STR_W_LEN ("053"), 3, 53},
4261 {D_STR_W_LEN ("054"), 3, 54},
4262 {D_STR_W_LEN ("055"), 3, 55},
4263 {D_STR_W_LEN ("056"), 3, 56},
4264 {D_STR_W_LEN ("057"), 3, 57},
4265 {D_STR_W_LEN ("058"), 3, 58},
4266 {D_STR_W_LEN ("059"), 3, 59},
4267 {D_STR_W_LEN ("060"), 3, 60},
4268 {D_STR_W_LEN ("061"), 3, 61},
4269 {D_STR_W_LEN ("062"), 3, 62},
4270 {D_STR_W_LEN ("063"), 3, 63},
4271 {D_STR_W_LEN ("064"), 3, 64},
4272 {D_STR_W_LEN ("065"), 3, 65},
4273 {D_STR_W_LEN ("066"), 3, 66},
4274 {D_STR_W_LEN ("067"), 3, 67},
4275 {D_STR_W_LEN ("068"), 3, 68},
4276 {D_STR_W_LEN ("069"), 3, 69},
4277 {D_STR_W_LEN ("070"), 3, 70},
4278 {D_STR_W_LEN ("071"), 3, 71},
4279 {D_STR_W_LEN ("072"), 3, 72},
4280 {D_STR_W_LEN ("073"), 3, 73},
4281 {D_STR_W_LEN ("074"), 3, 74},
4282 {D_STR_W_LEN ("075"), 3, 75},
4283 {D_STR_W_LEN ("076"), 3, 76},
4284 {D_STR_W_LEN ("077"), 3, 77},
4285 {D_STR_W_LEN ("078"), 3, 78},
4286 {D_STR_W_LEN ("079"), 3, 79},
4287 {D_STR_W_LEN ("080"), 3, 80},
4288 {D_STR_W_LEN ("081"), 3, 81},
4289 {D_STR_W_LEN ("082"), 3, 82},
4290 {D_STR_W_LEN ("083"), 3, 83},
4291 {D_STR_W_LEN ("084"), 3, 84},
4292 {D_STR_W_LEN ("085"), 3, 85},
4293 {D_STR_W_LEN ("086"), 3, 86},
4294 {D_STR_W_LEN ("087"), 3, 87},
4295 {D_STR_W_LEN ("088"), 3, 88},
4296 {D_STR_W_LEN ("089"), 3, 89},
4297 {D_STR_W_LEN ("090"), 3, 90},
4298 {D_STR_W_LEN ("091"), 3, 91},
4299 {D_STR_W_LEN ("092"), 3, 92},
4300 {D_STR_W_LEN ("093"), 3, 93},
4301 {D_STR_W_LEN ("094"), 3, 94},
4302 {D_STR_W_LEN ("095"), 3, 95},
4303 {D_STR_W_LEN ("096"), 3, 96},
4304 {D_STR_W_LEN ("097"), 3, 97},
4305 {D_STR_W_LEN ("098"), 3, 98},
4306 {D_STR_W_LEN ("099"), 3, 99},
4307 {D_STR_W_LEN ("100"), 3, 100},
4308 {D_STR_W_LEN ("101"), 3, 101},
4309 {D_STR_W_LEN ("102"), 3, 102},
4310 {D_STR_W_LEN ("103"), 3, 103},
4311 {D_STR_W_LEN ("104"), 3, 104},
4312 {D_STR_W_LEN ("105"), 3, 105},
4313 {D_STR_W_LEN ("106"), 3, 106},
4314 {D_STR_W_LEN ("107"), 3, 107},
4315 {D_STR_W_LEN ("108"), 3, 108},
4316 {D_STR_W_LEN ("109"), 3, 109},
4317 {D_STR_W_LEN ("110"), 3, 110},
4318 {D_STR_W_LEN ("111"), 3, 111},
4319 {D_STR_W_LEN ("112"), 3, 112},
4320 {D_STR_W_LEN ("113"), 3, 113},
4321 {D_STR_W_LEN ("114"), 3, 114},
4322 {D_STR_W_LEN ("115"), 3, 115},
4323 {D_STR_W_LEN ("116"), 3, 116},
4324 {D_STR_W_LEN ("117"), 3, 117},
4325 {D_STR_W_LEN ("118"), 3, 118},
4326 {D_STR_W_LEN ("119"), 3, 119},
4327 {D_STR_W_LEN ("120"), 3, 120},
4328 {D_STR_W_LEN ("121"), 3, 121},
4329 {D_STR_W_LEN ("122"), 3, 122},
4330 {D_STR_W_LEN ("123"), 3, 123},
4331 {D_STR_W_LEN ("124"), 3, 124},
4332 {D_STR_W_LEN ("125"), 3, 125},
4333 {D_STR_W_LEN ("126"), 3, 126},
4334 {D_STR_W_LEN ("127"), 3, 127},
4335 {D_STR_W_LEN ("128"), 3, 128},
4336 {D_STR_W_LEN ("129"), 3, 129},
4337 {D_STR_W_LEN ("130"), 3, 130},
4338 {D_STR_W_LEN ("131"), 3, 131},
4339 {D_STR_W_LEN ("132"), 3, 132},
4340 {D_STR_W_LEN ("133"), 3, 133},
4341 {D_STR_W_LEN ("134"), 3, 134},
4342 {D_STR_W_LEN ("135"), 3, 135},
4343 {D_STR_W_LEN ("136"), 3, 136},
4344 {D_STR_W_LEN ("137"), 3, 137},
4345 {D_STR_W_LEN ("138"), 3, 138},
4346 {D_STR_W_LEN ("139"), 3, 139},
4347 {D_STR_W_LEN ("140"), 3, 140},
4348 {D_STR_W_LEN ("141"), 3, 141},
4349 {D_STR_W_LEN ("142"), 3, 142},
4350 {D_STR_W_LEN ("143"), 3, 143},
4351 {D_STR_W_LEN ("144"), 3, 144},
4352 {D_STR_W_LEN ("145"), 3, 145},
4353 {D_STR_W_LEN ("146"), 3, 146},
4354 {D_STR_W_LEN ("147"), 3, 147},
4355 {D_STR_W_LEN ("148"), 3, 148},
4356 {D_STR_W_LEN ("149"), 3, 149},
4357 {D_STR_W_LEN ("150"), 3, 150},
4358 {D_STR_W_LEN ("151"), 3, 151},
4359 {D_STR_W_LEN ("152"), 3, 152},
4360 {D_STR_W_LEN ("153"), 3, 153},
4361 {D_STR_W_LEN ("154"), 3, 154},
4362 {D_STR_W_LEN ("155"), 3, 155},
4363 {D_STR_W_LEN ("156"), 3, 156},
4364 {D_STR_W_LEN ("157"), 3, 157},
4365 {D_STR_W_LEN ("158"), 3, 158},
4366 {D_STR_W_LEN ("159"), 3, 159},
4367 {D_STR_W_LEN ("160"), 3, 160},
4368 {D_STR_W_LEN ("161"), 3, 161},
4369 {D_STR_W_LEN ("162"), 3, 162},
4370 {D_STR_W_LEN ("163"), 3, 163},
4371 {D_STR_W_LEN ("164"), 3, 164},
4372 {D_STR_W_LEN ("165"), 3, 165},
4373 {D_STR_W_LEN ("166"), 3, 166},
4374 {D_STR_W_LEN ("167"), 3, 167},
4375 {D_STR_W_LEN ("168"), 3, 168},
4376 {D_STR_W_LEN ("169"), 3, 169},
4377 {D_STR_W_LEN ("170"), 3, 170},
4378 {D_STR_W_LEN ("171"), 3, 171},
4379 {D_STR_W_LEN ("172"), 3, 172},
4380 {D_STR_W_LEN ("173"), 3, 173},
4381 {D_STR_W_LEN ("174"), 3, 174},
4382 {D_STR_W_LEN ("175"), 3, 175},
4383 {D_STR_W_LEN ("176"), 3, 176},
4384 {D_STR_W_LEN ("177"), 3, 177},
4385 {D_STR_W_LEN ("178"), 3, 178},
4386 {D_STR_W_LEN ("179"), 3, 179},
4387 {D_STR_W_LEN ("180"), 3, 180},
4388 {D_STR_W_LEN ("181"), 3, 181},
4389 {D_STR_W_LEN ("182"), 3, 182},
4390 {D_STR_W_LEN ("183"), 3, 183},
4391 {D_STR_W_LEN ("184"), 3, 184},
4392 {D_STR_W_LEN ("185"), 3, 185},
4393 {D_STR_W_LEN ("186"), 3, 186},
4394 {D_STR_W_LEN ("187"), 3, 187},
4395 {D_STR_W_LEN ("188"), 3, 188},
4396 {D_STR_W_LEN ("189"), 3, 189},
4397 {D_STR_W_LEN ("190"), 3, 190},
4398 {D_STR_W_LEN ("191"), 3, 191},
4399 {D_STR_W_LEN ("192"), 3, 192},
4400 {D_STR_W_LEN ("193"), 3, 193},
4401 {D_STR_W_LEN ("194"), 3, 194},
4402 {D_STR_W_LEN ("195"), 3, 195},
4403 {D_STR_W_LEN ("196"), 3, 196},
4404 {D_STR_W_LEN ("197"), 3, 197},
4405 {D_STR_W_LEN ("198"), 3, 198},
4406 {D_STR_W_LEN ("199"), 3, 199},
4407 {D_STR_W_LEN ("200"), 3, 200},
4408 {D_STR_W_LEN ("201"), 3, 201},
4409 {D_STR_W_LEN ("202"), 3, 202},
4410 {D_STR_W_LEN ("203"), 3, 203},
4411 {D_STR_W_LEN ("204"), 3, 204},
4412 {D_STR_W_LEN ("205"), 3, 205},
4413 {D_STR_W_LEN ("206"), 3, 206},
4414 {D_STR_W_LEN ("207"), 3, 207},
4415 {D_STR_W_LEN ("208"), 3, 208},
4416 {D_STR_W_LEN ("209"), 3, 209},
4417 {D_STR_W_LEN ("210"), 3, 210},
4418 {D_STR_W_LEN ("211"), 3, 211},
4419 {D_STR_W_LEN ("212"), 3, 212},
4420 {D_STR_W_LEN ("213"), 3, 213},
4421 {D_STR_W_LEN ("214"), 3, 214},
4422 {D_STR_W_LEN ("215"), 3, 215},
4423 {D_STR_W_LEN ("216"), 3, 216},
4424 {D_STR_W_LEN ("217"), 3, 217},
4425 {D_STR_W_LEN ("218"), 3, 218},
4426 {D_STR_W_LEN ("219"), 3, 219},
4427 {D_STR_W_LEN ("220"), 3, 220},
4428 {D_STR_W_LEN ("221"), 3, 221},
4429 {D_STR_W_LEN ("222"), 3, 222},
4430 {D_STR_W_LEN ("223"), 3, 223},
4431 {D_STR_W_LEN ("224"), 3, 224},
4432 {D_STR_W_LEN ("225"), 3, 225},
4433 {D_STR_W_LEN ("226"), 3, 226},
4434 {D_STR_W_LEN ("227"), 3, 227},
4435 {D_STR_W_LEN ("228"), 3, 228},
4436 {D_STR_W_LEN ("229"), 3, 229},
4437 {D_STR_W_LEN ("230"), 3, 230},
4438 {D_STR_W_LEN ("231"), 3, 231},
4439 {D_STR_W_LEN ("232"), 3, 232},
4440 {D_STR_W_LEN ("233"), 3, 233},
4441 {D_STR_W_LEN ("234"), 3, 234},
4442 {D_STR_W_LEN ("235"), 3, 235},
4443 {D_STR_W_LEN ("236"), 3, 236},
4444 {D_STR_W_LEN ("237"), 3, 237},
4445 {D_STR_W_LEN ("238"), 3, 238},
4446 {D_STR_W_LEN ("239"), 3, 239},
4447 {D_STR_W_LEN ("240"), 3, 240},
4448 {D_STR_W_LEN ("241"), 3, 241},
4449 {D_STR_W_LEN ("242"), 3, 242},
4450 {D_STR_W_LEN ("243"), 3, 243},
4451 {D_STR_W_LEN ("244"), 3, 244},
4452 {D_STR_W_LEN ("245"), 3, 245},
4453 {D_STR_W_LEN ("246"), 3, 246},
4454 {D_STR_W_LEN ("247"), 3, 247},
4455 {D_STR_W_LEN ("248"), 3, 248},
4456 {D_STR_W_LEN ("249"), 3, 249},
4457 {D_STR_W_LEN ("250"), 3, 250},
4458 {D_STR_W_LEN ("251"), 3, 251},
4459 {D_STR_W_LEN ("252"), 3, 252},
4460 {D_STR_W_LEN ("253"), 3, 253},
4461 {D_STR_W_LEN ("254"), 3, 254},
4462 {D_STR_W_LEN ("255"), 3, 255}
4463};
4464
4465
4466static const struct str_with_value *duint8_w_values_p[3] =
4467{duint8_w_values_p1, duint8_w_values_p2, duint8_w_values_p3};
4468
4469int
4470check_str_from_uint8_pad (void)
4471{
4472 int i;
4473 int pad;
4474 int t_failed = 0;
4475
4476 if ((256 != sizeof(duint8_w_values_p1) / sizeof(duint8_w_values_p1[0])) ||
4477 (256 != sizeof(duint8_w_values_p2) / sizeof(duint8_w_values_p2[0])) ||
4478 (256 != sizeof(duint8_w_values_p3) / sizeof(duint8_w_values_p3[0])))
4479 {
4480 fprintf (stderr,
4481 "ERROR: wrong number of items in duint8_w_values_p*.\n");
4482 return -1;
4483 }
4484 for (pad = 0; pad <= 3; pad++)
4485 {
4486 int table_num = pad - 1;
4487 if (0 == pad)
4488 table_num = 0;
4489
4490 for (i = 0; i <= 255; i++)
4491 {
4492 const struct str_with_value *const t = duint8_w_values_p[table_num] + i;
4493 size_t b_size;
4494 size_t rs;
4495 char buf[8];
4496
4497 if (t->str.len < t->num_of_digt)
4498 {
4499 fprintf (stderr,
4500 "ERROR: dstrs_w_values[%u] has wrong num_of_digt (%u): num_of_digt is expected"
4501 " to be less or equal to str.len (%u).\n",
4502 (unsigned int) i, (unsigned int) t->num_of_digt, (unsigned
4503 int) t->str.
4504 len);
4505 return -1;
4506 }
4507 if (sizeof(buf) < t->str.len + 1)
4508 {
4509 fprintf (stderr,
4510 "ERROR: dstrs_w_values[%u] has too long (%u) string, "
4511 "size of 'buf' should be increased.\n",
4512 (unsigned int) i, (unsigned int) t->str.len);
4513 return -1;
4514 }
4515 for (b_size = 0; b_size <= t->str.len + 1; ++b_size)
4516 {
4517 /* fill buffer with pseudo-random values */
4518 memset (buf, '#', sizeof(buf));
4519
4520 rs = MHD_uint8_to_str_pad (t->val, pad, buf, b_size);
4521
4522 if (t->num_of_digt > b_size)
4523 {
4524 /* Must fail, buffer is too small for result */
4525 if (0 != rs)
4526 {
4527 t_failed++;
4528 fprintf (stderr,
4529 "FAILED: MHD_uint8_to_str_pad(%" PRIu64 ", %d, -> buf,"
4530 " %d) returned %" PRIuPTR
4531 ", while expecting 0.\n", t->val, (int) pad, (int) b_size,
4532 (intptr_t) rs);
4533 }
4534 }
4535 else
4536 {
4537 if (t->num_of_digt != rs)
4538 {
4539 t_failed++;
4540 fprintf (stderr,
4541 "FAILED: MHD_uint8_to_str_pad(%" PRIu64 ", %d, -> buf,"
4542 " %d) returned %" PRIuPTR
4543 ", while expecting %d.\n", t->val, (int) pad,
4544 (int) b_size, (intptr_t) rs, (int) t->num_of_digt);
4545 }
4546 else if (0 != memcmp (buf, t->str.str, t->num_of_digt))
4547 {
4548 t_failed++;
4549 fprintf (stderr,
4550 "FAILED: MHD_uint8_to_str_pad(%" PRIu64 ", %d, "
4551 "-> \"%.*s\", %d) returned %" PRIuPTR ".\n",
4552 t->val, (int) pad, (int) rs, buf,
4553 (int) b_size, (intptr_t) rs);
4554 }
4555 else if (0 != memcmp (buf + rs, "########", sizeof(buf) - rs))
4556 {
4557 t_failed++;
4558 fprintf (stderr,
4559 "FAILED: MHD_uint8_to_str_pad(%" PRIu64 ", %d,"
4560 " -> \"%.*s\", %d) returned %" PRIuPTR
4561 " and touched data after the resulting string.\n",
4562 t->val, (int) pad, (int) rs, buf, (int) b_size,
4563 (intptr_t) rs);
4564 }
4565 }
4566 }
4567 }
4568 }
4569 if ((verbose > 1) && (0 == t_failed))
4570 printf ("PASSED: MHD_uint8_to_str_pad.\n");
4571
4572 return t_failed;
4573}
4574
4575
3688int 4576int
3689run_str_from_X_tests (void) 4577run_str_from_X_tests (void)
3690{ 4578{
3691 int str_from_uint16; 4579 int str_from_uint16;
3692 int str_from_uint64; 4580 int str_from_uint64;
3693 int strx_from_uint32; 4581 int strx_from_uint32;
4582 int str_from_uint8_pad;
3694 int failures; 4583 int failures;
3695 4584
3696 failures = 0; 4585 failures = 0;
@@ -3728,7 +4617,6 @@ run_str_from_X_tests (void)
3728 else if (verbose > 1) 4617 else if (verbose > 1)
3729 printf ( 4618 printf (
3730 "PASSED: testcase check_str_from_uint16() successfully passed.\n\n"); 4619 "PASSED: testcase check_str_from_uint16() successfully passed.\n\n");
3731
3732 strx_from_uint32 = check_strx_from_uint32 (); 4620 strx_from_uint32 = check_strx_from_uint32 ();
3733 if (strx_from_uint32 != 0) 4621 if (strx_from_uint32 != 0)
3734 { 4622 {
@@ -3746,6 +4634,23 @@ run_str_from_X_tests (void)
3746 printf ( 4634 printf (
3747 "PASSED: testcase check_strx_from_uint32() successfully passed.\n\n"); 4635 "PASSED: testcase check_strx_from_uint32() successfully passed.\n\n");
3748 4636
4637 str_from_uint8_pad = check_str_from_uint8_pad ();
4638 if (str_from_uint8_pad != 0)
4639 {
4640 if (str_from_uint8_pad < 0)
4641 {
4642 fprintf (stderr,
4643 "ERROR: test internal error in check_str_from_uint8_pad().\n");
4644 return 99;
4645 }
4646 fprintf (stderr,
4647 "FAILED: testcase check_str_from_uint8_pad() failed.\n\n");
4648 failures += str_from_uint8_pad;
4649 }
4650 else if (verbose > 1)
4651 printf (
4652 "PASSED: testcase check_str_from_uint8_pad() successfully passed.\n\n");
4653
3749 if (failures) 4654 if (failures)
3750 { 4655 {
3751 if (verbose > 0) 4656 if (verbose > 0)