diff --git a/Make.Rules b/Make.Rules
index b36f76a..d5151d3 100644
--- a/Make.Rules
+++ b/Make.Rules
@@ -14,17 +14,21 @@
 # Otherwise binaries and libraraies are installed in /{lib,sbin}/,
 # header files in /usr/include/ and documentation in /usr/man/man?/.
 
+ifndef lib
+lib=lib
+endif
+
 ifdef prefix
 exec_prefix=$(prefix)
 lib_prefix=$(exec_prefix)
 inc_prefix=$(lib_prefix)
-man_prefix=$(prefix)
+man_prefix=$(prefix)/share
 else
 prefix=/usr
 exec_prefix=
 lib_prefix=$(exec_prefix)
 inc_prefix=$(prefix)
-man_prefix=$(prefix)
+man_prefix=$(prefix)/share
 endif
 
 # Target directories
@@ -32,22 +36,22 @@
 MANDIR=$(FAKEROOT)$(man_prefix)/man
 SBINDIR=$(FAKEROOT)$(exec_prefix)/sbin
 INCDIR=$(FAKEROOT)$(inc_prefix)/include
-LIBDIR=$(FAKEROOT)$(lib_prefix)/lib
+LIBDIR=$(FAKEROOT)$(lib_prefix)/$(lib)
 
 # common defines for libcap (suitable for 2.2.1+ Linux kernels)
 VERSION=1
-MINOR=10
+MINOR=95
 #
 
 # Compilation specifics
 
 CC=gcc
 COPTFLAGS=-O2
-DEBUG=-g #-DDEBUG
-WARNINGS=-ansi -D_POSIX_SOURCE -Wall -Wwrite-strings \
+DEBUG=-O2 -g #-DDEBUG
+WARNINGS=-fPIC -D_POSIX_SOURCE -Wall -Wwrite-strings \
         -Wpointer-arith -Wcast-qual -Wcast-align \
-        -Wtraditional -Wstrict-prototypes -Wmissing-prototypes \
-        -Wnested-externs -Winline -Wshadow -pedantic
+        -Wstrict-prototypes -Wmissing-prototypes \
+        -Wnested-externs -Winline -Wshadow
 LD=ld
 LDFLAGS=-s #-g
 
diff --git a/README b/README
index 90971a6..7acef10 100644
--- a/README
+++ b/README
@@ -26,4 +26,4 @@
 
 Cheers
 
-Andrew G. Morgan <morgan@linux.kernel.org>
+Andrew G. Morgan <morgan@kernel.org>
diff --git a/doc/capget.2 b/doc/capget.2
index af428f5..6dd5dc7 100644
--- a/doc/capget.2
+++ b/doc/capget.2
@@ -1,6 +1,5 @@
 .\"
-.\" $Id: capget.2,v 1.1.1.1 1999/04/17 22:16:31 morgan Exp $
-.\" written by Andrew Morgan <morgan@linux.kernel.org>
+.\" written by Andrew Morgan <morgan@kernel.org>
 .\"
 .TH CAPGET 2 "17th May 1998" "Linux 2.1" "Linux Programmer's Manual"
 .SH NAME
diff --git a/libcap/Makefile b/libcap/Makefile
index 4572673..4af306b 100644
--- a/libcap/Makefile
+++ b/libcap/Makefile
@@ -1,26 +1,3 @@
-##
-## $Log: Makefile,v $
-## Revision 1.1.1.1  1999/04/17 22:16:31  morgan
-## release 1.0 of libcap
-##
-## Revision 1.5  1998/05/24 22:54:09  morgan
-## updated for 2.1.104
-##
-## Revision 1.4  1997/05/14 05:17:13  morgan
-## autoconf rearrangement from Zefram
-##
-## Revision 1.3  1997/05/04 05:34:59  morgan
-## cleaner
-##
-## Revision 1.2  1997/04/28 00:57:11  morgan
-## fixes and zefram's patches
-##
-## Revision 1.1  1997/04/21 04:33:29  morgan
-## Initial revision
-##
-##
-##
-
 #
 # defines
 #
