static void php_sybase_do_connect(INTERNAL_FUNCTION_PARAMETERS,int persistent)
{
- char *user=NULL,*passwd=NULL,*host=NULL,*charset=NULL;
+ char *user=NULL,*passwd=NULL,*host=NULL,*charset=NULL,*appname=NULL;
char *hashed_details;
int hashed_details_length;
sybase_link sybase,*sybase_ptr;
}
convert_to_string(yyhost);
host = Z_STRVAL_P(yyhost);
- hashed_details_length = Z_STRLEN_P(yyhost)+6+4;
+ hashed_details_length = Z_STRLEN_P(yyhost)+6+5;
hashed_details = (char *) emalloc(hashed_details_length+1);
- sprintf(hashed_details,"sybase_%s___",Z_STRVAL_P(yyhost));
+ sprintf(hashed_details,"sybase_%s____",Z_STRVAL_P(yyhost));
}
break;
case 2: {
convert_to_string(yyuser);
host = Z_STRVAL_P(yyhost);
user = Z_STRVAL_P(yyuser);
- hashed_details_length = Z_STRLEN_P(yyhost)+Z_STRLEN_P(yyuser)+6+4;
+ hashed_details_length = Z_STRLEN_P(yyhost)+Z_STRLEN_P(yyuser)+6+5;
hashed_details = (char *) emalloc(hashed_details_length+1);
- sprintf(hashed_details,"sybase_%s_%s__",Z_STRVAL_P(yyhost),Z_STRVAL_P(yyuser));
+ sprintf(hashed_details,"sybase_%s_%s___",Z_STRVAL_P(yyhost),Z_STRVAL_P(yyuser));
}
break;
case 3: {
host = Z_STRVAL_P(yyhost);
user = Z_STRVAL_P(yyuser);
passwd = Z_STRVAL_P(yypasswd);
- hashed_details_length = Z_STRLEN_P(yyhost)+Z_STRLEN_P(yyuser)+Z_STRLEN_P(yypasswd)+6+4;
+ hashed_details_length = Z_STRLEN_P(yyhost)+Z_STRLEN_P(yyuser)+Z_STRLEN_P(yypasswd)+6+5;
hashed_details = (char *) emalloc(hashed_details_length+1);
- sprintf(hashed_details,"sybase_%s_%s_%s_",Z_STRVAL_P(yyhost),Z_STRVAL_P(yyuser),Z_STRVAL_P(yypasswd)); /* SAFE */
+ sprintf(hashed_details,"sybase_%s_%s_%s__",Z_STRVAL_P(yyhost),Z_STRVAL_P(yyuser),Z_STRVAL_P(yypasswd)); /* SAFE */
}
break;
case 4: {
user = Z_STRVAL_P(yyuser);
passwd = Z_STRVAL_P(yypasswd);
charset = Z_STRVAL_P(yycharset);
- hashed_details_length = Z_STRLEN_P(yyhost)+Z_STRLEN_P(yyuser)+Z_STRLEN_P(yypasswd)+Z_STRLEN_P(yycharset)+6+4;
+ hashed_details_length = Z_STRLEN_P(yyhost)+Z_STRLEN_P(yyuser)+Z_STRLEN_P(yypasswd)+Z_STRLEN_P(yycharset)+6+5;
hashed_details = (char *) emalloc(hashed_details_length+1);
- sprintf(hashed_details,"sybase_%s_%s_%s_%s",Z_STRVAL_P(yyhost),Z_STRVAL_P(yyuser),Z_STRVAL_P(yypasswd),Z_STRVAL_P(yycharset)); /* SAFE */
+ sprintf(hashed_details,"sybase_%s_%s_%s_%s_",Z_STRVAL_P(yyhost),Z_STRVAL_P(yyuser),Z_STRVAL_P(yypasswd),Z_STRVAL_P(yycharset)); /* SAFE */
+ }
+ break;
+ case 5: {
+ pval *yyhost,*yyuser,*yypasswd,*yycharset, *yyappname;
+
+ if (getParameters(ht, 5, &yyhost, &yyuser, &yypasswd, &yycharset, &yyappname) == FAILURE) {
+ RETURN_FALSE;
+ }
+ convert_to_string(yyhost);
+ convert_to_string(yyuser);
+ convert_to_string(yypasswd);
+ convert_to_string(yycharset);
+ convert_to_string(yyappname);
+ host = Z_STRVAL_P(yyhost);
+ user = Z_STRVAL_P(yyuser);
+ passwd = Z_STRVAL_P(yypasswd);
+ charset = Z_STRVAL_P(yycharset);
+ appname = Z_STRVAL_P(yyappname);
+ hashed_details_length = Z_STRLEN_P(yyhost)+Z_STRLEN_P(yyuser)+Z_STRLEN_P(yypasswd)+Z_STRLEN_P(yycharset)+Z_STRLEN_P(yyappname)+6+5;
+ hashed_details = (char *) emalloc(hashed_details_length+1);
+ sprintf(hashed_details,"sybase_%s_%s_%s_%s_%s",Z_STRVAL_P(yyhost),Z_STRVAL_P(yyuser),Z_STRVAL_P(yypasswd),Z_STRVAL_P(yycharset),Z_STRVAL_P(yyappname)); /* SAFE */
}
break;
default:
if (charset) {
DBSETLCHARSET(sybase.login,charset);
}
- DBSETLAPP(sybase.login,php_sybase_module.appname);
+ if (appname) {
+ DBSETLAPP(sybase.login,appname);
+ } else {
+ DBSETLAPP(sybase.login,php_sybase_module.appname);
+ }
+
sybase.valid = 1;
if (!php_sybase_module.allow_persistent) {
}
-/* {{{ proto int sybase_connect([string host [, string user [, string password [, string charset]]]])
+/* {{{ proto int sybase_connect([string host [, string user [, string password [, string charset [, string appname]]]]])
Open Sybase server connection */
PHP_FUNCTION(sybase_connect)
{
}
/* }}} */
-/* {{{ proto int sybase_pconnect([string host [, string user [, string password [, string charset]]]])
+/* {{{ proto int sybase_pconnect([string host [, string user [, string password [, string charset [, string appname]]]]])
Open persistent Sybase connection */
PHP_FUNCTION(sybase_pconnect)
{
}
-static int php_sybase_do_connect_internal(sybase_link *sybase, char *host, char *user, char *passwd, char *charset)
+static int php_sybase_do_connect_internal(sybase_link *sybase, char *host, char *user, char *passwd, char *charset, char *appname)
{
CS_LOCALE *tmp_locale;
TSRMLS_FETCH();
if (passwd) {
ct_con_props(sybase->connection, CS_SET, CS_PASSWORD, passwd, CS_NULLTERM, NULL);
}
- ct_con_props(sybase->connection, CS_SET, CS_APPNAME, SybCtG(appname), CS_NULLTERM, NULL);
+ if (appname) {
+ ct_con_props(sybase->connection, CS_SET, CS_APPNAME, appname, CS_NULLTERM, NULL);
+ } else {
+ ct_con_props(sybase->connection, CS_SET, CS_APPNAME, SybCtG(appname), CS_NULLTERM, NULL);
+ }
if (SybCtG(hostname)) {
ct_con_props(sybase->connection, CS_SET, CS_HOSTNAME, SybCtG(hostname), CS_NULLTERM, NULL);
static void php_sybase_do_connect(INTERNAL_FUNCTION_PARAMETERS, int persistent)
{
- char *user, *passwd, *host, *charset;
+ char *user, *passwd, *host, *charset, *appname;
char *hashed_details;
int hashed_details_length;
sybase_link *sybase_ptr;
switch(ZEND_NUM_ARGS()) {
case 0: /* defaults */
- host=user=passwd=charset=NULL;
- hashed_details_length=6+4;
+ host=user=passwd=charset=appname=NULL;
+ hashed_details_length=6+5;
hashed_details = (char *) emalloc(hashed_details_length+1);
- strcpy(hashed_details, "sybase____");
+ strcpy(hashed_details, "sybase_____");
break;
case 1: {
pval *yyhost;
}
convert_to_string(yyhost);
host = Z_STRVAL_P(yyhost);
- user=passwd=charset=NULL;
- hashed_details_length = Z_STRLEN_P(yyhost)+6+4;
+ user=passwd=charset=appname=NULL;
+ hashed_details_length = Z_STRLEN_P(yyhost)+6+5;
hashed_details = (char *) emalloc(hashed_details_length+1);
- sprintf(hashed_details, "sybase_%s___", Z_STRVAL_P(yyhost));
+ sprintf(hashed_details, "sybase_%s____", Z_STRVAL_P(yyhost));
}
break;
case 2: {
convert_to_string(yyuser);
host = Z_STRVAL_P(yyhost);
user = Z_STRVAL_P(yyuser);
- passwd=charset=NULL;
- hashed_details_length = Z_STRLEN_P(yyhost)+Z_STRLEN_P(yyuser)+6+4;
+ passwd=charset=appname=NULL;
+ hashed_details_length = Z_STRLEN_P(yyhost)+Z_STRLEN_P(yyuser)+6+5;
hashed_details = (char *) emalloc(hashed_details_length+1);
- sprintf(hashed_details, "sybase_%s_%s__", Z_STRVAL_P(yyhost), Z_STRVAL_P(yyuser));
+ sprintf(hashed_details, "sybase_%s_%s___", Z_STRVAL_P(yyhost), Z_STRVAL_P(yyuser));
}
break;
case 3: {
host = Z_STRVAL_P(yyhost);
user = Z_STRVAL_P(yyuser);
passwd = Z_STRVAL_P(yypasswd);
- charset=NULL;
- hashed_details_length = Z_STRLEN_P(yyhost)+Z_STRLEN_P(yyuser)+Z_STRLEN_P(yypasswd)+6+4;
+ charset=appname=NULL;
+ hashed_details_length = Z_STRLEN_P(yyhost)+Z_STRLEN_P(yyuser)+Z_STRLEN_P(yypasswd)+6+5;
hashed_details = (char *) emalloc(hashed_details_length+1);
- sprintf(hashed_details, "sybase_%s_%s_%s_", Z_STRVAL_P(yyhost), Z_STRVAL_P(yyuser), Z_STRVAL_P(yypasswd));
+ sprintf(hashed_details, "sybase_%s_%s_%s__", Z_STRVAL_P(yyhost), Z_STRVAL_P(yyuser), Z_STRVAL_P(yypasswd));
}
break;
case 4: {
user = Z_STRVAL_P(yyuser);
passwd = Z_STRVAL_P(yypasswd);
charset = Z_STRVAL_P(yycharset);
- hashed_details_length = Z_STRLEN_P(yyhost)+Z_STRLEN_P(yyuser)+Z_STRLEN_P(yypasswd)+Z_STRLEN_P(yycharset)+6+4;
+ appname=NULL;
+ hashed_details_length = Z_STRLEN_P(yyhost)+Z_STRLEN_P(yyuser)+Z_STRLEN_P(yypasswd)+Z_STRLEN_P(yycharset)+6+5;
+ hashed_details = (char *) emalloc(hashed_details_length+1);
+ sprintf(hashed_details, "sybase_%s_%s_%s_%s_", Z_STRVAL_P(yyhost), Z_STRVAL_P(yyuser), Z_STRVAL_P(yypasswd), Z_STRVAL_P(yycharset));
+ }
+ break;
+ case 5: {
+ pval *yyhost, *yyuser, *yypasswd, *yycharset, *yyappname;
+
+ if (getParameters(ht, 5, &yyhost, &yyuser, &yypasswd, &yycharset, &yyappname) == FAILURE) {
+ RETURN_FALSE;
+ }
+ convert_to_string(yyhost);
+ convert_to_string(yyuser);
+ convert_to_string(yypasswd);
+ convert_to_string(yycharset);
+ convert_to_string(yyappname);
+ host = Z_STRVAL_P(yyhost);
+ user = Z_STRVAL_P(yyuser);
+ passwd = Z_STRVAL_P(yypasswd);
+ charset = Z_STRVAL_P(yycharset);
+ appname = Z_STRVAL_P(yyappname);
+ hashed_details_length = Z_STRLEN_P(yyhost)+Z_STRLEN_P(yyuser)+Z_STRLEN_P(yypasswd)+Z_STRLEN_P(yycharset)+Z_STRLEN_P(yyappname)+6+5;
hashed_details = (char *) emalloc(hashed_details_length+1);
- sprintf(hashed_details, "sybase_%s_%s_%s_%s", Z_STRVAL_P(yyhost), Z_STRVAL_P(yyuser), Z_STRVAL_P(yypasswd), Z_STRVAL_P(yycharset));
+ sprintf(hashed_details, "sybase_%s_%s_%s_%s_%s", Z_STRVAL_P(yyhost), Z_STRVAL_P(yyuser), Z_STRVAL_P(yypasswd), Z_STRVAL_P(yycharset), Z_STRVAL_P(yyappname));
}
break;
default:
}
sybase_ptr = (sybase_link *) malloc(sizeof(sybase_link));
- if (!php_sybase_do_connect_internal(sybase_ptr, host, user, passwd, charset)) {
+ if (!php_sybase_do_connect_internal(sybase_ptr, host, user, passwd, charset, appname)) {
free(sybase_ptr);
efree(hashed_details);
RETURN_FALSE;
* NULL before trying to use it elsewhere . . .)
*/
memcpy(&sybase, sybase_ptr, sizeof(sybase_link));
- if (!php_sybase_do_connect_internal(sybase_ptr, host, user, passwd, charset)) {
+ if (!php_sybase_do_connect_internal(sybase_ptr, host, user, passwd, charset, appname)) {
memcpy(sybase_ptr, &sybase, sizeof(sybase_link));
efree(hashed_details);
RETURN_FALSE;
}
sybase_ptr = (sybase_link *) emalloc(sizeof(sybase_link));
- if (!php_sybase_do_connect_internal(sybase_ptr, host, user, passwd, charset)) {
+ if (!php_sybase_do_connect_internal(sybase_ptr, host, user, passwd, charset, appname)) {
efree(sybase_ptr);
efree(hashed_details);
RETURN_FALSE;
}
-/* {{{ proto int sybase_connect([string host [, string user [, string password [, string charset]]]])
+/* {{{ proto int sybase_connect([string host [, string user [, string password [, string charset [, string appname]]]]])
Open Sybase server connection */
PHP_FUNCTION(sybase_connect)
{
/* }}} */
-/* {{{ proto int sybase_pconnect([string host [, string user [, string password [, string charset]]]])
+/* {{{ proto int sybase_pconnect([string host [, string user [, string password [, string charset [, string appname]]]]])
Open persistent Sybase connection */
PHP_FUNCTION(sybase_pconnect)
{