Exemple #1
0
/* SYNTAX: TOGGLE <key> [on|off|toggle] */
static void cmd_toggle(const char *data)
{
	char *key, *value;
	void *free_arg;
	int type;

	if (!cmd_get_params(data, &free_arg, 2 | PARAM_FLAG_GETREST | PARAM_FLAG_STRIP_TRAILING_WS, &key, &value))
		return;

	if (*key == '\0')
		cmd_param_error(CMDERR_NOT_ENOUGH_PARAMS);

	type = settings_get_type(key);
	if (type == SETTING_TYPE_ANY)
		printformat(NULL, NULL, MSGLEVEL_CLIENTERROR, TXT_SET_UNKNOWN, key);
	else if (type != SETTING_TYPE_BOOLEAN)
		printformat(NULL, NULL, MSGLEVEL_CLIENTERROR, TXT_SET_NOT_BOOLEAN, key);
	else {
		set_boolean(key, *value != '\0' ? value : "TOGGLE");
		set_print(settings_get_record(key));
		signal_emit("setup changed", 0);
	}

	cmd_params_free(free_arg);
}
Exemple #2
0
static char *get_long_variable_value(const char *key, SERVER_REC *server,
				     void *item, int *free_ret)
{
	EXPANDO_FUNC func;
	char *ret;
	int type;

	*free_ret = FALSE;

	/* expando? */
	func = (EXPANDO_FUNC) g_hash_table_lookup(expandos, key);
	if (func != NULL)
		return func(server, item, free_ret);

	/* internal setting? */
	type = settings_get_type(key);
	if (type != -1)
		return get_internal_setting(key, type, free_ret);

	/* environment variable? */
	ret = g_getenv(key);
	if (ret != NULL)
		return ret;

	return NULL;
}
Exemple #3
0
static JSBool
jss_set_value(JSContext *cx, JSObject *obj, jsval idval, jsval *vp)
{
  jsval v = *vp;
  js_setting_t *jss = JS_GetPrivate(cx, obj);

  if(jss->jss_freezed)
    return JS_TRUE;

  assert(jss->jss_s != NULL);

  JSBool b;
  int32 i32;
  JSString *str;

  // We need to be a bit more strict about value types here so
  // it's not possible to just use js_prop_set_from_jsval()

  switch(settings_get_type(jss->jss_s)) {
  case SETTING_INT:
    if(!JS_ValueToInt32(cx, v, &i32))
      return JS_FALSE;
    setting_set(jss->jss_s, SETTING_INT, i32);
    break;

  case SETTING_BOOL:
    if(!JS_ValueToBoolean(cx, v, &b))
      return JS_FALSE;
    setting_set(jss->jss_s, SETTING_BOOL, b);
    break;

  case SETTING_STRING:
    str = JS_ValueToString(cx, v);
    if(str == NULL)
      return JS_FALSE;
    setting_set(jss->jss_s, SETTING_STRING, JS_GetStringBytes(str));
    break;

  case SETTING_MULTIOPT:
    str = JS_ValueToString(cx, v);
    if(str == NULL)
      return JS_FALSE;
    setting_set(jss->jss_s, SETTING_STRING, JS_GetStringBytes(str));
    break;
  }
  return JS_TRUE;
}
Exemple #4
0
/* SYNTAX: TOGGLE <key> [on|off|toggle] */
static void cmd_toggle(const char *data)
{
    char *key, *value;
    void *free_arg;
    int type;

    if (!cmd_get_params(data, &free_arg, 2 | PARAM_FLAG_GETREST, &key, &value))
        return;

    if (*key == '\0') cmd_param_error(CMDERR_NOT_ENOUGH_PARAMS);

    type = settings_get_type(key);
    if (type == -1)
        printtext(NULL, NULL, MSGLEVEL_CLIENTERROR, "Unknown setting %_%s", key);
    else if (type != SETTING_TYPE_BOOLEAN)
        printtext(NULL, NULL, MSGLEVEL_CLIENTERROR, "Setting %_%s%_ isn't boolean, use /SET", key);
    else {
        set_boolean(key, *value != '\0' ? value : "TOGGLE");
        set_print(settings_get_record(key));
    }

    cmd_params_free(free_arg);
}