static int getOptions(const struct driver * mod, int * argcp, 
		      char *** argvp) {
    newtComponent form, listbox, text, okay, answer;
    char buf[2000];
    
    if (!mod->options) {
	(*argcp)++;
	(*argvp) = realloc(*argvp, (*argcp + 1) * sizeof(char *));
	(*argvp)[(*argcp) - 1] = mod->defaultOptions;
	(*argvp)[(*argcp)] = NULL;
	if (!mod->defaultOptions)
	    (*argcp)--;
	
	return 0;
    }

    if (mod->options == unknownOptions) {
	sprintf(buf, "In some cases, the %s driver needs to have extra "
		"information to work properly, although it normally works "
		"fine without any. Would you like to specify extra options "
		"for it or allow the driver to probe your machine for the "
		"information it needs. Occasionally, probing will hang a "
		"computer, but it should not harm one beyond that.", mod->name);
    } else {
	sprintf(buf, "In many cases, the %s driver needs to be provided with "
		"extra information on your hardware to work. If you prefer, "
		"some common values for those parameters will be tried. "
		"This process can hang a machine however, although it should "
		"not cause any damage to it.", mod->name);
    }

    newtOpenWindow(10, 5, 60, 15, "Module Parameters");
    text = newtTextbox(1, 1, 55, 7, NEWT_TEXTBOX_WRAP);
    newtTextboxSetText(text, buf);

    okay = newtButton(20, 10, "Ok");

    form = newtForm(NULL, NULL, 0);
    newtFormAddComponents(form, text, okay, NULL);

    answer = newtRunForm(form);

    newtFinished();
    exit(1);

    return 0;
}

