diff options
Diffstat (limited to 'extra/gpart')
-rw-r--r-- | extra/gpart/PKGBUILD | 49 | ||||
-rw-r--r-- | extra/gpart/gpart-0.1h-errno.patch | 20 | ||||
-rw-r--r-- | extra/gpart/gpart-0.1h-l64seek.patch | 71 | ||||
-rw-r--r-- | extra/gpart/gpart-0.1h-ntfs.patch | 75 | ||||
-rw-r--r-- | extra/gpart/gpart-0.1h-openmode.patch | 11 | ||||
-rw-r--r-- | extra/gpart/gpart-0.1h-reiserfs-3.6.patch | 443 | ||||
-rw-r--r-- | extra/gpart/gpart-0.1h-vfat.patch | 17 |
7 files changed, 686 insertions, 0 deletions
diff --git a/extra/gpart/PKGBUILD b/extra/gpart/PKGBUILD new file mode 100644 index 000000000..b6760e42f --- /dev/null +++ b/extra/gpart/PKGBUILD @@ -0,0 +1,49 @@ +# $Id: PKGBUILD 143745 2011-11-28 20:14:39Z giovanni $ +# Maintainer: Giovanni Scafora <giovanni@archlinux.org> +# Contributor: dale <dale@archlinux.org> +# Contributor: Tom Newsom <Jeepster@gmx.co.uk> + +pkgname=gpart +pkgver=0.1h +pkgrel=5 +pkgdesc="Partition table rescue/guessing tool" +arch=('i686' 'x86_64' 'mips64el') +url="http://www.stud.uni-hannover.de/user/76201/gpart/" +license=('GPL') +depends=('glibc') +source=("http://www.sfr-fresh.com/linux/misc/${pkgname}-${pkgver}.tar.gz" + 'gpart-0.1h-errno.patch' + 'gpart-0.1h-vfat.patch' + 'gpart-0.1h-ntfs.patch' + 'gpart-0.1h-reiserfs-3.6.patch' + 'gpart-0.1h-l64seek.patch' + 'gpart-0.1h-openmode.patch') +md5sums=('ee3a2d2dde70bcf404eb354b3d1ee6d4' + '81eee5d9985df9bf9c23624e46cf945f' + 'ae6d86b0268618d34e618824dcd82754' + '8161c02116ee4575906587eb09e35bde' + '5da425c355740cbf06286755c902b996' + '9cd7f91c321a83cc1aa202744d1c7cd2' + 'c982a01385e99b86b32de536c1fbecfb') + +build() { + cd "${srcdir}/${pkgname}-${pkgver}" + + patch -Np1 -i ${srcdir}/gpart-0.1h-errno.patch + patch -Np1 -i ${srcdir}/gpart-0.1h-vfat.patch + patch -Np1 -i ${srcdir}/gpart-0.1h-ntfs.patch + patch -Np2 -i ${srcdir}/gpart-0.1h-reiserfs-3.6.patch + patch -Np1 -i ${srcdir}/gpart-0.1h-l64seek.patch + patch -Np1 -i ${srcdir}/gpart-0.1h-openmode.patch + + sed -i -e "/^CFLAGS/s: -O2 : ${CFLAGS} :" make.defs + sed -i -e "/^LDFLAGS/s:=:=${LDFLAGS} :" make.defs + + make +} + +package() { + cd "${srcdir}/${pkgname}-${pkgver}" + + make prefix=${pkgdir}/usr mandir=${pkgdir}/usr/share/man install +} diff --git a/extra/gpart/gpart-0.1h-errno.patch b/extra/gpart/gpart-0.1h-errno.patch new file mode 100644 index 000000000..13041c202 --- /dev/null +++ b/extra/gpart/gpart-0.1h-errno.patch @@ -0,0 +1,20 @@ +--- gpart-0.1h/src/l64seek.c ++++ gpart-0.1h-working/src/l64seek.c +@@ -16,6 +16,7 @@ + + #include "l64seek.h" + ++#include <errno.h> + + #define OSTACKLEN 16 + static struct +--- gpart-0.1h/src/disku.c ++++ gpart-0.1h-working/src/disku.c +@@ -20,6 +20,7 @@ + #include <string.h> + #include <sys/ioctl.h> + #include "gpart.h" ++#include <errno.h> + + #if defined(__linux__) + #include <sys/mount.h> diff --git a/extra/gpart/gpart-0.1h-l64seek.patch b/extra/gpart/gpart-0.1h-l64seek.patch new file mode 100644 index 000000000..8a14411a5 --- /dev/null +++ b/extra/gpart/gpart-0.1h-l64seek.patch @@ -0,0 +1,71 @@ +--- gpart-0.1h.orig/src/l64seek.c ++++ gpart-0.1h/src/l64seek.c +@@ -25,30 +25,11 @@ + } ostck[OSTACKLEN]; + static int osptr = -1; + +-#if defined(__linux__) && defined(__i386__) +-_syscall5(int,_llseek,uint,fd,ulong,hi,ulong,lo,loff_t *,res,uint,wh) +-#endif +- +- +- + off64_t l64seek(int fd,off64_t offset,int whence) + { + off64_t ret = (off64_t)-1; + +-#if defined(__linux__) && defined(__i386__) +- int iret; +- unsigned long ohi, olo; +- +- ohi = (unsigned long)((offset >> 32) & 0xFFFFFFFF); +- olo = (unsigned long)(offset & 0xFFFFFFFF); +- iret = _llseek(fd,ohi,olo,&ret,whence); +- if (iret == -1) +- ret = (off64_t)-1; +-#endif +- +-#if defined(__FreeBSD__) || (defined(__linux__) && defined(__alpha__)) + ret = lseek(fd,offset,whence); +-#endif + + return (ret); + } +--- gpart-0.1h.orig/src/l64seek.h ++++ gpart-0.1h/src/l64seek.h +@@ -17,6 +17,8 @@ + #ifndef _L64SEEK_H + #define _L64SEEK_H + ++#include <sys/stat.h> ++#include <sys/types.h> + #include <unistd.h> + + /* +@@ -25,19 +27,7 @@ + * offsets. + */ + +- +-#if defined(__linux__) +-# include <linux/unistd.h> +-# include <sys/types.h> +- typedef int64_t off64_t; +-#endif +- +- +-#if defined(__FreeBSD__) +- typedef off_t off64_t; +-#endif +- +- ++typedef loff_t off64_t; + typedef off64_t s64_t; + + off64_t l64seek(int fd, off64_t offset, int whence); +@@ -45,5 +35,4 @@ + int l64opush(int); + s64_t l64opop(int); + +- + #endif diff --git a/extra/gpart/gpart-0.1h-ntfs.patch b/extra/gpart/gpart-0.1h-ntfs.patch new file mode 100644 index 000000000..1f887ac47 --- /dev/null +++ b/extra/gpart/gpart-0.1h-ntfs.patch @@ -0,0 +1,75 @@ +Ripped out of debian + +--- gpart-0.1h.orig/src/gm_ntfs.h ++++ gpart-0.1h/src/gm_ntfs.h +@@ -14,6 +14,9 @@ + * + */ + ++#include <stdint.h> ++#include <asm/byteorder.h> ++ + #ifndef _GM_NTFS_H + #define _GM_NTFS_H + +@@ -29,32 +32,38 @@ + /* 'NTFS' in little endian */ + #define NTFS_SUPER_MAGIC 0x5346544E + +-#if defined(i386) || defined(__i386__) || defined(__alpha__) +- + /* unsigned integral types */ + #ifndef NTFS_INTEGRAL_TYPES + #define NTFS_INTEGRAL_TYPES +-typedef unsigned char ntfs_u8; +-typedef unsigned short ntfs_u16; +-typedef unsigned int ntfs_u32; +-typedef s64_t ntfs_u64; ++typedef uint8_t ntfs_u8; ++typedef uint16_t ntfs_u16; ++typedef uint32_t ntfs_u32; ++typedef uint64_t ntfs_u64; ++typedef int8_t ntfs_s8; ++typedef int16_t ntfs_s16; + #endif /* NTFS_INTEGRAL_TYPES */ +-#endif /* defined(i386) || defined(__i386__) || defined(__alpha__) */ +- +- +-/* Macros reading unsigned integers from a byte pointer */ +-/* these should work for all little endian machines */ +-#define NTFS_GETU8(p) (*(ntfs_u8*)(p)) +-#define NTFS_GETU16(p) (*(ntfs_u16*)(p)) +-#define NTFS_GETU24(p) (NTFS_GETU32(p) & 0xFFFFFF) +-#define NTFS_GETU32(p) (*(ntfs_u32*)(p)) +-#define NTFS_GETU64(p) (*(ntfs_u64*)(p)) +- +-/* Macros reading signed integers, returning int */ +-#define NTFS_GETS8(p) ((int)(*(char*)(p))) +-#define NTFS_GETS16(p) ((int)(*(short*)(p))) +-#define NTFS_GETS24(p) (NTFS_GETU24(p) < 0x800000 ? (int)NTFS_GETU24(p) : +- + ++#define CPU_TO_LE16(a) __cpu_to_le16(a) ++#define CPU_TO_LE32(a) __cpu_to_le32(a) ++#define CPU_TO_LE64(a) __cpu_to_le64(a) ++ ++#define LE16_TO_CPU(a) __cpu_to_le16(a) ++#define LE32_TO_CPU(a) __cpu_to_le32(a) ++#define LE64_TO_CPU(a) __cpu_to_le64(a) ++ ++/* Macros reading unsigned integers */ ++#define NTFS_GETU8(p) (*(ntfs_u8*)(p)) ++#define NTFS_GETU16(p) ((ntfs_u16)LE16_TO_CPU(*(ntfs_u16*)(p))) ++#define NTFS_GETU24(p) ((ntfs_u32)NTFS_GETU16(p) | \ ++ ((ntfs_u32)NTFS_GETU8(((char*)(p)) + 2) << 16)) ++#define NTFS_GETU32(p) ((ntfs_u32)LE32_TO_CPU(*(ntfs_u32*)(p))) ++#define NTFS_GETU64(p) ((ntfs_u64)LE64_TO_CPU(*(ntfs_u64*)(p))) ++ ++/* Macros reading signed integers */ ++#define NTFS_GETS8(p) ((*(ntfs_s8*)(p))) ++#define NTFS_GETS16(p) ((ntfs_s16)LE16_TO_CPU(*(short*)(p))) ++#define NTFS_GETS24(p) (NTFS_GETU24(p) < 0x800000 ? \ ++ (int)NTFS_GETU24(p) : \ ++ (int)(NTFS_GETU24(p) - 0x1000000)) + + #endif /* _GM_NTFS_H */ diff --git a/extra/gpart/gpart-0.1h-openmode.patch b/extra/gpart/gpart-0.1h-openmode.patch new file mode 100644 index 000000000..ca13cc942 --- /dev/null +++ b/extra/gpart/gpart-0.1h-openmode.patch @@ -0,0 +1,11 @@ +--- gpart.orig/src/gpart.c 2008-10-19 15:06:06.000000000 +0000 ++++ gpart/src/gpart.c 2008-11-25 07:34:47.000000000 +0000 +@@ -1221,7 +1221,7 @@ static int make_mbr_backup(disk_desc *d, + { + int fd, ret = 0; + +- if ((fd = open(bfile,O_WRONLY|O_CREAT)) < 0) ++ if ((fd = open(bfile,O_WRONLY|O_CREAT, S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH)) < 0) + return (ret); + + if (write(fd,d->d_pt.t_boot,512) == 512) diff --git a/extra/gpart/gpart-0.1h-reiserfs-3.6.patch b/extra/gpart/gpart-0.1h-reiserfs-3.6.patch new file mode 100644 index 000000000..257015d2b --- /dev/null +++ b/extra/gpart/gpart-0.1h-reiserfs-3.6.patch @@ -0,0 +1,443 @@ +diff -rupN ./gpart-0.1h.orig/README ./gpart-0.1h/README +--- ./gpart-0.1h.orig/README Wed Feb 7 20:58:12 2001 ++++ ./gpart-0.1h/README Fri Jan 10 16:29:43 2003 +@@ -24,25 +24,25 @@ + + - Currently recognized partitions/filesystems types --------------------- + +- Modname Typ Description +- fat 0x01 "Primary DOS with 12 bit FAT" +- 0x04 "Primary DOS with 16 bit FAT (<= 32MB)" +- 0x06 "Primary 'big' DOS (> 32MB)" +- 0x0B "DOS or Windows 95 with 32 bit FAT" +- 0x0C "DOS or Windows 95 with 32 bit FAT, LBA" +- ntfs 0x07 "OS/2 HPFS, NTFS, QNX or Advanced UNIX" +- hpfs 0x07 "OS/2 HPFS, NTFS, QNX or Advanced UNIX" +- ext2 0x83 "Linux ext2 filesystem" +- lswap 0x82 "Linux swap" +- bsddl 0xA5 "FreeBSD/NetBSD/386BSD" +- s86dl 0x82 "Solaris/x86 disklabel" +- minix 0x80 "Minix V1" +- 0x81 "Minix V2" +- rfs 0x83 "Reiser filesystem" +- hmlvm 0xFE "Linux LVM physical volumes" +- qnx4 0x4F "QNX 4.x" +- beos 0xEB "BeOS fs" +- xfs 0x83 "SGI XFS filesystem" ++ Modname Typ Description ++ fat 0x01 "Primary DOS with 12 bit FAT" ++ 0x04 "Primary DOS with 16 bit FAT (<= 32MB)" ++ 0x06 "Primary 'big' DOS (> 32MB)" ++ 0x0B "DOS or Windows 95 with 32 bit FAT" ++ 0x0C "DOS or Windows 95 with 32 bit FAT, LBA" ++ ntfs 0x07 "OS/2 HPFS, NTFS, QNX or Advanced UNIX" ++ hpfs 0x07 "OS/2 HPFS, NTFS, QNX or Advanced UNIX" ++ ext2 0x83 "Linux ext2 filesystem" ++ lswap 0x82 "Linux swap" ++ bsddl 0xA5 "FreeBSD/NetBSD/386BSD" ++ s86dl 0x82 "Solaris/x86 disklabel" ++ minix 0x80 "Minix V1" ++ 0x81 "Minix V2" ++ reiserfs 0x83 "ReiserFS filesystem" ++ hmlvm 0xFE "Linux LVM physical volumes" ++ qnx4 0x4F "QNX 4.x" ++ beos 0xEB "BeOS fs" ++ xfs 0x83 "SGI XFS filesystem" + + + +diff -rupN ./gpart-0.1h.orig/man/gpart.man ./gpart-0.1h/man/gpart.man +--- ./gpart-0.1h.orig/man/gpart.man Wed Feb 7 20:54:18 2001 ++++ ./gpart-0.1h/man/gpart.man Fri Jan 10 16:31:52 2003 +@@ -63,8 +63,8 @@ MS Windows NT/2000 filesystem. + .I qnx4 + QNX 4.x filesystem. + .TP +-.I rfs +-The Reiser filesystem (version 3.5.X, X > 11). ++.I reiserfs ++The Reiser filesystem (version 3.5.X, X > 11, 3.6.X). + .TP + .I s86dl + Sun Solaris on Intel platforms uses a sub-partitioning +diff -rupN ./gpart-0.1h.orig/src/Makefile ./gpart-0.1h/src/Makefile +--- ./gpart-0.1h.orig/src/Makefile Tue Jan 30 20:01:08 2001 ++++ ./gpart-0.1h/src/Makefile Fri Jan 10 16:32:24 2003 +@@ -19,7 +19,7 @@ CFLAGS+=-DGPART_LANG=\'$(GPART_LANG)\' + endif + + +-mod=ext2 lswap fat bsddl ntfs hpfs s86dl minix rfs hmlvm qnx4 beos xfs ++mod=ext2 lswap fat bsddl ntfs hpfs s86dl minix reiserfs hmlvm qnx4 beos xfs + modobj=$(foreach m,$(mod),gm_$(m).o) + obj=gpart.o gmodules.o disku.o l64seek.o $(modobj) + src=$(obj:.o=.c) +diff -rupN ./gpart-0.1h.orig/src/gm_reiserfs.c ./gpart-0.1h/src/gm_reiserfs.c +--- ./gpart-0.1h.orig/src/gm_reiserfs.c Thu Jan 1 03:00:00 1970 ++++ ./gpart-0.1h/src/gm_reiserfs.c Fri Jan 10 17:25:30 2003 +@@ -0,0 +1,91 @@ ++/* ++ * gm_reiserfs.c -- gpart ReiserFS guessing module ++ * ++ * gpart (c) 1999-2001 Michail Brzitwa <mb@ichabod.han.de> ++ * Guess PC-type hard disk partitions. ++ * ++ * gpart is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License as published ++ * by the Free Software Foundation; either version 2, or (at your ++ * option) any later version. ++ * ++ * Created: 21.01.1999 <mb@ichabod.han.de> ++ * Modified: 26.12.2000 Francis Devereux <francis@devereux.tc> ++ * Added reiserfs 3.5.28 support. ++ * Modified: 10.01.2003 Yury Umanets <umka@namesys.com> ++ * Added reiserfs 3.6.x support. ++ * ++ */ ++ ++#include <string.h> ++#include <errno.h> ++#include "gpart.h" ++#include "gm_reiserfs.h" ++ ++static const char rcsid[] = "$Id: gm_reiserfs.c,v 1.5 2003/01/10 16:38:08 mb Exp mb $"; ++ ++ ++int reiserfs_init(disk_desc *d,g_module *m) ++{ ++ if ((d == 0) || (m == 0)) ++ return (0); ++ ++ m->m_desc = "ReiserFS filesystem"; ++ return (REISERFS_FIRST_BLOCK * 1024 + SB_V35_SIZE); ++} ++ ++ ++ ++int reiserfs_term(disk_desc *d) ++{ ++ return (1); ++} ++ ++ ++ ++int reiserfs_gfun(disk_desc *d,g_module *m) ++{ ++ struct reiserfs_super_block_v35 *sb; ++ dos_part_entry *pt = &m->m_part; ++ s64_t size; ++ ++ m->m_guess = GM_NO; ++ sb = (struct reiserfs_super_blockv35 *)(d->d_sbuf + REISERFS_FIRST_BLOCK * 1024); ++ if (strncmp(sb->s_magic,REISERFS_SUPER_V35_MAGIC,12) == 0 || ++ strncmp(sb->s_magic,REISERFS_SUPER_V36_MAGIC,12) == 0) ++ { ++ /* ++ * sanity checks. ++ */ ++ ++ if (sb->s_block_count < sb->s_free_blocks) ++ return (1); ++ ++ if (sb->s_block_count < REISERFS_MIN_BLOCK_AMOUNT) ++ return (1); ++ ++ if ((sb->s_state != REISERFS_VALID_FS) && ++ (sb->s_state != REISERFS_ERROR_FS)) ++ return (1); ++ ++ if (sb->s_oid_maxsize % 2) /* must be even */ ++ return (1); ++ ++ if (sb->s_oid_maxsize < sb->s_oid_cursize) ++ return (1); ++ ++ if ((sb->s_blocksize != 4096) && (sb->s_blocksize != 8192)) ++ return (1); ++ ++ /* ++ * ok. ++ */ ++ ++ m->m_guess = GM_YES; ++ pt->p_start = d->d_nsb; ++ size = sb->s_block_count; size *= sb->s_blocksize; size /= d->d_ssize; ++ pt->p_size = (unsigned long)size; ++ pt->p_typ = 0x83; ++ } ++ return (1); ++} +diff -rupN ./gpart-0.1h.orig/src/gm_reiserfs.h ./gpart-0.1h/src/gm_reiserfs.h +--- ./gpart-0.1h.orig/src/gm_reiserfs.h Thu Jan 1 03:00:00 1970 ++++ ./gpart-0.1h/src/gm_reiserfs.h Fri Jan 10 17:25:55 2003 +@@ -0,0 +1,82 @@ ++/* ++ * gm_reiserfs.h -- gpart ReiserFS guessing module header ++ * ++ * gpart (c) 1999-2001 Michail Brzitwa <mb@ichabod.han.de> ++ * Guess PC-type hard disk partitions. ++ * ++ * gpart is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License as published ++ * by the Free Software Foundation; either version 2, or (at your ++ * option) any later version. ++ * ++ * Created: 21.01.1999 <mb@ichabod.han.de> ++ * Modified: 26.12.2000 Francis Devereux <francis@devereux.tc> ++ * Update support reiserfs version 3.5.28 ++ * Modified: 10.01.2003 Yury Umanets <umka@namesys.com> ++ * Added reiserfs 3.6.x support. ++ * ++ */ ++ ++#ifndef _GM_reiserfs_H ++#define _GM_reiserfs_H ++ ++/* imported from asm/types.h */ ++typedef __signed__ char __s8; ++typedef unsigned char __u8; ++ ++typedef __signed__ short __s16; ++typedef unsigned short __u16; ++ ++typedef __signed__ int __s32; ++typedef unsigned int __u32; ++ ++/* ++ * taken from ReiserFS v3.5.28, v3.6.x. Reiserfs Copyright 1996-2000 Hans Reiser ++ */ ++ ++#define REISERFS_SUPER_V35_MAGIC "ReIsErFs" ++#define REISERFS_SUPER_V36_MAGIC "ReIsEr2Fs" ++ ++#define REISERFS_FIRST_BLOCK 64 ++#define REISERFS_VALID_FS 1 ++#define REISERFS_ERROR_FS 2 ++#define REISERFS_MIN_BLOCK_AMOUNT 100 ++ ++struct reiserfs_super_block_v35 ++{ ++ __u32 s_block_count; /* blocks count */ ++ __u32 s_free_blocks; /* free blocks count */ ++ __u32 s_root_block; /* root block number */ ++ __u32 s_journal_block; /* journal block number */ ++ __u32 s_journal_dev; /* journal device number */ ++ __u32 s_orig_journal_size; /* size of the journal on FS creation. used to make sure they don't overflow it */ ++ __u32 s_journal_trans_max; /* max number of blocks in a transaction. */ ++ __u32 s_journal_block_count; /* total size of the journal. can change over time */ ++ __u32 s_journal_max_batch; /* max number of blocks to batch into a trans */ ++ __u32 s_journal_max_commit_age; /* in seconds, how old can an async commit be */ ++ __u32 s_journal_max_trans_age; /* in seconds, how old can a transaction be */ ++ __u16 s_blocksize; /* block size */ ++ __u16 s_oid_maxsize; /* max size of object id array, see get_objectid() commentary */ ++ __u16 s_oid_cursize; /* current size of object id array */ ++ __u16 s_state; /* valid or error */ ++ char s_magic[12]; /* reiserfs magic string indicates that file system is reiserfs */ ++ __u32 s_hash_function_code; /* indicate, what hash fuction is being use to sort names in a directory*/ ++ __u16 s_tree_height; /* height of disk tree */ ++ __u16 s_bmap_nr; /* amount of bitmap blocks needed to address each block of file system */ ++ __u16 s_reserved; ++}; ++ ++#define SB_V35_SIZE (sizeof(struct reiserfs_super_block_v35)) ++ ++struct reiserfs_super_block_v36 { ++ struct reiserfs_super_block_v35 s_v35; ++ __u32 s_inode_generation; ++ __u32 s_flags; ++ char s_uuid[16]; ++ char s_label[16]; ++ char s_unused[88]; ++}; ++ ++#define SB_V36_SIZE (sizeof(struct reiserfs_super_block_v36)) ++ ++#endif /* _GM_REISERFS_H */ +diff -rupN ./gpart-0.1h.orig/src/gm_rfs.c ./gpart-0.1h/src/gm_rfs.c +--- ./gpart-0.1h.orig/src/gm_rfs.c Wed Feb 7 21:08:08 2001 ++++ ./gpart-0.1h/src/gm_rfs.c Thu Jan 1 03:00:00 1970 +@@ -1,88 +0,0 @@ +-/* +- * gm_rfs.c -- gpart ReiserFS guessing module +- * +- * gpart (c) 1999-2001 Michail Brzitwa <mb@ichabod.han.de> +- * Guess PC-type hard disk partitions. +- * +- * gpart is free software; you can redistribute it and/or modify +- * it under the terms of the GNU General Public License as published +- * by the Free Software Foundation; either version 2, or (at your +- * option) any later version. +- * +- * Created: 21.01.1999 <mb@ichabod.han.de> +- * Modified: 26.12.2000 Francis Devereux <francis@devereux.tc> +- * Added reiserfs 3.5.28 support. +- * +- */ +- +-#include <string.h> +-#include <errno.h> +-#include "gpart.h" +-#include "gm_rfs.h" +- +-static const char rcsid[] = "$Id: gm_rfs.c,v 1.5 2001/02/07 18:08:08 mb Exp mb $"; +- +- +-int rfs_init(disk_desc *d,g_module *m) +-{ +- if ((d == 0) || (m == 0)) +- return (0); +- +- m->m_desc = "Reiser filesystem"; +- return (REISERFS_FIRST_BLOCK * 1024 + SB_SIZE); +-} +- +- +- +-int rfs_term(disk_desc *d) +-{ +- return (1); +-} +- +- +- +-int rfs_gfun(disk_desc *d,g_module *m) +-{ +- struct reiserfs_super_block *sb; +- dos_part_entry *pt = &m->m_part; +- s64_t size; +- +- m->m_guess = GM_NO; +- sb = (struct reiserfs_super_block *)(d->d_sbuf + REISERFS_FIRST_BLOCK * 1024); +- if (strncmp(sb->s_magic,REISERFS_SUPER_MAGIC,12) == 0) +- { +- /* +- * sanity checks. +- */ +- +- if (sb->s_block_count < sb->s_free_blocks) +- return (1); +- +- if (sb->s_block_count < REISERFS_MIN_BLOCK_AMOUNT) +- return (1); +- +- if ((sb->s_state != REISERFS_VALID_FS) && +- (sb->s_state != REISERFS_ERROR_FS)) +- return (1); +- +- if (sb->s_oid_maxsize % 2) /* must be even */ +- return (1); +- +- if (sb->s_oid_maxsize < sb->s_oid_cursize) +- return (1); +- +- if ((sb->s_blocksize != 4096) && (sb->s_blocksize != 8192)) +- return (1); +- +- /* +- * ok. +- */ +- +- m->m_guess = GM_YES; +- pt->p_start = d->d_nsb; +- size = sb->s_block_count; size *= sb->s_blocksize; size /= d->d_ssize; +- pt->p_size = (unsigned long)size; +- pt->p_typ = 0x83; +- } +- return (1); +-} +diff -rupN ./gpart-0.1h.orig/src/gm_rfs.h ./gpart-0.1h/src/gm_rfs.h +--- ./gpart-0.1h.orig/src/gm_rfs.h Mon Jan 29 16:34:35 2001 ++++ ./gpart-0.1h/src/gm_rfs.h Thu Jan 1 03:00:00 1970 +@@ -1,68 +0,0 @@ +-/* +- * gm_rfs.h -- gpart ReiserFS guessing module header +- * +- * gpart (c) 1999-2001 Michail Brzitwa <mb@ichabod.han.de> +- * Guess PC-type hard disk partitions. +- * +- * gpart is free software; you can redistribute it and/or modify +- * it under the terms of the GNU General Public License as published +- * by the Free Software Foundation; either version 2, or (at your +- * option) any later version. +- * +- * Created: 21.01.1999 <mb@ichabod.han.de> +- * Modified: 26.12.2000 Francis Devereux <francis@devereux.tc> +- * Update support reiserfs version 3.5.28 +- * +- */ +- +-#ifndef _GM_RFS_H +-#define _GM_RFS_H +- +-/* imported from asm/types.h */ +-typedef __signed__ char __s8; +-typedef unsigned char __u8; +- +-typedef __signed__ short __s16; +-typedef unsigned short __u16; +- +-typedef __signed__ int __s32; +-typedef unsigned int __u32; +- +-/* +- * taken from ReiserFS v3.5.28. Reiserfs Copyright 1996-2000 Hans Reiser +- */ +- +-#define REISERFS_SUPER_MAGIC "ReIsErFs" +-#define REISERFS_FIRST_BLOCK 64 +-#define REISERFS_VALID_FS 1 +-#define REISERFS_ERROR_FS 2 +-#define REISERFS_MIN_BLOCK_AMOUNT 100 +- +-struct reiserfs_super_block +-{ +- __u32 s_block_count; /* blocks count */ +- __u32 s_free_blocks; /* free blocks count */ +- __u32 s_root_block; /* root block number */ +- __u32 s_journal_block; /* journal block number */ +- __u32 s_journal_dev; /* journal device number */ +- __u32 s_orig_journal_size; /* size of the journal on FS creation. used to make sure they don't overflow it */ +- __u32 s_journal_trans_max; /* max number of blocks in a transaction. */ +- __u32 s_journal_block_count; /* total size of the journal. can change over time */ +- __u32 s_journal_max_batch; /* max number of blocks to batch into a trans */ +- __u32 s_journal_max_commit_age; /* in seconds, how old can an async commit be */ +- __u32 s_journal_max_trans_age; /* in seconds, how old can a transaction be */ +- __u16 s_blocksize; /* block size */ +- __u16 s_oid_maxsize; /* max size of object id array, see get_objectid() commentary */ +- __u16 s_oid_cursize; /* current size of object id array */ +- __u16 s_state; /* valid or error */ +- char s_magic[12]; /* reiserfs magic string indicates that file system is reiserfs */ +- __u32 s_hash_function_code; /* indicate, what hash fuction is being use to sort names in a directory*/ +- __u16 s_tree_height; /* height of disk tree */ +- __u16 s_bmap_nr; /* amount of bitmap blocks needed to address each block of file system */ +- __u16 s_reserved; +-}; +- +-#define SB_SIZE (sizeof(struct reiserfs_super_block)) +- +- +-#endif /* _GM_RFS_H */ +diff -rupN ./gpart-0.1h.orig/src/gmodules.c ./gpart-0.1h/src/gmodules.c +--- ./gpart-0.1h.orig/src/gmodules.c Tue Jan 30 20:01:00 2001 ++++ ./gpart-0.1h/src/gmodules.c Fri Jan 10 16:31:28 2003 +@@ -154,7 +154,7 @@ void g_mod_addinternals() + GMODINS(bsddl); + GMODINS(lswap); + GMODINS(qnx4); +- GMODINS(rfs); ++ GMODINS(reiserfs); + GMODINS(ntfs); + GMODINS(hpfs); + GMODINS(minix); +diff -rupN ./gpart-0.1h.orig/src/gmodules.h ./gpart-0.1h/src/gmodules.h +--- ./gpart-0.1h.orig/src/gmodules.h Tue Jan 30 20:00:47 2001 ++++ ./gpart-0.1h/src/gmodules.h Fri Jan 10 16:31:23 2003 +@@ -63,7 +63,7 @@ g_module *g_mod_setweight(char *,float); + + GMODDECL(bsddl); GMODDECL(ext2); GMODDECL(fat); + GMODDECL(hpfs); GMODDECL(lswap); GMODDECL(ntfs); +-GMODDECL(s86dl); GMODDECL(minix); GMODDECL(rfs); ++GMODDECL(s86dl); GMODDECL(minix); GMODDECL(reiserfs); + GMODDECL(hmlvm); GMODDECL(qnx4); GMODDECL(beos); + GMODDECL(xfs); + diff --git a/extra/gpart/gpart-0.1h-vfat.patch b/extra/gpart/gpart-0.1h-vfat.patch new file mode 100644 index 000000000..7234ac689 --- /dev/null +++ b/extra/gpart/gpart-0.1h-vfat.patch @@ -0,0 +1,17 @@ +Ripped out of debian + +--- gpart-0.1h.orig/src/gm_fat.h ++++ gpart-0.1h/src/gm_fat.h +@@ -60,6 +60,10 @@ + __u16 info_sector; /* filesystem info sector */ + __u16 backup_boot; /* backup boot sector */ + __u16 reserved2[6]; /* Unused */ +-}; +- ++} __attribute__ ((packed)); ++/* "__attribute__ ((packed))" ++ added by davidc@debian.org, ++ as suggested by falk@zxmjz18.extern.uni-tuebingen.de ++ Fri Jul 07 18:04:15 2000 ++ in debian bug report #66893 "FAT detection broken on Alpha" */ + #endif /* _GM_FAT_H */ |