/[public]/psiconv/trunk/lib/psiconv/generate_layout.c
ViewVC logotype

Diff of /psiconv/trunk/lib/psiconv/generate_layout.c

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

Revision 76 Revision 80
25 25
26int psiconv_write_color(psiconv_buffer buf, const psiconv_color value) 26int psiconv_write_color(psiconv_buffer buf, const psiconv_color value)
27{ 27{
28 int res; 28 int res;
29 if (!value) { 29 if (!value) {
30 psiconv_warn(0,psiconv_list_length(buf),"Null color"); 30 psiconv_warn(0,psiconv_buffer_length(buf),"Null color");
31 return -PSICONV_E_GENERATE; 31 return -PSICONV_E_GENERATE;
32 } 32 }
33 if ((res = psiconv_write_u8(buf,value->red))) 33 if ((res = psiconv_write_u8(buf,value->red)))
34 return res; 34 return res;
35 if ((res = psiconv_write_u8(buf,value->green))) 35 if ((res = psiconv_write_u8(buf,value->green)))
39 39
40int psiconv_write_font(psiconv_buffer buf, const psiconv_font value) 40int psiconv_write_font(psiconv_buffer buf, const psiconv_font value)
41{ 41{
42 int res; 42 int res;
43 if (!value) { 43 if (!value) {
44 psiconv_warn(0,psiconv_list_length(buf),"Null font"); 44 psiconv_warn(0,psiconv_buffer_length(buf),"Null font");
45 return -PSICONV_E_GENERATE; 45 return -PSICONV_E_GENERATE;
46 } 46 }
47 if ((res = psiconv_write_string(buf,value->name))) 47 if ((res = psiconv_write_string(buf,value->name)))
48 return res; 48 return res;
49 return psiconv_write_u8(buf,value->screenfont); 49 return psiconv_write_u8(buf,value->screenfont);
52int psiconv_write_border(psiconv_buffer buf, const psiconv_border value) 52int psiconv_write_border(psiconv_buffer buf, const psiconv_border value)
53{ 53{
54 int res; 54 int res;
55 55
56 if (!value) { 56 if (!value) {
57 psiconv_warn(0,psiconv_list_length(buf),"Null border"); 57 psiconv_warn(0,psiconv_buffer_length(buf),"Null border");
58 return -PSICONV_E_GENERATE; 58 return -PSICONV_E_GENERATE;
59 } 59 }
60 if (value->kind > psiconv_border_dotdotdashed) 60 if (value->kind > psiconv_border_dotdotdashed)
61 psiconv_warn(0,psiconv_list_length(buf), 61 psiconv_warn(0,psiconv_buffer_length(buf),
62 "Unknown border kind (%d); assuming none",value->kind); 62 "Unknown border kind (%d); assuming none",value->kind);
63 if ((res =psiconv_write_u8(buf,value->kind == psiconv_border_none?0: 63 if ((res =psiconv_write_u8(buf,value->kind == psiconv_border_none?0:
64 value->kind == psiconv_border_solid?1: 64 value->kind == psiconv_border_solid?1:
65 value->kind == psiconv_border_double?2: 65 value->kind == psiconv_border_double?2:
66 value->kind == psiconv_border_dotted?3: 66 value->kind == psiconv_border_dotted?3:
82int psiconv_write_bullet(psiconv_buffer buf, const psiconv_bullet value) 82int psiconv_write_bullet(psiconv_buffer buf, const psiconv_bullet value)
83{ 83{
84 int res; 84 int res;
85 psiconv_buffer extra_buf; 85 psiconv_buffer extra_buf;
86 if (!value) { 86 if (!value) {
87 psiconv_warn(0,psiconv_list_length(buf),"Null bullet"); 87 psiconv_warn(0,psiconv_buffer_length(buf),"Null bullet");
88 return -PSICONV_E_GENERATE; 88 return -PSICONV_E_GENERATE;
89 } 89 }
90 90
91 if (!(extra_buf = psiconv_new_buffer())) 91 if (!(extra_buf = psiconv_buffer_new()))
92 return -PSICONV_E_NOMEM; 92 return -PSICONV_E_NOMEM;
93 if ((res = psiconv_write_size(extra_buf,value->font_size))) 93 if ((res = psiconv_write_size(extra_buf,value->font_size)))
94 goto ERROR; 94 goto ERROR;
95 if ((res = psiconv_write_u8(extra_buf,value->character))) 95 if ((res = psiconv_write_u8(extra_buf,value->character)))
96 goto ERROR; 96 goto ERROR;
101 if ((res = psiconv_write_color(extra_buf,value->color))) 101 if ((res = psiconv_write_color(extra_buf,value->color)))
102 goto ERROR; 102 goto ERROR;
103 if ((res = psiconv_write_font(extra_buf,value->font))) 103 if ((res = psiconv_write_font(extra_buf,value->font)))
104 goto ERROR; 104 goto ERROR;
105 105
106 if ((res = psiconv_write_u8(buf,psiconv_list_length(extra_buf)))) 106 if ((res = psiconv_write_u8(buf,psiconv_buffer_length(extra_buf))))
107 goto ERROR; 107 goto ERROR;
108 res = psiconv_list_concat(buf,extra_buf); 108 res = psiconv_buffer_concat(buf,extra_buf);
109 109
110ERROR: 110ERROR:
111 psiconv_free_buffer(extra_buf); 111 psiconv_buffer_free(extra_buf);
112 return res; 112 return res;
113} 113}
114 114
115int psiconv_write_tab(psiconv_buffer buf,psiconv_tab value) 115int psiconv_write_tab(psiconv_buffer buf,psiconv_tab value)
116{ 116{
117 int res; 117 int res;
118 if (!value) { 118 if (!value) {
119 psiconv_warn(0,psiconv_list_length(buf),"Null tab"); 119 psiconv_warn(0,psiconv_buffer_length(buf),"Null tab");
120 return -PSICONV_E_GENERATE; 120 return -PSICONV_E_GENERATE;
121 } 121 }
122 if ((res = psiconv_write_length(buf,value->location))) 122 if ((res = psiconv_write_length(buf,value->location)))
123 return res; 123 return res;
124 if ((value->kind != psiconv_tab_left) && 124 if ((value->kind != psiconv_tab_left) &&
125 (value->kind != psiconv_tab_right) && 125 (value->kind != psiconv_tab_right) &&
126 (value->kind != psiconv_tab_centre)) 126 (value->kind != psiconv_tab_centre))
127 psiconv_warn(0,psiconv_list_length(buf), 127 psiconv_warn(0,psiconv_buffer_length(buf),
128 "Unknown tab kind (%d); assuming left",value->kind); 128 "Unknown tab kind (%d); assuming left",value->kind);
129 return psiconv_write_u8(buf, value->kind == psiconv_tab_right?2: 129 return psiconv_write_u8(buf, value->kind == psiconv_tab_right?2:
130 value->kind == psiconv_tab_centre?3:1); 130 value->kind == psiconv_tab_centre?3:1);
131} 131}
132 132
133int psiconv_write_paragraph_layout_list(psiconv_buffer buf, 133int psiconv_write_paragraph_layout_list(psiconv_buffer buf,
134 psiconv_paragraph_layout value, 134 psiconv_paragraph_layout value,
135 psiconv_paragraph_layout base) 135 psiconv_paragraph_layout base)
136{ 136{
137 int res,i,tabs_different; 137 int res,i;
138 psiconv_buffer extra_buf; 138 psiconv_buffer extra_buf;
139 psiconv_tab value_tab,base_tab; 139 psiconv_tab tab;
140 140
141 if (!value) { 141 if (!value) {
142 psiconv_warn(0,psiconv_list_length(buf),"Null paragraph layout list"); 142 psiconv_warn(0,psiconv_buffer_length(buf),"Null paragraph layout list");
143 return -PSICONV_E_GENERATE; 143 return -PSICONV_E_GENERATE;
144 } 144 }
145 if (!(extra_buf = psiconv_new_buffer())) 145 if (!(extra_buf = psiconv_buffer_new()))
146 return -PSICONV_E_NOMEM; 146 return -PSICONV_E_NOMEM;
147 147
148 if (!base || !base->back_color || !value->back_color || 148 if (!base || psiconv_compare_color(base->back_color,value->back_color)) {
149 (value->back_color->red != base->back_color->red) ||
150 (value->back_color->green != base->back_color->green) ||
151 (value->back_color->blue != base->back_color->blue)) {
152 if ((res = psiconv_write_u8(extra_buf,0x01))) 149 if ((res = psiconv_write_u8(extra_buf,0x01)))
153 goto ERROR; 150 goto ERROR;
154 if ((res = psiconv_write_color(extra_buf,value->back_color))) 151 if ((res = psiconv_write_color(extra_buf,value->back_color)))
155 goto ERROR; 152 goto ERROR;
156 } 153 }
179 if (!base || (value->justify_hor != base->justify_hor)) { 176 if (!base || (value->justify_hor != base->justify_hor)) {
180 if ((res = psiconv_write_u8(extra_buf,0x05))) 177 if ((res = psiconv_write_u8(extra_buf,0x05)))
181 goto ERROR; 178 goto ERROR;
182 if ((value->justify_hor < psiconv_justify_left) || 179 if ((value->justify_hor < psiconv_justify_left) ||
183 (value->justify_hor > psiconv_justify_full)) 180 (value->justify_hor > psiconv_justify_full))
184 psiconv_warn(0,psiconv_list_length(buf), 181 psiconv_warn(0,psiconv_buffer_length(buf),
185 "Unknown horizontal justify (%d); assuming left", 182 "Unknown horizontal justify (%d); assuming left",
186 value->justify_hor); 183 value->justify_hor);
187 if ((res = psiconv_write_u8(extra_buf, 184 if ((res = psiconv_write_u8(extra_buf,
188 value->justify_hor == psiconv_justify_centre?1: 185 value->justify_hor == psiconv_justify_centre?1:
189 value->justify_hor == psiconv_justify_right?2: 186 value->justify_hor == psiconv_justify_right?2:
194 if (!base || (value->justify_ver != base->justify_ver)) { 191 if (!base || (value->justify_ver != base->justify_ver)) {
195 if ((res = psiconv_write_u8(extra_buf,0x06))) 192 if ((res = psiconv_write_u8(extra_buf,0x06)))
196 goto ERROR; 193 goto ERROR;
197 if ((value->justify_ver < psiconv_justify_top) || 194 if ((value->justify_ver < psiconv_justify_top) ||
198 (value->justify_ver > psiconv_justify_bottom)) 195 (value->justify_ver > psiconv_justify_bottom))
199 psiconv_warn(0,psiconv_list_length(buf), 196 psiconv_warn(0,psiconv_buffer_length(buf),
200 "Unknown vertical justify (%d); assuming middle", 197 "Unknown vertical justify (%d); assuming middle",
201 value->justify_ver); 198 value->justify_ver);
202 if ((res = psiconv_write_u8(extra_buf, 199 if ((res = psiconv_write_u8(extra_buf,
203 value->justify_ver == psiconv_justify_centre?1: 200 value->justify_ver == psiconv_justify_centre?1:
204 value->justify_ver == psiconv_justify_right?2:0))) 201 value->justify_ver == psiconv_justify_right?2:0)))
266 goto ERROR; 263 goto ERROR;
267 if ((res = psiconv_write_length(extra_buf,value->border_distance))) 264 if ((res = psiconv_write_length(extra_buf,value->border_distance)))
268 goto ERROR; 265 goto ERROR;
269 } 266 }
270 267
271 if (!base || !value->top_border || !base->top_border || 268 if (!base || psiconv_compare_border(value->top_border,base->top_border)) {
272 !value->top_border->color || !base->top_border->color ||
273 (value->top_border->kind != base->top_border->kind) ||
274 (value->top_border->thickness != base->top_border->thickness) ||
275 (value->top_border->color->red != base->top_border->color->red) ||
276 (value->top_border->color->green != base->top_border->color->green) ||
277 (value->top_border->color->blue != base->top_border->color->blue)) {
278 if ((res = psiconv_write_u8(extra_buf,0x11))) 269 if ((res = psiconv_write_u8(extra_buf,0x11)))
279 goto ERROR; 270 goto ERROR;
280 if ((res = psiconv_write_border(extra_buf,value->top_border))) 271 if ((res = psiconv_write_border(extra_buf,value->top_border)))
281 goto ERROR; 272 goto ERROR;
282 } 273 }
283 274
284 if (!base || !value->top_border || !base->top_border || 275 if (!base || psiconv_compare_border(value->bottom_border,
285 !value->top_border->color || !base->top_border->color || 276 base->bottom_border)) {
286 (value->top_border->kind != base->top_border->kind) ||
287 (value->top_border->thickness != base->top_border->thickness) ||
288 (value->top_border->color->red != base->top_border->color->red) ||
289 (value->top_border->color->green != base->top_border->color->green) ||
290 (value->top_border->color->blue != base->top_border->color->blue)) {
291 if ((res = psiconv_write_u8(extra_buf,0x12))) 277 if ((res = psiconv_write_u8(extra_buf,0x12)))
292 goto ERROR; 278 goto ERROR;
293 if ((res = psiconv_write_border(extra_buf,value->top_border))) 279 if ((res = psiconv_write_border(extra_buf,value->bottom_border)))
294 goto ERROR; 280 goto ERROR;
295 } 281 }
296 282
297 if (!base || !value->left_border || !base->left_border || 283 if (!base || psiconv_compare_border(value->left_border,
298 !value->left_border->color || !base->left_border->color || 284 base->left_border)) {
299 (value->left_border->kind != base->left_border->kind) ||
300 (value->left_border->thickness != base->left_border->thickness) ||
301 (value->left_border->color->red != base->left_border->color->red) ||
302 (value->left_border->color->green != base->left_border->color->green) ||
303 (value->left_border->color->blue != base->left_border->color->blue)) {
304 if ((res = psiconv_write_u8(extra_buf,0x13))) 285 if ((res = psiconv_write_u8(extra_buf,0x13)))
305 goto ERROR; 286 goto ERROR;
306 if ((res = psiconv_write_border(extra_buf,value->left_border))) 287 if ((res = psiconv_write_border(extra_buf,value->left_border)))
307 goto ERROR; 288 goto ERROR;
308 } 289 }
309 290
310 if (!base || !value->right_border || !base->right_border || 291 if (!base || psiconv_compare_border(value->right_border,
311 !value->right_border->color || !base->right_border->color ||
312 (value->right_border->kind != base->right_border->kind) ||
313 (value->right_border->thickness != base->right_border->thickness) ||
314 (value->right_border->color->red != base->right_border->color->red) ||
315 (value->right_border->color->green !=
316 base->right_border->color->green) || 292 base->right_border)) {
317 (value->right_border->color->blue != base->right_border->color->blue)) {
318 if ((res = psiconv_write_u8(extra_buf,0x14))) 293 if ((res = psiconv_write_u8(extra_buf,0x14)))
319 goto ERROR; 294 goto ERROR;
320 if ((res = psiconv_write_border(extra_buf,value->right_border))) 295 if ((res = psiconv_write_border(extra_buf,value->right_border)))
321 goto ERROR; 296 goto ERROR;
322 } 297 }
323 298
324 if (!base || !value->bullet || !base->bullet || 299 if (!base || psiconv_compare_bullet(value->bullet,
325 !value->bullet->color || !base->bullet->color || 300 base->bullet)) {
326 !value->bullet->font || !base->bullet->font ||
327 !value->bullet->font->name || !base->bullet->font->name ||
328 (value->bullet->on != base->bullet->on) ||
329 (value->bullet->font_size != base->bullet->font_size) ||
330 (value->bullet->character != base->bullet->character) ||
331 (value->bullet->indent != base->bullet->indent) ||
332 (value->bullet->color->red != base->bullet->color->red) ||
333 (value->bullet->color->green != base->bullet->color->green) ||
334 (value->bullet->color->blue != base->bullet->color->blue) ||
335 (value->bullet->font->screenfont != base->bullet->font->screenfont) ||
336 strcmp(value->bullet->font->name,base->bullet->font->name)) {
337 if ((res = psiconv_write_u8(extra_buf,0x15))) 301 if ((res = psiconv_write_u8(extra_buf,0x15)))
338 goto ERROR; 302 goto ERROR;
339 if ((res = psiconv_write_bullet(extra_buf,value->bullet))) 303 if ((res = psiconv_write_bullet(extra_buf,value->bullet)))
340 goto ERROR; 304 goto ERROR;
341 } 305 }
342 306
343 if (!value->tabs || !value->tabs->extras) { 307 if (!value->tabs || !value->tabs->extras) {
344 psiconv_warn(0,psiconv_list_length(buf),"Null tabs"); 308 psiconv_warn(0,psiconv_buffer_length(buf),"Null tabs");
345 res = -PSICONV_E_GENERATE; 309 res = -PSICONV_E_GENERATE;
346 goto ERROR; 310 goto ERROR;
347 } 311 }
312
348 /* It is not entirely clear how tabs are inherited. For now, I assume 313 /* It is not entirely clear how tabs are inherited. For now, I assume
349 if there is any difference at all, we will have to generate both 314 if there is any difference at all, we will have to generate both
350 the normal tab-interval, and all specific tabs */ 315 the normal tab-interval, and all specific tabs */
351 tabs_different = 0; 316 if (!base || psiconv_compare_all_tabs(value->tabs,base->tabs)) {
352 if (!base || !base->tabs || !base->tabs->extras || 317 if ((res = psiconv_write_u8(extra_buf,0x16)))
353 (value->tabs->normal != base->tabs->normal) || 318 goto ERROR;
354 (psiconv_list_length(value->tabs->extras) != 319 if ((res = psiconv_write_length(extra_buf,value->tabs->normal)))
355 psiconv_list_length(base->tabs->extras))) 320 goto ERROR;
356 tabs_different = 1;
357 else {
358 for (i = 0; i < psiconv_list_length(value->tabs->extras); i++) { 321 for (i = 0; i < psiconv_list_length(value->tabs->extras); i++) {
359 value_tab = psiconv_list_get(value->tabs->extras,i);
360 base_tab = psiconv_list_get(base->tabs->extras,i);
361 if (!value_tab || !base_tab) {
362 psiconv_warn(0,psiconv_list_length(buf),"Massive memory corruption");
363 res = -PSICONV_E_NOMEM;
364 goto ERROR;
365 }
366 if ((value_tab->kind != base_tab->kind) ||
367 (value_tab->location != base_tab->location)) {
368 tabs_different = 1;
369 break;
370 }
371 }
372 }
373
374 if (tabs_different) {
375 if ((res = psiconv_write_u8(extra_buf,0x16)))
376 goto ERROR;
377 if ((res = psiconv_write_length(extra_buf,value->tabs->normal)))
378 goto ERROR;
379 for (i = 0; i < psiconv_list_length(value->tabs->extras); i++) {
380 if (!(value_tab = psiconv_list_get(value->tabs->extras,i))) { 322 if (!(tab = psiconv_list_get(value->tabs->extras,i))) {
381 psiconv_warn(0,psiconv_list_length(buf),"Massive memory corruption"); 323 psiconv_warn(0,psiconv_buffer_length(buf),"Massive memory corruption");
382 res = -PSICONV_E_NOMEM; 324 res = -PSICONV_E_NOMEM;
383 goto ERROR; 325 goto ERROR;
384 } 326 }
385 if ((res = psiconv_write_u8(extra_buf,0x17))) 327 if ((res = psiconv_write_u8(extra_buf,0x17)))
386 goto ERROR; 328 goto ERROR;
387 if ((res = psiconv_write_tab(extra_buf,value_tab))) 329 if ((res = psiconv_write_tab(extra_buf,tab)))
388 goto ERROR; 330 goto ERROR;
389 } 331 }
390 } 332 }
391 333
392 if ((res = psiconv_write_u32(buf,psiconv_list_length(extra_buf)))) 334 if ((res = psiconv_write_u32(buf,psiconv_buffer_length(extra_buf))))
393 goto ERROR; 335 goto ERROR;
394 336
395 res = psiconv_list_concat(buf,extra_buf); 337 res = psiconv_buffer_concat(buf,extra_buf);
396 338
397ERROR: 339ERROR:
398 psiconv_free_buffer(extra_buf); 340 psiconv_buffer_free(extra_buf);
399 return res; 341 return res;
400} 342}
401 343
402int psiconv_write_character_layout_list(psiconv_buffer buf, 344int psiconv_write_character_layout_list(psiconv_buffer buf,
403 psiconv_character_layout value, 345 psiconv_character_layout value,
404 psiconv_character_layout base) 346 psiconv_character_layout base)
405{ 347{
406 int res; 348 int res;
407 psiconv_buffer extra_buf; 349 psiconv_buffer extra_buf;
408 if (!value) { 350 if (!value) {
409 psiconv_warn(0,psiconv_list_length(buf),"Null character layout list"); 351 psiconv_warn(0,psiconv_buffer_length(buf),"Null character layout list");
410 return -PSICONV_E_GENERATE; 352 return -PSICONV_E_GENERATE;
411 } 353 }
412 if (!(extra_buf = psiconv_new_buffer())) 354 if (!(extra_buf = psiconv_buffer_new()))
413 return -PSICONV_E_NOMEM; 355 return -PSICONV_E_NOMEM;
414 356
415 if (!base || !base->color || !value->color || 357 if (!base || psiconv_compare_color(base->color,value->color)) {
416 (value->color->red != base->color->red) ||
417 (value->color->green != base->color->green) ||
418 (value->color->blue != base->color->blue)) {
419 if ((res = psiconv_write_u8(extra_buf,0x19))) 358 if ((res = psiconv_write_u8(extra_buf,0x19)))
420 goto ERROR; 359 goto ERROR;
421 if ((res = psiconv_write_color(extra_buf,value->color))) 360 if ((res = psiconv_write_color(extra_buf,value->color)))
422 goto ERROR; 361 goto ERROR;
423 } 362 }
424 363
425 if (!base || !base->back_color || !value->back_color || 364 if (!base || psiconv_compare_color(base->back_color,value->back_color)) {
426 (value->back_color->red != base->back_color->red) ||
427 (value->back_color->green != base->back_color->green) ||
428 (value->back_color->blue != base->back_color->blue)) {
429 if ((res = psiconv_write_u8(extra_buf,0x1a))) 365 if ((res = psiconv_write_u8(extra_buf,0x1a)))
430 goto ERROR; 366 goto ERROR;
431 if ((res = psiconv_write_color(extra_buf,value->back_color))) 367 if ((res = psiconv_write_color(extra_buf,value->back_color)))
432 goto ERROR; 368 goto ERROR;
433 } 369 }
455 391
456 if (!base || (value->super_sub != base->super_sub)) { 392 if (!base || (value->super_sub != base->super_sub)) {
457 if ((value->super_sub != psiconv_superscript) && 393 if ((value->super_sub != psiconv_superscript) &&
458 (value->super_sub != psiconv_subscript) && 394 (value->super_sub != psiconv_subscript) &&
459 (value->super_sub != psiconv_normalscript)) 395 (value->super_sub != psiconv_normalscript))
460 psiconv_warn(0,psiconv_list_length(buf), 396 psiconv_warn(0,psiconv_buffer_length(buf),
461 "Unknown supersubscript (%d); assuming normal", 397 "Unknown supersubscript (%d); assuming normal",
462 value->super_sub); 398 value->super_sub);
463 if ((res = psiconv_write_u8(extra_buf,0x1f))) 399 if ((res = psiconv_write_u8(extra_buf,0x1f)))
464 goto ERROR; 400 goto ERROR;
465 if ((res = psiconv_write_u8(extra_buf, 401 if ((res = psiconv_write_u8(extra_buf,
480 goto ERROR; 416 goto ERROR;
481 if ((res = psiconv_write_bool(extra_buf,value->strikethrough))) 417 if ((res = psiconv_write_bool(extra_buf,value->strikethrough)))
482 goto ERROR; 418 goto ERROR;
483 } 419 }
484 420
485 if (!base || !value->font || !base->font || 421 if (!base || psiconv_compare_font(base->font,value->font)) {
486 (value->font->screenfont != base->font->screenfont) ||
487 strcmp(value->font->name,base->font->name)) {
488 if ((res = psiconv_write_u8(extra_buf,0x22))) 422 if ((res = psiconv_write_u8(extra_buf,0x22)))
489 goto ERROR; 423 goto ERROR;
490 if ((res = psiconv_write_font(extra_buf,value->font))) 424 if ((res = psiconv_write_font(extra_buf,value->font)))
491 goto ERROR; 425 goto ERROR;
492 } 426 }
493 427
494 if ((res = psiconv_write_u32(buf,psiconv_list_length(extra_buf)))) 428 if ((res = psiconv_write_u32(buf,psiconv_buffer_length(extra_buf))))
495 goto ERROR; 429 goto ERROR;
496 430
497 res = psiconv_list_concat(buf,extra_buf); 431 res = psiconv_buffer_concat(buf,extra_buf);
498 432
499ERROR: 433ERROR:
500 psiconv_free_buffer(extra_buf); 434 psiconv_buffer_free(extra_buf);
501 return res; 435 return res;
502} 436}

Legend:
Removed from v.76  
changed lines
  Added in v.80

frodo@frodo.looijaard.name
ViewVC Help
Powered by ViewVC 1.1.26