@@ -56,13 +33,16 @@
 #	@sed -ne '/^#define[ \t]CAP[_A-Z]\+[ \t]\+[0-9]\+/{s/^#define CAP_\([^ \t]*\)[ \t]*\([^ \t]*\)/  \{ \2, \"\1\" \},/;y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/;p;}' < /usr/include/linux/capability.h | fgrep -v 0x > cap_names.sed
 
 $(MINLIBNAME): $(OBJS)
-	$(LD) -soname $(MAJLIBNAME) -x -shared -o $@ $(OBJS)
+	$(CC) -Wl,-soname -Wl,$(MAJLIBNAME) -Wl,-x -shared -o $@ $(OBJS)
 	ln -sf $(MINLIBNAME) $(MAJLIBNAME)
 	ln -sf $(MAJLIBNAME) $(LIBNAME)
 
 %.o: %.c $(INCLS)
 	$(CC) $(CFLAGS) -c $< -o $@
 
+cap_sys.o: cap_sys.c $(INCLS)
+	$(CC) -fPIC -Wall -O2 -c $< -o $@
+
 install: all
 	mkdir -p -m 0755 $(INCDIR)/sys
 	install -m 0644 include/sys/capability.h $(INCDIR)/sys
diff --git a/libcap/_makenames.c b/libcap/_makenames.c
index ebb17f6..61a7c47 100644
--- a/libcap/_makenames.c
+++ b/libcap/_makenames.c
@@ -1,7 +1,5 @@
 /*
- * $Id: _makenames.c,v 1.3 1999/05/14 04:46:15 morgan Exp $
- *
- * Copyright (c) 1997-8 Andrew G. Morgan <morgan@linux.kernel.org>
+ * Copyright (c) 1997-8 Andrew G. Morgan <morgan@kernel.org>
  *
  * This is a file to make the capability <-> string mappings for
  * libcap.
@@ -61,28 +59,3 @@
 
     exit(0);
 }
-
-/*
- * $Log: _makenames.c,v $
- * Revision 1.3  1999/05/14 04:46:15  morgan
- * another attempt to fix the bug Chris Evans found
- *
- * Revision 1.2  1999/05/14 04:38:06  morgan
- * Fix from Chris Evans: off by one error when computing the name array
- *
- * Revision 1.1.1.1  1999/04/17 22:16:31  morgan
- * release 1.0 of libcap
- *
- * Revision 1.4  1998/06/07 15:50:12  morgan
- * updated to accommodate kernel's real header file :*)
- *
- * Revision 1.3  1998/05/24 22:54:09  morgan
- * updated for 2.1.104
- *
- * Revision 1.2  1997/05/04 05:35:46  morgan
- * cleaned up to #include sed output. also generates whole cap_names.c file
- *
- * Revision 1.1  1997/04/28 00:57:11  morgan
- * Initial revision
- *
- */
diff --git a/libcap/cap_alloc.c b/libcap/cap_alloc.c
index 3d3168e..a3b22a7 100644
--- a/libcap/cap_alloc.c
+++ b/libcap/cap_alloc.c
@@ -1,9 +1,5 @@
 /*
- * $Id: cap_alloc.c,v 1.3 1999/11/18 07:23:24 morgan Exp $
- *
- * Copyright (c) 1997-8 Andrew G Morgan <morgan@linux.kernel.org>
- *
- * See end of file for Log.
+ * Copyright (c) 1997-8 Andrew G Morgan <morgan@kernel.org>
  *
  * This file deals with allocation and deallocation of internal
  * capability sets as specified by POSIX.1e (formerlly, POSIX 6).
@@ -97,6 +93,8 @@
 
 int cap_free(void *data_p)
 {
+    if ( !data_p )
+	return 0;
 
     if ( good_cap_t(data_p) ) {
 	data_p = -1 + (__u32 *) data_p;
@@ -119,25 +117,3 @@
     errno = EINVAL;
     return -1;
 }
-
-/*
- * $Log: cap_alloc.c,v $
- * Revision 1.3  1999/11/18 07:23:24  morgan
- * final fixes tested on a RH6.0 system for release-1.10
- *
- * Revision 1.2  1999/11/18 06:03:26  morgan
- * fixed cap_free to work as indicated in manuals
- *
- * Revision 1.1.1.1  1999/04/17 22:16:31  morgan
- * release 1.0 of libcap
- *
- * Revision 1.3  1998/05/24 22:54:09  morgan
- * updated for 2.1.104
- *
- * Revision 1.2  1997/04/28 00:57:11  morgan
- * fixes and zefram's patches
- *
- * Revision 1.1  1997/04/21 04:32:52  morgan
- * Initial revision
- *
- */
diff --git a/libcap/cap_extint.c b/libcap/cap_extint.c
index 3b0536b..1d858a1 100644
--- a/libcap/cap_extint.c
+++ b/libcap/cap_extint.c
@@ -1,9 +1,5 @@
 /*
- * $Id: cap_extint.c,v 1.1.1.1 1999/04/17 22:16:31 morgan Exp $
- *
- * Copyright (c) 1997-8 Andrew G Morgan <morgan@linux.kernel.org>
- *
- * See end of file for Log.
+ * Copyright (c) 1997-8 Andrew G Morgan <morgan@kernel.org>
  *
  * This file deals with exchanging internal and external
  * representations of capability sets.
@@ -91,7 +87,7 @@
 	(const struct cap_ext_struct *) cap_ext;
     cap_t cap_d;
     int set, blen;
-    __u32 * to = (__u32 *) &cap_d->set;
+    __u32 * to;
 
     /* Does the external representation make sense? */
     if (export == NULL || !memcmp(export->magic, external_magic
@@ -104,6 +100,7 @@
     if (!(cap_d = cap_init()))
        return NULL;
 
+    to = (__u32 *) &cap_d->set;
     blen = export->length_of_capset;
     for (set=0; set<=NUMBER_OF_CAP_SETS; ++set) {
 	int blk;
@@ -128,18 +125,3 @@
     return cap_d;
 }
 
-/*
- * $Log: cap_extint.c,v $
- * Revision 1.1.1.1  1999/04/17 22:16:31  morgan
- * release 1.0 of libcap
- *
- * Revision 1.3  1998/05/24 22:54:09  morgan
- * updated for 2.1.104
- *
- * Revision 1.2  1997/04/28 00:57:11  morgan
- * fixes and zefram's patches
- *
- * Revision 1.1  1997/04/21 04:32:52  morgan
- * Initial revision
- *
- */
diff --git a/libcap/cap_file.c b/libcap/cap_file.c
index ba51f15..85d72cb 100644
--- a/libcap/cap_file.c
+++ b/libcap/cap_file.c
@@ -1,9 +1,5 @@
 /*
- * $Id: cap_file.c,v 1.1.1.1 1999/04/17 22:16:31 morgan Exp $
- *
- * Copyright (c) 1997 Andrew G Morgan <morgan@linux.kernel.org>
- *
- * See end of file for Log.
+ * Copyright (c) 1997 Andrew G Morgan <morgan@kernel.org>
  *
  * This file deals with setting capabilities on files.
  */
@@ -29,7 +25,8 @@
 			      &result->set[CAP_INHERITABLE],
 			      &result->set[CAP_PERMITTED],
 			      &result->set[CAP_EFFECTIVE] )) {
-	    cap_free(&result);
+	    cap_free(result);
+	    result = NULL;
 	}
     }
 
