Lines Matching +full:src +full:- +full:2
2 * parseutil.c - parse utilities for string and wire conversion
4 * (c) NLnet Labs, 2004-2006
24 while (table->name != NULL) { in sldns_lookup_by_name()
25 if (strcasecmp(name, table->name) == 0) in sldns_lookup_by_name()
35 while (table->name != NULL) { in sldns_lookup_by_id()
36 if (table->id == id) in sldns_lookup_by_id()
49 #define LDNS_DIV(x,y) (((x) % (y) < 0) ? ((x) / (y) - 1 ) : ((x) / (y)))
61 --y1; in leap_days()
62 --y2; in leap_days()
63 return (LDNS_DIV(y2, 4) - LDNS_DIV(y1, 4)) - in leap_days()
64 (LDNS_DIV(y2, 100) - LDNS_DIV(y1, 100)) + in leap_days()
65 (LDNS_DIV(y2, 400) - LDNS_DIV(y1, 400)); in leap_days()
74 int year = 1900 + tm->tm_year; in sldns_mktime_from_utc()
75 time_t days = 365 * ((time_t) year - 1970) + leap_days(1970, year); in sldns_mktime_from_utc()
81 for (i = 0; i < tm->tm_mon; ++i) { in sldns_mktime_from_utc()
84 if (tm->tm_mon > 1 && is_leap_year(year)) { in sldns_mktime_from_utc()
87 days += tm->tm_mday - 1; in sldns_mktime_from_utc()
89 hours = days * 24 + tm->tm_hour; in sldns_mktime_from_utc()
90 minutes = hours * 60 + tm->tm_min; in sldns_mktime_from_utc()
91 seconds = minutes * 60 + tm->tm_sec; in sldns_mktime_from_utc()
106 days -= (new_year - year) * 365; in sldns_year_and_yday_from_days_since_epoch()
107 days -= leap_days(year, new_year); in sldns_year_and_yday_from_days_since_epoch()
110 result->tm_year = year; in sldns_year_and_yday_from_days_since_epoch()
111 result->tm_yday = (int) days; in sldns_year_and_yday_from_days_since_epoch()
122 int idays = result->tm_yday; in sldns_mon_and_mday_from_year_and_yday()
123 const int *mon_lengths = is_leap_year(result->tm_year) ? in sldns_mon_and_mday_from_year_and_yday()
126 result->tm_mon = 0; in sldns_mon_and_mday_from_year_and_yday()
127 while (idays >= mon_lengths[result->tm_mon]) { in sldns_mon_and_mday_from_year_and_yday()
128 idays -= mon_lengths[result->tm_mon++]; in sldns_mon_and_mday_from_year_and_yday()
130 result->tm_mday = idays + 1; in sldns_mon_and_mday_from_year_and_yday()
136 result->tm_wday = 4 /* 1-1-1970 was a thursday */ in sldns_wday_from_year_and_yday()
137 + LDNS_MOD((result->tm_year - 1970), 7) * LDNS_MOD(365, 7) in sldns_wday_from_year_and_yday()
138 + leap_days(1970, result->tm_year) in sldns_wday_from_year_and_yday()
139 + result->tm_yday; in sldns_wday_from_year_and_yday()
140 result->tm_wday = LDNS_MOD(result->tm_wday, 7); in sldns_wday_from_year_and_yday()
141 if (result->tm_wday < 0) { in sldns_wday_from_year_and_yday()
142 result->tm_wday += 7; in sldns_wday_from_year_and_yday()
149 result->tm_isdst = 0; in sldns_gmtime64_r()
150 result->tm_sec = (int) LDNS_MOD(clock, 60); in sldns_gmtime64_r()
152 result->tm_min = (int) LDNS_MOD(clock, 60); in sldns_gmtime64_r()
154 result->tm_hour = (int) LDNS_MOD(clock, 24); in sldns_gmtime64_r()
160 result->tm_year -= 1900; in sldns_gmtime64_r()
170 int32_t offset = (int32_t)((uint32_t) time - (uint32_t) now); in sldns_serial_arithmetics_time()
192 case '2': return 2; in sldns_hexdigit_to_int()
207 return -1; in sldns_hexdigit_to_int()
225 case '-': in sldns_str2period()
227 sign = -1; in sldns_str2period()
241 if(seconds > maxint-i) { in sldns_str2period()
250 if(i > maxint/60 || seconds > maxint-(i*60)) { in sldns_str2period()
259 if(i > maxint/(60*60) || seconds > maxint-(i*60*60)) { in sldns_str2period()
268 if(i > maxint/(60*60*24) || seconds > maxint-(i*60*60*24)) { in sldns_str2period()
277 if(i > maxint/(60*60*24*7) || seconds > maxint-(i*60*60*24*7)) { in sldns_str2period()
286 case '2': in sldns_str2period()
294 if(i > maxint/10 || i*10 > maxint - (**endptr - '0')) { in sldns_str2period()
299 i += (**endptr - '0'); in sldns_str2period()
302 if(seconds > maxint-i) { in sldns_str2period()
311 if(seconds > maxint-i) { in sldns_str2period()
327 (*str_p)[2] && isdigit((unsigned char)(*str_p)[2])) { in sldns_parse_escape()
329 val = (uint16_t)(((*str_p)[0] - '0') * 100 + in sldns_parse_escape()
330 ((*str_p)[1] - '0') * 10 + in sldns_parse_escape()
331 ((*str_p)[2] - '0')); in sldns_parse_escape()
368 return src_data_length == 0 ? 0 : ((src_data_length - 1) / 5 + 1) * 8; in sldns_b32_ntop_calculate_size()
373 return ((src_data_length + 3) * 8 / 5) - 4; in sldns_b32_ntop_calculate_size_no_padding()
377 sldns_b32_ntop_base(const uint8_t* src, size_t src_sz, char* dst, size_t dst_sz, in sldns_b32_ntop_base() argument
394 return -1; in sldns_b32_ntop_base()
402 dst[0] = b32[(src[0] ) >> 3]; in sldns_b32_ntop_base()
405 dst[1] = b32[(src[0] & 0x07) << 2 | src[1] >> 6]; in sldns_b32_ntop_base()
408 dst[2] = b32[(src[1] & 0x3e) >> 1]; in sldns_b32_ntop_base()
411 dst[3] = b32[(src[1] & 0x01) << 4 | src[2] >> 4]; in sldns_b32_ntop_base()
414 dst[4] = b32[(src[2] & 0x0f) << 1 | src[3] >> 7]; in sldns_b32_ntop_base()
417 dst[5] = b32[(src[3] & 0x7c) >> 2]; in sldns_b32_ntop_base()
420 dst[6] = b32[(src[3] & 0x03) << 3 | src[4] >> 5]; in sldns_b32_ntop_base()
423 dst[7] = b32[(src[4] & 0x1f) ]; in sldns_b32_ntop_base()
425 src_sz -= 5; in sldns_b32_ntop_base()
426 src += 5; in sldns_b32_ntop_base()
432 dst[6] = b32[(src[3] & 0x03) << 3]; in sldns_b32_ntop_base()
435 dst[5] = b32[(src[3] & 0x7c) >> 2]; in sldns_b32_ntop_base()
438 c = src[3] >> 7 ; in sldns_b32_ntop_base()
441 case 3: dst[4] = b32[(src[2] & 0x0f) << 1 | c]; in sldns_b32_ntop_base()
444 c = src[2] >> 4 ; in sldns_b32_ntop_base()
447 case 2: dst[3] = b32[(src[1] & 0x01) << 4 | c]; in sldns_b32_ntop_base()
450 dst[2] = b32[(src[1] & 0x3e) >> 1]; in sldns_b32_ntop_base()
453 c = src[1] >> 6 ; in sldns_b32_ntop_base()
456 case 1: dst[1] = b32[(src[0] & 0x07) << 2 | c]; in sldns_b32_ntop_base()
459 dst[0] = b32[ src[0] >> 3]; in sldns_b32_ntop_base()
464 case 1: dst[2] = '='; in sldns_b32_ntop_base()
468 case 2: dst[4] = '='; in sldns_b32_ntop_base()
482 sldns_b32_ntop(const uint8_t* src, size_t src_sz, char* dst, size_t dst_sz) in sldns_b32_ntop() argument
484 return sldns_b32_ntop_base(src, src_sz, dst, dst_sz, 0, 1); in sldns_b32_ntop()
488 sldns_b32_ntop_extended_hex(const uint8_t* src, size_t src_sz, in sldns_b32_ntop_extended_hex() argument
491 return sldns_b32_ntop_base(src, src_sz, dst, dst_sz, 1, 1); in sldns_b32_ntop_extended_hex()
500 sldns_b32_pton_base(const char* src, size_t src_sz, uint8_t* dst, size_t dst_sz, in sldns_b32_pton_base() argument
513 ch = *src++; in sldns_b32_pton_base()
514 --src_sz; in sldns_b32_pton_base()
524 buf[i] = (uint8_t)ch - '0'; in sldns_b32_pton_base()
526 buf[i] = (uint8_t)ch - 'a' + 10; in sldns_b32_pton_base()
528 buf[i] = (uint8_t)ch - 'A' + 10; in sldns_b32_pton_base()
530 return -1; in sldns_b32_pton_base()
533 buf[i] = (uint8_t)ch - 'a'; in sldns_b32_pton_base()
535 buf[i] = (uint8_t)ch - 'A'; in sldns_b32_pton_base()
536 else if (ch >= '2' && ch <= '7') in sldns_b32_pton_base()
537 buf[i] = (uint8_t)ch - '2' + 26; in sldns_b32_pton_base()
539 return -1; in sldns_b32_pton_base()
547 return -1; in sldns_b32_pton_base()
551 dst[0] = buf[0] << 3 | buf[1] >> 2; in sldns_b32_pton_base()
556 dst[1] = buf[1] << 6 | buf[2] << 1 | buf[3] >> 4; in sldns_b32_pton_base()
560 dst[2] = buf[3] << 4 | buf[4] >> 1; in sldns_b32_pton_base()
565 dst[3] = buf[4] << 7 | buf[5] << 2 | buf[6] >> 3; in sldns_b32_pton_base()
572 dst_sz -= 5; in sldns_b32_pton_base()
578 if (dst_sz < (i + 1) / 2) in sldns_b32_pton_base()
579 return -1; in sldns_b32_pton_base()
585 dst[3] = buf[4] << 7 | buf[5] << 2 | buf[6] >> 3; in sldns_b32_pton_base()
591 dst[2] = buf[3] << 4 | buf[4] >> 1; in sldns_b32_pton_base()
598 dst[1] = buf[1] << 6 | buf[2] << 1 | buf[3] >> 4; in sldns_b32_pton_base()
602 case 2: /* .....111 11...... ........ ........ ........ */ in sldns_b32_pton_base()
604 dst[0] = buf[0] << 3 | buf[1] >> 2; in sldns_b32_pton_base()
609 return -1; in sldns_b32_pton_base()
611 dst += (i + 1) / 2; in sldns_b32_pton_base()
616 return -1; in sldns_b32_pton_base()
618 /* One down, 8 - i - 1 more to come... */ in sldns_b32_pton_base()
619 for (i = 8 - i - 1; i > 0; i--) { in sldns_b32_pton_base()
623 return -1; in sldns_b32_pton_base()
624 ch = *src++; in sldns_b32_pton_base()
625 src_sz--; in sldns_b32_pton_base()
630 return -1; in sldns_b32_pton_base()
634 return dst - start; in sldns_b32_pton_base()
638 sldns_b32_pton(const char* src, size_t src_sz, uint8_t* dst, size_t dst_sz) in sldns_b32_pton() argument
640 return sldns_b32_pton_base(src, src_sz, dst, dst_sz, 0, 1); in sldns_b32_pton()
644 sldns_b32_pton_extended_hex(const char* src, size_t src_sz, in sldns_b32_pton_extended_hex() argument
647 return sldns_b32_pton_base(src, src_sz, dst, dst_sz, 1, 1); in sldns_b32_pton_extended_hex()
652 return ((((srcsize + 2) / 3) * 4) + 1); in sldns_b64_ntop_calculate_size()
657 * The encoding process represents 24-bit groups of input bits as output
659 * 24-bit input group is formed by concatenating 3 8-bit input groups.
660 * These 24 bits are then treated as 4 concatenated 6-bit groups, each
665 static int sldns_b64_ntop_base(uint8_t const *src, size_t srclength, in sldns_b64_ntop_base() argument
673 "456789-_"; in sldns_b64_ntop_base()
678 return -1; in sldns_b64_ntop_base()
681 if(o+4 > targsize) return -1; in sldns_b64_ntop_base()
682 target[o] = b64[src[i] >> 2]; in sldns_b64_ntop_base()
683 target[o+1] = b64[ ((src[i]&0x03)<<4) | (src[i+1]>>4) ]; in sldns_b64_ntop_base()
684 target[o+2] = b64[ ((src[i+1]&0x0f)<<2) | (src[i+2]>>6) ]; in sldns_b64_ntop_base()
685 target[o+3] = b64[ (src[i+2]&0x3f) ]; in sldns_b64_ntop_base()
690 switch(srclength - i) { in sldns_b64_ntop_base()
691 case 2: in sldns_b64_ntop_base()
693 target[o] = b64[src[i] >> 2]; in sldns_b64_ntop_base()
694 target[o+1] = b64[ ((src[i]&0x03)<<4) | (src[i+1]>>4) ]; in sldns_b64_ntop_base()
695 target[o+2] = b64[ ((src[i+1]&0x0f)<<2) ]; in sldns_b64_ntop_base()
698 /* i += 2; */ in sldns_b64_ntop_base()
706 target[o] = b64[src[i] >> 2]; in sldns_b64_ntop_base()
707 target[o+1] = b64[ ((src[i]&0x03)<<4) ]; in sldns_b64_ntop_base()
709 target[o+2] = pad64; in sldns_b64_ntop_base()
714 o += 2; in sldns_b64_ntop_base()
723 if(o+1 > targsize) return -1; in sldns_b64_ntop_base()
728 int sldns_b64_ntop(uint8_t const *src, size_t srclength, char *target, in sldns_b64_ntop() argument
731 return sldns_b64_ntop_base(src, srclength, target, targsize, in sldns_b64_ntop()
735 int sldns_b64url_ntop(uint8_t const *src, size_t srclength, char *target, in sldns_b64url_ntop() argument
738 return sldns_b64_ntop_base(src, srclength, target, targsize, in sldns_b64url_ntop()
748 static int sldns_b64_pton_base(char const *src, size_t srcsize, uint8_t *target, in sldns_b64_pton_base() argument
752 const char* s = src; in sldns_b64_pton_base()
763 and use d-b64; in sldns_b64_pton_base()
766 srcsize--; in sldns_b64_pton_base()
768 d -= 'A'; in sldns_b64_pton_base()
770 d = d - 'a' + 26; in sldns_b64_pton_base()
772 d = d - '0' + 52; in sldns_b64_pton_base()
775 else if(base64url && d == '-') in sldns_b64_pton_base()
794 if((incount == 2 || in sldns_b64_pton_base()
795 (incount == 4 && in[3] == pad64 && in[2] == pad64))) { /* A B = = */ in sldns_b64_pton_base()
797 return -1; in sldns_b64_pton_base()
798 target[o] = (in[0]<<2) | ((in[1]&0x30)>>4); in sldns_b64_pton_base()
803 if(o+2 > targsize) in sldns_b64_pton_base()
804 return -1; in sldns_b64_pton_base()
805 target[o] = (in[0]<<2) | ((in[1]&0x30)>>4); in sldns_b64_pton_base()
806 target[o+1]= ((in[1]&0x0f)<<4) | ((in[2]&0x3c)>>2); in sldns_b64_pton_base()
807 o += 2; in sldns_b64_pton_base()
811 return -1; in sldns_b64_pton_base()
813 target[o] = (in[0]<<2) | ((in[1]&0x30)>>4); in sldns_b64_pton_base()
814 target[o+1]= ((in[1]&0x0f)<<4) | ((in[2]&0x3c)>>2); in sldns_b64_pton_base()
815 target[o+2]= ((in[2]&0x03)<<6) | in[3]; in sldns_b64_pton_base()
823 int sldns_b64_pton(char const *src, uint8_t *target, size_t targsize) in sldns_b64_pton() argument
825 return sldns_b64_pton_base(src, 0, target, targsize, 0); in sldns_b64_pton()
828 int sldns_b64url_pton(char const *src, size_t srcsize, uint8_t *target, in sldns_b64url_pton() argument
834 return sldns_b64_pton_base(src, srcsize, target, targsize, 1); in sldns_b64url_pton()
837 int sldns_b64_contains_nonurl(char const *src, size_t srcsize) in sldns_b64_contains_nonurl() argument
839 const char* s = src; in sldns_b64_contains_nonurl()
842 srcsize--; in sldns_b64_contains_nonurl()