summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/tet3/tcc/scenario.c8
-rw-r--r--src/tet3/tcc/service.c8
-rw-r--r--src/tet3/tcc/tcc.c6
-rw-r--r--src/tet3/tcc/tcc.h4
-rw-r--r--src/tet3/tcm/dtcm.c35
-rw-r--r--src/tet3/tcm/ictp.c2
6 files changed, 40 insertions, 23 deletions
diff --git a/src/tet3/tcc/scenario.c b/src/tet3/tcc/scenario.c
index 4a6ebfc0..ecea0ad1 100644
--- a/src/tet3/tcc/scenario.c
+++ b/src/tet3/tcc/scenario.c
@@ -175,11 +175,11 @@ char *scenario, *sopt, *cwd;
** execscen() - execute (process) the scenario
*/
-void execscen()
+int execscen()
{
register struct proctab *prp, *q;
static int sys0 = 0;
- int delay, ndelay;
+ int delay, ndelay, status = EXIT_SUCCESS;
time_t now, next;
/* return now if the scenario is empty */
@@ -228,7 +228,7 @@ void execscen()
#endif /* NOTRACE */
SLEEP((unsigned) ndelay);
}
- tcc_sloop();
+ status = tet_addresult(status, tcc_sloop());
if (prp->pr_state == PRS_IDLE)
break;
now = time((time_t *) 0);
@@ -245,6 +245,8 @@ void execscen()
/* all finished so free the proctab and return */
prfree(prp);
+
+ return status;
}
/*
diff --git a/src/tet3/tcc/service.c b/src/tet3/tcc/service.c
index 1f482653..9657370e 100644
--- a/src/tet3/tcc/service.c
+++ b/src/tet3/tcc/service.c
@@ -37,6 +37,7 @@ MODIFICATIONS:
************************************************************************/
#include <stdio.h>
+#include <stdlib.h>
#include <sys/types.h>
#include <time.h>
#include "dtmac.h"
@@ -72,10 +73,11 @@ static void wakeup PROTOLIST((struct proctab *));
** service all entries in the run queue which need attention
*/
-void tcc_sloop()
+int tcc_sloop()
{
register struct proctab *prp, *rqforw;
register int done;
+ int status = EXIT_SUCCESS;
TRACE1(tet_Texec, 2, "tcc_sloop() START");
@@ -88,6 +90,8 @@ void tcc_sloop()
if (prp->pr_flags & PRF_ATTENTION) {
prp->pr_flags &= ~PRF_ATTENTION;
tcc_service(prp);
+ status = tet_addresult(status,
+ prp->pr_jnlstatus);
done = 0;
}
}
@@ -95,6 +99,8 @@ void tcc_sloop()
} while (!done);
TRACE1(tet_Texec, 2, "tcc_sloop() END");
+
+ return status;
}
/*
diff --git a/src/tet3/tcc/tcc.c b/src/tet3/tcc/tcc.c
index a3071c36..c26ac565 100644
--- a/src/tet3/tcc/tcc.c
+++ b/src/tet3/tcc/tcc.c
@@ -121,7 +121,7 @@ char **argv;
char *codelist = (char *) 0;
char *old_journal_file = (char *) 0;
char *scenario = "all";
- int errors = 0;
+ int errors = 0, status = EXIT_SUCCESS;
/*
** initialise the global variables for use by the library -
@@ -501,10 +501,10 @@ char **argv;
initenviron();
/* fire up the execution engine and process the scenario */
- execscen();
+ status = execscen();
/* here if all has been successful */
- tcc_exit(0);
+ tcc_exit(status);
/* NOTREACHED */
return(1);
}
diff --git a/src/tet3/tcc/tcc.h b/src/tet3/tcc/tcc.h
index f0561ddc..a8d5d86f 100644
--- a/src/tet3/tcc/tcc.h
+++ b/src/tet3/tcc/tcc.h
@@ -146,7 +146,7 @@ extern void distcfg PROTOLIST((void));
extern void doconfig PROTOLIST((void));
extern void engine_shutdown PROTOLIST((void));
extern void exec_block_signals PROTOLIST((void));
-extern void execscen PROTOLIST((void));
+extern int execscen PROTOLIST((void));
extern void execsigtrap PROTOLIST((void));
extern void exec_unblock_signals PROTOLIST((void));
extern void fullpath PROTOLIST((char *, char *, char [], int, int));
@@ -221,7 +221,7 @@ extern int tcc_mkdir PROTOLIST((int, char *));
extern int tcc_putenv PROTOLIST((int, char *));
extern int tcc_putenvv PROTOLIST((int, char **, int));
extern int tcc_rmdir PROTOLIST((int, char *));
-extern void tcc_sloop PROTOLIST((void));
+extern int tcc_sloop PROTOLIST((void));
extern int tcc_timeouts PROTOLIST((time_t));
extern int tcc_unlink PROTOLIST((int, char *));
extern int tcc_waitnohang PROTOLIST((int, long, int *));
diff --git a/src/tet3/tcm/dtcm.c b/src/tet3/tcm/dtcm.c
index 43671300..43eebdf7 100644
--- a/src/tet3/tcm/dtcm.c
+++ b/src/tet3/tcm/dtcm.c
@@ -218,8 +218,8 @@ static long start_sequence;
static void build_icl2 PROTOLIST((char *, int, int));
static void build_icl3 PROTOLIST((char *, int, int));
static void build_iclist PROTOLIST((char **, int));
-static void call_1tp PROTOLIST((int, int, int));
-static int call_tps PROTOLIST((int, int));
+static int call_1tp PROTOLIST((int, int, int));
+static int call_tps PROTOLIST((int, int *));
static struct iclist *iclalloc PROTOLIST((void));
static int split PROTOLIST((char *, char **, int, int));
@@ -243,7 +243,7 @@ char **argv;
{
char *cp;
struct iclist *icp;
- int iccount, tpcount, icnum, rc;
+ int iccount, tpcount, icnum, rc, ret = TET_PASS;
#ifndef TET_LITE /* -START-LITE-CUT */
int nsys;
#endif /* -END-LITE-CUT- */
@@ -366,7 +366,8 @@ char **argv;
ASSERT_LITE(rc == 0);
if (rc < 0)
tet_docleanup(EXIT_FAILURE);
- tpcount = call_tps(icnum, tpcount);
+ ret = tet_addresult(ret,
+ call_tps(icnum, &tpcount));
tet_icend(icnum, tpcount);
}
@@ -374,7 +375,7 @@ char **argv;
setsigs(sigabandon);
/* call the user-supplied cleanup routine (if any) and exit */
- tet_docleanup(EXIT_SUCCESS);
+ tet_docleanup(ret);
/* NOTREACHED */
return(EXIT_SUCCESS);
@@ -388,18 +389,20 @@ char **argv;
*/
static int call_tps(icnum, tpcount)
-int icnum, tpcount;
+int icnum, *tpcount;
{
- int testcount, testnum, tpnum;
+ int testcount, testnum, tpnum, result = TET_PASS;
#ifndef TET_LITE /* -START-LITE-CUT- */
long spno;
#endif /* -END-LITE-CUT- */
+ ASSERT(tpcount)
+
TRACE3(tet_Ttcm, 6, "call_tps(): icnum = %s, tpcount = %s",
- tet_i2a(icnum), tet_i2a(tpcount));
+ tet_i2a(icnum), tet_i2a(*tpcount));
testcount = 0;
- for (tpnum = 1; tpnum <= tpcount; tpnum++) {
+ for (tpnum = 1; tpnum <= *tpcount; tpnum++) {
#ifndef TET_LITE /* -START-LITE-CUT- */
spno = MK_ASPNO(0, tpnum, S_TPSTART);
if (EX_TPNO(spno) != tpnum) {
@@ -408,20 +411,24 @@ int icnum, tpcount;
}
#endif /* -END-LITE-CUT- */
testnum = tet_gettestnum(icnum, tpnum);
- call_1tp(icnum, tpnum, testnum);
+ result = tet_addresult(result,
+ call_1tp(icnum, tpnum, testnum));
testcount++;
}
- return(testcount);
+ *tpcount = testcount;
+ return(result);
}
/*
** call_1tp() - call a single test purpose function
*/
-static void call_1tp(icnum, tpnum, testnum)
+static int call_1tp(icnum, tpnum, testnum)
int icnum, tpnum, testnum;
{
+ int result;
+
TRACE4(tet_Ttcm, 6, "call_1tp(): icnum = %s, tpnum = %s, testnum = %s",
tet_i2a(icnum), tet_i2a(tpnum), tet_i2a(testnum));
@@ -522,8 +529,10 @@ int icnum, tpnum, testnum;
** if the action code for the result is ABORT, call the user-supplied
** cleanup function and exit
*/
- if (tet_tpend(icnum, tpnum, testnum) < 0)
+ if ((result = tet_tpend(icnum, tpnum, testnum)) < 0)
tet_docleanup(EXIT_FAILURE);
+
+ return result;
}
diff --git a/src/tet3/tcm/ictp.c b/src/tet3/tcm/ictp.c
index 5b77514c..ec9737e1 100644
--- a/src/tet3/tcm/ictp.c
+++ b/src/tet3/tcm/ictp.c
@@ -565,7 +565,7 @@ int icno, tpno, testnum;
return(-1);
}
- return(0);
+ return(result);
}
#else /* -START-LITE-CUT- */