#!/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;