亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? unzip.c

?? WINDOWS下的ZIP解壓軟件,我是個學生,請讓我加入這個網站學習
?? C
?? 第 1 頁 / 共 5 頁
字號:
            error = list_files();               /* LIST 'EM */
        else
            error = extract_or_test_files();    /* EXTRACT OR TEST 'EM */
        if (error > error_in_archive)   /* don't overwrite stronger error */
            error_in_archive = error;   /*  with (for example) a warning */
    } else {
        fprintf(stderr, "\nerror:  zipfile is part of multi-disk archive \
(sorry, not supported).\n");
    /*  fprintf(stderr, "Please report to zip-bugs@cs.ucla.edu\n");  */
        error_in_archive = 11;  /* 11:  no files found */
    }

    close(zipfd);
    return error_in_archive;

} /* end function process_zipfile() */





/************************************/
/*  Function find_end_central_dir() */
/************************************/

int find_end_central_dir()   /* return 0 if found, 1 otherwise */
{
    int i, numblks;
    longint tail_len;



/*---------------------------------------------------------------------------
    Treat case of short zipfile separately.
  ---------------------------------------------------------------------------*/

    if (ziplen <= INBUFSIZ) {
        lseek(zipfd, 0L, SEEK_SET);
        if ((incnt = read(zipfd,(char *)inbuf,(unsigned int)ziplen)) ==
             (int)ziplen)

            /* 'P' must be at least 22 bytes from end of zipfile */
            for (inptr = inbuf+(int)ziplen-22;  inptr >= inbuf;  --inptr)
                if ((ascii_to_native(*inptr) == 'P')  &&
                     !strncmp((char *)inptr, end_central_sig, 4)) {
                    incnt -= inptr - inbuf;
                    return 0;   /* found it! */
                }               /* ...otherwise fall through & fail */

/*---------------------------------------------------------------------------
    Zipfile is longer than INBUFSIZ:  may need to loop.  Start with short
    block at end of zipfile (if not TOO short).
  ---------------------------------------------------------------------------*/

    } else {
        if ((tail_len = ziplen % INBUFSIZ) > ECREC_SIZE) {
            cur_zipfile_bufstart = lseek(zipfd, ziplen-tail_len, SEEK_SET);
            if ((incnt = read(zipfd,(char *)inbuf,(unsigned int)tail_len)) !=
                 (int)tail_len)
                goto fail;      /* shut up; it's expedient. */

            /* 'P' must be at least 22 bytes from end of zipfile */
            for (inptr = inbuf+(int)tail_len-22;  inptr >= inbuf;  --inptr)
                if ((ascii_to_native(*inptr) == 'P')  &&
                     !strncmp((char *)inptr, end_central_sig, 4)) {
                    incnt -= inptr - inbuf;
                    return 0;   /* found it */
                }               /* ...otherwise search next block */
            strncpy((char *)hold, (char *)inbuf, 3);    /* sig may span block
                                                           boundary */
        } else {
            cur_zipfile_bufstart = ziplen - tail_len;
        }

    /*-----------------------------------------------------------------------
        Loop through blocks of zipfile data, starting at the end and going
        toward the beginning.  Need only check last 65557 bytes of zipfile:
        comment may be up to 65535 bytes long, end-of-central-directory rec-
        ord is 18 bytes (shouldn't hardcode this number, but what the hell:
        already did so above (22=18+4)), and sig itself is 4 bytes.
      -----------------------------------------------------------------------*/

        numblks = (int)
                  ((MIN(ziplen,65557L) - tail_len + (INBUFSIZ-1)) / INBUFSIZ);
        /*          =amount to search=   ==done==   ==rounding==    =blksiz= */

        for (i = 1;  i <= numblks;  ++i) {
            cur_zipfile_bufstart -= INBUFSIZ;
            lseek(zipfd, cur_zipfile_bufstart, SEEK_SET);
            if ((incnt = read(zipfd,(char *)inbuf,INBUFSIZ)) != INBUFSIZ)
                break;          /* fall through and fail */

            for (inptr = inbuf+INBUFSIZ-1;  inptr >= inbuf;  --inptr)
                if ((ascii_to_native(*inptr) == 'P')  &&
                     !strncmp((char *)inptr, end_central_sig, 4)) {
                    incnt -= inptr - inbuf;
                    return 0;   /* found it */
                }
            strncpy((char *)hold, (char *)inbuf, 3);    /* sig may span block
                                                           boundary */
        }

    } /* end if (ziplen > INBUFSIZ) */

/*---------------------------------------------------------------------------
    Searched through whole region where signature should be without finding
    it.  Print informational message and die a horrible death.
  ---------------------------------------------------------------------------*/

fail:
#ifdef MSWIN
    MessageBeep(1);
#endif

    fprintf(stderr, "\nFile:  %s\n\n\
     End-of-central-directory signature not found.  Either this file is not\n\
     a zipfile, or it constitutes one disk of a multi-part archive.  In the\n\
     latter case the central directory and zipfile comment will be found on\n\
     the last disk(s) of this archive.\n", zipfn);
    return 1;

} /* end function find_end_central_dir() */





