diff --git a/configure.ac b/configure.ac
index c468b9348d6cd71c200316c8157e6453fe321974..a07bfee9a5ba101e6ccecd5165bc6d8a3b0249c0 100644
--- a/configure.ac
+++ b/configure.ac
@@ -47,7 +47,8 @@ dnl Checks for header files.
 dnl
 AC_CHECK_HEADERS(popt.h mcheck.h values.h socket.h sys/socket.h  \
                  stdbool.h sys/ipc.h sys/shm.h sys/sem.h errno.h \
-                 stdlib.h )
+                 stdlib.h 					 \
+		 )
 AC_HEADER_SYS_WAIT
 AC_HEADER_TIME
 AC_HEADER_STDC
@@ -74,7 +75,12 @@ fi
 
 dnl Checks for types.
 dnl
-
+AC_C_BIGENDIAN
+if test "x$ac_cv_c_bigendian" = "xyes"; then
+  AC_DEFINE(SLURM_BIGENDIAN,1,
+           [Define if your architecture's byteorder is big endian.])
+fi
+  
 
 dnl Checks for compiler characteristics.
 dnl
@@ -91,8 +97,9 @@ dnl AC_SEARCH_LIBS([pthread_create], [pthread c_r cr], [],
 dnl               [AC_MSG_ERROR([Error: Cannot find the pthread library])])
 
 ACX_PTHREAD([], AC_MSG_ERROR([Error: Cannot figure out how to use pthreads!]))
-AC_DEFINE_UNQUOTED(WITH_PTHREADS, $HAVE_PTHREAD, [Define if you have pthreads])
-AC_SUBST(WITH_PTHREADS)
+
+# Always define WITH_PTHREADS if we make it this far
+AC_DEFINE(WITH_PTHREADS,1,[Define if you have pthreads.])
 LDFLAGS="$LDFLAGS "
 CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
 LIBS="$PTHREAD_LIBS $LIBS"
@@ -113,7 +120,7 @@ AC_CHECK_LIB(popt, poptGetNextOpt, [got_popt=yes], [got_popt=no])
 AM_CONDITIONAL(USE_INCLUDED_POPT, test $got_popt = no)
 if test $got_popt = no; then
     AC_MSG_RESULT([using included popt package...])
-    POPT_LIBS="\$(top_srcdir)/src/popt/libpopt.a"
+    POPT_LIBS="\$(top_builddir)/src/popt/libpopt.a"
     POPT_INCLUDES="-I\$(top_srcdir)/src/popt"
 else
     POPT_LIBS="-lpopt"
@@ -372,8 +379,6 @@ fi
 AM_CONDITIONAL(WITH_AUTHD, test "x$with_authd" = "xyes")
 
 
-
-
 dnl All slurm Makefiles:
 dnl need to add squeue and scancel when they're there
 
diff --git a/etc/slurm.conf b/etc/slurm.conf
index f06e5cc221990d0115789c98250acc6e4e983eac..0cc19f314ab4c1c8f77f44634decc4221c3fa49d 100644
--- a/etc/slurm.conf
+++ b/etc/slurm.conf
@@ -1,17 +1,19 @@
 # 
-# Sample /etc/slurm.conf
+# Sample /etc/slurm.conf.localhost
 # Author: John Doe
 # Date: 11/06/2001
+# Note: "localhost" is translated by slurmctld to the actual hostname
 #
 ControlMachine=localhost BackupController=localhost
 Epilog="" Prolog=""
 FastSchedule=1
 FirstJobId=65536
 HashBase=10
-HeartbeatInterval=60
+HeartbeatInterval=10
 InactiveLimit=120
-KillWait=30
+KillWait=5
 Prioritize=/usr/local/maui/priority
+ReturnToService=1
 SlurmctldPort=7002 SlurmdPort=7003
 SlurmctldTimeout=300 SlurmdTimeout=300
 StateSaveLocation=/tmp/slurm.state
@@ -21,15 +23,10 @@ JobCredentialPublicCertificate=public.cert
 #
 # Node Configurations
 #
-NodeName=DEFAULT TmpDisk=16384 State=UNKNOWN
-NodeName=lx[0001-0002] State=DRAINED
-NodeName=lx[0003-8000] Procs=16 RealMemory=2048 Weight=16
-NodeName=lx[8001-9999] Procs=32 RealMemory=4096 Weight=40 Feature=1200MHz
+NodeName=DEFAULT TmpDisk=2 State=UNKNOWN
+NodeName=localhost Procs=16 RealMemory=1 Weight=16
 #
 # Partition Configurations
 #
-PartitionName=DEFAULT MaxTime=30 MaxNodes=2
-PartitionName=login Nodes=lx[0001-0002] State=DOWN
-PartitionName=debug Nodes=lx[0003-0030] State=UP    Default=YES
-PartitionName=class Nodes=lx[0031-0040] AllowGroups=students
-PartitionName=batch Nodes=lx[0041-9999] MaxTime=UNLIMITED MaxNodes=4096 RootOnly=YES
+PartitionName=DEFAULT MaxTime=30 MaxNodes=1
+PartitionName=debug Nodes=localhost State=UP    Default=YES
diff --git a/src/api/Makefile.am b/src/api/Makefile.am
index 739c16e52d16654bb4cd43cd97c0f6b86f175444..48132395253a1185a3d8f7d3a402e3bc3a441f95 100644
--- a/src/api/Makefile.am
+++ b/src/api/Makefile.am
@@ -6,19 +6,7 @@ AUTOMAKE_OPTIONS = foreign
 
 EXTRA_DIST = slurm.h libslurm.sym
 
-INCLUDES = -I$(top_srcdir)/src/common
-
-# should we build individual modules?
-# (--enable-debug)
-#
-if DEBUG_MODULES
-test_modules = allocate config_info cancel job_info node_info partition_info reconfigure submit update_config
-else
-test_modules = 
-endif
-
-# link to libslurm (for test modules):
-LDADD = -lslurm
+INCLUDES = -I$(top_srcdir) -I$(top_srcdir)/src/common
 
 lib_LTLIBRARIES = libslurm.la
 
@@ -28,26 +16,21 @@ libslurm_la_SOURCES =    \
 	complete.c       \
 	config_info.c    \
 	job_info.c       \
-	job_step_info.c       \
+	job_step_info.c  \
 	node_info.c      \
 	partition_info.c \
 	submit.c         \
 	reconfigure.c    \
 	update_config.c   
 
-common_dir = $(top_srcdir)/src/common
+include_HEADERS =	 \
+	slurm.h
 
-#libslurm_la_LIBADD        = \
-#	$(common_dir)/pack.lo 	 	\
-#	$(common_dir)/xmalloc.lo 	\
-#	$(common_dir)/log.lo		\
-#	$(common_dir)/safeopen.lo	\
-#	$(common_dir)/xassert.c		\
-#	$(common_dir)/xstring.lo	
+common_dir = $(top_builddir)/src/common
 
 libslurm_la_LIBADD        = $(common_dir)/libcommon.la
-libslurm_la_LDFLAGS       = -export-symbols libslurm.sym
-libslurm_la_DEPENDENCIES  = libslurm.sym $(libslurm_la_LIBADD)
+libslurm_la_LDFLAGS       = -export-symbols $(srcdir)/libslurm.sym
+libslurm_la_DEPENDENCIES  = $(srcdir)/libslurm.sym $(libslurm_la_LIBADD)
 
 
 # hack to allow building .lo objects from other directories
@@ -58,43 +41,3 @@ libslurm_la_DEPENDENCIES  = libslurm.sym $(libslurm_la_LIBADD)
 	
 #$(filter %.la, $(libslurm_la_LIBADD)) : %.la : 
 #	cd `echo $@|sed 's#/[^/]*\$$##'` && $(MAKE) `echo $@|sed 's#.*/##'`
-
-# target specific CFLAGS do not work until automake 1.5, use explicit rules
-# for now. If we ever move to 1.5, the CFLAGS defs below should work in
-# place of the rules that follow.
-
-#allocate_CFLAGS        = -DDEBUG_MODULE $(AM_CFLAGS)
-#config_info_CFLAGS     = -DDEBUG_MODULE $(AM_CFLAGS)
-#cancel_CFLAGS          = -DDEBUG_MODULE $(AM_CFLAGS)
-#job_info_CFLAGS        = -DDEBUG_MODULE $(AM_CFLAGS)
-#node_info_CFLAGS       = -DDEBUG_MODULE $(AM_CFLAGS)
-#partition_info_CFLAGS  = -DDEBUG_MODULE $(AM_CFLAGS)
-#reconfigure_CFLAGS     = -DDEBUG_MODULE $(AM_CFLAGS)
-#submit_CFLAGS          = -DDEBUG_MODULE $(AM_CFLAGS)
-#update_confige_CFLAGS  = -DDEBUG_MODULE $(AM_CFLAGS)
-
-# debug modules to built as binaries:
-#
-# need to create a rule to build each binary from an object file with _d suffix
-# as these will have been compiled with -DDEBUG_MODULE
-#
-# Note: automake 1.5 will complain about these...
-#
-
-maintests      : allocate cancel job_info node_info partition_info  reconfigure submit update_config
-
-allocate       : allocate_d.o
-config_info    : config_info_d.o
-cancel         : cancel_d.o
-job_info       : job_info_d.o
-node_info      : node_info_d.o
-partition_info : partition_info_d.o
-reconfigure    : reconfigure_d.o
-submit         : submit_d.o
-update_config  : update_config_d.o
-
-% : %_d.o
-	$(LINK) $(LDFLAGS) $^ $(LDADD) $(LIBS)
-
-%_d.o : %.c
-	$(COMPILE) -DDEBUG_MODULE -c -o $@ $< 
diff --git a/src/common/Makefile.am b/src/common/Makefile.am
index 2fefcfff4f022f47d851177defcff3d5449aac8e..743731abdee69eb4a6897e7312bb8f2bf066cfe5 100644
--- a/src/common/Makefile.am
+++ b/src/common/Makefile.am
@@ -2,12 +2,7 @@
 
 AUTOMAKE_OPTIONS = foreign
 
-#
-if DEBUG_MODULES
-test_modules = bits_bytes bitstring
-else
-test_modules = 
-endif
+INCLUDES     = -I$(top_srcdir) $(SSL_CPPFLAGS) 
 
 if WITH_ELAN
 elan_sources = qsw.c
@@ -23,7 +18,6 @@ endif
 
 noinst_LTLIBRARIES = 	libcommon.la libdaemonize.la libcred.la 
 
-CPPFLAGS = $(SSL_CPPFLAGS)
 
 libcommon_la_SOURCES = 	\
 	xmalloc.c 	\
@@ -60,12 +54,14 @@ noinst_HEADERS = 	\
 	log.h 		\
 	eio.h		\
 	cbuf.h		\
+	fd.h		\
 	safeopen.h	\
 	strlcpy.h	\
 	bitstring.h     \
 	pack.h		\
 	hostlist.h	\
 	parse_spec.h	\
+	slurm_auth.h    \
 	slurm_protocol_api.h	\
 	slurm_protocol_pack.h	\
 	slurm_protocol_util.h	\
@@ -78,13 +74,16 @@ noinst_HEADERS = 	\
 	qsw.h			
 
 libdaemonize_la_SOURCES =  \
-	daemonize.c
+	daemonize.c        \
+	daemonize.h
 libcred_la_SOURCES =       \
         credential_utils.c \
-	signature_utils.c 
+	credential_utils.h \
+	signature_utils.c  \
+	signature_utils.h
 
 EXTRA_libcommon_la_SOURCES = \
 	qsw.c
-libcommon_la_LIBADD = $(AUTHD_LIBS) $(SSL_LIBS)
-libcred_la_LIBADD   = $(SSL_LIBS) 
-libcred_la_LDFLAGS  = $(SSL_LDFLAGS)	
+libcommon_la_LIBADD   = $(AUTHD_LIBS) $(SSL_LIBS)
+libcred_la_LIBADD     = $(SSL_LIBS) 
+libcred_la_LDFLAGS    = $(SSL_LDFLAGS)	
diff --git a/src/common/macros.h b/src/common/macros.h
index 6d4dd4818a8046b49e4249803b352c51820eae69..1bda57d7d83e9b410e2aba41eb0814e90a73c80d 100644
--- a/src/common/macros.h
+++ b/src/common/macros.h
@@ -31,6 +31,38 @@ typedef enum {false, true} bool;
 #define MAX(a,b) ((a) > (b) ? (a) : (b))	
 #endif
 
+#  define UINT64_SWAP_LE_BE(val)      ((uint64_t) (                        \
+        (((uint64_t) (val) &                                               \
+	  (uint64_t) (0x00000000000000ffU)) << 56) |                       \
+	(((uint64_t) (val) &                                               \
+	  (uint64_t) (0x000000000000ff00U)) << 40) |                       \
+	(((uint64_t) (val) &                                               \
+	  (uint64_t) (0x0000000000ff0000U)) << 24) |                       \
+	(((uint64_t) (val) &                                               \
+	  (uint64_t) (0x00000000ff000000U)) <<  8) |                       \
+	(((uint64_t) (val) &                                               \
+	  (uint64_t) (0x000000ff00000000U)) >>  8) |                       \
+	(((uint64_t) (val) &                                               \
+	  (uint64_t) (0x0000ff0000000000U)) >> 24) |                       \
+	(((uint64_t) (val) &                                               \
+	  (uint64_t) (0x00ff000000000000U)) >> 40) |                       \
+	(((uint64_t) (val) &                                               \
+	  (uint64_t) (0xff00000000000000U)) >> 56)))
+
+#if SLURM_BIGENDIAN
+# define HTON_int64(x)	  ((int64_t)  (x))
+# define NTOH_int64(x)	  ((int64_t)  (x))
+# define HTON_uint64(x)	  ((uint64_t) (x))
+# define NTOH_uint64(x)	  ((uint64_t) (x))
+#else
+# define HTON_int64(x)    ((int64_t) UINT64_SWAP_LE_BE (x))
+# define NTOH_int64(x)	  ((int64_t) UINT64_SWAP_LE_BE (x))
+# define HTON_uint64(x)   UINT64_SWAP_LE_BE (x)
+# define NTOH_uint64(x)   UINT64_SWAP_LE_BE (x)
+#endif	/* SLURM_BIGENDIAN */
+
+
+
 /* 
 ** define __CURRENT_FUNC__ macro for returning current function 
 */
