MediBangファイルフォーマットの解析(Vimの勝手な改行の抑制)

MediBang Paint Proでmdp拡張子で保存するときの、xmlのフォーマットを自力で解析する続きです。
MediBangファイルフォーマットの解析(stringsコマンドを使う)」で使ったファイル中のタイムスタンプを書き換えたファイルを作成してみます。
新しく作るMediBangのファイルはnew.mdbとしました。

takk@deb8:~/Desktop$ cp file1.mdp new.mdp
takk@deb8:~/Desktop$ vi new.mdp


4行目のタイムスタンプを更新しました。

vimでZZで保存したら、このファイルをWindows上で動いているMediBangに読み込みます。


おかしいです。認識しません。このようなメッセージが表示されます。

ファイルサイズとかが変わっているのでしょうか?

takk@deb8:~/Desktop$ wc -c file1.mdp new.mdp
1195 file1.mdp
1196 new.mdp
2391 合計
takk@deb8:~/Desktop$ 

file1.mdpでは1195バイトだったのに、いつの間にやら1バイト増えています。

どこが増えたのでしょう。cmpで調べます。

takk@deb8:~/Desktop$ cmp -l !!:2 !!:3
cmp -l file1.mdp new.mdp
 303  70  71
cmp: file1.mdp でファイル終端 (EOF) に達しました
takk@deb8:~/Desktop$ 

new.mdpの一番最後に1バイト増えていることがわかりました。
一番最後の1バイトは何でしょうか。ダンプして確認します。

takk@deb8:~/Desktop$ od -tx1 -w1 -Ax -v new.mdp | tail
0004a3 00
0004a4 00
0004a5 00
0004a6 00
0004a7 00
0004a8 00
0004a9 00
0004aa 00
0004ab 0a
0004ac
takk@deb8:~/Desktop$ 

改行(0x0A)のようです。
Vimが保存する時に、改行を入れているようです。

勝手に改行を入れないように、バイナリ指定しましょう。
Vimで、:set binを実行した後、ZZで保存します。

では保存したファイルを確認してみます。

takk@deb8:~/Desktop$ wc -c file1.mdp new.mdp
1195 file1.mdp
1195 new.mdp
2390 合計
takk@deb8:~/Desktop$ cmp file1.mdp new.mdp
file1.mdp new.mdp 異なります: バイト 303、行 4
takk@deb8:~/Desktop$ 

できたnew.mdpをMediBangで開くと、


認識されました。

Leave a Reply

Your email address will not be published. Required fields are marked *

CAPTCHA