コード例 #1
0
int
p_member(value velt, type telt,
	value vlist, type tlist)
{
        pword *p;

        /* we require a list or nil */
        Check_List(tlist);
        /* if the list is empty, we fail */
        if(IsNil(tlist))
        {
                Fail;
        }
        /* the tail of the list */
        p = vlist.ptr + 1;
        /* must be dereferenced! */
        Dereference(p);
        /*
        * on backtracking we will get the tail of the list
        * instead of the list itself
        */
        Remember(2, p->val, p->tag);
        /*
        * and we behave as the unification
        * of the element and the head
        */
        Return_Unify_Pw(velt, telt,
                vlist.ptr->val, vlist.ptr->tag);
}
コード例 #2
0
ファイル: vtlcmd.c プロジェクト: versity/mhvtl
void Check_Params(int argc, char **argv)
{
	if (argc > 1) {
		if (!isnumeric(argv[1])) {
			fprintf(stderr, "DeviceNo not numeric: %s\n", argv[1]);
			exit(1);
		}
		if (argc > 2) {
			/* global commands */
			if (!strcmp(argv[2], "verbose")) {
				if (argc == 3)
					return;
				PrintErrorExit(argv[0], "verbose");
			}
			if (!strcmp(argv[2], "dump")) {
				if (argc == 3)
					return;
				PrintErrorExit(argv[0], "dump");
			}
			if (!strcmp(argv[2], "debug")) {
				if (argc == 3)
					return;
				PrintErrorExit(argv[0], "debug");
			}
			if (!strcmp(argv[2], "exit")) {
				if (argc == 3)
					return;
				PrintErrorExit(argv[0], "exit");
			}
			if (!strncasecmp(argv[2], "TapeAlert", 9)) {
				Check_TapeAlert(argc, argv);
				return;
			}

			/* Tape commands */
			if (!strncasecmp(argv[2], "load", 4)) {
				Check_Load(argc, argv);
				return;
			}
			if (!strncasecmp(argv[2], "unload", 6)) {
				Check_Unload(argc, argv);
				return;
			}
			if (!strncasecmp(argv[2], "delay", 5)) {
				Check_delay(argc, argv);
				return;
			}
			if (!strncasecmp(argv[2], "compression", 11)) {
				Check_Compression(argc, argv);
				return;
			}
			if (!strncasecmp(argv[2], "Append", 6)) {
				Check_append_only(argc, argv);
				return;
			}

			/* Library commands */
			if (!strcmp(argv[2], "add")) {
				if (argc == 4)
					return;
				PrintErrorExit(argv[0], "add slot");
			}
			if (!strcmp(argv[2], "online")) {
				if (argc == 3)
					return;
				PrintErrorExit(argv[0], "online");
			}
			if (!strcmp(argv[2], "offline")) {
				if (argc == 3)
					return;
				PrintErrorExit(argv[0], "offline");
			}
			if (!strcmp(argv[2], "list")) {
				Check_List(argc, argv);
				return;
			}
			if (!strcmp(argv[2], "empty")) {
				Check_Empty(argc, argv);
				return;
			}
			if (!strcmp(argv[2], "open")) {
				Check_Open(argc, argv);
				return;
			}
			if (!strcmp(argv[2], "close")) {
				Check_Close(argc, argv);
				return;
			}
			PrintErrorExit(argv[0], "check param");
		}
		PrintErrorExit(argv[0], "");
	}
	PrintErrorExit(argv[0], "");
}