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); }
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); } } } }
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); }
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; } }
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); }