diff --git a/src/common/pack.c b/src/common/pack.c
index 697528a142430f1a817c30db4b4fe737c4ddb298..373fda15c812b2229f5bea23cbf8cda472c67231 100644
--- a/src/common/pack.c
+++ b/src/common/pack.c
@@ -4,7 +4,8 @@
  *****************************************************************************
  *  Copyright (C) 2002 The Regents of the University of California.
  *  Produced at Lawrence Livermore National Laboratory (cf, DISCLAIMER).
- *  Written by Kevin Tew <tew1@llnl.gov>, Moe Jette <jette1@llnl.gov>, et. al.
+ *  Written by Jim Garlick <garlick@llnl.gov>, 
+ *             Moe Jette <jette1@llnl.gov>, et. al.
  *  UCRL-CODE-2002-040.
  *  
  *  This file is part of SLURM, a resource management program.
@@ -26,29 +27,31 @@
 \****************************************************************************/
 
 #if HAVE_CONFIG_H
-#  include <config.h> 
+#  include <config.h>
 #endif
 #include <stdlib.h>
 #include <errno.h>
 #include <netinet/in.h>
 #include <string.h>
+#include <time.h>
+#include <inttypes.h>
 
 #include <src/common/pack.h>
-#include <src/common/xmalloc.h>	
+#include <src/common/xmalloc.h>
+#include <src/common/macros.h>
 
 #define BUF_SIZE 4096
 
 
 /* Basic buffer management routines */
 /* create_buf - create a buffer with the supplied contents, contents must be xalloc'ed */
