Lines Matching refs:csp

82 static void iconv_unregister_cspair(struct iconv_cspair *csp);
87 struct iconv_cspair *csp;
90 TAILQ_FOREACH(csp, &iconv_cslist, cp_link) {
91 if (csp->cp_refcount) {
97 while ((csp = TAILQ_FIRST(&iconv_cslist)) != NULL)
98 iconv_unregister_cspair(csp);
171 struct iconv_cspair *csp;
173 TAILQ_FOREACH(csp, &iconv_cslist, cp_link) {
174 if (strcasecmp(csp->cp_to, to) == 0 &&
175 strcasecmp(csp->cp_from, from) == 0) {
177 *cspp = csp;
189 struct iconv_cspair *csp;
195 csize = sizeof(*csp);
202 csp = malloc(csize, M_ICONV, M_WAITOK);
203 bzero(csp, csize);
204 csp->cp_id = iconv_csid++;
205 csp->cp_dcp = dcp;
206 cp = (char*)(csp + 1);
209 csp->cp_to = cp;
212 csp->cp_to = iconv_unicode_string;
215 csp->cp_from = cp;
217 csp->cp_from = iconv_unicode_string;
218 csp->cp_data = data;
220 TAILQ_INSERT_TAIL(&iconv_cslist, csp, cp_link);
221 *cspp = csp;
226 iconv_unregister_cspair(struct iconv_cspair *csp)
228 TAILQ_REMOVE(&iconv_cslist, csp, cp_link);
229 if (csp->cp_data)
230 free(csp->cp_data, M_ICONVDATA);
231 free(csp, M_ICONV);
242 struct iconv_cspair *csp, *cspfrom, *cspto;
250 error = iconv_lookupcs(to, from, &csp);
252 return ICONV_CONVERTER_OPEN(csp->cp_dcp, csp, NULL, handle);
363 struct iconv_cspair *csp;
371 TAILQ_FOREACH(csp, &iconv_cslist, cp_link) {
372 csi.cs_id = csp->cp_id;
373 csi.cs_refcount = csp->cp_refcount;
374 csi.cs_base = csp->cp_base ? csp->cp_base->cp_id : 0;
375 strcpy(csi.cs_to, csp->cp_to);
376 strcpy(csi.cs_from, csp->cp_from);
394 struct iconv_cspair *csp;
399 return iconv_register_cspair(to, from, dcp, NULL, &csp);
409 struct iconv_cspair *csp;
430 error = iconv_register_cspair(din.ia_to, din.ia_from, dcp, NULL, &csp);
436 csp->cp_data = malloc(din.ia_datalen, M_ICONVDATA, M_WAITOK);
437 error = copyin(din.ia_data, csp->cp_data, din.ia_datalen);
441 dout.ia_csid = csp->cp_id;
449 iconv_unregister_cspair(csp);