load.pl

#!/bin/perl
#
# 京ポンブックマークツール編集(~Sys~Bookmark.datを書き換えます)
#
# ~Sys~Bookmark.dat を別フォルダとかにバックアップを取っておいてください。
#
# /Documents and Settings/ログイン名/My Documents/DataLinkKcr/Bookmark/
# フォルダで実行してください。
#
# ~Sys~Bookmark.datからの読み込み
# > perl load.pl 適当なファイル名.txt
#
# エディタで "適当なファイル名.txt" を編集。
#
#「形式」
# 番号‰名前‰URL‰フォルダ番号
# 
# ※ '‰' は消さないでください。
#
# ~Sys~Bookmark.datへの書き込み
# > perl save.pl ↑のファイル名.txt
#
# "京セラユーティリティソフトウェア for AH-K3001V"を立ちあげる

if($#ARGV != 0){
	print "usage : perl $0 出力txt\n";
	exit 1;
}

# 定数
$infile = "~Sys~Bookmark.dat";
$outfile = $ARGV[0];

$KUGIRI = '‰';

# ---------------------------------------------------------------------
# 始めに読みこみ
open(IFILE, "$infile") || die "can not open $infile";
binmode(IFILE);
@inbuf = ();
$filesize = 0;
while(1){
	if(!sysread(IFILE, $inbuf[$filesize], 1)){
		last;
	}			
	$filesize++;
}
close(IFILE);

# ---------------------------------------------------------------------
# 出力
open(OFILE, "> $outfile") || die "can not open $outfile";
$bp = 0x102; # なにか
$bp += 4;    # 個数

while($bp < $filesize){

	# 番号
	$bp += 4; # 0x2c 0x10 0x00 0x00
	printf(OFILE "%d$KUGIRI", unpack("c", $inbuf[$bp++]));
	$bp += 3;

	# 名前
	$sz = unpack("c", $inbuf[$bp++]);
	$name = "";
	for($i = 0; $i < $sz; $i++){
		$name = $name . $inbuf[$bp++];
	}
	printf(OFILE "%s$KUGIRI", $name);

	# URL
	$sz = unpack("c", $inbuf[$bp++]);
	$name = "";
	for($i = 0; $i < $sz; $i++){
		$name = $name . $inbuf[$bp++];
	}
	printf(OFILE "%s$KUGIRI", $name);

	# フォルダ番号
	printf(OFILE "%d\n", unpack("c", $inbuf[$bp++]));
	$bp += 3;

	$bp += 8;
}

close(OFILE);

exit 0;