-Buf	
-create_buf (char *data, int size)
+Buf create_buf(char *data, int size)
 {
 	Buf my_buf;
 
-	my_buf = xmalloc (sizeof (struct slurm_buf));
-	my_buf->magic     = BUF_MAGIC;
-	my_buf->size      = size;
+	my_buf = xmalloc(sizeof(struct slurm_buf));
+	my_buf->magic = BUF_MAGIC;
+	my_buf->size = size;
 	my_buf->processed = 0;
 	my_buf->head = data;
 
@@ -56,55 +59,79 @@ create_buf (char *data, int size)
 }
 
 /* free_buf - release memory associated with a given buffer */
-void	
-free_buf (Buf my_buf)
+void free_buf(Buf my_buf)
 {
-	assert (my_buf->magic == BUF_MAGIC);
+	assert(my_buf->magic == BUF_MAGIC);
 	if (my_buf->head)
-		xfree (my_buf->head);
-	xfree (my_buf);
+		xfree(my_buf->head);
+	xfree(my_buf);
 }
 
 /* init_buf - create an empty buffer of the given size */
-Buf	
-init_buf (int size)
+Buf init_buf(int size)
 {
 	Buf my_buf;
 
-	my_buf = xmalloc (sizeof (struct slurm_buf));
-	my_buf->magic     = BUF_MAGIC;
-	my_buf->size      = size;
+	my_buf = xmalloc(sizeof(struct slurm_buf));
+	my_buf->magic = BUF_MAGIC;
+	my_buf->size = size;
 	my_buf->processed = 0;
-	my_buf->head = xmalloc (size);
+	my_buf->head = xmalloc(size);
 
 	return my_buf;
 }
 
 /* xfer_buf_data - return a pointer to the buffer's data and release the buffer's structure */
-void	*
-xfer_buf_data(Buf my_buf)
+void *xfer_buf_data(Buf my_buf)
 {
 	void *data_ptr;
 
-	assert (my_buf->magic == BUF_MAGIC);
+	assert(my_buf->magic == BUF_MAGIC);
 	data_ptr = (void *) my_buf->head;
-	xfree (my_buf);
+	xfree(my_buf);
 	return data_ptr;
 }
 
+/*
+ * Given a time_t in host byte order, promote it to int64_t, convert to
+ * network byte order, store in buffer and adjust buffer acc'd'ngly
+ */
+void 
+pack_time(time_t val, Buf buffer)
+{
+	int64_t n64 = HTON_int64((int64_t) val);
+
+	if (remaining_buf(buffer) < sizeof(n64)) {
+		buffer->size += BUF_SIZE;
+		xrealloc(buffer->head, buffer->size);
+	}
+
+	memcpy(&buffer->head[buffer->processed], &n64, sizeof(n64));
+	buffer->processed += sizeof(n64);
+}
+
+void 
+unpack_time(time_t * valp, Buf buffer)
+{
+	int64_t n64;
+	assert(remaining_buf(buffer) >= sizeof(n64));
+	memcpy(&n64, &buffer->head[buffer->processed], sizeof(n64));
+	buffer->processed += sizeof(n64);
+	*valp = (time_t) NTOH_int64(n64);
+}
+
 
 /*
  * Given a 32-bit integer in host byte order, convert to network byte order
  * store in buffer, and adjust buffer counters.
  */
