# README.porting,v 1.1.1.1 1995/06/16 21:10:40 seth Exp

 *********************************************************************
 *                             PORTING                               *
 *********************************************************************


We tried fairly hard to make sure that our code was very portable
across all modern Unix systems.  We did this through a combination of
POSIX compilent code and outright replacement of routines that were
not standardized with a common freely available version (e.g. the NIH
time zone library).  However, if your system has problems compiling
parts of the code, we hope to give you a few hints here to help you
on your path.

First of all, make sure that you are using all recommended packages.
If you are trying to use your OS's compiler instead of gcc, or if you
are not using the NIH time zone library, you are simply shooting
yourself in the foot.  Get the packages and try again.

Next, you should try very very hard to avoid making large numbers of
changes in the actual C code.  We were able, with very few exceptions,
to make all of the OS dependent changes in unix_decl.h (from esos) and
in the sos.mk makefile.  Please try to preserve these semantics.

If you do come up with some clean patches, please send them in and we
will consider including them in the next version.  The more ``dirty''
the patch (e.g. the more it clutters up the code path) the less likely
we are to include them.  We are not likely to include patches for
things which are taken care of by the recommended packages (e.g.
we probably will not implement support for fooOS's timezone library).



 *********************************************************************
 *                        Timezone problems                          *
 *********************************************************************

If you are having timezone problems--for example your compiler tells
you that tm_zone and tm_gmtoff are not present in your struct tm, you
need to modify your time.h include file (or make a copy somewhere and
modify that):

--------------------------------------------------
struct  tm {    /* see ctime(3) */
        int     tm_sec;
        int     tm_min;
        int     tm_hour;
        int     tm_mday;
        int     tm_mon;
        int     tm_year;
        int     tm_wday;
        int     tm_yday;
        int     tm_isdst;
#ifdef _NEWTIME
        char    *tm_zone;
        long    tm_gmtoff;
#endif /*_NEWTIM*/
};
--------------------------------------------------

The NIH time zone libraries should have been compiled so that they
would use the latter two elements.  They are required by Freestone to
perform time computation properly.



 *********************************************************************
 *                          Other problems                           *
 *********************************************************************

setenv missing:

	You miscompiled (or failed to compile) lib44bsd.a which is part
	of the bind distribution (in the compat directory).  The default
	Make variables for your architecture (which you must manually
	uncomment) should define what utilities you need.
