[829] in Kerberos_V5_Development

home help back first fref pref prev next nref lref last post

rearranging krb5 include files: please retain some sanity

daemon@ATHENA.MIT.EDU (John Kohl)
Sun Jan 22 23:51:48 1995

Date: Sun, 22 Jan 1995 17:23:38 -0500
From: John Kohl <jtk@atria.com>
To: tytso@MIT.EDU, krbdev@MIT.EDU, proven@MIT.EDU, eichin@cygnus.com

I was discussing some of the upcoming krb5 chainsaw/rototill work with
Chris Provenzano, and from what we dicussed I think you're about to make
a mistake with include file naming.
 
I understand there's concern about include file naming due to
slash/colon differences in file name component separators for DOS/UNIX
and Mac platforms.  Last I checked (a long time ago, admittedly), the
normal include file for Kerberos V5 was something like #include
<krb5/krb5.h>.  The specification of this filename is part of the API,
and I believe it should remain as it's currently named.  If this means
that one include file on the Macintosh is named "krb5/krb5.h" (like
sys/types.h, for example), then so be it.  All the component files it
includes can be named however you like--but I strongly recommend you put
them all in a subdirectory.

In particular, as an application writer I don't want to conditionalize
my C source code as to whether or not the API's include file is in a
subdirectory.  If my system vendor ships Kerberos V5 bundled, I expect
the include files to go under /usr/include/krb5/, or maybe under
/usr/krb5/include/krb5/ like X11 does if you don't install it under /usr
directly.  [All X11 apps include <X11/Xlib.h>, and if the include files
aren't in the "default place", then the Makefile is edited so that -I
rules are passed to the compiler.]

I don't particularly care how you arrange the Kerberos internal include
file layout (or how you solve the / or : distinction--that could be done
by the make install step or a configure step or something, no?), but
when it is installed into an area for some other system vendor to ship
or application writer to use, it really should all live underneath a
krb5/ top-level directory.

Similarly, any sample applications you include which are intended to be
boilerplate from which programmers liberally copy code should use the
standard include file location and syntax.

==John

home help back first fref pref prev next nref lref last post