@@ -54,7 +51,8 @@
 			     &result->set[CAP_INHERITABLE],
 			     &result->set[CAP_PERMITTED],
 			     &result->set[CAP_EFFECTIVE] ))
-	    cap_free(&result);
+	    cap_free(result);
+	    result = NULL;
     }
 
     return result;
@@ -97,24 +95,3 @@
 			  &cap_d->set[CAP_EFFECTIVE] );
 }
 
-/*
- * $Log: cap_file.c,v $
- * Revision 1.1.1.1  1999/04/17 22:16:31  morgan
- * release 1.0 of libcap
- *
- * Revision 1.5  1998/05/24 22:54:09  morgan
- * updated for 2.1.104
- *
- * Revision 1.4  1997/05/14 05:17:13  morgan
- * bug-fix from zefram (errno no set on success)
- *
- * Revision 1.3  1997/05/04 05:35:46  morgan
- * fixed errno setting. syscalls do this part
- *
- * Revision 1.2  1997/04/28 00:57:11  morgan
- * fixes and zefram's patches
- *
- * Revision 1.1  1997/04/21 04:32:52  morgan
- * Initial revision
- *
- */
diff --git a/libcap/cap_flag.c b/libcap/cap_flag.c
index 2181ade..a8567c0 100644
--- a/libcap/cap_flag.c
+++ b/libcap/cap_flag.c
@@ -1,9 +1,5 @@
 /*
- * $Id: cap_flag.c,v 1.1.1.1 1999/04/17 22:16:31 morgan Exp $
- *
- * Copyright (c) 1997-8 Andrew G. Morgan <morgan@linux.kernel.org>
- *
- * See end of file for Log.
+ * Copyright (c) 1997-8 Andrew G. Morgan <morgan@kernel.org>
  *
  * This file deals with flipping of capabilities on internal
  * capability sets as specified by POSIX.1e (formerlly, POSIX 6).
@@ -105,21 +101,3 @@
     }
 }
 
-/*
- * $Log: cap_flag.c,v $
- * Revision 1.1.1.1  1999/04/17 22:16:31  morgan
- * release 1.0 of libcap
- *
- * Revision 1.4  1998/09/20 23:07:59  morgan
- * fixed lower bound check on 'set'.
- *
- * Revision 1.3  1998/05/24 22:54:09  morgan
- * updated for 2.1.104
- *
- * Revision 1.2  1997/04/28 00:57:11  morgan
- * fixes and zefram's patches
- *
- * Revision 1.1  1997/04/21 04:32:52  morgan
- * Initial revision
- *
- */
diff --git a/libcap/cap_proc.c b/libcap/cap_proc.c
index a7a6b73..5c2ac48 100644
--- a/libcap/cap_proc.c
+++ b/libcap/cap_proc.c
@@ -1,9 +1,5 @@
 /*
- * $Id: cap_proc.c,v 1.2 1999/04/18 20:50:01 morgan Exp $
- *
- * Copyright (c) 1997-8 Andrew G Morgan <morgan@linux.kernel.org>
- *
- * See end of file for Log.
+ * Copyright (c) 1997-8 Andrew G Morgan <morgan@kernel.org>
  *
  * This file deals with setting capabilities on processes.
  */
