/* * Function name: catch_tell * Description: This is the text that normal players gets written to * their sockets. */ void catch_tell(string str) { int il; string pattern, func, euid; if (query_interactive(this_object())) // Monster is possessed { write_socket(str); return; } if (!sizeof(trig_patterns)) return; cur_text = str; for (il = 0; il < sizeof(trig_patterns); il++) { if (stringp(trig_patterns[il])) { pattern = process_string(trig_patterns[il], 1); if (trig_check(str, pattern, trig_functions[il])) return; } } }
int main(int argc, char *argv[]) { int ch, done, ret, t_ret; char **clist, **clp, *home; /* Initialize globals. */ dbenv = NULL; db = NULL; if ((progname = strrchr(argv[0], '/')) == NULL) progname = argv[0]; else ++progname; verbose = 0; /* Initialize arguments. */ home = NULL; ret = 0; /* Allocate enough room for command-list arguments. */ if ((clp = clist = (char **)calloc((size_t)argc + 1, sizeof(char *))) == NULL) { fprintf(stderr, "%s: %s\n", progname, strerror(ENOMEM)); return (EXIT_FAILURE); } /* Process arguments. */ while ((ch = getopt(argc, argv, "c:h:v")) != EOF) switch (ch) { case 'c': *clp++ = optarg; break; case 'h': home = optarg; break; case 'v': ++verbose; break; case '?': default: return (usage()); } argc -= optind; argv += optind; if (*argv != NULL) return (usage()); /* Create or join the database environment. */ if (csv_env_open(home, 1) != 0) return (EXIT_FAILURE); /* Handle the queries. */ if (clp == clist) ret = query_interactive(); else for (clp = clist, done = 0; *clp != NULL && !done; ++clp) if ((ret = query(*clp, &done)) != 0) break; /* Close the database environment. */ if ((t_ret = csv_env_close()) != 0 && ret == 0) ret = t_ret; return (ret == 0 ? EXIT_SUCCESS : EXIT_FAILURE); }