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

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

?? gun.c

?? minix操作系統最新版本(3.1.1)的源代碼
?? C
?? 第 1 頁 / 共 2 頁
字號:
/* gun.c -- simple gunzip to give an example of the use of inflateBack() * Copyright (C) 2003, 2005 Mark Adler * For conditions of distribution and use, see copyright notice in zlib.h   Version 1.3  12 June 2005  Mark Adler *//* Version history:   1.0  16 Feb 2003  First version for testing of inflateBack()   1.1  21 Feb 2005  Decompress concatenated gzip streams                     Remove use of "this" variable (C++ keyword)                     Fix return value for in()                     Improve allocation failure checking                     Add typecasting for void * structures                     Add -h option for command version and usage                     Add a bunch of comments   1.2  20 Mar 2005  Add Unix compress (LZW) decompression                     Copy file attributes from input file to output file   1.3  12 Jun 2005  Add casts for error messages [Oberhumer] *//*   gun [ -t ] [ name ... ]   decompresses the data in the named gzip files.  If no arguments are given,   gun will decompress from stdin to stdout.  The names must end in .gz, -gz,   .z, -z, _z, or .Z.  The uncompressed data will be written to a file name   with the suffix stripped.  On success, the original file is deleted.  On   failure, the output file is deleted.  For most failures, the command will   continue to process the remaining names on the command line.  A memory   allocation failure will abort the command.  If -t is specified, then the   listed files or stdin will be tested as gzip files for integrity (without   checking for a proper suffix), no output will be written, and no files   will be deleted.   Like gzip, gun allows concatenated gzip streams and will decompress them,   writing all of the uncompressed data to the output.  Unlike gzip, gun allows   an empty file on input, and will produce no error writing an empty output   file.   gun will also decompress files made by Unix compress, which uses LZW   compression.  These files are automatically detected by virtue of their   magic header bytes.  Since the end of Unix compress stream is marked by the   end-of-file, they cannot be concantenated.  If a Unix compress stream is   encountered in an input file, it is the last stream in that file.   Like gunzip and uncompress, the file attributes of the orignal compressed   file are maintained in the final uncompressed file, to the extent that the   user permissions allow it.   On my Mac OS X PowerPC G4, gun is almost twice as fast as gunzip (version   1.2.4) is on the same file, when gun is linked with zlib 1.2.2.  Also the   LZW decompression provided by gun is about twice as fast as the standard   Unix uncompress command. *//* external functions and related types and constants */#include <stdio.h>          /* fprintf() */#include <stdlib.h>         /* malloc(), free() */#include <string.h>         /* strerror(), strcmp(), strlen(), memcpy() */#include <errno.h>          /* errno */#include <fcntl.h>          /* open() */#include <unistd.h>         /* read(), write(), close(), chown(), unlink() */#include <sys/types.h>#include <sys/stat.h>       /* stat(), chmod() */#include <utime.h>          /* utime() */#include "zlib.h"           /* inflateBackInit(), inflateBack(), */                            /* inflateBackEnd(), crc32() *//* function declaration */#define local static/* buffer constants */#define SIZE 32768U         /* input and output buffer sizes */#define PIECE 16384         /* limits i/o chunks for 16-bit int case *//* structure for infback() to pass to input function in() -- it maintains the   input file and a buffer of size SIZE */struct ind {    int infile;    unsigned char *inbuf;};/* Load input buffer, assumed to be empty, and return bytes loaded and a   pointer to them.  read() is called until the buffer is full, or until it   returns end-of-file or error.  Return 0 on error. */local unsigned in(void *in_desc, unsigned char **buf){    int ret;    unsigned len;    unsigned char *next;    struct ind *me = (struct ind *)in_desc;    next = me->inbuf;    *buf = next;    len = 0;    do {        ret = PIECE;        if ((unsigned)ret > SIZE - len)            ret = (int)(SIZE - len);        ret = (int)read(me->infile, next, ret);        if (ret == -1) {            len = 0;            break;        }        next += ret;        len += ret;    } while (ret != 0 && len < SIZE);    return len;}/* structure for infback() to pass to output function out() -- it maintains the   output file, a running CRC-32 check on the output and the total number of   bytes output, both for checking against the gzip trailer.  (The length in   the gzip trailer is stored modulo 2^32, so it's ok if a long is 32 bits and   the output is greater than 4 GB.) */struct outd {    int outfile;    int check;                  /* true if checking crc and total */    unsigned long crc;    unsigned long total;};/* Write output buffer and update the CRC-32 and total bytes written.  write()   is called until all of the output is written or an error is encountered.   On success out() returns 0.  For a write failure, out() returns 1.  If the   output file descriptor is -1, then nothing is written. */local int out(void *out_desc, unsigned char *buf, unsigned len){    int ret;    struct outd *me = (struct outd *)out_desc;    if (me->check) {        me->crc = crc32(me->crc, buf, len);        me->total += len;    }    if (me->outfile != -1)        do {            ret = PIECE;            if ((unsigned)ret > len)                ret = (int)len;            ret = (int)write(me->outfile, buf, ret);            if (ret == -1)                return 1;            buf += ret;            len -= ret;        } while (len != 0);    return 0;}/* next input byte macro for use inside lunpipe() and gunpipe() */#define NEXT() (have ? 0 : (have = in(indp, &next)), \                last = have ? (have--, (int)(*next++)) : -1)/* memory for gunpipe() and lunpipe() --   the first 256 entries of prefix[] and suffix[] are never used, could   have offset the index, but it's faster to waste the memory */unsigned char inbuf[SIZE];              /* input buffer */unsigned char outbuf[SIZE];             /* output buffer */unsigned short prefix[65536];           /* index to LZW prefix string */unsigned char suffix[65536];            /* one-character LZW suffix */unsigned char match[65280 + 2];         /* buffer for reversed match or gzip                                           32K sliding window *//* throw out what's left in the current bits byte buffer (this is a vestigial   aspect of the compressed data format derived from an implementation that   made use of a special VAX machine instruction!) */#define FLUSHCODE() \    do { \        left = 0; \        rem = 0; \        if (chunk > have) { \            chunk -= have; \            have = 0; \            if (NEXT() == -1) \                break; \            chunk--; \            if (chunk > have) { \                chunk = have = 0; \                break; \            } \        } \        have -= chunk; \        next += chunk; \        chunk = 0; \    } while (0)/* Decompress a compress (LZW) file from indp to outfile.  The compress magic   header (two bytes) has already been read and verified.  There are have bytes   of buffered input at next.  strm is used for passing error information back   to gunpipe().   lunpipe() will return Z_OK on success, Z_BUF_ERROR for an unexpected end of   file, read error, or write error (a write error indicated by strm->next_in   not equal to Z_NULL), or Z_DATA_ERROR for invalid input. */local int lunpipe(unsigned have, unsigned char *next, struct ind *indp,                  int outfile, z_stream *strm){    int last;                   /* last byte read by NEXT(), or -1 if EOF */    int chunk;                  /* bytes left in current chunk */    int left;                   /* bits left in rem */    unsigned rem;               /* unused bits from input */    int bits;                   /* current bits per code */    unsigned code;              /* code, table traversal index */    unsigned mask;              /* mask for current bits codes */    int max;                    /* maximum bits per code for this stream */    int flags;                  /* compress flags, then block compress flag */    unsigned end;               /* last valid entry in prefix/suffix tables */    unsigned temp;              /* current code */    unsigned prev;              /* previous code */    unsigned final;             /* last character written for previous code */    unsigned stack;             /* next position for reversed string */    unsigned outcnt;            /* bytes in output buffer */    struct outd outd;           /* output structure */    /* set up output */    outd.outfile = outfile;    outd.check = 0;    /* process remainder of compress header -- a flags byte */    flags = NEXT();    if (last == -1)        return Z_BUF_ERROR;    if (flags & 0x60) {        strm->msg = (char *)"unknown lzw flags set";        return Z_DATA_ERROR;    }    max = flags & 0x1f;    if (max < 9 || max > 16) {        strm->msg = (char *)"lzw bits out of range";        return Z_DATA_ERROR;    }    if (max == 9)                           /* 9 doesn't really mean 9 */        max = 10;    flags &= 0x80;                          /* true if block compress */    /* clear table */    bits = 9;    mask = 0x1ff;    end = flags ? 256 : 255;    /* set up: get first 9-bit code, which is the first decompressed byte, but       don't create a table entry until the next code */    if (NEXT() == -1)                       /* no compressed data is ok */        return Z_OK;    final = prev = (unsigned)last;          /* low 8 bits of code */    if (NEXT() == -1)                       /* missing a bit */        return Z_BUF_ERROR;    if (last & 1) {                         /* code must be < 256 */        strm->msg = (char *)"invalid lzw code";        return Z_DATA_ERROR;    }    rem = (unsigned)last >> 1;              /* remaining 7 bits */    left = 7;    chunk = bits - 2;                       /* 7 bytes left in this chunk */    outbuf[0] = (unsigned char)final;       /* write first decompressed byte */    outcnt = 1;    /* decode codes */    stack = 0;    for (;;) {        /* if the table will be full after this, increment the code size */        if (end >= mask && bits < max) {            FLUSHCODE();            bits++;            mask <<= 1;            mask++;        }        /* get a code of length bits */        if (chunk == 0)                     /* decrement chunk modulo bits */            chunk = bits;        code = rem;                         /* low bits of code */        if (NEXT() == -1) {                 /* EOF is end of compressed data */            /* write remaining buffered output */            if (outcnt && out(&outd, outbuf, outcnt)) {                strm->next_in = outbuf;     /* signal write error */                return Z_BUF_ERROR;            }            return Z_OK;        }        code += (unsigned)last << left;     /* middle (or high) bits of code */        left += 8;        chunk--;        if (bits > left) {                  /* need more bits */            if (NEXT() == -1)               /* can't end in middle of code */                return Z_BUF_ERROR;            code += (unsigned)last << left; /* high bits of code */            left += 8;            chunk--;        }        code &= mask;                       /* mask to current code length */        left -= bits;                       /* number of unused bits */        rem = (unsigned)last >> (8 - left); /* unused bits from last byte */        /* process clear code (256) */        if (code == 256 && flags) {            FLUSHCODE();            bits = 9;                       /* initialize bits and mask */            mask = 0x1ff;            end = 255;                      /* empty table */            continue;                       /* get next code */        }        /* special code to reuse last match */        temp = code;                        /* save the current code */        if (code > end) {            /* Be picky on the allowed code here, and make sure that the code               we drop through (prev) will be a valid index so that random               input does not cause an exception.  The code != end + 1 check is               empirically derived, and not checked in the original uncompress               code.  If this ever causes a problem, that check could be safely               removed.  Leaving this check in greatly improves gun's ability               to detect random or corrupted input after a compress header.               In any case, the prev > end check must be retained. */            if (code != end + 1 || prev > end) {                strm->msg = (char *)"invalid lzw code";                return Z_DATA_ERROR;            }            match[stack++] = (unsigned char)final;            code = prev;        }        /* walk through linked list to generate output in reverse order */        while (code >= 256) {            match[stack++] = suffix[code];            code = prefix[code];        }        match[stack++] = (unsigned char)code;        final = code;        /* link new table entry */        if (end < mask) {            end++;            prefix[end] = (unsigned short)prev;            suffix[end] = (unsigned char)final;        }        /* set previous code for next iteration */        prev = temp;        /* write output in forward order */        while (stack > SIZE - outcnt) {            while (outcnt < SIZE)                outbuf[outcnt++] = match[--stack];            if (out(&outd, outbuf, outcnt)) {                strm->next_in = outbuf; /* signal write error */

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
在线播放91灌醉迷j高跟美女 | 欧美日韩一区二区三区不卡| 成人毛片在线观看| 成人教育av在线| 欧美性猛交一区二区三区精品| 欧美日韩日日摸| 一区二区免费视频| 一区二区中文字幕在线| 18成人在线观看| 石原莉奈在线亚洲三区| 狠狠网亚洲精品| 91麻豆蜜桃一区二区三区| 9191成人精品久久| 国产亚洲美州欧州综合国| 亚洲黄色av一区| 国产在线视频不卡二| 91福利国产精品| 久久综合99re88久久爱| 亚洲黄色免费网站| 国产精品一区二区久激情瑜伽| 91成人在线精品| 久久女同性恋中文字幕| 亚洲愉拍自拍另类高清精品| 精一区二区三区| 欧美性感一类影片在线播放| 久久久久久久久蜜桃| 日韩黄色免费电影| 972aa.com艺术欧美| 久久免费午夜影院| 美女视频黄免费的久久| 色欧美88888久久久久久影院| 久久婷婷国产综合国色天香| 亚洲国产精品久久不卡毛片| jizz一区二区| 国产精品午夜在线| 成人免费观看男女羞羞视频| 337p日本欧洲亚洲大胆精品 | 免费美女久久99| 在线视频欧美区| 亚洲欧美一区二区三区国产精品| 国产精品一二三在| 久久久国产午夜精品 | 国产精品免费av| 国产成人精品免费| 久久婷婷国产综合国色天香| 国产乱人伦偷精品视频免下载| 日韩三级在线免费观看| 精品一区二区三区香蕉蜜桃 | 一区二区三区免费在线观看| 色综合天天性综合| 亚洲视频在线观看一区| 91丨国产丨九色丨pron| 亚洲六月丁香色婷婷综合久久 | 国产成人久久精品77777最新版本| 精品国产亚洲在线| 成人午夜电影网站| 一区二区三区国产精品| 欧美一区二区高清| 国产盗摄女厕一区二区三区| 欧美国产日本视频| 欧美午夜精品一区二区三区| 午夜精品一区二区三区电影天堂 | 亚洲另类色综合网站| 视频一区国产视频| 6080国产精品一区二区| 国产一区久久久| 国产精品进线69影院| 欧美亚州韩日在线看免费版国语版| 亚洲3atv精品一区二区三区| 亚洲精品一区二区三区香蕉| 91欧美激情一区二区三区成人| 亚洲va欧美va人人爽| 久久午夜电影网| 欧美日韩精品免费| eeuss鲁片一区二区三区在线观看| 亚洲综合丁香婷婷六月香| 亚洲精品一区二区三区精华液| 97成人超碰视| 韩国女主播成人在线| 亚洲影视在线播放| 日本一区二区三区国色天香 | 国产精品嫩草99a| 欧美一区二区三区成人| 91福利在线看| 99久久精品国产一区二区三区 | 日本中文一区二区三区| 亚洲欧洲日本在线| 国产欧美日韩中文久久| 日韩视频免费观看高清完整版| 91福利国产成人精品照片| 丁香啪啪综合成人亚洲小说| 精品一区二区三区免费| 午夜电影一区二区| 亚洲福利电影网| 亚洲小说欧美激情另类| 亚洲黄色性网站| 亚洲综合久久久| 丝袜美腿一区二区三区| 午夜欧美在线一二页| 午夜视频在线观看一区二区三区| 一区二区三区在线观看视频| 亚洲三级理论片| 亚洲一区二区三区美女| 亚洲成人免费视频| 免费日韩伦理电影| 日日摸夜夜添夜夜添亚洲女人| 午夜成人免费视频| 久久黄色级2电影| 国产成人精品www牛牛影视| 成人自拍视频在线观看| 91免费国产在线观看| 在线观看日韩电影| 欧美一区二区免费| 久久久久国产精品人| 亚洲精品久久久蜜桃| 日韩激情一二三区| 国产又粗又猛又爽又黄91精品| 国产精品99久久久久久宅男| 色欧美乱欧美15图片| 欧美一区三区二区| 中文字幕不卡三区| 亚洲国产成人精品视频| 国产一区二区三区| 色婷婷激情一区二区三区| 91精品在线一区二区| 久久久精品国产免费观看同学| 怡红院av一区二区三区| 秋霞av亚洲一区二区三| av电影天堂一区二区在线| 欧美老年两性高潮| 国产精品视频一区二区三区不卡| 亚洲与欧洲av电影| 成人午夜激情影院| 精品久久国产97色综合| 欧美激情中文不卡| 久久综合九色综合97婷婷| 久久久一区二区| 日韩精品视频网| 色综合久久九月婷婷色综合| 2020国产精品久久精品美国| 亚洲一区二区三区中文字幕 | 国产精品久久久久久久久果冻传媒| 午夜国产精品一区| 在线观看亚洲精品| 国产精品国产三级国产专播品爱网 | 亚洲一卡二卡三卡四卡五卡| 东方欧美亚洲色图在线| 欧美成人女星排行榜| 日韩精品电影在线观看| 欧美日韩中文一区| 一区二区三区四区蜜桃| 成人av在线网站| 亚洲色图清纯唯美| 97成人超碰视| 亚洲午夜日本在线观看| 欧美专区亚洲专区| 亚洲国产成人高清精品| 精品视频免费看| 国产精品久久久久影院色老大| 亚洲国产精品一区二区www| 色综合一个色综合亚洲| 亚洲视频资源在线| 91激情五月电影| 丝瓜av网站精品一区二区| 日韩一区二区三区在线| 精品一区二区在线免费观看| 久久看人人爽人人| 成人免费高清视频在线观看| 一区二区中文视频| 欧美日韩三级视频| 国产一区二区三区黄视频| 日本一区二区三区电影| 日本高清无吗v一区| 日韩av中文字幕一区二区三区| 精品国产亚洲一区二区三区在线观看| 国产精品一级在线| 亚洲国产精品久久艾草纯爱| 精品国精品国产| 91国在线观看| 国产麻豆视频一区| 亚洲成人av一区| 国产无遮挡一区二区三区毛片日本| 91在线观看免费视频| 伦理电影国产精品| 亚洲色图色小说| 久久综合999| 91精品国产免费久久综合| 99久久伊人精品| 国内久久精品视频| 亚洲福中文字幕伊人影院| 国产欧美一区二区三区鸳鸯浴 | 国产精品一区专区| 午夜久久久影院| 亚洲精品你懂的| 国产欧美日韩精品一区| 精品久久久久久久久久久久久久久| 91在线精品秘密一区二区| 国产伦精品一区二区三区视频青涩| 亚洲国产欧美在线人成| 亚洲欧美电影院|