--- dvhtool-1.0.1.orig/dvh.h
+++ dvhtool-1.0.1/dvh.h
@@ -127,6 +127,8 @@
 #define	PTYPE_XFSLOG	11		/* partition is sgi XFS log */
 #define	PTYPE_XLV	12		/* partition is part of an XLV vol */
 #define	PTYPE_XVM	13		/* partition is sgi XVM */
+#define	PTYPE_LSWAP	0x82		/* partition is Linux swap */
+#define	PTYPE_LINUX	0x83		/* partition is Linux native */
 #define NPTYPES		16
 
 #define	VHMAGIC		0xbe5a941	/* randomly chosen value */
--- dvhtool-1.0.1.orig/dvhlib.c
+++ dvhtool-1.0.1/dvhlib.c
@@ -50,6 +50,8 @@
 	case PTYPE_XFSLOG:	return "XFS Log";
 	case PTYPE_XLV:		return "XLV Volume";
 	case PTYPE_XVM:		return "XVM Volume";
+	case PTYPE_LSWAP:	return "Linux Swap";
+	case PTYPE_LINUX:	return "Linux Native";
 	}
 	return "Unknown Partition Type";
 }
@@ -325,8 +327,10 @@
 	if (res == -1)
 		die("Couldn't stat source file");
 
-	/* XXX pad to blocksize? */
-	size = vh->vh_pt[8].pt_nblks * blksize - istat.st_size;
+	/* calculate free blocks in vh */
+	size = vh->vh_pt[8].pt_nblks				/* total vh size */
+		- ( vh->vh_pt[8].pt_firstlbn + 4 )		/* reserved area */
+		- (( istat.st_size + blksize - 1 ) / blksize );	/* pad to blocksize */
 	/*
 	 * Are we replacing an existing file, check for enough space and free
 	 * entry in volume header
@@ -336,16 +340,15 @@
 			/* It's an existing file, delete it.  */
 			memset(vd->vd_name, 0, VDNAMESIZE);
 			vd->vd_nbytes = 0;
-			break;
 		}
 		if ( vd->vd_nbytes ) {
-			size -= vd->vd_nbytes;
+			size -= (vd->vd_nbytes + blksize - 1 ) / blksize; /* pad to blocksize */
 			num++;
 		}
 		vd++;
 	}
 
-	if ( num == NVDIR ) 
+	if ( num == NVDIR )
 		die("No more free entries in volume header");
 	if ( size <= 0 )
 		die("Not enough space left in volume header");
@@ -403,7 +406,7 @@
 				die("Short write");
 			}
 		}
-		dest += (vd->vd_nbytes + 511) / 512;	/* XXX Blocksize  */
+		dest += (vd->vd_nbytes + blksize - 1) / blksize;
 		vd++;
 	}
 
--- dvhtool-1.0.1.orig/dvhtool.8
+++ dvhtool-1.0.1/dvhtool.8
@@ -1,4 +1,4 @@
-.TH DVHTOOL 1 "July 2000"
+.TH DVHTOOL 8 "July 2000"
 .UC 4
 .SH NAME
 dvhtool \- Disk volume header manipulation tool
@@ -85,4 +85,4 @@
 .PP
 .I dvhtool
 was written by Ralf Baechle <ralf@oss.sgi.com>, Keith M. Wesolowski <wesolows@foobazco.org>,
-Tor Arntsen <tor@spacetec.no>, Guido Guenther <guido.guenther@gmx.net>. 
+Tor Arntsen <tor@spacetec.no>, Guido Guenther <agx@debian.org>. 
--- dvhtool-1.0.1.orig/Makefile.in
+++ dvhtool-1.0.1/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated automatically by automake 1.4a from Makefile.am
+# Makefile.in generated automatically by automake 1.4-p4 from Makefile.am
 
 # Copyright (C) 1994, 1995-8, 1999 Free Software Foundation, Inc.
 # This Makefile.in is free software; the Free Software Foundation
@@ -46,10 +46,9 @@
 AUTOHEADER = @AUTOHEADER@
 
 INSTALL = @INSTALL@
-INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@ $(AM_INSTALL_PROGRAM_FLAGS)
 INSTALL_DATA = @INSTALL_DATA@
 INSTALL_SCRIPT = @INSTALL_SCRIPT@
-INSTALL_STRIP_FLAG =
 transform = @program_transform_name@
 
 NORMAL_INSTALL = :
@@ -104,7 +103,7 @@
 
 DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST)
 
-TAR = gtar
+TAR = tar
 GZIP_ENV = --best
 DEP_FILES =  .deps/dvhlib.P .deps/dvhtool.P .deps/getopt.P \
 .deps/getopt1.P .deps/pread.P
@@ -124,7 +123,7 @@
 $(ACLOCAL_M4):  configure.in  acinclude.m4
 	cd $(srcdir) && $(ACLOCAL)
 
-config.status: $(srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+config.status: $(srcdir)/configure.in $(CONFIG_STATUS_DEPENDENCIES)
 	$(SHELL) ./config.status --recheck
 $(srcdir)/configure: $(srcdir)/configure.in $(ACLOCAL_M4) $(CONFIGURE_DEPENDENCIES)
 	cd $(srcdir) && $(AUTOCONF)
@@ -173,8 +172,8 @@
 	$(mkinstalldirs) $(DESTDIR)$(sbindir)
 	@list='$(sbin_PROGRAMS)'; for p in $$list; do \
 	  if test -f $$p; then \
-	    echo "  $(INSTALL_PROGRAM) $(INSTALL_STRIP_FLAG) $$p $(DESTDIR)$(sbindir)/`echo $$p|sed 's/$(EXEEXT)$$//'|sed '$(transform)'|sed 's/$$/$(EXEEXT)/'`"; \
-	     $(INSTALL_PROGRAM) $(INSTALL_STRIP_FLAG) $$p $(DESTDIR)$(sbindir)/`echo $$p|sed 's/$(EXEEXT)$$//'|sed '$(transform)'|sed 's/$$/$(EXEEXT)/'`; \
+	    echo "  $(INSTALL_PROGRAM) $$p $(DESTDIR)$(sbindir)/`echo $$p|sed 's/$(EXEEXT)$$//'|sed '$(transform)'|sed 's/$$/$(EXEEXT)/'`"; \
+	     $(INSTALL_PROGRAM) $$p $(DESTDIR)$(sbindir)/`echo $$p|sed 's/$(EXEEXT)$$//'|sed '$(transform)'|sed 's/$$/$(EXEEXT)/'`; \
 	  else :; fi; \
 	done
 
@@ -382,7 +381,7 @@
 all-am: Makefile $(PROGRAMS) $(MANS) $(HEADERS) config.h
 all-redirect: all-am
 install-strip:
-	$(MAKE) $(AM_MAKEFLAGS) INSTALL_STRIP_FLAG=-s install
+	$(MAKE) $(AM_MAKEFLAGS) AM_INSTALL_PROGRAM_FLAGS=-s install
 installdirs:
 	$(mkinstalldirs)  $(DESTDIR)$(sbindir) $(DESTDIR)$(mandir)/man8