/** * destroy function */ static void destroy(void) { sql_destroy(); }
void sql_deinit() { sql_destroy(&sql_account); }
int sql_routine(int fd, sqlite3 *db, sockfd_buf_t *rwbuf) { if (fd < 0 || db == NULL || rwbuf == NULL || rwbuf->rbuf.data == NULL || rwbuf->rbuf.len == 0 || rwbuf->wbuf.data == NULL) { E("parameter error."); DD(fd); DP(db); DP(rwbuf); DP(rwbuf->rbuf.data); DD(rwbuf->rbuf.len); DP(rwbuf->wbuf.data); DD(rwbuf->wbuf.len); return -1; } char *regex = "^:[0-9]{1,2}:[A-Za-z0-9_]*:[A-Za-z0-9_]*:" "[A-Za-z0-9_]*:.*:[0-9]{0,14}$"; if (cs_regex(rwbuf->rbuf.data, regex) != 0) { E("request type undefined."); strncpy(rwbuf->wbuf.data, "regex_err", 9); rwbuf->wbuf.len = 9; return -1; } cs_request_t req = cs_parse_request(rwbuf->rbuf.data); request_dump(&req); int ret = -1; switch (req.req_type) { case 0: ret = sql_register(&req, db, &rwbuf->wbuf); break; case 1: ret = sql_destroy(&req, db, &rwbuf->wbuf); break; case 2: ret = sql_login(fd, &req, db, &rwbuf->wbuf); break; case 3: ret = sql_logout(&req, db, &rwbuf->wbuf); break; case 4: ret = sql_view_user(&req, db, &rwbuf->wbuf); break; case 5: ret = sql_add_buddy(&req, db, &rwbuf->wbuf); break; case 6: ret = sql_del_buddy(&req, db, &rwbuf->wbuf); break; case 7: ret = sql_sendto(fd, &req, db, &rwbuf->wbuf); break; case 8: ret = sql_view_log(&req, db, &rwbuf->wbuf); break; case 9: ret = sql_del_log(&req, db, &rwbuf->wbuf); break; case 10: ret = sql_change_passwd(&req, db, &rwbuf->wbuf); break; case 11: ret = sql_submit_info(&req, db, &rwbuf->wbuf); break; case 12: ret = sql_view_info(&req, db, &rwbuf->wbuf); break; default: DD(req.req_type); break; } request_free(&req); return ret; }