static void parse_dot_atom(const char *s, size_t len) { size_t i; for (i = 0; i < len; i++) if (!is_atext(s[i]) && s[i] != '.') ereport(ERROR, (errcode(ERRCODE_INVALID_TEXT_REPRESENTATION), errmsg("invalid input syntax for type emailaddr: invalid character \"%c\"", s[i]))); }
static int mailimf_mailbox_write(FILE * f, int * col, struct mailimf_mailbox * mb) { int r; int do_fold; #if 0 if (* col > 1) { if (mb->mb_display_name != NULL) { if (* col + strlen(mb->mb_display_name) >= MAX_MAIL_COL) { r = mailimf_string_write(f, col, "\r\n ", 3); if (r != MAILIMF_NO_ERROR) return r; #if 0 * col = 1; #endif } } } #endif if (mb->mb_display_name) { if (is_atext(mb->mb_display_name)) { r = mailimf_header_string_write(f, col, mb->mb_display_name, strlen(mb->mb_display_name)); if (r != MAILIMF_NO_ERROR) return r; } else { if (mb->mb_display_name != NULL) { if (* col + strlen(mb->mb_display_name) >= MAX_MAIL_COL) { r = mailimf_string_write(f, col, "\r\n ", 3); if (r != MAILIMF_NO_ERROR) return r; } } if (strlen(mb->mb_display_name) > MAX_VALID_IMF_LINE / 2) return MAILIMF_ERROR_INVAL; r = mailimf_quoted_string_write(f, col, mb->mb_display_name, strlen(mb->mb_display_name)); if (r != MAILIMF_NO_ERROR) return r; } do_fold = 0; if (* col > 1) { if (* col + strlen(mb->mb_addr_spec) + 3 >= MAX_MAIL_COL) { r = mailimf_string_write(f, col, "\r\n ", 3); if (r != MAILIMF_NO_ERROR) return r; #if 0 * col = 1; #endif do_fold = 1; } } if (do_fold) r = mailimf_string_write(f, col, "<", 1); else r = mailimf_string_write(f, col, " <", 2); if (r != MAILIMF_NO_ERROR) return r; r = mailimf_string_write(f, col, mb->mb_addr_spec, strlen(mb->mb_addr_spec)); if (r != MAILIMF_NO_ERROR) return r; r = mailimf_string_write(f, col, ">", 1); if (r != MAILIMF_NO_ERROR) return r; } else { if (* col + strlen(mb->mb_addr_spec) >= MAX_MAIL_COL) { r = mailimf_string_write(f, col, "\r\n ", 3); if (r != MAILIMF_NO_ERROR) return r; } r = mailimf_string_write(f, col, mb->mb_addr_spec, strlen(mb->mb_addr_spec)); if (r != MAILIMF_NO_ERROR) return r; } return MAILIMF_NO_ERROR; }