[PHP-CVS] cvs: php4 /ext/yaz php_yaz.c
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
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
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
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
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]