Home | History | Annotate | only in /src/usr.bin/vndcompress
History log of /src/usr.bin/vndcompress
RevisionDateAuthorComments
 1.14 18-Nov-2014  riastradh Fix vndcompress restart failure fallback when input is a pipe.

Defer seeking the *input* image, or winding it forward, until we are
certain we all ready in the cloop2 output, because when the input
image is a pipe, we don't get a chance to seek back to the beginning
and start from the top instead of restarting.

If restart does fail, don't try to seek the input image back to the
beginning unless we had already tried to seek or wind it forward.

Add some automatic tests for this and related cases.

XXX pullup to netbsd-7, netbsd-6
 1.13 22-Jan-2014  riastradh branches: 1.13.4;
Change vndcompress to use a default window size of 512.

For vnduncompress on nonseekable input, the window size is as large
as it needs to be by default, as before. Not clear that this is the
right choice -- by default vnduncompress on nonseekable input will
just use unbounded memory unsolicited.
 1.12 22-Jan-2014  riastradh Rename block size option from `-s' to `-b'.

Makes more sense and makes it consistent with other utilities such as
pax and pigz. This vndcompress has never gone out in a release, so
changing the name of the option shouldn't cause too many problems...
 1.11 22-Jan-2014  riastradh Fix up ulimited vndcompress tests and explain what's up with them.
 1.10 22-Jan-2014  riastradh Add some simple automatic tests for window sizes.
 1.9 22-Jan-2014  riastradh Add comment explaining why piperestart.cl2part is allowed to fail.
 1.8 22-Jan-2014  riastradh Add WARNS=5.
 1.7 22-Jan-2014  riastradh Use write-to-temporary/rename-to-permanent pattern in Makefile.
 1.6 22-Jan-2014  riastradh Abstract handling of the cloop2 offset table.

Preparation for converting it to use a fixed-size window.
 1.5 22-Jan-2014  riastradh Move vndcompress utilities to utils.c.
 1.4 11-Aug-2013  dholland Remove redundant WARNS=5.
 1.3 03-May-2013  riastradh Rewrite vndcompress to support SIGINFO and restart after interrupt.

Make it generally more robust in the process.

No objection (or comment) on tech-userlevel.

ok christos
 1.2 14-Apr-2009  lukem branches: 1.2.6; 1.2.8; 1.2.12;
Enable WARNS=4 by default for usr.bin, except for:
awk bdes checknr compile_et error gss hxtool kgetcred kinit
klist ldd less lex locale login m4 man menuc mk_cmds
mklocale msgc openssl rpcgen rpcinfo sdiff spell ssh
string2key telnet tn3270 verify_krb5_conf xlint
 1.1 25-Jul-2005  hubertf branches: 1.1.1;
Initial revision
 1.1.1.1 25-Jul-2005  hubertf branches: 1.1.1.1.2; 1.1.1.1.32;
Add vndcompress(1) and vnduncompress(1) to transform filesystem/disk
images from "normal" into cloop2-format compressed images and back.
Written by Florian Stoehr (netbsd@wolfnode.de) with some polishing
by me.

Compressed disk images can be used with the vnd(4) driver when compiled with
VND_COMPRESSION and "vnconfig -z". Useful for creation of Live CDs/DVDs.
 1.1.1.1.32.1 13-May-2009  jym Sync with HEAD.