/***************************************/
/*  Function process_end_central_dir() */
/***************************************/

int process_end_central_dir()    /* return PK-type error code */
{
    ec_byte_rec byterec;
    int error=0;


/*---------------------------------------------------------------------------
    Read the end-of-central-directory record and do any necessary machine-
    type conversions (byte ordering, structure padding compensation) by
    reading data into character array, then copying to struct.
  ---------------------------------------------------------------------------*/

    if (readbuf((char *) byterec, ECREC_SIZE+4) <= 0)
        return 51;

    ecrec.number_this_disk =
        makeword(&byterec[NUMBER_THIS_DISK]);
    ecrec.num_disk_with_start_central_dir =
        makeword(&byterec[NUM_DISK_WITH_START_CENTRAL_DIR]);
    ecrec.num_entries_centrl_dir_ths_disk =
        makeword(&byterec[NUM_ENTRIES_CENTRL_DIR_THS_DISK]);
    ecrec.total_entries_central_dir =
        makeword(&byterec[TOTAL_ENTRIES_CENTRAL_DIR]);
    ecrec.size_central_directory =
        makelong(&byterec[SIZE_CENTRAL_DIRECTORY]);
    ecrec.offset_start_central_directory =
        makelong(&byterec[OFFSET_START_CENTRAL_DIRECTORY]);
    ecrec.zipfile_comment_length =
        makeword(&byterec[ZIPFILE_COMMENT_LENGTH]);

/*---------------------------------------------------------------------------
    Get the zipfile comment, if any, and print it out.  (Comment may be up
    to 64KB long.  May the fleas of a thousand camels infest the armpits of
    anyone who actually takes advantage of this fact.)  Then position the
    file pointer to the beginning of the central directory and fill buffer.
  ---------------------------------------------------------------------------*/

#ifdef MSWIN
    cchComment = ecrec.zipfile_comment_length; /* save for comment button */
    if (ecrec.zipfile_comment_length && zflag) {
#else /* !MSWIN */
    if (ecrec.zipfile_comment_length && !quietflg) {
        if (!zflag)
          printf("[%s] comment:\n", zipfn);
#endif /* ?MSWIN */
        if (do_string(ecrec.zipfile_comment_length,DISPLAY)) {
            fprintf(stderr, "\ncaution:  zipfile comment truncated\n");
            error = 1;          /* 1:  warning error */
        }
    }

    return error;

} /* end function process_end_central_dir() */





/* also referenced in UpdateListBox() in updatelb.c (Windows version) */
char *Headers[][2] = {
    {" Length    Date    Time    Name",
     " ------    ----    ----    ----"},
    {" Length  Method   Size  Ratio   Date    Time   CRC-32     Name",
     " ------  ------   ----  -----   ----    ----   ------     ----"}
};

/*************************/
/* Function list_files() */
/*************************/

int list_files()    /* return PK-type error code */
{
    char **fnamev;
    int do_this_file=FALSE, ratio, error, error_in_archive=0;
    int which_hdr=(vflag>1), date_format;
    UWORD j, yr, mo, dy, hh, mm, members=0;
    ULONG tot_csize=0L, tot_ucsize=0L;
#ifdef OS2
    ULONG tot_easize=0L, tot_eafiles=0L, ea_size;
#endif
#ifdef MSWIN
    PSTR psLBEntry;  /* list box entry */
#endif
    min_info info;
    static char *method[NUM_METHODS+1] =
        {"Stored", "Shrunk", "Reduce1", "Reduce2", "Reduce3", "Reduce4",
         "Implode", "Token", "Deflate", unkn};



/*---------------------------------------------------------------------------
    Unlike extract_or_test_files(), this routine confines itself to the cen-
    tral directory.  Thus its structure is somewhat simpler, since we can do
    just a single loop through the entire directory, listing files as we go.

    So to start off, print the heading line and then begin main loop through
    the central directory.  The results will look vaguely like the following:

  Length  Method   Size  Ratio   Date    Time   CRC-32     Name ("^" ==> case
  ------  ------   ----  -----   ----    ----   ------     ----   conversion)
   44004  Implode  13041  71%  11-02-89  19:34  8b4207f7   Makefile.UNIX
    3438  Shrunk    2209  36%  09-15-90  14:07  a2394fd8  ^dos-file.ext
  ---------------------------------------------------------------------------*/

    pInfo = &info;
    date_format = dateformat();

#ifndef MSWIN
    if (quietflg < 2)
        if (U_flag)
            printf("%s\n%s\n", Headers[which_hdr][0], Headers[which_hdr][1]);
        else
            printf("%s (\"^\" ==> case\n%s   conversion)\n", 
              Headers[which_hdr][0], Headers[which_hdr][1]);
#endif /* !MSWIN */

    for (j = 0; j < ecrec.total_entries_central_dir; ++j) {

        if (readbuf(sig, 4) <= 0)
            return 51;          /* 51:  unexpected EOF */
        if (strncmp(sig, central_hdr_sig, 4)) {  /* just to make sure */
            fprintf(stderr, CentSigMsg, j);  /* sig not found */
            fprintf(stderr, ReportMsg);   /* check binary transfers */
            return 3;           /* 3:  error in zipfile */
        }
        if ((error = process_cdir_file_hdr()) != 0)  /* (sets pInfo->lcflag) */
            return error;       /* only 51 (EOF) defined */

        /*
         * We could DISPLAY the filename instead of storing (and possibly trun-
         * cating, in the case of a very long name) and printing it, but that
         * has the disadvantage of not allowing case conversion--and it's nice
         * to be able to see in the listing precisely how you have to type each
         * filename in order for unzip to consider it a match.  Speaking of
         * which, if member names were specified on the command line, check in
         * with match() to see if the current file is one of them, and make a
         * note of it if it is.
         */

        if ((error = do_string(crec.filename_length, FILENAME)) != 0) {
            error_in_archive = error;  /*             ^--(uses pInfo->lcflag) */
            if (error > 1)      /* fatal:  can't continue */
                return error;
        }
        if (extra_field != (byte *)NULL)
            free(extra_field);
        extra_field = (byte *)NULL;
        if ((error = do_string(crec.extra_field_length, EXTRA_FIELD)) != 0) {
            error_in_archive = error;  
            if (error > 1)      /* fatal:  can't continue */
                return error;
        }
        if (!process_all_files) {   /* check if specified on command line */
            do_this_file = FALSE;
            fnamev = fnv;       /* don't destroy permanent filename ptr */
            for (--fnamev; *++fnamev;)
                if (match(filename, *fnamev)) {
                    do_this_file = TRUE;
                    break;      /* found match, so stop looping */
                }
        }
        /*
         * If current file was specified on command line, or if no names were
         * specified, do the listing for this file.  Otherwise, get rid of the
         * file comment and go back for the next file.
         */

        if (process_all_files || do_this_file) {

            yr = (((crec.last_mod_file_date >> 9) & 0x7f) + 80) % (unsigned)100;
            mo = (crec.last_mod_file_date >> 5) & 0x0f;
            dy = crec.last_mod_file_date & 0x1f;

            /* twist date so it displays according to national convention */
            switch (date_format) {
                case DF_YMD:
                    hh = mo; mo = yr; yr = dy; dy = hh; break;
                case DF_DMY:

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
一区二区三区中文在线观看| 亚洲美女精品一区| 日韩欧美一二三| 欧美亚洲动漫精品| 一本到高清视频免费精品| 波多野结衣中文字幕一区 | 国产成人亚洲综合色影视| 国内久久婷婷综合| 国内精品伊人久久久久av一坑 | 午夜欧美视频在线观看| 亚洲综合在线视频| 一区二区三区91| 亚洲电影视频在线| 亚洲国产精品欧美一二99| 亚洲一二三区不卡| 午夜av一区二区三区| 肉丝袜脚交视频一区二区| 天天综合色天天综合色h| 偷拍亚洲欧洲综合| 毛片不卡一区二区| 国产原创一区二区| 成人午夜电影小说| 色婷婷av久久久久久久| 91福利视频在线| 91精品国产91久久久久久一区二区| 欧美疯狂做受xxxx富婆| 精品国产三级a在线观看| 国产无一区二区| 亚洲麻豆国产自偷在线| 三级在线观看一区二区| 精品一区二区三区的国产在线播放 | 亚洲高清一区二区三区| 秋霞影院一区二区| 国产精品香蕉一区二区三区| 亚洲欧美一区二区三区孕妇| 国产精品国产三级国产aⅴ中文 | 欧美tickle裸体挠脚心vk| 波波电影院一区二区三区| 成人免费视频一区二区| 波多野结衣在线aⅴ中文字幕不卡| 国产成人久久精品77777最新版本| 国产资源在线一区| 国产精品影视天天线| 成人做爰69片免费看网站| 成人免费观看男女羞羞视频| 色琪琪一区二区三区亚洲区| av一二三不卡影片| 欧美另类变人与禽xxxxx| 久久综合一区二区| 欧美美女一区二区在线观看| 在线观看亚洲一区| 日韩欧美国产综合| 一级做a爱片久久| 欧美日本一区二区| 日韩欧美在线123| 久久精品男人天堂av| 一区二区三区日韩欧美| 国产自产v一区二区三区c| 91精品国产综合久久久久| 26uuu久久天堂性欧美| 精品国产一区二区三区忘忧草| 亚洲国产高清aⅴ视频| 亚洲人一二三区| 99热在这里有精品免费| 精品久久一区二区| 欧美国产视频在线| 免费在线观看一区二区三区| 色婷婷综合久久久久中文 | 国产黄色成人av| 久久久久久免费毛片精品| 伦理电影国产精品| 欧美日韩精品一区二区三区四区 | 国产在线不卡一卡二卡三卡四卡| 99精品国产一区二区三区不卡| 欧美精品一区二区三区很污很色的| 亚洲3atv精品一区二区三区| 91麻豆免费观看| 亚洲男同性视频| 8x8x8国产精品| 美女性感视频久久| 国产亚洲欧美激情| 不卡一区二区三区四区| 国产精品福利一区| 99久久久久久| 一区二区三区欧美久久| 日本精品视频一区二区三区| 亚洲精品自拍动漫在线| 在线一区二区观看| 美腿丝袜亚洲三区| 久久精品夜色噜噜亚洲aⅴ| 成人教育av在线| 亚洲精品成人悠悠色影视| 欧美妇女性影城| 美女视频网站黄色亚洲| 欧美大片一区二区| 国产老肥熟一区二区三区| 中文字幕永久在线不卡| 欧美精品日韩综合在线| 国产乱一区二区| 香蕉成人伊视频在线观看| 精品国产1区2区3区| 欧美亚日韩国产aⅴ精品中极品| 亚洲电影你懂得| 精品国产伦一区二区三区观看体验| 精品一区二区三区在线视频| 国产午夜精品久久久久久免费视| 在线观看视频一区二区欧美日韩| 激情六月婷婷久久| 亚洲自拍都市欧美小说| 久久精品欧美一区二区三区不卡 | 91传媒视频在线播放| www.视频一区| 国产精品一区久久久久| 亚洲国产精品人人做人人爽| 久久精品一区四区| 69堂成人精品免费视频| 欧洲一区在线观看| 在线观看日产精品| 日本韩国一区二区三区| 丁香婷婷综合激情五月色| 麻豆传媒一区二区三区| 日韩av高清在线观看| 午夜精品免费在线| 性久久久久久久久| 日韩激情视频在线观看| 亚洲成人免费电影| 久久精品国产一区二区| 精油按摩中文字幕久久| 日本大胆欧美人术艺术动态| 亚洲综合久久av| 亚洲天堂中文字幕| 欧美激情艳妇裸体舞| 国产肉丝袜一区二区| 亚洲同性同志一二三专区| 国产精品二三区| 香蕉成人啪国产精品视频综合网| 热久久国产精品| 国产在线精品一区二区夜色| 激情图片小说一区| 韩国精品免费视频| 午夜视频在线观看一区二区| 亚洲男人电影天堂| 亚洲国产综合人成综合网站| 午夜在线成人av| 久久99国产精品成人| 日日摸夜夜添夜夜添亚洲女人| 免费不卡在线观看| 粉嫩av一区二区三区| 99精品国产一区二区三区不卡| 国产精品一二三在| 99re成人精品视频| 欧美午夜片在线观看| 精品国产一区久久| 91精品国产欧美一区二区| 精品欧美一区二区在线观看| 欧美精品一区二区三区一线天视频| 综合中文字幕亚洲| 久久精品二区亚洲w码| 国产尤物一区二区| 99国产欧美久久久精品| 日本道色综合久久| 日韩一级大片在线| 国产精品久久影院| 日韩高清不卡一区二区| 国产精品99久久久久久有的能看| 91农村精品一区二区在线| 精品捆绑美女sm三区| 亚洲欧美欧美一区二区三区| 美腿丝袜在线亚洲一区| av在线一区二区| 久久久91精品国产一区二区精品 | 久久视频一区二区| 一片黄亚洲嫩模| 欧美午夜精品久久久久久超碰| 久久―日本道色综合久久| 五月天久久比比资源色| 成人综合激情网| 国产精品乱码一区二区三区软件| 一区二区理论电影在线观看| 国产精品77777| 国产亚洲成av人在线观看导航 | 国产精品久久毛片av大全日韩| 日韩成人精品在线| 91.com视频| 老鸭窝一区二区久久精品| 在线播放日韩导航| 亚洲在线视频一区| 欧美电影免费观看高清完整版在线| 亚洲精品网站在线观看| 91看片淫黄大片一级| 亚洲综合丁香婷婷六月香| 成人国产精品免费网站| 国产亚洲精品免费| 国产大陆亚洲精品国产| 欧美日韩日日夜夜| 亚洲mv在线观看| 日本久久电影网| 亚洲一级二级在线| 欧美人体做爰大胆视频| 午夜不卡av免费|