Date: Tue, 17 Jan 1995 15:42:01 +0500
From: Theodore Ts'o <tytso@MIT.EDU>
To: krbdev@MIT.EDU

FYI.....

My reply will follow cc'ed to this address.

							- Ted

------- Forwarded Message

To: tytso@MIT.EDU, gnu@cygnus.com
Cc: eichin@cygnus.com, jmr@cygnus.com
Subject: K5: Slashes don't separate file components any more!
Date: Sun, 15 Jan 1995 22:15:00 -0800
From: John Gilmore <gnu@cygnus.com>

The standard include file name for K5 can't be "krb5/krb5.h",
because on the Mac, slash is just another file character.  They use ':'
for the file component separator.  (Our K4 makefiles use some one-char
Makefile macros for handling this, and all source files avoid
file paths unless they come from a system-dependent config file.)

To make the K5 tree portable to the Mac, we'll have to pick another
name for the krb5 include file.  My suggestion:

	krb5.h		-- defns used by application programs (the API)
	k5-int.h	-- defns used internally to Kerberos itself

I picked k5-*.h as an internal naming convention because all the names
will also (for PC) have to be unique within 8.3 chars.  This gives us
5 chars of uniqueness to play with.

Initially, krb5.h will contain everything, but we'll start moving
stuff into k5-int.h as soon as we identify things that we know
SHOULDN'T be in the API.  My suggestion is that k5-int.h #include
"krb5.h" so that all its callers don't have to.

We'll also have to fix references to all the other krb5/*.h include
files.  Some may need new names (e.g. krb5/dbm.h => k5dbm.h since
otherwise it conflicts with the system dbm.h).  We'll need to figure
out which are "internal" and which are "external", since external ones
will need clearly identifiable (as Kerberos) names, while internal
ones can have more haphazard names.

Making this change will also require passing proper -I options during
the build, so that e.g. #include "krb5.h", by itself, is good enough
for the compiler.  We may want to separate the include files into a
directory of external ones (which get installed with the library
binaries) and internal ones (which don't) rather than the current
structure based on which subcomponent of Kerberos they come from.
This will limit the number of -I options we have to pass in every
compile.

When and how would you like this change to be made?  I could just
start whacking, but without fundamental agreement on which direction
to go, I could waste a lot of effort (and/or end up with a tree with
thousands of changed files, which lasts for weeks and is harder and
harder to merge other peoples' massive changes into).

I'll be at Usenix starting on Tuesday.  I'll be reading mail there,
and will probably get some Kerb work done from there too.

	John

------- End Forwarded Message

Date: Tue, 17 Jan 1995 16:06:00 +0500
From: Theodore Ts'o <tytso@MIT.EDU>
To: John Gilmore <gnu@cygnus.com>
Cc: gnu@cygnus.com, eichin@cygnus.com, jmr@cygnus.com
Cc: krbdev@MIT.EDU
In-Reply-To: John Gilmore's message of Sun, 15 Jan 1995 22:15:00 -0800,
	<199501160615.WAA19600@cygnus.com>

   Date: Sun, 15 Jan 1995 22:15:00 -0800
   From: John Gilmore <gnu@cygnus.com>

   To make the K5 tree portable to the Mac, we'll have to pick another
   name for the krb5 include file.  My suggestion:

	   krb5.h		-- defns used by application programs (the API)
	   k5-int.h	-- defns used internally to Kerberos itself

Well, it sounds like the main thing that needs to happen is that all of
the files in src/include/krb5 need to be moved to src/include.
Unfortuantely, since there area *lot* file flies in src/include/krb5,
and some of the names conflict with system include files, we should move
towards folding more things into krb5.h.

At one point you had talked about trying to merge all or most of the
publically needed files into krb5.h, so that a binary distribution would
consist of a single library and a single .h file.  Are you still
suggesting such an approach?  If so, there are a number of include files
which are built as part of the configuration file, namely config.h and
the com_err error table files, which we're going to have to deal with
somehow.  If you want to deal with trying to deal with a way that
automatically builds the krb5.h file, that's fine with me (it's going to
probably over 100k, though!).

   Making this change will also require passing proper -I options during
   the build, so that e.g. #include "krb5.h", by itself, is good enough
   for the compiler.  We may want to separate the include files into a
   directory of external ones (which get installed with the library
   binaries) and internal ones (which don't) rather than the current
   structure based on which subcomponent of Kerberos they come from.
   This will limit the number of -I options we have to pass in every
   compile.

We're already passing -I options through to the build; as I said, I
think this is mostly an issue of moving things to top-level include
directory.  

Most of the .h files in include/krb5 are ones that are required to be
known by files in the entire krb5 distributions.  .h files which only
need to be used by one directory are mostly already located in the
appropriate subcomponent directory.

   When and how would you like this change to be made?  I could just
   start whacking, but without fundamental agreement on which direction
   to go, I could waste a lot of effort (and/or end up with a tree with
   thousands of changed files, which lasts for weeks and is harder and
   harder to merge other peoples' massive changes into).

Argh, another vast change that's going to do inflict major trauma to the
source tree....

The hardest part of merging all of these changes in will be in the
include files themselves.  Changing where krb5.h is going to be found
will affect hundreds of files, but those changes will be easy to merge
in.

So, here's my proposal --- we quickly reach agreement on which include
files we actually want to be exposed, and we rename them quickly, and/or
hack the Makefiles to generate the global src/include/krb5.h by
concatenating appropriate .h files from src/include/krb5/*.h.  

At that point you can go whacking lots of files at your convenience, and
checking them in as you go.  Because the old include files are still in
include/krb5, we can keep the tree stable and compiling while you make
the changeover.  That way, we can continue doing work while you convert
over the files (although hopefully the conversion should take all that
long anyway.)

What do you think?

						- Ted

To: "Theodore Ts'o" <tytso@MIT.EDU>
Cc: John Gilmore <gnu@cygnus.com>, eichin@cygnus.com, jmr@cygnus.com,
        krbdev@MIT.EDU
In-Reply-To: Your message of "Tue, 17 Jan 1995 16:06:00 +0500."
             <9501172106.AA21978@dcl.MIT.EDU> 
Date: Wed, 18 Jan 1995 11:30:10 -0800
From: John Gilmore <gnu@cygnus.com>

> So, here's my proposal --- we quickly reach agreement on which include
> files we actually want to be exposed, and we rename them quickly, and/or
> hack the Makefiles to generate the global src/include/krb5.h by
> concatenating appropriate .h files from src/include/krb5/*.h.  

This sounds like a good process.  You know the tree and the API a lot
better than I -- do you want to make the first proposal?

	John