 [ This is an old file, I don't know if it is true anymore
   but I will leave the file here - eay 21/11/95 ]

To use this library with Bones (kerberos without DES):
1) Get my modified Bones - eBones.  It can be found on
   gondwana.ecr.mu.oz.au (128.250.1.63) /pub/athena/eBones-p9.tar.Z
   and
   nic.funet.fi (128.214.6.100) /pub/unix/security/Kerberos/eBones-p9.tar.Z

2) Unpack this library in src/lib/des, makeing sure it is version
   3.00 or greater (libdes.tar.93-10-07.Z).  This versions differences
   from the version in comp.sources.misc volume 29 patchlevel2.
   The primarily difference is that it should compile under kerberos :-).
   It can be found at.
   ftp.psy.uq.oz.au (130.102.32.1) /pub/DES/libdes.tar.93-10-07.Z

Now do a normal kerberos build and things should work.

One problem I found when I was build on my local sun.
---
For sunOS 4.1.1 apply the following patch to src/util/ss/make_commands.c

*** make_commands.c.orig	Fri Jul  3 04:18:35 1987
--- make_commands.c	Wed May 20 08:47:42 1992
***************
*** 98,104 ****
       if (!rename(o_file, z_file)) {
  	  if (!vfork()) {
  	       chdir("/tmp");
! 	       execl("/bin/ld", "ld", "-o", o_file+5, "-s", "-r", "-n",
  		     z_file+5, 0);
  	       perror("/bin/ld");
  	       _exit(1);
--- 98,104 ----
       if (!rename(o_file, z_file)) {
  	  if (!vfork()) {
  	       chdir("/tmp");
! 	       execl("/bin/ld", "ld", "-o", o_file+5, "-s", "-r",
  		     z_file+5, 0);
  	       perror("/bin/ld");
  	       _exit(1);
