handle return values for ssisys on NSC
diff --git a/ChangeLog b/ChangeLog
index f0bf4b3..45460f9 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,9 @@
 2001-10-18  John Hughes  <john@Calva.COM>
 
+	* system.c(sys_ssisys): handle return values for ssisys
+
+2001-10-18  John Hughes  <john@Calva.COM>
+
 	* signal.c: handle sigwait
 	* svr4/dummy.c: Move sigwait to done
 	* svr4/syscall.h: handle sigwait
diff --git a/system.c b/system.c
index ef4e0e4..f56f423 100644
--- a/system.c
+++ b/system.c
@@ -2064,10 +2064,11 @@
 struct tcb *tcp;
 {
 	struct ssisys_iovec iov;
-	
+	cls_nodeinfo_args_t cni;
+	clusternode_info_t info;
+
 	if (entering (tcp)) {
 		ts_reclaim_child_inargs_t trc;
-		cls_nodeinfo_args_t cni;
 		if (tcp->u_arg[1] != sizeof iov ||
 		    umove (tcp, tcp->u_arg[0], &iov) < 0)
 		{
@@ -2101,13 +2102,31 @@
 		}
 	}
 	else {
+		if (tcp->u_arg[1] != sizeof iov ||
+		    umove (tcp, tcp->u_arg[0], &iov) < 0)
+		    goto done;
 		switch (iov.tio_id.id_cmd) {
+		    case SSISYS_CLUSTERNODE_INFO:
+			if (iov.tio_udatainlen != sizeof cni ||
+			    umove (tcp, (long) iov.tio_udatain, &cni) < 0)
+				goto bad_out;
+			if (cni.info_len != sizeof info || 
+			    iov.tio_udataoutlen != sizeof &info ||
+			    umove (tcp, (long) iov.tio_udataout, &info) < 0)
+				goto bad_out;
+			tprintf (", out={node=%ld, cpus=%d, online=%d}",
+				 info.node_num, info.node_totalcpus,
+				 info.node_onlinecpus);
+			break;
+			
 		    default:
+		    bad_out:
 			if (iov.tio_udataoutlen) {
 				tprintf (", out=[/* %d bytes */]",
 					 iov.tio_udataoutlen);
 			}
 		}
+	    done:
 		tprintf ("}, %ld", tcp->u_arg[1]);
 	}
 	return 0;