-void
-_pack32(uint32_t val, Buf buffer)
+void _pack32(uint32_t val, Buf buffer)
 {
 	uint32_t nl = htonl(val);
 
 	if (remaining_buf(buffer) < sizeof(nl)) {
 		buffer->size += BUF_SIZE;
-		xrealloc (buffer->head, buffer->size);
+		xrealloc(buffer->head, buffer->size);
 	}
 
 	memcpy(&buffer->head[buffer->processed], &nl, sizeof(nl));
@@ -115,11 +142,10 @@ _pack32(uint32_t val, Buf buffer)
  * Given a buffer containing a network byte order 32-bit integer,
  * store a host integer at 'valp', and adjust buffer counters.
  */
-void
-_unpack32(uint32_t *valp, Buf buffer)
+void _unpack32(uint32_t * valp, Buf buffer)
 {
 	uint32_t nl;
-	assert (remaining_buf(buffer) >= sizeof(nl));
+	assert(remaining_buf(buffer) >= sizeof(nl));
 
 	memcpy(&nl, &buffer->head[buffer->processed], sizeof(nl));
 	*valp = ntohl(nl);
@@ -127,45 +153,42 @@ _unpack32(uint32_t *valp, Buf buffer)
 }
 
 /* Given a *uint32_t, it will pack an array of size_val */
-void
-_pack32array(uint32_t *valp, uint16_t size_val, Buf buffer)
+void _pack32array(uint32_t * valp, uint16_t size_val, Buf buffer)
 {
-	int i=0;
+	int i = 0;
 
-	_pack16( size_val, buffer );
+	_pack16(size_val, buffer);
 
-	for ( i=0; i < size_val; i++ ) {
-		_pack32( *(valp + i ), buffer );
+	for (i = 0; i < size_val; i++) {
+		_pack32(*(valp + i), buffer);
 	}
 }
 
 /* Given a int ptr, it will unpack an array of size_val
  */
-void
-_unpack32array( uint32_t **valp, uint16_t* size_val, Buf buffer)
+void _unpack32array(uint32_t ** valp, uint16_t * size_val, Buf buffer)
 {
-	int i=0;
+	int i = 0;
 
-	_unpack16( size_val, buffer );
-	*valp = xmalloc( (*size_val) * sizeof( uint32_t ) );
+	_unpack16(size_val, buffer);
+	*valp = xmalloc((*size_val) * sizeof(uint32_t));
 
-	for ( i=0; i < *size_val; i++ ) {
-		_unpack32( (*valp) + i , buffer ); 
+	for (i = 0; i < *size_val; i++) {
+		_unpack32((*valp) + i, buffer);
 	}
-}	
+}
 
 /*
  * Given a 16-bit integer in host byte order, convert to network byte order,
  * store in buffer and adjust buffer counters.
  */
-void
-_pack16(uint16_t val, Buf buffer)
+void _pack16(uint16_t val, Buf buffer)
 {
 	uint16_t ns = htons(val);
 
 	if (remaining_buf(buffer) < sizeof(ns)) {
 		buffer->size += BUF_SIZE;
-		xrealloc (buffer->head, buffer->size);
+		xrealloc(buffer->head, buffer->size);
 	}
 
 	memcpy(&buffer->head[buffer->processed], &ns, sizeof(ns));
@@ -176,11 +199,10 @@ _pack16(uint16_t val, Buf buffer)
  * Given a buffer containing a network byte order 16-bit integer,
  * store a host integer at 'valp', and adjust buffer counters.
  */
-void
-_unpack16(uint16_t *valp, Buf buffer)
+void _unpack16(uint16_t * valp, Buf buffer)
 {
 	uint16_t ns;
-	assert (remaining_buf(buffer) >= sizeof(ns));
+	assert(remaining_buf(buffer) >= sizeof(ns));
 
 	memcpy(&ns, &buffer->head[buffer->processed], sizeof(ns));
 	*valp = ntohs(ns);
@@ -191,12 +213,11 @@ _unpack16(uint16_t *valp, Buf buffer)
  * Given a 8-bit integer in host byte order, convert to network byte order
  * store in buffer, and adjust buffer counters.
  */
-void
-_pack8(uint8_t val, Buf buffer)
+void _pack8(uint8_t val, Buf buffer)
 {
 	if (remaining_buf(buffer) < sizeof(uint8_t)) {
 		buffer->size += BUF_SIZE;
-		xrealloc (buffer->head, buffer->size);
+		xrealloc(buffer->head, buffer->size);
 	}
 
 	memcpy(&buffer->head[buffer->processed], &val, sizeof(uint8_t));
@@ -207,10 +228,9 @@ _pack8(uint8_t val, Buf buffer)
  * Given a buffer containing a network byte order 8-bit integer,
  * store a host integer at 'valp', and adjust buffer counters.
  */
-void
-_unpack8(uint8_t *valp, Buf buffer)
+void _unpack8(uint8_t * valp, Buf buffer)
 {
-	assert (remaining_buf(buffer) >= sizeof(uint8_t));
+	assert(remaining_buf(buffer) >= sizeof(uint8_t));
 
 	memcpy(valp, &buffer->head[buffer->processed], sizeof(uint8_t));
 	buffer->processed += sizeof(uint8_t);
@@ -221,14 +241,13 @@ _unpack8(uint8_t *valp, Buf buffer)
  * size_val to network byte order and store at buffer followed by 
  * the data at valp. Adjust buffer counters.
  */
-void
-_packmem(char *valp, uint16_t size_val, Buf buffer)
+void _packmem(char *valp, uint16_t size_val, Buf buffer)
 {
 	uint16_t ns = htons(size_val);
 
-	if (remaining_buf(buffer) < (sizeof(ns)+size_val)) {
-		buffer->size      += (size_val + BUF_SIZE);
-		xrealloc (buffer->head, buffer->size);
+	if (remaining_buf(buffer) < (sizeof(ns) + size_val)) {
+		buffer->size += (size_val + BUF_SIZE);
+		xrealloc(buffer->head, buffer->size);
 	}
 
 	memcpy(&buffer->head[buffer->processed], &ns, sizeof(ns));
@@ -249,27 +268,25 @@ _packmem(char *valp, uint16_t size_val, Buf buffer)
  * NOTE: valp is set to point into the buffer bufp, a copy of 
  *	the data is not made
  */
-void
-_unpackmem_ptr(char **valp, uint16_t *size_valp, Buf buffer)
+void _unpackmem_ptr(char **valp, uint16_t * size_valp, Buf buffer)
 {
 	uint16_t ns;
 
-	assert (remaining_buf(buffer) >= sizeof(ns));
+	assert(remaining_buf(buffer) >= sizeof(ns));
 
 	memcpy(&ns, &buffer->head[buffer->processed], sizeof(ns));
 	*size_valp = ntohs(ns);
 	buffer->processed += sizeof(ns);
 
 	if (*size_valp > 0) {
-		assert (remaining_buf(buffer) >= *size_valp);
+		assert(remaining_buf(buffer) >= *size_valp);
 		*valp = &buffer->head[buffer->processed];
 		buffer->processed += *size_valp;
-	}
-	else
+	} else
 		*valp = NULL;
 
 }
-	
+
 
 /*
  * Given a buffer containing a network byte order 16-bit integer,
@@ -279,23 +296,21 @@ _unpackmem_ptr(char **valp, uint16_t *size_valp, Buf buffer)
  * NOTE: The caller is responsible for the management of valp and 
  * insuring it has sufficient size
  */
-void
-_unpackmem(char *valp, uint16_t *size_valp, Buf buffer)
+void _unpackmem(char *valp, uint16_t * size_valp, Buf buffer)
 {
 	uint16_t ns;
 
-	assert (remaining_buf(buffer) >= sizeof(ns));
+	assert(remaining_buf(buffer) >= sizeof(ns));
 
 	memcpy(&ns, &buffer->head[buffer->processed], sizeof(ns));
 	*size_valp = ntohs(ns);
 	buffer->processed += sizeof(ns);
 
 	if (*size_valp > 0) {
-		assert (remaining_buf(buffer) >= *size_valp);
-		memcpy ( valp, &buffer->head[buffer->processed], *size_valp);
+		assert(remaining_buf(buffer) >= *size_valp);
+		memcpy(valp, &buffer->head[buffer->processed], *size_valp);
 		buffer->processed += *size_valp;
-	}
-	else
+	} else
 		*valp = 0;
 }
 
@@ -308,24 +323,23 @@ _unpackmem(char *valp, uint16_t *size_valp, Buf buffer)
  *	the caller is responsible for calling xfree() on *valp
  *	if non-NULL (set to NULL on zero size buffer value)
  */
-void
-_unpackmem_xmalloc(char **valp, uint16_t *size_valp, Buf buffer)
+void _unpackmem_xmalloc(char **valp, uint16_t * size_valp, Buf buffer)
 {
 	uint16_t ns;
 
-	assert (remaining_buf(buffer) >= sizeof(ns));
+	assert(remaining_buf(buffer) >= sizeof(ns));
 
 	memcpy(&ns, &buffer->head[buffer->processed], sizeof(ns));
 	*size_valp = ntohs(ns);
 	buffer->processed += sizeof(ns);
 
 	if (*size_valp > 0) {
-		assert (remaining_buf(buffer) >= *size_valp);
+		assert(remaining_buf(buffer) >= *size_valp);
 		*valp = xmalloc(*size_valp);
-		memcpy (*valp, &buffer->head[buffer->processed], *size_valp);
+		memcpy(*valp, &buffer->head[buffer->processed],
+		       *size_valp);
 		buffer->processed += *size_valp;
-	}
-	else
+	} else
 		*valp = NULL;
 
 }
@@ -339,24 +353,23 @@ _unpackmem_xmalloc(char **valp, uint16_t *size_valp, Buf buffer)
  *	the caller is responsible for calling free() on *valp
  *	if non-NULL (set to NULL on zero size buffer value)
  */
-void
-_unpackmem_malloc(char **valp, uint16_t *size_valp, Buf buffer)
+void _unpackmem_malloc(char **valp, uint16_t * size_valp, Buf buffer)
 {
 	uint16_t ns;
 
-	assert (remaining_buf(buffer) >= sizeof(ns));
+	assert(remaining_buf(buffer) >= sizeof(ns));
 
 	memcpy(&ns, &buffer->head[buffer->processed], sizeof(ns));
 	*size_valp = ntohs(ns);
 	buffer->processed += sizeof(ns);
 
 	if (*size_valp > 0) {
-		assert (remaining_buf(buffer) >= *size_valp);
+		assert(remaining_buf(buffer) >= *size_valp);
 		*valp = malloc(*size_valp);
-		memcpy (*valp, &buffer->head[buffer->processed], *size_valp);
+		memcpy(*valp, &buffer->head[buffer->processed],
+		       *size_valp);
 		buffer->processed += *size_valp;
-	}
-	else
+	} else
 		*valp = NULL;
 
 }
@@ -366,23 +379,21 @@ _unpackmem_malloc(char **valp, uint16_t *size_valp, Buf buffer)
  * convert size_val to network byte order and store in the buffer followed by 
  * the data at valp. Adjust buffer counters. 
  */
-void
-_packstrarray(char **valp, uint16_t size_val, Buf buffer)
+void _packstrarray(char **valp, uint16_t size_val, Buf buffer)
 {
-	int i ;
+	int i;
 	uint16_t ns = htons(size_val);
 
 	if (remaining_buf(buffer) < sizeof(ns)) {
-		buffer->size      += BUF_SIZE;
-		xrealloc (buffer->head, buffer->size);
+		buffer->size += BUF_SIZE;
+		xrealloc(buffer->head, buffer->size);
 	}
 
 	memcpy(&buffer->head[buffer->processed], &ns, sizeof(ns));
 	buffer->processed += sizeof(ns);
 
-	for ( i = 0 ; i < size_val ; i ++ )
-	{
-		packstr(valp[i],buffer) ;
+	for (i = 0; i < size_val; i++) {
+		packstr(valp[i], buffer);
 	}
 
 }
@@ -395,29 +406,27 @@ _packstrarray(char **valp, uint16_t size_val, Buf buffer)
  *	the caller is responsible for calling xfree on *valp
  *	if non-NULL (set to NULL on zero size buffer value)
  */
-void
-_unpackstrarray (char ***valp, uint16_t *size_valp, Buf buffer)
+void _unpackstrarray(char ***valp, uint16_t * size_valp, Buf buffer)
 {
-	int i ;
+	int i;
 	uint16_t ns;
 	uint16_t uint16_tmp;
 
-	assert (remaining_buf(buffer) >= sizeof(ns));
+	assert(remaining_buf(buffer) >= sizeof(ns));
 
 	memcpy(&ns, &buffer->head[buffer->processed], sizeof(ns));
 	*size_valp = ntohs(ns);
 	buffer->processed += sizeof(ns);
 
 	if (*size_valp > 0) {
-		*valp = xmalloc(sizeof ( char * ) * ( *size_valp + 1 ) ) ;
-		for ( i = 0 ; i < *size_valp ; i ++ )
-		{
-			unpackstr_xmalloc ( & (*valp)[i] , & uint16_tmp , buffer ) ;
+		*valp = xmalloc(sizeof(char *) * (*size_valp + 1));
+		for (i = 0; i < *size_valp; i++) {
+			unpackstr_xmalloc(&(*valp)[i], &uint16_tmp,
+					  buffer);
 		}
-		(*valp)[i] = NULL ;	/* NULL terminated array so that execle */
-					/*    can detect end of array */
-	}
-	else
+		(*valp)[i] = NULL;	/* NULL terminated array so that execle */
+		/*    can detect end of array */
+	} else
 		*valp = NULL;
 
 }
@@ -426,12 +435,11 @@ _unpackstrarray (char ***valp, uint16_t *size_valp, Buf buffer)
  * Given a pointer to memory (valp), size (size_val), and buffer,
  * store the memory contents into the buffer 
  */
-void
-_packmem_array(char *valp, uint32_t size_val, Buf buffer)
+void _packmem_array(char *valp, uint32_t size_val, Buf buffer)
 {
 	if (remaining_buf(buffer) < size_val) {
-		buffer->size      += (size_val + BUF_SIZE);
-		xrealloc (buffer->head, buffer->size);
+		buffer->size += (size_val + BUF_SIZE);
+		xrealloc(buffer->head, buffer->size);
 	}
 
 	memcpy(&buffer->head[buffer->processed], valp, size_val);
@@ -442,13 +450,11 @@ _packmem_array(char *valp, uint32_t size_val, Buf buffer)
  * Given a pointer to memory (valp), size (size_val), and buffer,
  * store the buffer contents into memory 
  */
-void
-_unpackmem_array(char *valp, uint32_t size_valp, Buf buffer)
+void _unpackmem_array(char *valp, uint32_t size_valp, Buf buffer)
 {
 	if (remaining_buf(buffer) >= size_valp) {
-		memcpy ( valp, &buffer->head[buffer->processed], size_valp);
+		memcpy(valp, &buffer->head[buffer->processed], size_valp);
 		buffer->processed += size_valp;
-	}
-	else
-		*valp = 0 ;
+	} else
+		*valp = 0;
 }
diff --git a/src/common/pack.h b/src/common/pack.h
index e75bfca9f8e3152f084711fadfa1d29b82bfe1b3..b708e9cb16b6ad9d2b2e78646c75012363f3deae 100644
--- a/src/common/pack.h
+++ b/src/common/pack.h
@@ -41,6 +41,8 @@
 #include <stdint.h>
 #endif  /* HAVE_CONFIG_H */
 
+#include <time.h>
+
 #include <assert.h>
 
 #define BUF_MAGIC 0x42554545
@@ -89,11 +91,8 @@ void	_unpackmem_ptr(char **valp, uint16_t *size_valp, Buf buffer);
 void	_unpackmem_xmalloc(char **valp, uint16_t *size_valp, Buf buffer);
 void	_unpackmem_malloc(char **valp, uint16_t *size_valp, Buf buffer);
 
-/* FIXME for IA64 */
-#define pack_time(val,buf)				\
-	pack32((uint32_t)val,buf)
-#define unpack_time(val,buf)				\
-	unpack32((uint32_t *)val,buf)
+void 	pack_time(time_t val, Buf buffer);
+void    unpack_time(time_t *valp, Buf buffer);
 
 #define pack32(val,buf) do {				\
 	assert(sizeof(val) == sizeof(uint32_t)); 	\
diff --git a/src/common/slurm_auth_authd.c b/src/common/slurm_auth_authd.c
index 2f04612f03fa75d8354fde987853ba21615eb5cc..35af3cc6fd38b1ec2770d7a44effacd90a55cd69 100644
--- a/src/common/slurm_auth_authd.c
+++ b/src/common/slurm_auth_authd.c
@@ -165,11 +165,11 @@ void slurm_auth_pack_credentials( slurm_auth_t cred, Buf buffer)
 {
 	uint16_t chunk_size = sizeof( signature );
   
-	pack32( cred->creds.uid, buffer );
-	pack32( cred->creds.gid, buffer );
-	pack32( cred->creds.valid_from, buffer );
-	pack32( cred->creds.valid_to, buffer );
-	packmem( cred->sig.data, chunk_size, buffer );
+	pack32   ( cred->creds.uid,            buffer );
+	pack32   ( cred->creds.gid,            buffer );
+	pack_time( cred->creds.valid_from,     buffer );
+	pack_time( cred->creds.valid_to,       buffer );
+	packmem  ( cred->sig.data, chunk_size, buffer );
 }
 
 
@@ -180,11 +180,11 @@ void slurm_auth_unpack_credentials( slurm_auth_t *credp, Buf buffer)
 	slurm_auth_t cred;
 
 	cred = slurm_auth_alloc_credentials();
-	unpack32( &cred->creds.uid, buffer );
-	unpack32( &cred->creds.gid, buffer );
-	unpack32( (uint32_t *) &cred->creds.valid_from, buffer );
-	unpack32( (uint32_t *) &cred->creds.valid_to, buffer );
-	unpackmem_ptr( &data, &dummy, buffer );
+	unpack32     ( &cred->creds.uid,        buffer );
+	unpack32     ( &cred->creds.gid,        buffer );
+	unpack_time  ( &cred->creds.valid_from, buffer );
+	unpack_time  ( &cred->creds.valid_to,   buffer );
+	unpackmem_ptr( &data, &dummy,           buffer );
 	memcpy( cred->sig.data, data, sizeof( signature ) );
 	*credp = cred;
 	return;
diff --git a/src/common/slurm_protocol_defs.h b/src/common/slurm_protocol_defs.h
index d96cdb918685d9e9f6e3cf167d2bffb782ec8749..38d241ee89d37a9ef1c69c0ca6ad6162bd9d28ee 100644
--- a/src/common/slurm_protocol_defs.h
+++ b/src/common/slurm_protocol_defs.h
@@ -280,7 +280,7 @@ typedef struct job_descriptor {	/* Job descriptor for submit, allocate, and upda
 } job_descriptor_t;
 
 typedef struct job_step_id {
-	uint32_t last_update;
+	time_t last_update;
 	uint32_t job_id;
 	uint32_t job_step_id;
 } job_step_id_t;
@@ -343,7 +343,7 @@ typedef struct partition_info {
  *****************************************************************************/
 
 struct slurm_ctl_conf {
-	uint32_t last_update;	/* last update time of the build parameters */
+	time_t last_update;	/* last update time of the build parameters */
 	char *backup_addr;	/* comm path of slurmctld secondary server */
 	char *backup_controller;	/* name of slurmctld secondary server */
 	char *control_addr;	/* comm path of slurmctld primary server */
@@ -394,7 +394,7 @@ typedef struct job_step_create_response_msg {
 typedef struct job_step_specs job_step_create_request_msg_t;
 
 typedef struct job_step_info_response_msg {
-	uint32_t last_update;
+	time_t last_update;
 	uint32_t job_step_count;
 	job_step_info_t *job_steps;
 } job_step_info_response_msg_t;
@@ -403,13 +403,13 @@ typedef struct job_step_id job_step_id_msg_t;
 typedef struct job_step_id job_info_request_msg_t;
 
 typedef struct job_step_info_request_msg {
-	uint32_t last_update;
+	time_t last_update;
 	uint32_t job_id;
 	uint32_t step_id;
 } job_step_info_request_msg_t;
 
 typedef struct job_info_msg {
-	uint32_t last_update;
+	time_t last_update;
 	uint32_t record_count;
 	job_info_t *job_array;
 } job_info_msg_t;
@@ -426,7 +426,7 @@ typedef struct shutdown_msg {
 } shutdown_msg_t;
 
 typedef struct last_update_msg {
-	uint32_t last_update;
+	time_t last_update;
 } last_update_msg_t;
 
 typedef struct launch_tasks_request_msg {
@@ -465,13 +465,13 @@ typedef struct task_ext_msg {
 } task_exit_msg_t;
 
 typedef struct node_info_msg {
-	uint32_t last_update;
+	time_t last_update;
 	uint32_t record_count;
 	node_info_t *node_array;
 } node_info_msg_t;
 
 typedef struct partition_info_msg {
-	uint32_t last_update;
+	time_t last_update;
 	uint32_t record_count;
 	partition_info_t *partition_array;
 } partition_info_msg_t;
diff --git a/src/common/slurm_protocol_pack.c b/src/common/slurm_protocol_pack.c
index 862f08eb87f104360f2f61423c13b71f6fbf9e49..904c9e5c7f38e72d4820464c0e9df0ca0acea08c 100644
--- a/src/common/slurm_protocol_pack.c
+++ b/src/common/slurm_protocol_pack.c
@@ -979,7 +979,7 @@ int unpack_job_step_info_members ( job_step_info_t * step , Buf buffer )
 	unpack32  (&step->job_id, buffer);
 	unpack16  (&step->step_id, buffer);
 	unpack32  (&step->user_id, buffer);
-	unpack_time  ((uint32_t*)&step->start_time, buffer);
+	unpack_time (&step->start_time, buffer);
 	unpackstr_xmalloc (&step->partition, &uint16_tmp, buffer);
 	unpackstr_xmalloc (&step->nodes, &uint16_tmp, buffer);
 
diff --git a/src/scancel/Makefile.am b/src/scancel/Makefile.am
index 9c838680f5bd58003ddb90e17171c3a89fa08efc..df6d8ec7903b0035daee7db4e602a8cc3ebec603 100644
--- a/src/scancel/Makefile.am
+++ b/src/scancel/Makefile.am
@@ -2,11 +2,13 @@
 
 AUTOMAKE_OPTIONS = foreign
 
-INCLUDES = -I$(top_srcdir)/src/common -I$(top_srcdir)/src/api
+INCLUDES = -I$(top_srcdir) -I$(top_srcdir)/src/api
 
 bin_PROGRAMS = scancel
 
-LDADD = $(top_srcdir)/src/common/libcommon.la $(top_srcdir)/src/api/libslurm.la
+LDADD = 					\
+	$(top_builddir)/src/common/libcommon.la	\
+	$(top_builddir)/src/api/libslurm.la
 
 scancel_SOURCES = scancel.c
 
diff --git a/src/scontrol/Makefile.am b/src/scontrol/Makefile.am
index 364cf7218771df4786d191506553da0ad0b1f8e9..35e1d3bd4458b1bacee9a6edcd712d721363f0f9 100644
--- a/src/scontrol/Makefile.am
+++ b/src/scontrol/Makefile.am
@@ -2,11 +2,13 @@
 
 AUTOMAKE_OPTIONS = foreign
 
-INCLUDES = -I$(top_srcdir)/src/common -I$(top_srcdir)/src/api
+INCLUDES = -I$(top_srcdir) -I$(top_srcdir)/src/api
 
 bin_PROGRAMS = scontrol
 
-LDADD = $(top_srcdir)/src/common/libcommon.la $(top_srcdir)/src/api/libslurm.la
+LDADD = 					\
+	$(top_builddir)/src/common/libcommon.la \
+	$(top_builddir)/src/api/libslurm.la
 
 LIBS = -lpthread -ltermcap -lreadline
 
diff --git a/src/sinfo/Makefile.am b/src/sinfo/Makefile.am
index 29a440fd0c01f0b14a51263f8d449eb8bfdcabf6..c3d43a396e9a3101cc736c06b0c5cfff0c31aaa4 100644
--- a/src/sinfo/Makefile.am
+++ b/src/sinfo/Makefile.am
@@ -2,12 +2,11 @@
 
 AUTOMAKE_OPTIONS = foreign
 
-INCLUDES = $(POPT_INCLUDES) -I$(top_srcdir)/src/common -I$(top_srcdir)/src/api
-
+INCLUDES = $(POPT_INCLUDES) -I$(top_srcdir) -I$(top_srcdir)/src/api
 bin_PROGRAMS = sinfo
 
-LDADD = $(top_srcdir)/src/common/libcommon.la \
-	$(top_srcdir)/src/api/libslurm.la \
+LDADD = $(top_builddir)/src/common/libcommon.la \
+	$(top_builddir)/src/api/libslurm.la \
 	$(POPT_LIBS)
 
 noinst_HEADERS = sinfo.h
diff --git a/src/slurmctld/Makefile.am b/src/slurmctld/Makefile.am
index 3955131b31decc1ed61ffeeda8d7fdf1d36132e8..7911a31447346542ce5cfbd0326933e8fe6a5c0e 100644
--- a/src/slurmctld/Makefile.am
+++ b/src/slurmctld/Makefile.am
@@ -5,13 +5,13 @@
 AUTOMAKE_OPTIONS = foreign
 CLEANFILES = core.*
 
-INCLUDES = $(SSL_CPPFLAGS)
+INCLUDES = -I$(top_srcdir) $(SSL_CPPFLAGS)
 
 bin_PROGRAMS = slurmctld
 
-LDADD = $(top_srcdir)/src/common/libcommon.la    \
-	$(top_srcdir)/src/common/libcred.la      \
-	$(top_srcdir)/src/common/libdaemonize.la 
+LDADD = $(top_builddir)/src/common/libcommon.la    \
+	$(top_builddir)/src/common/libcred.la      \
+	$(top_builddir)/src/common/libdaemonize.la 
 
 
 slurmctld_SOURCES = 	\
diff --git a/src/slurmctld/job_mgr.c b/src/slurmctld/job_mgr.c
index 18fa1106fda684a7e13b87b3e61b969bd2a08ce1..9b4c5d82d813dbbce33ce5528f7d77949ef54481 100644
--- a/src/slurmctld/job_mgr.c
+++ b/src/slurmctld/job_mgr.c
@@ -438,10 +438,10 @@ load_job_state ( void )
 	char *data, *state_file;
 	Buf buffer;
 	uint32_t job_id, user_id, time_limit, priority, total_procs;
-	time_t buf_time, start_time, end_time;
+	time_t buf_time, start_time, end_time, submit_time;
 	uint16_t job_state, next_step_id, details;
 	char *nodes = NULL, *partition = NULL, *name = NULL;
-	uint32_t num_procs, num_nodes, min_procs, min_memory, min_tmp_disk, submit_time;
+	uint32_t num_procs, num_nodes, min_procs, min_memory, min_tmp_disk;
 	uint16_t shared, contiguous, kill_on_node_fail, name_len, batch_flag;
 	char *req_nodes = NULL, *features = NULL;
 	char  *err = NULL, *in = NULL, *out = NULL, *work_dir = NULL;
@@ -649,7 +649,7 @@ load_job_state ( void )
 		while (step_flag == STEP_FLAG) {
 			struct step_record *step_ptr;
 			uint16_t step_id, cyclic_alloc;
-			uint32_t start_time;
+			time_t start_time;
 			char *node_list;
 
 			safe_unpack16 (&step_id, buffer);
diff --git a/src/slurmctld/node_mgr.c b/src/slurmctld/node_mgr.c
index 47cadc83d3af0aceedb184271db288867a623c16..f154fa45630afcb6d1d3153b378431aa6c8c107b 100644
--- a/src/slurmctld/node_mgr.c
+++ b/src/slurmctld/node_mgr.c
@@ -425,9 +425,10 @@ load_node_state ( void )
 	char *node_name, *data, *state_file;
 	int data_allocated, data_read = 0, error_code = 0;
 	uint16_t node_state, name_len;
-	uint32_t time_stamp, cpus, real_memory, tmp_disk, data_size = 0;
+	uint32_t cpus, real_memory, tmp_disk, data_size = 0;
 	struct node_record *node_ptr;
 	int state_fd;
+	time_t time_stamp;
 	Buf buffer;
 
 	/* read the file */
diff --git a/src/slurmctld/partition_mgr.c b/src/slurmctld/partition_mgr.c
index 29018ad00a09cf59b2988eb771994738c0cad5af..96f5c182796c3713b0b9be371fe1e0fed7d66623 100644
--- a/src/slurmctld/partition_mgr.c
+++ b/src/slurmctld/partition_mgr.c
@@ -331,7 +331,8 @@ int
 load_part_state ( void )
 {
 	char *part_name, *allow_groups, *nodes, *state_file, *data;
-	uint32_t time, max_time, max_nodes;
+	uint32_t max_time, max_nodes;
+	time_t time;
 	uint16_t name_len, def_part_flag, root_only, shared, state_up;
 	struct part_record *part_ptr;
 	uint32_t data_size = 0;
diff --git a/src/slurmd/Makefile.am b/src/slurmd/Makefile.am
index d64594722600d17e0f9532251c28a88a25fd8383..c22b236c75948b75a5df64573796921e5a24bbc6 100644
--- a/src/slurmd/Makefile.am
+++ b/src/slurmd/Makefile.am
@@ -5,7 +5,7 @@ AUTOMAKE_OPTIONS = foreign
 
 sbin_PROGRAMS = slurmd 
 
-INCLUDES = $(SSL_CPPFLAGS)
+INCLUDES = -I$(top_srcdir) $(SSL_CPPFLAGS)
 
 if WITH_ELAN
 interconnect_lib = libelan_interconnect.la
@@ -17,9 +17,9 @@ noinst_LTLIBRARIES = 		\
 	libno_interconnect.la	
 endif
 
-LDADD = $(top_srcdir)/src/common/libcommon.la \
-	$(top_srcdir)/src/common/libdaemonize.la \
-	$(top_srcdir)/src/common/libcred.la \
+LDADD = $(top_builddir)/src/common/libcommon.la \
+	$(top_builddir)/src/common/libdaemonize.la \
+	$(top_builddir)/src/common/libcred.la \
 	$(SSL_LIBS)
 
 slurmd_LDADD = $(LDADD) $(interconnect_lib)
@@ -32,15 +32,16 @@ common_sources = 	        \
 	get_mach_stat.c         \
 	get_mach_stat.h		\
 	read_proc.c 	        \
-	read_proc.h 	        \
 	job.c job.h		\
 	io.c io.h		\
 	semaphore.c semaphore.h	\
 	shm.c shm.h		\
-	setenvpf.c setenvpf.h
+	setenvpf.c setenvpf.h   \
+	interconnect.h
 
 slurmd_SOURCES = $(common_sources)
 
+
 libelan_interconnect_la_SOURCES = elan_interconnect.c
 libno_interconnect_la_SOURCES   = no_interconnect.c
 
diff --git a/src/slurmd/slurmd.c b/src/slurmd/slurmd.c
index e6f3c3f7f35e46f3755e21ad649bac31813d6f49..99aa347e0fcb3084231083c3577dc8a6cb928013 100644
--- a/src/slurmd/slurmd.c
+++ b/src/slurmd/slurmd.c
@@ -310,6 +310,8 @@ _read_config()
 	char *epilog, *prolog, *tmpfs, *savedir, *pubkey;
 	FILE *fp;
 
+	epilog = prolog = tmpfs = savedir = pubkey = NULL;
+
 	if ((fp = fopen(conf->conffile, "r")) == NULL) {
 		error("Unable to open config file `%s': %m", conf->conffile); 
 		exit(1);
diff --git a/src/squeue/Makefile.am b/src/squeue/Makefile.am
index 1bff04faeb19eebe783c57af48d977018fb40d43..5f3c993b8a6e8ce6d9147c3a16b2c1ccaaec64fd 100644
--- a/src/squeue/Makefile.am
+++ b/src/squeue/Makefile.am
@@ -2,13 +2,13 @@
 
 AUTOMAKE_OPTIONS = foreign
 
-INCLUDES = -I$(top_srcdir)/src/common -I$(top_srcdir)/src/api
+INCLUDES = -I$(top_srcdir) -I$(top_srcdir)/src/api
 
 bin_PROGRAMS = squeue
 
-LDADD = $(top_srcdir)/src/common/libcommon.la \
-		$(top_srcdir)/src/api/libslurm.la \
-		$(POPT_LIBS)
+LDADD = $(top_builddir)/src/common/libcommon.la \
+	$(top_builddir)/src/api/libslurm.la     \
+	$(POPT_LIBS)
 
 noinst_HEADERS = squeue.h print.h
 squeue_SOURCES = squeue.c print.c opts.c 
diff --git a/src/srun/Makefile.am b/src/srun/Makefile.am
index 1c11e3b558efb6b1dbb01f9113a80d69bc516fd5..2de6a4c8a1d1fde9147ee718dd867aa6609633b6 100644
--- a/src/srun/Makefile.am
+++ b/src/srun/Makefile.am
@@ -1,15 +1,11 @@
 AUTOMAKE_OPTIONS = foreign
 
-INCLUDES = $(POPT_INCLUDES) 
+INCLUDES = -I$(top_srcdir) $(POPT_INCLUDES) 
 
 bin_PROGRAMS = srun
 
 srun_SOURCES = srun.c opt.c env.c opt.h env.h job.c job.h net.c net.h \
 	       msg.c msg.h io.c io.h launch.h launch.c attach.h
-srun_LDFLAGS = \
-	$(top_srcdir)/src/common/libcommon.la \
-	$(top_srcdir)/src/api/libslurm.la
-
-srun_LDADD = $(top_srcdir)/src/common/libcommon.la \
-		$(top_srcdir)/src/api/libslurm.la \
-		$(POPT_LIBS)
+srun_LDADD = $(top_builddir)/src/common/libcommon.la \
+	     $(top_builddir)/src/api/libslurm.la \
+	     $(POPT_LIBS)
diff --git a/src/srun/srun.c b/src/srun/srun.c
index 0209d8c8b151209cc9bb6a08c578520c44db9af5..8f4a7952536d27ec59db6b3e501bcb09dc29f31d 100644
--- a/src/srun/srun.c
+++ b/src/srun/srun.c
@@ -51,6 +51,7 @@
 #include <src/common/log.h>
 #include <src/common/xstring.h>
 #include <src/common/xmalloc.h>
+#include <src/common/xsignal.h>
 #include <src/common/slurm_protocol_api.h>
 
 #include <src/srun/opt.h>
diff --git a/testsuite/Makefile.am b/testsuite/Makefile.am
index 95ff3e9fa14c578132cf0014a5b2095d273cba2a..bd60340faccd9539e885e85ad3840a1ac2423fe7 100644
--- a/testsuite/Makefile.am
+++ b/testsuite/Makefile.am
@@ -4,3 +4,5 @@ AUTOMAKE_OPTIONS = dejagnu
 #RUNTESTDEFAULTFLAGS = --srcdir $$srcdir/testsuite
 
 SUBDIRS = slurm_unit
+
+noinst_HEADERS = dejagnu.h
diff --git a/testsuite/slurm_unit/api/Makefile.am b/testsuite/slurm_unit/api/Makefile.am
index 10bb3bb0e9fabf8eccb9fcb86559f891cd252365..0fb83f3ccdd8a5a72d76d9318e70d534b058bce3 100644
--- a/testsuite/slurm_unit/api/Makefile.am
+++ b/testsuite/slurm_unit/api/Makefile.am
@@ -3,6 +3,6 @@ AUTOMAKE_OPTIONS = foreign
 SUBDIRS = manual
 noinst_PROGRAMS = api-test 
 
-INCLUDES = -I$(top_srcdir)/src/common
-LDADD   = $(top_srcdir)/src/common/libcommon.la \
-		$(top_srcdir)/src/api/libslurm.la
+INCLUDES = -I$(top_srcdir) -I$(top_srcdir)/src/common
+LDADD   = $(top_builddir)/src/common/libcommon.la \
+	  $(top_builddir)/src/api/libslurm.la
diff --git a/testsuite/slurm_unit/api/manual/Makefile.am b/testsuite/slurm_unit/api/manual/Makefile.am
index 04f8a8fd40f227aad49ea4772b7113baa0d2965b..609bb40fe1572eb98489882ce197b5cfda597ae0 100644
--- a/testsuite/slurm_unit/api/manual/Makefile.am
+++ b/testsuite/slurm_unit/api/manual/Makefile.am
@@ -11,6 +11,6 @@ noinst_PROGRAMS = cancel-tst \
 		update_config-tst
 		
 
-INCLUDES = -I$(top_srcdir)/src/common
-LDADD   = $(top_srcdir)/src/common/libcommon.la \
-		$(top_srcdir)/src/api/libslurm.la
+INCLUDES = -I$(top_srcdir) -I$(top_srcdir)/src/common 
+LDADD    = $(top_builddir)/src/common/libcommon.la \
+	   $(top_builddir)/src/api/libslurm.la
diff --git a/testsuite/slurm_unit/common/Makefile.am b/testsuite/slurm_unit/common/Makefile.am
index f71447dbaa84665c11b745734f81f7f70fe4fc1c..2befcb5b9f080ede64e267fe136ef70774f3f369 100644
--- a/testsuite/slurm_unit/common/Makefile.am
+++ b/testsuite/slurm_unit/common/Makefile.am
@@ -6,6 +6,8 @@ else
 elan_testprogs =
 endif
 
+INCLUDES = -I$(top_srcdir)
+
 noinst_PROGRAMS = $(elan_testprogs) pack-test log-test stream_server stream_client bitstring-test slurm_protocol_message_client slurm_protocol_message_server
 
-LDADD   = $(top_srcdir)/src/common/libcommon.la
+LDADD   = $(top_builddir)/src/common/libcommon.la
diff --git a/testsuite/slurm_unit/common/log-test.c b/testsuite/slurm_unit/common/log-test.c
index 46572485021e74cfdd7c1f981871d53e162c9bbe..4662ed0e96f2acd7952d4f69c0ba868c6f80ca33 100644
--- a/testsuite/slurm_unit/common/log-test.c
+++ b/testsuite/slurm_unit/common/log-test.c
@@ -1,6 +1,11 @@
 
+#include <src/common/slurm_errno.h>
 #include <src/common/log.h>
 
+int bad_func()
+{
+	slurm_seterrno_ret(EINVAL);
+}
 int main(int ac, char **av)
 {
 	/* test elements */
@@ -34,9 +39,26 @@ int main(int ac, char **av)
 
 	info   ("testing unsigned: %u   int: % 08d", u, negi);
 
+	switch (fork()) {
+          case 0:
+		  info("in child %ld", getpid());
+		  log_reinit();
+		  info("in child after log reinit");
+		  exit(0);
+		  break;
+	  case -1:
+		  error("fork: %m");
+		  break;
+	  default:
+		  info("in parent %ld", getpid());
+		  break;
+	}
 	/* for now, this test passes if we make it through without 
 	 * dumping core
 	 */
+
+	if (bad_func() < 0)
+		error("bad_func: %m");
 	return 0;
 }
 	
diff --git a/testsuite/slurm_unit/common/pack-test.c b/testsuite/slurm_unit/common/pack-test.c
index 9bbec9aa4e5db7d4aa76ca8aade1098f66011ce6..0d7f55a1a6a0c2e565b6e59d816124142f831dcb 100644
--- a/testsuite/slurm_unit/common/pack-test.c
+++ b/testsuite/slurm_unit/common/pack-test.c
@@ -1,5 +1,9 @@
 /* $Id$ */
 
+#if HAVE_CONFIG_H
+#  include <config.h>
+#endif
+
 #if HAVE_INTTYPES_H
 #  include <inttypes.h>
 #else
diff --git a/testsuite/slurm_unit/slurmctld/Makefile.am b/testsuite/slurm_unit/slurmctld/Makefile.am
index c8f7df92c7624d43194496229af14056ac91dc14..8337b5eae4977878db2ef1476bcf193dfc4b90cb 100644
--- a/testsuite/slurm_unit/slurmctld/Makefile.am
+++ b/testsuite/slurm_unit/slurmctld/Makefile.am
@@ -1,33 +1,34 @@
 AUTOMAKE_OPTIONS = foreign
 
 noinst_PROGRAMS = job_mgr-test job_step-test job_add job_cancel step_create
-
-INCLUDES = -I$(top_srcdir)/src/common
-
-job_step_test_LDADD = $(top_srcdir)/src/common/libcommon.la \
-		$(top_srcdir)/src/api/libslurm.la
-
-step_create_LDADD = $(top_srcdir)/src/common/libcommon.la \
-		$(top_srcdir)/src/api/libslurm.la
-
-job_add_LDADD = $(top_srcdir)/src/common/libcommon.la \
-		$(top_srcdir)/src/api/libslurm.la
-
-job_cancel_LDADD = $(top_srcdir)/src/common/libcommon.la \
-		$(top_srcdir)/src/api/libslurm.la
-
-LDADD   = $(top_srcdir)/src/common/libcommon.la \
-		$(top_srcdir)/src/slurmctld/agent.o \
-		$(top_srcdir)/src/slurmctld/job_scheduler.o \
-		$(top_srcdir)/src/slurmctld/node_scheduler.o \
-		$(top_srcdir)/src/slurmctld/partition_mgr.o \
-		$(top_srcdir)/src/slurmctld/step_mgr.o \
-		$(top_srcdir)/src/slurmctld/job_mgr.o \
-		$(top_srcdir)/src/slurmctld/node_mgr.o \
-		$(top_srcdir)/src/slurmctld/locks.o \
-		$(top_srcdir)/src/common/parse_spec.o  \
-		$(top_srcdir)/src/slurmctld/read_config.o \
-		$(top_srcdir)/src/api/libslurm.la \
-		$(top_srcdir)/src/common/libcred.la \
+noinst_HEADERS  = get_resp.h
+
+INCLUDES = -I$(top_srcdir) -I$(top_srcdir)/src/common
+
+job_step_test_LDADD = $(top_builddir)/src/common/libcommon.la \
+		$(top_builddir)/src/api/libslurm.la
+
+step_create_LDADD = $(top_builddir)/src/common/libcommon.la \
+		$(top_builddir)/src/api/libslurm.la
+
+job_add_LDADD = $(top_builddir)/src/common/libcommon.la \
+		$(top_builddir)/src/api/libslurm.la
+
+job_cancel_LDADD = $(top_builddir)/src/common/libcommon.la \
+		$(top_builddir)/src/api/libslurm.la
+
+LDADD   = $(top_builddir)/src/common/libcommon.la \
+		$(top_builddir)/src/slurmctld/agent.o \
+		$(top_builddir)/src/slurmctld/job_scheduler.o \
+		$(top_builddir)/src/slurmctld/node_scheduler.o \
+		$(top_builddir)/src/slurmctld/partition_mgr.o \
+		$(top_builddir)/src/slurmctld/step_mgr.o \
+		$(top_builddir)/src/slurmctld/job_mgr.o \
+		$(top_builddir)/src/slurmctld/node_mgr.o \
+		$(top_builddir)/src/slurmctld/locks.o \
+		$(top_builddir)/src/common/parse_spec.o  \
+		$(top_builddir)/src/slurmctld/read_config.o \
+		$(top_builddir)/src/api/libslurm.la \
+		$(top_builddir)/src/common/libcred.la \
 		$(SSL_LIBS)
 
diff --git a/testsuite/slurm_unit/slurmd/Makefile.am b/testsuite/slurm_unit/slurmd/Makefile.am
index 2e3f28b5c52764fef2e593c8ae7f03a376637403..893dc7b1d24f2ce15bc1841825f7a22980024d57 100644
--- a/testsuite/slurm_unit/slurmd/Makefile.am
+++ b/testsuite/slurm_unit/slurmd/Makefile.am
@@ -13,7 +13,7 @@ io_lib = $(top_srcdir)/src/slurmd/libthreaded_io.la
 endif
 	
 
-INCLUDES = -I$(top_srcdir)/src/common
+INCLUDES = -I$(top_srcdir) -I$(top_srcdir)/src/common
 LDADD   = $(top_srcdir)/src/common/libcommon.la \
 	$(top_srcdir)/src/slurmd/task_mgr.o \
 	$(top_srcdir)/src/slurmd/shmem_struct.o \