34 static bool is_attachment(
char *,
char *,
char *);
55 for (d = strlen(s) - 1; d >= 0; d--) {
56 if (
strchr(
' .\t', s[d]) != NULL)
64 while ((n = strlen(s)) > 0) {
65 if ((p =
strchr(
". \t,", s[n - 1])) != NULL) {
89 if ((name == NULL) || (value == NULL))
95 if (strlen(name) > 0) {
101 if (strlen(value) > 0) {
108 return (i < NB_ATTR);
122 if ((buf == NULL) || (head == NULL))
135 while (p->
next != NULL)
160 if (p->
value != NULL)
162 for (i = 0; i <
NB_ATTR; i++) {
184 if (p->
value != NULL)
187 for (i = 0; i <
NB_ATTR; i++) {
206 while (head != NULL) {
223 while (head != NULL) {
225 if (head->
name != NULL)
256 while (p->
next != NULL)
278 if ((filename == NULL) || (head == NULL))
282 if ((p->
name != NULL) && (strcasecmp(filename, p->
name) == 0))
295 is_attachment(mimetype, attr, value)
300 if ((attr == NULL) || (value == NULL))
303 if ((strcasecmp(
"name", attr) == 0) && (strlen(value) > 0))
306 if ((strcasecmp(
"filename", attr) == 0) && (strlen(value) > 0))
309 if (mimetype != NULL) {
310 if (strcasecmp(
"message/partial", mimetype) == 0) {
311 if (strcasecmp(
"id", attr) == 0)
315 if (strcasecmp(
"message/external-body", mimetype) == 0) {
316 if (strcasecmp(
"name", attr) == 0)
344 for (p = chead; p != NULL; p = p->
next) {
346 for (i = 0; i <
NB_ATTR; i++) {
362 if (file->
name == NULL) {
393 #if _FFR_FILENAME_7BIT 399 #undef _FFR_RFC2046_MSGS_ARE_XFILES 403 #if _FFR_RFC2046_MSGS_ARE_XFILES == 1 405 ((strcasecmp(file->
mimetype,
"message/partial") == 0) ||
406 (strcasecmp(file->
mimetype,
"message/external-body") == 0)))
423 for (p = chead; p != NULL; p = p->
next) {
425 for (i = 0; i <
NB_ATTR; i++) {
444 if (file->
name == NULL) {
468 #if _FFR_FILENAME_7BIT 487 for (p = chead; p != NULL; p = p->
next) {
491 if (p->
value == NULL || strlen(p->
value) == 0) {
501 if (file->
name == NULL) {
521 #if _FFR_FILENAME_7BIT 553 for (p = chead; p != NULL; p = p->
next) {
559 for (i = 0; i <
NB_ATTR; i++) {
602 memset(file, 0,
sizeof (*file));
603 file->
name = strdup(filename);
604 if (file->
name == NULL) {
636 for (p = chead; p != NULL; p = p->
next) {
648 if (file->
name == NULL) {
700 if (p->
value == NULL) {
704 for (i = 0; i <
NB_ATTR; i++) {
706 (strcasecmp(p->
attr[i].
name,
"filename") == 0) &&
708 && (strcasecmp(p->
attr[i].
value, name) == 0)) {
bool check_filename_xfile(char *)
content_text_T attr[NB_ATTR]
#define ZE_LogSysError(...)
int new_extract_attachments(content_field_T *chead, attachment_T **ahead)
struct attachment_T * next
attachment_T * get_attachment(char *filename, attachment_T *head)