Ejemplo n.º 1
0
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);
}
Ejemplo n.º 2
0
void
prim_sysparm(PRIM_PROTOTYPE)
{
    const char *ptr;

    CHECKOP(1);
    oper1 = POP();		/* string: system parm name */
    if (oper1->type != PROG_STRING)
	abort_interp("Invalid argument.");
    if (oper1->data.string) {
	ptr = tune_get_parmstring(oper1->data.string->data, TUNE_MLEV(player));
    } else {
	ptr = "";
    }
    CHECKOFLOW(1);
    CLEAR(oper1);
    PushString(ptr);
}
Ejemplo n.º 3
0
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);
}