• Patch: Elm ME+ 2.5 PLalpha51 -> Elm ME+ 2.5 PLalpha52 [2/7] (4/4)

    From Kari Hurtta@21:1/5 to All on Mon Jun 8 19:46:06 2020
    [continued from previous message]

    ! value, whitelisted_name,domain));
    ! ok = 1;
    ! } else {
    ! const char * reserved_name =
    ! is_special_use_domain(domain);
    !
    ! if (reserved_name) {
    !
    ! DPRINT(Debug,14,
    ! (&Debug,
    ! "add_message_id_hdr: %s, domain %s is reserved on %s\n",
    ! value, reserved_name,domain));
    !
    ! lib_error(CATGETS(elm_msg_cat, MeSet,
    ! MeHeaderIDReservedDomain,
    ! "Reserved domain %s is unsupported on id %s on header field %s."),
    ! reserved_name,value,hdr_name);
    !
    ! ret = 0;
    ! } else
    ! ok = 1;
    ! }
    ! }
    !
    ! if (ok) {
    !
    ! if (headers->message_id)
    ! free_message_id(& (headers->message_id));
    !
    ! headers->message_id = newid;
    ! newid = NULL;
    ! ret = 1;
    ! }
    !
    ! }
    !
    ! if (newid)
    ! free_message_id(& newid);
    !
    ! } else {
    ! ret = 0;

    ! DPRINT(Debug,14, (&Debug,
    ! "add_message_id_hdr: No id, header name %s, value=%s\n",
    ! hdr_name,value));
    !
    ! }
    ! } else {
    ! ret = 1;

    ! if (replace && headers->message_id)
    ! free_message_id(& (headers->message_id));

    ! DPRINT(Debug,14, (&Debug,
    ! "add_message_id_hd: No id (whitespace only), header name %s, value=%s\n",
    ! hdr_name,value));
    }
    +
    + DPRINT(Debug,14, (&Debug,
    + "add_message_id_hdr=%d: header name %s, value=%s\n",
    + ret,hdr_name,value));
    +
    + return ret;
    + }
    +
    + static int add_common_references_hdr P_((struct references ** ref_p,
    + header_ptr X,
    + const char *value,
    + int demime,
    + charset_t defcharset,
    + int replace));
    + static int add_common_references_hdr(ref_p,X,value,demime,defcharset,replace) + struct references ** ref_p;
    + header_ptr X;
    + const char *value;
    + int demime;
    + charset_t defcharset;
    + int replace;
    + {
    + int ret = 0;
    + const char * hdr_name = give_header_name(X);
    +
    + if (not_whitespace(value)) {
    +
    + /* parse_header_references() may return NULL if no message-id's found */
    +
    + struct references * newref = parse_header_references(hdr_name,value,demime,defcharset,NULL);
    +
    + if (newref) {
    +
    + /* Append does not make sense, so always replace */
    +
    + if (*ref_p)
    + free_references(ref_p);
    + *ref_p = newref; newref = NULL;
    + ret = 1;
    +
    + } else {
    + ret = 0;
    +
    + DPRINT(Debug,14, (&Debug,
    + "add_common_references_hdr: No ids, header name %s, value=%s\n",
    + hdr_name,value));
    +
    + }
    + } else {
    + ret = 1;
    +
    + if (replace && *ref_p)
    + free_references(ref_p);

    ! DPRINT(Debug,14, (&Debug,
    ! "add_common_references_hdr: No ids (whitespace only), header name %s, value=%s\n",
    ! hdr_name,value));
    !
    ! }
    !
    ! DPRINT(Debug,14, (&Debug,
    ! "add_common_references_hdr=%d: header name %s, value=%s\n",
    ! ret,hdr_name,value));
    !
    !
    ! return ret;
    }

    +
    +
    + #ifdef ANSI_C
    + hdr_add_to_mailing_hdr add_in_reply_to_hdr;
    + #endif
    + int add_in_reply_to_hdr(headers,X,value,demime,defcharset,replace)
    + struct mailing_headers * headers;
    + header_ptr X;
    + const char *value;
    + int demime;
    + charset_t defcharset;
    + int replace;
    + {
    + int ret = add_common_references_hdr(&(headers->in_reply_to),X,
    + value,demime,defcharset,replace);
    +
    + DPRINT(Debug,14, (&Debug, "add_in_reply_to_hdr=%d; value=%s\n",
    + ret,value));
    +
    + return ret;
    + }
    +
    + #ifdef ANSI_C
    + hdr_add_to_mailing_hdr add_references_hdr;
    + #endif
    + int add_references_hdr(headers,X,value,demime,defcharset,replace)
    + struct mailing_headers * headers;
    + header_ptr X;
    + const char *value;
    + int demime;
    + charset_t defcharset;
    + int replace;
    + {
    + int ret = add_common_references_hdr(&(headers->references),X,
    + value,demime,defcharset,replace);
    +
    + DPRINT(Debug,14, (&Debug, "add_references_hdr=%d; value=%s\n",
    + ret,value));
    +
    + return ret;
    + }
    +
    +
    void dump_expanded_address(debuglevel,text,expanded)
    int debuglevel;
    const char *text;
    ***************
    *** 938,945 ****
    addr_list_item_count(expanded.addrs) : 0;
    int glen = expanded.addrs ?
    addr_list_group_count(expanded.addrs) : 0;
    !
    !
    DPRINT(Debug,debuglevel,
    (&Debug,
    "%s: %d surfaces, %d addresses, %d groups\n",
    --- 1428,1434 ----
    addr_list_item_count(expanded.addrs) : 0;
    int glen = expanded.addrs ?
    addr_list_group_count(expanded.addrs) : 0;
    !
    DPRINT(Debug,debuglevel,
    (&Debug,
    "%s: %d surfaces, %d addresses, %d groups\n",
    ***************
    *** 1093,1099 ****
    DPRINT(Debug,8,(&Debug, "eval_backquote: %s\n",
    buffer));

    -
    for (ptr = buffer; (*ptr || result) && !quitflag; ptr++) {

    if ('`' == *ptr || !*ptr) {
    --- 1582,1587 ----
    ***************
    *** 1353,1383 ****
    fclose(F);
    }

    ! /* Returns domain name if matches to valid-domains */

    ! const char * is_whitelisted_valid_domain(mail_domain_name)
    ! const char * mail_domain_name;
    {
    - /* Pointer to internal list, do NOT free */
    - const char ** whitelist =
    - give_dt_path_as_elems(&valid_domains,
    - "valid-domains");
    -
    const char * p;
    int i;

    if (!whitelist)
    return NULL;

    /* These mail domains are valid without verifying */