示例#1
0
void
wvAddCHPXFromBucket6(CHP *achp, UPXF *upxf, STSH *stsh) {
    U8  *pointer;
    U16 i = 0;
    U8  sprm8;
    U16 sprm;

    wvTrace(("cbUPX word 6 is %d\n", upxf->cbUPX));

#ifdef SPRMTEST
    GET_fprintf_HANDLER() (stderr, "\n");
    while (i < upxf->cbUPX) {
        GET_fprintf_HANDLER() (stderr, "%x (%d) ", *(upxf->upx.chpx.grpprl + i),
                               *(upxf->upx.chpx.grpprl + i));
        i++;
    }
    GET_fprintf_HANDLER() (stderr, "\n");
    i = 0;
#endif
    while (i < upxf->cbUPX) {
        sprm8 = bread_8ubit(upxf->upx.chpx.grpprl + i, &i);
#ifdef SPRMTEST
        wvError(("chp word 6 sprm is %x (%d)\n", sprm8, sprm8));
#endif
        sprm = (U16)wvGetrgsprmWord6(sprm8);
#ifdef SPRMTEST
        wvError(("chp word 6 sprm is converted to %x\n", sprm));
#endif

        pointer = upxf->upx.chpx.grpprl + i;
        wvApplySprmFromBucket(WORD6, sprm, NULL, achp, NULL, stsh, pointer,
                              &i, NULL);
    }
}
示例#2
0
文件: sep.c 项目: AbiWord/wv
int
wvAddSEPXFromBucket6 (SEP * asep, SEPX * item, STSH * stsh)
{
    U8 *pointer;
    U16 i = 0;
    int ret = 0;
    U8 sprm8;
    U16 sprm;
    Sprm RetSprm;
#ifdef SPRMTEST
    fprintf (stderr, "\n");
    while (i < item->cb)
      {
	  fprintf (stderr, "%x (%d) ", *(item->grpprl + i),
		   *(item->grpprl + i));
	  i++;
      }
    fprintf (stderr, "\n");
    i = 0;
#endif
    while (i < item->cb)
      {
	  sprm8 = bread_8ubit (item->grpprl + i, &i);
#ifdef SPRMTEST
	  wvError (("sep word 6 sprm is %x (%d)\n", sprm8, sprm8));
#endif
	  sprm = (U16) wvGetrgsprmWord6 (sprm8);
#ifdef SPRMTEST
	  wvTrace (("sep word 6 sprm is converted to %x\n", sprm));
#endif
	  pointer = item->grpprl + i;
	  RetSprm =
	      wvApplySprmFromBucket (WORD6, sprm, NULL, NULL, asep, stsh,
				     pointer, &i, NULL);
	  if (RetSprm.sgc == sgcSep)
	      ret = 1;
      }
    return (ret);
}
示例#3
0
void
wvUpdateCHPXBucket(UPXF *src) {
    U16 i = 0, j;
    U16 sprm;
    U8  sprm8;
    U16 len = 0;
    int temp;

    U8 *pointer, *dpointer;
    U8 *grpprl = NULL;

    i = 0;
    if (src->cbUPX == 0)
        return;
    pointer = src->upx.chpx.grpprl;
    wvTrace(("Msrc->cbUPX len is %d\n", src->cbUPX));
    for (i = 0; i < src->cbUPX; i++)
        wvTrace(("%x\n", src->upx.chpx.grpprl[i]));
    wvTrace(("Mend\n"));
    i   = 0;
    len = 0;
    while (i < src->cbUPX) {
        sprm8 = dread_8ubit(NULL, &pointer);
        wvTrace(("Mpre the sprm is %x\n", sprm8));
        sprm = (U16)wvGetrgsprmWord6(sprm8);
        wvTrace(("Mpost the sprm is %x\n", sprm));
        i++;
        len += 2;
        temp = wvEatSprm(sprm, pointer, &i);
        wvTrace(("Mlen of op is %d\n", temp));
        pointer += temp;
        wvTrace(("Mp dis is %d\n", pointer - src->upx.chpx.grpprl));
        len += temp;
    }
    wvTrace(("Mlen ends up as %d\n", len));

    if (len == 0)
        return;

    grpprl = (U8 *)wvMalloc(len);

    dpointer = grpprl;

    i       = 0;
    pointer = src->upx.chpx.grpprl;
    while (i < src->cbUPX) {
        sprm8 = dread_8ubit(NULL, &pointer);
        sprm  = (U16)wvGetrgsprmWord6(sprm8);
        i++;
        *dpointer++ = (sprm & 0x00FF);
        *dpointer++ = (sprm & 0xff00) >> 8;
        temp        = wvEatSprm(sprm, pointer, &i);
        for (j = 0; j < temp; j++)
            *dpointer++ = *pointer++;
        wvTrace(("Mlen of op is %d\n", temp));
    }
    wvFree(src->upx.chpx.grpprl);
    src->upx.chpx.grpprl = grpprl;
    src->cbUPX           = len;
    for (i = 0; i < src->cbUPX; i++)
        wvTrace(("%x\n", src->upx.chpx.grpprl[i]));
}