- Z_SortKeySpec *sks = rr->sort_sequence->specs[i];
- Z_SortKey *sk;
-
- if (*sks->sortRelation == Z_SortRelation_ascending)
- sort_criteria[i].relation = 'A';
- else if (*sks->sortRelation == Z_SortRelation_descending)
- sort_criteria[i].relation = 'D';
- else
- {
- rr->errcode = 214;
- return 0;
- }
- if (sks->sortElement->which == Z_SortElement_databaseSpecific)
- {
- rr->errcode = 210;
- return 0;
- }
- else if (sks->sortElement->which != Z_SortElement_generic)
- {
- rr->errcode = 237;
- return 0;
- }
- sk = sks->sortElement->u.generic;
- switch (sk->which)
- {
- case Z_SortKey_sortField:
- logf (LOG_DEBUG, "Sort: key %d is of type sortField", i+1);
- rr->errcode = 207;
- return 0;
- case Z_SortKey_elementSpec:
- logf (LOG_DEBUG, "Sort: key %d is of type elementSpec", i+1);
- return 0;
- case Z_SortKey_sortAttributes:
- logf (LOG_DEBUG, "Sort: key %d is of type sortAttributes", i+1);
- sort_criteria[i].attrUse =
- zebra_maps_sort (zi->zebra_maps, sk->u.sortAttributes);
- logf (LOG_DEBUG, "use value = %d", sort_criteria[i].attrUse);
- if (sort_criteria[i].attrUse == -1)
- {
- rr->errcode = 116;
- return 0;
- }
- if (sortIdx_type (zi->sortIdx, sort_criteria[i].attrUse))
- {
- rr->errcode = 207;
- return 0;
- }
- break;
- }
+ Z_SortKeySpec *sks = sort_sequence->specs[i];
+ Z_SortKey *sk;
+
+ if (*sks->sortRelation == Z_SortKeySpec_ascending)
+ sort_criteria[i].relation = 'A';
+ else if (*sks->sortRelation == Z_SortKeySpec_descending)
+ sort_criteria[i].relation = 'D';
+ else
+ {
+ zebra_setError(zh, YAZ_BIB1_ILLEGAL_SORT_RELATION, 0);
+ return ZEBRA_FAIL;
+ }
+ if (sks->sortElement->which == Z_SortElement_databaseSpecific)
+ {
+ zebra_setError(zh, YAZ_BIB1_DATABASE_SPECIFIC_SORT_UNSUPP, 0);
+ return ZEBRA_FAIL;
+ }
+ else if (sks->sortElement->which != Z_SortElement_generic)
+ {
+ zebra_setError(zh, YAZ_BIB1_SORT_ILLEGAL_SORT, 0);
+ return ZEBRA_FAIL;
+ }
+ sk = sks->sortElement->u.generic;
+ switch (sk->which)
+ {
+ case Z_SortKey_sortField:
+ yaz_log(log_level_sort, "key %d is of type sortField",
+ i+1);
+ zebra_setError(zh, YAZ_BIB1_CANNOT_SORT_ACCORDING_TO_SEQUENCE, 0);
+ return ZEBRA_FAIL;
+ case Z_SortKey_elementSpec:
+ yaz_log(log_level_sort, "key %d is of type elementSpec",
+ i+1);
+ zebra_setError(zh, YAZ_BIB1_CANNOT_SORT_ACCORDING_TO_SEQUENCE, 0);
+ return ZEBRA_FAIL;
+ case Z_SortKey_sortAttributes:
+ yaz_log(log_level_sort, "key %d is of type sortAttributes", i+1);
+ sort_criteria[i].attrUse =
+ zebra_maps_sort (zh->reg->zebra_maps,
+ sk->u.sortAttributes,
+ &sort_criteria[i].numerical);
+ yaz_log(log_level_sort, "use value = %d", sort_criteria[i].attrUse);
+ if (sort_criteria[i].attrUse == -1)
+ {
+ zebra_setError(
+ zh, YAZ_BIB1_USE_ATTRIBUTE_REQUIRED_BUT_NOT_SUPPLIED, 0);
+ return ZEBRA_FAIL;
+ }
+ if (sortIdx_type (zh->reg->sortIdx, sort_criteria[i].attrUse))
+ {
+ zebra_setError(
+ zh, YAZ_BIB1_CANNOT_SORT_ACCORDING_TO_SEQUENCE, 0);
+ return ZEBRA_FAIL;
+ }
+ break;
+ }