コード例 #1
0
ファイル: trigaction.c プロジェクト: xxx/cdlib
/*
 * 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;
	}
    }
}
コード例 #2
0
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);
}