Ejemplo n.º 1
0
static int
PK_packed_num ()
{
  int i, j;
  if ((i = PK_get_nyb ()) == 0)
    {
      do
	{
	  j = PK_get_nyb ();
	  i++;
	}
      while (j == 0);

      while (i > 0)
	{
	  j = (j << 4) + PK_get_nyb ();
	  i--;
	}
      return (j - 15 + ((13 - PK_dyn_f) << 4) + PK_dyn_f);
    }
  else
    {
      if (i <= PK_dyn_f)
	return (i);
      if (i < 14)
	return ((i - PK_dyn_f - 1) << 4) + PK_get_nyb () + PK_dyn_f + 1;
      if (i == 14)
	PK_repeat_count = PK_packed_num ();
      else
	PK_repeat_count = 1;
      return PK_packed_num ();
    }
}
Ejemplo n.º 2
0
static int
PK_packed_num(FILE *fp)
{
    int i, j;

    if ((i = PK_get_nyb(fp)) == 0) {
	do {
	    j = PK_get_nyb(fp);
	    ++i;
	}
	while (j == 0);
	while (i > 0) {
	    j = (j << 4) | PK_get_nyb(fp);
	    --i;
	}
	return (j - 15 + ((13 - PK_dyn_f) << 4) + PK_dyn_f);
    }
    else {
	if (i <= PK_dyn_f)
	    return i;
	if (i < 14)
	    return (((i - PK_dyn_f - 1) << 4) + PK_get_nyb(fp)
		    + PK_dyn_f + 1);
	if (i == 14)
	    PK_repeat_count = PK_packed_num(fp);
	else
	    PK_repeat_count = 1;
	return PK_packed_num(fp);
    }
}