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

unknown: html => {"type":"html","value":"<!-- truncate -->","position":{"start":{"line":6,"column":1,"offset":97},"end":{"line":6,"column":18,"offset":114}}}

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