@@ -21,7 +17,8 @@
 
 	/* fill the capability sets via a system call */
 	if (capget(&result->head, &result->set)) {
-	    cap_free(&result);
+	    cap_free(result);
+	    result = NULL;
 	}
     }
 
@@ -87,29 +84,3 @@
     return error;
 }
 
-/*
- * $Log: cap_proc.c,v $
- * Revision 1.2  1999/04/18 20:50:01  morgan
- * reliable behavior when trying to talk with a kernel that has a more
- * modern capability implementation than the one the library was compiled
- * with.
- *
- * Revision 1.1.1.1  1999/04/17 22:16:31  morgan
- * release 1.0 of libcap
- *
- * Revision 1.5  1998/05/24 22:54:09  morgan
- * updated for 2.1.104
- *
- * Revision 1.4  1997/05/14 05:17:13  morgan
- * bug-fix from zefram (errno no set on success)
- *
- * Revision 1.3  1997/05/04 05:35:46  morgan
- * fixed errno setting. syscalls do this part
- *
- * Revision 1.2  1997/04/28 00:57:11  morgan
- * fixes and zefram's patches
- *
- * Revision 1.1  1997/04/21 04:32:52  morgan
- * Initial revision
- *
- */
diff --git a/libcap/cap_sys.c b/libcap/cap_sys.c
index f28e8a3..27c137d 100644
--- a/libcap/cap_sys.c
+++ b/libcap/cap_sys.c
@@ -1,15 +1,12 @@
 /*
- * $Id: cap_sys.c,v 1.1.1.1 1999/04/17 22:16:31 morgan Exp $
- *
- * Copyright (c) 1997-8 Andrew G. Morgan   <morgan@linux.kernel.org>
+ * Copyright (c) 1997-8 Andrew G. Morgan   <morgan@kernel.org>
  *
  * This file contains the system calls for getting and setting
  * capabilities
  */
 
