private int readString(int r, int f) throws Return{
    if(tmp_string == null){
      tmp_string=new java.io.ByteArrayOutputStream();
    }
    int b=0; 
    do {
      if(z.avail_in==0){ throw new Return(r); }; r=f;
      z.avail_in--; z.total_in++;
      b = z.next_in[z.next_in_index];
      if(b!=0) tmp_string.write(z.next_in, z.next_in_index, 1);
      z.adler.update(z.next_in, z.next_in_index, 1);
      z.next_in_index++;
    }while(b!=0);
    return r;
  }