Example #1
0
void
set_input(const char *name)
{
	static int set = 0;
	module_conf_t *ml, *m;
	
	if (set)
		return;
	set = 1;

	if (NULL == name || !strcasecmp(name, "list")) {
		list_input();
		exit(0);
	}
	
	ml = parse_module_param(name);

	for (m = ml; m; m = m->next) {
		preferred = get_input_module(ml->name);

		if (NULL == preferred)
			continue;

		if (preferred->im_set_opts)
			preferred->im_set_opts(ml->attrs);

		if (preferred->im_probe)
			if (preferred->im_probe())
				return;
	}

	quit("No (working) input module found\n");
}
Example #2
0
PRIVATE void list_horse(char **buf, struct comal_line *line)
{
	if (!line) return;

	switch (line->cmd) {
	case 0:
		break;

	case runSYM:
	case delSYM:
	case chdirSYM:
	case rmdirSYM:
	case mkdirSYM:
	case osSYM:
	case dirSYM:
	case unitSYM:
	case select_outputSYM:
	case select_inputSYM:
	case returnSYM:
	case elifSYM:
	case traceSYM:
	case untilSYM:
		list_symsp(buf, line->cmd);
		list_exp(buf, line->lc.exp);
		break;

	case exitSYM:
		list_sym(buf, line->cmd);

		if (line->lc.exp) {
			list_char(buf, ' ');
			list_symsp(buf, whenSYM);
			list_exp(buf, line->lc.exp);
		}

		break;

	case stopSYM:
		list_sym(buf, line->cmd);

		if (line->lc.exp) {
			list_char(buf, ' ');
			list_exp(buf, line->lc.exp);
		}

		break;

	case elseSYM:
	case endSYM:
	case endcaseSYM:
	case endifSYM:
	case endloopSYM:
	case endwhileSYM:
	case otherwiseSYM:
	case loopSYM:
	case nullSYM:
	case retrySYM:
	case pageSYM:
	case handlerSYM:
	case endtrapSYM:
		list_sym(buf, line->cmd);
		break;

	case repeatSYM:
		list_repeat(buf, line);
		break;

	case trapSYM:
		list_sym(buf, line->cmd);

		if (line->lc.traprec.esc) {
			list_char(buf, ' ');
			list_sym(buf, escSYM);
			list_sym(buf, line->lc.traprec.esc);
		}

		break;

	case execSYM:
		if (show_exec)
			list_symsp(buf, execSYM);

		list_exp(buf, line->lc.exp);
		break;

	case caseSYM:
		list_symsp(buf, line->cmd);
		list_expsp(buf, line->lc.exp);
		list_sym(buf, ofSYM);
		break;

	case cursorSYM:
		list_symsp(buf, line->cmd);
		list_twoexp(buf, &line->lc.twoexp, ",", 1);
		break;

	case closeSYM:
		list_sym(buf, line->cmd);

		if (line->lc.exproot) {
			list_char(buf, ' ');
			list_symsp(buf, fileSYM);
			list_explist(buf, line->lc.exproot, 0);
		}

		break;


	case sysSYM:
	case dataSYM:
		list_symsp(buf, line->cmd);
		list_explist(buf, line->lc.exproot, 0);
		break;

	case localSYM:
	case dimSYM:
		list_dim(buf, line);
		break;

	case forSYM:
		list_for(buf, line);
		break;

	case funcSYM:
	case procSYM:
		list_pf(buf, line);
		break;

	case ifSYM:
		list_ifwhile(buf, thenSYM, line);
		break;

	case importSYM:
		list_import(buf, line);
		break;

	case inputSYM:
		list_input(buf, line);
		break;

	case openSYM:
		list_symsp(buf, line->cmd);
		list_symsp(buf, fileSYM);
		list_exp(buf, line->lc.openrec.filenum);
		list_text(buf, ", ");
		list_exp(buf, line->lc.openrec.filename);
		list_text(buf, ", ");
		list_symsp(buf, line->lc.openrec.type);

		if (line->lc.openrec.reclen) {
			list_exp(buf, line->lc.openrec.reclen);

			if (line->lc.openrec.read_only) {
				list_char(buf, ' ');
				list_sym(buf, read_onlySYM);
			}
		}

		break;

	case printSYM:
		list_print(buf, line);
		break;

	case readSYM:
		list_symsp(buf, line->cmd);

		if (line->lc.readrec.modifier)
			list_file(buf, line->lc.readrec.modifier);

		list_explist(buf, line->lc.readrec.lvalroot, 0);
		break;

	case endfuncSYM:
	case endprocSYM:
		list_sym(buf, line->cmd);

		if (line->lineptr) {
			list_char(buf, ' ');
			list_text(buf, line->lineptr->lc.pfrec.id->name);
		}

		break;

	case endforSYM:
		list_sym(buf, line->cmd);

		if (line->lineptr) {
			list_char(buf, ' ');
			list_exp(buf, line->lineptr->lc.forrec.lval);
		}

		break;

	case restoreSYM:
		list_sym(buf, line->cmd);

		if (line->lc.id) {
			list_char(buf, ' ');
			list_text(buf, line->lc.id->name);
		}

		break;


	case whenSYM:
		list_symsp(buf, line->cmd);
		list_whenlist(buf, line->lc.whenroot);
		break;

	case whileSYM:
		list_ifwhile(buf, doSYM, line);
		break;

	case writeSYM:
		list_symsp(buf, line->cmd);
		list_file(buf, &line->lc.writerec.twoexp);
		list_explist(buf, line->lc.writerec.exproot, 0);
		break;

	case becomesSYM:
		list_assign(buf, line);
		break;

	case idSYM:
		list_text(buf, line->lc.id->name);
		list_char(buf, ':');
		break;

	default:
		list_text(buf, "<error: List default action>");
	}
}