static int t_argc;
static char **t_argv;
-static FILE *t_stdin;
+static FILE *t_stdin, *stdoutcopy;
static int t_sys_fd;
static int bail(const char *msg) {
}
void Texit(int rv) {
- fprintf(stderr,"**Texit(%d)**\n",rv);
+ fprintf(stdoutcopy,"rc=%d\n",rv);
+ if (ferror(stdoutcopy) || fclose(stdoutcopy)) baile("flush rc msg");
Tcommonshutdown();
exit(0);
}
if (argc!=1)
bail("usage: *_fuzz (no arguments)");
+ int stdoutcopyfd= dup(1);
+ if (stdoutcopyfd<0) baile("dup 1 again");
+ stdoutcopy= fdopen(stdoutcopyfd,"w");
+ if (!stdoutcopy) baile("fdopen 1 again");
+
t_argc = getint(50);
t_argv = calloc(t_argc+1, sizeof(*t_argv));
for (i=0; i<t_argc; i++) {
if (dup2(fileno(t_stdin), 0)) baile("dup2 t_stdin");
if (fseek(stdin, 0, SEEK_SET)) baile("rewind t_stdin");
- if (dup2(1,2)!=2) baile("redirect stderr to stdout");
-
int estatus = Hmain(t_argc, t_argv);
Texit(estatus);
}
+
+void Tmallocshutdown(void) { }
+void *Hmalloc(size_t s) { assert(s); return malloc(s); }
+void *Hrealloc(void *p, size_t s) { assert(s); return realloc(p,s); }
+void Hfree(void *p) { free(p); }