summaryrefslogtreecommitdiff
blob: 43f33ffc2596a9578294a39a47c5311a44484281 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
--- 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