[PHP-CVS] cvs: php4 /ext/yaz php_yaz.c

2001-04-18 Thread Adam Dickmeiss

dickmeiss   Wed Apr 18 08:03:24 2001 EDT

  Modified files:  
/php4/ext/yaz   php_yaz.c 
  Log:
  Function yaz_record returns database for record if type is "database".
  
  
Index: php4/ext/yaz/php_yaz.c
diff -u php4/ext/yaz/php_yaz.c:1.14 php4/ext/yaz/php_yaz.c:1.15
--- php4/ext/yaz/php_yaz.c:1.14 Tue Mar 13 09:04:05 2001
+++ php4/ext/yaz/php_yaz.c  Wed Apr 18 08:03:23 2001
@@ -16,7 +16,7 @@
+--+
  */
 
-/* $Id: php_yaz.c,v 1.14 2001/03/13 17:04:05 dickmeiss Exp $ */
+/* $Id: php_yaz.c,v 1.15 2001/04/18 15:03:23 dickmeiss Exp $ */
 
 #include "php.h"
 
@@ -244,6 +244,7 @@
 #ifdef ZTS
tsrm_mutex_unlock (yaz_mutex);
 #endif
+   php_error(E_WARNING, "Invalid YAZ handle");
return 0;
}
return assoc;
@@ -492,6 +493,7 @@
}
if (t-action)
(*t-action) (t);
+   t-action = 0;
}
break;
case Z_APDU_searchResponse:
@@ -1193,7 +1195,6 @@
p = get_assoc (id);
if (!p)
{
-   zend_error(E_WARNING, "get_assoc failed for present");
RETURN_FALSE;
}
p-action = 0;
@@ -1219,7 +1220,8 @@
for (i = 0; iMAX_ASSOC; i++)
{
Yaz_Association p = shared_associations[i];
-   if (!p || p-order != order_associations || !p-action)
+   if (!p || p-order != order_associations || !p-action
+   || p-mask_select)
continue;
if (!p-cs)
{
@@ -1649,6 +1651,11 @@
if (ent  ent-desc)
RETVAL_STRING(ent-desc, 1);
}
+   else if (!strcmp (type, "database"))
+   {
+   if (npr-databaseName)
+   RETVAL_STRING(npr-databaseName, 1);
+   }
else if (!strcmp (type, "string"))
{
if (r-which == Z_External_sutrs  ent-value == 
VAL_SUTRS)
@@ -2201,8 +2208,13 @@
zend_hash_move_forward_ex(ht, pos)) 
{
ulong idx;
+#if PHP_API_VERSION  20010101
int type = zend_hash_get_current_key_ex(ht, key, 0, 
   
 idx, 0, pos);
+#else
+   int type = zend_hash_get_current_key_ex(ht, key, 0, 
+  
+ idx, pos);
+#endif
if (type != HASH_KEY_IS_STRING || Z_TYPE_PP(ent) != IS_STRING)
continue;
ccl_qual_fitem(p-ccl_parser-bibset, (*ent)-value.str.val, 
key);



-- 
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]




[PHP-CVS] cvs: php4 /ext/yaz php_yaz.c php_yaz.h

2001-03-13 Thread Adam Dickmeiss

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; ip-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 @@

[PHP-CVS] cvs: php4 /ext/yaz php_yaz.c

2001-02-20 Thread Adam Dickmeiss

dickmeiss   Tue Feb 20 03:40:36 2001 EDT

  Modified files:  
/php4/ext/yaz   php_yaz.c 
  Log:
  Yet another bug fix regarding present.
  
  
Index: php4/ext/yaz/php_yaz.c
diff -u php4/ext/yaz/php_yaz.c:1.11 php4/ext/yaz/php_yaz.c:1.12
--- php4/ext/yaz/php_yaz.c:1.11 Mon Feb 19 09:06:39 2001
+++ php4/ext/yaz/php_yaz.c  Tue Feb 20 03:40:35 2001
@@ -16,7 +16,7 @@
+--+
  */
 
-/* $Id: php_yaz.c,v 1.11 2001/02/19 17:06:39 dickmeiss Exp $ */
+/* $Id: php_yaz.c,v 1.12 2001/02/20 11:40:35 dickmeiss Exp $ */
 
 #include "php.h"
 
@@ -372,14 +372,17 @@
NMEM nmem = odr_extract_mem (t-odr_in);
Z_NamePlusRecordList *p =
sr-u.databaseOrSurDiagnostics;
-   for (j = 0; j  t-resultSets-recordList-num_records; j++)
+   if (t-resultSets-recordList)
+   {
+   for (j = 0; j  
+t-resultSets-recordList-num_records; j++)
if (!t-resultSets-recordList-records[j])
break;
-   for (i = 0; ip-num_records; i++)
-   t-resultSets-recordList-records[i+j] = 
p-records[i];
-   /* transfer our response to search_nmem .. we need it later */
-   nmem_transfer (t-resultSets-odr-mem, nmem);
-   nmem_destroy (nmem);
+   for (i = 0; ip-num_records; i++)
+   t-resultSets-recordList-records[i+j] = 
+p-records[i];
+   /* transfer our response to search_nmem .. we need it 
+later */
+   nmem_transfer (t-resultSets-odr-mem, nmem);
+   nmem_destroy (nmem);
+   }
if (present_phase  p-num_records == 0)
{
/* present response and we didn't get any records! */



-- 
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]




[PHP-CVS] cvs: php4 /ext/yaz php_yaz.c

2001-02-19 Thread Adam Dickmeiss

dickmeiss   Mon Feb 19 09:06:39 2001 EDT

  Modified files:  
/php4/ext/yaz   php_yaz.c 
  Log:
  Bug fix: number of records in yaz_range wrongly set to zero.
  
  
Index: php4/ext/yaz/php_yaz.c
diff -u php4/ext/yaz/php_yaz.c:1.10 php4/ext/yaz/php_yaz.c:1.11
--- php4/ext/yaz/php_yaz.c:1.10 Tue Feb 13 12:02:52 2001
+++ php4/ext/yaz/php_yaz.c  Mon Feb 19 09:06:39 2001
@@ -16,7 +16,7 @@
+--+
  */
 
-/* $Id: php_yaz.c,v 1.10 2001/02/13 20:02:52 dickmeiss Exp $ */
+/* $Id: php_yaz.c,v 1.11 2001/02/19 17:06:39 dickmeiss Exp $ */
 
 #include "php.h"
 
@@ -360,10 +360,11 @@
t-resultSets-recordList-records[i] = 0;
if (t-numberOfRecordsRequested + t-resultSetStartPoint-1  
t-resultSets-resultCount)
-   t-numberOfRecordsRequested = 
t-resultSets-resultCount -
-   t-resultSetStartPoint + 1;
-   t-resultSets-recordList-num_records =
-   t-numberOfRecordsRequested;
+   t-resultSets-recordList-num_records =
+   t-resultSets-resultCount - 
+t-resultSetStartPoint + 1;
+   else
+   t-resultSets-recordList-num_records =
+   t-numberOfRecordsRequested;
}
if (sr  sr-which == Z_Records_DBOSD)
{



-- 
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]