-#include "libcap.h"
-#define __LIBRARY__
 #include <linux/unistd.h>
+#include <linux/capability.h>
 
 _syscall2(int, capget,
 	  cap_user_header_t, header,
@@ -19,21 +16,3 @@
 	  cap_user_header_t, header,
 	  const cap_user_data_t, data)
 
-/*
- * $Log: cap_sys.c,v $
- * Revision 1.1.1.1  1999/04/17 22:16:31  morgan
- * release 1.0 of libcap
- *
- * Revision 1.4  1998/06/08 00:14:01  morgan
- * change to accommodate alpha (glibc?)
- *
- * Revision 1.3  1998/05/24 22:54:09  morgan
- * updated for 2.1.104
- *
- * Revision 1.2  1997/04/28 00:57:11  morgan
- * fixes and zefram's patches
- *
- * Revision 1.1  1997/04/21 04:32:52  morgan
- * Initial revision
- *
- */
diff --git a/libcap/cap_text.c b/libcap/cap_text.c
index c69e89b..5814093 100644
--- a/libcap/cap_text.c
+++ b/libcap/cap_text.c
@@ -1,11 +1,7 @@
 /*
- * $Id: cap_text.c,v 1.3 1999/11/18 06:03:26 morgan Exp $
- *
- * Copyright (c) 1997-8 Andrew G Morgan <morgan@linux.kernel.org>
+ * Copyright (c) 1997-8 Andrew G Morgan <morgan@kernel.org>
  * Copyright (c) 1997 Andrew Main <zefram@dcs.warwick.ac.uk>
  *
- * See end of file for Log.
- *
  * This file deals with exchanging internal and textual
  * representations of capability sets.
  */
