| 925 | } |
| 926 | |
| 927 | void MessageHeader::importIMAPReferences(Data * data) |
| 928 | { |
| 929 | size_t cur_token; |
| 930 | struct mailimf_fields * fields; |
| 931 | int r; |
| 932 | struct mailimf_single_fields single_fields; |
| 933 | |
| 934 | cur_token = 0; |
| 935 | r = mailimf_fields_parse(data->bytes(), data->length(), &cur_token, &fields); |
| 936 | if (r != MAILIMF_NO_ERROR) { |
| 937 | return; |
| 938 | } |
| 939 | |
| 940 | mailimf_single_fields_init(&single_fields, fields); |
| 941 | if (single_fields.fld_references != NULL) { |
| 942 | Array * msgids; |
| 943 | |
| 944 | msgids = msg_id_to_string_array(single_fields.fld_references->mid_list); |
| 945 | setReferences(msgids); |
| 946 | } |
| 947 | if (single_fields.fld_subject != NULL) { |
| 948 | if (single_fields.fld_subject->sbj_value != NULL) { |
| 949 | bool broken; |
| 950 | char * value; |
| 951 | bool isASCII; |
| 952 | |
| 953 | broken = false; |
| 954 | value = single_fields.fld_subject->sbj_value; |
| 955 | |
| 956 | isASCII = true; |
| 957 | for(char * p = value ; * p != 0 ; p ++) { |
| 958 | if ((unsigned char) * p >= 128) { |
| 959 | isASCII = false; |
| 960 | } |
| 961 | } |
| 962 | if (strstr(value, "windows-1251") == NULL) { |
| 963 | if (isASCII) { |
| 964 | broken = true; |
| 965 | } |
| 966 | } |
| 967 | |
| 968 | //MCLog("charset: %s %s", value, MCUTF8(charset)); |
| 969 | |
| 970 | if (!broken) { |
| 971 | setSubject(String::stringByDecodingMIMEHeaderValue(single_fields.fld_subject->sbj_value)); |
| 972 | } |
| 973 | } |
| 974 | } |
| 975 | |
| 976 | mailimf_fields_free(fields); |
| 977 | } |
| 978 | |
| 979 | void MessageHeader::importIMAPInternalDate(struct mailimap_date_time * date) |
| 980 | { |
no test coverage detected