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

マクロ削除

#ifdef を確定しながらコードを減らしていく。

config.h に注意

build コマンドの引き数と config.h の内容を連動させる。 うっかり片方だけ作業するとビルドが通らないならまだしも、壊れるかもしれない。

nvim の treesitter が便利

#if#endif 間のジャンプができて便利。

https://github.com/andymass/vim-matchup

警告

巨大なファイル(file.c:7000行)で遅かった…

また作業用に @keyword.directive.c に目立つ色を指定した。

以前使った python スクリプトを発掘

#ifdef X #elseif #endif を対して define を指定して有効なブロックを残して、 無効ブロックを削除するスクリプト。 うまく処理できないケースもあるが無いよりは役に立つ。 うまくいかないところは手でなおす。

ひとつずつ減らして動作確認する

まとめて削除したらビルドは通るが動かなくなった。 少しずつ減らして、都度最低限の動作確認をして進める。 unittest とかあるといいのだけど無いし。 将来的には作りたいですね。

さらに、funcmap の index がずれる!。 都度、再生成させねばならない。注意。

作業前

> cloc --exclude-dir=docusaurus --match-f=\.[ch]$ .
142 text files.
142 unique files.
1 file ignored.

github.com/AlDanial/cloc v 1.90 T=0.14 s (1044.0 files/s, 511900.0 lines/s)
-------------------------------------------------------------------------------
Language files blank comment code
-------------------------------------------------------------------------------
C 88 4377 1868 55191
C/C++ Header 54 596 196 7395
-------------------------------------------------------------------------------
SUM: 142 4973 2064 62586
-------------------------------------------------------------------------------

cygwin?系

__CYGWIN__
SUPPORT_WIN9X_CONSOLE_MBCS
__DJGPP__
__MINGW32_VERSION
__EMX__
__WATT32__
-------------------------------------------------------------------------------
Language files blank comment code
-------------------------------------------------------------------------------
C 88 4318 1814 54247
C/C++ Header 54 593 196 7307
-------------------------------------------------------------------------------
SUM: 142 4911 2010 61554
-------------------------------------------------------------------------------

1000 行くらい減ったような。

Term系

USE_COLOR
USE_ANSI_COLOR
USE_BG_COLOR
USE_RAW_SCROLL
-------------------------------------------------------------------------------
Language files blank comment code
-------------------------------------------------------------------------------
C 88 4282 1801 53297
C/C++ Header 54 593 196 7267
-------------------------------------------------------------------------------
SUM: 142 4875 1997 60564
-------------------------------------------------------------------------------

1000 行くらい減ったような。 白黒になった。underline, reverse などはまだ健在。

mouse / menu / imagemap / image(sixelなど)

USE_MENU
MENU_MAP
MENU_SELECT
USE_MOUSE
USE_GPM
USE_IMAGE
-------------------------------------------------------------------------------
Language files blank comment code
-------------------------------------------------------------------------------
C 88 3817 1674 48125
C/C++ Header 54 587 194 7025
-------------------------------------------------------------------------------
SUM: 142 4404 1868 55150
-------------------------------------------------------------------------------

5000行くらい減った👀

文字コード系

USE_M17N
USE_UNICODE
ENABLE_NLS
-------------------------------------------------------------------------------
Language files blank comment code
-------------------------------------------------------------------------------
C 62 3256 1568 37780
C/C++ Header 33 393 198 5685
-------------------------------------------------------------------------------
SUM: 95 3649 1766 43465
-------------------------------------------------------------------------------

5000行くらい減った👀 ASCII モードになっちゃった。 ここで試しに libwc を削除したところビルド成功。 さらに7000行くらい減ったー。 これなら bohem GC をやめて std::string に乗りかえ出来るんでないか。

w3mimg

-------------------------------------------------------------------------------
Language files blank comment code
-------------------------------------------------------------------------------
C 55 2965 1471 35313
C/C++ Header 30 373 195 5585
-------------------------------------------------------------------------------
SUM: 85 3338 1666 40898
-------------------------------------------------------------------------------

未使用。

http以外のプロトコル

USE_NNTP
USE_GOPHER

いつのまにか消していて、どれくらい減ったかわらない。 たぶん、量的なインパクトは少ない。

FTP も消したいのだけど、マクロ制御じゃないようだ。 FTP は2本コネクションを張って複雑さを増やすので消すと簡単にできる。