@@ -57,18 +53,23 @@
 
 static int lookupname(char const **strp)
 {
-    char const *str = *strp;
-    if (isdigit(*str)) {
-	unsigned long n = strtoul(str, (char **)&str, 0);
+    union {
+	char const *constp;
+	char *p;
+    } str;
+
+    str.constp = *strp;
+    if (isdigit(*str.constp)) {
+	unsigned long n = strtoul(str.constp, &str.p, 0);
 	if (n >= __CAP_BITS)
 	    return -1;
-	*strp = str;
+	*strp = str.constp;
 	return n;
     } else {
 	char const *s;
 	int n;
 	for (n = __CAP_BITS; n--; )
-	    if (_cap_names[n] && (s = namcmp(str, _cap_names[n]))) {
+	    if (_cap_names[n] && (s = namcmp(str.constp, _cap_names[n]))) {
 		*strp = s;
 		return n;
 	    }
@@ -209,9 +210,10 @@
     }
 
 bad:
-    cap_free(&res);
+    cap_free(res);
+    res = NULL;
     errno = EINVAL;
-    return NULL;
+    return res;
 }
 
 /*
@@ -306,28 +308,3 @@
 
     return (_libcap_strdup(buf));
 }
-
-/*
- * $Log: cap_text.c,v $
- * Revision 1.3  1999/11/18 06:03:26  morgan
- * fixed cap_free to work as indicated in manuals
- *
- * Revision 1.2  1999/04/17 23:25:09  morgan
- * fixes from peeterj
- *
- * Revision 1.1.1.1  1999/04/17 22:16:31  morgan
- * release 1.0 of libcap
- *
- * Revision 1.4  1998/05/24 22:54:09  morgan
- * updated for 2.1.104
- *
- * Revision 1.3  1997/05/04 05:37:00  morgan
- * case sensitvity to capability flags
- *
- * Revision 1.2  1997/04/28 00:57:11  morgan
- * zefram's replacement file with a number of bug fixes from AGM
- *
- * Revision 1.1  1997/04/21 04:32:52  morgan
- * Initial revision
- *
- */
diff --git a/libcap/include/sys/capability.h b/libcap/include/sys/capability.h
index 5afd3b0..f38f81d 100644
--- a/libcap/include/sys/capability.h
+++ b/libcap/include/sys/capability.h
@@ -3,7 +3,7 @@
  *
  * 
  * Copyright (C) 1997   Aleph One
- * Copyright (C) 1997-8 Andrew G. Morgan <morgan@linux.kernel.org>
+ * Copyright (C) 1997-8 Andrew G. Morgan <morgan@kernel.org>
  *
  * defunct POSIX.1e Standard: 25.2 Capabilities           <sys/capability.h>
  */
diff --git a/libcap/libcap.h b/libcap/libcap.h
index eff5f8b..20acb6b 100644
--- a/libcap/libcap.h
+++ b/libcap/libcap.h
@@ -1,9 +1,5 @@
 /*
- * $Id: libcap.h,v 1.5 1999/11/18 07:23:24 morgan Exp $
- *
- * Copyright (c) 1997 Andrew G Morgan <morgan@linux.kernel.org>
- *
- * See end of file for Log.
+ * Copyright (c) 1997 Andrew G Morgan <morgan@kernel.org>
  *
  * This file contains internal definitions for the various functions in
  * this small capability library.
@@ -117,37 +113,3 @@
 extern int capsetp(pid_t pid, cap_t cap_d);
 
 #endif /* LIBCAP_H */
-
-/*
- * $Log: libcap.h,v $
- * Revision 1.5  1999/11/18 07:23:24  morgan
- * final fixes tested on a RH6.0 system for release-1.10
- *
- * Revision 1.4  1999/11/18 06:25:02  morgan
- * added prototype for _libcap_strdup
- *
- * Revision 1.3  1999/11/18 06:03:26  morgan
- * fixed cap_free to work as indicated in manuals
- *
- * Revision 1.2  1999/04/17 23:25:10  morgan
- * fixes from peeterj
- *
- * Revision 1.1.1.1  1999/04/17 22:16:31  morgan
- * release 1.0 of libcap
- *
- * Revision 1.5  1998/06/08 00:15:28  morgan
- * accommodate alpha (glibc?)
- *
- * Revision 1.4  1998/06/07 15:58:23  morgan
- * accommodate real kernel header files :*)
- *
- * Revision 1.3  1998/05/24 22:54:09  morgan
- * updated for 2.1.104
- *
- * Revision 1.2  1997/04/28 00:57:11  morgan
- * zefram's replacement file with a number of bug fixes from AGM
- *
- * Revision 1.1  1997/04/21 04:32:52  morgan
- * Initial revision
- *
- */
diff --git a/progs/Makefile b/progs/Makefile
index 1f78a5e..deb1d80 100644
--- a/progs/Makefile
+++ b/progs/Makefile
@@ -1,27 +1,3 @@
-##
-## $Log: Makefile,v $
-## Revision 1.1.1.1  1999/04/17 22:16:31  morgan
-## release 1.0 of libcap
-##
-## Revision 1.6  1998/09/20 23:17:32  morgan
-## added sucap.c
-##
-## Revision 1.5  1998/06/07 01:54:43  morgan
-## updated for 0.104.  Added execcap.
-##
-## Revision 1.4  1997/05/14 05:18:23  morgan
-## autoconf rearrangement from Zefram
-##
-## Revision 1.3  1997/05/04 05:34:03  morgan
-## took care of case that install cannot handle more than one file
-##
-## Revision 1.2  1997/04/28 01:01:20  morgan
-## update with zefram's patches
-##
-## Revision 1.1  1997/04/21 04:34:04  morgan
-## Initial revision
-##
-##
 
 topdir=$(shell pwd)/..
 include $(topdir)/Make.Rules
diff --git a/progs/execcap.c b/progs/execcap.c
index 68b86d2..330cc93 100644
--- a/progs/execcap.c
+++ b/progs/execcap.c
@@ -1,5 +1,5 @@
 /*
- * This was written by Andrew G. Morgan <morgan@linux.kernel.org>
+ * This was written by Andrew G. Morgan <morgan@kernel.org>
  *
  * This is a program that is intended to exec a subsequent program.
  * The purpose of this 'execcap' wrapper is to limit the inheritable
@@ -13,6 +13,7 @@
 #include <sys/capability.h>
 #include <unistd.h>
 #include <string.h>
+#include <stdlib.h>
 
 static void usage(void)
 {
@@ -23,12 +24,12 @@
 "  intended to assist in overcoming a lack of support for filesystem\n"
 "  capability attributes and should be used to launch other files.\n"
 "  This program should _NOT_ be made setuid-0.\n\n"
-"[Copyright (c) 1998 Andrew G. Morgan <morgan@linux.kernel.org>]\n");
+"[Copyright (c) 1998 Andrew G. Morgan <morgan@kernel.org>]\n");
 
     exit(1);
 }
 
-void main(int argc, char **argv)
+int main(int argc, char **argv)
 {
     cap_t new_caps;
 
@@ -52,7 +53,7 @@
     /* set these capabilities for the current process */
     if (cap_set_proc(new_caps) != 0) {
 	fprintf(stderr, "unable to set capabilities: %s\n", strerror(errno));
-	usage();	
+	usage();
     }
 
     /* exec the program indicated by args 2 ... */
@@ -62,4 +63,6 @@
     fprintf(stderr, "Unable to execute command: %s\n", strerror(errno));
 
     usage();
+
+    return 0;
 }
diff --git a/progs/getpcaps.c b/progs/getpcaps.c
index cb3c9d7..26dee82 100644
--- a/progs/getpcaps.c
+++ b/progs/getpcaps.c
@@ -1,7 +1,7 @@
 /*
  * $Id: getpcaps.c,v 1.2 1999/11/18 06:04:25 morgan Exp $
  *
- * Copyright (c) 1997 Andrew G. Morgan  <morgan@linux.kernel.org>
+ * Copyright (c) 1997 Andrew G. Morgan  <morgan@kernel.org>
  *
  * This displays the capabilities of a given process.
  */
@@ -20,7 +20,7 @@
 "usage: getcaps <pid> [<pid> ...]\n\n"
 "  This program displays the capabilities on the queried process(es).\n"
 "  The capabilities are displayed in the cap_from_text(3) format.\n\n"
-"[Copyright (c) 1997-8 Andrew G. Morgan  <morgan@linux.kernel.org>]\n"
+"[Copyright (c) 1997-8 Andrew G. Morgan  <morgan@kernel.org>]\n"
 	);
     exit(1);
 }
