mirror of
https://github.com/opsxcq/mirror-textfiles.com.git
synced 2025-08-12 22:13:58 +02:00
346 lines
15 KiB
Plaintext
346 lines
15 KiB
Plaintext
BDIFF/BUPDATE: Binary file differencer/updater
|
|
|
|
What they do?
|
|
=============
|
|
Bdiff creates a binary difference between two files. On unix like systems,
|
|
many people use diff and patch to update source files. They are very powerful
|
|
for "line oriented" data. However, they are incapable of handling binary data.
|
|
Modifying a single line in source file amounts to a considerable difference
|
|
in its compiled object. Calling address, variable address, segment value, they
|
|
will all change even when object's structure remains similar.
|
|
Bdiff creates the difference of two objects. Suppose, the difference will be
|
|
much smaller than whole new object file. With bupdate and "old object file",
|
|
you can create new object file from the difference file.
|
|
|
|
What's good?
|
|
============
|
|
The merit of size, is very important if you distribute the difference on
|
|
line. And there is another reason to use difference. Only the person who
|
|
has "old version" can get new version of program. So, you can release the
|
|
update information of your charged program (commercial, shareware, etc.).
|
|
You do no need to bundle a document again. Cause, who use it, must have a
|
|
document bundled with the package of older version.
|
|
Bdiff can pack many difference files into one file. You can see the
|
|
information of differences the file contents with bupdate command. With
|
|
composite difference file, you can update many files of a package at once.
|
|
Of course, not only program file, but document file can be updated with
|
|
BDIFF/BUPDATE. It is not so effective than to use diff/patch. Nevertheless,
|
|
it is much more convenient.
|
|
Not only differences of different files, you can pack the differences for
|
|
same file, but between different versions.
|
|
Suppose you released a program versions 1.1, 1.2, and 1.3. You can not guess
|
|
who holds which version. In such case, you can pack respective differences
|
|
between 1.1 and 1.2, between 1.2 and 1.3, and finally between 1.3 and the new
|
|
version 1.4.
|
|
The holder of the program version 1.2, can update from his version to 1.3
|
|
then to 1.4. Bupdate checks the version and does this incremental updating
|
|
to the newest and will report its actions on the screen. You just watch it.
|
|
Difference data to incremental update, is more effective in the size than
|
|
the sum of all differences between new version and every respective version.
|
|
|
|
|
|
NOTE
|
|
====
|
|
"CURRENT" outputs of Bdiff is not so compact. They must be larger than 1/8
|
|
of original program file size. You had better use compressing tools such as
|
|
LHarc to get down the size of up- downloading. In future version of Bdiff,
|
|
you may expect to have compressed output directly.
|
|
If you use RCS for maintenance of source files, and write RCS header in
|
|
the program, you can let Bdiff automatically scan the header. Bdiff will
|
|
modify time stamps of files from the scan, and will record revision number
|
|
into difference file. This function of Bdiff makes maintenance of version
|
|
easier.
|
|
If there is large difference between two files, Bdiff may fail to create
|
|
difference. The difference must be smaller than 16KB.
|
|
Bdiff is effective enough for code changing, inserting, and deleting. But
|
|
it is not so for moving. Future version may be improved.
|
|
|
|
|
|
********** BDIFF
|
|
|
|
Usage:
|
|
======
|
|
BDIFF [-swindow[:rate]] [(-r|-x)] [-i] [-a] [-v[rev:rev]] oldfile newfile [diffile]
|
|
|
|
You have to assume two file names of old version file, and new version file.
|
|
You can not omit them. Of course, they are not the same name. To make
|
|
difference between two versions of a.exe, please rename older versions of a.exe
|
|
as a.old or such name. Otherwise, place them in different directories.
|
|
You may not modify <newfile> name instead of <oldfile>. Because, This name
|
|
is recorded into differnce file, and used on updating.
|
|
Bdiff may cause some confusion when it meets a file with version number in
|
|
its name.
|
|
The output has the name <diffile> if you specify it, otherwise the output
|
|
has the name combined with a prime name of <newfile> and default extension of
|
|
".bdf". You can omit <diffile> argument usually.
|
|
|
|
Suppose you create difference between bdiff123.exe and bdiff124.exe, you type:
|
|
|
|
bdiff bdiff123.exe bdiff124.exe
|
|
|
|
to have the diffile bdiff124.bdf by default. The name implies that this
|
|
diffile is to update a program with name bdiff124.ext not bdiff123.ext.
|
|
The file bdiff123.bdf will try to update bdiff123.exe while bdiff124.bdf
|
|
searches for bdiff124.exe. You can not expect your user to have bdiff124.exe
|
|
since this is going to be the new version. If you type
|
|
|
|
bdiff bdiff123.exe bdiff124.exe bdiff123.bdf
|
|
^^^^^^^
|
|
then you can get the BDF file with proper name. When you omit <diffile>
|
|
please be aware of the fact that <diffile> name is recorded in itself.
|
|
|
|
There are some options. I will describe them below.
|
|
|
|
Options:
|
|
========
|
|
-s: To assume data span and required match rate in comparing. To assume
|
|
span, use unit of byte. To assume ratio, use unit of per-cent.
|
|
Default value of span is 15 bytes, and rate is 66%. It means if 10
|
|
characters in each 15 succeeding characters of two compared files
|
|
match, Bdiff believes two sets of data synchronize.
|
|
If some data insertion/deletion occurs, data sync is broken. Then,
|
|
Bdiff scans the context, and restart from a new position at which such
|
|
sync is possible.
|
|
Default values are reasonable to compare normal dos executable files.
|
|
However, if you want to compare source/document files, you'd better
|
|
assume large sapn/rate values. For example, -s20:100 option will give
|
|
more effective outputs.
|
|
If you do not specify rate you will have the default value of 80%.
|
|
-r: Good for source files. Output size remains the same if this option is
|
|
on or off. Nevertheless, "compressed" file size may vary.
|
|
I am not sure if this option may be valid in the future compatibility.
|
|
-x: Output "reverse" difference data with normal data. BDF files
|
|
created with -x option, supports "version down" if need.
|
|
Note that output contains a part of <oldfile>. Be careful about
|
|
valid dates of copyright statement.
|
|
-i: Suppress time stamp comparison. Bupdate first check time stamp,
|
|
sum, length of target to insure updating correct file. Of course,
|
|
it is good way to compare time stamp. But if you loose released file,
|
|
and time stamp is unknown (though contents of files are equal),
|
|
use this option.
|
|
RCS header will try to avoid such cases.
|
|
-a: Append difference data after existing BDF file. With this option,
|
|
you can pack the difference of different files, between different
|
|
versions.
|
|
-v: You can assume revisions of <oldfile> and <newfile> with this option.
|
|
If you write RCS header in the objects, Bdiff records each version
|
|
number in a difference file. If you don't, it is encouredged to assume
|
|
each version number with this option.
|
|
With -v option, Bdiff refrains from correcting time stamps even with
|
|
RCS header. If you don't want to modify time stamp, use this option.
|
|
|
|
Return value
|
|
============
|
|
0 for normal case, 1 for error.
|
|
|
|
Compatibility with older versions:
|
|
================================
|
|
Omitted.
|
|
PLEASE USE BDIFF1.2x OR LATER.
|
|
|
|
Examples:
|
|
=========
|
|
Creating difference between Bdiff.old(1.1) and Bdiff.exe(1.2).
|
|
bdiff bdiff.old bdiff.exe
|
|
will create bdiff.bdf which is a difference between versions 1.1->1.2.
|
|
|
|
Creating "reverse" difference.
|
|
bdiff -x bdiff.old bdiff.exe
|
|
|
|
Creating difference between non-RCS headered programs.
|
|
bdiff -v1.1:1.2 bdiff.old bdiff.exe
|
|
|
|
Add difference of document into created BDF file.
|
|
bdiff -a -s20:100 bdoc.old bdiff.doc bdiff.bdf
|
|
You do not need to specify Extension of "bdiff.bdf".
|
|
|
|
|
|
********* BUPDATE
|
|
|
|
Usage:
|
|
======
|
|
BUPDATE (-v | -d | -x [-i[s]] [-r] [-o] [-wdir]) diffile [file[;source]..]
|
|
|
|
Bupdate updates files using a deference file created by Bdiff. If more
|
|
than one difference is encountered in a single BDF file, Bupdate updates
|
|
all files required.
|
|
It is also used to display the contents of BDF file, and to remove
|
|
some differences in a composite-difference BDF file.
|
|
File names to update, are written in a BDF file. So most simple use,
|
|
only BDF file name is required for an argument, regardless of single difference
|
|
BDF or multiple differences BDF. To update bdiff.exe from 1.1 to 1.2,
|
|
type:
|
|
|
|
bupdate bdiff.bdf
|
|
or bupdate bdiff
|
|
|
|
In normal usage, you actually not need to type filename extension ".bdf".
|
|
After updating, extension of original files to update, will be modified
|
|
as ".org". If a file with an extension ".org" already exists, its extension
|
|
will be renamed as ".nnn" where nnn is a 3 digit number.
|
|
You can also give file name templates after BDF file name. They can
|
|
include wildcards in themselves. If they assumed, bupdate procceeds execution
|
|
for only files whose name match to the templates. To update exe files only, use
|
|
"*.exe" as a template.
|
|
Type:
|
|
|
|
bupdate bdiff *.exe
|
|
|
|
when you have files bdiff.exe and bdiff.doc in the curent directory.
|
|
You can add a "path" for the templates. This is useful in updating files
|
|
in some other directory. In case when files to be updated are in drive C:,
|
|
type:
|
|
bupdate foo.bdf c:*.*
|
|
|
|
Updating files must have exactly the same contents to the ones used to
|
|
create differences. Bupdate checks time stamps, sums, lengths. For some
|
|
reason, if you want time stamp comparison to be ignored, use -i option which
|
|
is described below. If -i option was assumed on creating difference, time
|
|
comparison is always ignored.
|
|
|
|
Options:
|
|
========
|
|
-v: Verbosely outputs contents of BDF file. Prints file names to update,
|
|
time stamps of old and new versions of the file, their file size,
|
|
their revisions, and BDF file size.
|
|
This option is useful to see what version is required to update.
|
|
|
|
-d: Deletes differences whose name match to file name templates given.
|
|
Original BDF file is renamed as ".bak", and saved.
|
|
|
|
-x: Updates files. Without -v and -d options, this option assumed as a
|
|
default.
|
|
|
|
-i: Ignores time stamps. If you modified time stamps of updating files
|
|
for some reason(ex. re-compiling), this option will help you.
|
|
|
|
-is: Ignores time stamps and sums. This option is useful to update "patched"
|
|
versions of files.
|
|
Assuming you have a1.exe, and a1a.exe watch is patched version of
|
|
a1.exe. When a2.exe, which is a new version of a1.exe, released,
|
|
first creates difference between a1.exe and a2.exe. Then assume it
|
|
to a1a.exe with -is option. You may get a good version of a2a.exe
|
|
under favorable circumustances.
|
|
|
|
-r: Updates in reverse order. It means "version down". Create <oldfile>
|
|
from <newfile> for bdiff. Of course, BDF file must be created with
|
|
-x option.
|
|
|
|
-o: Omitting backups. As described above, original files are renamed and
|
|
preserved. This is to save disk space when you try incremental
|
|
updates. With this option, all original files are discarded.
|
|
RESERVE ORIGINAL FILES BEFORE UPDATING WITH -o OPTION, OR APPLY TO
|
|
COPIED FILES ONLY.
|
|
|
|
-w: Specify Working directory.
|
|
|
|
Return value:
|
|
=============
|
|
0 for success updating all files, 1 for error updating at least one file.
|
|
|
|
|
|
Compatibility to older versions:
|
|
================================
|
|
OMITTED. USE BUPDATE1.2x OR LATER.
|
|
|
|
|
|
Source file assuming:
|
|
====================
|
|
As explained above, <newfile> name is used as a updating file name. If it has
|
|
version numbers in it, the kind of trouble you may expect is as follows.
|
|
Suppose program distributer is going to update BDIFF123 to BDIFF124.
|
|
distributer types:
|
|
|
|
bdiff bdiff123.exe bdiff124.exe
|
|
|
|
and bdiff124.bdf will be created. What happens then? You as a user have the
|
|
difference bdiff124.bdf and bdiff123.exe. While, Bupdate looks for
|
|
bdiff124.exe to update. You have to copy bdiff123.exe into bdiff124.exe
|
|
or rename so before updating. Sounds complicated.
|
|
In such case, source file assuming will do. You can give a source file name
|
|
just after filename templates separated by a semi-colon. Templates are exact
|
|
source file names, should not have wildcards. In case above, you type:
|
|
|
|
bupdate bdiff124.bdf bdiff124.exe;bdiff123.exe
|
|
|
|
to avoid copying. If bdiff124.bdf encounters only one difference, you can
|
|
type in short:
|
|
|
|
bupdate bdiff124 ;bdiff123.exe
|
|
|
|
After all, I dare to say including a version number in a file name is not
|
|
a good manner. Use time stamp instead.
|
|
|
|
|
|
************ modtime
|
|
|
|
Usage:
|
|
modtime filename
|
|
|
|
This program is used to set time stamp according to RCS header included.
|
|
Modify time stamp before INITIAL release. It will make you free from
|
|
remembering time stamp of released one.
|
|
|
|
|
|
|
|
************ bupmini
|
|
|
|
Usage:
|
|
bupmini bdf_file
|
|
|
|
This tiny program is for update only. This program does not have the
|
|
ability to display or modify the contents of BDF file.
|
|
This program acts just as bupdate with -o option, does NOT create backups.
|
|
You have to preserve origainal files for your own sake.
|
|
Slightly modified version of bupmini, makes "self updating" BDF file enable.
|
|
Please contact us for such version.
|
|
|
|
+-------------------------------------------------------+
|
|
|This file is not contained in English Version of Bdiff.|
|
|
+-------------------------------------------------------+
|
|
|
|
************ COPYRIGHT and OTHERS
|
|
|
|
Term of "this program" described below, means all programs and documents
|
|
contained in this archive. And what described below, are affected to this
|
|
version only. They may be changed without notice in future.
|
|
|
|
On distributing and using:
|
|
==========================
|
|
* All copyrights of this program are reserved by the author.
|
|
* You can distribute this program freely if
|
|
- distributing this program only (not with other programs)
|
|
- not changed
|
|
- free without media charge
|
|
- not any copyrights restricted by distributing (it means, for example,
|
|
never upload on a BBS who claims copyrights of uploaded programs).
|
|
* You can use this program to create difference free, and release difference
|
|
data created by this program free, regardless of commercial or no-commercial
|
|
base.
|
|
* Please contact us to use this program itself (ex. adding update program
|
|
with difference, and distributing it).
|
|
* NO WARRANTY OF THIS PROGRAM. THIS PROGRAM IS SUPPLIED AS-IS.
|
|
WE ASSUME NO LIABILITY FOR DAMAGES DIRECT OR CONSEQUENTIAL, WHICH MAY RESULT
|
|
FROM THE USE OF THIS PROGRAM.
|
|
|
|
|
|
|
|
Toshiyuki TANAKA
|
|
TNT Technology corp.
|
|
|
|
KAKINOKIZAKA 3-6-7-111,
|
|
MEGURO, TOKYO
|
|
152 JAPAN
|
|
|
|
+813-795-0168 may accept
|
|
your "AUTO DIALED" fax.
|
|
|
|
Oversea Users Contact
|
|
K.Okubo Genie,
|
|
74100,2565 Compuserve,
|
|
or E-Mail address:
|
|
c31834@sinet.ad.jp
|
|
|
|
|
|
|