} else {
if (mimeinfo->mime_type == MIME_TEXT && mimeinfo->parent) {
glong fpos;
+ MimeInfo *parent = mimeinfo->parent;
+
+ while (parent->parent) {
+ if (parent->main &&
+ parent->main->mime_type ==
+ MIME_MESSAGE_RFC822)
+ break;
+ parent = parent->parent;
+ }
if ((fpos = ftell(fp)) < 0)
perror("ftell");
- else if (fseek(fp, mimeinfo->parent->fpos, SEEK_SET)
- < 0)
+ else if (fseek(fp, parent->fpos, SEEK_SET) < 0)
perror("fseek");
else {
headers = textview_scan_header(textview, fp);
perror("fseek");
}
}
+ /* skip MIME part headers */
while (fgets(buf, sizeof(buf), fp) != NULL)
if (buf[0] == '\r' || buf[0] == '\n') break;
}
* should pass some URI type to this function and decide on that whether
* to perform punctuation stripping */
-#define IS_REAL_PUNCT(ch) \
- (ispunct(ch) && ((ch) != '/'))
+#define IS_REAL_PUNCT(ch) (ispunct(ch) && ((ch) != '/'))
for (; ep_ - 1 > scanpos + 1 && IS_REAL_PUNCT(*(ep_ - 1)); ep_--)
;
!isspace(ch) && \
!strchr("()<>\"", (ch)))
+/* alphabet and number within 7bit ASCII */
+#define IS_ASCII_ALNUM(ch) (isascii(ch) && isalnum(ch))
#define IS_QUOTE(ch) ((ch) == '\'' || (ch) == '"')
/* get_email_part() - retrieves an email address. Returns TRUE if succesful */
/* TODO: should start with an alnum? */
bp_++;
- for (; bp_ < scanpos && !isalnum(*bp_); bp_++)
+ for (; bp_ < scanpos && !IS_ASCII_ALNUM(*bp_); bp_++)
;
if (bp_ != scanpos) {
;
/* TODO: really should terminate with an alnum? */
- for (; ep_ > scanpos && !isalnum(*ep_); --ep_)
+ for (; ep_ > scanpos && !IS_ASCII_ALNUM(*ep_); --ep_)
;
ep_++;