1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
|
#ifdef __cplusplus
extern "C" {
#endif
#include "EXTERN.h"
#include "perl.h"
#include "XSUB.h"
#ifdef __cplusplus
}
#endif
#include "myea.h"
SV *
my_eadvalue(pTHX_ _ead ead, int index)
{
SV *sv;
int size = _ead_value_size(ead, index);
const char *p;
if (size == -1) {
Perl_die(aTHX_ "Error getting size of EA: %s", strerror(errno));
}
p = _ead_get_value(ead, index);
return newSVpv(p, size);
}
#define my_eadreplace(ead, index, sv, flag) \
_ead_replace((ead), (index), flag, SvPVX(sv), SvCUR(sv))
#define my_eadadd(ead, name, sv, flag) \
_ead_add((ead), (name), flag, SvPVX(sv), SvCUR(sv))
MODULE = OS2::ExtAttr PACKAGE = OS2::ExtAttr PREFIX = my_ead
SV *
my_eadvalue(ead, index)
_ead ead
int index
CODE:
RETVAL = my_eadvalue(aTHX_ ead, index);
OUTPUT:
RETVAL
int
my_eadreplace(ead, index, sv, flag = 0)
_ead ead
int index
SV * sv
int flag
int
my_eadadd(ead, name, sv, flag = 0)
_ead ead
char * name
SV * sv
int flag
MODULE = OS2::ExtAttr PACKAGE = OS2::ExtAttr PREFIX = _ea
void
_ea_free(ptr)
struct _ea * ptr
int
_ea_get(dst, path, handle, name)
struct _ea * dst
char * path
int handle
char * name
int
_ea_put(src, path, handle, name)
struct _ea * src
char * path
int handle
char * name
int
_ea_remove(path, handle, name)
char * path
int handle
char * name
MODULE = OS2::ExtAttr PACKAGE = OS2::ExtAttr PREFIX = _ead
int
_ead_add(ead, name, flags, value, size)
_ead ead
char * name
int flags
void * value
int size
void
_ead_clear(ead)
_ead ead
int
_ead_copy(dst_ead, src_ead, src_index)
_ead dst_ead
_ead src_ead
int src_index
int
_ead_count(ead)
_ead ead
_ead
_ead_create()
int
_ead_delete(ead, index)
_ead ead
int index
void
_ead_destroy(ead)
_ead ead
int
_ead_fea2list_size(ead)
_ead ead
void *
_ead_fea2list_to_fealist(src)
void * src
void *
_ead_fealist_to_fea2list(src)
void * src
int
_ead_find(ead, name)
_ead ead
char * name
const void *
_ead_get_fea2list(ead)
_ead ead
int
_ead_get_flags(ead, index)
_ead ead
int index
const char *
_ead_get_name(ead, index)
_ead ead
int index
const void *
_ead_get_value(ead, index)
_ead ead
int index
int
_ead_name_len(ead, index)
_ead ead
int index
int
_ead_read(ead, path, handle, flags)
_ead ead
char * path
int handle
int flags
int
_ead_replace(ead, index, flags, value, size)
_ead ead
int index
int flags
void * value
int size
void
_ead_sort(ead)
_ead ead
int
_ead_use_fea2list(ead, src)
_ead ead
void * src
int
_ead_value_size(ead, index)
_ead ead
int index
int
_ead_write(ead, path, handle, flags)
_ead ead
char * path
int handle
int flags
|