Two cleanups: tcb table expansion failure is not really a survivable
event, we do not have any viable way to continue. No wonder most
places where that is detected have FIXMEs.
It's way simpler to treat as fatal failure, and handle it inside
tcb table expansion finctions.
Second cleanup: tidy up haphazard locations of a few externs.

* defs.h: Change return type of expand_tcbtab() to void.
Declare change_syscall().
* process.c: Change all callsites of alloctcb(), alloc_tcb() and
fork_tcb(), removing now-redundant error checks.
(fork_tcb): Change return type to void - it can't fail now.
* strace.c: Move extern declarations out of function bodies.
Change all callsites of alloctcb(), alloc_tcb() and
fork_tcb(), removing now-redundant error checks.
(expand_tcbtab): Change return type to void - it can't fail now.
On failure to expand, print a message, clean up, and exit.
(alloc_tcb): On failure to expand, print a message, clean up, and exit.
* util.c (setbpt): Remove extern declaration from function body.
diff --git a/process.c b/process.c
index 7107361..bd80667 100644
--- a/process.c
+++ b/process.c
@@ -487,25 +487,19 @@
 /* TCP is creating a child we want to follow.
    If there will be space in tcbtab for it, set TCB_FOLLOWFORK and return 0.
    If not, clear TCB_FOLLOWFORK, print an error, and return 1.  */
-static int
+static void
 fork_tcb(struct tcb *tcp)
 {
-	if (nprocs == tcbtabsize) {
-		if (expand_tcbtab()) {
-			tcp->flags &= ~TCB_FOLLOWFORK;
-			return 1;
-		}
-	}
+	if (nprocs == tcbtabsize)
+		expand_tcbtab();
 
 	tcp->flags |= TCB_FOLLOWFORK;
-	return 0;
 }
 
 #ifdef USE_PROCFS
 
 int
-sys_fork(tcp)
-struct tcb *tcp;
+sys_fork(struct tcb *tcp)
 {
 	if (exiting(tcp) && !syserror(tcp)) {
 		if (getrval2(tcp)) {
@@ -551,12 +545,10 @@
 			return 0;
 		if (!followfork)
 			return 0;
-		if (fork_tcb(tcp))
-			return 0;
+		fork_tcb(tcp);
 		if (syserror(tcp))
 			return 0;
-		if ((tcpchild = alloctcb(tcp->u_rval)) == NULL)
-			return 0;
+		tcpchild = alloctcb(tcp->u_rval);
 		if (proc_open(tcpchild, 2) < 0)
 		  	droptcb(tcpchild);
 	}
@@ -706,9 +698,7 @@
 }
 
 int
-change_syscall(tcp, new)
-struct tcb *tcp;
-int new;
+change_syscall(struct tcb *tcp, int new)
 {
 #if defined(LINUX)
 #if defined(I386)
@@ -758,9 +748,12 @@
 #elif defined(IA64)
 	if (ia32) {
 		switch (new) {
-		      case 2: break;	/* x86 SYS_fork */
-		      case SYS_clone:	new = 120; break;
-		      default:
+		case 2:
+			break;	/* x86 SYS_fork */
+		case SYS_clone:
+			new = 120;
+			break;
+		default:
 			fprintf(stderr, "%s: unexpected syscall %d\n",
 				__FUNCTION__, new);
 			return -1;
@@ -892,8 +885,7 @@
 	if (entering(tcp)) {
 		if (!followfork)
 			return 0;
-		if (fork_tcb(tcp))
-			return 0;
+		fork_tcb(tcp);
 		if (setbpt(tcp) < 0)
 			return 0;
 	} else {
@@ -924,12 +916,8 @@
 		}
 		else
 #endif
-		if (fork_tcb(tcp) || (tcpchild = alloctcb(pid)) == NULL) {
-			if (bpt)
-				clearbpt(tcp);
-			kill(pid, SIGKILL); /* XXX */
-			return 0;
-		}
+		fork_tcb(tcp);
+		tcpchild = alloctcb(pid);
 
 #ifndef CLONE_PTRACE
 		/* Attach to the new child */
@@ -1042,8 +1030,7 @@
 	if (entering(tcp)) {
 		if (!followfork || dont_follow)
 			return 0;
-		if (fork_tcb(tcp))
-			return 0;
+		fork_tcb(tcp);
 		if (setbpt(tcp) < 0)
 			return 0;
   	}
@@ -1059,10 +1046,8 @@
 			return 0;
 
 		pid = tcp->u_rval;
-		if (fork_tcb(tcp) || (tcpchild = alloctcb(pid)) == NULL) {
-			kill(pid, SIGKILL); /* XXX */
-			return 0;
-		}
+		fork_tcb(tcp);
+		tcpchild = alloctcb(pid);
 #ifdef LINUX
 #ifdef HPPA
 		/* The child must have run before it can be attached. */