File: pcd.c

package info (click to toggle)
abiword 0.7.7-1
  • links: PTS
  • area: main
  • in suites: potato
  • size: 20,604 kB
  • ctags: 18,358
  • sloc: cpp: 88,791; ansic: 66,296; sh: 7,777; makefile: 3,397; xml: 687; perl: 361; awk: 273; sed: 36; csh: 28
file content (80 lines) | stat: -rw-r--r-- 1,705 bytes parent folder | download
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
#include <stdlib.h>
#include <stdio.h>
#include "wv.h"

void wvGetPCD(PCD *item,FILE *fd)
	{
	U8 temp8;
	temp8 = getc(fd);
#ifdef PURIFY
	wvInitPCD(item);
#endif
	item->fNoParaLast = temp8 & 0x01;
	item->fPaphNil = (temp8 & 0x02) >> 1;
	item->fCopied = (temp8 & 0x04) >> 2;
	item->reserved = (temp8 & 0xf8) >> 3;
	item->fn = getc(fd);
	item->fc = read_32ubit(fd);
	wvGetPRM(&item->prm,fd);
	}

void wvInitPCD(PCD *item)
	{
	item->fNoParaLast = 0;
	item->fPaphNil = 0;
	item->fCopied = 0;
	item->reserved = 0;
	item->fn = 0;
	item->fc = 0;
	wvInitPRM(&item->prm);
	}


int wvReleasePCD_PLCF(PCD *pcd,U32 *pos)
	{
	wvFree(pcd);
	wvFree(pos);
	return(0);
	}


int wvGetPCD_PLCF(PCD **pcd,U32 **pos,U32 *nopcd,U32 offset,U32 len,FILE *fd)
	{
	U32 i;
	if (len == 0)
		{
		*pcd = NULL;
		*pos = NULL;
		*nopcd = 0;
		}
	else
        {
        *nopcd=(len-4)/(cbPCD+4);
        *pos = (U32 *) malloc( (*nopcd+1) * sizeof(U32));
        if (*pos == NULL)
            {
            wvError(("NO MEM 1, failed to alloc %d bytes\n",(*nopcd+1) * sizeof(U32)));
            return(1);
            }

        *pcd = (PCD *) malloc(*nopcd * sizeof(PCD));
        if (*pcd == NULL)
            {
            wvError(("NO MEM 1, failed to alloc %d bytes\n",*nopcd * sizeof(PCD)));
			free(pos);
            return(1);
            }
        fseek(fd,offset,SEEK_SET);
        for(i=0;i<=*nopcd;i++)
			{
            (*pos)[i]=read_32ubit(fd);
			wvTrace(("pcd pos is %x\n",(*pos)[i]));
			}
        for(i=0;i<*nopcd;i++)
			{
            wvGetPCD(&((*pcd)[i]),fd);
			wvTrace(("pcd fc is %x, complex is %d, index is %d\n",(*pcd)[i].fc,(*pcd)[i].prm.fComplex,(*pcd)[i].prm.para.var2.igrpprl));
			}
        }
	return(0);
	}