メインコンテンツまでスキップ

謎の backend モード

謎というほどでも無いのだけど emacs などの editor 向けに、 キーボード入力などをオミットした別のモードのようだ。 使ったことないのと、裏口でコードが複雑化している感じがある。

backend

Buffer::document_header に手を入れていたところ、 別系統のアクセスがあることを発見。 削除しても本体には影響が無さそうだったのでやってしまいます。

別系統の操作体系があって readline までついている? キーボードじゃなくて、コマンドで操るための裏口ぽいか。

-backend ひきすうで有効になる。 検索しても情報があまり出てこない。

作業

消す前。

> cloc --exclude-dir=docusaurus "--match-f=\.(c|h|cpp)$" src
137 text files.
137 unique files.
1 file ignored.

github.com/AlDanial/cloc v 1.90 T=0.09 s (1566.1 files/s, 483446.8 lines/s)
-------------------------------------------------------------------------------
Language files blank comment code
-------------------------------------------------------------------------------
C++ 60 2546 1274 31158
C/C++ Header 68 441 154 4924
C 9 112 181 1500
-------------------------------------------------------------------------------
SUM: 137 3099 1609 37582
-------------------------------------------------------------------------------

消した後。量的なインパクトは少ない。

> cloc --exclude-dir=docusaurus "--match-f=\.(c|h|cpp)$" src
137 text files.
137 unique files.
1 file ignored.

github.com/AlDanial/cloc v 1.90 T=0.09 s (1549.2 files/s, 473432.8 lines/s)
-------------------------------------------------------------------------------
Language files blank comment code
-------------------------------------------------------------------------------
C++ 60 2506 1251 30805
C/C++ Header 68 441 154 4918
C 9 112 181 1500
-------------------------------------------------------------------------------
SUM: 137 3059 1586 37223
-------------------------------------------------------------------------------

remove commandline

ついでによく知らないコマンドラインオプションも削る。

"-m" internet message

mail とか news 向けらしい。 local cgi とも関連がある?

// argv
else if (!strcmp("-m", argv[i])) {
SearchHeader = (search_header = true);
}

// load
else if (searchHeader) {
searchHeader = SearchHeader = false;
if (t_buf == NULL)
t_buf = new Buffer(INIT_BUFFER_WIDTH());
readHeader(&f, t_buf, searchHeader_through, &pu);
if (f.is_cgi && (p = checkHeader(t_buf, "Location:")) != NULL &&
checkRedirection(&pu)) {
/* document moved */
tpath = url_quote(remove_space((char *)p));
request = NULL;
UFclose(&f);
add_auth_cookie_flag = 0;
current = (Url *)New(Url);
*current = pu;
t_buf = new Buffer(INIT_BUFFER_WIDTH());
t_buf->bufferprop = (BufferFlags)(t_buf->bufferprop | BP_REDIRECTED);
status = HTST_NORMAL;
goto load_doc;
}
#ifdef AUTH_DEBUG
if ((p = checkHeader(t_buf, "WWW-Authenticate:")) != NULL) {
/* Authentication needed */
struct http_auth hauth;
if (findAuthentication(&hauth, t_buf, "WWW-Authenticate:") != NULL &&
(realm = get_auth_param(hauth.param, "realm")) != NULL) {
auth_pu = &pu;
getAuthCookie(&hauth, "Authorization:", extra_header, auth_pu, &hr,
request, &uname, &pwd);
if (uname == NULL) {
/* abort */
TRAP_OFF;
goto page_loaded;
}
UFclose(&f);
add_auth_cookie_flag = 1;
status = HTST_NORMAL;
goto load_doc;
}
}
#endif /* defined(AUTH_DEBUG) */
t = checkContentType(t_buf);
if (t == NULL)
t = "text/plain";
}

// わりと挙動がむずい
SearchHeader = Currentbuf->search_header;
DefaultType = Currentbuf->real_type;
auto buf = loadGeneralFile(
url->ptr, nullptr, {.referer = NO_REFERER, .no_cache = true}, request);
SearchHeader = false;

remove siteconf

使ったことないし、各所で値の上書きや分岐があって難しいので削除。 正常系のシンプルな動作だけ確保する。

const void *querySiteconf(const Url *query_pu, int field);

// 特定のURLを redirect させる。とかそういう挙動ぽい
load_doc: {
pu = Url::parse2(tpath, current);
auto sc_redirect = query_SCONF_SUBSTITUTE_URL(&pu);
if (sc_redirect && *sc_redirect && checkRedirection(&pu)) {
tpath = (char *)sc_redirect;
request = NULL;
add_auth_cookie_flag = 0;
current = (Url *)New(Url);
*current = pu;
status = HTST_NORMAL;
goto load_doc;
}
}

const void *querySiteconf(const Url *query_pu, int field);
#define SCONF_RESERVED 0
#define SCONF_SUBSTITUTE_URL 1
#define SCONF_URL_CHARSET 2
#define SCONF_NO_REFERER_FROM 3
#define SCONF_NO_REFERER_TO 4
#define SCONF_USER_AGENT 5
#define SCONF_N_FIELD 6
#define query_SCONF_SUBSTITUTE_URL(pu) \
((const char *)querySiteconf(pu, SCONF_SUBSTITUTE_URL))
#define query_SCONF_USER_AGENT(pu) \
((const char *)querySiteconf(pu, SCONF_USER_AGENT))
#define query_SCONF_URL_CHARSET(pu) \
((const wc_ces *)querySiteconf(pu, SCONF_URL_CHARSET))
#define query_SCONF_NO_REFERER_FROM(pu) \
((const int *)querySiteconf(pu, SCONF_NO_REFERER_FROM))
#define query_SCONF_NO_REFERER_TO(pu) \
((const int *)querySiteconf(pu, SCONF_NO_REFERER_TO))
> cloc --exclude-dir=docusaurus "--match-f=\.(c|h|cpp)$" src
SUM: 138 3030 1558 36944

lessopen

mailcap

doExternal