diff --git a/cryptsetup-2.13-crypto.diff b/cryptsetup-2.13-crypto.diff
new file mode 100644
index 0000000..2c55a42
--- /dev/null
+++ b/cryptsetup-2.13-crypto.diff
@@ -0,0 +1,1497 @@
+* password hashing based on debian patch (rmd160, sha*) adds losetup options -k
+  and -H
+* add support for loop-AES compatible strings like "twofish256"
+
+Signed-off-by: Ludwig Nussel <ludwig.nussel@suse.de>
+
+Index: util-linux-ng-2.13rc2+git20070725/mount/Makefile.am
+===================================================================
+--- util-linux-ng-2.13rc2+git20070725.orig/mount/Makefile.am
++++ util-linux-ng-2.13rc2+git20070725/mount/Makefile.am
+@@ -12,7 +12,7 @@ headers_common = fstab.h linux_fs.h moun
+ 	mount_paths.h lomount.h fsprobe.h realpath.h xmalloc.h \
+ 	getusername.h loop.h sundries.h
+ 
+-mount_common = fstab.c mount_mntent.c getusername.c lomount.c \
++mount_common = fstab.c mount_mntent.c getusername.c lomount.c rmd160.c sha512.c \
+ 	$(utils_common) $(headers_common) ../lib/env.c
+ 
+ mount_SOURCES = mount.c $(mount_common) ../lib/setproctitle.c
+@@ -25,7 +25,7 @@ umount_LDFLAGS = $(SUID_LDFLAGS) $(AM_LD
+ 
+ swapon_SOURCES = swapon.c swap_constants.h $(utils_common)
+ 
+-losetup_SOURCES = lomount.c loop.h lomount.h
++losetup_SOURCES = lomount.c loop.h lomount.h rmd160.c sha512.c
+ losetup_CPPFLAGS = -DMAIN $(AM_CPPFLAGS)
+ 
+ mount_LDADD = $(LDADD_common)
+Index: util-linux-ng-2.13rc2+git20070725/mount/rmd160.h
+===================================================================
+--- /dev/null
++++ util-linux-ng-2.13rc2+git20070725/mount/rmd160.h
+@@ -0,0 +1,11 @@
++#ifndef RMD160_H
++#define RMD160_H
++
++#define RMD160_HASH_SIZE 20
++
++void
++rmd160_hash_buffer( unsigned char *outbuf, const unsigned char *buffer, size_t length );
++
++#endif /*RMD160_H*/
++
++
+Index: util-linux-ng-2.13rc2+git20070725/mount/lomount.c
+===================================================================
+--- util-linux-ng-2.13rc2+git20070725.orig/mount/lomount.c
++++ util-linux-ng-2.13rc2+git20070725/mount/lomount.c
+@@ -20,9 +20,15 @@
+ 
+ #include "loop.h"
+ #include "lomount.h"
++#include "rmd160.h"
++#include "sha512.h"
+ #include "xstrncpy.h"
+ #include "nls.h"
+ 
++#ifndef MAX
++#define MAX(a,b) ((a>b)?(a):(b))
++#endif
++
+ extern int verbose;
+ extern char *progname;
+ extern char *xstrdup (const char *s);	/* not: #include "sundries.h" */
+@@ -95,12 +101,22 @@ show_loop(char *device) {
+ 
+ 		if (loopinfo64.lo_encrypt_type ||
+ 		    loopinfo64.lo_crypt_name[0]) {
+-			char *e = loopinfo64.lo_crypt_name;
++			const char *e = (const char*)loopinfo64.lo_crypt_name;
+ 
+ 			if (*e == 0 && loopinfo64.lo_encrypt_type == 1)
+ 				e = "XOR";
+-			printf(_(", encryption %s (type %d)"),
+-			       e, loopinfo64.lo_encrypt_type);
++			printf(_(", encryption %s (type %d), key length %u"),
++			       e, loopinfo64.lo_encrypt_type, loopinfo64.lo_encrypt_key_size);
++
++#if 0
++			if(loopinfo64.lo_encrypt_key_size) {
++				unsigned i;
++				printf("\nkey ");
++				for(i = 0; i < loopinfo64.lo_encrypt_key_size; ++i) {
++					printf("%hhx",loopinfo64.lo_encrypt_key[i]);
++				}
++			}
++#endif
+ 		}
+ 		printf("\n");
+ 		close (fd);
+@@ -259,7 +275,7 @@ xgetpass(int pfd, const char *prompt) {
+ 	}
+ 
+ 	if (pass == NULL)
+-		return "";
++		return NULL;
+ 
+ 	pass[i] = 0;
+ 	return pass;
+@@ -273,12 +289,30 @@ digits_only(const char *s) {
+ 	return 1;
+ }
+ 
++static void phash_none(const unsigned char *key, size_t keylen, unsigned char* buf, size_t buflen)
++{
++	memcpy(buf, key, MAX(buflen, keylen));
++}
++
++static void phash_rmd160(const unsigned char *key, size_t keylen, unsigned char* buf, size_t buflen)
++{
++	unsigned char tmpbuf[RMD160_HASH_SIZE*2];
++	unsigned char* tmp = malloc(keylen+1);
++	tmp[0]='A';
++	memcpy(tmp+1, key, keylen);
++	rmd160_hash_buffer(tmpbuf, key, keylen);
++	rmd160_hash_buffer(tmpbuf + RMD160_HASH_SIZE, tmp, keylen+1);
++	memset(tmp, 0, keylen+1);
++	free(tmp);
++	memcpy(buf, tmpbuf, MAX(buflen, sizeof(tmpbuf)));
++}
++
+ int
+ set_loop(const char *device, const char *file, unsigned long long offset,
+-	 const char *encryption, int pfd, int *loopro) {
++	 const char *encryption, const char* phash, int pfd, int *loopro, int keysz) {
+ 	struct loop_info64 loopinfo64;
+ 	int fd, ffd, mode, i;
+-	char *pass;
++	char *pass = NULL;
+ 
+ 	mode = (*loopro ? O_RDONLY : O_RDWR);
+ 	if ((ffd = open(file, mode)) < 0) {
+@@ -297,15 +331,43 @@ set_loop(const char *device, const char 
+ 
+ 	memset(&loopinfo64, 0, sizeof(loopinfo64));
+ 
+-	xstrncpy(loopinfo64.lo_file_name, file, LO_NAME_SIZE);
++	xstrncpy((char*)loopinfo64.lo_file_name, file, LO_NAME_SIZE);
++
++	loopinfo64.lo_encrypt_key_size = 0;
+ 
+ 	if (encryption && *encryption) {
++		// a hint for suse users
++		if(!strcmp(encryption, "twofishSL92")) {
++			fprintf(stderr, _("twofishSL92 is not supported via cryptoloop, please use dm-crypt to access the volume\n"));
++			close(fd);
++			close(ffd);
++			return 1;
++		}
+ 		if (digits_only(encryption)) {
+ 			loopinfo64.lo_encrypt_type = atoi(encryption);
+ 		} else {
+-			loopinfo64.lo_encrypt_type = LO_CRYPT_CRYPTOAPI;
+-			snprintf(loopinfo64.lo_crypt_name, LO_NAME_SIZE,
++			// check for something like twofish256
++			unsigned len = strlen(encryption);
++			snprintf((char*)loopinfo64.lo_crypt_name, LO_NAME_SIZE,
+ 				 "%s", encryption);
++			if(len > 3) {
++				if(isdigit(loopinfo64.lo_crypt_name[len-3])
++				&& isdigit(loopinfo64.lo_crypt_name[len-2])
++				&& isdigit(loopinfo64.lo_crypt_name[len-1])) {
++					loopinfo64.lo_encrypt_key_size = atoi((char*)&loopinfo64.lo_crypt_name[len-3]) >> 3;
++					loopinfo64.lo_crypt_name[len-3] = 0;
++				}
++			}
++
++			if(keysz && loopinfo64.lo_encrypt_key_size && loopinfo64.lo_encrypt_key_size != keysz >> 3) {
++				fprintf(stderr, _("please either specify '%s%d' or -e '%s' -k '%d'\n"),
++					loopinfo64.lo_crypt_name, loopinfo64.lo_encrypt_key_size<<3,
++					loopinfo64.lo_crypt_name, keysz);
++				close(fd);
++				close(ffd);
++				return 1;
++			}
++			loopinfo64.lo_encrypt_type = LO_CRYPT_CRYPTOAPI;
+ 		}
+ 	}
+ 
+@@ -325,20 +387,64 @@ set_loop(const char *device, const char 
+ 	}
+ #endif
+ 
+-	switch (loopinfo64.lo_encrypt_type) {
+-	case LO_CRYPT_NONE:
+-		loopinfo64.lo_encrypt_key_size = 0;
+-		break;
+-	case LO_CRYPT_XOR:
+-		pass = getpass(_("Password: "));
+-		goto gotpass;
+-	default:
+-		pass = xgetpass(pfd, _("Password: "));
+-	gotpass:
++	if (loopinfo64.lo_encrypt_type != LO_CRYPT_NONE) {
++		void (*hfunc)(const unsigned char*, size_t, unsigned char*, size_t) = NULL;
++
+ 		memset(loopinfo64.lo_encrypt_key, 0, LO_KEY_SIZE);
+-		xstrncpy(loopinfo64.lo_encrypt_key, pass, LO_KEY_SIZE);
++
++		pass = xgetpass(pfd, _("Password: "));
++		if(!pass) {
++			close(fd);
++			close(ffd);
++			return 1;
++		}
++
++		// set default hash functions, loop-AES compatible
++		if(loopinfo64.lo_encrypt_type == LO_CRYPT_CRYPTOAPI) {
++			hfunc = sha512_hash_buffer;
++			if(loopinfo64.lo_encrypt_key_size == 24) hfunc = sha384_hash_buffer;
++			if(loopinfo64.lo_encrypt_key_size == 32) hfunc = sha512_hash_buffer;
++		} else {
++			hfunc = phash_none;
++			loopinfo64.lo_encrypt_key_size = keysz?keysz>>3:LO_KEY_SIZE;
++		}
++
++		if(!loopinfo64.lo_encrypt_key_size) {
++			if(!keysz) {
++				if(verbose)
++					fprintf(stderr, _("please specify a key length\n"));
++				close(fd);
++				close(ffd);
++				return 1;
++			}
++			loopinfo64.lo_encrypt_key_size = keysz>>3;
++		}
++
++		if (phash) {
++			if(!strcasecmp(phash, "sha512")) {
++				hfunc = sha512_hash_buffer;
++			} else if(!strcasecmp(phash, "sha384")) {
++				hfunc = sha384_hash_buffer;
++			} else if(!strcasecmp(phash, "sha256")) {
++				hfunc = sha256_hash_buffer;
++			} else if(!strcasecmp(phash, "rmd160")) {
++				hfunc = phash_rmd160;
++			} else if(!strcasecmp(phash, "none")) {
++				hfunc = phash_none;
++			} else {
++				fprintf(stderr, _("unsupported hash method '%s'\n"), phash);
++				close(fd);
++				close(ffd);
++				return 1;
++			}
++		}
++
++		if(hfunc) {
++			hfunc((unsigned char*)pass, strlen(pass), loopinfo64.lo_encrypt_key, loopinfo64.lo_encrypt_key_size);
++		}
++
++		// zero buffer
+ 		memset(pass, 0, strlen(pass));
+-		loopinfo64.lo_encrypt_key_size = LO_KEY_SIZE;
+ 	}
+ 
+ 	if (ioctl(fd, LOOP_SET_FD, ffd) < 0) {
+@@ -416,8 +522,8 @@ mutter(void) {
+ }  
+ 
+ int
+-set_loop (const char *device, const char *file, unsigned long long offset,
+-	  const char *encryption, int *loopro) {
++set_loop(const char *device, const char *file, unsigned long long offset,
++	 const char *encryption, const char* phash, int pfd, int *loopro, int keysz) {
+ 	mutter();
+ 	return 1;
+ }
+@@ -456,7 +562,13 @@ usage(void) {
+   " %1$s [ options ] {-f|--find|loop_device} file     # setup\n"
+   "\nOptions:\n"
+   " -e | --encryption <type> enable data encryption with specified <name/num>\n"
++  " -H | --phash <type>      hash password using specified algorithm (rmd160/sha512/sha256/sha384/none)\n"
+   " -h | --help              this help\n"
++  " -k | --keybits <num>     specify number of bits in the hashed key given\n"
++  "                          to the cipher.  Some ciphers support several key\n"
++  "                          sizes and might be more efficient with a smaller\n"
++  "                          key size.  Key sizes < 128 are generally not\n"
++  "                          recommended\n"
+   " -o | --offset <num>      start at offset <num> into file\n"
+   " -p | --pass-fd <num>     read passphrase from file descriptor <num>\n"
+   " -r | --read-only         setup read-only loop device\n"
+@@ -497,11 +609,14 @@ error (const char *fmt, ...) {
+ int
+ main(int argc, char **argv) {
+ 	char *p, *offset, *encryption, *passfd, *device, *file;
++	char *keysize;
++	char *phash = NULL;
+ 	int delete, find, c, all;
+ 	int res = 0;
+ 	int showdev = 0;
+ 	int ro = 0;
+ 	int pfd = -1;
++	int keysz = 0;
+ 	unsigned long long off;
+ 	struct option longopts[] = {
+ 		{ "all", 0, 0, 'a' },
+@@ -509,6 +624,8 @@ main(int argc, char **argv) {
+ 		{ "encryption", 1, 0, 'e' },
+ 		{ "find", 0, 0, 'f' },
+ 		{ "help", 0, 0, 'h' },
++		{ "keybits", 1, 0, 'k' },
++		{ "phash", 1, 0, 'H' },
+ 		{ "offset", 1, 0, 'o' },
+ 		{ "pass-fd", 1, 0, 'p' },
+ 		{ "read-only", 0, 0, 'r' },
+@@ -524,12 +641,13 @@ main(int argc, char **argv) {
+ 	delete = find = all = 0;
+ 	off = 0;
+ 	offset = encryption = passfd = NULL;
++	keysize = NULL;
+ 
+ 	progname = argv[0];
+ 	if ((p = strrchr(progname, '/')) != NULL)
+ 		progname = p+1;
+ 
+-	while ((c = getopt_long(argc, argv, "ade:E:fho:p:rsv",
++	while ((c = getopt_long(argc, argv, "ade:E:fhk:No:p:rsvH:",
+ 				longopts, NULL)) != -1) {
+ 		switch (c) {
+ 		case 'a':
+@@ -548,6 +666,12 @@ main(int argc, char **argv) {
+ 		case 'f':
+ 			find = 1;
+ 			break;
++		case 'k':
++			keysize = optarg;
++			break;
++		case 'H':
++			phash = optarg;
++			break;
+ 		case 'o':
+ 			offset = optarg;
+ 			break;
+@@ -611,8 +735,10 @@ main(int argc, char **argv) {
+ 			usage();
+ 		if (passfd && sscanf(passfd, "%d", &pfd) != 1)
+ 			usage();
++		if (keysize && sscanf(keysize,"%d",&keysz) != 1)
++			usage();
+ 		do {
+-			res = set_loop(device, file, off, encryption, pfd, &ro);
++			res = set_loop(device, file, off, encryption, phash, pfd, &ro, keysz);
+ 			if (res == 2 && find) {
+ 				if (verbose)
+ 					printf("stolen loop=%s...trying again\n",
+Index: util-linux-ng-2.13rc2+git20070725/mount/mount.c
+===================================================================
+--- util-linux-ng-2.13rc2+git20070725.orig/mount/mount.c
++++ util-linux-ng-2.13rc2+git20070725/mount/mount.c
+@@ -93,6 +93,9 @@ static int suid = 0;
+ /* Contains the fd to read the passphrase from, if any. */
+ static int pfd = -1;
+ 
++/* Contains the preferred keysize in bits we want to use */
++static int keysz = 0;
++
+ /* Map from -o and fstab option strings to the flag argument to mount(2).  */
+ struct opt_map {
+   const char *opt;		/* option name */
+@@ -190,6 +193,7 @@ static int opt_nofail = 0;
+ 
+ static const char *opt_loopdev, *opt_vfstype, *opt_offset, *opt_encryption,
+ 	*opt_speed, *opt_comment, *opt_uhelper;
++static const char *opt_keybits, *opt_phash, *opt_nohashpass;
+ 
+ static int mounted (const char *spec0, const char *node0);
+ static int check_special_mountprog(const char *spec, const char *node,
+@@ -204,6 +208,9 @@ static struct string_opt_map {
+   { "vfs=",	1, &opt_vfstype },
+   { "offset=",	0, &opt_offset },
+   { "encryption=", 0, &opt_encryption },
++  { "phash=", 0, &opt_phash },
++  { "keybits=", 0, &opt_keybits },
++  { "nohashpass", 0, &opt_nohashpass },
+   { "speed=", 0, &opt_speed },
+   { "comment=", 1, &opt_comment },
+   { "uhelper=", 0, &opt_uhelper },
+@@ -858,7 +865,7 @@ loop_check(const char **spec, const char
+       *type = opt_vfstype;
+   }
+ 
+-  *loop = ((*flags & MS_LOOP) || *loopdev || opt_offset || opt_encryption);
++  *loop = ((*flags & MS_LOOP) || *loopdev || opt_offset || opt_encryption || opt_phash || opt_keybits);
+   *loopfile = *spec;
+ 
+   if (*loop) {
+@@ -879,9 +886,17 @@ loop_check(const char **spec, const char
+ 	  return EX_SYSERR;	/* no more loop devices */
+ 	if (verbose)
+ 	  printf(_("mount: going to use the loop device %s\n"), *loopdev);
+-
++	if (!keysz && opt_keybits)
++	  keysz  = strtoul(opt_keybits, NULL, 0);
++	if (opt_nohashpass) {
++		if(opt_phash && strcmp(opt_phash, "none")) {
++			error(_("mount: please specify either phash=%s or nohashpass\n"));
++			return EX_FAIL;
++		}
++		opt_phash = "none";
++	}
+ 	if ((res = set_loop(*loopdev, *loopfile, offset,
+-			    opt_encryption, pfd, &loopro))) {
++			    opt_encryption, opt_phash, pfd, &loopro, keysz))) {
+ 	  if (res == 2) {
+ 	     /* loop dev has been grabbed by some other process,
+ 	        try again, if not given explicitly */
+@@ -1184,7 +1199,7 @@ try_mount_one (const char *spec0, const 
+ 	error (_("mount: %s not mounted already, or bad option"), node);
+       } else {
+ 	error (_("mount: wrong fs type, bad option, bad superblock on %s,\n"
+-	       "       missing codepage or other error"),
++	       "       missing codepage or helper program, or other error"),
+ 	       spec);
+ 
+ 	if (stat(spec, &statbuf) == 0 && S_ISBLK(statbuf.st_mode)
+@@ -1629,6 +1644,7 @@ static struct option longopts[] = {
+ 	{ "options", 1, 0, 'o' },
+ 	{ "test-opts", 1, 0, 'O' },
+ 	{ "pass-fd", 1, 0, 'p' },
++	{ "keybits", 1, 0, 'k' },
+ 	{ "types", 1, 0, 't' },
+ 	{ "bind", 0, 0, 128 },
+ 	{ "replace", 0, 0, 129 },
+@@ -1781,6 +1797,7 @@ main(int argc, char *argv[]) {
+ 	char *options = NULL, *test_opts = NULL, *node;
+ 	const char *spec = NULL;
+ 	char *label = NULL;
++	char *keysize = NULL;
+ 	char *uuid = NULL;
+ 	char *types = NULL;
+ 	char *p;
+@@ -1811,7 +1828,7 @@ main(int argc, char *argv[]) {
+ 	initproctitle(argc, argv);
+ #endif
+ 
+-	while ((c = getopt_long (argc, argv, "afFhilL:no:O:p:rsU:vVwt:",
++	while ((c = getopt_long (argc, argv, "afFhik:lL:no:O:p:rsU:vVwt:",
+ 				 longopts, NULL)) != -1) {
+ 		switch (c) {
+ 		case 'a':	       /* mount everything in fstab */
+@@ -1829,6 +1846,9 @@ main(int argc, char *argv[]) {
+ 		case 'i':
+ 			external_allowed = 0;
+ 			break;
++		case 'k':
++			keysize = optarg;
++			break;
+ 		case 'l':
+ 			list_with_volumelabel = 1;
+ 			break;
+@@ -1975,6 +1995,9 @@ main(int argc, char *argv[]) {
+ 		create_mtab ();
+ 	}
+ 
++	if (keysize && sscanf(keysize,"%d",&keysz) != 1)
++		die (EX_USAGE, _("mount: argument to --keybits or -k must be a number"));
++
+ 	switch (argc+specseen) {
+ 	case 0:
+ 		/* mount -a */
+Index: util-linux-ng-2.13rc2+git20070725/mount/lomount.h
+===================================================================
+--- util-linux-ng-2.13rc2+git20070725.orig/mount/lomount.h
++++ util-linux-ng-2.13rc2+git20070725/mount/lomount.h
+@@ -1,6 +1,6 @@
+ extern int verbose;
+-extern int set_loop(const char *, const char *, unsigned long long,
+-		    const char *, int, int *);
++extern int set_loop(const char *device, const char *file, unsigned long long offset,
++	 const char *encryption, const char* phash, int pfd, int *loopro, int keysz);
+ extern int del_loop(const char *);
+ extern int is_loop_device(const char *);
+ extern char * find_unused_loop_device(void);
+Index: util-linux-ng-2.13rc2+git20070725/mount/rmd160.c
+===================================================================
+--- /dev/null
++++ util-linux-ng-2.13rc2+git20070725/mount/rmd160.c
+@@ -0,0 +1,532 @@
++/* rmd160.c  -	RIPE-MD160
++ *	Copyright (C) 1998 Free Software Foundation, Inc.
++ */
++
++/* This file was part of GnuPG. Modified for use within the Linux
++ * mount utility by Marc Mutz <Marc@Mutz.com>. None of this code is
++ * by myself. I just removed everything that you don't need when all
++ * you want to do is to use rmd160_hash_buffer().
++ * My comments are marked with (mm).  */
++
++/* GnuPG 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 of the License, or
++ * (at your option) any later version.
++ *
++ * GnuPG is distributed in the hope that it will be useful,
++ * but WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
++ * GNU General Public License for more details.
++ *
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA */
++
++#include <string.h> /* (mm) for memcpy */
++#include <endian.h> /* (mm) for BIG_ENDIAN and BYTE_ORDER */
++#include "rmd160.h"
++
++/* (mm) these are used by the original GnuPG file. In order to modify
++ * that file not too much, we keep the notations. maybe it would be
++ * better to include linux/types.h and typedef __u32 to u32 and __u8
++ * to byte?  */
++typedef unsigned int u32; /* taken from e.g. util-linux's minix.h */
++typedef unsigned char byte;
++
++typedef struct {
++    u32  h0,h1,h2,h3,h4;
++    u32  nblocks;
++    byte buf[64];
++    int  count;
++} RMD160_CONTEXT;
++
++/****************
++ * Rotate a 32 bit integer by n bytes
++ */
++#if defined(__GNUC__) && defined(__i386__)
++static inline u32
++rol( u32 x, int n)
++{
++	__asm__("roll %%cl,%0"
++		:"=r" (x)
++		:"0" (x),"c" (n));
++	return x;
++}
++#else
++  #define rol(x,n) ( ((x) << (n)) | ((x) >> (32-(n))) )
++#endif
++
++/*********************************
++ * RIPEMD-160 is not patented, see (as of 25.10.97)
++ *   http://www.esat.kuleuven.ac.be/~bosselae/ripemd160.html
++ * Note that the code uses Little Endian byteorder, which is good for
++ * 386 etc, but we must add some conversion when used on a big endian box.
++ *
++ *
++ * Pseudo-code for RIPEMD-160
++ *
++ * RIPEMD-160 is an iterative hash function that operates on 32-bit words.
++ * The round function takes as input a 5-word chaining variable and a 16-word
++ * message block and maps this to a new chaining variable. All operations are
++ * defined on 32-bit words. Padding is identical to that of MD4.
++ *
++ *
++ * RIPEMD-160: definitions
++ *
++ *
++ *   nonlinear functions at bit level: exor, mux, -, mux, -
++ *
++ *   f(j, x, y, z) = x XOR y XOR z		  (0 <= j <= 15)
++ *   f(j, x, y, z) = (x AND y) OR (NOT(x) AND z)  (16 <= j <= 31)
++ *   f(j, x, y, z) = (x OR NOT(y)) XOR z	  (32 <= j <= 47)
++ *   f(j, x, y, z) = (x AND z) OR (y AND NOT(z))  (48 <= j <= 63)
++ *   f(j, x, y, z) = x XOR (y OR NOT(z))	  (64 <= j <= 79)
++ *
++ *
++ *   added constants (hexadecimal)
++ *
++ *   K(j) = 0x00000000	    (0 <= j <= 15)
++ *   K(j) = 0x5A827999	   (16 <= j <= 31)	int(2**30 x sqrt(2))
++ *   K(j) = 0x6ED9EBA1	   (32 <= j <= 47)	int(2**30 x sqrt(3))
++ *   K(j) = 0x8F1BBCDC	   (48 <= j <= 63)	int(2**30 x sqrt(5))
++ *   K(j) = 0xA953FD4E	   (64 <= j <= 79)	int(2**30 x sqrt(7))
++ *   K'(j) = 0x50A28BE6     (0 <= j <= 15)      int(2**30 x cbrt(2))
++ *   K'(j) = 0x5C4DD124    (16 <= j <= 31)      int(2**30 x cbrt(3))
++ *   K'(j) = 0x6D703EF3    (32 <= j <= 47)      int(2**30 x cbrt(5))
++ *   K'(j) = 0x7A6D76E9    (48 <= j <= 63)      int(2**30 x cbrt(7))
++ *   K'(j) = 0x00000000    (64 <= j <= 79)
++ *
++ *
++ *   selection of message word
++ *
++ *   r(j)      = j		      (0 <= j <= 15)
++ *   r(16..31) = 7, 4, 13, 1, 10, 6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8
++ *   r(32..47) = 3, 10, 14, 4, 9, 15, 8, 1, 2, 7, 0, 6, 13, 11, 5, 12
++ *   r(48..63) = 1, 9, 11, 10, 0, 8, 12, 4, 13, 3, 7, 15, 14, 5, 6, 2
++ *   r(64..79) = 4, 0, 5, 9, 7, 12, 2, 10, 14, 1, 3, 8, 11, 6, 15, 13
++ *   r0(0..15) = 5, 14, 7, 0, 9, 2, 11, 4, 13, 6, 15, 8, 1, 10, 3, 12
++ *   r0(16..31)= 6, 11, 3, 7, 0, 13, 5, 10, 14, 15, 8, 12, 4, 9, 1, 2
++ *   r0(32..47)= 15, 5, 1, 3, 7, 14, 6, 9, 11, 8, 12, 2, 10, 0, 4, 13
++ *   r0(48..63)= 8, 6, 4, 1, 3, 11, 15, 0, 5, 12, 2, 13, 9, 7, 10, 14
++ *   r0(64..79)= 12, 15, 10, 4, 1, 5, 8, 7, 6, 2, 13, 14, 0, 3, 9, 11
++ *
++ *
++ *   amount for rotate left (rol)
++ *
++ *   s(0..15)  = 11, 14, 15, 12, 5, 8, 7, 9, 11, 13, 14, 15, 6, 7, 9, 8
++ *   s(16..31) = 7, 6, 8, 13, 11, 9, 7, 15, 7, 12, 15, 9, 11, 7, 13, 12
++ *   s(32..47) = 11, 13, 6, 7, 14, 9, 13, 15, 14, 8, 13, 6, 5, 12, 7, 5
++ *   s(48..63) = 11, 12, 14, 15, 14, 15, 9, 8, 9, 14, 5, 6, 8, 6, 5, 12
++ *   s(64..79) = 9, 15, 5, 11, 6, 8, 13, 12, 5, 12, 13, 14, 11, 8, 5, 6
++ *   s'(0..15) = 8, 9, 9, 11, 13, 15, 15, 5, 7, 7, 8, 11, 14, 14, 12, 6
++ *   s'(16..31)= 9, 13, 15, 7, 12, 8, 9, 11, 7, 7, 12, 7, 6, 15, 13, 11
++ *   s'(32..47)= 9, 7, 15, 11, 8, 6, 6, 14, 12, 13, 5, 14, 13, 13, 7, 5
++ *   s'(48..63)= 15, 5, 8, 11, 14, 14, 6, 14, 6, 9, 12, 9, 12, 5, 15, 8
++ *   s'(64..79)= 8, 5, 12, 9, 12, 5, 14, 6, 8, 13, 6, 5, 15, 13, 11, 11
++ *
++ *
++ *   initial value (hexadecimal)
++ *
++ *   h0 = 0x67452301; h1 = 0xEFCDAB89; h2 = 0x98BADCFE; h3 = 0x10325476;
++ *							h4 = 0xC3D2E1F0;
++ *
++ *
++ * RIPEMD-160: pseudo-code
++ *
++ *   It is assumed that the message after padding consists of t 16-word blocks
++ *   that will be denoted with X[i][j], with 0 <= i <= t-1 and 0 <= j <= 15.
++ *   The symbol [+] denotes addition modulo 2**32 and rol_s denotes cyclic left
++ *   shift (rotate) over s positions.
++ *
++ *
++ *   for i := 0 to t-1 {
++ *	 A := h0; B := h1; C := h2; D = h3; E = h4;
++ *	 A' := h0; B' := h1; C' := h2; D' = h3; E' = h4;
++ *	 for j := 0 to 79 {
++ *	     T := rol_s(j)(A [+] f(j, B, C, D) [+] X[i][r(j)] [+] K(j)) [+] E;
++ *	     A := E; E := D; D := rol_10(C); C := B; B := T;
++ *	     T := rol_s'(j)(A' [+] f(79-j, B', C', D') [+] X[i][r'(j)]
++						       [+] K'(j)) [+] E';
++ *	     A' := E'; E' := D'; D' := rol_10(C'); C' := B'; B' := T;
++ *	 }
++ *	 T := h1 [+] C [+] D'; h1 := h2 [+] D [+] E'; h2 := h3 [+] E [+] A';
++ *	 h3 := h4 [+] A [+] B'; h4 := h0 [+] B [+] C'; h0 := T;
++ *   }
++ */
++
++/* Some examples:
++ * ""                    9c1185a5c5e9fc54612808977ee8f548b2258d31
++ * "a"                   0bdc9d2d256b3ee9daae347be6f4dc835a467ffe
++ * "abc"                 8eb208f7e05d987a9b044a8e98c6b087f15a0bfc
++ * "message digest"      5d0689ef49d2fae572b881b123a85ffa21595f36
++ * "a...z"               f71c27109c692c1b56bbdceb5b9d2865b3708dbc
++ * "abcdbcde...nopq"     12a053384a9c0c88e405a06c27dcf49ada62eb2b
++ * "A...Za...z0...9"     b0e20b6e3116640286ed3a87a5713079b21f5189
++ * 8 times "1234567890"  9b752e45573d4b39f4dbd3323cab82bf63326bfb
++ * 1 million times "a"   52783243c1697bdbe16d37f97f68f08325dc1528
++ */
++
++
++static void
++rmd160_init( RMD160_CONTEXT *hd )
++{
++    hd->h0 = 0x67452301;
++    hd->h1 = 0xEFCDAB89;
++    hd->h2 = 0x98BADCFE;
++    hd->h3 = 0x10325476;
++    hd->h4 = 0xC3D2E1F0;
++    hd->nblocks = 0;
++    hd->count = 0;
++}
++
++
++
++/****************
++ * Transform the message X which consists of 16 32-bit-words
++ */
++static void
++transform( RMD160_CONTEXT *hd, const byte *data )
++{
++    u32 a,b,c,d,e,aa,bb,cc,dd,ee,t;
++  #if BYTE_ORDER == BIG_ENDIAN
++    u32 x[16];
++    { int i;
++      byte *p2, *p1;
++      for(i=0, p1=data, p2=(byte*)x; i < 16; i++, p2 += 4 ) {
++	p2[3] = *p1++;
++	p2[2] = *p1++;
++	p2[1] = *p1++;
++	p2[0] = *p1++;
++      }
++    }
++  #else
++   #if 0
++    u32 *x =(u32*)data;
++   #else
++    /* this version is better because it is always aligned;
++     * The performance penalty on a 586-100 is about 6% which
++     * is acceptable - because the data is more local it might
++     * also be possible that this is faster on some machines.
++     * This function (when compiled with -02 on gcc 2.7.2)
++     * executes on a 586-100 (39.73 bogomips) at about 1900kb/sec;
++     * [measured with a 4MB data and "gpgm --print-md rmd160"] */
++    u32 x[16];
++    memcpy( x, data, 64 );
++   #endif
++  #endif
++
++
++#define K0  0x00000000
++#define K1  0x5A827999
++#define K2  0x6ED9EBA1
++#define K3  0x8F1BBCDC
++#define K4  0xA953FD4E
++#define KK0 0x50A28BE6
++#define KK1 0x5C4DD124
++#define KK2 0x6D703EF3
++#define KK3 0x7A6D76E9
++#define KK4 0x00000000
++#define F0(x,y,z)   ( (x) ^ (y) ^ (z) )
++#define F1(x,y,z)   ( ((x) & (y)) | (~(x) & (z)) )
++#define F2(x,y,z)   ( ((x) | ~(y)) ^ (z) )
++#define F3(x,y,z)   ( ((x) & (z)) | ((y) & ~(z)) )
++#define F4(x,y,z)   ( (x) ^ ((y) | ~(z)) )
++#define R(a,b,c,d,e,f,k,r,s) do { t = a + f(b,c,d) + k + x[r]; \
++				  a = rol(t,s) + e;	       \
++				  c = rol(c,10);	       \
++				} while(0)
++
++    /* left lane */
++    a = hd->h0;
++    b = hd->h1;
++    c = hd->h2;
++    d = hd->h3;
++    e = hd->h4;
++    R( a, b, c, d, e, F0, K0,  0, 11 );
++    R( e, a, b, c, d, F0, K0,  1, 14 );
++    R( d, e, a, b, c, F0, K0,  2, 15 );
++    R( c, d, e, a, b, F0, K0,  3, 12 );
++    R( b, c, d, e, a, F0, K0,  4,  5 );
++    R( a, b, c, d, e, F0, K0,  5,  8 );
++    R( e, a, b, c, d, F0, K0,  6,  7 );
++    R( d, e, a, b, c, F0, K0,  7,  9 );
++    R( c, d, e, a, b, F0, K0,  8, 11 );
++    R( b, c, d, e, a, F0, K0,  9, 13 );
++    R( a, b, c, d, e, F0, K0, 10, 14 );
++    R( e, a, b, c, d, F0, K0, 11, 15 );
++    R( d, e, a, b, c, F0, K0, 12,  6 );
++    R( c, d, e, a, b, F0, K0, 13,  7 );
++    R( b, c, d, e, a, F0, K0, 14,  9 );
++    R( a, b, c, d, e, F0, K0, 15,  8 );
++    R( e, a, b, c, d, F1, K1,  7,  7 );
++    R( d, e, a, b, c, F1, K1,  4,  6 );
++    R( c, d, e, a, b, F1, K1, 13,  8 );
++    R( b, c, d, e, a, F1, K1,  1, 13 );
++    R( a, b, c, d, e, F1, K1, 10, 11 );
++    R( e, a, b, c, d, F1, K1,  6,  9 );
++    R( d, e, a, b, c, F1, K1, 15,  7 );
++    R( c, d, e, a, b, F1, K1,  3, 15 );
++    R( b, c, d, e, a, F1, K1, 12,  7 );
++    R( a, b, c, d, e, F1, K1,  0, 12 );
++    R( e, a, b, c, d, F1, K1,  9, 15 );
++    R( d, e, a, b, c, F1, K1,  5,  9 );
++    R( c, d, e, a, b, F1, K1,  2, 11 );
++    R( b, c, d, e, a, F1, K1, 14,  7 );
++    R( a, b, c, d, e, F1, K1, 11, 13 );
++    R( e, a, b, c, d, F1, K1,  8, 12 );
++    R( d, e, a, b, c, F2, K2,  3, 11 );
++    R( c, d, e, a, b, F2, K2, 10, 13 );
++    R( b, c, d, e, a, F2, K2, 14,  6 );
++    R( a, b, c, d, e, F2, K2,  4,  7 );
++    R( e, a, b, c, d, F2, K2,  9, 14 );
++    R( d, e, a, b, c, F2, K2, 15,  9 );
++    R( c, d, e, a, b, F2, K2,  8, 13 );
++    R( b, c, d, e, a, F2, K2,  1, 15 );
++    R( a, b, c, d, e, F2, K2,  2, 14 );
++    R( e, a, b, c, d, F2, K2,  7,  8 );
++    R( d, e, a, b, c, F2, K2,  0, 13 );
++    R( c, d, e, a, b, F2, K2,  6,  6 );
++    R( b, c, d, e, a, F2, K2, 13,  5 );
++    R( a, b, c, d, e, F2, K2, 11, 12 );
++    R( e, a, b, c, d, F2, K2,  5,  7 );
++    R( d, e, a, b, c, F2, K2, 12,  5 );
++    R( c, d, e, a, b, F3, K3,  1, 11 );
++    R( b, c, d, e, a, F3, K3,  9, 12 );
++    R( a, b, c, d, e, F3, K3, 11, 14 );
++    R( e, a, b, c, d, F3, K3, 10, 15 );
++    R( d, e, a, b, c, F3, K3,  0, 14 );
++    R( c, d, e, a, b, F3, K3,  8, 15 );
++    R( b, c, d, e, a, F3, K3, 12,  9 );
++    R( a, b, c, d, e, F3, K3,  4,  8 );
++    R( e, a, b, c, d, F3, K3, 13,  9 );
++    R( d, e, a, b, c, F3, K3,  3, 14 );
++    R( c, d, e, a, b, F3, K3,  7,  5 );
++    R( b, c, d, e, a, F3, K3, 15,  6 );
++    R( a, b, c, d, e, F3, K3, 14,  8 );
++    R( e, a, b, c, d, F3, K3,  5,  6 );
++    R( d, e, a, b, c, F3, K3,  6,  5 );
++    R( c, d, e, a, b, F3, K3,  2, 12 );
++    R( b, c, d, e, a, F4, K4,  4,  9 );
++    R( a, b, c, d, e, F4, K4,  0, 15 );
++    R( e, a, b, c, d, F4, K4,  5,  5 );
++    R( d, e, a, b, c, F4, K4,  9, 11 );
++    R( c, d, e, a, b, F4, K4,  7,  6 );
++    R( b, c, d, e, a, F4, K4, 12,  8 );
++    R( a, b, c, d, e, F4, K4,  2, 13 );
++    R( e, a, b, c, d, F4, K4, 10, 12 );
++    R( d, e, a, b, c, F4, K4, 14,  5 );
++    R( c, d, e, a, b, F4, K4,  1, 12 );
++    R( b, c, d, e, a, F4, K4,  3, 13 );
++    R( a, b, c, d, e, F4, K4,  8, 14 );
++    R( e, a, b, c, d, F4, K4, 11, 11 );
++    R( d, e, a, b, c, F4, K4,  6,  8 );
++    R( c, d, e, a, b, F4, K4, 15,  5 );
++    R( b, c, d, e, a, F4, K4, 13,  6 );
++
++    aa = a; bb = b; cc = c; dd = d; ee = e;
++
++    /* right lane */
++    a = hd->h0;
++    b = hd->h1;
++    c = hd->h2;
++    d = hd->h3;
++    e = hd->h4;
++    R( a, b, c, d, e, F4, KK0,	5,  8);
++    R( e, a, b, c, d, F4, KK0, 14,  9);
++    R( d, e, a, b, c, F4, KK0,	7,  9);
++    R( c, d, e, a, b, F4, KK0,	0, 11);
++    R( b, c, d, e, a, F4, KK0,	9, 13);
++    R( a, b, c, d, e, F4, KK0,	2, 15);
++    R( e, a, b, c, d, F4, KK0, 11, 15);
++    R( d, e, a, b, c, F4, KK0,	4,  5);
++    R( c, d, e, a, b, F4, KK0, 13,  7);
++    R( b, c, d, e, a, F4, KK0,	6,  7);
++    R( a, b, c, d, e, F4, KK0, 15,  8);
++    R( e, a, b, c, d, F4, KK0,	8, 11);
++    R( d, e, a, b, c, F4, KK0,	1, 14);
++    R( c, d, e, a, b, F4, KK0, 10, 14);
++    R( b, c, d, e, a, F4, KK0,	3, 12);
++    R( a, b, c, d, e, F4, KK0, 12,  6);
++    R( e, a, b, c, d, F3, KK1,	6,  9);
++    R( d, e, a, b, c, F3, KK1, 11, 13);
++    R( c, d, e, a, b, F3, KK1,	3, 15);
++    R( b, c, d, e, a, F3, KK1,	7,  7);
++    R( a, b, c, d, e, F3, KK1,	0, 12);
++    R( e, a, b, c, d, F3, KK1, 13,  8);
++    R( d, e, a, b, c, F3, KK1,	5,  9);
++    R( c, d, e, a, b, F3, KK1, 10, 11);
++    R( b, c, d, e, a, F3, KK1, 14,  7);
++    R( a, b, c, d, e, F3, KK1, 15,  7);
++    R( e, a, b, c, d, F3, KK1,	8, 12);
++    R( d, e, a, b, c, F3, KK1, 12,  7);
++    R( c, d, e, a, b, F3, KK1,	4,  6);
++    R( b, c, d, e, a, F3, KK1,	9, 15);
++    R( a, b, c, d, e, F3, KK1,	1, 13);
++    R( e, a, b, c, d, F3, KK1,	2, 11);
++    R( d, e, a, b, c, F2, KK2, 15,  9);
++    R( c, d, e, a, b, F2, KK2,	5,  7);
++    R( b, c, d, e, a, F2, KK2,	1, 15);
++    R( a, b, c, d, e, F2, KK2,	3, 11);
++    R( e, a, b, c, d, F2, KK2,	7,  8);
++    R( d, e, a, b, c, F2, KK2, 14,  6);
++    R( c, d, e, a, b, F2, KK2,	6,  6);
++    R( b, c, d, e, a, F2, KK2,	9, 14);
++    R( a, b, c, d, e, F2, KK2, 11, 12);
++    R( e, a, b, c, d, F2, KK2,	8, 13);
++    R( d, e, a, b, c, F2, KK2, 12,  5);
++    R( c, d, e, a, b, F2, KK2,	2, 14);
++    R( b, c, d, e, a, F2, KK2, 10, 13);
++    R( a, b, c, d, e, F2, KK2,	0, 13);
++    R( e, a, b, c, d, F2, KK2,	4,  7);
++    R( d, e, a, b, c, F2, KK2, 13,  5);
++    R( c, d, e, a, b, F1, KK3,	8, 15);
++    R( b, c, d, e, a, F1, KK3,	6,  5);
++    R( a, b, c, d, e, F1, KK3,	4,  8);
++    R( e, a, b, c, d, F1, KK3,	1, 11);
++    R( d, e, a, b, c, F1, KK3,	3, 14);
++    R( c, d, e, a, b, F1, KK3, 11, 14);
++    R( b, c, d, e, a, F1, KK3, 15,  6);
++    R( a, b, c, d, e, F1, KK3,	0, 14);
++    R( e, a, b, c, d, F1, KK3,	5,  6);
++    R( d, e, a, b, c, F1, KK3, 12,  9);
++    R( c, d, e, a, b, F1, KK3,	2, 12);
++    R( b, c, d, e, a, F1, KK3, 13,  9);
++    R( a, b, c, d, e, F1, KK3,	9, 12);
++    R( e, a, b, c, d, F1, KK3,	7,  5);
++    R( d, e, a, b, c, F1, KK3, 10, 15);
++    R( c, d, e, a, b, F1, KK3, 14,  8);
++    R( b, c, d, e, a, F0, KK4, 12,  8);
++    R( a, b, c, d, e, F0, KK4, 15,  5);
++    R( e, a, b, c, d, F0, KK4, 10, 12);
++    R( d, e, a, b, c, F0, KK4,	4,  9);
++    R( c, d, e, a, b, F0, KK4,	1, 12);
++    R( b, c, d, e, a, F0, KK4,	5,  5);
++    R( a, b, c, d, e, F0, KK4,	8, 14);
++    R( e, a, b, c, d, F0, KK4,	7,  6);
++    R( d, e, a, b, c, F0, KK4,	6,  8);
++    R( c, d, e, a, b, F0, KK4,	2, 13);
++    R( b, c, d, e, a, F0, KK4, 13,  6);
++    R( a, b, c, d, e, F0, KK4, 14,  5);
++    R( e, a, b, c, d, F0, KK4,	0, 15);
++    R( d, e, a, b, c, F0, KK4,	3, 13);
++    R( c, d, e, a, b, F0, KK4,	9, 11);
++    R( b, c, d, e, a, F0, KK4, 11, 11);
++
++
++    t	   = hd->h1 + d + cc;
++    hd->h1 = hd->h2 + e + dd;
++    hd->h2 = hd->h3 + a + ee;
++    hd->h3 = hd->h4 + b + aa;
++    hd->h4 = hd->h0 + c + bb;
++    hd->h0 = t;
++}
++
++
++/* Update the message digest with the contents
++ * of INBUF with length INLEN.
++ */
++static void
++rmd160_write( RMD160_CONTEXT *hd, const byte *inbuf, size_t inlen)
++{
++    if( hd->count == 64 ) { /* flush the buffer */
++	transform( hd, hd->buf );
++	hd->count = 0;
++	hd->nblocks++;
++    }
++    if( !inbuf )
++	return;
++    if( hd->count ) {
++	for( ; inlen && hd->count < 64; inlen-- )
++	    hd->buf[hd->count++] = *inbuf++;
++	rmd160_write( hd, NULL, 0 );
++	if( !inlen )
++	    return;
++    }
++
++    while( inlen >= 64 ) {
++	transform( hd, inbuf );
++	hd->count = 0;
++	hd->nblocks++;
++	inlen -= 64;
++	inbuf += 64;
++    }
++    for( ; inlen && hd->count < 64; inlen-- )
++	hd->buf[hd->count++] = *inbuf++;
++}
++
++/* The routine terminates the computation
++ */
++
++static void
++rmd160_final( RMD160_CONTEXT *hd )
++{
++    u32 t, msb, lsb;
++    byte *p;
++
++    rmd160_write(hd, NULL, 0); /* flush */;
++
++    msb = 0;
++    t = hd->nblocks;
++    if( (lsb = t << 6) < t ) /* multiply by 64 to make a byte count */
++	msb++;
++    msb += t >> 26;
++    t = lsb;
++    if( (lsb = t + hd->count) < t ) /* add the count */
++	msb++;
++    t = lsb;
++    if( (lsb = t << 3) < t ) /* multiply by 8 to make a bit count */
++	msb++;
++    msb += t >> 29;
++
++    if( hd->count < 56 ) { /* enough room */
++	hd->buf[hd->count++] = 0x80; /* pad */
++	while( hd->count < 56 )
++	    hd->buf[hd->count++] = 0;  /* pad */
++    }
++    else { /* need one extra block */
++	hd->buf[hd->count++] = 0x80; /* pad character */
++	while( hd->count < 64 )
++	    hd->buf[hd->count++] = 0;
++	rmd160_write(hd, NULL, 0);  /* flush */;
++	memset(hd->buf, 0, 56 ); /* fill next block with zeroes */
++    }
++    /* append the 64 bit count */
++    hd->buf[56] = lsb	   ;
++    hd->buf[57] = lsb >>  8;
++    hd->buf[58] = lsb >> 16;
++    hd->buf[59] = lsb >> 24;
++    hd->buf[60] = msb	   ;
++    hd->buf[61] = msb >>  8;
++    hd->buf[62] = msb >> 16;
++    hd->buf[63] = msb >> 24;
++    transform( hd, hd->buf );
++
++    p = hd->buf;
++  #if BYTE_ORDER == BIG_ENDIAN
++    #define X(a) do { *p++ = hd->h##a	   ; *p++ = hd->h##a >> 8;	\
++		      *p++ = hd->h##a >> 16; *p++ = hd->h##a >> 24; } while(0)
++  #else /* little endian */
++    #define X(a) do { *(u32*)p = hd->h##a ; p += 4; } while(0)
++  #endif
++    X(0);
++    X(1);
++    X(2);
++    X(3);
++    X(4);
++  #undef X
++}
++
++/****************
++ * Shortcut functions which puts the hash value of the supplied buffer
++ * into outbuf which must have a size of 20 bytes.
++ */
++void
++rmd160_hash_buffer( unsigned char *outbuf, const unsigned char *buffer, size_t length )
++{
++    RMD160_CONTEXT hd;
++
++    rmd160_init( &hd );
++    rmd160_write( &hd, buffer, length );
++    rmd160_final( &hd );
++    memcpy( outbuf, hd.buf, 20 );
++}
+Index: util-linux-ng-2.13rc2+git20070725/mount/sha512.c
+===================================================================
+--- /dev/null
++++ util-linux-ng-2.13rc2+git20070725/mount/sha512.c
+@@ -0,0 +1,432 @@
++/*
++ *  sha512.c
++ *
++ *  Written by Jari Ruusu, April 16 2001
++ *
++ *  Copyright 2001 by Jari Ruusu.
++ *  Redistribution of this file is permitted under the GNU Public License.
++ */
++
++#include <string.h>
++#include <sys/types.h>
++#include "sha512.h"
++
++/* Define one or more of these. If none is defined, you get all of them */
++#if !defined(SHA256_NEEDED)&&!defined(SHA512_NEEDED)&&!defined(SHA384_NEEDED)
++# define SHA256_NEEDED  1
++# define SHA512_NEEDED  1
++# define SHA384_NEEDED  1
++#endif
++
++#if defined(SHA256_NEEDED)
++static const u_int32_t sha256_hashInit[8] = {
++    0x6a09e667, 0xbb67ae85, 0x3c6ef372, 0xa54ff53a, 0x510e527f, 0x9b05688c,
++    0x1f83d9ab, 0x5be0cd19
++};
++static const u_int32_t sha256_K[64] = {
++    0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5, 0x3956c25b, 0x59f111f1,
++    0x923f82a4, 0xab1c5ed5, 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3,
++    0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174, 0xe49b69c1, 0xefbe4786,
++    0x0fc19dc6, 0x240ca1cc, 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da,
++    0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7, 0xc6e00bf3, 0xd5a79147,
++    0x06ca6351, 0x14292967, 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13,
++    0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85, 0xa2bfe8a1, 0xa81a664b,
++    0xc24b8b70, 0xc76c51a3, 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070,
++    0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5, 0x391c0cb3, 0x4ed8aa4a,
++    0x5b9cca4f, 0x682e6ff3, 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208,
++    0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2
++};
++#endif
++
++#if defined(SHA512_NEEDED)
++static const u_int64_t sha512_hashInit[8] = {
++    0x6a09e667f3bcc908ULL, 0xbb67ae8584caa73bULL, 0x3c6ef372fe94f82bULL,
++    0xa54ff53a5f1d36f1ULL, 0x510e527fade682d1ULL, 0x9b05688c2b3e6c1fULL,
++    0x1f83d9abfb41bd6bULL, 0x5be0cd19137e2179ULL
++};
++#endif
++
++#if defined(SHA384_NEEDED)
++static const u_int64_t sha384_hashInit[8] = {
++    0xcbbb9d5dc1059ed8ULL, 0x629a292a367cd507ULL, 0x9159015a3070dd17ULL,
++    0x152fecd8f70e5939ULL, 0x67332667ffc00b31ULL, 0x8eb44a8768581511ULL,
++    0xdb0c2e0d64f98fa7ULL, 0x47b5481dbefa4fa4ULL
++};
++#endif
++
++#if defined(SHA512_NEEDED) || defined(SHA384_NEEDED)
++static const u_int64_t sha512_K[80] = {
++    0x428a2f98d728ae22ULL, 0x7137449123ef65cdULL, 0xb5c0fbcfec4d3b2fULL,
++    0xe9b5dba58189dbbcULL, 0x3956c25bf348b538ULL, 0x59f111f1b605d019ULL,
++    0x923f82a4af194f9bULL, 0xab1c5ed5da6d8118ULL, 0xd807aa98a3030242ULL,
++    0x12835b0145706fbeULL, 0x243185be4ee4b28cULL, 0x550c7dc3d5ffb4e2ULL,
++    0x72be5d74f27b896fULL, 0x80deb1fe3b1696b1ULL, 0x9bdc06a725c71235ULL,
++    0xc19bf174cf692694ULL, 0xe49b69c19ef14ad2ULL, 0xefbe4786384f25e3ULL,
++    0x0fc19dc68b8cd5b5ULL, 0x240ca1cc77ac9c65ULL, 0x2de92c6f592b0275ULL,
++    0x4a7484aa6ea6e483ULL, 0x5cb0a9dcbd41fbd4ULL, 0x76f988da831153b5ULL,
++    0x983e5152ee66dfabULL, 0xa831c66d2db43210ULL, 0xb00327c898fb213fULL,
++    0xbf597fc7beef0ee4ULL, 0xc6e00bf33da88fc2ULL, 0xd5a79147930aa725ULL,
++    0x06ca6351e003826fULL, 0x142929670a0e6e70ULL, 0x27b70a8546d22ffcULL,
++    0x2e1b21385c26c926ULL, 0x4d2c6dfc5ac42aedULL, 0x53380d139d95b3dfULL,
++    0x650a73548baf63deULL, 0x766a0abb3c77b2a8ULL, 0x81c2c92e47edaee6ULL,
++    0x92722c851482353bULL, 0xa2bfe8a14cf10364ULL, 0xa81a664bbc423001ULL,
++    0xc24b8b70d0f89791ULL, 0xc76c51a30654be30ULL, 0xd192e819d6ef5218ULL,
++    0xd69906245565a910ULL, 0xf40e35855771202aULL, 0x106aa07032bbd1b8ULL,
++    0x19a4c116b8d2d0c8ULL, 0x1e376c085141ab53ULL, 0x2748774cdf8eeb99ULL,
++    0x34b0bcb5e19b48a8ULL, 0x391c0cb3c5c95a63ULL, 0x4ed8aa4ae3418acbULL,
++    0x5b9cca4f7763e373ULL, 0x682e6ff3d6b2b8a3ULL, 0x748f82ee5defb2fcULL,
++    0x78a5636f43172f60ULL, 0x84c87814a1f0ab72ULL, 0x8cc702081a6439ecULL,
++    0x90befffa23631e28ULL, 0xa4506cebde82bde9ULL, 0xbef9a3f7b2c67915ULL,
++    0xc67178f2e372532bULL, 0xca273eceea26619cULL, 0xd186b8c721c0c207ULL,
++    0xeada7dd6cde0eb1eULL, 0xf57d4f7fee6ed178ULL, 0x06f067aa72176fbaULL,
++    0x0a637dc5a2c898a6ULL, 0x113f9804bef90daeULL, 0x1b710b35131c471bULL,
++    0x28db77f523047d84ULL, 0x32caab7b40c72493ULL, 0x3c9ebe0a15c9bebcULL,
++    0x431d67c49c100d4cULL, 0x4cc5d4becb3e42b6ULL, 0x597f299cfc657e2aULL,
++    0x5fcb6fab3ad6faecULL, 0x6c44198c4a475817ULL
++};
++#endif
++
++#define Ch(x,y,z)   (((x) & (y)) ^ ((~(x)) & (z)))
++#define Maj(x,y,z)  (((x) & (y)) ^ ((x) & (z)) ^ ((y) & (z)))
++#define R(x,y)      ((y) >> (x))
++
++#if defined(SHA256_NEEDED)
++void sha256_init(sha256_context *ctx)
++{
++    memcpy(&ctx->sha_H[0], &sha256_hashInit[0], sizeof(ctx->sha_H));
++    ctx->sha_blocks = 0;
++    ctx->sha_bufCnt = 0;
++}
++
++#define S(x,y)      (((y) >> (x)) | ((y) << (32 - (x))))
++#define uSig0(x)    ((S(2,(x))) ^ (S(13,(x))) ^ (S(22,(x))))
++#define uSig1(x)    ((S(6,(x))) ^ (S(11,(x))) ^ (S(25,(x))))
++#define lSig0(x)    ((S(7,(x))) ^ (S(18,(x))) ^ (R(3,(x))))
++#define lSig1(x)    ((S(17,(x))) ^ (S(19,(x))) ^ (R(10,(x))))
++
++static void sha256_transform(sha256_context *ctx, const unsigned char *datap)
++{
++    register int    j;
++    u_int32_t       a, b, c, d, e, f, g, h;
++    u_int32_t       T1, T2, W[64], Wm2, Wm15;
++
++    /* read the data, big endian byte order */
++    j = 0;
++    do {
++        W[j] = (((u_int32_t)(datap[0]))<<24) | (((u_int32_t)(datap[1]))<<16) |
++               (((u_int32_t)(datap[2]))<<8 ) | ((u_int32_t)(datap[3]));
++        datap += 4;
++    } while(++j < 16);
++    
++    /* initialize variables a...h */
++    a = ctx->sha_H[0];
++    b = ctx->sha_H[1];
++    c = ctx->sha_H[2];
++    d = ctx->sha_H[3];
++    e = ctx->sha_H[4];
++    f = ctx->sha_H[5];
++    g = ctx->sha_H[6];
++    h = ctx->sha_H[7];
++
++    /* apply compression function */
++    j = 0;
++    do {
++        if(j >= 16) {
++            Wm2 = W[j - 2];
++            Wm15 = W[j - 15];
++            W[j] = lSig1(Wm2) + W[j - 7] + lSig0(Wm15) + W[j - 16];
++        }
++        T1 = h + uSig1(e) + Ch(e,f,g) + sha256_K[j] + W[j];
++        T2 = uSig0(a) + Maj(a,b,c);
++        h = g; g = f; f = e;
++        e = d + T1;
++        d = c; c = b; b = a;
++        a = T1 + T2;
++    } while(++j < 64);
++
++    /* compute intermediate hash value */
++    ctx->sha_H[0] += a;
++    ctx->sha_H[1] += b;
++    ctx->sha_H[2] += c;
++    ctx->sha_H[3] += d;
++    ctx->sha_H[4] += e;
++    ctx->sha_H[5] += f;
++    ctx->sha_H[6] += g;
++    ctx->sha_H[7] += h;
++
++    ctx->sha_blocks++;
++}
++
++void sha256_write(sha256_context *ctx, const unsigned char *datap, int length)
++{
++    while(length > 0) {
++        if(!ctx->sha_bufCnt) {
++            while(length >= sizeof(ctx->sha_out)) {
++                sha256_transform(ctx, datap);
++                datap += sizeof(ctx->sha_out);
++                length -= sizeof(ctx->sha_out);
++            }
++            if(!length) return;
++        }
++        ctx->sha_out[ctx->sha_bufCnt] = *datap++;
++        length--;
++        if(++ctx->sha_bufCnt == sizeof(ctx->sha_out)) {
++            sha256_transform(ctx, &ctx->sha_out[0]);
++            ctx->sha_bufCnt = 0;
++        }
++    }
++}
++
++void sha256_final(sha256_context *ctx)
++{
++    register int    j;
++    u_int64_t       bitLength;
++    u_int32_t       i;
++    unsigned char   padByte, *datap;
++
++    bitLength = (ctx->sha_blocks << 9) | (ctx->sha_bufCnt << 3);
++    padByte = 0x80;
++    sha256_write(ctx, &padByte, 1);
++
++    /* pad extra space with zeroes */
++    padByte = 0;
++    while(ctx->sha_bufCnt != 56) {
++        sha256_write(ctx, &padByte, 1);
++    }
++
++    /* write bit length, big endian byte order */
++    ctx->sha_out[56] = bitLength >> 56;
++    ctx->sha_out[57] = bitLength >> 48;
++    ctx->sha_out[58] = bitLength >> 40;
++    ctx->sha_out[59] = bitLength >> 32;
++    ctx->sha_out[60] = bitLength >> 24;
++    ctx->sha_out[61] = bitLength >> 16;
++    ctx->sha_out[62] = bitLength >> 8;
++    ctx->sha_out[63] = bitLength;
++    sha256_transform(ctx, &ctx->sha_out[0]);
++    
++    /* return results in ctx->sha_out[0...31] */
++    datap = &ctx->sha_out[0];
++    j = 0;
++    do {
++        i = ctx->sha_H[j];
++        datap[0] = i >> 24;
++        datap[1] = i >> 16;
++        datap[2] = i >> 8;
++        datap[3] = i;
++        datap += 4;
++    } while(++j < 8);
++
++    /* clear sensitive information */
++    memset(&ctx->sha_out[32], 0, sizeof(sha256_context) - 32);
++}
++
++void sha256_hash_buffer(const unsigned char *ib, size_t ile, unsigned char *ob, size_t ole)
++{
++    sha256_context ctx;
++
++    if(ole < 1) return;
++    memset(ob, 0, ole);
++    if(ole > 32) ole = 32;
++    sha256_init(&ctx);
++    sha256_write(&ctx, ib, ile);
++    sha256_final(&ctx);
++    memcpy(ob, &ctx.sha_out[0], ole);
++    memset(&ctx, 0, sizeof(ctx));
++}
++
++#endif
++
++#if defined(SHA512_NEEDED)
++void sha512_init(sha512_context *ctx)
++{
++    memcpy(&ctx->sha_H[0], &sha512_hashInit[0], sizeof(ctx->sha_H));
++    ctx->sha_blocks = 0;
++    ctx->sha_blocksMSB = 0;
++    ctx->sha_bufCnt = 0;
++}
++#endif
++
++#if defined(SHA512_NEEDED) || defined(SHA384_NEEDED)
++#undef S
++#undef uSig0
++#undef uSig1
++#undef lSig0
++#undef lSig1
++#define S(x,y)      (((y) >> (x)) | ((y) << (64 - (x))))
++#define uSig0(x)    ((S(28,(x))) ^ (S(34,(x))) ^ (S(39,(x))))
++#define uSig1(x)    ((S(14,(x))) ^ (S(18,(x))) ^ (S(41,(x))))
++#define lSig0(x)    ((S(1,(x))) ^ (S(8,(x))) ^ (R(7,(x))))
++#define lSig1(x)    ((S(19,(x))) ^ (S(61,(x))) ^ (R(6,(x))))
++
++static void sha512_transform(sha512_context *ctx, const unsigned char *datap)
++{
++    register int    j;
++    u_int64_t       a, b, c, d, e, f, g, h;
++    u_int64_t       T1, T2, W[80], Wm2, Wm15;
++
++    /* read the data, big endian byte order */
++    j = 0;
++    do {
++        W[j] = (((u_int64_t)(datap[0]))<<56) | (((u_int64_t)(datap[1]))<<48) |
++               (((u_int64_t)(datap[2]))<<40) | (((u_int64_t)(datap[3]))<<32) |
++               (((u_int64_t)(datap[4]))<<24) | (((u_int64_t)(datap[5]))<<16) |
++               (((u_int64_t)(datap[6]))<<8 ) | ((u_int64_t)(datap[7]));
++        datap += 8;
++    } while(++j < 16);
++    
++    /* initialize variables a...h */
++    a = ctx->sha_H[0];
++    b = ctx->sha_H[1];
++    c = ctx->sha_H[2];
++    d = ctx->sha_H[3];
++    e = ctx->sha_H[4];
++    f = ctx->sha_H[5];
++    g = ctx->sha_H[6];
++    h = ctx->sha_H[7];
++
++    /* apply compression function */
++    j = 0;
++    do {
++        if(j >= 16) {
++            Wm2 = W[j - 2];
++            Wm15 = W[j - 15];
++            W[j] = lSig1(Wm2) + W[j - 7] + lSig0(Wm15) + W[j - 16];
++        }
++        T1 = h + uSig1(e) + Ch(e,f,g) + sha512_K[j] + W[j];
++        T2 = uSig0(a) + Maj(a,b,c);
++        h = g; g = f; f = e;
++        e = d + T1;
++        d = c; c = b; b = a;
++        a = T1 + T2;
++    } while(++j < 80);
++
++    /* compute intermediate hash value */
++    ctx->sha_H[0] += a;
++    ctx->sha_H[1] += b;
++    ctx->sha_H[2] += c;
++    ctx->sha_H[3] += d;
++    ctx->sha_H[4] += e;
++    ctx->sha_H[5] += f;
++    ctx->sha_H[6] += g;
++    ctx->sha_H[7] += h;
++
++    ctx->sha_blocks++;
++    if(!ctx->sha_blocks) ctx->sha_blocksMSB++;
++}
++
++void sha512_write(sha512_context *ctx, const unsigned char *datap, int length)
++{
++    while(length > 0) {
++        if(!ctx->sha_bufCnt) {
++            while(length >= sizeof(ctx->sha_out)) {
++                sha512_transform(ctx, datap);
++                datap += sizeof(ctx->sha_out);
++                length -= sizeof(ctx->sha_out);
++            }
++            if(!length) return;
++        }
++        ctx->sha_out[ctx->sha_bufCnt] = *datap++;
++        length--;
++        if(++ctx->sha_bufCnt == sizeof(ctx->sha_out)) {
++            sha512_transform(ctx, &ctx->sha_out[0]);
++            ctx->sha_bufCnt = 0;
++        }
++    }
++}
++
++void sha512_final(sha512_context *ctx)
++{
++    register int    j;
++    u_int64_t       bitLength, bitLengthMSB;
++    u_int64_t       i;
++    unsigned char   padByte, *datap;
++
++    bitLength = (ctx->sha_blocks << 10) | (ctx->sha_bufCnt << 3);
++    bitLengthMSB = (ctx->sha_blocksMSB << 10) | (ctx->sha_blocks >> 54);
++    padByte = 0x80;
++    sha512_write(ctx, &padByte, 1);
++
++    /* pad extra space with zeroes */
++    padByte = 0;
++    while(ctx->sha_bufCnt != 112) {
++        sha512_write(ctx, &padByte, 1);
++    }
++
++    /* write bit length, big endian byte order */
++    ctx->sha_out[112] = bitLengthMSB >> 56;
++    ctx->sha_out[113] = bitLengthMSB >> 48;
++    ctx->sha_out[114] = bitLengthMSB >> 40;
++    ctx->sha_out[115] = bitLengthMSB >> 32;
++    ctx->sha_out[116] = bitLengthMSB >> 24;
++    ctx->sha_out[117] = bitLengthMSB >> 16;
++    ctx->sha_out[118] = bitLengthMSB >> 8;
++    ctx->sha_out[119] = bitLengthMSB;
++    ctx->sha_out[120] = bitLength >> 56;
++    ctx->sha_out[121] = bitLength >> 48;
++    ctx->sha_out[122] = bitLength >> 40;
++    ctx->sha_out[123] = bitLength >> 32;
++    ctx->sha_out[124] = bitLength >> 24;
++    ctx->sha_out[125] = bitLength >> 16;
++    ctx->sha_out[126] = bitLength >> 8;
++    ctx->sha_out[127] = bitLength;
++    sha512_transform(ctx, &ctx->sha_out[0]);
++    
++    /* return results in ctx->sha_out[0...63] */
++    datap = &ctx->sha_out[0];
++    j = 0;
++    do {
++        i = ctx->sha_H[j];
++        datap[0] = i >> 56;
++        datap[1] = i >> 48;
++        datap[2] = i >> 40;
++        datap[3] = i >> 32;
++        datap[4] = i >> 24;
++        datap[5] = i >> 16;
++        datap[6] = i >> 8;
++        datap[7] = i;
++        datap += 8;
++    } while(++j < 8);
++
++    /* clear sensitive information */
++    memset(&ctx->sha_out[64], 0, sizeof(sha512_context) - 64);
++}
++
++void sha512_hash_buffer(const unsigned char *ib, size_t ile, unsigned char *ob, size_t ole)
++{
++    sha512_context ctx;
++
++    if(ole < 1) return;
++    memset(ob, 0, ole);
++    if(ole > 64) ole = 64;
++    sha512_init(&ctx);
++    sha512_write(&ctx, ib, ile);
++    sha512_final(&ctx);
++    memcpy(ob, &ctx.sha_out[0], ole);
++    memset(&ctx, 0, sizeof(ctx));
++}
++#endif
++
++#if defined(SHA384_NEEDED)
++void sha384_init(sha512_context *ctx)
++{
++    memcpy(&ctx->sha_H[0], &sha384_hashInit[0], sizeof(ctx->sha_H));
++    ctx->sha_blocks = 0;
++    ctx->sha_blocksMSB = 0;
++    ctx->sha_bufCnt = 0;
++}
++
++void sha384_hash_buffer(const unsigned char *ib, size_t ile, unsigned char *ob, size_t ole)
++{
++    sha512_context ctx;
++
++    if(ole < 1) return;
++    memset(ob, 0, ole);
++    if(ole > 48) ole = 48;
++    sha384_init(&ctx);
++    sha512_write(&ctx, ib, ile);
++    sha512_final(&ctx);
++    memcpy(ob, &ctx.sha_out[0], ole);
++    memset(&ctx, 0, sizeof(ctx));
++}
++#endif
+Index: util-linux-ng-2.13rc2+git20070725/mount/sha512.h
+===================================================================
+--- /dev/null
++++ util-linux-ng-2.13rc2+git20070725/mount/sha512.h
+@@ -0,0 +1,45 @@
++/*
++ *  sha512.h
++ *
++ *  Written by Jari Ruusu, April 16 2001
++ *
++ *  Copyright 2001 by Jari Ruusu.
++ *  Redistribution of this file is permitted under the GNU Public License.
++ */
++
++#include <sys/types.h>
++
++typedef struct {
++    unsigned char   sha_out[64];    /* results are here, bytes 0...31 */
++    u_int32_t       sha_H[8];
++    u_int64_t       sha_blocks;
++    int             sha_bufCnt;
++} sha256_context;
++
++typedef struct {
++    unsigned char   sha_out[128];   /* results are here, bytes 0...63 */
++    u_int64_t       sha_H[8];
++    u_int64_t       sha_blocks;
++    u_int64_t       sha_blocksMSB;
++    int             sha_bufCnt;
++} sha512_context;
++
++/* no sha384_context, use sha512_context */
++
++/* 256 bit hash, provides 128 bits of security against collision attacks */
++extern void sha256_init(sha256_context *);
++extern void sha256_write(sha256_context *, const unsigned char *, int);
++extern void sha256_final(sha256_context *);
++extern void sha256_hash_buffer(const unsigned char *, size_t, unsigned char *, size_t);
++
++/* 512 bit hash, provides 256 bits of security against collision attacks */
++extern void sha512_init(sha512_context *);
++extern void sha512_write(sha512_context *, const unsigned char *, int);
++extern void sha512_final(sha512_context *);
++extern void sha512_hash_buffer(const unsigned char *, size_t, unsigned char *, size_t);
++
++/* 384 bit hash, provides 192 bits of security against collision attacks */
++extern void sha384_init(sha512_context *);
++/* no sha384_write(), use sha512_write() */
++/* no sha384_final(), use sha512_final(), result in ctx->sha_out[0...47]  */
++extern void sha384_hash_buffer(const unsigned char *, size_t, unsigned char *, size_t);
diff --git a/raw.init b/raw.init
index 7fb0069..76623b7 100644
--- a/raw.init
+++ b/raw.init
@@ -15,14 +15,13 @@
 # Required-Stop:
 # Default-Start:  2 3 5
 # Default-Stop:   0 1 6
-# Short-Description: raw devices
 # Description:    raw-devices
 ### END INIT INFO
 
 . /etc/rc.status
 
 CONFIG=/etc/raw
-RAW_BIN=/sbin/raw
+RAW_BIN=/usr/sbin/raw
 RAW_MODULE=raw
 test -x $RAW_BIN || exit 5
 
diff --git a/util-linux-2.12r-disk_utils_mkfs_open_exclusive.patch b/util-linux-2.12r-disk_utils_mkfs_open_exclusive.patch
new file mode 100644
index 0000000..260392e
--- /dev/null
+++ b/util-linux-2.12r-disk_utils_mkfs_open_exclusive.patch
@@ -0,0 +1,39 @@
+Index: util-linux-ng-2.12r+git20070330/disk-utils/mkswap.c
+===================================================================
+--- util-linux-ng-2.12r+git20070330.orig/disk-utils/mkswap.c
++++ util-linux-ng-2.12r+git20070330/disk-utils/mkswap.c
+@@ -660,7 +660,7 @@ main(int argc, char ** argv) {
+ 		usage();
+ 	}
+ 
+-	DEV = open(device_name,O_RDWR);
++	DEV = open(device_name, O_RDWR | O_EXCL);
+ 	if (DEV < 0 || fstat(DEV, &statbuf) < 0) {
+ 		perror(device_name);
+ 		exit(1);
+Index: util-linux-ng-2.12r+git20070330/disk-utils/mkfs.minix.c
+===================================================================
+--- util-linux-ng-2.12r+git20070330.orig/disk-utils/mkfs.minix.c
++++ util-linux-ng-2.12r+git20070330/disk-utils/mkfs.minix.c
+@@ -699,7 +699,7 @@ main(int argc, char ** argv) {
+   tmp += dirsize;
+   *(short *)tmp = 2;
+   strcpy(tmp+2,".badblocks");
+-  DEV = open(device_name,O_RDWR );
++  DEV = open(device_name,O_RDWR | O_EXCL);
+   if (DEV<0)
+     die(_("unable to open %s"));
+   if (fstat(DEV,&statbuf)<0)
+Index: util-linux-ng-2.12r+git20070330/disk-utils/mkfs.bfs.c
+===================================================================
+--- util-linux-ng-2.12r+git20070330.orig/disk-utils/mkfs.bfs.c
++++ util-linux-ng-2.12r+git20070330/disk-utils/mkfs.bfs.c
+@@ -170,7 +170,7 @@ main(int argc, char *argv[]) {
+ 	if (!S_ISBLK(statbuf.st_mode))
+ 		fatal(_("%s is not a block special device"), device);
+ 
+-	fd = open(device, O_RDWR);
++	fd = open(device, O_RDWR | O_EXCL);
+ 	if (fd == -1) {
+ 		perror(device);
+ 		fatal(_("cannot open %s"), device);
diff --git a/util-linux-2.12r-mount_swapon_swsuspend_resume.patch b/util-linux-2.12r-mount_swapon_swsuspend_resume.patch
new file mode 100644
index 0000000..8bc8e98
--- /dev/null
+++ b/util-linux-2.12r-mount_swapon_swsuspend_resume.patch
@@ -0,0 +1,128 @@
+## 30swsusp-resume.dpatch by Jeff Bailey <jbailey@ubuntu.com>
+Index: util-linux-ng-2.12r+git20070330/mount/swapon.c
+===================================================================
+--- util-linux-ng-2.12r+git20070330.orig/mount/swapon.c
++++ util-linux-ng-2.12r+git20070330/mount/swapon.c
+@@ -10,7 +10,9 @@
+ #include <string.h>
+ #include <mntent.h>
+ #include <errno.h>
++#include <sys/types.h>
+ #include <sys/stat.h>
++#include <fcntl.h>
+ #include "xmalloc.h"
+ #include "swap_constants.h"
+ #include "swapargs.h"
+@@ -23,6 +25,7 @@
+ 
+ #define	_PATH_FSTAB     "/etc/fstab"
+ #define PROC_SWAPS      "/proc/swaps"
++#define PATH_MKSWAP	"/sbin/mkswap"
+ 
+ #define SWAPON_NEEDS_TWO_ARGS
+ 
+@@ -179,6 +182,85 @@ display_summary(void)
+        return 0 ;
+ }
+ 
++/*
++ * It's better do swsuspend detection by follow routine than
++ * include huge mount_guess_fstype.o to swapon. We need only
++ * swsuspend and no the others filesystems.
++ */
++#ifdef HAVE_LIBBLKID
++static int
++swap_is_swsuspend(const char *device) {
++	const char *type = blkid_get_tag_value(blkid, "TYPE", device);
++
++	if (type && strcmp(type, "swsuspend")==0)
++		return 0;
++	return 1;
++}
++#else
++static int
++swap_is_swsuspend(const char *device) {
++	int fd, re = 1, n = getpagesize() - 10;
++	char buf[10];
++
++	fd = open(device, O_RDONLY);
++	if (fd < 0)
++		return -1;
++
++	if (lseek(fd, n, SEEK_SET) >= 0 &&
++	    read(fd, buf, sizeof buf) == sizeof buf &&
++	    (memcmp("S1SUSPEND", buf, 9)==0 ||
++			memcmp("S2SUSPEND", buf, 9)==0 ||
++			memcmp("ULSUSPEND", buf, 9)==0))
++		re = 0;
++
++	close(fd);
++	return re;
++}
++#endif
++
++/* calls mkswap */
++static int
++swap_reinitialize(const char *device) {
++	const char *label = mount_get_volume_label_by_spec(device);
++	pid_t pid;
++
++	switch((pid=fork())) {
++		case -1: /* fork error */
++			fprintf(stderr, _("%s: cannot fork: %s\n"),
++				progname, strerror(errno));
++			return -1;
++
++		case 0:	/* child */
++			if (label && *label)
++				execl(PATH_MKSWAP, PATH_MKSWAP, "-L", label, device, NULL);
++			else
++				execl(PATH_MKSWAP, PATH_MKSWAP, device, NULL);
++			exit(1); /* error  */
++
++		default: /* parent */
++		{
++			int status;
++			int ret;
++
++			do {
++				if ((ret = waitpid(pid, &status, 0)) < 0
++						&& errno == EINTR)
++					continue;
++				else if (ret < 0) {
++					fprintf(stderr, _("%s: waitpid: %s\n"),
++						progname, strerror(errno));
++					return -1;
++		      		}
++			} while (0);
++
++			/* mkswap returns: 0=suss, 1=error */
++			if (WIFEXITED(status) && WEXITSTATUS(status)==0)
++				return 0; /* ok */
++		}
++	}
++	return -1; /* error */
++}
++
+ static int
+ do_swapon(const char *orig_special, int prio) {
+ 	int status;
+@@ -202,6 +284,18 @@ do_swapon(const char *orig_special, int 
+ 		return -1;
+ 	}
+ 
++	/* We have to reinitialize swap with old (=useless) software suspend
++	 * data. The problem is that if we don't do it, then we get data
++	 * corruption the next time with suspended on.
++	 */
++	if (swap_is_swsuspend(special)==0) {
++		fprintf(stdout, _("%s: %s: software suspend data detected. "
++					"Reinitializing the swap.\n"),
++			progname, special);
++		if (swap_reinitialize(special) < 0)
++			return -1;
++	}
++
+ 	/* people generally dislike this warning - now it is printed
+ 	   only when `verbose' is set */
+ 	if (verbose) {
diff --git a/util-linux-2.13-loop.patch b/util-linux-2.13-loop.patch
new file mode 100644
index 0000000..ca5698c
--- /dev/null
+++ b/util-linux-2.13-loop.patch
@@ -0,0 +1,32 @@
+--- util-linux-ng-2.13rc2+git20070725/mount/lomount.c.org	2007-08-16 17:09:33.258902000 +0200
++++ util-linux-ng-2.13rc2+git20070725/mount/lomount.c	2007-08-16 17:09:43.016135000 +0200
+@@ -398,6 +398,7 @@
+ 	}
+ 	if (ioctl (fd, LOOP_CLR_FD, 0) < 0) {
+ 		perror ("ioctl: LOOP_CLR_FD");
++		close(fd);
+ 		return 1;
+ 	}
+ 	close (fd);
+--- util-linux-ng-2.13rc2+git20070725/mount/fsprobe_volumeid.c.org	2007-08-16 18:16:03.120065000 +0200
++++ util-linux-ng-2.13rc2+git20070725/mount/fsprobe_volumeid.c	2007-08-16 18:27:43.967526000 +0200
+@@ -34,8 +34,10 @@
+ 		return NULL;
+ 
+ 	id = volume_id_open_fd(fd);
+-	if (!id)
++	if (!id) {
++		close(fd);
+ 		return NULL;
++	}
+ 
+ 	/* TODO: use blkdev_get_size() */
+ 	if (ioctl(fd, BLKGETSIZE64, &size) != 0)
+@@ -61,6 +63,7 @@
+ 	}
+ 
+ 	volume_id_close(id);
++	close(fd);
+ 	return value;
+ }
+ 
diff --git a/util-linux-2.13-mount_create_mtab.patch b/util-linux-2.13-mount_create_mtab.patch
new file mode 100644
index 0000000..4d26d69
--- /dev/null
+++ b/util-linux-2.13-mount_create_mtab.patch
@@ -0,0 +1,13 @@
+Index: util-linux-ng-2.13rc2+git20070725/mount/mount.c
+===================================================================
+--- util-linux-ng-2.13rc2+git20070725.orig/mount/mount.c
++++ util-linux-ng-2.13rc2+git20070725/mount/mount.c
+@@ -546,7 +546,7 @@ create_mtab (void) {
+ 		char *extra_opts;
+ 		parse_opts (fstab->m.mnt_opts, &flags, &extra_opts);
+ 		mnt.mnt_dir = "/";
+-		mnt.mnt_fsname = canonicalize (fstab->m.mnt_fsname);
++		mnt.mnt_fsname = fsprobe_get_devname(fstab->m.mnt_fsname);
+ 		mnt.mnt_type = fstab->m.mnt_type;
+ 		mnt.mnt_opts = fix_opts_string (flags, extra_opts, NULL);
+ 		mnt.mnt_freq = mnt.mnt_passno = 0;
diff --git a/util-linux-2.13-mount_fd_leak.patch b/util-linux-2.13-mount_fd_leak.patch
new file mode 100644
index 0000000..d88ec05
--- /dev/null
+++ b/util-linux-2.13-mount_fd_leak.patch
@@ -0,0 +1,12 @@
+Index: util-linux-ng-2.13rc2+git20070725/mount/lomount.c
+===================================================================
+--- util-linux-ng-2.13rc2+git20070725.orig/mount/lomount.c
++++ util-linux-ng-2.13rc2+git20070725/mount/lomount.c
+@@ -325,6 +325,7 @@ set_loop(const char *device, const char 
+ 	}
+ 	if ((fd = open(device, mode)) < 0) {
+ 		perror (device);
++		close(ffd);
+ 		return 1;
+ 	}
+ 	*loopro = (mode == O_RDONLY);
diff --git a/util-linux-2.13-schedutils_error_handling.patch b/util-linux-2.13-schedutils_error_handling.patch
new file mode 100644
index 0000000..2bd26b2
--- /dev/null
+++ b/util-linux-2.13-schedutils_error_handling.patch
@@ -0,0 +1,55 @@
+Original patch from Bernhard Voelker.
+
+Index: util-linux-ng-2.13rc2+git20070725/schedutils/ionice.c
+===================================================================
+--- util-linux-ng-2.13rc2+git20070725.orig/schedutils/ionice.c
++++ util-linux-ng-2.13rc2+git20070725/schedutils/ionice.c
+@@ -107,7 +107,7 @@ int main(int argc, char *argv[])
+ 		case 'h':
+ 		default:
+ 			usage();
+-			exit(0);
++			exit(EXIT_SUCCESS);
+ 		}
+ 	}
+ 
+@@ -125,7 +125,7 @@ int main(int argc, char *argv[])
+ 			break;
+ 		default:
+ 			printf("bad prio class %d\n", ioprio_class);
+-			return 1;
++			exit(EXIT_FAILURE);
+ 	}
+ 
+ 	if (!set) {
+@@ -134,9 +134,10 @@ int main(int argc, char *argv[])
+ 
+ 		ioprio = ioprio_get(IOPRIO_WHO_PROCESS, pid);
+ 
+-		if (ioprio == -1)
++		if (ioprio == -1) {
+ 			perror("ioprio_get");
+-		else {
++			exit(EXIT_FAILURE);
++		} else {
+ 			ioprio_class = ioprio >> IOPRIO_CLASS_SHIFT;
+ 			if (ioprio_class != IOPRIO_CLASS_IDLE) {
+ 				ioprio = ioprio & 0xff;
+@@ -147,11 +148,15 @@ int main(int argc, char *argv[])
+ 	} else {
+ 		if (ioprio_set(IOPRIO_WHO_PROCESS, pid, ioprio | ioprio_class << IOPRIO_CLASS_SHIFT) == -1) {
+ 			perror("ioprio_set");
+-			return 1;
++			exit(EXIT_FAILURE);
+ 		}
+ 
+-		if (argv[optind])
++		if (argv[optind]) {
+ 			execvp(argv[optind], &argv[optind]);
++			/* execvp should never return */
++			perror("execvp");
++			exit(EXIT_FAILURE);
++		}
+ 	}
+ 
+ 	return 0;
diff --git a/util-linux-2.13-sys_utils_build_rdev_x86_64.patch b/util-linux-2.13-sys_utils_build_rdev_x86_64.patch
new file mode 100644
index 0000000..6e9381d
--- /dev/null
+++ b/util-linux-2.13-sys_utils_build_rdev_x86_64.patch
@@ -0,0 +1,16 @@
+Index: util-linux-ng-2.13-rc1/sys-utils/Makefile.am
+===================================================================
+--- util-linux-ng-2.13-rc1.orig/sys-utils/Makefile.am
++++ util-linux-ng-2.13-rc1/sys-utils/Makefile.am
+@@ -26,6 +26,11 @@ usrsbinexec_PROGRAMS += rdev
+ man_MANS += rdev.8 ramsize.8 rootflags.8 vidmode.8
+ RDEV_LINKS = ramsize vidmode rootflags
+ endif
++if ARCH_86_64
++usrsbinexec_PROGRAMS += rdev
++man_MANS += rdev.8 ramsize.8 rootflags.8 vidmode.8
++RDEV_LINKS = ramsize vidmode rootflags
++endif
+ endif
+ 
+ SETARCH_LINKS = linux32 linux64
diff --git a/util-linux-ng-2.13rc2+git20070725.tar.bz2 b/util-linux-ng-2.13rc2+git20070725.tar.bz2
new file mode 100644
index 0000000..bd0e5e3
--- /dev/null
+++ b/util-linux-ng-2.13rc2+git20070725.tar.bz2
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:74640e1af0289d3be9397c8a7c8b62f147a3dbfad232fd4a7ec15a41e9ac1cf8
+size 1544622
diff --git a/util-linux-ng-CVE-2007-5191.diff b/util-linux-ng-CVE-2007-5191.diff
new file mode 100644
index 0000000..a05de49
--- /dev/null
+++ b/util-linux-ng-CVE-2007-5191.diff
@@ -0,0 +1,50 @@
+commit ebbeb2c7ac1b00b6083905957837a271e80b187e
+Author: Ludwig Nussel <ludwig.nussel@suse.de>
+Date:   Thu Sep 20 14:57:20 2007 +0200
+
+    mount: doesn't drop privileges properly when calling helpers
+    
+    {,u}mount calls setuid() and setgid() in the wrong order and doesn't checking
+    the return value of set{u,g}id(() when running helpers like mount.nfs.
+    
+    Signed-off-by: Ludwig Nussel <ludwig.nussel@suse.de>
+    Signed-off-by: Karel Zak <kzak@redhat.com>
+
+Index: util-linux-ng-2.13rc2+git20070725/mount/mount.c
+===================================================================
+--- util-linux-ng-2.13rc2+git20070725.orig/mount/mount.c
++++ util-linux-ng-2.13rc2+git20070725/mount/mount.c
+@@ -646,8 +646,12 @@ check_special_mountprog(const char *spec
+ 		 char *oo, *mountargs[10];
+ 		 int i = 0;
+ 
+-		 setuid(getuid());
+-		 setgid(getgid());
++		 if(setgid(getgid()) < 0)
++			 die(EX_FAIL, _("mount: cannot set group id: %s"), strerror(errno));
++
++		 if(setuid(getuid()) < 0)
++			 die(EX_FAIL, _("mount: cannot set user id: %s"), strerror(errno));
++
+ 		 oo = fix_opts_string (flags, extra_opts, NULL);
+ 		 mountargs[i++] = mountprog;				/* 1 */
+ 		 mountargs[i++] = (char *) spec;			/* 2 */
+Index: util-linux-ng-2.13rc2+git20070725/mount/umount.c
+===================================================================
+--- util-linux-ng-2.13rc2+git20070725.orig/mount/umount.c
++++ util-linux-ng-2.13rc2+git20070725/mount/umount.c
+@@ -102,8 +102,12 @@ check_special_umountprog(const char *spe
+ 				char *umountargs[8];
+ 				int i = 0;
+ 
+-				setuid(getuid());
+-				setgid(getgid());
++				if(setgid(getgid()) < 0)
++					die(EX_FAIL, _("umount: cannot set group id: %s"), strerror(errno));
++
++				if(setuid(getuid()) < 0)
++					die(EX_FAIL, _("umount: cannot set user id: %s"), strerror(errno));
++
+ 				umountargs[i++] = umountprog;
+ 				umountargs[i++] = xstrdup(node);
+ 				if (nomtab)
diff --git a/util-linux-ng-add-loop_fish2-compatability.diff b/util-linux-ng-add-loop_fish2-compatability.diff
new file mode 100644
index 0000000..0fcdf4f
--- /dev/null
+++ b/util-linux-ng-add-loop_fish2-compatability.diff
@@ -0,0 +1,38 @@
+Index: util-linux-ng-2.13rc2+git20070725/mount/lomount.c
+===================================================================
+--- util-linux-ng-2.13rc2+git20070725.orig/mount/lomount.c
++++ util-linux-ng-2.13rc2+git20070725/mount/lomount.c
+@@ -338,13 +338,11 @@ set_loop(const char *device, const char 
+ 
+ 	if (encryption && *encryption) {
+ 		// a hint for suse users
+-		if(!strcmp(encryption, "twofishSL92")) {
+-			fprintf(stderr, _("twofishSL92 is not supported via cryptoloop, please use dm-crypt to access the volume\n"));
+-			close(fd);
+-			close(ffd);
+-			return 1;
+-		}
+-		if (digits_only(encryption)) {
++ 		if(!phash && (!strcmp(encryption, "twofishSL92") || (!strcmp(encryption, "twofish") && !keysz))) {
++ 			fprintf(stderr,"Switching to old S.u.S.E. loop_fish2 compatibility mode.\n");
++ 			fprintf(stderr, _("Warning: This mode is deprecated, support for it will be removed in the future.\n"));
++ 			loopinfo64.lo_encrypt_type = 3; // LO_CRYPT_FISH
++ 		} else if (digits_only(encryption)) {
+ 			loopinfo64.lo_encrypt_type = atoi(encryption);
+ 		} else {
+ 			// check for something like twofish256
+@@ -405,6 +403,14 @@ set_loop(const char *device, const char 
+ 			hfunc = sha512_hash_buffer;
+ 			if(loopinfo64.lo_encrypt_key_size == 24) hfunc = sha384_hash_buffer;
+ 			if(loopinfo64.lo_encrypt_key_size == 32) hfunc = sha512_hash_buffer;
++		} else if(loopinfo64.lo_encrypt_type == 3 ) { // LO_CRYPT_FISH
++			if(!strcmp(encryption, "twofishSL92")) {
++				hfunc = sha512_hash_buffer;
++				loopinfo64.lo_encrypt_key_size = 32;
++			} else {
++				hfunc = phash_rmd160;
++				loopinfo64.lo_encrypt_key_size = 20;
++			}
+ 		} else {
+ 			hfunc = phash_none;
+ 			loopinfo64.lo_encrypt_key_size = keysz?keysz>>3:LO_KEY_SIZE;
diff --git a/util-linux-ng-fix-buffer-overflow.diff b/util-linux-ng-fix-buffer-overflow.diff
new file mode 100644
index 0000000..a1b2492
--- /dev/null
+++ b/util-linux-ng-fix-buffer-overflow.diff
@@ -0,0 +1,55 @@
+From 0e7b44f7f89291d8ae75e4f099d8aa2bcca1cfc5 Mon Sep 17 00:00:00 2001
+From: Ludwig Nussel <ludwig.nussel@suse.de>
+Date: Tue, 9 Oct 2007 14:34:15 +0200
+Subject: [PATCH] fix buffer overflow
+
+Signed-off-by: Ludwig Nussel <ludwig.nussel@suse.de>
+---
+ mount/lomount.c |   13 +++++++++----
+ 1 files changed, 9 insertions(+), 4 deletions(-)
+
+Index: util-linux-ng-2.13rc2+git20070725/mount/lomount.c
+===================================================================
+--- util-linux-ng-2.13rc2+git20070725.orig/mount/lomount.c
++++ util-linux-ng-2.13rc2+git20070725/mount/lomount.c
+@@ -25,8 +25,8 @@
+ #include "xstrncpy.h"
+ #include "nls.h"
+ 
+-#ifndef MAX
+-#define MAX(a,b) ((a>b)?(a):(b))
++#ifndef MIN
++#define MIN(a,b) ((a<b)?(a):(b))
+ #endif
+ 
+ extern int verbose;
+@@ -291,7 +291,7 @@ digits_only(const char *s) {
+ 
+ static void phash_none(const unsigned char *key, size_t keylen, unsigned char* buf, size_t buflen)
+ {
+-	memcpy(buf, key, MAX(buflen, keylen));
++	memcpy(buf, key, MIN(buflen, keylen));
+ }
+ 
+ static void phash_rmd160(const unsigned char *key, size_t keylen, unsigned char* buf, size_t buflen)
+@@ -304,7 +304,7 @@ static void phash_rmd160(const unsigned 
+ 	rmd160_hash_buffer(tmpbuf + RMD160_HASH_SIZE, tmp, keylen+1);
+ 	memset(tmp, 0, keylen+1);
+ 	free(tmp);
+-	memcpy(buf, tmpbuf, MAX(buflen, sizeof(tmpbuf)));
++	memcpy(buf, tmpbuf, MIN(buflen, sizeof(tmpbuf)));
+ }
+ 
+ int
+@@ -421,6 +421,11 @@ set_loop(const char *device, const char 
+ 			loopinfo64.lo_encrypt_key_size = keysz>>3;
+ 		}
+ 
++		if((unsigned)loopinfo64.lo_encrypt_key_size > sizeof(loopinfo64.lo_encrypt_key)) {
++			fprintf(stderr, _("invalid key length\n"));
++			return 1;
++		}
++
+ 		if (phash) {
+ 			if(!strcasecmp(phash, "sha512")) {
+ 				hfunc = sha512_hash_buffer;
diff --git a/util-linux.changes b/util-linux.changes
index 1389521..61fb472 100644
--- a/util-linux.changes
+++ b/util-linux.changes
@@ -1,85 +1,9 @@
 -------------------------------------------------------------------
-Thu Feb  7 12:41:25 CET 2008 - mkoenig@suse.de
+Fri Oct 12 14:52:21 CEST 2007 - lnussel@suse.de
 
-- update to version 2.13.1:
-  mount:
-  * -L|-U segfault when label or uuid doesn't exist
-  * chain of symlinks to fstab causes use of pointer after free
-  * don't call canonicalize(SPEC) for cifs, smbfs and nfs
-  * improve error message when helper program not present
-  losetup:
-  * fix errno usage
-  mkswap:
-  * possible to crash with SELinux relabeling support
-  sfdisk:
-  * allow partitioning drives of over 2^31 sectors
-  hwclock:
-  * check for ENODEV
-- mount: fix problem with device canonicalization when using
-  persistent name in fstab but call mount with real bd name
-- patches merged:
-  util-linux-2.13-mount_fd_leak.patch  
-
--------------------------------------------------------------------
-Tue Dec 18 15:55:19 CET 2007 - mkoenig@suse.de
-
-- add temporary workaround for broken RTC update interrupts
-  [#338419]
-
--------------------------------------------------------------------
-Mon Dec  3 11:03:57 CET 2007 - ro@suse.de
-
-- remove "arch", in coreutils now 
-
--------------------------------------------------------------------
-Thu Nov 29 17:51:17 CET 2007 - lnussel@suse.de
-
-- update crypto patch
-  * fix mount buffer overflow when reading the passphrase (#332148)
-  * add loop_fish2 compatability code to losetup/mount again (#332095)
-  * change default hash size for 128bit keys to sha256 again
-
-
--------------------------------------------------------------------
-Wed Nov 21 13:43:31 CET 2007 - mkoenig@suse.de
-
-- update to git20071121:
-  add sector size check for mkfs.minix [#308256]
-  fix canonicalization for cifs [#338375]
-- provide Short-Description for raw init script
-- add rpmlintrc
-
--------------------------------------------------------------------
-Tue Nov 20 17:49:35 CET 2007 - mkoenig@suse.de
-
-- fix raw path in init script 
-
--------------------------------------------------------------------
-Tue Nov  6 16:11:02 CET 2007 - mkoenig@suse.de
-
-- update to 2.13.0.1+git20071106
-- prevent loop mounting the same file twice [#240653] 
-- merged upstream:
-  util-linux-2.13-mount_helper_fix.patch
-  util-linux-2.13-hwclock_rtc_option.patch 
-
--------------------------------------------------------------------
-Thu Oct  4 22:24:04 CEST 2007 - bg@suse.de
-
-- don't use parisc, parisc32 and parisc64.
-
--------------------------------------------------------------------
-Mon Oct  1 17:08:06 CEST 2007 - mkoenig@suse.de
-
-- update to version 2.13
-  merged upstream:
-  util-linux-2.12r-disk_utils_mkfs_open_exclusive.patch
-  util-linux-2.13-loop.patch
-  util-linux-2.13-mount_create_mtab.patch
-  util-linux-2.13-schedutils_error_handling.patch
-  util-linux-2.13-sys_utils_build_rdev_x86_64.patch 
-- fix hwclock --rtc option [#326106]
-- fix setuid/setgid mixup and error checking [#327022]
+- fix mount not checking return value of setuid (#327022, CVE-2007-5191)
+- fix mount buffer overflow when reading the passphrase (#332148)
+- add loop_fish2 compatability code to losetup/mount again (#332095)
 
 -------------------------------------------------------------------
 Fri Sep 14 11:24:33 CEST 2007 - mkoenig@suse.de
diff --git a/util-linux.spec b/util-linux.spec
index 5e948dc..0951873 100644
--- a/util-linux.spec
+++ b/util-linux.spec
@@ -1,7 +1,7 @@
 #
-# spec file for package util-linux (Version 2.13.1)
+# spec file for package util-linux (Version 2.12r+2.13rc2+git20070725)
 #
-# Copyright (c) 2008 SUSE LINUX Products GmbH, Nuernberg, Germany.
+# Copyright (c) 2007 SUSE LINUX Products GmbH, Nuernberg, Germany.
 # This file and all modifications and additions to the pristine
 # package are under the same license as the package itself.
 #
@@ -20,11 +20,11 @@ PreReq:         %install_info_prereq permissions
 License:        BSD 3-Clause; GPL v2 or later
 Group:          System/Base
 AutoReqProv:    on
-Version:        2.13.1
-Release:        1
+Version:        2.12r+2.13rc2+git20070725
+Release:        24.1
+%define upver 2.13rc2+git20070725
 Summary:        A collection of basic system utilities
-Source:         ftp://ftp.kernel.org/pub/linux/utils/util-linux/%name-ng-%version.tar.bz2
-Source1:        util-linux-2.13-rpmlintrc
+Source:         ftp://ftp.kernel.org/pub/linux/utils/util-linux/%name-ng-%upver.tar.bz2
 Source2:        nologin.c
 Source3:        nologin.8
 Source4:        raw.init
@@ -46,30 +46,39 @@ Source28:       mkzimage_cmdline.8
 Source29:       mkzimage_cmdline.c
 Source30:       README.largedisk
 ##
-## util-linux patches
+## util-linux
 ##
+#
 # add hostid
 Patch1:         util-linux-2.12-misc_utils_hostid.patch
 # 104405 - mount -a doesn't work with hotpluggable devices
 Patch2:         util-linux-mount_opt_nofail.patch
+# 176582 - If the user doesn't specify -t <fstype> mount.fstype will never be called
+#TODO: check alternative upstream fix
+#Patch96:        util-linux-2.12r-mount_external_prog_on_guess.patch
 # 160822 - fix for 153657
 Patch3:         util-linux-2.12r-fdisk_cyl.patch
+# 238687 - let mkfs tools open block devices with O_EXCL
+Patch4:         util-linux-2.12r-disk_utils_mkfs_open_exclusive.patch
 # 241372 - remove legacy warnings from fdisk
-Patch4:         util-linux-2.12r-fdisk_remove_bogus_warnings.patch
-# 304861 - support password hashing and key length
-Patch6:         util-linux-2.13-fdisk_cfdisk_ncursesw.patch
-# 338419
-Patch7:         util-linux-2.13-hwclock_rtc_wait_busy_tempfix.patch
-# in upstream git, but not yet released
-Patch8:         util-linux-2.13.1-canonicalize_loopfile_name.patch
-Patch9:         util-linux-2.13.1-prevent_loop_mounting_the_same_file_twice.patch
-Patch10:        util-linux-2.13.1-mkfs.minix_add_sectorsize_check.patch
-Patch11:        util-linux-2.13.1-mkfs.minix_device_size_cleanup.patch
-#
-Patch12:        util-linux-2.13.1-getfs_fix.patch	
+Patch5:         util-linux-2.12r-fdisk_remove_bogus_warnings.patch
 # 254437 - swapon should automatically reset the suspend signature
-Patch13:        util-linux-ng-2.13-swapon-swsuspend.patch
-Patch20:        util-linux-mount_losetup_crypto.patch
+# TODO: Needs to be ported to new version
+Patch38:        util-linux-2.12r-mount_swapon_swsuspend_resume.patch
+# suse48633 - util-linux on x86_64 does not contain "rdev" and "vidmode"
+Patch6:         util-linux-2.13-sys_utils_build_rdev_x86_64.patch
+# 297172 - mount does not free loop devices if it fails
+Patch7:         util-linux-2.13-loop.patch 
+Patch8:         util-linux-2.13-mount_create_mtab.patch
+Patch9:         util-linux-2.13-schedutils_error_handling.patch
+# 304861 - support password hashing and key length
+Patch10:        cryptsetup-2.13-crypto.diff
+Patch11:        util-linux-2.13-mount_fd_leak.patch
+Patch12:        util-linux-2.13-fdisk_cfdisk_ncursesw.patch
+# security fix
+Patch13:        util-linux-ng-CVE-2007-5191.diff
+Patch14:        util-linux-ng-fix-buffer-overflow.diff
+Patch15:        util-linux-ng-add-loop_fish2-compatability.diff
 ##
 ##
 ## adjtimex
@@ -103,11 +112,13 @@ Authors:
     Karel Zak <kzak@redhat.com>
 
 %prep
-%setup -q -a 9 -b 10 -b 11 -b 12 -b 13 -n %name-ng-%version
+%setup -q -a 9 -b 10 -b 11 -b 12 -b 13 -n %name-ng-%upver
 %patch1 -p1
 %patch2 -p1
 %patch3 -p1
 %patch4 -p1
+%patch5 -p1
+#%patch38 -p1
 %patch6 -p1
 %patch7 -p1
 %patch8 -p1
@@ -116,8 +127,8 @@ Authors:
 %patch11 -p1
 %patch12 -p1
 %patch13 -p1
-%patch20 -p1
-#%patch38 -p1
+%patch14 -p1
+%patch15 -p1
 #
 cd adjtimex-*
 %patch50 -p1
@@ -164,6 +175,7 @@ CFLAGS="$RPM_OPT_FLAGS -D_GNU_SOURCE " INSTALL_PROGRAM='$(INSTALL)' \
 		    --infodir=%{_infodir} \
 		    %{_target_cpu}-suse-linux
 make
+make check
 cd ..
 # klogconsole build
 cd klogconsole
@@ -192,16 +204,13 @@ CFLAGS=-DCONFIG_SMP
             --enable-raw \
             --enable-rdev \
             --enable-write \
+	    --enable-arch \
             --disable-use-tty-group \
             CFLAGS="$CFLAGS $RPM_OPT_FLAGS"
 make
 gcc $RPM_OPT_FLAGS -o nologin nologin.c
 gcc $RPM_OPT_FLAGS -o mkzimage_cmdline %{S:29}
 
-%check
-cd ../time-%{time_ver}
-make check
-
 %install
 mkdir -p "$RPM_BUILD_ROOT"{/etc/init.d,%{_mandir}/man{1,8},\
 /bin,/sbin,/usr/bin,/usr/sbin,%{_infodir}}
@@ -280,16 +289,7 @@ rm -f $RPM_BUILD_ROOT/usr/bin/ppc
 rm -f $RPM_BUILD_ROOT/usr/bin/ppc32
 rm -f $RPM_BUILD_ROOT/usr/bin/ppc64
 rm -f $RPM_BUILD_ROOT/usr/bin/ia64
-rm -f $RPM_BUILD_ROOT/usr/bin/parisc
-rm -f $RPM_BUILD_ROOT/usr/bin/parisc32
-rm -f $RPM_BUILD_ROOT/usr/bin/parisc64
 rm -f $RPM_BUILD_ROOT/%{_mandir}/man8/setarch.8
-rm -f $RPM_BUILD_ROOT/%{_mandir}/man8/i386.8
-rm -f $RPM_BUILD_ROOT/%{_mandir}/man8/x86_64.8
-rm -f $RPM_BUILD_ROOT/%{_mandir}/man8/linux{32,64}.8
-rm -f $RPM_BUILD_ROOT/%{_mandir}/man8/ia64.8
-rm -f $RPM_BUILD_ROOT/%{_mandir}/man8/s390{,x}.8
-rm -f $RPM_BUILD_ROOT/%{_mandir}/man8/ppc{,32,64}.8
 # arch dependent
 %ifarch s390 s390x
 rm -f $RPM_BUILD_ROOT/etc/fdprm
@@ -358,6 +358,7 @@ fi
 %config(noreplace) %attr(644,root,root) /etc/raw
 %config(noreplace) /etc/filesystems
 /usr/sbin/rcraw
+/bin/arch
 /bin/dmesg
 /bin/more
 /bin/mount
@@ -434,6 +435,7 @@ fi
 %{_infodir}/freeramdisk.info*.gz
 %{_infodir}/time.info*.gz
 %{_infodir}/which.info*.gz
+%{_mandir}/man1/arch.1.gz
 %{_mandir}/man1/cal.1.gz
 %{_mandir}/man1/chrt.1.gz
 %{_mandir}/man1/col.1.gz
@@ -563,85 +565,33 @@ fi
 #/usr/bin/i386
 #/usr/bin/ia64
 #%endif
-
 %changelog
-* Thu Feb 07 2008 mkoenig@suse.de
-- update to version 2.13.1:
-  mount:
-  * -L|-U segfault when label or uuid doesn't exist
-  * chain of symlinks to fstab causes use of pointer after free
-  * don't call canonicalize(SPEC) for cifs, smbfs and nfs
-  * improve error message when helper program not present
-  losetup:
-  * fix errno usage
-  mkswap:
-  * possible to crash with SELinux relabeling support
-  sfdisk:
-  * allow partitioning drives of over 2^31 sectors
-  hwclock:
-  * check for ENODEV
-- mount: fix problem with device canonicalization when using
-  persistent name in fstab but call mount with real bd name
-- patches merged:
-  util-linux-2.13-mount_fd_leak.patch
-* Tue Dec 18 2007 mkoenig@suse.de
-- add temporary workaround for broken RTC update interrupts
-  [#338419]
-* Mon Dec 03 2007 ro@suse.de
-- remove "arch", in coreutils now
-* Thu Nov 29 2007 lnussel@suse.de
-- update crypto patch
-  * fix mount buffer overflow when reading the passphrase (#332148)
-  * add loop_fish2 compatability code to losetup/mount again (#332095)
-  * change default hash size for 128bit keys to sha256 again
-* Wed Nov 21 2007 mkoenig@suse.de
-- update to git20071121:
-  add sector size check for mkfs.minix [#308256]
-  fix canonicalization for cifs [#338375]
-- provide Short-Description for raw init script
-- add rpmlintrc
-* Tue Nov 20 2007 mkoenig@suse.de
-- fix raw path in init script
-* Tue Nov 06 2007 mkoenig@suse.de
-- update to 2.13.0.1+git20071106
-- prevent loop mounting the same file twice [#240653]
-- merged upstream:
-  util-linux-2.13-mount_helper_fix.patch
-  util-linux-2.13-hwclock_rtc_option.patch
-* Thu Oct 04 2007 bg@suse.de
-- don't use parisc, parisc32 and parisc64.
-* Mon Oct 01 2007 mkoenig@suse.de
-- update to version 2.13
-  merged upstream:
-  util-linux-2.12r-disk_utils_mkfs_open_exclusive.patch
-  util-linux-2.13-loop.patch
-  util-linux-2.13-mount_create_mtab.patch
-  util-linux-2.13-schedutils_error_handling.patch
-  util-linux-2.13-sys_utils_build_rdev_x86_64.patch
-- fix hwclock --rtc option [#326106]
-- fix setuid/setgid mixup and error checking [#327022]
-* Fri Sep 14 2007 mkoenig@suse.de
+* Fri Oct 12 2007 - lnussel@suse.de
+- fix mount not checking return value of setuid (#327022, CVE-2007-5191)
+- fix mount buffer overflow when reading the passphrase (#332148)
+- add loop_fish2 compatability code to losetup/mount again (#332095)
+* Fri Sep 14 2007 - mkoenig@suse.de
 - link cfdisk against libncursesw instead libncurses to fix
   broken utf-8 characters [#307353]
-* Wed Aug 29 2007 mkoenig@suse.de
+* Wed Aug 29 2007 - mkoenig@suse.de
 - fix fd leaks in previous patch
-* Tue Aug 28 2007 lnussel@suse.de
+* Tue Aug 28 2007 - lnussel@suse.de
 - add support for specifying the key length and password hash
   algorithm [#304861]
-* Fri Aug 24 2007 mkoenig@suse.de
+* Fri Aug 24 2007 - mkoenig@suse.de
 - avoid duplicates of root fs if defined with LABEL in fstab
   [#297959]
 - fix ionice error handling [#301675]
-* Thu Aug 16 2007 ssommer@suse.de
+* Thu Aug 16 2007 - ssommer@suse.de
 - free loop devices when mount fails [#297172]
-* Wed Jul 25 2007 mkoenig@suse.de
+* Wed Jul 25 2007 - mkoenig@suse.de
 - update to git20070725
 - removed patches (merged upstream):
   util-linux-2.12r-mount_mount.8_xfs_update.patch
   util-linux-2.12r-sys_utils_readprofile_mapfile.patch
   util-linux-2.12r-disk_utils_mkswap_fix.patch
   util-linux-2.13-schedutils_ionice_idle.patch
-* Tue Jul 17 2007 mkoenig@suse.de
+* Tue Jul 17 2007 - mkoenig@suse.de
 - updated to version 2.13-rc2:
   * add wakertc
 - cleanup ionice usage [#270251]
@@ -655,7 +605,7 @@ fi
   util-linux-2.12a-mount_mountpointwithcolon.patch
   util-linux-2.12a-mount_procswapcheck.patch
   util-linux-2.12q-mount_umount2_not_static.patch
-* Fri Jul 13 2007 mkoenig@suse.de
+* Fri Jul 13 2007 - mkoenig@suse.de
 - replace hotplug with nofail option and fix it to not use
   syscall reserved values.
 - removed patch
@@ -663,16 +613,16 @@ fi
   it is intentional that suid hwclock capabilities are limited
 - removed patch (fixed upstream)
   util-linux-2.12q-mount_--move.patch
-* Mon Jul 09 2007 mkoenig@suse.de
+* Mon Jul 09 2007 - mkoenig@suse.de
 - add libuuid-devel to BuildRequires to let mkswap use UUIDs
-* Thu Jul 05 2007 mkoenig@suse.de
+* Thu Jul 05 2007 - mkoenig@suse.de
 - use %%config(noreplace) for /etc/filesystems
 - Keep rdev stuff for x86_64
   util-linux-2.13-sys_utils_build_rdev_x86_64.patch
 - removed patches (merged upstream)
   util-linux-2.12r-misc_utils_cal_formatting.patch
   util-linux-2.12q-sys_utils_ionice.patch
-* Thu Jul 05 2007 mkoenig@suse.de
+* Thu Jul 05 2007 - mkoenig@suse.de
 - update to 2.13-rc1:
   * mount fixes
   * agetty: add 'O' escape code to display domain name
@@ -686,23 +636,23 @@ fi
   util-linux-2.13-misc_utils_cal_ncurses.patch
   util-linux-2.13-mount_volumeid_label.patch
 - use %%find_lang
-* Thu Jun 21 2007 mkoenig@suse.de
+* Thu Jun 21 2007 - mkoenig@suse.de
 - use encoded label names with volume_id [#232929]
   util-linux-2.13-mount_volumeid_label.patch
-* Thu Jun 14 2007 mkoenig@suse.de
+* Thu Jun 14 2007 - mkoenig@suse.de
 - mkzimage_cmdline: activate commandline if used with -s [#279935]
-* Wed Jun 13 2007 mkoenig@suse.de
+* Wed Jun 13 2007 - mkoenig@suse.de
 - schedutils: let chrt accept pid 0 for current process and
   fix some documentation bugs [#266879]
   util-linux-2.13-schedutils_chrt.patch
-* Wed Jun 06 2007 mkoenig@suse.de
+* Wed Jun 06 2007 - mkoenig@suse.de
 - update to git20070530
 - removed patches
   util-linux-2.13-mount_volume_id.patch
   util-linux-2.12r-mount_by_uuid.patch
   util-linux-2.13-build_gnu_source.patch
 - fix build with ncurses
-* Tue Jun 05 2007 mkoenig@suse.de
+* Tue Jun 05 2007 - mkoenig@suse.de
 - update to git20070509
   mount: NFS code removed (use mount.nfs{,4} from nfs-utils)
 - remove sm-notify (nfs-utils)
@@ -719,16 +669,16 @@ fi
   util-linux-2.13-mount_nfs_timeo.patch
   util-linux-mount_nfs.8.patch
   util-linux-mount_warn_nfsudp.patch
-* Tue Jun 05 2007 pth@suse.de
+* Tue Jun 05 2007 - pth@suse.de
 - Update to which-2.16, mainly because regenerating configure
   with newer autotools works.
 - Fix the patch for AC_CHECK_STATICLIB
 - Our distribution doesn't install libiberty.a, so pass
   --disable-iberty to configure of which to not use a libiberty from
   somewhere else.
-* Mon Jun 04 2007 pth@suse.de
+* Mon Jun 04 2007 - pth@suse.de
 - Make configure of which search for static libs in lib64 subdirs.
-* Mon Apr 23 2007 mkoenig@suse.de
+* Mon Apr 23 2007 - mkoenig@suse.de
 - update to git20070412
 - remove chkdupexe and scriptreplay to get rid of the
   perl dependency [#265757]
@@ -737,10 +687,10 @@ fi
 - merged patches:
   util-linux-2.13-misc_utils_add_man_scriptreplay.patch
   util-linux-2.13-tests_missing_include.patch
-* Mon Apr 16 2007 mkoenig@suse.de
+* Mon Apr 16 2007 - mkoenig@suse.de
 - fix initialization of offset in
   util-linux-2.12r-mount_racy_loop.patch [#264225]
-* Tue Apr 10 2007 mkoenig@suse.de
+* Tue Apr 10 2007 - mkoenig@suse.de
 - update to version git20070330 of new forked development tree
 - removed Suse crypto patches for losetup [FATE#302001]
 - removed binaries:
@@ -780,205 +730,205 @@ fi
   detect also x86_64 as INTEL architecture
 - rename patches to identify them clearly by subsystem
 - schedutils now part of util-linux itself
-* Wed Apr 04 2007 mkoenig@suse.de
+* Wed Apr 04 2007 - mkoenig@suse.de
 - add Supplements line [FATE#301966]
-* Mon Mar 26 2007 rguenther@suse.de
+* Mon Mar 26 2007 - rguenther@suse.de
 - add ncurses-devel and zlib-devel BuildRequires
-* Thu Mar 15 2007 mkoenig@suse.de
+* Thu Mar 15 2007 - mkoenig@suse.de
 - mount: Let swapon automatically reinitialize a suspended
   swap partition [#254437]
-* Fri Mar 09 2007 mkoenig@suse.de
+* Fri Mar 09 2007 - mkoenig@suse.de
 - mount: fix mtablock patch to avoid mtab corruption [#226783]
-* Thu Mar 08 2007 mkoenig@suse.de
+* Thu Mar 08 2007 - mkoenig@suse.de
 - partx: fix warning for too long literal
-* Wed Mar 07 2007 rguenther@suse.de
+* Wed Mar 07 2007 - rguenther@suse.de
 - fix changelog entry order
-* Tue Feb 27 2007 mkoenig@suse.de
+* Tue Feb 27 2007 - mkoenig@suse.de
 - fix missing return code in
   util-linux-2.12r-losetup_password.patch
 - mount: fix race condition in mount -o loop [#242750]
-* Mon Feb 12 2007 mkoenig@suse.de
+* Mon Feb 12 2007 - mkoenig@suse.de
 - remove legacy warnings from fdisk [#241372]
-* Fri Feb 02 2007 mkoenig@suse.de
+* Fri Feb 02 2007 - mkoenig@suse.de
 - do not use O_EXCL for mkfs.cramfs [#241466]
-* Wed Jan 31 2007 mkoenig@suse.de
+* Wed Jan 31 2007 - mkoenig@suse.de
 - let mkfs tools open with O_EXCL [#238687]
-* Tue Dec 12 2006 mkoenig@suse.de
+* Tue Dec 12 2006 - mkoenig@suse.de
 - provide different return codes for losetup with encryption
   for empty and too short passwords. [#197493]
-* Tue Dec 05 2006 mkoenig@suse.de
+* Tue Dec 05 2006 - mkoenig@suse.de
 - default swap to V1 in any case [#205956]
   patch: util-linux-2.12r-mkswap_fix.patch
 - do not append addr option with each nfs remount [#130625]
   patch: util-linux-2.12r-nfs_remount_options.patch
 - add README.largedisk about fdisk partition size constraints
   [#153657]
-* Tue Nov 07 2006 mkoenig@suse.de
+* Tue Nov 07 2006 - mkoenig@suse.de
 - enable partx [#214992]
-* Tue Oct 10 2006 mkoenig@suse.de
+* Tue Oct 10 2006 - mkoenig@suse.de
 - Round up partition end LBA to a cylinder boundary during
   add_partition() [#174892]
 - Fix readprofile on ppc64 [#179122]
 - Fix cal formatting bug [#203469]
-* Mon Oct 09 2006 mkoenig@suse.de
+* Mon Oct 09 2006 - mkoenig@suse.de
 - Fix llseek issues.
 - swapon.c: Do not use PAGE_SIZE macro.
-* Mon Aug 21 2006 mkoenig@suse.de
+* Mon Aug 21 2006 - mkoenig@suse.de
 - Added sysfs to list of filesystems not to unmount with
   umount -a, resolves #190385
-* Mon Jun 12 2006 kay.sievers@suse.de
+* Mon Jun 12 2006 - kay.sievers@suse.de
 - use libvolume_id from provided as a rpm by udev 094
-* Thu May 18 2006 jeffm@suse.com
+* Wed May 17 2006 - jeffm@suse.com
 - Fixed support for calling external programs w/o -t <type>,
   it would add mtab twice [#176582]
-* Mon Apr 24 2006 hvogel@suse.de
+* Mon Apr 24 2006 - hvogel@suse.de
 - document xfs dmapi mount options better [#158955]
-* Fri Apr 21 2006 olh@suse.de
+* Fri Apr 21 2006 - olh@suse.de
 - add mkzimage_cmdline to edit CHRP zImage kernel cmdline (168313)
-* Tue Apr 18 2006 hvogel@suse.de
+* Tue Apr 18 2006 - hvogel@suse.de
 - fix number of supported raw devices [#165570]
-* Wed Mar 29 2006 olh@suse.de
+* Wed Mar 29 2006 - olh@suse.de
 - clearify comments about mac disk label handling in fdisk
-* Tue Mar 28 2006 hvogel@suse.de
+* Tue Mar 28 2006 - hvogel@suse.de
 - more fixes for the fdiskwrap patch [#160822]
-* Tue Mar 21 2006 okir@suse.de
+* Tue Mar 21 2006 - okir@suse.de
 - Update nfs(5) manpage to document security flavors [#159368]
-* Mon Mar 20 2006 hvogel@suse.de
+* Mon Mar 20 2006 - hvogel@suse.de
 - fix numbers of supported raw devices to match the kernel
   [#158203]
 - make NFSv3 client support RPCSEC_GSS [#158401]
 - fix that if the user doesn't specify -t <fstype>
   mount.fstype will never be called. [#155147]
-* Fri Mar 10 2006 hvogel@suse.de
+* Fri Mar 10 2006 - hvogel@suse.de
 - Fix init.d/raw script to parse device names with , in them
   correctly [#155653]
-* Thu Mar 09 2006 hare@suse.de
+* Thu Mar 09 2006 - hare@suse.de
 - Fix potential security hole in libvolume_id (#133256)
-* Mon Mar 06 2006 hvogel@suse.de
+* Mon Mar 06 2006 - hvogel@suse.de
 - patch fdiskmaclabel.h too
-* Thu Mar 02 2006 hvogel@suse.de
+* Thu Mar 02 2006 - hvogel@suse.de
 - axboe made fdisk not wrap at 2TB [#153657]
-* Fri Feb 17 2006 lmuelle@suse.de
+* Fri Feb 17 2006 - lmuelle@suse.de
 - Use cifs instead of smbfs if the source starts with // and we do not set a
   different fs type.
-* Sun Feb 12 2006 olh@suse.de
+* Sun Feb 12 2006 - olh@suse.de
 - cosmetic fix for option_hotplug declaration
   fix unininitalized string for unknown filesystems (#148855)
-* Fri Feb 10 2006 hvogel@suse.de
+* Fri Feb 10 2006 - hvogel@suse.de
 - mount should not put / in the mtab twice if mount -f / is called
   [#148409]
 - fix hostid printf [#149163]
-* Wed Feb 01 2006 olh@suse.de
+* Wed Feb 01 2006 - olh@suse.de
 - dont invent our own MS_FLAGS (#147132)
-* Wed Feb 01 2006 ro@suse.de
+* Wed Feb 01 2006 - ro@suse.de
 - fix typo in previous change, binary negation is "~"
-* Fri Jan 27 2006 sscheler@suse.de
+* Fri Jan 27 2006 - sscheler@suse.de
 - fixed mount hotplug option (#143352). now we don't send the
   MS_HOTPLUG flag to the kernel any longer, because the kernel
   doesn't know this option (EINVAL) and actually doesn't need to
   know about it.
-* Fri Jan 27 2006 olh@suse.de
+* Fri Jan 27 2006 - olh@suse.de
 - remove clock symlink, hwclock exists since 7 years
-* Fri Jan 27 2006 olh@suse.de
+* Fri Jan 27 2006 - olh@suse.de
 - lsprop and nvsetenv moved to powerpc-utils [#144758]
-* Thu Jan 26 2006 hvogel@suse.de
+* Thu Jan 26 2006 - hvogel@suse.de
 - Make nfsboot world readable [#145418]
-* Wed Jan 25 2006 mls@suse.de
+* Wed Jan 25 2006 - mls@suse.de
 - converted neededforbuild to BuildRequires
-* Tue Jan 24 2006 mmj@suse.de
+* Tue Jan 24 2006 - mmj@suse.de
 - Remove faulty nfs fallback code [#139019]
-* Mon Jan 16 2006 mmj@suse.de
+* Mon Jan 16 2006 - mmj@suse.de
 - Add patch for nsetenv to fix short reads/short writes [#142546]
-* Wed Jan 11 2006 mmj@suse.de
+* Wed Jan 11 2006 - mmj@suse.de
 - Update sm-notify [#141542]
-* Wed Jan 04 2006 mmj@suse.de
+* Wed Jan 04 2006 - mmj@suse.de
 - Update to 2.12r including since 2.12q:
   o cfdisk: fix a segfault with ReiserFS partitions
   o umount: disallow -r option for non-root users
-* Tue Nov 22 2005 mmj@suse.de
+* Tue Nov 22 2005 - mmj@suse.de
 - install proper renice manpage [#132470]
-* Tue Nov 15 2005 uli@suse.de
+* Tue Nov 15 2005 - uli@suse.de
 - umount2 is not static (only fails on ARM, surprisingly)
 - added ARM ionice syscalls
-* Fri Nov 11 2005 hare@suse.de
+* Fri Nov 11 2005 - hare@suse.de
 - Fix reverse-mapping of by-UUID and by-LABEL mounts.
-* Thu Nov 10 2005 hare@suse.de
+* Thu Nov 10 2005 - hare@suse.de
 - Fix a mishandling of by-UUID mounts.
 - Use libvolume_id from udev.
-* Sat Oct 22 2005 mmj@suse.de
+* Sat Oct 22 2005 - mmj@suse.de
 - Increase lsprop.c max property size to 4k [#128155]
-* Mon Oct 10 2005 mmj@suse.de
+* Mon Oct 10 2005 - mmj@suse.de
 - Add -fno-strict-aliasing to nfsmount_xdr.c
-* Mon Oct 03 2005 mmj@suse.de
+* Mon Oct 03 2005 - mmj@suse.de
 - Teach the mount manual page about nodiratime [#118987]
-* Thu Sep 29 2005 mmj@suse.de
+* Thu Sep 29 2005 - mmj@suse.de
 - Patch from jakub007@go2.pl to make mount --move update
   /etc/mtab correctly [#115129]
-* Tue Sep 13 2005 mmj@suse.de
+* Tue Sep 13 2005 - mmj@suse.de
 - Only allow root to pass -r to umount [#116741]
-* Mon Sep 05 2005 mmj@suse.de
+* Mon Sep 05 2005 - mmj@suse.de
 - MAC -> Mac [#104081]
-* Fri Sep 02 2005 mmj@suse.de
+* Fri Sep 02 2005 - mmj@suse.de
 - Don't package manual executable [#114849]
-* Thu Sep 01 2005 mmj@suse.de
+* Thu Sep 01 2005 - mmj@suse.de
 - Add patch for device-mapper mount by label support [#75966]
-* Thu Sep 01 2005 ro@suse.de
+* Thu Sep 01 2005 - ro@suse.de
 - provide and obsolete schedutils
-* Tue Aug 23 2005 hvogel@suse.de
+* Tue Aug 23 2005 - hvogel@suse.de
 - update ionice patch by axboe so that ionice will complain about
   missing sys_ioprio_set support, but it will still
   execute the process.
-* Mon Aug 22 2005 hvogel@suse.de
+* Mon Aug 22 2005 - hvogel@suse.de
 - Fix rpm verify output [#105807]
   (ghost entry for /var/lib/nfs/state)
-* Mon Aug 22 2005 schwab@suse.de
+* Mon Aug 22 2005 - schwab@suse.de
 - Fix stupid buffer overflow bug in cfdisk [#66020].
-* Wed Aug 17 2005 hare@suse.de
+* Wed Aug 17 2005 - hare@suse.de
 - Add option 'hotplug' to mount (#104405)
-* Mon Aug 15 2005 schwab@suse.de
+* Mon Aug 15 2005 - schwab@suse.de
 - Always build with RPM_OPT_FLAGS.
-* Thu Aug 11 2005 mmj@suse.de
+* Thu Aug 11 2005 - mmj@suse.de
 - Patch from Patrick Kirsch to make fdisk detect MAC-fs [#104081]
-* Wed Aug 03 2005 mmj@suse.de
+* Wed Aug 03 2005 - mmj@suse.de
 - Merge schedutils to here (it's happened upstream already)
-* Tue Aug 02 2005 mmj@suse.de
+* Tue Aug 02 2005 - mmj@suse.de
 - Support for s390 and s390x
-* Mon Aug 01 2005 mmj@suse.de
+* Mon Aug 01 2005 - mmj@suse.de
 - It's not __ppc_ and __ppc64__ but __powerpc__ and __powerpc64__
-* Mon Aug 01 2005 mmj@suse.de
+* Mon Aug 01 2005 - mmj@suse.de
 - Add ionice binary from Jens Axboe
-* Wed Jun 29 2005 mmj@suse.de
+* Wed Jun 29 2005 - mmj@suse.de
 - Document load and clearly issues about NFS over UDP [#80263]
 - Don't compile with -fsigned-char [#93886]
-* Tue May 31 2005 okir@suse.de
+* Tue May 31 2005 - okir@suse.de
 - Added NFSv4 support
-* Mon May 09 2005 hvogel@suse.de
+* Mon May 09 2005 - hvogel@suse.de
 - move hashalot and cryptsetup tools to util-linux-crypto
-* Tue Apr 12 2005 mmj@suse.de
+* Tue Apr 12 2005 - mmj@suse.de
 - bump TCP timeo to 600 [#76198]
-* Tue Mar 29 2005 mmj@suse.de
+* Tue Mar 29 2005 - mmj@suse.de
 - Add awareness of twofishSL92 [#74359]
 - Update hashalot to version 0.3
-* Mon Mar 14 2005 okir@suse.de
+* Mon Mar 14 2005 - okir@suse.de
 - Changed sm-notify to recognize host names as well as addresses.
-* Thu Mar 10 2005 mmj@suse.de
+* Thu Mar 10 2005 - mmj@suse.de
 - Don't strip anything explicitly
 - Don't compile with -fno-strict-aliasing [#66020]
-* Fri Feb 04 2005 schwab@suse.de
+* Fri Feb 04 2005 - schwab@suse.de
 - Fix stupid programmer.
-* Mon Jan 24 2005 meissner@suse.de
+* Mon Jan 24 2005 - meissner@suse.de
 - implicit strcmp / strerror in setctsid fixed.
 - 0 -> NULL in an execl
-* Fri Jan 21 2005 mmj@suse.de
+* Fri Jan 21 2005 - mmj@suse.de
 - Sleep after inserting the raw module to make sure it's ready [#49807]
 - Update to 2.12q including since 2.12p:
   o New upstream maintainer - Adrian Bunk <bunk_at_stusta_dot_de>
   o sfdisk: add -G option
   o Updated translations
-* Tue Jan 18 2005 okir@suse.de
+* Tue Jan 18 2005 - okir@suse.de
 - Updated sm-notify; try not to stall bootup my moving the NSM
   state update after we've backgrounded (#49072).
-* Mon Jan 10 2005 mmj@suse.de
+* Mon Jan 10 2005 - mmj@suse.de
 - Update adjtimex to 1.20
 - Update to util-linux-2.12p including since 2.12i:
   o cfdisk: fix number of new partition when partitions not in disk order
@@ -1016,15 +966,15 @@ fi
   o umount: use special umount program if it exists
   o new flock binary
   o New messages
-* Tue Nov 30 2004 mmj@suse.de
+* Tue Nov 30 2004 - mmj@suse.de
 - Install ramsize, rdev, rootflags and vidmode on x86-64 [#48633]
-* Fri Nov 12 2004 schwab@suse.de
+* Fri Nov 12 2004 - schwab@suse.de
 - Don't install *fdisk on ia64.
-* Fri Nov 12 2004 ro@suse.de
+* Fri Nov 12 2004 - ro@suse.de
 - correct permissions handling for wall and write
-* Tue Nov 09 2004 mmj@suse.de
+* Tue Nov 09 2004 - mmj@suse.de
 - Fix segfault with mount -l [#48029]
-* Fri Nov 05 2004 mmj@suse.de
+* Fri Nov 05 2004 - mmj@suse.de
 - Update to util-linux-2.12i including:
   o MCONFIG: fix build conditions
   o chfn, chsh: add error checking
@@ -1036,7 +986,7 @@ fi
   o sfdisk: correct typo in __attribute__used nonsense
   o sfdisk: use PACKED on __arm__
   o sfdisk: fix warning printout
-* Thu Nov 04 2004 mmj@suse.de
+* Thu Nov 04 2004 - mmj@suse.de
 - Update to util-linux-2.12h including:
   o cfdisk: avoid crash if no partition table
   o elvtune: tell user that this only works on 2.4 kernels
@@ -1051,19 +1001,19 @@ fi
   o mount: support jfs mount-by-label, improve reiserfs support
   o sfdisk: remove strange "ends in a digit" heuristic
   o *fdisk: use common disksize() routine
-* Tue Oct 19 2004 mmj@suse.de
+* Tue Oct 19 2004 - mmj@suse.de
 - Add patch from SGI for fdisk label [#47368]
-* Tue Sep 28 2004 mmj@suse.de
+* Tue Sep 28 2004 - mmj@suse.de
 - And another one [#46201]
-* Thu Sep 16 2004 mmj@suse.de
+* Wed Sep 15 2004 - mmj@suse.de
 - Add patch from Andries to fix cfdisk [#44996]
-* Tue Sep 07 2004 mmj@suse.de
+* Tue Sep 07 2004 - mmj@suse.de
 - Update to util-linux-2.12c including:
   o mount.8: added recent ext2 mount options
   o mount: support jfs mount-by-label, improve reiserfs support
   o sfdisk: remove strange "ends in a digit" heuristic
   o *fdisk: use common disksize() routine [#44678]
-* Wed Aug 25 2004 mmj@suse.de
+* Wed Aug 25 2004 - mmj@suse.de
 - Update to util-linux-2.12b including:
   o  chsh: improved error message
   o  dmesg: ask kernel proper buffer size
@@ -1088,36 +1038,36 @@ fi
   Turkish, Ukrainian messages
 - Update the loop-AES patch, thanks to Sumit Bose
 - Change the minimum password length to 8 chars
-* Tue Aug 24 2004 mmj@suse.de
+* Tue Aug 24 2004 - mmj@suse.de
 - Fix signed/unsigned bug in lsprop [#44048]
-* Wed Aug 18 2004 mmj@suse.de
+* Wed Aug 18 2004 - mmj@suse.de
 - Readd patch that got lost to make fdisk -l work better with
   RAID controllers [#43485]
-* Mon Aug 09 2004 mmj@suse.de
+* Mon Aug 09 2004 - mmj@suse.de
 - Add an improved version of the dmesg bufsize patch.
-* Tue Jun 22 2004 mmj@suse.de
+* Tue Jun 22 2004 - mmj@suse.de
 - Add patch to try and guess a filesystem type before blindly
   assuming it's nfs because of the colon [#42097]
-* Mon Jun 14 2004 agruen@suse.de
+* Mon Jun 14 2004 - agruen@suse.de
 - Formatting error in mount.8 manual page.
-* Wed Jun 09 2004 mmj@suse.de
+* Wed Jun 09 2004 - mmj@suse.de
 - Add patch from Olaf Kirch to make protocol selection for mount
   independent of protocol selection for NFS, and picks what is
   available (preferring TCP over UDP) [#41735]
-* Wed Jun 09 2004 mls@suse.de
+* Wed Jun 09 2004 - mls@suse.de
 - add '-f' option to setctsid
-* Thu May 27 2004 okir@suse.de
+* Thu May 27 2004 - okir@suse.de
 - sm-notify now binds to a reserved port
-* Sat May 15 2004 mmj@suse.de
+* Sat May 15 2004 - mmj@suse.de
 - Add documentation about raw device handling [#39037]
-* Mon May 10 2004 mmj@suse.de
+* Mon May 10 2004 - mmj@suse.de
 - Make dmesg dump entire buffer. Patch from Andries/odabrunz [#39761]
-* Thu May 06 2004 mmj@suse.de
+* Thu May 06 2004 - mmj@suse.de
 - Also check if the device is the same when doing swapon. Could be
   the same block device with 2 different names [#39436]
-* Wed May 05 2004 mmj@suse.de
+* Wed May 05 2004 - mmj@suse.de
 - Do a /sbin/modprobe raw when invoking raw devices [#39037]
-* Tue Apr 20 2004 mmj@suse.de
+* Tue Apr 20 2004 - mmj@suse.de
 - Update to 2.12a including:
   o fdisk: fix for kernels 2.4.15-2.4.17
   o fdisk: fix when all partitions are in use
@@ -1131,67 +1081,67 @@ fi
   o setterm.1: clarification
   o sfdisk: fix check for is_ide_cdrom_or_tape
   o umount: skip proc, devfs, devpts on umount -a
-* Mon Apr 19 2004 mmj@suse.de
+* Mon Apr 19 2004 - mmj@suse.de
 - Add patch for unlimited raw devices [#39037]
-* Thu Apr 15 2004 mmj@suse.de
+* Thu Apr 15 2004 - mmj@suse.de
 - Make sm-notify be more quiet when nothing wrong, and log to sys-
   log when something is.
-* Tue Apr 06 2004 mmj@suse.de
+* Tue Apr 06 2004 - mmj@suse.de
 - Don't use startproc for sm-notify [#38481]
-* Mon Apr 05 2004 mmj@suse.de
+* Mon Apr 05 2004 - mmj@suse.de
 - Removing elvtune alltogether was a bit drastic, since it of
   course works fine with 2.4 kernels. So print a warning in case
   the BLKELVGET ioctl returns something indicating 2.6 kernels.
-* Thu Apr 01 2004 mmj@suse.de
+* Thu Apr 01 2004 - mmj@suse.de
 - Don't package elvtune anymore since it's obsolete now that io
   scheduler can be tuned in /sys/block/hdX/queue/iosched/* [#37869]
-* Wed Mar 31 2004 mmj@suse.de
+* Wed Mar 31 2004 - mmj@suse.de
 - Apply util-linux-2.12a fixes for hwclock and readprofile. The
   hwclock bit is a timout fix which hopefully fixes [#35877]
 - Move sm-notify to here from nfs-utils [#36737]
-* Mon Mar 29 2004 mmj@suse.de
+* Mon Mar 29 2004 - mmj@suse.de
 - Adjust warnings about Crypto-API
-* Sun Mar 28 2004 mmj@suse.de
+* Sun Mar 28 2004 - mmj@suse.de
 - Add patch to make script allways use the same LC_NUMERIC [#35476]
-* Fri Mar 26 2004 od@suse.de
+* Fri Mar 26 2004 - od@suse.de
 - Add setctsid by Werner Fink [#37177]
-* Fri Mar 26 2004 mmj@suse.de
+* Fri Mar 26 2004 - mmj@suse.de
 - Mount option "code" is now "codepage" so update /etc/fstab in
   postinstall [#36950]
-* Fri Mar 26 2004 mmj@suse.de
+* Fri Mar 26 2004 - mmj@suse.de
 - Remove false statement in nfs.5 about the linux kernel not
   supporting nfs over tcp [#37060]
-* Wed Mar 17 2004 mmj@suse.de
+* Wed Mar 17 2004 - mmj@suse.de
 - Use correct permissions for README.hashalot [#36303]
-* Mon Mar 08 2004 mmj@suse.de
+* Mon Mar 08 2004 - mmj@suse.de
 - Enable build of replay [#35434]
-* Wed Feb 25 2004 mmj@suse.de
+* Wed Feb 25 2004 - mmj@suse.de
 - Use loop-AES-v2.0f-util-linux-2.12.diff instead of losetup patch
   added earlier. Thanks Sumit Bose!
-* Thu Feb 19 2004 mmj@suse.de
+* Thu Feb 19 2004 - mmj@suse.de
 - Add cryptsetup script from Christophe Saout, for usage with the
   new dm-crypt.
-* Mon Feb 16 2004 mmj@suse.de
+* Mon Feb 16 2004 - mmj@suse.de
 - Add losetup patch and hashalot program from Ben Slusky
-* Sun Feb 01 2004 kukuk@suse.de
+* Sun Feb 01 2004 - kukuk@suse.de
 - Remove newgrp again (will use POSIX conform version)
-* Fri Jan 16 2004 kukuk@suse.de
+* Fri Jan 16 2004 - kukuk@suse.de
 - Add pam-devel to neededforbuild
-* Mon Jan 12 2004 mmj@suse.de
+* Mon Jan 12 2004 - mmj@suse.de
 - Adjust the nfs.5 manual page to reflect we're mounting nfs over
   tcp pr. default.
 - Collapse two similar patches 2 one.
-* Fri Dec 19 2003 garloff@suse.de
+* Fri Dec 19 2003 - garloff@suse.de
 - Fix by okir for previous patch.
-* Fri Dec 19 2003 garloff@suse.de
+* Fri Dec 19 2003 - garloff@suse.de
 - Add patch to fallback to UDP if TCP NFS mount fails.
-* Tue Dec 02 2003 mmj@suse.de
+* Tue Dec 02 2003 - mmj@suse.de
 - Make patch to guess if a CD is a CD-Extra [#30316]
 - Adjust patch that moves ext2/3 in front of vfat
 - Regenerate patches (filename still tells when they were added)
-* Tue Nov 18 2003 mmj@suse.de
+* Tue Nov 18 2003 - mmj@suse.de
 - Mount NFS over TCP pr. default [#33018]
-* Thu Nov 13 2003 mmj@suse.de
+* Thu Nov 13 2003 - mmj@suse.de
 - Update to util-linux-2.12 including:
   o losetup: -p option specifies fd for passphrase
   o fdisk: sgi layout fix
@@ -1222,64 +1172,64 @@ fi
   o sfdisk.8: added an example of partitioning with logical partitions
   o sfdisk: only add a AA55 signature for DOS-type partition tables
   o tailf: new
-* Tue Oct 21 2003 mmj@suse.de
+* Tue Oct 21 2003 - mmj@suse.de
 - Correct permissions
-* Tue Oct 21 2003 ja@suse.cz
+* Tue Oct 21 2003 - ja@suse.cz
 - added support for cryptoloop in 2.6.x kernels.
-* Wed Oct 15 2003 mmj@suse.de
+* Wed Oct 15 2003 - mmj@suse.de
 - Don't build as root
-* Mon Oct 13 2003 kukuk@suse.de
+* Mon Oct 13 2003 - kukuk@suse.de
 - Enable newgrp
-* Thu Oct 02 2003 kukuk@suse.de
+* Thu Oct 02 2003 - kukuk@suse.de
 - Fix compiling with kernel 2.6.0-test6 header files
-* Tue Aug 12 2003 mmj@suse.de
+* Tue Aug 12 2003 - mmj@suse.de
 - Update to pmac-utils-2.1 sources and only include nvsetenv
-* Tue Aug 12 2003 mmj@suse.de
+* Tue Aug 12 2003 - mmj@suse.de
 - Add mount_guessfstype support for PCDOS [#27814]
-* Wed Jun 18 2003 ak@suse.de
+* Wed Jun 18 2003 - ak@suse.de
 - support noreserved option for NFS (#27428)
-* Thu Jun 05 2003 mmj@suse.de
+* Thu Jun 05 2003 - mmj@suse.de
 - Rearrange the specfile wrt. archs
-* Tue May 13 2003 mmj@suse.de
+* Tue May 13 2003 - mmj@suse.de
 - Use %%defattr
 - Remove files we don't package
-* Wed May 07 2003 mmj@suse.de
+* Wed May 07 2003 - mmj@suse.de
 - Rearrange the do_guess_fstype() code to look for ext2/3 before
   vfat [#26581]
-* Thu Apr 24 2003 ro@suse.de
+* Thu Apr 24 2003 - ro@suse.de
 - fix install_info --delete call and move from preun to postun
-* Mon Apr 14 2003 pthomas@suse.de
+* Mon Apr 14 2003 - pthomas@suse.de
 - Get rid of the syscall for adjtimex in selective cases and
   just call the glibc wrapper. Fixes build on s390.
-* Mon Apr 14 2003 pthomas@suse.de
+* Mon Apr 14 2003 - pthomas@suse.de
 - Use geteuid instead of getuid in hwclock to enable making
   hwclock suid root.
-* Mon Apr 07 2003 mmj@suse.de
+* Mon Apr 07 2003 - mmj@suse.de
 - Only delete info entries when removing last version.
-* Thu Mar 13 2003 mmj@suse.de
+* Thu Mar 13 2003 - mmj@suse.de
 - Apply patch to make sfdisk not destroy BSD slices [#25093]
-* Mon Mar 03 2003 mmj@suse.de
+* Mon Mar 03 2003 - mmj@suse.de
 - Remove superflous umask(033); calls [#23292]
-* Mon Mar 03 2003 ro@suse.de
+* Mon Mar 03 2003 - ro@suse.de
 - add missing info dir entries
-* Tue Feb 18 2003 agruen@suse.de
+* Tue Feb 18 2003 - agruen@suse.de
 - Add description of the effect of `mount -t nfs -o noacl' on
   the use of the GETACL and SETACL remote procedure calls to
   the nfs(5) manual page.
-* Mon Feb 17 2003 mmj@suse.de
+* Mon Feb 17 2003 - mmj@suse.de
 - It's called smbfs not smb [#23697]
-* Thu Feb 13 2003 mmj@suse.de
+* Thu Feb 13 2003 - mmj@suse.de
 - Readd patch for passphrase timeout that got lost [#23527]
-* Fri Feb 07 2003 mmj@suse.de
+* Fri Feb 07 2003 - mmj@suse.de
 - The install_info macros need PreReq: %%install_info_prereq
-* Fri Feb 07 2003 ro@suse.de
+* Fri Feb 07 2003 - ro@suse.de
 - added install_info macros
-* Tue Feb 04 2003 ro@suse.de
+* Tue Feb 04 2003 - ro@suse.de
 - don't package /bin/kill (part of coreutils now)
-* Tue Feb 04 2003 meissner@suse.de
+* Tue Feb 04 2003 - meissner@suse.de
 - Include tarball with pmac-utils manpages, so we do not need
   sgmltool and all its dependents.
-* Wed Jan 29 2003 mmj@suse.de
+* Wed Jan 29 2003 - mmj@suse.de
 - Update to util-linux-2.11z including:
   � Translation updates
   � mount: fix LABEL= handling for user umount, don't abort on read
@@ -1287,22 +1237,22 @@ fi
   � setterm: accept devfs name
   � simpleinit: security: refuse initctl_fd if FD_CLOEXEC fails
   � umount: allow user umount after mount by label or uuid
-* Wed Jan 22 2003 sf@suse.de
+* Wed Jan 22 2003 - sf@suse.de
 - removed last patch, added new (correct) patch
-* Wed Jan 22 2003 sf@suse.de
+* Wed Jan 22 2003 - sf@suse.de
 - removed eliminate_doubles() from mkfs.cramfs.c
   for x86_64, as it segfaults.
   (makes the images slightly larger, about 10%%)
-* Tue Jan 21 2003 mmj@suse.de
+* Tue Jan 21 2003 - mmj@suse.de
 - Added description of ISO mount options to mount.8 [#22915]
-* Mon Dec 02 2002 mmj@suse.de
+* Mon Dec 02 2002 - mmj@suse.de
 - Update the ReiserFS patch from Chris Mason
-* Fri Nov 29 2002 mmj@suse.de
+* Fri Nov 29 2002 - mmj@suse.de
 - Fix missing #include <errno.h>
-* Thu Nov 28 2002 mmj@suse.de
+* Thu Nov 28 2002 - mmj@suse.de
 - Make readprofile also try to locate the System.map in
   /boot/System.map-`uname -r` [#22168]
-* Wed Nov 27 2002 mmj@suse.de
+* Wed Nov 27 2002 - mmj@suse.de
 - Update to util-linux-2.11y including:
   o Translation updates
   o fdisk,cfdisk: cosmetic fixes
@@ -1310,7 +1260,7 @@ fi
   o more: kill external help file
   o simpleinit: security: refuse initctl_fd if setting FD_CLOEXEC
   fails (patch we had, now folded upstream)
-* Wed Nov 20 2002 mmj@suse.de
+* Wed Nov 20 2002 - mmj@suse.de
 - Update to util-linux-2.11x including:
   o Translation updates for several languages
   o cfdisk: correct error printout
@@ -1323,56 +1273,56 @@ fi
   o setpwnam.c: open temp pw file with O_EXCL
   o simpleinit: fix for "spawn too fast"
   o swapon: new -e option
-* Tue Nov 19 2002 mmj@suse.de
+* Tue Nov 19 2002 - mmj@suse.de
 - Fix multistring assignment in adjtimex
-* Mon Nov 11 2002 ro@suse.de
+* Mon Nov 11 2002 - ro@suse.de
 - changed neededforbuild <sp> to <opensp>
 - changed neededforbuild <sp-devel> to <>
-* Thu Oct 31 2002 mmj@suse.de
+* Thu Oct 31 2002 - mmj@suse.de
 - Add -b option to mkfs.cramfs (needed for biarch architectures)
-* Thu Oct 31 2002 ro@suse.de
+* Thu Oct 31 2002 - ro@suse.de
 - hack time to build on alpha
-* Tue Oct 22 2002 mmj@suse.de
+* Tue Oct 22 2002 - mmj@suse.de
 - Add correction to the ReiserFS patch that fixes the case where it
   was possible but unlikely to detect a logged copy of a super on a
   dedicated logging device as the real thing. From Chris Mason.
-* Tue Oct 22 2002 mmj@suse.de
+* Tue Oct 22 2002 - mmj@suse.de
 - Update to util-linux-2.11w including:
   o fdisk and cfdisk fixes
   o more bigendian fix
   o translation updates
   o > 2GB swapspace
   o mount umask, cramfs and ocfs stuff
-* Tue Oct 08 2002 mmj@suse.de
+* Tue Oct 08 2002 - mmj@suse.de
 - Only enable below patch on ix86 and x86_64
-* Mon Oct 07 2002 mmj@suse.de
+* Mon Oct 07 2002 - mmj@suse.de
 - Make small bugfix to below patch
-* Sat Oct 05 2002 mmj@suse.de
+* Sat Oct 05 2002 - mmj@suse.de
 - Apply patch to enable > 2GB swap (redhat) [#20533]
-* Wed Oct 02 2002 mmj@suse.de
+* Wed Oct 02 2002 - mmj@suse.de
 - Add one-liner security fix to mount and umount.
-* Mon Sep 23 2002 mmj@suse.de
+* Mon Sep 23 2002 - mmj@suse.de
 - Readd fix for klogconsole that got lost [#19834]
-* Fri Sep 13 2002 mmj@suse.de
+* Fri Sep 13 2002 - mmj@suse.de
 - Added patch from Oracle to mount ocfs by label [#19262]
-* Thu Sep 12 2002 mmj@suse.de
+* Thu Sep 12 2002 - mmj@suse.de
 - more: Do not cast char * to int and back [#18896]
-* Sat Aug 31 2002 olh@suse.de
+* Sat Aug 31 2002 - olh@suse.de
 - add mount_cramfs_be.diff to allow mount -oloop cramfsfile loopdir
-* Mon Aug 26 2002 mmj@suse.de
+* Mon Aug 26 2002 - mmj@suse.de
 - Make mode not 666 when writing /etc/mtab [#18342]
-* Mon Aug 26 2002 meissner@suse.de
+* Mon Aug 26 2002 - meissner@suse.de
 - quieten klogconsole if the console does not support TIOCLINUX [#12516]
-* Thu Aug 22 2002 mmj@suse.de
+* Thu Aug 22 2002 - mmj@suse.de
 - Added patch from Andreas Gruenbacher for nfs-access-acl [#18183]
-* Wed Aug 21 2002 mmj@suse.de
+* Wed Aug 21 2002 - mmj@suse.de
 - Fixed an mtab locking bug with patch from Olaf Kirch [#17637]
-* Mon Aug 19 2002 mmj@suse.de
+* Mon Aug 19 2002 - mmj@suse.de
 - Updated reiserfs patch from Chris Mason
 - Added patch for mount.8, thanks Andreas Gruenbacher
-* Thu Aug 15 2002 mmj@suse.de
+* Thu Aug 15 2002 - mmj@suse.de
 - Correct PreReq:
-* Mon Aug 05 2002 mmj@suse.de
+* Mon Aug 05 2002 - mmj@suse.de
 - Update to 2.11u which includes:
   o Danish, German, Spanish, Swedish and Turkish updates.
   o configure: for fsck.cramfs, mkfs.cramfs: add test for libz
@@ -1380,22 +1330,22 @@ fi
   o agetty: use same test as login does to find utmp entry
   o fdisk: fix for fdisk on empty disk
   o mount updates
-* Tue Jul 23 2002 schwab@suse.de
+* Tue Jul 23 2002 - schwab@suse.de
 - Fix mkfs.cramfs for architectures with non-4k pages.
-* Wed Jul 17 2002 mmj@suse.de
+* Wed Jul 17 2002 - mmj@suse.de
 - Merged base into util-linux
-* Mon Jul 15 2002 mmj@suse.de
+* Mon Jul 15 2002 - mmj@suse.de
 - Added JFSv2 patch from Christoph Hellwig for volume label. Does
   for JFS, what below patch does for ReiserFS.
-* Sun Jul 14 2002 adrian@suse.de
+* Sun Jul 14 2002 - adrian@suse.de
 - fix ul-2.10m-sgi-fdisk.diff patch to apply again
-* Thu Jul 11 2002 mmj@suse.de
+* Thu Jul 11 2002 - mmj@suse.de
 - Added patch from Chris Mason for volume label on reiserfs
-* Wed Jul 10 2002 olh@suse.de
+* Wed Jul 10 2002 - olh@suse.de
 - add mkfs.cramfs and fsck.cramfs to file list
-* Wed Jul 10 2002 mmj@suse.de
+* Wed Jul 10 2002 - mmj@suse.de
 - Fixed nfs.5 to tell nfsver defaults to 3 [#16815]
-* Mon Jul 08 2002 mmj@suse.de
+* Mon Jul 08 2002 - mmj@suse.de
 - Update to 2.11t which includes
   * fdformat: remove test on major
   * fdisk, hwclock and swap polishing
@@ -1403,340 +1353,340 @@ fi
   * cramfs tools includes from the kernel
   * swap{on,off} honours /proc/swaps
   * mount small fixups
-* Fri Jul 05 2002 kukuk@suse.de
+* Fri Jul 05 2002 - kukuk@suse.de
 - Use %%ix86 macro
-* Mon Jul 01 2002 bk@suse.de
+* Mon Jul 01 2002 - bk@suse.de
 - get raw built on s390 and s390x
 - remove %%ifarchs s390 s390x for fdisk(needed for SCSI disks)
-* Mon Jun 17 2002 mmj@suse.de
+* Mon Jun 17 2002 - mmj@suse.de
 - Added a fix for simpleinit exploit.
-* Thu Jun 13 2002 olh@suse.de
+* Thu Jun 13 2002 - olh@suse.de
 - disable hwclock ppc patch, maybe obsolete with recent kernels
-* Thu May 16 2002 mmj@suse.de
+* Thu May 16 2002 - mmj@suse.de
 - Added manpage guessfstype(8)
-* Thu May 09 2002 mmj@suse.de
+* Thu May 09 2002 - mmj@suse.de
 - Updated to util-linux-2.11r, including translations, x86-64 sup-
   port and small bugfixes.
-* Sat Apr 13 2002 mmj@suse.de
+* Sat Apr 13 2002 - mmj@suse.de
 - Updated to util-linux-2.11q, includes bugfixes.
 - util-linux-mkswap.patch for ia64 was folded into mainline
-* Fri Apr 12 2002 stepan@suse.de
+* Fri Apr 12 2002 - stepan@suse.de
 - added x86-64 support.
-* Thu Apr 04 2002 ihno@suse.de
+* Thu Apr 04 2002 - ihno@suse.de
 - corrected printf to report shared memories sizes bigger than
   2 GByte correct (Bug #15585). It was reportet on s390x, but
   should effect other 64-Bit systems as well.
-* Tue Mar 19 2002 mmj@suse.de
+* Tue Mar 19 2002 - mmj@suse.de
 - Updated to 2.11o. The hexdump patch have been dropped since it
   was folded to mainline util-linux.
-* Fri Mar 15 2002 schwab@suse.de
+* Fri Mar 15 2002 - schwab@suse.de
 - Fix mkswap for ia64.
-* Mon Mar 04 2002 draht@suse.de
+* Mon Mar 04 2002 - draht@suse.de
 - permissions fixes for write(1) and wall(1)
-* Fri Feb 01 2002 mmj@suse.de
+* Fri Feb 01 2002 - mmj@suse.de
 - Moved /usr/bin/logger to /bin/logger (needed by sysconfig)
-* Mon Jan 28 2002 mmj@suse.de
+* Mon Jan 28 2002 - mmj@suse.de
 - Added the guessfstype binary from msvec/fehr
-* Thu Jan 24 2002 ro@suse.de
+* Thu Jan 24 2002 - ro@suse.de
 - modified fillup_and_insserv call (perl-hack not needed here)
-* Mon Jan 21 2002 mmj@suse.de
+* Mon Jan 21 2002 - mmj@suse.de
 - Merge NetBSD hexdump changes, fixes bugzilla #12801
-* Thu Jan 10 2002 ro@suse.de
+* Thu Jan 10 2002 - ro@suse.de
 - removed ACTIVATE_RAW_DEV
-* Mon Dec 31 2001 adrian@suse.de
+* Mon Dec 31 2001 - adrian@suse.de
 - add patch for mips to create SGI partition tables with fdisk
-* Tue Dec 18 2001 bjacke@suse.de
+* Tue Dec 18 2001 - bjacke@suse.de
 - add adjtimex
-* Mon Dec 10 2001 mmj@suse.de
+* Mon Dec 10 2001 - mmj@suse.de
 - Update to util-linux-2.11n
-* Tue Nov 20 2001 mmj@suse.de
+* Tue Nov 20 2001 - mmj@suse.de
 - Added a patch to 'wall' to remove unwanted newline (#12181)
-* Wed Nov 07 2001 kukuk@suse.de
+* Wed Nov 07 2001 - kukuk@suse.de
 - Remove unneeded SPARC patch for hwclock
-* Sat Oct 13 2001 kukuk@suse.de
+* Sat Oct 13 2001 - kukuk@suse.de
 - Update to util-linux 2.11l
-* Wed Sep 12 2001 garloff@suse.de
+* Wed Sep 12 2001 - garloff@suse.de
 - Fixed some dutch translations. (bug #10276)
-* Mon Sep 10 2001 olh@suse.de
+* Mon Sep 10 2001 - olh@suse.de
 - marry fdisk and AIX label again...
   add lsprop for ppc
   dumps the device tree in a human readable format
-* Mon Sep 03 2001 kukuk@suse.de
+* Mon Sep 03 2001 - kukuk@suse.de
 - Update to version 2.11i:
   - blockdev: corrected ioctl numbers
   - cal: fixed for multibyte locales
   - line: new
   - mount: added vxfs magic
-* Sat Sep 01 2001 kukuk@suse.de
+* Sat Sep 01 2001 - kukuk@suse.de
 - Let mount follow symlinks again
-* Wed Aug 29 2001 kukuk@suse.de
+* Wed Aug 29 2001 - kukuk@suse.de
 - Add new option to losetup manual page
-* Tue Aug 28 2001 draht@suse.de
+* Tue Aug 28 2001 - draht@suse.de
 - added timeout support for losetup (-t <timeout>)
-* Mon Aug 27 2001 kukuk@suse.de
+* Mon Aug 27 2001 - kukuk@suse.de
 - Add raw rc scripts, too
-* Sun Aug 26 2001 bjacke@suse.de
+* Sun Aug 26 2001 - bjacke@suse.de
 - added raw binary and put rawio into obsoletes and provides
-* Sat Aug 25 2001 kukuk@suse.de
+* Sat Aug 25 2001 - kukuk@suse.de
 - Fix path in getopt.1 manual page to example directory [Bug #9831]
-* Fri Aug 24 2001 kukuk@suse.de
+* Fri Aug 24 2001 - kukuk@suse.de
 - Small fix for hwclock on newer SPARCs
-* Mon Aug 13 2001 ro@suse.de
+* Mon Aug 13 2001 - ro@suse.de
 - changed neededforbuild <sp_libs> to <sp-devel>
-* Mon Jul 30 2001 kukuk@suse.de
+* Mon Jul 30 2001 - kukuk@suse.de
 - Update to util-linux-2.11h
 - Add nologin program
-* Tue Jul 10 2001 kukuk@suse.de
+* Tue Jul 10 2001 - kukuk@suse.de
 - Remove swapdev from filelist
-* Tue Jul 10 2001 kukuk@suse.de
+* Tue Jul 10 2001 - kukuk@suse.de
 - Update to util-linux-2.11g
-* Thu Jun 07 2001 bk@suse.de
+* Wed Jun 06 2001 - bk@suse.de
 - added s390x to all ifnarch s390
-* Fri Apr 20 2001 kukuk@suse.de
+* Fri Apr 20 2001 - kukuk@suse.de
 - Fix wall bug (character 80, 160, 240, are missing) [Bug #6962]
-* Mon Mar 26 2001 kukuk@suse.de
+* Mon Mar 26 2001 - kukuk@suse.de
 - Add exception for broken i2o disk device numbering scheme, kernel
   hacker are not able to fix this and make it right [Bug #5881].
-* Sat Mar 24 2001 kukuk@suse.de
+* Sat Mar 24 2001 - kukuk@suse.de
 - Update to util-linux 2.11b
-* Thu Mar 15 2001 kukuk@suse.de
+* Thu Mar 15 2001 - kukuk@suse.de
 - Fix changing of partitions with ID 0 on SPARC
 - Remove duplicate mount patch
-* Wed Mar 14 2001 schwab@suse.de
+* Wed Mar 14 2001 - schwab@suse.de
 - Don't use _syscallX on ia64.
 - Fix missing includes.
-* Wed Mar 14 2001 kukuk@suse.de
+* Wed Mar 14 2001 - kukuk@suse.de
 - Update to version 2.11a
-* Fri Mar 02 2001 kukuk@suse.de
+* Fri Mar 02 2001 - kukuk@suse.de
 - enable write again
-* Mon Feb 12 2001 kukuk@suse.de
+* Mon Feb 12 2001 - kukuk@suse.de
 - cmos.c: Use sys/io.h, fix PowerPC hack
-* Tue Feb 06 2001 ro@suse.de
+* Tue Feb 06 2001 - ro@suse.de
 - wall.c: include time.h
-* Mon Feb 05 2001 kukuk@suse.de
+* Mon Feb 05 2001 - kukuk@suse.de
 - Split hex to extra package
 - Update to util-linux-2.10s
-* Fri Feb 02 2001 werner@suse.de
+* Fri Feb 02 2001 - werner@suse.de
 - Make swapon/swapoff more handy:
   * Ignore swap files on ro mounted file systems
   * If -a is given ignore already active devices at swapon
   * If -a is given ignore not active devices at swapoff
-* Thu Jan 25 2001 ro@suse.de
+* Thu Jan 25 2001 - ro@suse.de
 - added Provides: util
-* Fri Jan 12 2001 garloff@suse.de
+* Fri Jan 12 2001 - garloff@suse.de
 - Apply patch to lomount to allow all kerneli crypt algos to be
   passed and allow to pass passwd with -k.
 - losetup seems to support >2GB files just fine (#5433)
-* Tue Jan 02 2001 kukuk@suse.de
+* Tue Jan 02 2001 - kukuk@suse.de
 - Save permissions of /etc/mtab [Bug #5027]
-* Tue Dec 05 2000 kukuk@suse.de
+* Tue Dec 05 2000 - kukuk@suse.de
 - Search first in /etc/filesystems, then in /proc/filesystems
-* Tue Dec 05 2000 kukuk@suse.de
+* Tue Dec 05 2000 - kukuk@suse.de
 - Use AIX/fdisk patch from util-linux-2.10r
 - Backport "guess filesystems" from util-linux-2.10r
-* Tue Dec 05 2000 schwab@suse.de
+* Tue Dec 05 2000 - schwab@suse.de
 - Don't use _syscallX on ia64.
-* Mon Dec 04 2000 olh@suse.de
+* Mon Dec 04 2000 - olh@suse.de
 - fix diff again
-* Sun Dec 03 2000 olh@suse.de
+* Sun Dec 03 2000 - olh@suse.de
 - no segfaults with AIX disklabels
-* Wed Nov 29 2000 uli@suse.de
+* Wed Nov 29 2000 - uli@suse.de
 - fixed to build on PPC
-* Mon Nov 27 2000 schwab@suse.de
+* Mon Nov 27 2000 - schwab@suse.de
 - Fix broken casts in hwclock.
-* Thu Nov 23 2000 bk@suse.de
+* Thu Nov 23 2000 - bk@suse.de
 - temporary disable pivot_root on s390(2.4 kernel is not yet built)
-* Wed Nov 22 2000 schwab@suse.de
+* Wed Nov 22 2000 - schwab@suse.de
 - Add pivot_root to file list.
-* Mon Nov 20 2000 kukuk@suse.de
+* Mon Nov 20 2000 - kukuk@suse.de
 - Fix pmac-utils to compile with new kernel
-* Fri Nov 17 2000 kukuk@suse.de
+* Fri Nov 17 2000 - kukuk@suse.de
 - Fix hwclock to compile on PPC
-* Wed Nov 15 2000 kukuk@suse.de
+* Wed Nov 15 2000 - kukuk@suse.de
 - Update util-linux to 2.10q, merge flushb.diff
-* Thu Nov 02 2000 kukuk@suse.de
+* Thu Nov 02 2000 - kukuk@suse.de
 - Remove some of the last specfile changes
-* Wed Nov 01 2000 olh@suse.de
+* Wed Nov 01 2000 - olh@suse.de
 - update pmac-utils for new powermacs, cleanup specfile
-* Fri Oct 20 2000 kukuk@suse.de
+* Fri Oct 20 2000 - kukuk@suse.de
 - Update util-linux to 2.10p
 - Rename package from util to util-linux
-* Wed Sep 27 2000 kukuk@suse.de
+* Wed Sep 27 2000 - kukuk@suse.de
 - Allow NFS v3 with 2.2.17.SuSE
-* Tue Sep 26 2000 kukuk@suse.de
+* Tue Sep 26 2000 - kukuk@suse.de
 - Fix mount for new NFS kernel patch
-* Sat Sep 09 2000 kukuk@suse.de
+* Sat Sep 09 2000 - kukuk@suse.de
 - Remove tcsh dependency
 - Update to util-linux 2.10o, use of /etc/filesystems is still broken
-* Fri Aug 25 2000 pthomas@suse.de
+* Fri Aug 25 2000 - pthomas@suse.de
 - use %%{_mandir} and %%{_infodir} exclusively. This allows building
   from source rpm on platforms other than 7.0.
-* Wed Jul 19 2000 bk@suse.de
+* Wed Jul 19 2000 - bk@suse.de
 - s390: removed dasdfmt and silo, %%ifnarch s390 for some non-s390 things.
-* Tue May 30 2000 bk@suse.de
+* Tue May 30 2000 - bk@suse.de
 - added dasdfmt and silo on s390
-* Mon May 15 2000 kukuk@suse.de
+* Mon May 15 2000 - kukuk@suse.de
 - util-linux: Update to 2.10m
-* Wed Apr 26 2000 kukuk@suse.de
+* Wed Apr 26 2000 - kukuk@suse.de
 - flusb: Don't use kernel headers, even if we don't need them!
-* Wed Apr 19 2000 kukuk@suse.de
+* Wed Apr 19 2000 - kukuk@suse.de
 - util-linux: Update to 2.10l
-* Mon Apr 17 2000 kukuk@suse.de
+* Mon Apr 17 2000 - kukuk@suse.de
 - util-linux: Update to 2.10k
-* Thu Apr 13 2000 kukuk@suse.de
+* Thu Apr 13 2000 - kukuk@suse.de
 - Move /sbin/setserial to /bin/setserial, add compat link to
   /sbin. This fixes [Bug 1084] and is necessary for FHS 2.1
-* Wed Apr 12 2000 kukuk@suse.de
+* Wed Apr 12 2000 - kukuk@suse.de
 - Fix util-linux for Alpha
-* Wed Apr 12 2000 kukuk@suse.de
+* Wed Apr 12 2000 - kukuk@suse.de
 - util-linux: Update to 2.10j
-* Sun Apr 02 2000 bk@suse.de
+* Sun Apr 02 2000 - bk@suse.de
 - suse s390 team added support for s390
-* Thu Mar 30 2000 uli@suse.de
+* Thu Mar 30 2000 - uli@suse.de
 - hwclock/PPC: added support for MK48T559 RTC chip used in MTX+ boards
-* Fri Mar 24 2000 kukuk@suse.de
+* Fri Mar 24 2000 - kukuk@suse.de
 - Add Linux LVM partition tag to fdisk
 - Fix a lot of more possible buffer overruns
 - Fix some fdisk sunlabel bugs
 - added BuildRoot fixes from nadvorni@suse.cz
-* Wed Mar 22 2000 kukuk@suse.de
+* Wed Mar 22 2000 - kukuk@suse.de
 - Update util-linux to 2.10h
 - Add clock again for non PPC platforms
-* Fri Mar 17 2000 uli@suse.de
+* Fri Mar 17 2000 - uli@suse.de
 - now contains both hwclock and clock on PPC (/sbin/init.d/boot
   chooses what to run at runtime)
-* Tue Mar 14 2000 schwab@suse.de
+* Tue Mar 14 2000 - schwab@suse.de
 - Add support for ia64.
-* Thu Mar 09 2000 kukuk@suse.de
+* Thu Mar 09 2000 - kukuk@suse.de
 - fdisk: Fix -l for Mylex RAID controller
-* Tue Mar 07 2000 kukuk@suse.de
+* Tue Mar 07 2000 - kukuk@suse.de
 - etc/filesystems: Add minix and reiserfs
-* Tue Mar 07 2000 kukuk@suse.de
+* Tue Mar 07 2000 - kukuk@suse.de
 - mount: fix endian problem with minix fs
-* Tue Feb 15 2000 kukuk@suse.de
+* Tue Feb 15 2000 - kukuk@suse.de
 - mount: Add hack for PPC/syscall mount problem
-* Sun Feb 13 2000 bk@suse.de
+* Sun Feb 13 2000 - bk@suse.de
 - let rdev continue in case it stubles over a bad file in /dev (/dev/snd fix)
-* Fri Feb 04 2000 kukuk@suse.de
+* Fri Feb 04 2000 - kukuk@suse.de
 - Make PPC clock parameter compatible to hwclock
-* Thu Feb 03 2000 kukuk@suse.de
+* Thu Feb 03 2000 - kukuk@suse.de
 - Fix filelist for SPARC
-* Thu Feb 03 2000 kukuk@suse.de
+* Thu Feb 03 2000 - kukuk@suse.de
 - util-linux: Update to 2.10f (mount security fix)
-* Sun Jan 23 2000 kukuk@suse.de
+* Sun Jan 23 2000 - kukuk@suse.de
 - util-linux: Update to 2.10e
-* Tue Jan 18 2000 kukuk@suse.de
+* Tue Jan 18 2000 - kukuk@suse.de
 - mount now looks at first in /etc/filesystems and then in
   /proc/filesystems
-* Tue Jan 18 2000 ro@suse.de
+* Tue Jan 18 2000 - ro@suse.de
 - fixed pmac-utils to build with 2.3 as well
-* Tue Jan 18 2000 kukuk@suse.de
+* Tue Jan 18 2000 - kukuk@suse.de
 - Fix a lot of fdisk buffer overruns [Bug 1642]
-* Mon Jan 17 2000 kukuk@suse.de
+* Mon Jan 17 2000 - kukuk@suse.de
 - Fix setserial for Linux 2.3.40
 - Remove write, is now in nkitb
 - Build minix and bfs tools for SPARC
 - Fix some buffer overflows in fdisk
-* Fri Dec 17 1999 kukuk@suse.de
+* Fri Dec 17 1999 - kukuk@suse.de
 - util-linux: Update to 2.10d
 - hex: Update to 1.2
 - Move manual pages to /usr/share/man
-* Tue Nov 30 1999 uli@suse.de
+* Tue Nov 30 1999 - uli@suse.de
 - re-added hwclock link for PPC (2nd try)
-* Tue Nov 30 1999 uli@suse.de
+* Tue Nov 30 1999 - uli@suse.de
 - re-added hwclock link for PPC
-* Mon Nov 15 1999 kukuk@suse.de
+* Mon Nov 15 1999 - kukuk@suse.de
 - util-linux: Update to 2.10b
-* Sat Nov 13 1999 kukuk@suse.de
+* Sat Nov 13 1999 - kukuk@suse.de
 - setserial: Add Patch for Sparc
 - Fix filelist for Sparc
-* Wed Oct 27 1999 garloff@suse.de
+* Wed Oct 27 1999 - garloff@suse.de
 - added flushb (moved here from ddrescue).
 - fix bug in logger (remove trailing newlines).
-* Fri Oct 22 1999 kukuk@suse.de
+* Fri Oct 22 1999 - kukuk@suse.de
 - util-linux: Remove old patches for mk_loop_h
-* Sat Oct 16 1999 kukuk@suse.de
+* Sat Oct 16 1999 - kukuk@suse.de
 - util-linux: Update to 2.9z
-* Fri Oct 08 1999 kukuk@suse.de
+* Fri Oct 08 1999 - kukuk@suse.de
 - Update to util-linux-2.9y (execpt fdisk)
-* Tue Sep 14 1999 uli@suse.de
+* Tue Sep 14 1999 - uli@suse.de
 - added PMac-specific utils for PPC
-* Mon Sep 13 1999 bs@suse.de
+* Mon Sep 13 1999 - bs@suse.de
 - ran old prepare_spec on spec file to switch to new prepare_spec.
-* Thu Aug 26 1999 uli@suse.de
+* Thu Aug 26 1999 - uli@suse.de
 - disabled hayesesp for PPC
-* Wed Aug 25 1999 kukuk@suse.de
+* Wed Aug 25 1999 - kukuk@suse.de
 - Don�t install tsort, its now in textutils 2.0
-* Tue Aug 24 1999 kukuk@suse.de
+* Tue Aug 24 1999 - kukuk@suse.de
 - Update to util-linux-2.9w (execpt fdisk)
-* Mon Aug 09 1999 kukuk@suse.de
+* Mon Aug 09 1999 - kukuk@suse.de
 - Update to util-linux-2.9v (execpt fdisk)
-* Tue Jul 20 1999 garloff@suse.de
+* Tue Jul 20 1999 - garloff@suse.de
 - Added hex from Erich S. Raymond
-* Mon Jul 12 1999 kukuk@suse.de
+* Mon Jul 12 1999 - kukuk@suse.de
 - Add fdisk patch from Klaus G. Wagner
 - Add mount patch from util-linux 2.9u
-* Tue Jul 06 1999 kukuk@suse.de
+* Tue Jul 06 1999 - kukuk@suse.de
 - update to util-linux-2.9t
-* Fri Jun 25 1999 kukuk@suse.de
+* Fri Jun 25 1999 - kukuk@suse.de
 - update to util-linux-2.9s
-* Wed Mar 03 1999 ro@suse.de
+* Wed Mar 03 1999 - ro@suse.de
 - hwclock.c: always use busywait to get rtctime
   (it's hard to find out at runtime if we will get an irq)
-* Tue Mar 02 1999 ro@suse.de
+* Tue Mar 02 1999 - ro@suse.de
 - update to util-linux-2.9i
 - update to setserial-2.15
 - using diffs from jurix and add-ons from kgw for compaq smart raid
-* Mon Feb 01 1999 ro@suse.de
+* Mon Feb 01 1999 - ro@suse.de
 - rdev is not built on alpha
-* Mon Jan 18 1999 florian@suse.de
+* Mon Jan 18 1999 - florian@suse.de
 - fixed one broken case to delete a partition in fdisk
-* Sun Dec 13 1998 bs@suse.de
+* Sun Dec 13 1998 - bs@suse.de
 - fixed file list
-* Thu Dec 10 1998 fehr@suse.de
+* Thu Dec 10 1998 - fehr@suse.de
 - fix bug in fdisk
-* Tue Dec 08 1998 ro@suse.de
+* Tue Dec 08 1998 - ro@suse.de
 - removed last from filelist
 - added link /sbin/clock -> hwclock
-* Wed Nov 04 1998 ro@suse.de
+* Wed Nov 04 1998 - ro@suse.de
 - fdisksunlabel: don't include scsi/scsi.h for glibc-2.0
-* Fri Oct 30 1998 ro@suse.de
+* Fri Oct 30 1998 - ro@suse.de
 - update to 2.9 / added hostid from previous diff
 - copied some glibc changes from previous diff (strcpy..)
-* Thu Sep 17 1998 ro@suse.de
+* Thu Sep 17 1998 - ro@suse.de
 - define _GNU_SOURCE when using getopt
-* Mon Aug 31 1998 ro@suse.de
+* Mon Aug 31 1998 - ro@suse.de
 - full switch to util-linux 2.8
 --  sync has moved to pkg fileutils
 --  chroot has moved to pkg sh_utils (has been there for a while)
 --  adopted hostid from previous suse-pkg
-* Mon Aug 24 1998 ro@suse.de
+* Mon Aug 24 1998 - ro@suse.de
 - switched to use mount from util-linux-2.8
-* Tue Jun 23 1998 ro@suse.de
+* Tue Jun 23 1998 - ro@suse.de
 - added fdisk, sfdisk, cfdisk from util-linux-2.8
   (including man-pages,readmes)
-* Mon Nov 17 1997 ro@suse.de
+* Mon Nov 17 1997 - ro@suse.de
 - changed /local/bin/perl5 in chkdupexe to /usr/bin/perl
-* Fri Oct 31 1997 ro@suse.de
+* Fri Oct 31 1997 - ro@suse.de
 - temporarily removed mount-hacker
-* Thu Oct 30 1997 florian@suse.de
+* Wed Oct 29 1997 - florian@suse.de
 - add changes from ms@suse.de for hostid.c
-* Tue May 20 1997 florian@suse.de
+* Tue May 20 1997 - florian@suse.de
 - only support kernel 2.0.x for nfs mounts, please use /bin/mount-hacker
   for kernel 2.1.x
-* Wed Apr 30 1997 florian@suse.de
+* Wed Apr 30 1997 - florian@suse.de
 - update to mount 2.6g
-* Mon Apr 14 1997 florian@suse.de
+* Sun Apr 13 1997 - florian@suse.de
 - update to new version util-linux 2.6
 - update to new version mount 2.6e
-* Thu Jan 02 1997 florian@suse.de
+* Thu Jan 02 1997 - florian@suse.de
 - update to mount 2.5p
-* Thu Jan 02 1997 florian@suse.de
+* Thu Jan 02 1997 - florian@suse.de
 - Update auf neue Version von mount 2.5o.
-* Thu Jan 02 1997 florian@suse.de
+* Thu Jan 02 1997 - florian@suse.de
 - updated to new version mount 2.5m
 - (u)mount now gives much better error messages
-* Thu Jan 02 1997 bs@suse.de
+* Thu Jan 02 1997 - bs@suse.de
   compile setterm with libtermcap and not libncurses
   use newer mount instead of the old version in util-linux
   (security fix)