--- /tmp/hashalot-0.1.0/hashalot.c	Fri Aug 22 16:07:07 2003
+++ hashalot.c	Sun Dec  7 17:46:35 2003
@@ -50,7 +50,14 @@
 	memset (tmp, 0, PASSWDBUFFLEN);        /* paranoia */
 	memset (key, 0, RMD160_HASH_SIZE * 2); /* paranoia */
 
-	return 0;
+	return HASHBUFFLEN;
+}
+
+static int
+phash_rmd160compat(char dest[HASHBUFFLEN], const char src[], size_t src_len)
+{
+	phash_rmd160(dest,src,src_len);
+	return 16;
 }
 
 static int
@@ -58,7 +65,7 @@
 {
 	memset(dest, 0, HASHBUFFLEN);
 	sha256_hash_buffer((char *) src, src_len, dest, HASHBUFFLEN);
-	return 0;
+	return HASHBUFFLEN;
 }
 
 static int
@@ -66,7 +73,7 @@
 {
 	memset(dest, 0, HASHBUFFLEN);
 	sha384_hash_buffer((char *) src, src_len, dest, HASHBUFFLEN);
-	return 0;
+	return HASHBUFFLEN;
 }
 
 static int
@@ -74,7 +81,7 @@
 {
 	memset(dest, 0, HASHBUFFLEN);
 	sha512_hash_buffer((char *) src, src_len, dest, HASHBUFFLEN);
-	return 0;
+	return HASHBUFFLEN;
 }
 
 struct func_table_t {
@@ -83,6 +90,7 @@
 } static func_table[] = {
 	{ "ripemd160",	phash_rmd160 },
 	{ "rmd160",	phash_rmd160 },
+	{ "rmd160compat", phash_rmd160compat },
 	{ "sha256",	phash_sha256 },
 	{ "sha384",	phash_sha384 },
 	{ "sha512",	phash_sha512 },
@@ -168,6 +176,7 @@
 {
 	char *pass, passhash[HASHBUFFLEN];
 	phash_func_t func;
+	int hashlen;
 
 	if (!(func = phash_lookup(basename(argv[0])))) 
 		/* lookup failed, so try argv[1] */
@@ -187,10 +196,10 @@
 
 	/* here we acquire the precious passphrase... */
 	pass = xgetpass("Enter passphrase: ");
-	func(passhash, pass, strlen(pass));
+	hashlen = func(passhash, pass, strlen(pass));
 	memset (pass, 0, strlen (pass)); /* paranoia */
 
-	if (write(STDOUT_FILENO, passhash, HASHBUFFLEN) != HASHBUFFLEN)
+	if (write(STDOUT_FILENO, passhash, hashlen) != hashlen)
 		perror("write()");
 
 	memset (passhash, 0, HASHBUFFLEN); /* paranoia again */
