home *** CD-ROM | disk | FTP | other *** search
- WSP version 1.50 ; 小さな差分作成・更新プログラム
-
- 1993/06/03
- amaproワキチ(和田浩一)
-
-
- I. はじめに
-
- WSP.COMは、アップデートや共通性のあるファイルを小さくまとめる場合に利用します。例えば、アップデートにおいて利用する場合は、まず新旧のファイルを比較して違いのある部分を差分として取り出します。そして、この差分によりアップデートします。すなわち旧ファイルと差分ファイルから新ファイルを作成するわけです。また、いくつかの共通性のあるファイルをまとめる場合に、1つのファイルを元に差分の形で圧縮を実現することもできます。
- このようにして大きなファイルを小さな差分ファイルとして流通させることで、通信時間を短縮できます。また、フロッピーディスクなどの容量の限られた中に大量の情報を効率よく格納することもできます。
- 本プログラムの動作環境は、MS-DOS汎用です。従って、多くの機種で動作します。多くの人々にご利用いただければと思います。
- 本プログラムはフリーウェアです。自由に複写し使用して結構です。再配布もかまいません。商用の利用も結構です。ただし、この WSP.DOCと一緒に配布して下さい。なお、自己展開形式の差分ファイルについては単独で配布して結構ですが、WSPで作成したことと、これによるアップデートの方法を使用者が必ず明記して下さい。
- 本プログラムを使用して生じたいかなる損害に対しても作者は決して責任を負いません。使用者の責任の下でお使い下さい。
-
-
- II. 主な特長
-
- (1)どんなファイルにも対応し、小さな差分を作成します。
- 2つのファイルを比較し共通部分があれば、どんどん小さな差分を作成します。データ挿入、削除、書換え、移動に対応して差分を作成しますので、同一のルーチンを使っているものであれば別のプログラム間であっても有効に差分を作成できます。
-
- (2)自己展開形式の差分ファイルも作成できます。
- わずか1KB程の展開プログラムを差分ファイルに追加することで自己展開形式の実行ファイルを作成できます。これを使えば、実行するだけで簡単にアップデートできます。
-
- (3)差分ファイルにユーザーのメッセージを付加できます。
- メッセージを書いたファイルを差分ファイル作成時に指定すればその内容が取り込まれます。このメッセージは2種類あり、アップデート起動時に表示するものと、正常にアップデートできなかった場合に表示するものがあります。これらのメッセージは差分の内容表示で見ることができます。アップデートの内容や方法を指示するのに使用するとよいでしょう。
-
- (4)差分作成・更新・自己更新ファイルの作成を、小さく一つのプログラムにまとめました。
- プログラムサイズで性能を判断する人もいるようですが、本プログラムは実行速度を速く、十分な機能と使いやすさを考えながら、できる限り小さく作成しました。
-
- (5)複数の差分データを一つのファイルにまとめられます。
- 差分ファイルを結合することで、複数のファイルを一度にアップデートしたり、バージョンの異なるファイルからのアップデートなどが実現できます。もちろん自己展開形式においても同様に複数の差分のアップデートをまとめて行うことができます。
-
- (6)差分作成時に進行状態をグラフで表示します。
- 2つのファイルを比較して、共通部分と相違部分を区別して棒グラフを表示します。ファイルのどの部分に違いがあるかを知ることができます。
-
- (7)ウイルスの侵入を防ぐ自己チェック機能があります。
- プログラムの起動時に自動的にプログラムの内容が書き換えられているかどうかをチェックしています。もし、異状が見つかれば、警告メッセージを表示します。そして、使用できなくなります。コンピュータウイルスが本プログラムに侵入すると、直ちに発見されます。
-
-
- III. 使用方法
-
- ここでは、使い方について説明しますが、差分ファイルからのアップデートのみをご使用なさる場合は[1]アップデートの方法をお読み下さい。
-
- 本プログラムはMS-DOSのコマンドラインで WSP に続けてオプションスイッチとファイル名を入力することで実行できます。実行には十分なメモリ空間が必要ですので、子プロセスでの実行がメモリ不足のために動作しない場合もあります。
-
- オプションスイッチやファイル名の指定をしないで実行すると次のような簡単な使用法を画面に表示します。
-
- A>WSP
- WSP version 1.50 ; 小さな差分作成・更新プログラム
- copyright (C) amaproワキチ 1992-93
- ==============================================================================
- [1]アップデートおよび差分ファイルの内容表示
- WSP [-D | -T,B] diffile[.WUP] [outdir\]
- -D: 差分ファイルの内容表示
- -T: oldfile のタイムスタンプの比較を無効にしてアップデート
- -B: バックアップファイルを作成しない
- [2]差分ファイルの作成
- WSP [-A,M,!,Pn,Qn,Rn,W,N,O,L] oldfile newfile [diffile[.WUP] | selffile.COM]
- -A: 差分データの結合
- -M: エラー時のメッセージ取り込み -M=msgfile
- -!: 起動時のメッセージ取り込み -!=msgfile
- -P: ポインタの移動を決定する最小バイト数 (n=1-255)
- -Q: マッチング時のデータ置き換え最小バイト数 (n=1-255)
- -R: マッチングを決定する最小バイト数 (n=1-255)
- この P,Q,R オプションで差分の大きさが変化します.デフォルトは P21 Q7 R18
- -W: 徹底比較による差分作成
- -N: 新旧のファイル名が異なっている場合,newfileに統一
- -O: 新旧のファイル名が異なっている場合,oldfileに統一
- -L: ver1.20以前の旧形式の差分作成
- [3]差分ファイルから自己展開形式の実行ファイル作成(.COM)
- WSP -S diffile[.WUP] [selffile[.COM]]
-
-
- オプションスイッチの識別子には'-'か'/'が使用できます。また、オプションスイッチで使用する英文字は大文字と小文字の区別はありません。記述位置も前後いずれでも結構です。オプションスイッチは識別子を1つ前置すれば連続して記述できます。ただし、メッセージファイルの後は区切らなければなりません。
-
-
- [1]アップデートの方法
-
- 書式:
- WSP [-D | -T,B] 差分ファイル [出力ドライブ]
-
- WSP で作成したファイルには通常拡張子に'.WUP'が付けられています。例えば、UFO.COM のアップデートをする場合は、差分ファイル UFO.WUP と旧ファイルをカレントディレクトリに置いて次のように入力します。
-
- A>WSP UFO
-
- このように差分ファイルを指定するだけで簡単に実行できます。この際、旧ファイルは必ずカレントディレクトリに存在しなければなりません。差分ファイルについてはパス名の指定が可能です。
- 旧ファイル名とアップデート後のファイル名が同一の場合には旧ファイル名の先頭の1文字を'$'または'!'に置き換えてバックアップします。元のファイルの先頭の文字が'$'以外であれば'$'となり、'$'である場合は'!'となります。バックアップファイルと同名のファイルが既に存在しているときは書き換えてよいか確認があります。
- オプションスイッチ'-B'でバックアップファイルの作成をしないように指定することもできます。
-
- 例: A>WSP -B C:\SOFT\UFO
-
- 更新後のファイルをカレントドライブ以外に作成したい場合は、差分ファイル名の後にドライブ名を記述すると実行できます。この指定によって1つのドライブに書き込めないような大きなファイルのアップデートに有効です。また、ドライブ名の代わりにディレクトリ名を指定することもできます。
-
- 例: A>WSP B:UFO C:\
-
- 差分ファイルの内容を表示したい場合は、オプションスイッチ'-D'を指定します。これにより差分ファイルに格納されているすべてのアップデート情報を画面に出力します。その内容はアップデート対象のファイル名とタイムスタンプおよびメッセージです。
-
- 例: A>WSP -D UFO
-
- 原則としてアップデートするときには旧ファイルのタイムスタンプとファイルサイズを照合してから実行します。もし、タイムスタンプの異なっているファイルをアップデートに使いたい場合は、オプションスイッチの'-T'を指定して下さい。
-
- 例: A>WSP -T UFO
-
- 自己展開形式の差分ファイルを使用する場合は、カレントディレクトリに旧ファイルを置いて単に実行するだけでOKです。この場合にも同一ファイル名であればバックアップを作成します。ただし、バックアップファイルと同名のファイルが既に存在していても確認なしで実行します。
-
- なお、自己展開形式の差分ファイルであっても、通常の差分ファイルと同様にWSP.COMを使ってアップデートしたり、内容を表示することができます。従ってタイムスタンプの比較を無効にしてのアップデートもできるわけです。
-
- 例: A>WSP -T UFO_SUP.COM
-
-
-
- [2]差分ファイルの作成方法
-
- 書式:
- WSP [-A,M,!,Pn,Qn,Rn,W,N,O,L] 旧ファイル 新ファイル [差分ファイル]
-
- 例えば、旧UFO.COMがドライブB:に存在し、新UFO.COMがドライブC:に存在している場合の差分の作成方法は、次の通りです。
-
- A>WSP B:UFO.COM C:UFO.COM
-
- これを実行するとカレントディレクトリにUFO.WUPという差分ファイルが作成されます。この場合は差分ファイル名を省略しています。このように省略した場合は新ファイル名の拡張子をWUPに書き換えて差分ファイルを作成します。
-
- また、差分ファイル名を指定する場合は次のように記述します。
-
- 例: A>WSP B:UFO.COM C:UFO.COM UFO_UP
-
- なお、旧ファイル名と新ファイル名とは同じであっても、異なっていてもかまいませんが、作成時に指定したファイル名でアップデートされます。
-
- 差分作成時には、進行状態を棒グラフで表示します。共通部分は'='の記号で、また、違いのある部分は'*'の記号で表示します。従って、違いのある部分を確認できます。ただし、このプログラムでは64KBを1つのブロックとして比較していますので、64KB以上の大きなファイルでは正確に比較マップを表すことができません。
-
-
- 次に差分作成で使用できるオプションスイッチの説明をします。
-
- -A: 既に作成されている差分ファイルに差分データを結合します。
- これで複数の差分データを1つの差分ファイルにまとめられます。
- 作成する差分ファイルの大きさはいくら大きくても結構ですが、結合する差分データは60KB以内でなければなりません。ただし、最後に結合する差分データは60KBを越えても結構です。
-
- -M: エラー時に表示するメッセージファイルの取り込みをします。
- 例: A>WSP -M=B:MSG.TXT B:UFO.COM C:UFO.COM
- このように差分作成においてMSG.TXTを指定するとエラーメッセージを差分ファイル内に取り込みます。
- なお、メッセージファイルの大きさは 510バイト以内です。
- メッセージの内容はアップデート時にエラーの発生したときや内容表示を行ったときに出力されます。
-
- -!: 起動時に表示するメッセージファイルの取り込みをします。
- 例: A>WSP -!=B:MSG.TXT B:UFO.COM C:UFO.COM
- このように差分作成において、MSG.TXTを指定すると起動時メッセージを差分ファイル内に取り込みます。
- このメッセージを取り込んだ差分ファイルをアップデートすると、処理を開始する前にメッセージが表示されてキー入力待ちとなります。'Y'で処理が開始され、'N'でプログラムが終了します。
- このメッセージファイルの大きさには特に制限はありませんが、1画面を越えるものはスクロールしてしまいます。
-
- -P: ポインタの移動を決定する最小バイト数 (n=1-255)
- -Q: マッチング時のデータ置き換え最小バイト数 (n=1-255)
- -R: マッチングを決定する最小バイト数 (n=1-255)
- この P,Q,R オプションで差分の大きさが変化します。
- デフォルト値は P21 Q7 R18 です。
- 値については、ファイルの種類によって異なりますが、比較的共通部分の多いテキストファイル等では大きな値にすると有効な場合もあります。
-
- 例: A>WSP -P50Q10R200 B:UFO.DOC C:UFO.DOC
-
- -W: 徹底比較による差分作成
- 時間はかかりますが、少しでも小さな差分を作りたい場合に指定します。特にデータの前後への移動など複雑な違いのあるファイル間の差分作成において有効です。比較的共通している場合はかえって大きくなることがあります。なお、このオプションを指定したときは、共通部分のグラフ表示が'>'になります。
-
- -N: 新旧のファイル名が異なっている場合に新ファイル名に一致させます。
- -O: 新旧のファイル名が異なっている場合に旧ファイル名に一致させます。
- これら2つのオプションは、差分作成時に新旧のファイル名が異なっているときに、どちらかのファイル名に統一させる場合に指定します。
-
- -L: ver1.20以前の旧形式で差分を作成する。
- ver1.50で差分の形式が変わりました。従って、ver1.20以前のWSP.COMでは、本バージョンで作成した差分からのアップデートができません。そこで、このオプションを残しています。なお、ver1.50では全ての差分に対応してアップデートできます。
-
-
- 差分の大きさを少しでも小さくしたいのであれば、次のようにしてパラメータを決定するとよいでしょう。
-
- (1)最も大きさに影響するのは、-Qオプションであり、値をQ4~Q20の範囲で変化させてみて差分の大きさが最も小さくなる値を決定します。
-
- (2)-Wオプションをしていすると時間はかかりますが小さな差分となります。しかし、比較的共通したファイルの場合は、大きな差分となる場合もあります。
-
- (3)-Pオプションはデフォルト値としてP21としていますが、P10~P200の範囲で間隔を10程度あけて小さな差分となる値を捜すとよいでしょう。
-
- (4)-Rオプションはある程度大きくしておけば差分の大きさはあまり変わりません。テキストファイル等のような共通部分の大きい場合は、大きな値にしておくとよいでしょう。
-
- 以上の内容を参考にして小さな差分を作成して下さい。なお、簡単に小さな差分を作成したいのであれば、まず-Pと-Rオプションの値を決めて固定し、-Wオプションを指定して、-Qオプションの値を4から増やして決定するとよいでしょう。
-
-
-
- [3]自己展開形式の差分ファイルの作成方法
-
- これには次の2つの方法があります。
- (a)ファイルを比較して直接自己展開形式の差分ファイル作成
- この方法は、[2]差分ファイルの作成方法で示した書式と同様であり、違いは差分ファイル名の代わりに自己展開形式の差分ファイル名を指定します。拡張子は必ず.COMを指定して下さい。
- なお、オプションスイッチについても[2]差分ファイルの作成方法で示した内で、-A以外のものが使用できます。
-
- 例: A>WSP -W B:UFO.COM C:UFO.COM UFO_SUP.COM
-
- これによりUFO_SUP.COMという自己展開形式の差分ファイルが作成されます。
-
-
- (b)既に作成している差分ファイルから自己展開形式の差分ファイル作成
-
- 書式:
- WSP -S 差分ファイル [自己展開差分ファイル]
-
- 差分ファイルのみを指定した場合は差分ファイル名の拡張子を.COMに代えて作成します。
- それぞれの拡張子.WUP .COMは省略できます。
- 自己展開形式の差分ファイルが作成できるのは、差分ファイルの大きさが64KB以内のものに限ります。複数の差分データをまとめた差分ファイルであっても64KB以内であれば結構です。
-
- 例: A>WSP -S UFO UFO_SUP
-
- これによりUFO.WUPから自己展開形式の差分ファイルであるUFO_SUP.COMを作成します。
-
-
- IV. おわりに
-
- プログラム開発をされる皆さん、パソコン通信でアップロードされる皆さんにどんどんご使用いただき、電子情報の流通のお役に立てれば幸いです。パソコン通信のツールとして広くご利用いただけるよう今後も改善をしていきたいと考えております。皆様のご支援をよろしくお願いいたします。
-
- 最後になりますが、本プログラムの英語化、マニュアルの英訳、海外への窓口となっていただきました大久保謙二郎さんに深謝いたします。
- また、パソコン通信にて、本プログラムを使用して貴重なご意見をお寄せいただきました多くの皆さんに心よりお礼申し上げます。
-
-
- 連絡先(加入通信ネットとID番号)
- PC-VAN EAJ18280
- NIFTY-Serve GGB03657
- amaproワキチ(和田浩一)
-
-
-
- プログラム履歴
-
- version 1.00 92/09/05 初版
-
- version 1.01 92/09/13
- (1)メモリ管理の違いで機種により動作しなかったバグを修正
- (2)ファイル名の指定において大小文字が混在したときのバグを修正
- (3)自己展開形式の差分ファイルの実行においても、旧ファイルのチェックとしてタイムスタンプのみでなく、ファイルサイズの照合も行うようにした。また、バックアップファイルの作成や起動時のメモリチェックも行うように変更
- (4)バックアップファイルの作成において拡張子に'.BAK'を使用していたが、ファイル名の先頭の文字を'$'または'!'に置き換えるように変更
- (5)オプションスイッチにバックアップファイルを作成しないようにする'-B'と差分ファイルをさらに小さくするためのパラメータ'-Q'を追加
-
- version 1.11 92/09/26
- (1)差分ファイルの作成において、処理の進行状態をグラフで表示するように変更
- (2)アップデートにおける起動時のメッセージに、ユーザーの作成したものを使用できるように変更
- (3)自己展開形式の実行プログラムにおいても、(2)のメッセージ表示機能やメモリ不足時のエラーメッセージを追加
- (4)オプションスイッチに'-N'と'-O'を追加
- これらは差分作成時に新旧のファイル名が異なっている場合、アップデート時のファイル名を新ファイルか旧ファイルに統一させるものである。
-
- version 1.12 92/09/28
- (1)旧ファイルのサイズが64KB以内のものと、新ファイルのサイズが64KB以上のファイル間で差分が作成できなかったバグを修正
- (2)差分作成時のグラフ表示において、新ファイルのサイズが64KB以上の場合、グラフが数行にわたって表示されるバグを修正
-
- version 1.20 92/12/23
- (1)画面表示においてPC98シリーズ固有のエスケープシーケンスコードの使用をやめ、完全にMS-DOSに対応
- (2)ファイルサイズが小さい場合に差分作成中のグラフ表示が途中で終わってしまうバグを修正
- (3)ディスクがいっぱいになっても処理を続けていたバグを修正
-
- version 1.50 93/06/01
- (1)差分のサイズを小さくするために差文ファイルの形式を変更
- (2)表示メッセージを英語化した英語版WSP完成
- (3)差分作成時のグラフ表示を変更
- (4)コンピュータウイルスの侵入を防ぐプログラムの自己チェック機能を追加
- (5)次のバグを修正
- ・一部のファイルで差文作成中にハングアップする
- ・60KB以上の大きさの差文の結合時に不良な差分を作成する
- ・自己展開差文の作成において、COM形式にも関わらず64KB以上の実行ファイルを作成する
- (6)パラメータの記述に関して次のような変更
- ・1つのファイル名の記述を25バイトまでであったものを47バイトに拡張
- ・オプションスイッチを連続して記述できるように変更
- ・ディレクトリの指定で最後に'\'を置かなくても指定できるように変更
- (7)その他の変更事項
- ・-Aオプションにおいて結合対象のファイルが存在しない場合は新規にファイルを作成するように変更
- ・結合において途中でファイル名を誤った場合にも結合対象となっているファイルを削除しないように変更
- ・自己展開形式の差分ファイルを実行したときのメッセージの表示を変更
- ・ver.1.20以前の旧形式の差分を作成するオプションスイッチ-Lの追加
-