• Home
  • Raw
  • Download

Lines Matching refs:md

49 #define NLBLOCK md             /* Block containing newline information */
85 md->mark = markptr; \
120 pchars(const uschar *p, int length, BOOL is_subject, match_data *md) in pchars() argument
123 if (is_subject && length > md->end_subject - p) length = md->end_subject - p; in pchars()
149 match_ref(int offset, register USPTR eptr, int length, match_data *md, in match_ref() argument
152 USPTR p = md->start_subject + md->offset_vector[offset]; in match_ref()
155 if (eptr >= md->end_subject) in match_ref()
160 pchars(eptr, length, TRUE, md); in match_ref()
163 pchars(p, length, FALSE, md); in match_ref()
169 if (length > md->end_subject - eptr) return FALSE; in match_ref()
179 if (md->utf8) in match_ref()
198 { if (md->lcc[*p++] != md->lcc[*eptr++]) return FALSE; } in match_ref()
425 if (md->partial != 0 && eptr >= md->end_subject && \
426 eptr > md->start_used_ptr) \
428 md->hitend = TRUE; \
429 if (md->partial > 1) MRRETURN(PCRE_ERROR_PARTIAL); \
433 if (md->partial != 0 && eptr > md->start_used_ptr) \
435 md->hitend = TRUE; \
436 if (md->partial > 1) MRRETURN(PCRE_ERROR_PARTIAL); \
471 const uschar *markptr, int offset_top, match_data *md, unsigned long int ims, in match() argument
651 utf8 = md->utf8; /* Local copy of the flag */ in match()
659 if (md->match_call_count++ >= md->match_limit) RRETURN(PCRE_ERROR_MATCHLIMIT); in match()
660 if (rdepth >= md->match_limit_recursion) RRETURN(PCRE_ERROR_RECURSIONLIMIT); in match()
691 RMATCH(eptr, ecode + _pcre_OP_lengths[*ecode] + ecode[1], offset_top, md, in match()
702 strcmp((char *)markptr, (char *)(md->start_match_ptr)) == 0) in match()
704 md->start_match_ptr = eptr; in match()
708 if (md->mark == NULL) md->mark = markptr; in match()
717 RMATCH(eptr, ecode + _pcre_OP_lengths[*ecode], offset_top, md, in match()
728 RMATCH(eptr, ecode + _pcre_OP_lengths[*ecode], offset_top, md, in match()
734 RMATCH(eptr, ecode + _pcre_OP_lengths[*ecode] + ecode[1], offset_top, md, in match()
737 md->mark = ecode + 2; in match()
743 RMATCH(eptr, ecode + _pcre_OP_lengths[*ecode], offset_top, md, in match()
747 md->start_match_ptr = eptr; /* Pass back current position */ in match()
751 RMATCH(eptr, ecode + _pcre_OP_lengths[*ecode] + ecode[1], offset_top, md, in match()
761 md->start_match_ptr = ecode + 2; in match()
770 RMATCH(eptr, ecode + _pcre_OP_lengths[*ecode], offset_top, md, in match()
773 md->start_match_ptr = ecode - GET(ecode, 1); in match()
778 offset_top, md, ims, eptrb, flags, RM58); in match()
780 md->start_match_ptr = ecode - GET(ecode, 1); in match()
781 md->mark = ecode + LINK_SIZE + 2; in match()
806 pchars(eptr, 16, TRUE, md); in match()
810 if (offset < md->offset_max) in match()
812 save_offset1 = md->offset_vector[offset]; in match()
813 save_offset2 = md->offset_vector[offset+1]; in match()
814 save_offset3 = md->offset_vector[md->offset_end - number]; in match()
815 save_capture_last = md->capture_last; in match()
818 md->offset_vector[md->offset_end - number] = in match()
819 (int)(eptr - md->start_subject); in match()
824 RMATCH(eptr, ecode + _pcre_OP_lengths[*ecode], offset_top, md, in match()
827 (rrc != MATCH_THEN || md->start_match_ptr != ecode)) in match()
829 md->capture_last = save_capture_last; in match()
836 md->offset_vector[offset] = save_offset1; in match()
837 md->offset_vector[offset+1] = save_offset2; in match()
838 md->offset_vector[md->offset_end - number] = save_offset3; in match()
840 if (rrc != MATCH_THEN) md->mark = markptr; in match()
878 RMATCH(eptr, ecode + _pcre_OP_lengths[*ecode], offset_top, md, ims, in match()
880 if (rrc == MATCH_NOMATCH) md->mark = markptr; in match()
887 RMATCH(eptr, ecode + _pcre_OP_lengths[*ecode], offset_top, md, ims, in match()
890 (rrc != MATCH_THEN || md->start_match_ptr != ecode)) in match()
916 cb.offset_vector = md->offset_vector; in match()
917 cb.subject = (PCRE_SPTR)md->start_subject; in match()
918 cb.subject_length = (int)(md->end_subject - md->start_subject); in match()
919 cb.start_match = (int)(mstart - md->start_subject); in match()
920 cb.current_position = (int)(eptr - md->start_subject); in match()
924 cb.capture_last = md->capture_last; in match()
925 cb.callout_data = md->callout_data; in match()
938 if (md->recursive == NULL) /* Not recursing => FALSE */ in match()
946 condition = (recno == RREF_ANY || recno == md->recursive->group_num); in match()
955 uschar *slotA = md->name_table; in match()
956 for (i = 0; i < md->name_count; i++) in match()
959 slotA += md->name_entry_size; in match()
966 if (i < md->name_count) in match()
969 while (slotB > md->name_table) in match()
971 slotB -= md->name_entry_size; in match()
974 condition = GET2(slotB, 0) == md->recursive->group_num; in match()
985 for (i++; i < md->name_count; i++) in match()
987 slotB += md->name_entry_size; in match()
990 condition = GET2(slotB, 0) == md->recursive->group_num; in match()
1008 condition = offset < offset_top && md->offset_vector[offset] >= 0; in match()
1018 uschar *slotA = md->name_table; in match()
1020 for (i = 0; i < md->name_count; i++) in match()
1023 slotA += md->name_entry_size; in match()
1030 if (i < md->name_count) in match()
1033 while (slotB > md->name_table) in match()
1035 slotB -= md->name_entry_size; in match()
1040 md->offset_vector[offset] >= 0; in match()
1051 for (i++; i < md->name_count; i++) in match()
1053 slotB += md->name_entry_size; in match()
1058 md->offset_vector[offset] >= 0; in match()
1084 RMATCH(eptr, ecode + 1 + LINK_SIZE, offset_top, md, ims, NULL, in match()
1093 (rrc != MATCH_THEN || md->start_match_ptr != ecode)) in match()
1114 RMATCH(eptr, ecode, offset_top, md, ims, eptrb, match_cbegroup, RM49); in match()
1142 md->capture_last = number; in match()
1143 if (offset >= md->offset_max) md->offset_overflow = TRUE; else in match()
1145 md->offset_vector[offset] = in match()
1146 md->offset_vector[md->offset_end - number]; in match()
1147 md->offset_vector[offset+1] = (int)(eptr - md->start_subject); in match()
1160 if (md->recursive != NULL && md->recursive->group_num == 0) in match()
1162 recursion_info *rec = md->recursive; in match()
1164 md->recursive = rec->prevrec; in match()
1165 memmove(md->offset_vector, rec->offset_save, in match()
1179 (md->notempty || in match()
1180 (md->notempty_atstart && in match()
1181 mstart == md->start_subject + md->start_offset))) in match()
1186 md->end_match_ptr = eptr; /* Record where we ended */ in match()
1187 md->end_offset_top = offset_top; /* and how many extracts were taken */ in match()
1188 md->start_match_ptr = mstart; /* and the start (\K can modify) */ in match()
1214 RMATCH(eptr, ecode + 1 + LINK_SIZE, offset_top, md, ims, NULL, 0, in match()
1218 mstart = md->start_match_ptr; /* In case \K reset it */ in match()
1222 (rrc != MATCH_THEN || md->start_match_ptr != ecode)) in match()
1238 offset_top = md->end_offset_top; in match()
1249 RMATCH(eptr, ecode + 1 + LINK_SIZE, offset_top, md, ims, NULL, 0, in match()
1258 (rrc != MATCH_THEN || md->start_match_ptr != ecode)) in match()
1282 if (eptr < md->start_subject) MRRETURN(MATCH_NOMATCH); in match()
1293 if (eptr < md->start_subject) MRRETURN(MATCH_NOMATCH); in match()
1298 if (eptr < md->start_used_ptr) md->start_used_ptr = eptr; in match()
1312 cb.offset_vector = md->offset_vector; in match()
1313 cb.subject = (PCRE_SPTR)md->start_subject; in match()
1314 cb.subject_length = (int)(md->end_subject - md->start_subject); in match()
1315 cb.start_match = (int)(mstart - md->start_subject); in match()
1316 cb.current_position = (int)(eptr - md->start_subject); in match()
1320 cb.capture_last = md->capture_last; in match()
1321 cb.callout_data = md->callout_data; in match()
1349 callpat = md->start_code + GET(ecode, 1); in match()
1350 new_recursive.group_num = (callpat == md->start_code)? 0 : in match()
1355 new_recursive.prevrec = md->recursive; in match()
1356 md->recursive = &new_recursive; in match()
1365 new_recursive.saved_max = md->offset_end; in match()
1375 memcpy(new_recursive.offset_save, md->offset_vector, in match()
1387 md, ims, eptrb, flags, RM6); in match()
1391 md->recursive = new_recursive.prevrec; in match()
1397 (rrc != MATCH_THEN || md->start_match_ptr != ecode)) in match()
1405 md->recursive = &new_recursive; in match()
1406 memcpy(md->offset_vector, new_recursive.offset_save, in match()
1413 md->recursive = new_recursive.prevrec; in match()
1434 RMATCH(eptr, ecode + 1 + LINK_SIZE, offset_top, md, ims, eptrb, 0, RM7); in match()
1437 mstart = md->start_match_ptr; in match()
1441 (rrc != MATCH_THEN || md->start_match_ptr != ecode)) in match()
1456 offset_top = md->end_offset_top; in match()
1457 eptr = md->end_match_ptr; in match()
1485 RMATCH(eptr, ecode + 1 + LINK_SIZE, offset_top, md, ims, eptrb, 0, RM8); in match()
1493 RMATCH(eptr, prev, offset_top, md, ims, eptrb, match_cbegroup, RM9); in match()
1517 RMATCH(eptr, next, offset_top, md, ims, eptrb, 0, RM10); in match()
1528 RMATCH(eptr, next + 1+LINK_SIZE, offset_top, md, ims, eptrb, 0, RM11); in match()
1569 md->end_match_ptr = eptr; /* For ONCE */ in match()
1570 md->end_offset_top = offset_top; in match()
1571 md->start_match_ptr = mstart; in match()
1591 md->capture_last = number; in match()
1592 if (offset >= md->offset_max) md->offset_overflow = TRUE; else in match()
1594 md->offset_vector[offset] = in match()
1595 md->offset_vector[md->offset_end - number]; in match()
1596 md->offset_vector[offset+1] = (int)(eptr - md->start_subject); in match()
1603 if (md->recursive != NULL && md->recursive->group_num == number) in match()
1605 recursion_info *rec = md->recursive; in match()
1607 md->recursive = rec->prevrec; in match()
1608 memcpy(md->offset_vector, rec->offset_save, in match()
1644 RMATCH(eptr, ecode + 1 + LINK_SIZE, offset_top, md, ims, eptrb, 0, RM12); in match()
1648 RMATCH(eptr, prev, offset_top, md, ims, eptrb, flags, RM50); in match()
1656 RMATCH(eptr, prev, offset_top, md, ims, eptrb, flags, RM13); in match()
1667 if (md->notbol && eptr == md->start_subject) MRRETURN(MATCH_NOMATCH); in match()
1670 if (eptr != md->start_subject && in match()
1671 (eptr == md->end_subject || !WAS_NEWLINE(eptr))) in match()
1681 if (eptr != md->start_subject) MRRETURN(MATCH_NOMATCH); in match()
1688 if (eptr != md->start_subject + md->start_offset) MRRETURN(MATCH_NOMATCH); in match()
1705 if (eptr < md->end_subject) in match()
1709 if (md->noteol) MRRETURN(MATCH_NOMATCH); in match()
1717 if (md->noteol) MRRETURN(MATCH_NOMATCH); in match()
1718 if (!md->endonly) goto ASSERT_NL_OR_EOS; in match()
1726 if (eptr < md->end_subject) MRRETURN(MATCH_NOMATCH); in match()
1735 if (eptr < md->end_subject && in match()
1736 (!IS_NEWLINE(eptr) || eptr != md->end_subject - md->nllen)) in match()
1761 if (eptr == md->start_subject) prev_is_word = FALSE; else in match()
1765 if (lastptr < md->start_used_ptr) md->start_used_ptr = lastptr; in match()
1768 if (md->use_ucp) in match()
1778 prev_is_word = c < 256 && (md->ctypes[c] & ctype_word) != 0; in match()
1783 if (eptr >= md->end_subject) in match()
1792 if (md->use_ucp) in match()
1802 cur_is_word = c < 256 && (md->ctypes[c] & ctype_word) != 0; in match()
1814 if (eptr == md->start_subject) prev_is_word = FALSE; else in match()
1816 if (eptr <= md->start_used_ptr) md->start_used_ptr = eptr - 1; in match()
1818 if (md->use_ucp) in match()
1829 prev_is_word = ((md->ctypes[eptr[-1]] & ctype_word) != 0); in match()
1834 if (eptr >= md->end_subject) in match()
1841 if (md->use_ucp) in match()
1852 cur_is_word = ((md->ctypes[*eptr] & ctype_word) != 0); in match()
1870 if (eptr++ >= md->end_subject) in match()
1875 if (utf8) while (eptr < md->end_subject && (*eptr & 0xc0) == 0x80) eptr++; in match()
1883 if (eptr++ >= md->end_subject) in match()
1892 if (eptr >= md->end_subject) in match()
1902 (md->ctypes[c] & ctype_digit) != 0 in match()
1909 if (eptr >= md->end_subject) in match()
1919 (md->ctypes[c] & ctype_digit) == 0 in match()
1926 if (eptr >= md->end_subject) in match()
1936 (md->ctypes[c] & ctype_space) != 0 in match()
1943 if (eptr >= md->end_subject) in match()
1953 (md->ctypes[c] & ctype_space) == 0 in match()
1960 if (eptr >= md->end_subject) in match()
1970 (md->ctypes[c] & ctype_word) != 0 in match()
1977 if (eptr >= md->end_subject) in match()
1987 (md->ctypes[c] & ctype_word) == 0 in match()
1994 if (eptr >= md->end_subject) in match()
2004 if (eptr < md->end_subject && *eptr == 0x0a) eptr++; in match()
2015 if (md->bsr_anycrlf) MRRETURN(MATCH_NOMATCH); in match()
2022 if (eptr >= md->end_subject) in match()
2056 if (eptr >= md->end_subject) in match()
2090 if (eptr >= md->end_subject) in match()
2112 if (eptr >= md->end_subject) in match()
2139 if (eptr >= md->end_subject) in match()
2220 if (eptr >= md->end_subject) in match()
2229 while (eptr < md->end_subject) in match()
2272 if (offset >= offset_top || md->offset_vector[offset] < 0) in match()
2273 length = (md->jscript_compat)? 0 : (int)(md->end_subject - eptr + 1); in match()
2275 length = md->offset_vector[offset+1] - md->offset_vector[offset]; in match()
2304 if (!match_ref(offset, eptr, length, md, ims)) in match()
2324 if (!match_ref(offset, eptr, length, md, ims)) in match()
2343 RMATCH(eptr, ecode, offset_top, md, ims, eptrb, 0, RM14); in match()
2346 if (!match_ref(offset, eptr, length, md, ims)) in match()
2363 if (!match_ref(offset, eptr, length, md, ims)) in match()
2372 RMATCH(eptr, ecode, offset_top, md, ims, eptrb, 0, RM15); in match()
2435 if (eptr >= md->end_subject) in match()
2457 if (eptr >= md->end_subject) in match()
2483 RMATCH(eptr, ecode, offset_top, md, ims, eptrb, 0, RM16); in match()
2486 if (eptr >= md->end_subject) in match()
2508 RMATCH(eptr, ecode, offset_top, md, ims, eptrb, 0, RM17); in match()
2511 if (eptr >= md->end_subject) in match()
2536 if (eptr >= md->end_subject) in match()
2554 RMATCH(eptr, ecode, offset_top, md, ims, eptrb, 0, RM18); in match()
2566 if (eptr >= md->end_subject) in match()
2577 RMATCH(eptr, ecode, offset_top, md, ims, eptrb, 0, RM19); in match()
2632 if (eptr >= md->end_subject) in match()
2653 RMATCH(eptr, ecode, offset_top, md, ims, eptrb, 0, RM20); in match()
2656 if (eptr >= md->end_subject) in match()
2675 if (eptr >= md->end_subject) in match()
2686 RMATCH(eptr, ecode, offset_top, md, ims, eptrb, 0, RM21); in match()
2707 if (length > md->end_subject - eptr) in match()
2719 if (md->end_subject - eptr < 1) in match()
2739 if (length > md->end_subject - eptr) in match()
2750 if (md->lcc[*ecode++] != md->lcc[*eptr++]) MRRETURN(MATCH_NOMATCH); in match()
2778 if (md->end_subject - eptr < 1) in match()
2783 if (md->lcc[ecode[1]] != md->lcc[*eptr++]) MRRETURN(MATCH_NOMATCH); in match()
2867 if (eptr <= md->end_subject - length && in match()
2871 eptr <= md->end_subject - oclength && in match()
2887 RMATCH(eptr, ecode, offset_top, md, ims, eptrb, 0, RM22); in match()
2890 if (eptr <= md->end_subject - length && in match()
2894 eptr <= md->end_subject - oclength && in match()
2911 if (eptr <= md->end_subject - length && in match()
2915 eptr <= md->end_subject - oclength && in match()
2929 RMATCH(eptr, ecode, offset_top, md, ims, eptrb, 0, RM23); in match()
2968 fc = md->lcc[fc]; in match()
2971 if (eptr >= md->end_subject) in match()
2976 if (fc != md->lcc[*eptr++]) MRRETURN(MATCH_NOMATCH); in match()
2983 RMATCH(eptr, ecode, offset_top, md, ims, eptrb, 0, RM24); in match()
2986 if (eptr >= md->end_subject) in match()
2991 if (fc != md->lcc[*eptr++]) MRRETURN(MATCH_NOMATCH); in match()
3000 if (eptr >= md->end_subject) in match()
3005 if (fc != md->lcc[*eptr]) break; in match()
3013 RMATCH(eptr, ecode, offset_top, md, ims, eptrb, 0, RM25); in match()
3028 if (eptr >= md->end_subject) in match()
3042 RMATCH(eptr, ecode, offset_top, md, ims, eptrb, 0, RM26); in match()
3045 if (eptr >= md->end_subject) in match()
3059 if (eptr >= md->end_subject) in match()
3071 RMATCH(eptr, ecode, offset_top, md, ims, eptrb, 0, RM27); in match()
3084 if (eptr >= md->end_subject) in match()
3096 c = md->lcc[c]; in match()
3097 if (md->lcc[*ecode++] == c) MRRETURN(MATCH_NOMATCH); in match()
3183 fc = md->lcc[fc]; in match()
3192 if (eptr >= md->end_subject) in match()
3198 if (d < 256) d = md->lcc[d]; in match()
3209 if (eptr >= md->end_subject) in match()
3214 if (fc == md->lcc[*eptr++]) MRRETURN(MATCH_NOMATCH); in match()
3229 RMATCH(eptr, ecode, offset_top, md, ims, eptrb, 0, RM28); in match()
3232 if (eptr >= md->end_subject) in match()
3238 if (d < 256) d = md->lcc[d]; in match()
3248 RMATCH(eptr, ecode, offset_top, md, ims, eptrb, 0, RM29); in match()
3251 if (eptr >= md->end_subject) in match()
3256 if (fc == md->lcc[*eptr++]) MRRETURN(MATCH_NOMATCH); in match()
3276 if (eptr >= md->end_subject) in match()
3282 if (d < 256) d = md->lcc[d]; in match()
3289 RMATCH(eptr, ecode, offset_top, md, ims, eptrb, 0, RM30); in match()
3301 if (eptr >= md->end_subject) in match()
3306 if (fc == md->lcc[*eptr]) break; in match()
3312 RMATCH(eptr, ecode, offset_top, md, ims, eptrb, 0, RM31); in match()
3334 if (eptr >= md->end_subject) in match()
3349 if (eptr >= md->end_subject) in match()
3369 RMATCH(eptr, ecode, offset_top, md, ims, eptrb, 0, RM32); in match()
3372 if (eptr >= md->end_subject) in match()
3387 RMATCH(eptr, ecode, offset_top, md, ims, eptrb, 0, RM33); in match()
3390 if (eptr >= md->end_subject) in match()
3415 if (eptr >= md->end_subject) in match()
3427 RMATCH(eptr, ecode, offset_top, md, ims, eptrb, 0, RM34); in match()
3439 if (eptr >= md->end_subject) in match()
3450 RMATCH(eptr, ecode, offset_top, md, ims, eptrb, 0, RM35); in match()
3553 if (eptr >= md->end_subject) in match()
3565 if (eptr >= md->end_subject) in match()
3582 if (eptr >= md->end_subject) in match()
3597 if (eptr >= md->end_subject) in match()
3612 if (eptr >= md->end_subject) in match()
3627 if (eptr >= md->end_subject) in match()
3643 if (eptr >= md->end_subject) in match()
3660 if (eptr >= md->end_subject) in match()
3677 if (eptr >= md->end_subject) in match()
3705 if (eptr >= md->end_subject) in match()
3713 while (eptr < md->end_subject) in match()
3736 if (eptr >= md->end_subject) in match()
3743 while (eptr < md->end_subject && (*eptr & 0xc0) == 0x80) eptr++; in match()
3750 if (eptr >= md->end_subject) in match()
3756 while (eptr < md->end_subject && (*eptr & 0xc0) == 0x80) eptr++; in match()
3761 if (eptr > md->end_subject - min) MRRETURN(MATCH_NOMATCH); in match()
3768 if (eptr >= md->end_subject) in match()
3778 if (eptr < md->end_subject && *eptr == 0x0a) eptr++; in match()
3789 if (md->bsr_anycrlf) MRRETURN(MATCH_NOMATCH); in match()
3798 if (eptr >= md->end_subject) in match()
3834 if (eptr >= md->end_subject) in match()
3870 if (eptr >= md->end_subject) in match()
3894 if (eptr >= md->end_subject) in match()
3918 if (eptr >= md->end_subject) in match()
3924 if (c < 128 && (md->ctypes[c] & ctype_digit) != 0) in match()
3932 if (eptr >= md->end_subject) in match()
3937 if (*eptr >= 128 || (md->ctypes[*eptr++] & ctype_digit) == 0) in match()
3946 if (eptr >= md->end_subject) in match()
3951 if (*eptr < 128 && (md->ctypes[*eptr] & ctype_space) != 0) in match()
3953 while (++eptr < md->end_subject && (*eptr & 0xc0) == 0x80); in match()
3960 if (eptr >= md->end_subject) in match()
3965 if (*eptr >= 128 || (md->ctypes[*eptr++] & ctype_space) == 0) in match()
3974 if (eptr >= md->end_subject) in match()
3979 if (*eptr < 128 && (md->ctypes[*eptr] & ctype_word) != 0) in match()
3981 while (++eptr < md->end_subject && (*eptr & 0xc0) == 0x80); in match()
3988 if (eptr >= md->end_subject) in match()
3993 if (*eptr >= 128 || (md->ctypes[*eptr++] & ctype_word) == 0) in match()
4014 if (eptr >= md->end_subject) in match()
4025 if (eptr > md->end_subject - min) in match()
4034 if (eptr > md->end_subject - min) in match()
4045 if (eptr >= md->end_subject) in match()
4054 if (eptr < md->end_subject && *eptr == 0x0a) eptr++; in match()
4062 if (md->bsr_anycrlf) MRRETURN(MATCH_NOMATCH); in match()
4071 if (eptr >= md->end_subject) in match()
4090 if (eptr >= md->end_subject) in match()
4109 if (eptr >= md->end_subject) in match()
4130 if (eptr >= md->end_subject) in match()
4151 if (eptr >= md->end_subject) in match()
4156 if ((md->ctypes[*eptr++] & ctype_digit) != 0) MRRETURN(MATCH_NOMATCH); in match()
4163 if (eptr >= md->end_subject) in match()
4168 if ((md->ctypes[*eptr++] & ctype_digit) == 0) MRRETURN(MATCH_NOMATCH); in match()
4175 if (eptr >= md->end_subject) in match()
4180 if ((md->ctypes[*eptr++] & ctype_space) != 0) MRRETURN(MATCH_NOMATCH); in match()
4187 if (eptr >= md->end_subject) in match()
4192 if ((md->ctypes[*eptr++] & ctype_space) == 0) MRRETURN(MATCH_NOMATCH); in match()
4199 if (eptr >= md->end_subject) in match()
4204 if ((md->ctypes[*eptr++] & ctype_word) != 0) in match()
4212 if (eptr >= md->end_subject) in match()
4217 if ((md->ctypes[*eptr++] & ctype_word) == 0) in match()
4245 RMATCH(eptr, ecode, offset_top, md, ims, eptrb, 0, RM36); in match()
4248 if (eptr >= md->end_subject) in match()
4261 RMATCH(eptr, ecode, offset_top, md, ims, eptrb, 0, RM37); in match()
4264 if (eptr >= md->end_subject) in match()
4281 RMATCH(eptr, ecode, offset_top, md, ims, eptrb, 0, RM38); in match()
4284 if (eptr >= md->end_subject) in match()
4299 RMATCH(eptr, ecode, offset_top, md, ims, eptrb, 0, RM39); in match()
4302 if (eptr >= md->end_subject) in match()
4317 RMATCH(eptr, ecode, offset_top, md, ims, eptrb, 0, RM40); in match()
4320 if (eptr >= md->end_subject) in match()
4335 RMATCH(eptr, ecode, offset_top, md, ims, eptrb, 0, RM59); in match()
4338 if (eptr >= md->end_subject) in match()
4354 RMATCH(eptr, ecode, offset_top, md, ims, eptrb, 0, RM60); in match()
4357 if (eptr >= md->end_subject) in match()
4374 RMATCH(eptr, ecode, offset_top, md, ims, eptrb, 0, RM61); in match()
4377 if (eptr >= md->end_subject) in match()
4394 RMATCH(eptr, ecode, offset_top, md, ims, eptrb, 0, RM62); in match()
4397 if (eptr >= md->end_subject) in match()
4426 RMATCH(eptr, ecode, offset_top, md, ims, eptrb, 0, RM41); in match()
4429 if (eptr >= md->end_subject) in match()
4437 while (eptr < md->end_subject) in match()
4458 RMATCH(eptr, ecode, offset_top, md, ims, eptrb, 0, RM42); in match()
4461 if (eptr >= md->end_subject) in match()
4481 if (eptr < md->end_subject && *eptr == 0x0a) eptr++; in match()
4491 if (md->bsr_anycrlf) MRRETURN(MATCH_NOMATCH); in match()
4581 if (c < 256 && (md->ctypes[c] & ctype_digit) != 0) in match()
4586 if (c >= 256 || (md->ctypes[c] & ctype_digit) == 0) in match()
4591 if (c < 256 && (md->ctypes[c] & ctype_space) != 0) in match()
4596 if (c >= 256 || (md->ctypes[c] & ctype_space) == 0) in match()
4601 if (c < 256 && (md->ctypes[c] & ctype_word) != 0) in match()
4606 if (c >= 256 || (md->ctypes[c] & ctype_word) == 0) in match()
4621 RMATCH(eptr, ecode, offset_top, md, ims, eptrb, 0, RM43); in match()
4624 if (eptr >= md->end_subject) in match()
4644 if (eptr < md->end_subject && *eptr == 0x0a) eptr++; in match()
4653 if (md->bsr_anycrlf) MRRETURN(MATCH_NOMATCH); in match()
4707 if ((md->ctypes[c] & ctype_digit) != 0) MRRETURN(MATCH_NOMATCH); in match()
4711 if ((md->ctypes[c] & ctype_digit) == 0) MRRETURN(MATCH_NOMATCH); in match()
4715 if ((md->ctypes[c] & ctype_space) != 0) MRRETURN(MATCH_NOMATCH); in match()
4719 if ((md->ctypes[c] & ctype_space) == 0) MRRETURN(MATCH_NOMATCH); in match()
4723 if ((md->ctypes[c] & ctype_word) != 0) MRRETURN(MATCH_NOMATCH); in match()
4727 if ((md->ctypes[c] & ctype_word) == 0) MRRETURN(MATCH_NOMATCH); in match()
4755 if (eptr >= md->end_subject) in match()
4770 if (eptr >= md->end_subject) in match()
4789 if (eptr >= md->end_subject) in match()
4806 if (eptr >= md->end_subject) in match()
4823 if (eptr >= md->end_subject) in match()
4840 if (eptr >= md->end_subject) in match()
4858 if (eptr >= md->end_subject) in match()
4877 if (eptr >= md->end_subject) in match()
4896 if (eptr >= md->end_subject) in match()
4919 RMATCH(eptr, ecode, offset_top, md, ims, eptrb, 0, RM44); in match()
4933 if (eptr >= md->end_subject) in match()
4941 while (eptr < md->end_subject) in match()
4960 RMATCH(eptr, ecode, offset_top, md, ims, eptrb, 0, RM45); in match()
4993 if (eptr >= md->end_subject) in match()
5000 while (eptr < md->end_subject && (*eptr & 0xc0) == 0x80) eptr++; in match()
5010 if (eptr >= md->end_subject) in match()
5017 while (eptr < md->end_subject && (*eptr & 0xc0) == 0x80) eptr++; in match()
5027 if (eptr >= md->end_subject) in match()
5033 while (eptr < md->end_subject && (*eptr & 0xc0) == 0x80) eptr++; in match()
5036 else eptr = md->end_subject; /* Unlimited UTF-8 repeat */ in match()
5043 if (c > (unsigned int)(md->end_subject - eptr)) in match()
5045 eptr = md->end_subject; in match()
5055 if (eptr >= md->end_subject) in match()
5063 if (++eptr >= md->end_subject) break; in match()
5069 (md->bsr_anycrlf || in match()
5084 if (eptr >= md->end_subject) in match()
5126 if (eptr >= md->end_subject) in match()
5154 if (eptr >= md->end_subject) in match()
5160 if (c < 256 && (md->ctypes[c] & ctype_digit) != 0) break; in match()
5169 if (eptr >= md->end_subject) in match()
5175 if (c >= 256 ||(md->ctypes[c] & ctype_digit) == 0) break; in match()
5184 if (eptr >= md->end_subject) in match()
5190 if (c < 256 && (md->ctypes[c] & ctype_space) != 0) break; in match()
5199 if (eptr >= md->end_subject) in match()
5205 if (c >= 256 ||(md->ctypes[c] & ctype_space) == 0) break; in match()
5214 if (eptr >= md->end_subject) in match()
5220 if (c < 256 && (md->ctypes[c] & ctype_word) != 0) break; in match()
5229 if (eptr >= md->end_subject) in match()
5235 if (c >= 256 || (md->ctypes[c] & ctype_word) == 0) break; in match()
5249 RMATCH(eptr, ecode, offset_top, md, ims, eptrb, 0, RM46); in match()
5265 if (eptr >= md->end_subject) in match()
5278 if (c > (unsigned int)(md->end_subject - eptr)) in match()
5280 eptr = md->end_subject; in match()
5289 if (eptr >= md->end_subject) in match()
5297 if (++eptr >= md->end_subject) break; in match()
5303 (md->bsr_anycrlf || in match()
5314 if (eptr >= md->end_subject) in match()
5328 if (eptr >= md->end_subject) in match()
5342 if (eptr >= md->end_subject) in match()
5357 if (eptr >= md->end_subject) in match()
5372 if (eptr >= md->end_subject) in match()
5377 if ((md->ctypes[*eptr] & ctype_digit) != 0) break; in match()
5385 if (eptr >= md->end_subject) in match()
5390 if ((md->ctypes[*eptr] & ctype_digit) == 0) break; in match()
5398 if (eptr >= md->end_subject) in match()
5403 if ((md->ctypes[*eptr] & ctype_space) != 0) break; in match()
5411 if (eptr >= md->end_subject) in match()
5416 if ((md->ctypes[*eptr] & ctype_space) == 0) break; in match()
5424 if (eptr >= md->end_subject) in match()
5429 if ((md->ctypes[*eptr] & ctype_word) != 0) break; in match()
5437 if (eptr >= md->end_subject) in match()
5442 if ((md->ctypes[*eptr] & ctype_word) == 0) break; in match()
5456 RMATCH(eptr, ecode, offset_top, md, ims, eptrb, 0, RM47); in match()
5616 match_data *md = &match_block; in pcre_exec() local
5642 md->name_table = (uschar *)re + re->name_table_offset; in pcre_exec()
5643 md->name_count = re->name_count; in pcre_exec()
5644 md->name_entry_size = re->name_entry_size; in pcre_exec()
5650 md->match_limit = MATCH_LIMIT; in pcre_exec()
5651 md->match_limit_recursion = MATCH_LIMIT_RECURSION; in pcre_exec()
5652 md->callout_data = NULL; in pcre_exec()
5664 md->match_limit = extra_data->match_limit; in pcre_exec()
5666 md->match_limit_recursion = extra_data->match_limit_recursion; in pcre_exec()
5668 md->callout_data = extra_data->callout_data; in pcre_exec()
5698 md->start_code = (const uschar *)external_re + re->name_table_offset + in pcre_exec()
5701 md->start_subject = (USPTR)subject; in pcre_exec()
5702 md->start_offset = start_offset; in pcre_exec()
5703 md->end_subject = md->start_subject + length; in pcre_exec()
5704 end_subject = md->end_subject; in pcre_exec()
5706 md->endonly = (re->options & PCRE_DOLLAR_ENDONLY) != 0; in pcre_exec()
5707 utf8 = md->utf8 = (re->options & PCRE_UTF8) != 0; in pcre_exec()
5708 md->use_ucp = (re->options & PCRE_UCP) != 0; in pcre_exec()
5709 md->jscript_compat = (re->options & PCRE_JAVASCRIPT_COMPAT) != 0; in pcre_exec()
5711 md->notbol = (options & PCRE_NOTBOL) != 0; in pcre_exec()
5712 md->noteol = (options & PCRE_NOTEOL) != 0; in pcre_exec()
5713 md->notempty = (options & PCRE_NOTEMPTY) != 0; in pcre_exec()
5714 md->notempty_atstart = (options & PCRE_NOTEMPTY_ATSTART) != 0; in pcre_exec()
5715 md->partial = ((options & PCRE_PARTIAL_HARD) != 0)? 2 : in pcre_exec()
5717 md->hitend = FALSE; in pcre_exec()
5718 md->mark = NULL; /* In case never set */ in pcre_exec()
5720 md->recursive = NULL; /* No recursion at top level */ in pcre_exec()
5722 md->lcc = tables + lcc_offset; in pcre_exec()
5723 md->ctypes = tables + ctypes_offset; in pcre_exec()
5731 md->bsr_anycrlf = (re->options & PCRE_BSR_ANYCRLF) != 0; in pcre_exec()
5734 md->bsr_anycrlf = TRUE; in pcre_exec()
5736 md->bsr_anycrlf = FALSE; in pcre_exec()
5741 md->bsr_anycrlf = TRUE; in pcre_exec()
5745 md->bsr_anycrlf = FALSE; in pcre_exec()
5769 md->nltype = NLTYPE_ANYCRLF; in pcre_exec()
5773 md->nltype = NLTYPE_ANY; in pcre_exec()
5777 md->nltype = NLTYPE_FIXED; in pcre_exec()
5780 md->nllen = 2; in pcre_exec()
5781 md->nl[0] = (newline >> 8) & 255; in pcre_exec()
5782 md->nl[1] = newline & 255; in pcre_exec()
5786 md->nllen = 1; in pcre_exec()
5787 md->nl[0] = newline; in pcre_exec()
5795 if (md->partial && (re->flags & PCRE_NOPARTIAL) != 0) in pcre_exec()
5806 return (tb == length && md->partial > 1)? in pcre_exec()
5832 md->offset_vector = (int *)(pcre_malloc)(ocount * sizeof(int)); in pcre_exec()
5833 if (md->offset_vector == NULL) return PCRE_ERROR_NOMEMORY; in pcre_exec()
5837 else md->offset_vector = offsets; in pcre_exec()
5839 md->offset_end = ocount; in pcre_exec()
5840 md->offset_max = (2*ocount)/3; in pcre_exec()
5841 md->offset_overflow = FALSE; in pcre_exec()
5842 md->capture_last = -1; in pcre_exec()
5855 if (md->offset_vector != NULL) in pcre_exec()
5857 register int *iptr = md->offset_vector + ocount; in pcre_exec()
5874 first_byte = md->lcc[first_byte]; in pcre_exec()
5905 if (md->offset_vector != NULL) in pcre_exec()
5907 register int *iptr = md->offset_vector; in pcre_exec()
5924 while (t < md->end_subject && !IS_NEWLINE(t)) in pcre_exec()
5932 while (t < md->end_subject && !IS_NEWLINE(t)) t++; in pcre_exec()
5949 while (start_match < end_subject && md->lcc[*start_match] != first_byte) in pcre_exec()
5960 if (start_match > md->start_subject + start_offset) in pcre_exec()
5982 (md->nltype == NLTYPE_ANY || md->nltype == NLTYPE_ANYCRLF) && in pcre_exec()
6017 if ((options & PCRE_NO_START_OPTIMIZE) == 0 && !md->partial) in pcre_exec()
6090 pchars(start_match, end_subject - start_match, TRUE, md); in pcre_exec()
6097 md->start_match_ptr = start_match; in pcre_exec()
6098 md->start_used_ptr = start_match; in pcre_exec()
6099 md->match_call_count = 0; in pcre_exec()
6100 rc = match(start_match, md->start_code, start_match, NULL, 2, md, ims, NULL, in pcre_exec()
6102 if (md->hitend && start_partial == NULL) start_partial = md->start_used_ptr; in pcre_exec()
6110 if (md->start_match_ptr != start_match) in pcre_exec()
6112 new_start_match = md->start_match_ptr; in pcre_exec()
6177 (md->nltype == NLTYPE_ANY || in pcre_exec()
6178 md->nltype == NLTYPE_ANYCRLF || in pcre_exec()
6179 md->nllen == 2)) in pcre_exec()
6182 md->mark = NULL; /* Reset for start of next match attempt */ in pcre_exec()
6213 memcpy(offsets + 2, md->offset_vector + 2, in pcre_exec()
6217 if (md->end_offset_top > offsetcount) md->offset_overflow = TRUE; in pcre_exec()
6219 (pcre_free)(md->offset_vector); in pcre_exec()
6225 rc = md->offset_overflow? 0 : md->end_offset_top/2; in pcre_exec()
6233 offsets[0] = (int)(md->start_match_ptr - md->start_subject); in pcre_exec()
6234 offsets[1] = (int)(md->end_match_ptr - md->start_subject); in pcre_exec()
6247 (pcre_free)(md->offset_vector); in pcre_exec()
6263 md->mark = NULL; in pcre_exec()
6285 *(extra_data->mark) = (unsigned char *)(md->mark); in pcre_exec()