[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
2003/03/30 04:35 from msyk
Title: [teenbbs:1428] lwip v0.5.3 for djgpp (2)

No.   : 1428
Sender: msyk
URL   : 
Title : lwip v0.5.3 for djgpp (2)

かなり前に作った fsdata.c のファイル・データ部分を作成するための
バッチ・ファイルです.
#ファイル・システムの記述部分は手作業で十分変更可能でしょう.

-------------------- datgen.bat --------------------
@echo off
bu -nnode strtoknode1 %1
if exist %node%.dat goto alert
perl -S hex.pl %1 | fold -b --width=20 | sed -f formdat.sed > %node%.dat
:perl -S hex2.pl %1 | sed -f formdat.sed > %node%.dat
goto end

:alert
echo %node%.dat already exists.

:end
set node=
----------------------------------------------------

---------------------- hex.pl ----------------------
open(I, $ARGV[0]);
binmode(I);
while(<>){
	s/(.)/sprintf('%02x', ord($1))/eg;
	s/\n/0a/;
	print;
	}
close(I);
----------------------------------------------------

--------------------- hex2.pl ----------------------
open(I, $ARGV[0]);
binmode(I);
while($rc = read(I, $buf, 10)){
	for($i = 0 ; $i < $rc ; $i++){
		$c = unpack("C", substr($buf, $i));
		printf("%02x", $c);
	}
	print "\n";
}
close(I);
----------------------------------------------------

------------------- formdat.sed --------------------
s/\(..\)/0x\1/g
s/^\(.*\)$/\t\1/
s/\(0x..\)/\1, /g
s/0x0\([^0]\)/0x\1/g
s/0x00/00/g
----------------------------------------------------

使用ソフトは bu, tu (Si さん作), perl v5.005_02, fold (djgpp の
textutils に収録), sed (logos 版 v2.42).
出力ファイルは入力ファイルの 10 倍以上の大きさになるので注意.

入力ファイルがテキストの場合は行末は 0d0a でなければいけませんが,
チェックしていませんので 0d0a 以外の場合は適宜変換して下さい.

hex.pl および hex2.pl は internet でどこだったか忘れてしまった
サイトにあったスクリプトをちょこっといじったくらいなので
私に著作権はありません(^^;;

[レスを書く]