write(fd, str, strlen(str));
close(fd);
talloc_free(str);
+ if (oserver->argv)
+ execvp(oserver->argv[0], oserver->argv);
}
static bool load_file(struct oserver *oserver, const char *file)
}
struct oserver *oserver_setup(struct tevent_context *ev, unsigned short port,
- const char *dumpfile)
+ const char *dumpfile, char *argv[])
{
struct oserver *oserver;
int one = 1;
} u;
oserver = talloc(ev, struct oserver);
+ oserver->argv = argv;
+ if (argv) {
+ /* Count the terminal NULL in argv_len. */
+ for (oserver->argv_len = 1;
+ argv[oserver->argv_len - 1];
+ oserver->argv_len++);
+ } else
+ oserver->argv_len = 0;
clear_clients(oserver);
oserver->fd = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
if (oserver->fd < 0) {