|
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;
}
|