コード例 #1
0
ファイル: p_misc.c プロジェクト: hyena/fuzzball
void
prim_setsysparm(PRIM_PROTOTYPE)
{
	const char *oldvalue, *newvalue;
	int security = TUNE_MLEV(player);

	CHECKOP(2);
	oper1 = POP();				/* string: new parameter value */
	oper2 = POP();				/* string: parameter to tune */

	if (mlev < 4)
		abort_interp("Wizbit only primitive.");
	if (force_level)
		abort_interp("Cannot be forced.");
	if (oper2->type != PROG_STRING)
		abort_interp("Invalid argument. (1)");
	if (!oper2->data.string)
		abort_interp("Null string argument. (1)");
	if (oper1->type != PROG_STRING)
		abort_interp("Invalid argument. (2)");

	oldvalue = tune_get_parmstring(oper2->data.string->data, security);
	newvalue = oper1->data.string ? oper1->data.string->data : "";

	result = tune_setparm(oper2->data.string->data, newvalue, security);

	switch (result) {
	case TUNESET_SUCCESS:
		log_status("TUNED (MUF): %s(%d) tuned %s from '%s' to '%s'",
				   NAME(player), player, oper2->data.string->data, oldvalue, newvalue);
		break;
	case TUNESET_UNKNOWN:
		abort_interp("Unknown parameter. (1)");
		break;
	case TUNESET_SYNTAX:
		abort_interp("Bad parameter syntax. (2)");
		break;
	case TUNESET_BADVAL:
		abort_interp("Bad parameter value. (2)");
		break;
	case TUNESET_DENIED:
		abort_interp("Permission denied. (1)");
		break;
	}
	CLEAR(oper1);
	CLEAR(oper2);
}
コード例 #2
0
ファイル: tune.c プロジェクト: CyberLeo/protomuck
void
tune_load_parms_from_file(FILE * f, dbref player, int cnt)
{
    char buf[BUFFER_LEN];
    char *c, *p;
    int result = 0;

    while (!feof(f) && (cnt < 0 || cnt--)) {
        fgets(buf, sizeof(buf), f);
        if (*buf != NUMBER_TOKEN) {
            p = c = index(buf, '=');
            if (c) {
                *c++ = '\0';
                while (p > buf && isspace(*(--p)))
                    *p = '\0';
                while (isspace(*c))
                    c++;
                for (p = c; *p && *p != '\n'; p++) ;
                *p = '\0';
                for (p = buf; isspace(*p); p++) ;
                if (*p) {
                    result = tune_setparm(player, p, c);
                }
                switch (result) {
                case TUNESET_SUCCESS:
                    strcat(p, ": Parameter set.");
                    break;
                case TUNESET_UNKNOWN:
                    strcat(p, ": Unknown parameter.");
                    break;
                case TUNESET_SYNTAX:
                    strcat(p, ": Bad parameter syntax.");
                    break;
                case TUNESET_BADVAL:
                    strcat(p, ": Bad parameter value.");
                    break;
                }
                if (result && player != NOTHING)
                    notify(player, p);
            }
        }
    }
}
コード例 #3
0
ファイル: p_system.c プロジェクト: CyberLeo/protomuck
void
prim_setsysparm(PRIM_PROTOTYPE)
{
    CHECKOP(2);
    oper1 = POP();              /* string: new parameter value */
    oper2 = POP();              /* string: parameter to tune */

    if (mlev < 6)
        abort_interp("Archwizards or higher only.");
    if (oper2->type != PROG_STRING)
        abort_interp("Invalid argument. (1)");
    if (!oper2->data.string)
        abort_interp("Null string argument. (1)");
    if (oper1->type != PROG_STRING)
        abort_interp("Invalid argument. (2)");
    if (!oper1->data.string)
        abort_interp("Null string argument. (2)");

    result = tune_setparm(program, oper2->data.string->data,
                          oper1->data.string->data);

    switch (result) {
        case 0:                /* TUNESET_SUCCESS */
            log_status("TUNED (MUF): %s(%d) tuned %s to %s\n",
                       OkObj(player) ? NAME(player) : "(Login)", player,
                       oper2->data.string->data, oper1->data.string->data);
            break;
        case 1:                /* TUNESET_UNKNOWN */
            abort_interp("Unknown parameter. (1)");
            break;
        case 2:                /* TUNESET_SYNTAX */
            abort_interp("Bad parameter syntax. (2)");
            break;
        case 3:                /* TUNESET_BADVAL */
            abort_interp("Bad parameter value. (2)");
            break;
    }
    CLEAR(oper1);
    CLEAR(oper2);
}
コード例 #4
0
ファイル: tune.c プロジェクト: CyberLeo/protomuck
void
do_tune(dbref player, char *parmname, char *parmval)
{
    int result;

    if (!Mage(player)) {
        anotify_fmt(player, CFAIL "%s", tp_noperm_mesg);
        return;
    }

    if (!Arch(player) && *parmval) {
        anotify_fmt(player, CFAIL "%s", tp_noperm_mesg);
        return;
    }

    if (*parmname && *parmval) {
        result = tune_setparm(player, parmname, parmval);
        switch (result) {
        case TUNESET_SUCCESS:
            log_status("TUNE: %s(%d) tuned %s to %s\n",
                       NAME(player), player, parmname, parmval);
            anotify_nolisten2(player, CSUCC "Parameter set.");
            tune_display_parms(player, parmname);
            break;
        case TUNESET_UNKNOWN:
            anotify_nolisten2(player, CINFO "Unknown parameter.");
            break;
        case TUNESET_SYNTAX:
            anotify_nolisten2(player, CFAIL "Bad parameter syntax.");
            break;
        case TUNESET_BADVAL:
            anotify_nolisten2(player, CFAIL "Bad parameter value.");
            break;
        case TUNESET_NOPERM:
            anotify_nolisten2(player, CFAIL "Permission denied.");
        }
        return;
    } else if (*parmname) {
        /* if (!string_compare(parmname, "save")) {
           tune_save_parmsfile();
           anotify_nolisten2(player, CSUCC "Saved parameters to configuration file.");
           } else if (!string_compare(parmname, "load")) {
           tune_load_parmsfile(player);
           anotify_nolisten2(player, CSUCC "Restored parameters from configuration file.");
           } else
         */
        if (!string_compare(parmname, "strings") ||
            !string_compare(parmname, "str"))
            tune_show_strings(player, parmname);
        else if (!string_compare(parmname, "times") ||
                 !string_compare(parmname, "time"))
            tune_show_times(player, parmname);
        else if (!string_compare(parmname, "int") ||
                 !string_compare(parmname, "ints"))
            tune_show_vals(player, parmname);
        else if (!string_compare(parmname, "ref") ||
                 !string_compare(parmname, "refs") ||
                 !string_compare(parmname, "dbrefs") ||
                 !string_compare(parmname, "dbref"))
            tune_show_refs(player, parmname);
        else if (!string_compare(parmname, "bool") ||
                 !string_compare(parmname, "bools"))
            tune_show_bool(player, parmname);
        else
            tune_display_parms(player, parmname);
        return;
    } else if (!*parmval && !*parmname) {
        tune_display_parms(player, parmname);
    } else {
        anotify_nolisten2(player, CINFO "Tune what?");
        return;
    }
}
コード例 #5
0
ファイル: p_misc.c プロジェクト: foxbird/fuzzball
void
prim_setsysparm(PRIM_PROTOTYPE)
{
    const char *parmname, *newvalue;
    char *oldvalue;
    int security = TUNE_MLEV(player);

    CHECKOP(2);
    oper1 = POP();		/* string: new parameter value */
    oper2 = POP();		/* string: parameter to tune */

    if (mlev < 4)
	abort_interp("Wizbit only primitive.");
    if (force_level)
	abort_interp("Cannot be forced.");
    if (oper2->type != PROG_STRING)
	abort_interp("Invalid argument. (1)");
    if (!oper2->data.string)
	abort_interp("Null string argument. (1)");
    if (oper1->type != PROG_STRING)
	abort_interp("Invalid argument. (2)");

    parmname = oper2->data.string->data;
    /* Duplicate the string, otherwise the oldvalue pointer will be overridden to the new value
       when tune_setparm() is called. */
    oldvalue = strdup(tune_get_parmstring(oper2->data.string->data, security));
    newvalue = DoNullInd(oper1->data.string);

    result = tune_setparm(player, parmname, newvalue, security);

    /* Note: free(oldvalue) BEFORE calling abort_interp, or it will leak. */
    switch (result) {
    case TUNESET_SUCCESS:
	log_status("TUNED (MUF): %s(%d) tuned %s from '%s' to '%s'",
		   NAME(player), player, parmname, oldvalue, newvalue);
	if (oldvalue)
	    free(oldvalue);
	break;
    case TUNESET_SUCCESS_DEFAULT:
	/* No need to show the flag in output */
	TP_CLEAR_FLAG_DEFAULT(parmname);
	log_status("TUNED (MUF): %s(%d) tuned %s from '%s' to default",
		   NAME(player), player, parmname, oldvalue);
	if (oldvalue)
	    free(oldvalue);
	break;
    case TUNESET_UNKNOWN:
	if (oldvalue)
	    free(oldvalue);
	abort_interp("Unknown parameter. (1)");
    case TUNESET_SYNTAX:
	if (oldvalue)
	    free(oldvalue);
	abort_interp("Bad parameter syntax. (2)");
    case TUNESET_BADVAL:
	if (oldvalue)
	    free(oldvalue);
	abort_interp("Bad parameter value. (2)");
    case TUNESET_DENIED:
	if (oldvalue)
	    free(oldvalue);
	abort_interp("Permission denied. (1)");
    default:
	if (oldvalue)
	    free(oldvalue);
	break;
    }
    CLEAR(oper1);
    CLEAR(oper2);
}