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