YAZ
4.2.57
Main Page
Data Structures
Files
File List
Globals
src
initopt.c
Go to the documentation of this file.
1
/* This file is part of the YAZ toolkit.
2
* Copyright (C) 1995-2013 Index Data
3
* See the file LICENSE for details.
4
*/
5
11
#if HAVE_CONFIG_H
12
#include <
config.h
>
13
#endif
14
15
#include <
yaz/proto.h
>
16
17
static
struct
{
18
char
*
name
;
19
int
opt
;
20
}
opt_array
[] = {
21
{
"search"
,
Z_Options_search
},
22
{
"present"
,
Z_Options_present
},
23
{
"delSet"
,
Z_Options_delSet
},
24
{
"resourceReport"
,
Z_Options_resourceReport
},
25
{
"triggerResourceCtrl"
,
Z_Options_triggerResourceCtrl
},
26
{
"resourceCtrl"
,
Z_Options_resourceCtrl
},
27
{
"accessCtrl"
,
Z_Options_accessCtrl
},
28
{
"scan"
,
Z_Options_scan
},
29
{
"sort"
,
Z_Options_sort
},
30
{
"extendedServices"
,
Z_Options_extendedServices
},
31
{
"level_1Segmentation"
,
Z_Options_level_1Segmentation
},
32
{
"level_2Segmentation"
,
Z_Options_level_2Segmentation
},
33
{
"concurrentOperations"
,
Z_Options_concurrentOperations
},
34
{
"namedResultSets"
,
Z_Options_namedResultSets
},
35
{
"encapsulation"
,
Z_Options_encapsulation
},
36
{
"resultCount"
,
Z_Options_resultCount
},
37
{
"negotiationModel"
,
Z_Options_negotiationModel
},
38
{
"duplicationDetection"
,
Z_Options_duplicateDetection
},
39
{
"queryType104"
,
Z_Options_queryType104
},
40
{
"pQESCorrection"
,
Z_Options_pQESCorrection
},
41
{
"stringSchema"
,
Z_Options_stringSchema
},
42
{0, 0}
43
};
44
45
int
yaz_init_opt_encode
(
Z_Options
*
opt
,
const
char
*opt_str,
int
*error_pos)
46
{
47
const
char
*cp = opt_str;
48
49
ODR_MASK_ZERO
(opt);
50
while
(*cp)
51
{
52
char
this_opt[42];
53
size_t
i, j;
54
if
(*cp ==
' '
|| *cp ==
','
)
55
{
56
cp++;
57
continue
;
58
}
59
for
(i = 0; i < (
sizeof
(this_opt)-1) &&
60
cp[i] && cp[i] !=
' '
&& cp[i] !=
','
; i++)
61
this_opt[i] = cp[i];
62
this_opt[i] = 0;
63
for
(j = 0;
opt_array
[j].name; j++)
64
{
65
if
(
yaz_matchstr
(this_opt,
opt_array
[j].
name
) == 0)
66
{
67
ODR_MASK_SET
(opt,
opt_array
[j].opt);
68
break
;
69
}
70
}
71
if
(!
opt_array
[j].
name
)
72
{
73
if
(error_pos)
74
{
75
*error_pos = cp - opt_str;
76
return
-1;
77
}
78
}
79
cp += i;
80
}
81
return
0;
82
}
83
84
void
yaz_init_opt_decode
(
Z_Options
*
opt
,
void
(*pr)(
const
char
*
name
,
85
void
*clientData),
86
void
*clientData)
87
{
88
int
i;
89
for
(i = 0;
opt_array
[i].name; i++)
90
if
(
ODR_MASK_GET
(opt,
opt_array
[i].opt))
91
(*pr)(
opt_array
[i].name, clientData);
92
}
93
/*
94
* Local variables:
95
* c-basic-offset: 4
96
* c-file-style: "Stroustrup"
97
* indent-tabs-mode: nil
98
* End:
99
* vim: shiftwidth=4 tabstop=8 expandtab
100
*/
101
Generated on Wed May 15 2013 14:55:30 for YAZ by
1.8.1.2