/* real_connect(host=nil, user=nil, passwd=nil, db=nil, port=nil, sock=nil, flag=nil) */ static VALUE real_connect(int argc, VALUE* argv, VALUE klass) { VALUE host, user, passwd, db, port, sock, flag; char *h, *u, *p, *d, *s; unsigned int pp, f; struct mysql* myp; VALUE obj; #if MYSQL_VERSION_ID >= 32200 rb_scan_args(argc, argv, "07", &host, &user, &passwd, &db, &port, &sock, &flag); d = NILorSTRING(db); f = NILorINT(flag); #elif MYSQL_VERSION_ID >= 32115 rb_scan_args(argc, argv, "06", &host, &user, &passwd, &port, &sock, &flag); f = NILorINT(flag); #else rb_scan_args(argc, argv, "05", &host, &user, &passwd, &port, &sock); #endif h = NILorSTRING(host); u = NILorSTRING(user); p = NILorSTRING(passwd); pp = NILorINT(port); s = NILorSTRING(sock); #ifdef HAVE_RB_THREAD_START_TIMER rb_thread_stop_timer(); #endif obj = Data_Make_Struct(klass, struct mysql, 0, free_mysql, myp); #if MYSQL_VERSION_ID >= 32200 mysql_init(&myp->handler); if (mysql_real_connect(&myp->handler, h, u, p, d, pp, s, f) == NULL) #elif MYSQL_VERSION_ID >= 32115 if (mysql_real_connect(&myp->handler, h, u, p, pp, s, f) == NULL) #else if (mysql_real_connect(&myp->handler, h, u, p, pp, s) == NULL) #endif { #ifdef HAVE_RB_THREAD_START_TIMER rb_thread_start_timer(); #endif mysql_raise(&myp->handler); } #ifdef HAVE_RB_THREAD_START_TIMER rb_thread_start_timer(); #endif myp->handler.reconnect = 0; myp->connection = Qtrue; myp->query_with_result = Qtrue; rb_obj_call_init(obj, argc, argv); return obj; }