/*
- * Copyright (c) 1995-2000, Index Data
+ * Copyright (c) 1995-2001, Index Data
* See the file LICENSE for details.
- * Sebastian Hammer, Adam Dickmeiss
*
* $Log: client.c,v $
- * Revision 1.108 2000-11-23 10:58:32 adam
+ * Revision 1.115 2001-03-13 18:10:58 adam
+ * Added option -c to set CCL config file.
+ *
+ * Revision 1.114 2001/02/21 13:46:53 adam
+ * C++ fixes.
+ *
+ * Revision 1.113 2001/02/21 09:41:15 adam
+ * Fixed problem with old codecs.
+ *
+ * Revision 1.112 2001/02/20 11:25:32 adam
+ * Added ill_get_APDU and ill_get_Cancel.
+ *
+ * Revision 1.111 2001/01/30 15:52:48 ja7
+ * added command for setting packageName in ES packages!
+ * command is named packagename default is NULL for server suplyed package name
+ *
+ * Revision 1.110 2001/01/29 11:19:05 adam
+ * Clients prints options in InitResponse.
+ *
+ * Revision 1.109 2001/01/22 10:41:47 adam
+ * Multiple attribute may be specified for sorging.
+ *
+ * Revision 1.108 2000/11/23 10:58:32 adam
* SSL comstack support. Separate POSIX thread support library.
*
* Revision 1.107 2000/11/16 13:11:07 adam
static Z_InitResponse *session = 0; /* session parameters */
static char last_scan_line[512] = "0";
static char last_scan_query[512] = "0";
+static char ccl_fields[512] = "default.bib";
+char* esPackageName = 0;
static char last_cmd[100] = "?";
static FILE *marcdump = 0;
}
odr_reset (print);
}
+ printf ("Options:");
+ if (ODR_MASK_GET(res->options, Z_Options_search))
+ printf (" search");
+ if (ODR_MASK_GET(res->options, Z_Options_present))
+ printf (" present");
+ if (ODR_MASK_GET(res->options, Z_Options_delSet))
+ printf (" delSet");
+ if (ODR_MASK_GET(res->options, Z_Options_resourceReport))
+ printf (" resourceReport");
+ if (ODR_MASK_GET(res->options, Z_Options_resourceCtrl))
+ printf (" resourceCtrl");
+ if (ODR_MASK_GET(res->options, Z_Options_accessCtrl))
+ printf (" accessCtrl");
+ if (ODR_MASK_GET(res->options, Z_Options_scan))
+ printf (" scan");
+ if (ODR_MASK_GET(res->options, Z_Options_sort))
+ printf (" sort");
+ if (ODR_MASK_GET(res->options, Z_Options_extendedServices))
+ printf (" extendedServices");
+ if (ODR_MASK_GET(res->options, Z_Options_level_1Segmentation))
+ printf (" level1Segmentation");
+ if (ODR_MASK_GET(res->options, Z_Options_level_2Segmentation))
+ printf (" level2Segmentation");
+ if (ODR_MASK_GET(res->options, Z_Options_concurrentOperations))
+ printf (" concurrentOperations");
+ if (ODR_MASK_GET(res->options, Z_Options_namedResultSets))
+ printf (" namedResultSets");
+ printf ("\n");
+ fflush (stdout);
return 0;
}
r->u.single_ASN1_type = (Odr_oct *)
odr_malloc (out, sizeof(*r->u.single_ASN1_type));
- r->u.single_ASN1_type->buf = odr_malloc (out, item_request_size);
+ r->u.single_ASN1_type->buf = (unsigned char *)
+ odr_malloc (out, item_request_size);
r->u.single_ASN1_type->len = item_request_size;
r->u.single_ASN1_type->size = item_request_size;
memcpy (r->u.single_ASN1_type->buf, item_request_buf,
#endif
#ifdef ASN_COMPILED
-static Z_External *create_external_ILLRequest()
+static Z_External *create_external_ILL_APDU(int which)
{
struct ill_get_ctl ctl;
- ILL_Request *req;
+ ILL_APDU *ill_apdu;
Z_External *r = 0;
int ill_request_size = 0;
char *ill_request_buf = 0;
ctl.clientData = 0;
ctl.f = get_ill_element;
- req = ill_get_ILLRequest(&ctl, "ill", 0);
+ ill_apdu = ill_get_APDU(&ctl, "ill", 0);
- if (!ill_Request (out, &req, 0, 0))
+ if (!ill_APDU (out, &ill_apdu, 0, 0))
{
if (apdu_file)
{
printf ("-------------------\n");
- ill_Request(print, &req, 0, 0);
+ ill_APDU(print, &ill_apdu, 0, 0);
odr_reset(print);
printf ("-------------------\n");
}
r->u.single_ASN1_type = (Odr_oct *)
odr_malloc (out, sizeof(*r->u.single_ASN1_type));
- r->u.single_ASN1_type->buf = odr_malloc (out, ill_request_size);
+ r->u.single_ASN1_type->buf = (unsigned char *)
+ odr_malloc (out, ill_request_size);
r->u.single_ASN1_type->len = ill_request_size;
r->u.single_ASN1_type->size = ill_request_size;
memcpy (r->u.single_ASN1_type->buf, ill_request_buf, ill_request_size);
(int *) odr_malloc(out, sizeof(int));
*r->u.itemOrder->u.esRequest->notToKeep->resultSetItem->item = itemno;
+#ifdef ASN_COMPILED
if (!strcmp (type, "item") || !strcmp(type, "2"))
{
printf ("using item-request\n");
{
printf ("using ILL-request\n");
r->u.itemOrder->u.esRequest->notToKeep->itemRequest =
- create_external_ILLRequest();
+ create_external_ILL_APDU(ILL_APDU_ILL_Request);
}
else
r->u.itemOrder->u.esRequest->notToKeep->itemRequest = 0;
+
+#else
+ r->u.itemOrder->u.esRequest->notToKeep->itemRequest = 0;
+#endif
return r;
}
static int send_itemorder(const char *type, int itemno)
{
- Z_APDU *apdu = zget_APDU(out, Z_APDU_extendedServicesRequest );
+ Z_APDU *apdu = zget_APDU(out, Z_APDU_extendedServicesRequest);
Z_ExtendedServicesRequest *req = apdu->u.extendedServicesRequest;
oident ItemOrderRequest;
ItemOrderRequest.oclass = CLASS_EXTSERV;
ItemOrderRequest.value = VAL_ITEMORDER;
req->packageType = odr_oiddup(out,oid_getoidbyent(&ItemOrderRequest));
- req->packageName = "1.Extendedserveq";
+ req->packageName = esPackageName;
req->taskSpecificParameters = create_ItemOrderExternal(type, itemno);
update_oid.value = VAL_DBUPDATE;
oid_ent_to_oid (&update_oid, oid);
req->packageType = odr_oiddup(out,oid);
- req->packageName = "1.Extendedserveq";
+ req->packageName = esPackageName;
r = req->taskSpecificParameters = (Z_External *)
odr_malloc (out, sizeof(*r));
req->termListAndStartPoint->term->u.general)
{
req->termListAndStartPoint->term->u.general->buf =
- odr_strdup(out, term);
+ (unsigned char *) odr_strdup(out, term);
req->termListAndStartPoint->term->u.general->len =
req->termListAndStartPoint->term->u.general->size =
strlen(term);
Z_SortKeySpecList *sksl = (Z_SortKeySpecList *)
odr_malloc (out, sizeof(*sksl));
char setstring[32];
- char sort_string[32], sort_flags[32];
+ char sort_string_buf[32], sort_flags[32];
int off;
int oid[OID_SIZE];
oident bib1;
bib1.proto = protocol;
bib1.oclass = CLASS_ATTSET;
bib1.value = VAL_BIB1;
- while ((sscanf (arg, "%31s %31s%n", sort_string, sort_flags, &off)) == 2
+ while ((sscanf (arg, "%31s %31s%n", sort_string_buf, sort_flags, &off)) == 2
&& off > 1)
{
int i;
char *sort_string_sep;
+ char *sort_string = sort_string_buf;
Z_SortKeySpec *sks = (Z_SortKeySpec *)odr_malloc (out, sizeof(*sks));
Z_SortKey *sk = (Z_SortKey *)odr_malloc (out, sizeof(*sk));
if ((sort_string_sep = strchr (sort_string, '=')))
{
- Z_AttributeElement *el = (Z_AttributeElement *)odr_malloc (out, sizeof(*el));
+ int i = 0;
sk->which = Z_SortKey_sortAttributes;
sk->u.sortAttributes =
(Z_SortAttributes *)odr_malloc (out, sizeof(*sk->u.sortAttributes));
sk->u.sortAttributes->id = oid_ent_to_oid(&bib1, oid);
sk->u.sortAttributes->list =
(Z_AttributeList *)odr_malloc (out, sizeof(*sk->u.sortAttributes->list));
- sk->u.sortAttributes->list->num_attributes = 1;
sk->u.sortAttributes->list->attributes =
- (Z_AttributeElement **)odr_malloc (out,
- sizeof(*sk->u.sortAttributes->list->attributes));
- sk->u.sortAttributes->list->attributes[0] = el;
- el->attributeSet = 0;
- el->attributeType = (int *)odr_malloc (out, sizeof(*el->attributeType));
- *el->attributeType = atoi (sort_string);
- el->which = Z_AttributeValue_numeric;
- el->value.numeric = (int *)odr_malloc (out, sizeof(*el->value.numeric));
- *el->value.numeric = atoi (sort_string_sep + 1);
+ (Z_AttributeElement **)
+ odr_malloc (out, 10 *
+ sizeof(*sk->u.sortAttributes->list->attributes));
+ while (i < 10 && sort_string && sort_string_sep)
+ {
+ Z_AttributeElement *el = (Z_AttributeElement *)
+ odr_malloc (out, sizeof(*el));
+ sk->u.sortAttributes->list->attributes[i] = el;
+ el->attributeSet = 0;
+ el->attributeType = (int *)odr_malloc (out, sizeof(*el->attributeType));
+ *el->attributeType = atoi (sort_string);
+ el->which = Z_AttributeValue_numeric;
+ el->value.numeric = (int *)odr_malloc (out, sizeof(*el->value.numeric));
+ *el->value.numeric = atoi (sort_string_sep + 1);
+ i++;
+ sort_string = strchr(sort_string, ',');
+ if (sort_string)
+ {
+ sort_string++;
+ sort_string_sep = strchr (sort_string, '=');
+ }
+ }
+ sk->u.sortAttributes->list->num_attributes = i;
}
else
{
return 2;
}
+int cmd_packagename(char* arg) {
+ xfree (esPackageName);
+ esPackageName = NULL;
+ if (*arg)
+ {
+ esPackageName = (char *) xmalloc (strlen(arg)+1);
+ strcpy (esPackageName, arg);
+ }
+ return 1;
+};
+
static void initialize(void)
{
#if CCL2RPN
#if CCL2RPN
bibset = ccl_qual_mk ();
- inf = fopen ("default.bib", "r");
+ inf = fopen (ccl_fields, "r");
if (inf)
{
ccl_qual_file (bibset, inf);
{"refid", cmd_refid, "<id>"},
{"itemorder", cmd_itemorder, "ill|item <itemno>"},
{"update", cmd_update, "<item>"},
+ {"packagename", cmd_packagename, "<packagename>"},
#ifdef ASN_COMPILED
/* Server Admin Functions */
{"adm-reindex", cmd_adm_reindex, "<database-name>"},
int ret;
int opened = 0;
- while ((ret = options("a:m:v:", argv, argc, &arg)) != -2)
+ while ((ret = options("c:a:m:v:", argv, argc, &arg)) != -2)
{
switch (ret)
{
exit (1);
}
break;
+ case 'c':
+ strncpy (ccl_fields, arg, sizeof(ccl_fields)-1);
+ ccl_fields[sizeof(ccl_fields)-1] = '\0';
+ break;
case 'a':
if (!strcmp(arg, "-"))
apdu_file=stderr;
break;
default:
fprintf (stderr, "Usage: %s [-m <marclog>] [ -a <apdulog>] "
- "[<server-addr>]\n",
+ "[-c cclfields] [<server-addr>]\n",
prog);
exit (1);
}