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

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

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

Revision 24 Revision 63
1/* 1/*
2 parse_common.c - Part of psiconv, a PSION 5 file formats converter 2 parse_common.c - Part of psiconv, a PSION 5 file formats converter
3 Copyright (c) 1999 Frodo Looijaard <frodol@dds.nl> 3 Copyright (c) 1999, 2000 Frodo Looijaard <frodol@dds.nl>
4 4
5 This program is free software; you can redistribute it and/or modify 5 This program is free software; you can redistribute it and/or modify
6 it under the terms of the GNU General Public License as published by 6 it under the terms of the GNU General Public License as published by
7 the Free Software Foundation; either version 2 of the License, or 7 the Free Software Foundation; either version 2 of the License, or
8 (at your option) any later version. 8 (at your option) any later version.
44 (*result) = malloc(sizeof(**result)); 44 (*result) = malloc(sizeof(**result));
45 45
46 psiconv_progress(lev+2,off+len,"Going to read UID1 to UID3"); 46 psiconv_progress(lev+2,off+len,"Going to read UID1 to UID3");
47 (*result)->uid1 = psiconv_read_u32(buf,lev+2,off+len); 47 (*result)->uid1 = psiconv_read_u32(buf,lev+2,off+len);
48 psiconv_debug(lev+2,off+len,"UID1: %08x",(*result)->uid1); 48 psiconv_debug(lev+2,off+len,"UID1: %08x",(*result)->uid1);
49 if ((*result)->uid1 == PSICONV_ID_CLIPART) {
50 /* That's all folks... */
51 (*result)->file = psiconv_clipart_file;
52 (*result)->uid2 = 0;
53 (*result)->uid3 = 0;
54 (*result)->checksum = 0;
55 len += 4;
56 psiconv_debug(lev+2,off+len,"File is a Clipart file");
57 goto DONE;
58 }
49 if ((*result)->uid1 != PSICONV_ID_PSION5) { 59 if ((*result)->uid1 != PSICONV_ID_PSION5) {
50 psiconv_warn(lev+2,off+len,"UID1 has unknown value. This is probably " 60 psiconv_warn(lev+2,off+len,"UID1 has unknown value. This is probably "
51 "not a (parsable) Psion 5 file"); 61 "not a (parsable) Psion 5 file");
52 res = -1; 62 res = -1;
53 } 63 }
95 psiconv_checkuid((*result)->uid1,(*result)->uid2, 105 psiconv_checkuid((*result)->uid1,(*result)->uid2,
96 (*result)->uid3),temp); 106 (*result)->uid3),temp);
97 res = -1; 107 res = -1;
98 } 108 }
99 len += 4; 109 len += 4;
100 110
111DONE:
101 if (length) 112 if (length)
102 *length = len; 113 *length = len;
103 114
104 psiconv_progress(lev+1,off+len-1, 115 psiconv_progress(lev+1,off+len-1,
105 "End of Header Section (total length: %08x)",len); 116 "End of Header Section (total length: %08x)",len);
147 158
148 if (length) 159 if (length)
149 *length = len; 160 *length = len;
150 161
151 psiconv_progress(lev+1,off+len-1,"End of section table section " 162 psiconv_progress(lev+1,off+len-1,"End of section table section "
152 "(total length: %08x", len); 163 "(total length: %08x)", len);
153 164
154 return res; 165 return res;
155} 166}
156 167
157int psiconv_parse_application_id_section(const psiconv_buffer buf, int lev, 168int psiconv_parse_application_id_section(const psiconv_buffer buf, int lev,
247 free(para); 258 free(para);
248 259
249 /* Initialize the remaining parts of each paragraph */ 260 /* Initialize the remaining parts of each paragraph */
250 for (i = 0; i < psiconv_list_length(*result); i ++) { 261 for (i = 0; i < psiconv_list_length(*result); i ++) {
251 para = psiconv_list_get(*result,i); 262 para = psiconv_list_get(*result,i);
252 para->in_lines = psiconv_list_new(sizeof(struct psiconv_in_line_layout)); 263 para->in_lines = psiconv_list_new(sizeof(struct psiconv_in_line_layout_s));
253 para->replacements = psiconv_list_new(sizeof(struct psiconv_replacement)); 264 para->replacements = psiconv_list_new(sizeof(struct psiconv_replacement_s));
254 para->base_style = 0; 265 para->base_style = 0;
255 para->base_character = psiconv_basic_character_layout(); 266 para->base_character = psiconv_basic_character_layout();
256 para->base_paragraph = psiconv_basic_paragraph_layout(); 267 para->base_paragraph = psiconv_basic_paragraph_layout();
257 } 268 }
258 269
279 int res = 0; 290 int res = 0;
280 int len = 0; 291 int len = 0;
281 psiconv_u32 temp; 292 psiconv_u32 temp;
282 int parse_styles,nr,i,j,total,leng,line_length; 293 int parse_styles,nr,i,j,total,leng,line_length;
283 294
284 typedef struct anon_style 295 typedef struct anon_style_s
285 { 296 {
286 int nr; 297 int nr;
287 psiconv_s16 base_style; 298 psiconv_s16 base_style;
288 psiconv_character_layout character; 299 psiconv_character_layout character;
289 psiconv_paragraph_layout paragraph; 300 psiconv_paragraph_layout paragraph;
290 } *anon_style; 301 } *anon_style;
291 302
292 typedef psiconv_list anon_style_list; /* of struct anon_style */ 303 typedef psiconv_list anon_style_list; /* of struct anon_style */
293 304
294 anon_style_list anon_styles; 305 anon_style_list anon_styles;
295 struct anon_style anon; 306 struct anon_style_s anon;
296 anon_style anon_ptr=NULL; 307 anon_style anon_ptr=NULL;
297 308
298 psiconv_paragraph para; 309 psiconv_paragraph para;
299 struct psiconv_in_line_layout in_line; 310 struct psiconv_in_line_layout_s in_line;
300 311
301 int *inline_count; 312 int *inline_count;
302 313
303 314
304 psiconv_progress(lev+1,off,"Going to read the layout section"); 315 psiconv_progress(lev+1,off,"Going to read the layout section");
385 for (i = 0; i < nr; i ++) { 396 for (i = 0; i < nr; i ++) {
386 psiconv_progress(lev+3,off+len,"Element %d",i); 397 psiconv_progress(lev+3,off+len,"Element %d",i);
387 if (i >= psiconv_list_length(result)) { 398 if (i >= psiconv_list_length(result)) {
388 psiconv_debug(lev+4,off+len,"Going to allocate a new element"); 399 psiconv_debug(lev+4,off+len,"Going to allocate a new element");
389 para = malloc(sizeof(*para)); 400 para = malloc(sizeof(*para));
390 para->in_lines = psiconv_list_new(sizeof(struct psiconv_in_line_layout)); 401 para->in_lines = psiconv_list_new(sizeof(struct psiconv_in_line_layout_s));
391 para->base_style = 0; 402 para->base_style = 0;
392 para->base_character = psiconv_basic_character_layout(); 403 para->base_character = psiconv_basic_character_layout();
393 para->base_paragraph = psiconv_basic_paragraph_layout(); 404 para->base_paragraph = psiconv_basic_paragraph_layout();
394 free(para); 405 free(para);
395 } 406 }
441 } else { 452 } else {
442 psiconv_debug(lev+4,off+len,"Type: %02x (not based on a paragraph type)" 453 psiconv_debug(lev+4,off+len,"Type: %02x (not based on a paragraph type)"
443 ,temp); 454 ,temp);
444 len += 0x01; 455 len += 0x01;
445 if (parse_styles) { 456 if (parse_styles) {
446 psiconv_progress(lev+4,off+len+psiconv_read_u32(buf,lev+4,off+len), 457 psiconv_progress(lev+4,off+len+psiconv_read_u32(buf,lev+4,off+len)+4,
447 "Going to read the paragraph element base style"); 458 "Going to read the paragraph element base style");
448 temp = psiconv_read_u8(buf,lev+4, 459 temp = psiconv_read_u8(buf,lev+4,
449 off+len+psiconv_read_u32(buf,lev+4,off+len)); 460 off+len+psiconv_read_u32(buf,lev+4,off+len)+4);
450 psiconv_debug(lev+4,off+len+psiconv_read_u32(buf,lev+4,off+len), 461 psiconv_debug(lev+4,off+len+psiconv_read_u32(buf,lev+4,off+len)+4,
451 "Style: %02x",temp); 462 "Style: %02x",temp);
452 } else 463 } else
453 temp = 0x00; 464 temp = 0x00;
454 psiconv_free_paragraph_layout(para->base_paragraph); 465 psiconv_free_paragraph_layout(para->base_paragraph);
455 psiconv_free_character_layout(para->base_character); 466 psiconv_free_character_layout(para->base_character);
575 styles_section->normal = malloc(sizeof(*styles_section->normal)); 586 styles_section->normal = malloc(sizeof(*styles_section->normal));
576 styles_section->normal->character = psiconv_clone_character_layout(base_char); 587 styles_section->normal->character = psiconv_clone_character_layout(base_char);
577 styles_section->normal->paragraph = psiconv_clone_paragraph_layout(base_para); 588 styles_section->normal->paragraph = psiconv_clone_paragraph_layout(base_para);
578 styles_section->normal->hotkey = 0; 589 styles_section->normal->hotkey = 0;
579 styles_section->normal->name = strdup(""); 590 styles_section->normal->name = strdup("");
580 styles_section->styles = psiconv_list_new(sizeof(struct psiconv_word_style)); 591 styles_section->styles = psiconv_list_new(sizeof(struct psiconv_word_style_s));
581 592
582 res = psiconv_parse_layout_section(buf,lev,off,length,result, 593 res = psiconv_parse_layout_section(buf,lev,off,length,result,
583 styles_section,0); 594 styles_section,0);
584 595
585 psiconv_free_word_styles_section(styles_section); 596 psiconv_free_word_styles_section(styles_section);

Legend:
Removed from v.24  
changed lines
  Added in v.63

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