Third (and last) commit. See http://mail-index.netbsd.org/source-changes/2009/05/13/msg221222.html
 1.1.1.1.2.2 16-Aug-2005  tron Pull up revision 1.1 (requested by hubertf in ticket #667):
Add vndcompress(1) and vnduncompress(1) to transform filesystem/disk
images from "normal" into cloop2-format compressed images and back.
Written by Florian Stoehr (netbsd@wolfnode.de) with some polishing
by me.

Compressed disk images can be used with the vnd(4) driver when compiled with
VND_COMPRESSION and "vnconfig -z". Useful for creation of Live CDs/DVDs.
 1.1.1.1.2.1 25-Jul-2005  tron file Makefile was added on branch netbsd-3 on 2005-08-16 12:03:44 +0000
 1.2.12.2 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.2.12.1 23-Jun-2013  tls resync from head
 1.2.8.2 24-Mar-2015  snj Pull up following revision(s) (requested by riastradh in ticket #1269):
usr.bin/vndcompress/Makefile: revision 1.14
usr.bin/vndcompress/vndcompress.c: revision 1.25
Fix vndcompress restart failure fallback when input is a pipe.
Defer seeking the *input* image, or winding it forward, until we are
certain we all ready in the cloop2 output, because when the input
image is a pipe, we don't get a chance to seek back to the beginning
and start from the top instead of restarting.
If restart does fail, don't try to seek the input image back to the
beginning unless we had already tried to seek or wind it forward.
Add some automatic tests for this and related cases.
XXX pullup to netbsd-7, netbsd-6
 1.2.8.1 07-Dec-2014  martin Pull up following revision(s) (requested by riastradh in ticket #1138):
usr.bin/vndcompress/Makefile 1.3-1.13
usr.bin/vndcompress/common.h 1.1-1.6
usr.bin/vndcompress/main.c 1.1-1.3
usr.bin/vndcompress/offtab.c 1.1-1.13
usr.bin/vndcompress/offtab.h 1.1-1.2
usr.bin/vndcompress/utils.c 1.1-1.4
usr.bin/vndcompress/utils.h 1.1-1.3
usr.bin/vndcompress/vndcompress.1 1.7-1.14
usr.bin/vndcompress/vndcompress.c 1.8-1.24
usr.bin/vndcompress/vndcompress.h delete
usr.bin/vndcompress/vnduncompress.c 1.1-1.11
Rewrite vndcompress to support SIGINFO and restart after interrupt.
Make it generally more robust in the process.
 1.2.6.1 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.13.4.1 18-Mar-2015  snj Pull up following revision(s) (requested by riastradh in ticket #609):
usr.bin/vndcompress/Makefile: revision 1.14
usr.bin/vndcompress/vndcompress.c: revision 1.25
Fix vndcompress restart failure fallback when input is a pipe.
Defer seeking the *input* image, or winding it forward, until we are
certain we all ready in the cloop2 output, because when the input
image is a pipe, we don't get a chance to seek back to the beginning
and start from the top instead of restarting.
If restart does fail, don't try to seek the input image back to the
beginning unless we had already tried to seek or wind it forward.
Add some automatic tests for this and related cases.
XXX pullup to netbsd-7, netbsd-6
 1.8 29-Jul-2017  riastradh Clarify compile-time and run-time arithmetic safety assertions.

This is an experiment with a handful of macros for writing the
checks, most of which are compile-time:

MUL_OK(t, a, b) Does a*b avoid overflow in type t?
ADD_OK(t, a, b) Does a + b avoid overflow in type t?
TOOMANY(t, x, b, m) Are there more than m b-element blocks in x in type t?
(I.e., does ceiling(x/b) > m?)

Addenda that might make sense but are not needed here:

MUL(t, a, b, &p) Set p = a*b and return 0, or return ERANGE if overflow.
ADD(t, a, b, &s) Set s = a+b and return 0, or return ERANGE if overflow.

Example:

uint32_t a = ..., b = ..., y = ..., z = ..., x, w;

/* input validation */
error = MUL(size_t, a, b, &x);
if (error)
fail;
if (TOOMANY(uint32_t, x, BLKSIZ, MAX_NBLK))
fail;
y = HOWMANY(x, BLKSIZ);
if (z > Z_MAX)
fail;
...
/* internal computation */
__CTASSERT(MUL_OK(uint32_t, Z_MAX, MAX_NBLK));
w = z*y;

Obvious shortcomings:

1. Nothing checks your ctassert matches your subsequent arithmetic.
(Maybe we could have BOUNDED_MUL(t, x, xmax, y, ymax) with a
ctassert inside.)

2. Nothing flows the bounds needed by the arithmetic you use back
into candidate definitions of X_MAX/Y_MAX.

But at least the reviewer's job is only to make sure that (a) the
MUL_OK matches the *, and (b) the bounds in the assertion match the
bounds on the inputs -- in particular, the reviewer need not derive
the bounds from the context, only confirm they are supported by the
paths to it.

This is not meant to be a general-purpose proof assistant, or even a
special-purpose one like gfverif <http://gfverif.cryptojedi.org/>.
Rather, it is an experiment in adding a modicum of compile-time
verification with a simple C API change.

This also is not intended to serve as trapping arithmetic on
overflow. The goal here is to enable writing the program with
explicit checks on input and compile-time annotations on computation
to gain confident that overflow won't happen in the computation.
 1.7 16-Apr-2017  riastradh Emphasize that MAX_WINDOW_SIZE is bounded by the maximum uint32_t.

Since we store window sizes in uint32_t, the maximum had better fit
in uint32_t!
 1.6 22-Jan-2014  riastradh branches: 1.6.4; 1.6.8; 1.6.12; 1.6.16;
Change vndcompress to use a default window size of 512.

For vnduncompress on nonseekable input, the window size is as large
as it needs to be by default, as before. Not clear that this is the
right choice -- by default vnduncompress on nonseekable input will
just use unbounded memory unsolicited.
 1.5 22-Jan-2014  riastradh Rename block size option from `-s' to `-b'.

Makes more sense and makes it consistent with other utilities such as
pax and pigz. This vndcompress has never gone out in a release, so
changing the name of the option shouldn't cause too many problems...
 1.4 22-Jan-2014  riastradh Add option -w to vnd(un)compress to specify the window size.
 1.3 22-Jan-2014  riastradh Add some leading zero digits to the flags. Cosmetic change only.
 1.2 22-Jan-2014  riastradh Implement machinery for fixed-size windows into the offset table.
 1.1 03-May-2013  riastradh branches: 1.1.2;
Rewrite vndcompress to support SIGINFO and restart after interrupt.

Make it generally more robust in the process.

No objection (or comment) on tech-userlevel.

ok christos
 1.1.2.3 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.1.2.2 23-Jun-2013  tls resync from head
 1.1.2.1 03-May-2013  tls file common.h was added on branch tls-maxphys on 2013-06-23 06:29:02 +0000
 1.6.16.1 21-Apr-2017  bouyer Sync with HEAD
 1.6.12.1 26-Apr-2017  pgoyette Sync with HEAD
 1.6.8.2 07-Dec-2014  martin Pull up following revision(s) (requested by riastradh in ticket #1138):
usr.bin/vndcompress/Makefile 1.3-1.13
usr.bin/vndcompress/common.h 1.1-1.6
usr.bin/vndcompress/main.c 1.1-1.3
usr.bin/vndcompress/offtab.c 1.1-1.13
usr.bin/vndcompress/offtab.h 1.1-1.2
usr.bin/vndcompress/utils.c 1.1-1.4
usr.bin/vndcompress/utils.h 1.1-1.3
usr.bin/vndcompress/vndcompress.1 1.7-1.14
usr.bin/vndcompress/vndcompress.c 1.8-1.24
usr.bin/vndcompress/vndcompress.h delete
usr.bin/vndcompress/vnduncompress.c 1.1-1.11
Rewrite vndcompress to support SIGINFO and restart after interrupt.
Make it generally more robust in the process.
 1.6.8.1 22-Jan-2014  martin file common.h was added on branch netbsd-6 on 2014-12-07 13:57:58 +0000
 1.6.4.2 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.6.4.1 22-Jan-2014  yamt file common.h was added on branch yamt-pagecache on 2014-05-22 11:42:51 +0000
 1.3 22-Jan-2014  riastradh branches: 1.3.4; 1.3.8;
Rename block size option from `-s' to `-b'.

Makes more sense and makes it consistent with other utilities such as
pax and pigz. This vndcompress has never gone out in a release, so
changing the name of the option shouldn't cause too many problems...
 1.2 22-Jan-2014  riastradh Add option -w to vnd(un)compress to specify the window size.
 1.1 03-May-2013  riastradh branches: 1.1.2;
Rewrite vndcompress to support SIGINFO and restart after interrupt.

Make it generally more robust in the process.

No objection (or comment) on tech-userlevel.

ok christos
 1.1.2.3 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.1.2.2 23-Jun-2013  tls resync from head
 1.1.2.1 03-May-2013  tls file main.c was added on branch tls-maxphys on 2013-06-23 06:29:02 +0000
 1.3.8.2 07-Dec-2014  martin Pull up following revision(s) (requested by riastradh in ticket #1138):
usr.bin/vndcompress/Makefile 1.3-1.13
usr.bin/vndcompress/common.h 1.1-1.6
usr.bin/vndcompress/main.c 1.1-1.3
usr.bin/vndcompress/offtab.c 1.1-1.13
usr.bin/vndcompress/offtab.h 1.1-1.2
usr.bin/vndcompress/utils.c 1.1-1.4
usr.bin/vndcompress/utils.h 1.1-1.3
usr.bin/vndcompress/vndcompress.1 1.7-1.14
usr.bin/vndcompress/vndcompress.c 1.8-1.24
usr.bin/vndcompress/vndcompress.h delete
usr.bin/vndcompress/vnduncompress.c 1.1-1.11
Rewrite vndcompress to support SIGINFO and restart after interrupt.
Make it generally more robust in the process.
 1.3.8.1 22-Jan-2014  martin file main.c was added on branch netbsd-6 on 2014-12-07 13:57:58 +0000
 1.3.4.2 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.3.4.1 22-Jan-2014  yamt file main.c was added on branch yamt-pagecache on 2014-05-22 11:42:51 +0000
 1.15 29-Jul-2017  riastradh Clarify compile-time and run-time arithmetic safety assertions.

This is an experiment with a handful of macros for writing the
checks, most of which are compile-time:

MUL_OK(t, a, b) Does a*b avoid overflow in type t?
ADD_OK(t, a, b) Does a + b avoid overflow in type t?
TOOMANY(t, x, b, m) Are there more than m b-element blocks in x in type t?
(I.e., does ceiling(x/b) > m?)

Addenda that might make sense but are not needed here:

MUL(t, a, b, &p) Set p = a*b and return 0, or return ERANGE if overflow.
ADD(t, a, b, &s) Set s = a+b and return 0, or return ERANGE if overflow.

Example:

uint32_t a = ..., b = ..., y = ..., z = ..., x, w;

/* input validation */
error = MUL(size_t, a, b, &x);
if (error)
fail;
if (TOOMANY(uint32_t, x, BLKSIZ, MAX_NBLK))
fail;
y = HOWMANY(x, BLKSIZ);
if (z > Z_MAX)
fail;
...
/* internal computation */
__CTASSERT(MUL_OK(uint32_t, Z_MAX, MAX_NBLK));
w = z*y;

Obvious shortcomings:

1. Nothing checks your ctassert matches your subsequent arithmetic.
(Maybe we could have BOUNDED_MUL(t, x, xmax, y, ymax) with a
ctassert inside.)

2. Nothing flows the bounds needed by the arithmetic you use back
into candidate definitions of X_MAX/Y_MAX.

But at least the reviewer's job is only to make sure that (a) the
MUL_OK matches the *, and (b) the bounds in the assertion match the
bounds on the inputs -- in particular, the reviewer need not derive
the bounds from the context, only confirm they are supported by the
paths to it.

This is not meant to be a general-purpose proof assistant, or even a
special-purpose one like gfverif <http://gfverif.cryptojedi.org/>.
Rather, it is an experiment in adding a modicum of compile-time
verification with a simple C API change.

This also is not intended to serve as trapping arithmetic on
overflow. The goal here is to enable writing the program with
explicit checks on input and compile-time annotations on computation
to gain confident that overflow won't happen in the computation.
 1.14 16-Apr-2017  riastradh Justify the last unjustified assertion here.

Sprinkle a few more assertions to help along the way.

(Actually, it was justified; I just hadn't made explicit the relation
to the value of fdpos that all two callers specify.)
 1.13 25-Jan-2014  riastradh branches: 1.13.4; 1.13.8; 1.13.10; 1.13.14; 1.13.18;
Get SIZE_MAX and OFF_MAX straight...
 1.12 25-Jan-2014  riastradh Factor out an offtab_compute_window_position routine.
 1.11 25-Jan-2014  riastradh Fix some more integer overflow/truncation issues.

Arithmetic in C is hard. Let's go shopping!
 1.10 23-Jan-2014  joerg Mark offtab_bug[x] as dead.
 1.9 22-Jan-2014  riastradh Fix $NetBSD$ tag.
 1.8 22-Jan-2014  riastradh Simplify vndcompress offtab_compute_window_size.
 1.7 22-Jan-2014  riastradh Fix typo in comment.
 1.6 22-Jan-2014  riastradh Remove silly comment in offtab_reset_write.
 1.5 22-Jan-2014  riastradh Split guard in offtab_write_window into offtab_maybe_write_window.
 1.4 22-Jan-2014  riastradh Seek if necessary at end of offtab_reset_read.

Fixes vnduncompress with a small window, and makes offtab_reset_read
symmetric with offtab_reset_write.
 1.3 22-Jan-2014  riastradh Judicious (and justified) casts to avoid signed/unsigned comparisons.
 1.2 22-Jan-2014  riastradh Implement machinery for fixed-size windows into the offset table.
 1.1 22-Jan-2014  riastradh Abstract handling of the cloop2 offset table.

Preparation for converting it to use a fixed-size window.
 1.13.18.1 21-Apr-2017  bouyer Sync with HEAD
 1.13.14.1 26-Apr-2017  pgoyette Sync with HEAD
 1.13.10.2 07-Dec-2014  martin Pull up following revision(s) (requested by riastradh in ticket #1138):
usr.bin/vndcompress/Makefile 1.3-1.13
usr.bin/vndcompress/common.h 1.1-1.6
usr.bin/vndcompress/main.c 1.1-1.3
usr.bin/vndcompress/offtab.c 1.1-1.13
usr.bin/vndcompress/offtab.h 1.1-1.2
usr.bin/vndcompress/utils.c 1.1-1.4
usr.bin/vndcompress/utils.h 1.1-1.3
usr.bin/vndcompress/vndcompress.1 1.7-1.14
usr.bin/vndcompress/vndcompress.c 1.8-1.24
usr.bin/vndcompress/vndcompress.h delete
usr.bin/vndcompress/vnduncompress.c 1.1-1.11
Rewrite vndcompress to support SIGINFO and restart after interrupt.
Make it generally more robust in the process.
 1.13.10.1 25-Jan-2014  martin file offtab.c was added on branch netbsd-6 on 2014-12-07 13:57:58 +0000
 1.13.8.2 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.13.8.1 25-Jan-2014  tls file offtab.c was added on branch tls-maxphys on 2014-08-20 00:05:05 +0000
 1.13.4.2 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.13.4.1 25-Jan-2014  yamt file offtab.c was added on branch yamt-pagecache on 2014-05-22 11:42:51 +0000
 1.3 16-Apr-2017  riastradh Justify the last unjustified assertion here.

Sprinkle a few more assertions to help along the way.

(Actually, it was justified; I just hadn't made explicit the relation
to the value of fdpos that all two callers specify.)
 1.2 22-Jan-2014  riastradh branches: 1.2.4; 1.2.8; 1.2.10; 1.2.14; 1.2.18;
Implement machinery for fixed-size windows into the offset table.
 1.1 22-Jan-2014  riastradh Abstract handling of the cloop2 offset table.

Preparation for converting it to use a fixed-size window.
 1.2.18.1 21-Apr-2017  bouyer Sync with HEAD
 1.2.14.1 26-Apr-2017  pgoyette Sync with HEAD
 1.2.10.2 07-Dec-2014  martin Pull up following revision(s) (requested by riastradh in ticket #1138):
usr.bin/vndcompress/Makefile 1.3-1.13
usr.bin/vndcompress/common.h 1.1-1.6
usr.bin/vndcompress/main.c 1.1-1.3
usr.bin/vndcompress/offtab.c 1.1-1.13
usr.bin/vndcompress/offtab.h 1.1-1.2
usr.bin/vndcompress/utils.c 1.1-1.4
usr.bin/vndcompress/utils.h 1.1-1.3
usr.bin/vndcompress/vndcompress.1 1.7-1.14
usr.bin/vndcompress/vndcompress.c 1.8-1.24
usr.bin/vndcompress/vndcompress.h delete
usr.bin/vndcompress/vnduncompress.c 1.1-1.11
Rewrite vndcompress to support SIGINFO and restart after interrupt.
Make it generally more robust in the process.
 1.2.10.1 22-Jan-2014  martin file offtab.h was added on branch netbsd-6 on 2014-12-07 13:57:58 +0000
 1.2.8.2 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.2.8.1 22-Jan-2014  tls file offtab.h was added on branch tls-maxphys on 2014-08-20 00:05:05 +0000
 1.2.4.2 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.2.4.1 22-Jan-2014  yamt file offtab.h was added on branch yamt-pagecache on 2014-05-22 11:42:51 +0000
 1.6 21-Mar-2017  riastradh Simplify.
 1.5 07-Apr-2016  riastradh branches: 1.5.2; 1.5.4;
__diagused, not __unused -- used in an assert.
 1.4 22-Jan-2014  riastradh branches: 1.4.4; 1.4.8; 1.4.10;
Judicious (and justified) casts to avoid signed/unsigned comparisons.
 1.3 22-Jan-2014  riastradh Implement machinery for fixed-size windows into the offset table.
 1.2 22-Jan-2014  riastradh Move block_signals/restore_sigmask to utils.c
 1.1 22-Jan-2014  riastradh Move vndcompress utilities to utils.c.
 1.4.10.2 07-Dec-2014  martin Pull up following revision(s) (requested by riastradh in ticket #1138):
usr.bin/vndcompress/Makefile 1.3-1.13
usr.bin/vndcompress/common.h 1.1-1.6
usr.bin/vndcompress/main.c 1.1-1.3
usr.bin/vndcompress/offtab.c 1.1-1.13
usr.bin/vndcompress/offtab.h 1.1-1.2
usr.bin/vndcompress/utils.c 1.1-1.4
usr.bin/vndcompress/utils.h 1.1-1.3
usr.bin/vndcompress/vndcompress.1 1.7-1.14
usr.bin/vndcompress/vndcompress.c 1.8-1.24
usr.bin/vndcompress/vndcompress.h delete
usr.bin/vndcompress/vnduncompress.c 1.1-1.11
Rewrite vndcompress to support SIGINFO and restart after interrupt.
Make it generally more robust in the process.
 1.4.10.1 22-Jan-2014  martin file utils.c was added on branch netbsd-6 on 2014-12-07 13:57:58 +0000
 1.4.8.2 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.4.8.1 22-Jan-2014  tls file utils.c was added on branch tls-maxphys on 2014-08-20 00:05:05 +0000
 1.4.4.2 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.4.4.1 22-Jan-2014  yamt file utils.c was added on branch yamt-pagecache on 2014-05-22 11:42:51 +0000
 1.5.4.1 21-Apr-2017  bouyer Sync with HEAD
 1.5.2.1 26-Apr-2017  pgoyette Sync with HEAD
 1.3 22-Jan-2014  riastradh branches: 1.3.4; 1.3.8; 1.3.10;
Implement machinery for fixed-size windows into the offset table.
 1.2 22-Jan-2014  riastradh Move block_signals/restore_sigmask to utils.c
 1.1 22-Jan-2014  riastradh Move vndcompress utilities to utils.c.
 1.3.10.2 07-Dec-2014  martin Pull up following revision(s) (requested by riastradh in ticket #1138):
usr.bin/vndcompress/Makefile 1.3-1.13
usr.bin/vndcompress/common.h 1.1-1.6
usr.bin/vndcompress/main.c 1.1-1.3
usr.bin/vndcompress/offtab.c 1.1-1.13
usr.bin/vndcompress/offtab.h 1.1-1.2
usr.bin/vndcompress/utils.c 1.1-1.4
usr.bin/vndcompress/utils.h 1.1-1.3
usr.bin/vndcompress/vndcompress.1 1.7-1.14
usr.bin/vndcompress/vndcompress.c 1.8-1.24
usr.bin/vndcompress/vndcompress.h delete
usr.bin/vndcompress/vnduncompress.c 1.1-1.11
Rewrite vndcompress to support SIGINFO and restart after interrupt.
Make it generally more robust in the process.
 1.3.10.1 22-Jan-2014  martin file utils.h was added on branch netbsd-6 on 2014-12-07 13:57:58 +0000
 1.3.8.2 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.3.8.1 22-Jan-2014  tls file utils.h was added on branch tls-maxphys on 2014-08-20 00:05:05 +0000
 1.3.4.2 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.3.4.1 22-Jan-2014  yamt file utils.h was added on branch yamt-pagecache on 2014-05-22 11:42:51 +0000
 1.15 24-Jan-2020  pgoyette Since vnconfig(8) was renamed (many years ago), update some cross-refs
in vndcompress(1) man page.
 1.14 22-Jan-2014  riastradh branches: 1.14.26;
Bump date on vndcompress(1) man page.
 1.13 22-Jan-2014  riastradh Fix vndcompress man page to reflect default window size.
 1.12 22-Jan-2014  riastradh Document the new vndcompress -w option and nuke BUGS section.

Perhaps vndcompress and vnduncompress ought by default to choose a
limited window size (say, 8192 entries, i.e. 64k bytes, the default
MAXPHYS), and vnduncompress should fall back to an unlimited window
only if the input is nonseekable.
 1.11 22-Jan-2014  riastradh Reflect rename of `-s' to `-b' in the vndcompress man page.
 1.10 04-May-2013  riastradh Add -l option to synopsis for vndcompress(1) man page.
 1.9 04-May-2013  wiz Sort. Add EXIT STATUS section.
 1.8 03-May-2013  riastradh Rewrite vndcompress to support SIGINFO and restart after interrupt.

Make it generally more robust in the process.

No objection (or comment) on tech-userlevel.

ok christos
 1.7 08-Jul-2012  wiz branches: 1.7.2;
Improve wording, fix typo, bump date.
From Bug Hunting.
 1.6 24-Mar-2007  dillo branches: 1.6.34; 1.6.36;
Make example consistent (fix typo in file names).
 1.5 23-Feb-2006  jld Fix typo ("program").
 1.4 17-Feb-2006  wiz Fix typo reported by Mathieu in PR 32846.
 1.3 12-Dec-2005  hubertf Fix old name in .Dt tag (CLCONFIG -> VNDCOMPRESS)
 1.2 25-Jul-2005  wiz branches: 1.2.2;
Various improvements.
 1.1 25-Jul-2005  hubertf branches: 1.1.1;
Initial revision
 1.1.1.1 25-Jul-2005  hubertf Add vndcompress(1) and vnduncompress(1) to transform filesystem/disk
images from "normal" into cloop2-format compressed images and back.
Written by Florian Stoehr (netbsd@wolfnode.de) with some polishing
by me.

Compressed disk images can be used with the vnd(4) driver when compiled with
VND_COMPRESSION and "vnconfig -z". Useful for creation of Live CDs/DVDs.
 1.2.2.4 15-Dec-2005  tron Pull up following revision(s) (requested by hubertf in ticket #1057):
usr.bin/vndcompress/vndcompress.1: revision 1.3
Fix old name in .Dt tag (CLCONFIG -> VNDCOMPRESS)
 1.2.2.3 16-Aug-2005  tron Pull up revision 1.2 (requested by hubertf in ticket #667):
Various improvements.
 1.2.2.2 16-Aug-2005  tron Pull up revision 1.1 (requested by hubertf in ticket #667):
Add vndcompress(1) and vnduncompress(1) to transform filesystem/disk
images from "normal" into cloop2-format compressed images and back.
Written by Florian Stoehr (netbsd@wolfnode.de) with some polishing
by me.

Compressed disk images can be used with the vnd(4) driver when compiled with
VND_COMPRESSION and "vnconfig -z". Useful for creation of Live CDs/DVDs.
 1.2.2.1 25-Jul-2005  tron file vndcompress.1 was added on branch netbsd-3 on 2005-08-16 12:03:44 +0000
 1.6.36.1 07-Dec-2014  martin Pull up following revision(s) (requested by riastradh in ticket #1138):
usr.bin/vndcompress/Makefile 1.3-1.13
usr.bin/vndcompress/common.h 1.1-1.6
usr.bin/vndcompress/main.c 1.1-1.3
usr.bin/vndcompress/offtab.c 1.1-1.13
usr.bin/vndcompress/offtab.h 1.1-1.2
usr.bin/vndcompress/utils.c 1.1-1.4
usr.bin/vndcompress/utils.h 1.1-1.3
usr.bin/vndcompress/vndcompress.1 1.7-1.14
usr.bin/vndcompress/vndcompress.c 1.8-1.24
usr.bin/vndcompress/vndcompress.h delete
usr.bin/vndcompress/vnduncompress.c 1.1-1.11
Rewrite vndcompress to support SIGINFO and restart after interrupt.
Make it generally more robust in the process.
 1.6.34.2 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.6.34.1 30-Oct-2012  yamt sync with head
 1.7.2.2 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.7.2.1 23-Jun-2013  tls resync from head
 1.14.26.1 08-Apr-2020  martin Merge changes from current as of 20200406
 1.29 29-Jul-2017  riastradh Clarify compile-time and run-time arithmetic safety assertions.

This is an experiment with a handful of macros for writing the
checks, most of which are compile-time:

MUL_OK(t, a, b) Does a*b avoid overflow in type t?
ADD_OK(t, a, b) Does a + b avoid overflow in type t?
TOOMANY(t, x, b, m) Are there more than m b-element blocks in x in type t?
(I.e., does ceiling(x/b) > m?)

Addenda that might make sense but are not needed here:

MUL(t, a, b, &p) Set p = a*b and return 0, or return ERANGE if overflow.
ADD(t, a, b, &s) Set s = a+b and return 0, or return ERANGE if overflow.

Example:

uint32_t a = ..., b = ..., y = ..., z = ..., x, w;

/* input validation */
error = MUL(size_t, a, b, &x);
if (error)
fail;
if (TOOMANY(uint32_t, x, BLKSIZ, MAX_NBLK))
fail;
y = HOWMANY(x, BLKSIZ);
if (z > Z_MAX)
fail;
...
/* internal computation */
__CTASSERT(MUL_OK(uint32_t, Z_MAX, MAX_NBLK));
w = z*y;

Obvious shortcomings:

1. Nothing checks your ctassert matches your subsequent arithmetic.
(Maybe we could have BOUNDED_MUL(t, x, xmax, y, ymax) with a
ctassert inside.)

2. Nothing flows the bounds needed by the arithmetic you use back
into candidate definitions of X_MAX/Y_MAX.

But at least the reviewer's job is only to make sure that (a) the
MUL_OK matches the *, and (b) the bounds in the assertion match the
bounds on the inputs -- in particular, the reviewer need not derive
the bounds from the context, only confirm they are supported by the
paths to it.

This is not meant to be a general-purpose proof assistant, or even a
special-purpose one like gfverif <http://gfverif.cryptojedi.org/>.
Rather, it is an experiment in adding a modicum of compile-time
verification with a simple C API change.

This also is not intended to serve as trapping arithmetic on
overflow. The goal here is to enable writing the program with
explicit checks on input and compile-time annotations on computation
to gain confident that overflow won't happen in the computation.
 1.28 17-Apr-2017  riastradh Omit needless XXX comment.
 1.27 16-Apr-2017  riastradh Justify the last unjustified assertion here.

Sprinkle a few more assertions to help along the way.

(Actually, it was justified; I just hadn't made explicit the relation
to the value of fdpos that all two callers specify.)
 1.26 10-Jan-2017  christos branches: 1.26.2;
need <sys/stat.h>
 1.25 18-Nov-2014  riastradh branches: 1.25.2;
Fix vndcompress restart failure fallback when input is a pipe.

Defer seeking the *input* image, or winding it forward, until we are
certain we all ready in the cloop2 output, because when the input
image is a pipe, we don't get a chance to seek back to the beginning
and start from the top instead of restarting.

If restart does fail, don't try to seek the input image back to the
beginning unless we had already tried to seek or wind it forward.

Add some automatic tests for this and related cases.

XXX pullup to netbsd-7, netbsd-6
 1.24 25-Jan-2014  riastradh branches: 1.24.4;
Fix some more integer overflow/truncation issues.

Arithmetic in C is hard. Let's go shopping!
 1.23 24-Jan-2014  christos CID 1164169: integer overflow
 1.22 22-Jan-2014  riastradh Change vndcompress to use a default window size of 512.

For vnduncompress on nonseekable input, the window size is as large
as it needs to be by default, as before. Not clear that this is the
right choice -- by default vnduncompress on nonseekable input will
just use unbounded memory unsolicited.
 1.21 22-Jan-2014  riastradh Rename block size option from `-s' to `-b'.

Makes more sense and makes it consistent with other utilities such as
pax and pigz. This vndcompress has never gone out in a release, so
changing the name of the option shouldn't cause too many problems...
 1.20 22-Jan-2014  riastradh Window size is now an option; remove XXX comment to the contrary.
 1.19 22-Jan-2014  riastradh Add option -w to vnd(un)compress to specify the window size.
 1.18 22-Jan-2014  riastradh Implement machinery for fixed-size windows into the offset table.
 1.17 22-Jan-2014  riastradh Write offsets in hexadecimal, not decimal.
 1.16 22-Jan-2014  riastradh Move block_signals/restore_sigmask to utils.c
 1.15 22-Jan-2014  riastradh Abstract handling of the cloop2 offset table.

Preparation for converting it to use a fixed-size window.
 1.14 22-Jan-2014  riastradh Move vndcompress utilities to utils.c.
 1.13 06-May-2013  riastradh Make partial read/write error messages more consistent in vndcompress.
 1.12 04-May-2013  riastradh Add __printflike to vsnprintf_ss.
 1.11 04-May-2013  riz 'unsigned long' prints with %lu, not %zu.
 1.10 04-May-2013  riastradh Fix sign-compare in compress_blocks.

Not sure why my builds didn't reveal this one -- they revealed
several others during development.
 1.9 04-May-2013  joerg __printflike for vwarnx_ss, __dead for err_ss and errx_ss.
 1.8 03-May-2013  riastradh Rewrite vndcompress to support SIGINFO and restart after interrupt.

Make it generally more robust in the process.

No objection (or comment) on tech-userlevel.

ok christos
 1.7 06-Sep-2011  joerg branches: 1.7.2; 1.7.4; 1.7.8;
Use static and __dead
 1.6 14-Apr-2009  lukem Fix another sign-compare issue
 1.5 14-Apr-2009  lukem fix sign-compare issues
 1.4 18-Feb-2008  dyoung branches: 1.4.12;
Take a small step toward making vndcompress into a host tool:
remove #include <arpa/inet.h> and use bswap32() instead of ntohl().
 1.3 27-Jul-2005  he branches: 1.3.2; 1.3.14;
The return type from getopt(3) is int, not char. Besides, char is
not guaranteed to be signed, so comparison with -1 will cause a
warning (turned error) for some of our ports (e.g. our arm ports).
Fix this by making the 'ch' variable an int instead of a char.
 1.2 25-Jul-2005  wiz Sync usage with man page.
 1.1 25-Jul-2005  hubertf branches: 1.1.1;
Initial revision
 1.1.1.1 25-Jul-2005  hubertf Add vndcompress(1) and vnduncompress(1) to transform filesystem/disk
images from "normal" into cloop2-format compressed images and back.
Written by Florian Stoehr (netbsd@wolfnode.de) with some polishing
by me.

Compressed disk images can be used with the vnd(4) driver when compiled with
VND_COMPRESSION and "vnconfig -z". Useful for creation of Live CDs/DVDs.
 1.3.14.1 23-Mar-2008  matt sync with HEAD
 1.3.2.4 16-Aug-2005  tron Pull up revision 1.3 (requested by hubertf in ticket #667):
The return type from getopt(3) is int, not char. Besides, char is
not guaranteed to be signed, so comparison with -1 will cause a
warning (turned error) for some of our ports (e.g. our arm ports).
Fix this by making the 'ch' variable an int instead of a char.
 1.3.2.3 16-Aug-2005  tron Pull up revision 1.2 (requested by hubertf in ticket #667):
Sync usage with man page.
 1.3.2.2 16-Aug-2005  tron Pull up revision 1.1 (requested by hubertf in ticket #667):
Add vndcompress(1) and vnduncompress(1) to transform filesystem/disk
images from "normal" into cloop2-format compressed images and back.
Written by Florian Stoehr (netbsd@wolfnode.de) with some polishing
by me.

Compressed disk images can be used with the vnd(4) driver when compiled with
VND_COMPRESSION and "vnconfig -z". Useful for creation of Live CDs/DVDs.
 1.3.2.1 27-Jul-2005  tron file vndcompress.c was added on branch netbsd-3 on 2005-08-16 12:03:44 +0000
 1.4.12.1 13-May-2009  jym Sync with HEAD.

Third (and last) commit. See http://mail-index.netbsd.org/source-changes/2009/05/13/msg221222.html
 1.7.8.2 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.7.8.1 23-Jun-2013  tls resync from head
 1.7.4.2 24-Mar-2015  snj Pull up following revision(s) (requested by riastradh in ticket #1269):
usr.bin/vndcompress/Makefile: revision 1.14
usr.bin/vndcompress/vndcompress.c: revision 1.25
Fix vndcompress restart failure fallback when input is a pipe.
Defer seeking the *input* image, or winding it forward, until we are
certain we all ready in the cloop2 output, because when the input
image is a pipe, we don't get a chance to seek back to the beginning
and start from the top instead of restarting.
If restart does fail, don't try to seek the input image back to the
beginning unless we had already tried to seek or wind it forward.
Add some automatic tests for this and related cases.
XXX pullup to netbsd-7, netbsd-6
 1.7.4.1 07-Dec-2014  martin Pull up following revision(s) (requested by riastradh in ticket #1138):
usr.bin/vndcompress/Makefile 1.3-1.13
usr.bin/vndcompress/common.h 1.1-1.6
usr.bin/vndcompress/main.c 1.1-1.3
usr.bin/vndcompress/offtab.c 1.1-1.13
usr.bin/vndcompress/offtab.h 1.1-1.2
usr.bin/vndcompress/utils.c 1.1-1.4
usr.bin/vndcompress/utils.h 1.1-1.3
usr.bin/vndcompress/vndcompress.1 1.7-1.14
usr.bin/vndcompress/vndcompress.c 1.8-1.24
usr.bin/vndcompress/vndcompress.h delete
usr.bin/vndcompress/vnduncompress.c 1.1-1.11
Rewrite vndcompress to support SIGINFO and restart after interrupt.
Make it generally more robust in the process.
 1.7.2.1 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.24.4.1 18-Mar-2015  snj Pull up following revision(s) (requested by riastradh in ticket #609):
usr.bin/vndcompress/Makefile: revision 1.14
usr.bin/vndcompress/vndcompress.c: revision 1.25
Fix vndcompress restart failure fallback when input is a pipe.
Defer seeking the *input* image, or winding it forward, until we are
certain we all ready in the cloop2 output, because when the input
image is a pipe, we don't get a chance to seek back to the beginning
and start from the top instead of restarting.
If restart does fail, don't try to seek the input image back to the
beginning unless we had already tried to seek or wind it forward.
Add some automatic tests for this and related cases.
XXX pullup to netbsd-7, netbsd-6
 1.25.2.2 26-Apr-2017  pgoyette Sync with HEAD
 1.25.2.1 20-Mar-2017  pgoyette Sync with HEAD
 1.26.2.1 21-Apr-2017  bouyer Sync with HEAD
 1.4 03-May-2013  riastradh Rewrite vndcompress to support SIGINFO and restart after interrupt.

Make it generally more robust in the process.

No objection (or comment) on tech-userlevel.

ok christos
 1.3 06-Sep-2011  joerg branches: 1.3.2; 1.3.4; 1.3.8;
Use static and __dead
 1.2 18-Feb-2008  dyoung Take a small step toward making vndcompress into a host tool:
remove #include <arpa/inet.h> and use bswap32() instead of ntohl().
 1.1 25-Jul-2005  hubertf branches: 1.1.1;
Initial revision
 1.1.1.1 25-Jul-2005  hubertf branches: 1.1.1.1.2; 1.1.1.1.14;
Add vndcompress(1) and vnduncompress(1) to transform filesystem/disk
images from "normal" into cloop2-format compressed images and back.
Written by Florian Stoehr (netbsd@wolfnode.de) with some polishing
by me.

Compressed disk images can be used with the vnd(4) driver when compiled with
VND_COMPRESSION and "vnconfig -z". Useful for creation of Live CDs/DVDs.
 1.1.1.1.14.1 23-Mar-2008  matt sync with HEAD
 1.1.1.1.2.2 16-Aug-2005  tron Pull up revision 1.1 (requested by hubertf in ticket #667):
Add vndcompress(1) and vnduncompress(1) to transform filesystem/disk
images from "normal" into cloop2-format compressed images and back.
Written by Florian Stoehr (netbsd@wolfnode.de) with some polishing
by me.

Compressed disk images can be used with the vnd(4) driver when compiled with
VND_COMPRESSION and "vnconfig -z". Useful for creation of Live CDs/DVDs.
 1.1.1.1.2.1 25-Jul-2005  tron file vndcompress.h was added on branch netbsd-3 on 2005-08-16 12:03:44 +0000
 1.3.8.1 23-Jun-2013  tls resync from head
 1.3.4.1 07-Dec-2014  martin Pull up following revision(s) (requested by riastradh in ticket #1138):
usr.bin/vndcompress/Makefile 1.3-1.13
usr.bin/vndcompress/common.h 1.1-1.6
usr.bin/vndcompress/main.c 1.1-1.3
usr.bin/vndcompress/offtab.c 1.1-1.13
usr.bin/vndcompress/offtab.h 1.1-1.2
usr.bin/vndcompress/utils.c 1.1-1.4
usr.bin/vndcompress/utils.h 1.1-1.3
usr.bin/vndcompress/vndcompress.1 1.7-1.14
usr.bin/vndcompress/vndcompress.c 1.8-1.24
usr.bin/vndcompress/vndcompress.h delete
usr.bin/vndcompress/vnduncompress.c 1.1-1.11
Rewrite vndcompress to support SIGINFO and restart after interrupt.
Make it generally more robust in the process.
 1.3.2.1 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.14 29-Jul-2017  riastradh Clarify compile-time and run-time arithmetic safety assertions.

This is an experiment with a handful of macros for writing the
checks, most of which are compile-time:

MUL_OK(t, a, b) Does a*b avoid overflow in type t?
ADD_OK(t, a, b) Does a + b avoid overflow in type t?
TOOMANY(t, x, b, m) Are there more than m b-element blocks in x in type t?
(I.e., does ceiling(x/b) > m?)

Addenda that might make sense but are not needed here:

MUL(t, a, b, &p) Set p = a*b and return 0, or return ERANGE if overflow.
ADD(t, a, b, &s) Set s = a+b and return 0, or return ERANGE if overflow.

Example:

uint32_t a = ..., b = ..., y = ..., z = ..., x, w;

/* input validation */
error = MUL(size_t, a, b, &x);
if (error)
fail;
if (TOOMANY(uint32_t, x, BLKSIZ, MAX_NBLK))
fail;
y = HOWMANY(x, BLKSIZ);
if (z > Z_MAX)
fail;
...
/* internal computation */
__CTASSERT(MUL_OK(uint32_t, Z_MAX, MAX_NBLK));
w = z*y;

Obvious shortcomings:

1. Nothing checks your ctassert matches your subsequent arithmetic.
(Maybe we could have BOUNDED_MUL(t, x, xmax, y, ymax) with a
ctassert inside.)

2. Nothing flows the bounds needed by the arithmetic you use back
into candidate definitions of X_MAX/Y_MAX.

But at least the reviewer's job is only to make sure that (a) the
MUL_OK matches the *, and (b) the bounds in the assertion match the
bounds on the inputs -- in particular, the reviewer need not derive
the bounds from the context, only confirm they are supported by the
paths to it.

This is not meant to be a general-purpose proof assistant, or even a
special-purpose one like gfverif <http://gfverif.cryptojedi.org/>.
Rather, it is an experiment in adding a modicum of compile-time
verification with a simple C API change.

This also is not intended to serve as trapping arithmetic on
overflow. The goal here is to enable writing the program with
explicit checks on input and compile-time annotations on computation
to gain confident that overflow won't happen in the computation.
 1.13 17-Apr-2017  riastradh Omit needless XXX comment.
 1.12 16-Apr-2017  riastradh Justify the last unjustified assertion here.

Sprinkle a few more assertions to help along the way.

(Actually, it was justified; I just hadn't made explicit the relation
to the value of fdpos that all two callers specify.)
 1.11 25-Jan-2014  riastradh branches: 1.11.4; 1.11.8; 1.11.12; 1.11.16;
Fix some more integer overflow/truncation issues.

Arithmetic in C is hard. Let's go shopping!
 1.10 22-Jan-2014  riastradh Change vndcompress to use a default window size of 512.

For vnduncompress on nonseekable input, the window size is as large
as it needs to be by default, as before. Not clear that this is the
right choice -- by default vnduncompress on nonseekable input will
just use unbounded memory unsolicited.
 1.9 22-Jan-2014  riastradh Move err1 & errx1 to the end of vnduncompress.c; add __printflike.
 1.8 22-Jan-2014  riastradh Add option -w to vnd(un)compress to specify the window size.
 1.7 22-Jan-2014  riastradh Implement machinery for fixed-size windows into the offset table.
 1.6 22-Jan-2014  riastradh Write offsets in hexadecimal, not decimal.
 1.5 22-Jan-2014  riastradh Abstract handling of the cloop2 offset table.

Preparation for converting it to use a fixed-size window.
 1.4 22-Jan-2014  riastradh Use read_block instead of read in vnduncompress.
 1.3 22-Jan-2014  riastradh Fail if malloc can't allocate offset table.
 1.2 06-May-2013  riastradh branches: 1.2.2;
Make partial read/write error messages more consistent in vndcompress.
 1.1 03-May-2013  riastradh Rewrite vndcompress to support SIGINFO and restart after interrupt.

Make it generally more robust in the process.

No objection (or comment) on tech-userlevel.

ok christos
 1.2.2.3 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.2.2.2 23-Jun-2013  tls resync from head
 1.2.2.1 06-May-2013  tls file vnduncompress.c was added on branch tls-maxphys on 2013-06-23 06:29:02 +0000
 1.11.16.1 21-Apr-2017  bouyer Sync with HEAD
 1.11.12.1 26-Apr-2017  pgoyette Sync with HEAD
 1.11.8.2 07-Dec-2014  martin Pull up following revision(s) (requested by riastradh in ticket #1138):
usr.bin/vndcompress/Makefile 1.3-1.13
usr.bin/vndcompress/common.h 1.1-1.6
usr.bin/vndcompress/main.c 1.1-1.3
usr.bin/vndcompress/offtab.c 1.1-1.13
usr.bin/vndcompress/offtab.h 1.1-1.2
usr.bin/vndcompress/utils.c 1.1-1.4
usr.bin/vndcompress/utils.h 1.1-1.3
usr.bin/vndcompress/vndcompress.1 1.7-1.14
usr.bin/vndcompress/vndcompress.c 1.8-1.24
usr.bin/vndcompress/vndcompress.h delete
usr.bin/vndcompress/vnduncompress.c 1.1-1.11
Rewrite vndcompress to support SIGINFO and restart after interrupt.
Make it generally more robust in the process.
 1.11.8.1 25-Jan-2014  martin file vnduncompress.c was added on branch netbsd-6 on 2014-12-07 13:57:58 +0000
 1.11.4.2 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.11.4.1 25-Jan-2014  yamt file vnduncompress.c was added on branch yamt-pagecache on 2014-05-22 11:42:51 +0000

RSS XML Feed