From: <da...@us...> - 2003-08-02 04:30:43
|
Update of /cvsroot/binaryphp/binaryphp/functions In directory sc8-pr-cvs1:/tmp/cvs-serv13836/functions Added Files: mysql.cpp mysql_connect.cpp mysql_error.cpp mysql_fetch_array.cpp mysql_fetch_row.cpp mysql_query.cpp mysql_select_db.cpp socket_connect.cpp socket_create.cpp socket_read.cpp socket_write.cpp Log Message: Added socket_create(), socket_connect(), socket_read(), socket_write(), readdir(), opendir(), closedir(), mysql_connect(), mysql_error(), mysql_fetch_array(), mysql_fetch_row(), mysql_query(), mysql_select_db(). Fixed oodles of bugs in tokenflow.php --- NEW FILE: mysql.cpp --- #define MYSQL_ASSOC 1 #define MYSQL_NUM 2 #define MYSQL_BOTH 3 php_var global_mysql; --- NEW FILE: mysql_connect.cpp --- php_var mysql_connect(php_var host = "localhost:3306", php_var user = "", php_var passwd = "") { MYSQL* mysql; mysql_init(mysql); unsigned int port = 3306; if(!mysql_real_connect(mysql, host, user.container.c_str(), passwd.container.c_str(), NULL, port, host_ext[1].container.c_str(), 0)) { //handle errors } php_var ret; ret.res = (void*)mysql; ret.type = PHP_RESOURCE; global_mysql.res = (void*)mysql; global_mysql.type = PHP_RESOURCE; return ret; } --- NEW FILE: mysql_error.cpp --- php_var mysql_error(php_var mysql = global_mysql) { php_var ret = mysql_error(mysql); return ret; } --- NEW FILE: mysql_fetch_array.cpp --- php_var mysql_fetch_array(php_var result, php_var result_type = MYSQL_BOTH) { php_var ret; unsigned int num_fields; MYSQL_ROW row; MYSQL_FIELD* fields; if(row = mysql_fetch_row((MYSQL_RES*)result.res)) { ret = array(); num_fields = mysql_num_fields((MYSQL_RES*)result.res); fields = mysql_fetch_fields((MYSQL_RES*)result.res); int i; for(i = 0; i < num_fields; ++i) { if(result_type == MYSQL_NUM || result_type == MYSQL_BOTH) ret[i] = row[i]; if(result_type == MYSQL_ASSOC || result_type == MYSQL_BOTH) ret[fields[i].name] = row[i]; } free(fields); return ret; } else return((php_var)false); } --- NEW FILE: mysql_fetch_row.cpp --- php_var mysql_fetch_row(php_var result) { php_var ret; unsigned int num_fields; MYSQL_ROW row; if(row = mysql_fetch_row((MYSQL_RES*)result.res)) { ret = array(); num_fields = mysql_num_fields((MYSQL_RES*)result.res); int i; for(i = 0; i < num_fields; ++i) ret[i] = row[i]; return ret; } else return((php_var)false); } --- NEW FILE: mysql_query.cpp --- php_var mysql_query(php_var query, php_var mysql = global_mysql) { MYSQL_RES* result = NULL; php_var ret; if(mysql_real_query((MYSQL*)mysql.res, query.container.c_str(),query.container.length()) != 0) { return (php_var) false; } else { result = mysql_store_result((MYSQL*) (mysql.res)); if(result) { ret.type = PHP_RESOURCE; ret.res = (void*)result; return ret; } else { if(mysql_field_count((MYSQL *) mysql.res) == 0) return((php_var)true); else return((php_var)false); } } } --- NEW FILE: mysql_select_db.cpp --- php_var mysql_select_db(php_var db, php_var mysql = global_mysql) { if(mysql_select_db((MYSQL*)mysql.res, db.container.c_str()) == 0) return true; return false; } --- NEW FILE: socket_connect.cpp --- php_var socket_connect(php_var sock, php_var addr, php_var port = 0) { in_addr tmp; php_socket *socket = (php_socket *) sock.res; int ret; hostent *host_entry; sockaddr_in sin; sin.sin_family = AF_INET; sin.sin_port = htons((unsigned short int)(int)port); if(inet_aton(addr, &tmp)) sin.sin_addr.s_addr = tmp.s_addr; else { if(!(host_entry = gethostbyname(addr))) return (php_var) false; if(host_entry->h_addrtype != AF_INET) return (php_var) false; memcpy(&(sin.sin_addr.s_addr), host_entry->h_addr_list[0], host_entry->h_length); } memset(&(sin.sin_zero), '\0', 8); ret = connect(socket->sock, (sockaddr *)&sin, sizeof(sockaddr)); if(ret < 0) return (php_var) false; return (php_var) true; } --- NEW FILE: socket_create.cpp --- typedef struct { int sock; int type; int error; } php_socket; php_var socket_create(php_var domain, php_var type, php_var protocol) { php_socket sock; sock.sock = socket((long) domain, (long) type, (long) protocol); if(sock.sock < 0) return (php_var) false; sock.type = type; php_var ret; ret.res = (void *) &sock; return ret; } --- NEW FILE: socket_read.cpp --- #define PHP_BINARY_READ 0 #define PHP_NORMAL_READ 1 php_var socket_read(php_var sock, php_var len, php_var type = PHP_BINARY_READ) { php_socket *socket = (php_socket *) sock.res; int ret; char *buf = new char[len]; ret = read(socket->sock, buf, len); if(ret < 0) return (php_var) false; php_var retu = buf; // delete buf; return retu; } --- NEW FILE: socket_write.cpp --- php_var socket_write(php_var sock, php_var buf, int len = 0) { php_socket *socket = (php_socket *) sock.res; if(len == 0) len = buf.container.length(); if(write(socket->sock, buf.container.c_str(), (int) len) < 0) return (php_var) false; return (php_var) true; } |