static VALUE _mysql_client_options(VALUE self, int opt, VALUE value) { int result; void *retval = NULL; unsigned int intval = 0; my_bool boolval; GET_CLIENT(self); REQUIRE_NOT_CONNECTED(wrapper); if (NIL_P(value)) return Qfalse; switch(opt) { case MYSQL_OPT_CONNECT_TIMEOUT: intval = NUM2INT(value); retval = &intval; break; case MYSQL_OPT_READ_TIMEOUT: intval = NUM2INT(value); retval = &intval; break; case MYSQL_OPT_WRITE_TIMEOUT: intval = NUM2INT(value); retval = &intval; break; case MYSQL_OPT_LOCAL_INFILE: intval = (value == Qfalse ? 0 : 1); retval = &intval; break; case MYSQL_OPT_RECONNECT: boolval = (value == Qfalse ? 0 : 1); retval = &boolval; break; default: return Qfalse; } result = mysql_options(wrapper->client, opt, retval); /* Zero means success */ if (result != 0) { rb_warn("%s\n", mysql_error(wrapper->client)); } else { /* Special case for reconnect, this option is also stored in the wrapper struct */ if (opt == MYSQL_OPT_RECONNECT) wrapper->reconnect_enabled = boolval; } return (result == 0) ? Qtrue : Qfalse; }
static VALUE _mysql_client_options(VALUE self, int opt, VALUE value) { int result; const void *retval = NULL; unsigned int intval = 0; const char * charval = NULL; my_bool boolval; GET_CLIENT(self); REQUIRE_NOT_CONNECTED(wrapper); if (NIL_P(value)) return Qfalse; switch(opt) { case MYSQL_OPT_CONNECT_TIMEOUT: intval = NUM2UINT(value); retval = &intval; break; case MYSQL_OPT_READ_TIMEOUT: intval = NUM2UINT(value); retval = &intval; break; case MYSQL_OPT_WRITE_TIMEOUT: intval = NUM2UINT(value); retval = &intval; break; case MYSQL_OPT_LOCAL_INFILE: intval = (value == Qfalse ? 0 : 1); retval = &intval; break; case MYSQL_OPT_RECONNECT: boolval = (value == Qfalse ? 0 : 1); retval = &boolval; break; case MYSQL_SECURE_AUTH: boolval = (value == Qfalse ? 0 : 1); retval = &boolval; break; case MYSQL_READ_DEFAULT_FILE: charval = (const char *)StringValueCStr(value); retval = charval; break; case MYSQL_READ_DEFAULT_GROUP: charval = (const char *)StringValueCStr(value); retval = charval; break; case MYSQL_INIT_COMMAND: charval = (const char *)StringValueCStr(value); retval = charval; break; default: return Qfalse; } result = mysql_options(wrapper->client, opt, retval); /* Zero means success */ if (result != 0) { rb_warn("%s\n", mysql_error(wrapper->client)); } else { /* Special case for options that are stored in the wrapper struct */ switch (opt) { case MYSQL_OPT_RECONNECT: wrapper->reconnect_enabled = boolval; break; case MYSQL_OPT_CONNECT_TIMEOUT: wrapper->connect_timeout = intval; break; } } return (result == 0) ? Qtrue : Qfalse; }