@@ -60,25 +60,3 @@
 
     return 0;
 }
-
-/*
- * $Log: getpcaps.c,v $
- * Revision 1.2  1999/11/18 06:04:25  morgan
- * use cap_free and not free for string from cap_to_text()
- *
- * Revision 1.1.1.1  1999/04/17 22:16:31  morgan
- * release 1.0 of libcap
- *
- * Revision 1.4  1998/09/20 23:07:08  morgan
- * fixed comment at top
- *
- * Revision 1.3  1998/06/08 00:16:58  morgan
- * change to accommodate alpha (glibc?)
- *
- * Revision 1.2  1998/06/07 01:49:39  morgan
- * added copyright info and some usage info.  Small tidy up.
- *
- * Revision 1.1  1998/04/30 02:53:00  morgan
- * Initial revision
- *
- */
diff --git a/progs/old/getcap.c b/progs/old/getcap.c
index 8a7102d..7561f1c 100644
--- a/progs/old/getcap.c
+++ b/progs/old/getcap.c
@@ -1,7 +1,5 @@
 /*
- * $Id: getcap.c,v 1.1.1.1 1999/04/17 22:16:31 morgan Exp $
- *
- * Copyright (c) 1997 Andrew G. Morgan  <morgan@parc.power.net>
+ * Copyright (c) 1997 Andrew G. Morgan  <morgan@kernel.org>
  *
  * This displays the capabilities of a given file.
  */
@@ -49,19 +47,3 @@
 
     return 0;
 }
-
-/*
- * $Log: getcap.c,v $
- * Revision 1.1.1.1  1999/04/17 22:16:31  morgan
- * release 1.0 of libcap
- *
- * Revision 1.3  1997/05/04 05:34:32  morgan
- * non void main
- *
- * Revision 1.2  1997/04/28 01:01:20  morgan
- * update to allow more than one argument file
- *
- * Revision 1.1  1997/04/21 04:34:04  morgan
- * Initial revision
- *
- */
diff --git a/progs/old/setcap.c b/progs/old/setcap.c
index 15418da..ebf8608 100644
--- a/progs/old/setcap.c
+++ b/progs/old/setcap.c
@@ -1,7 +1,5 @@
 /*
- * $Id: setcap.c,v 1.1.1.1 1999/04/17 22:16:31 morgan Exp $
- *
- * Copyright (c) 1997 Andrew G. Morgan  <morgan@parc.power.net>
+ * Copyright (c) 1997 Andrew G. Morgan  <morgan@kernel.org>
  *
  * This sets the capabilities of a given file.
  */
