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); }
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], ""); }