[w3m-dev 03610] Re: news:<newsgroup>
* anchor.c (_put_anchor_news): check '<' (reAnchorNewsheader): added * file.c (loadSomething): Subject: as buffername (checkHeader): check buf->document_header (loadGeneralFile): reAnchorNewsheader * html.h (SCM_NNTP_GROUP): added * main.c (main): delete USE_NNTP in switch (newbuf->real_scheme) (chkNMIDBuffer): lowercase in url_like_pat * news.c (add_news_message): add scheme, group as arg (openNewsStream): check SCM_NNTP_GROUP check current_news.host (readNewsgroup): rewrite to support nntp:,news: extension * proto.h (reAnchorNewsheader): added * url.c (DefaultPort): add 119 for nntp group (parseURL2): rewrite to support nntp:,news: extension (_parsedURL2Str): add for SCM_NNTP_GROUP (openURL): rewrite to support nntp:,news: extension From: Hironori SAKAMOTO <hsaka@mth.biglobe.ne.jp>
This commit is contained in:
65
anchor.c
65
anchor.c
@@ -1,4 +1,4 @@
|
||||
/* $Id: anchor.c,v 1.17 2002/12/24 17:24:33 ukai Exp $ */
|
||||
/* $Id: anchor.c,v 1.18 2003/01/06 15:36:57 ukai Exp $ */
|
||||
#include "fm.h"
|
||||
#include "myctype.h"
|
||||
#include "regex.h"
|
||||
@@ -193,9 +193,11 @@ _put_anchor_news(Buffer *buf, char *p1, char *p2, int line, int pos)
|
||||
{
|
||||
Str tmp;
|
||||
|
||||
p1++;
|
||||
if (*(p2 - 1) == '>')
|
||||
p2--;
|
||||
if (*p1 == '<') {
|
||||
p1++;
|
||||
if (*(p2 - 1) == '>')
|
||||
p2--;
|
||||
}
|
||||
tmp = Strnew_charp_n(p1, p2 - p1);
|
||||
#ifdef JP_CHARSET
|
||||
tmp = conv_str(tmp, InnerCode, buf->document_code);
|
||||
@@ -366,6 +368,61 @@ reAnchorNews(Buffer *buf, char *re)
|
||||
{
|
||||
return reAnchorAny(buf, re, _put_anchor_news);
|
||||
}
|
||||
|
||||
char *
|
||||
reAnchorNewsheader(Buffer *buf)
|
||||
{
|
||||
Line *l;
|
||||
char *p, *p1, *p2;
|
||||
static char *header_mid[] = {
|
||||
"Message-Id:", "References:", "In-Reply-To:", NULL
|
||||
};
|
||||
static char *header_group[] = {
|
||||
"Newsgroups:", NULL
|
||||
};
|
||||
char **header, **q;
|
||||
int i, search = FALSE;
|
||||
|
||||
if (!buf || !buf->firstLine)
|
||||
return NULL;
|
||||
for (i = 0; i <= 1; i++) {
|
||||
if (i == 0) {
|
||||
regexCompile("<[!-;=?-~]+@[a-zA-Z0-9\\.\\-_]+>", 1);
|
||||
header = header_mid;
|
||||
}
|
||||
else {
|
||||
regexCompile("[a-zA-Z0-9\\.\\-_]+", 1);
|
||||
header = header_group;
|
||||
}
|
||||
for (l = buf->firstLine; l != NULL && l->real_linenumber == 0;
|
||||
l = l->next) {
|
||||
p = l->lineBuf;
|
||||
if (!IS_SPACE(*p)) {
|
||||
search = FALSE;
|
||||
for (q = header; *q; q++) {
|
||||
if (!strncasecmp(p, *q, sizeof(*q) - 1)) {
|
||||
search = TRUE;
|
||||
p = strchr(p, ':') + 1;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (!search)
|
||||
continue;
|
||||
for (;;) {
|
||||
if (regexMatch(p, &l->lineBuf[l->len] - p, p == l->lineBuf)
|
||||
== 1) {
|
||||
matchedPosition(&p1, &p2);
|
||||
p = reAnchorPos(buf, l, p1, p2, _put_anchor_news);
|
||||
}
|
||||
else
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
reseq_anchor(buf);
|
||||
return NULL;
|
||||
}
|
||||
#endif /* USE_NNTP */
|
||||
|
||||
#define FIRST_MARKER_SIZE 30
|
||||
|
Reference in New Issue
Block a user