@@ -110,16 +108,3 @@
 
     return 0;
 }
-
-/*
- * $Log: setcap.c,v $
- * Revision 1.1.1.1  1999/04/17 22:16:31  morgan
- * release 1.0 of libcap
- *
- * Revision 1.2  1997/05/04 05:34:32  morgan
- * non void main
- *
- * Revision 1.1  1997/04/28 01:01:20  morgan
- * Initial revision
- *
- */
diff --git a/progs/setpcaps.c b/progs/setpcaps.c
index 7441420..3720fce 100644
--- a/progs/setpcaps.c
+++ b/progs/setpcaps.c
@@ -1,7 +1,5 @@
 /*
- * $Id: setpcaps.c,v 1.2 1999/11/18 06:04:26 morgan Exp $
- *
- * Copyright (c) 1997-8 Andrew G. Morgan  <morgan@linux.kernel.org>
+ * Copyright (c) 1997-8 Andrew G. Morgan  <morgan@kernel.org>
  *
  * This sets the capabilities of a given process.
  */
@@ -24,7 +22,7 @@
 "  raised, and the only capabilities that this program can bestow on others\n"
 "  are a subset of its effective set.  This program is mostly intended as an\n"
 "  example -- a safe use of CAP_SETPCAP has yet to be demonstrated!\n\n"
-"[Copyright (c) 1997-8 Andrew G. Morgan  <morgan@linux.kernel.org>]\n"
+"[Copyright (c) 1997-8 Andrew G. Morgan  <morgan@kernel.org>]\n"
 	);
     exit(1);
 }
@@ -124,28 +122,3 @@
 
     return 0;
 }
-
-/*
- * $Log: setpcaps.c,v $
- * Revision 1.2  1999/11/18 06:04:26  morgan
- * use cap_free and not free for string from cap_to_text()
- *
- * Revision 1.1.1.1  1999/04/17 22:16:31  morgan
- * release 1.0 of libcap
- *
- * Revision 1.3  1998/09/20 23:07:08  morgan
- * fixed comment at top
- *
- * Revision 1.2  1998/06/08 00:17:38  morgan
- * change to accommodate alpha (glibc?)
- *
- * Revision 1.1  1998/06/07 01:46:51  morgan
- * Initial revision
- *
- * Revision 1.2  1997/05/04 05:34:32  morgan
- * non void main
- *
- * Revision 1.1  1997/04/28 01:01:20  morgan
- * Initial revision
- *
- */
diff --git a/progs/sucap.c b/progs/sucap.c
index b567430..366a093 100644
--- a/progs/sucap.c
+++ b/progs/sucap.c
@@ -20,6 +20,7 @@
 #include <sys/wait.h>
 #include <errno.h>
 #include <string.h>
+#include <stdlib.h>
 
 static void usage(void)
 {
@@ -48,7 +49,7 @@
 }
 
 
-void main(int argc, char **argv)
+int main(int argc, char **argv)
 {
     cap_t old_caps;
     uid_t uid;
@@ -193,4 +194,6 @@
 	/* exit to signal mother process that we are ready */
 	_exit(0);
     }
+
+    return 0;
 }
diff --git a/template.c b/template.c
index e02c987..92d1672 100644
--- a/template.c
+++ b/template.c
@@ -1,14 +1,6 @@
 /*
- * $Id: template.c,v 1.1.1.1 1999/04/17 22:16:31 morgan Exp $
- *
  * Copyright (c) 1997 <Author>  <@>
  *
  * <Content>
  */
 
-/*
- * $Log: template.c,v $
- * Revision 1.1.1.1  1999/04/17 22:16:31  morgan
- * release 1.0 of libcap
- *
- */
