36    if (enc.
buf==NULL) 
return dec;
 
   39    zstrm.zalloc    = Z_NULL;
 
   41    zstrm.opaque    = Z_NULL;
 
   42    zstrm.next_in   = Z_NULL;
 
   45    int ret = inflateInit2(&zstrm, 47);
 
   46    if (ret!=Z_OK) 
return dec;
 
   52    zstrm.next_in  = enc.
buf;
 
   53    zstrm.avail_in = (size_t)enc.
vldsz;
 
   56        zstrm.next_out  = wrk.
buf;
 
   57        zstrm.avail_out = (size_t)wrk.
bufsz; 
 
   59        ret = inflate(&zstrm, Z_NO_FLUSH);
 
   60        if (ret!=Z_OK && ret!=Z_STREAM_END) {
 
   74        if (ret==Z_STREAM_END && zstrm.avail_in!=0) {
 
   75            ret = inflateReset(&zstrm);
 
   78    } 
while (ret!=Z_STREAM_END && zstrm.avail_in>0);
 
 
  101    unsigned char gzip_header[] = { 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff};
 
  102    unsigned char gzip_tailer[] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};    
 
 
  135    if (infp==NULL || otfp==NULL) 
return 0;
 
  138    unsigned char inbuf[
LBUF];
 
  139    unsigned char otbuf[
BUFSZ];
 
  143    zstrm.zalloc    = Z_NULL;
 
  144    zstrm.zfree     = Z_NULL;
 
  145    zstrm.opaque    = Z_NULL;
 
  146    zstrm.next_in   = Z_NULL;
 
  149    int ret = inflateInit2(&zstrm, 47);
 
  153        zstrm.next_in  = inbuf;
 
  154        zstrm.avail_in = (int)fread(inbuf, 1, 
LBUF, infp);
 
  157            zstrm.next_out  = otbuf;
 
  158            zstrm.avail_out = 
BUFSZ; 
 
  160            ret = inflate(&zstrm, Z_NO_FLUSH);
 
  161            if (ret!=Z_OK && ret!=Z_STREAM_END) {
 
  162                fwrite(otbuf, 
BUFSZ-zstrm.avail_out, 1, otfp);          
 
  170            int otsz = 
BUFSZ - zstrm.avail_out; 
 
  171            fwrite(otbuf, otsz, 1, otfp);           
 
  174            if (ret==Z_STREAM_END && zstrm.avail_in!=0) {
 
  175                ret = inflateReset(&zstrm);
 
  178        } 
while (ret!=Z_STREAM_END && zstrm.avail_in>0);
 
  180    } 
while(!feof(infp));
 
 
  207        gzwrite(*gf, (voidp)buf, (
unsigned int)cc);
 
 
  234    sz = cc = gzread(*gf, (voidp)buf, 
RECVBUFSZ);
 
  236        fwrite(buf, cc, 1, fp);
 
 
  262    fp = fopen(fmfn, 
"rb");
 
  265    gf = gzopen(tofn, 
"wb");
 
  274        gzwrite(gf, (voidp)buf, (
unsigned int)cc);
 
 
  301    infp = fopen(fmfn, 
"rb");
 
  304    otfp = fopen(tofn, 
"wb");
 
 
  383    if (enc.
buf[0]==0x1f && enc.
buf[1]==0x8b) 
return TRUE;
 
 
  395    Tar_Header  tar_header;
 
  397    long unsigned int size = 0;
 
  398    long unsigned int datalen = (
long unsigned int)(tardata.
vldsz - 1024);
 
  406    int long_link = 
FALSE;
 
  409    while (size < datalen) {
 
  410        memcpy(&tar_header, (
char*)&tardata.
buf[size], 
sizeof(Tar_Header));
 
  413        if (!long_link && (*tar_header.typeflag==
'L' || *tar_header.typeflag==
'K')) {
 
  417        else if (long_link) {
 
  427        if (*tar_header.typeflag==
'x') {
 
  428            PRINT_MESG(
"xLib/extract_tTar: ERROR: type flag \"x\" (POSIX pax extend header) is not supported\n");
 
  432        size += 
sizeof(Tar_Header);
 
  441        if (ret<0) 
PRINT_MESG(
"xLib/extract_tTar: WARNING: Failed to create directory.\n");
 
  442        long unsigned int len = (
long unsigned int)strtol(tar_header.size, NULL, 8);
 
  451        if (len%512>0) len = (len/512 + 1)*512;
 
 
Buffer make_Buffer(int sz)
Buffer型変数のバッファ部をつくり出す.
 
int cat_b2Buffer(void *src, Buffer *dst, int len)
任意のバイナリデータsrcを Buffer型変数dstへ lenバイト catする.
 
void free_Buffer(Buffer *buf)
Buffer型変数のバッファ部を解放する
 
Buffer init_Buffer()
初期化したBuffer型変数を返す.
 
Buffer dup_Buffer(Buffer buf)
Buffer型変数のコピーをつくる.
 
int cat_Buffer(Buffer *src, Buffer *dst)
Buffer変数 srcから dstへバッファを catする.
 
#define cat_s2Buffer(src, dst)
cat_b2Buffer()
 
#define make_Buffer_bystr(str)
set_Buffer()
 
#define JBXL_ARGS_ERROR
不正な引数(NULLなど)
 
#define JBXL_FILE_DESTOPEN_ERROR
ディスティネーションファイルのオープン失敗
 
#define JBXL_FILE_OPEN_ERROR
ファイルオープン エラー
 
int bufsz
確保してあるバッファの大きさ - 1.
 
int vldsz
データの長さ.バイナリデータの場合も使用可能.文字列の場合は 0x00 を含まない.
 
int state
変数の状態を表す.正常は JBXL_NORMAL
 
unsigned char * buf
バッファの先頭へのポインタ.str[bufsz]は必ず 0x00となる.