dickmeiss Tue Mar 13 09:04:05 2001 EDT
Modified files:
/php4/ext/yaz php_yaz.c php_yaz.h
Log:
Added yaz_database. Option bit ExtendedServices set for InitRequest.
Index: php4/ext/yaz/php_yaz.c
diff -u php4/ext/yaz/php_yaz.c:1.13 php4/ext/yaz/php_yaz.c:1.14
--- php4/ext/yaz/php_yaz.c:1.13 Sun Feb 25 22:07:26 2001
+++ php4/ext/yaz/php_yaz.c Tue Mar 13 09:04:05 2001
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: php_yaz.c,v 1.13 2001/02/26 06:07:26 andi Exp $ */
+/* $Id: php_yaz.c,v 1.14 2001/03/13 17:04:05 dickmeiss Exp $ */
#include "php.h"
@@ -72,6 +72,7 @@
char *host_port;
int num_databaseNames;
char **databaseNames;
+ char *local_databases;
COMSTACK cs;
char *cookie;
char *auth_open;
@@ -110,6 +111,7 @@
p->host_port = 0;
p->num_databaseNames = 0;
p->databaseNames = 0;
+ p->local_databases = 0;
p->cs = 0;
p->cookie = 0;
p->auth_open = 0;
@@ -149,6 +151,7 @@
if (!p)
return ;
xfree (p->host_port);
+ xfree (p->local_databases);
for (i = 0; i<p->num_databaseNames; i++)
xfree (p->databaseNames[i]);
xfree (p->databaseNames);
@@ -221,6 +224,7 @@
PHP_FE(yaz_present, NULL)
PHP_FE(yaz_ccl_conf, NULL)
PHP_FE(yaz_ccl_parse, NULL)
+ PHP_FE(yaz_database, NULL)
{NULL, NULL, NULL}
};
@@ -656,12 +660,21 @@
return 0;
}
+/* set database names. Take local databases (if set); otherwise
+ take databases given in ZURL (if set); otherwise use Default */
static char **set_DatabaseNames (Yaz_Association t, int *num)
{
char **databaseNames;
- char *c, *cp = strchr (t->host_port, '/');
+ char *c;
int no = 2;
+ char *cp = t->local_databases;
+ if (!cp || !*cp)
+ {
+ cp = strchr (t->host_port, '/');
+ if (cp)
+ cp++;
+ }
if (cp)
{
c = cp;
@@ -672,23 +685,26 @@
}
}
else
- cp = "/Default";
+ cp = "Default";
databaseNames = odr_malloc (t->odr_out, no * sizeof(*databaseNames));
no = 0;
while (*cp)
{
- c = ++cp;
- c = strchr (c, '+');
+ c = strchr (cp, '+');
if (!c)
c = cp + strlen(cp);
else if (c == cp)
+ {
+ cp++;
continue;
+ }
/* cp ptr to first char of db name, c is char following db name */
databaseNames[no] = odr_malloc (t->odr_out, 1+c-cp);
memcpy (databaseNames[no], cp, c-cp);
- databaseNames[no][c-cp] = '\0';
- no++;
+ databaseNames[no++][c-cp] = '\0';
cp = c;
+ if (*cp)
+ cp++;
}
databaseNames[no] = NULL;
*num = no;
@@ -822,6 +838,7 @@
ODR_MASK_SET(ireq->options, Z_Options_present);
ODR_MASK_SET(ireq->options, Z_Options_namedResultSets);
ODR_MASK_SET(ireq->options, Z_Options_scan);
+ ODR_MASK_SET(ireq->options, Z_Options_extendedServices);
ODR_MASK_SET(ireq->protocolVersion, Z_ProtocolVersion_1);
ODR_MASK_SET(ireq->protocolVersion, Z_ProtocolVersion_2);
@@ -1062,6 +1079,8 @@
shared_associations[i]->group = xstrdup (group_str);
shared_associations[i]->pass = xstrdup (pass_str);
}
+ xfree (shared_associations[i]->local_databases);
+ shared_associations[i]->local_databases = 0;
#ifdef ZTS
tsrm_mutex_unlock (yaz_mutex);
#endif
@@ -2245,6 +2264,33 @@
RETVAL_TRUE;
}
ccl_rpn_delete(rpn);
+ }
+ else
+ RETVAL_FALSE;
+ release_assoc (p);
+}
+/* }}} */
+
+/* {{{ proto int yaz_ccl_parse(int id, string query, array res)
+ Parse a CCL query */
+
+PHP_FUNCTION(yaz_database)
+{
+ pval **pval_id, **pval_database;
+ Yaz_Association p;
+ if (ZEND_NUM_ARGS() != 2 ||
+ zend_get_parameters_ex(2, &pval_id, &pval_database) ==
+ FAILURE)
+ {
+ WRONG_PARAM_COUNT;
+ }
+ convert_to_string_ex (pval_database);
+ p = get_assoc (pval_id);
+ if (p)
+ {
+ xfree (p->local_databases);
+ p->local_databases = xstrdup ((*pval_database)->value.str.val);
+ RETVAL_TRUE;
}
else
RETVAL_FALSE;
Index: php4/ext/yaz/php_yaz.h
diff -u php4/ext/yaz/php_yaz.h:1.4 php4/ext/yaz/php_yaz.h:1.5
--- php4/ext/yaz/php_yaz.h:1.4 Sun Feb 25 22:07:26 2001
+++ php4/ext/yaz/php_yaz.h Tue Mar 13 09:04:05 2001
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: php_yaz.h,v 1.4 2001/02/26 06:07:26 andi Exp $ */
+/* $Id: php_yaz.h,v 1.5 2001/03/13 17:04:05 dickmeiss Exp $ */
#ifndef PHP_YAZ_H
#define PHP_YAZ_H
@@ -48,6 +48,7 @@
PHP_FUNCTION(yaz_present);
PHP_FUNCTION(yaz_ccl_conf);
PHP_FUNCTION(yaz_ccl_parse);
+PHP_FUNCTION(yaz_database);
#else
--
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
To contact the list administrators, e-mail: [EMAIL PROTECTED]