[PHP-CVS] cvs: php4 /ext/yaz README php_yaz.c

2001-01-30 Thread Adam Dickmeiss

dickmeiss   Tue Jan 30 05:09:27 2001 EDT

  Modified files:  
/php4/ext/yaz   README php_yaz.c 
  Log:
  Fixed problem with looping present requests for Isite targets.
  
  
Index: php4/ext/yaz/README
diff -u php4/ext/yaz/README:1.1 php4/ext/yaz/README:1.2
--- php4/ext/yaz/README:1.1 Thu May 25 15:24:42 2000
+++ php4/ext/yaz/README Tue Jan 30 05:09:24 2001
@@ -1,7 +1,4 @@
-What is PHP extension YAZ?
-
-This extension implements a Z39.50 client and is build on top of
-the YAZ toolkit.
+This extension implements a Z39.50 client for PHP using the YAZ toolkit.
 
 Find more information at:
   http://www.indexdata.dk/phpyaz/
Index: php4/ext/yaz/php_yaz.c
diff -u php4/ext/yaz/php_yaz.c:1.7 php4/ext/yaz/php_yaz.c:1.8
--- php4/ext/yaz/php_yaz.c:1.7  Wed Nov  1 14:10:54 2000
+++ php4/ext/yaz/php_yaz.c  Tue Jan 30 05:09:24 2001
@@ -16,7 +16,7 @@
+--+
  */
 
-/* $Id: php_yaz.c,v 1.7 2000/11/01 22:10:54 dickmeiss Exp $ */
+/* $Id: php_yaz.c,v 1.8 2001/01/30 13:09:24 dickmeiss Exp $ */
 
 #include "php.h"
 
@@ -321,7 +321,8 @@
 
 static int send_present (Yaz_Association t);
 
-static void handle_records (Yaz_Association t, Z_Records *sr)
+static void handle_records (Yaz_Association t, Z_Records *sr,
+   int present_phase)
 {
if (sr  sr-which == Z_Records_NSD)
{
@@ -338,7 +339,7 @@
else if (sr  sr-which == Z_Records_multipleNSD)
{
if (sr-u.multipleNonSurDiagnostics-num_diagRecs = 1)
-   response_diag(t,
sr-u.multipleNonSurDiagnostics-diagRecs[0]);
+   response_diag(t, sr-u.multipleNonSurDiagnostics-diagRecs[0]);
else
t-error = PHP_YAZ_ERROR_DECODE;
}
@@ -366,6 +367,7 @@
if (sr  sr-which == Z_Records_DBOSD)
{
int j, i;
+   NMEM nmem = odr_extract_mem (t-odr_in);
Z_NamePlusRecordList *p =
sr-u.databaseOrSurDiagnostics;
for (j = 0; j  t-resultSets-recordList-num_records; j++)
@@ -374,20 +376,33 @@
for (i = 0; ip-num_records; i++)
t-resultSets-recordList-records[i+j] = 
p-records[i];
/* transfer our response to search_nmem .. we need it later */
-   nmem_transfer (t-resultSets-odr-mem, odr_extract_mem 
(t-odr_in));
+   nmem_transfer (t-resultSets-odr-mem, nmem);
+   nmem_destroy (nmem);
+   if (present_phase  p-num_records == 0)
+   {
+   /* present response and we didn't get any records! */
+   t-error = PHP_YAZ_ERROR_DECODE;
+   t-resultSets-recordList = 0;
+   }
}
+   else if (present_phase)
+   {
+   /* present response and we didn't get any records! */
+   t-error = PHP_YAZ_ERROR_DECODE;
+   t-resultSets-recordList = 0;
+   }
}
 }
 
 static void search_response (Yaz_Association t, Z_SearchResponse *sr)
 {
t-resultSets-resultCount = *sr-resultCount;
-   handle_records (t, sr-records);
+   handle_records (t, sr-records, 0);
 }
 
 static void present_response (Yaz_Association t, Z_PresentResponse *pr)
 {
-   handle_records (t, pr-records);
+   handle_records (t, pr-records, 1);
 }
 
 static void handle_apdu (Yaz_Association t, Z_APDU *apdu)



-- 
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]