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

? 歡迎來(lái)到蟲(chóng)蟲(chóng)下載站! | ?? 資源下載 ?? 資源專(zhuān)輯 ?? 關(guān)于我們
? 蟲(chóng)蟲(chóng)下載站

?? gun.c

?? minix操作系統(tǒng)最新版本(3.1.1)的源代碼
?? C
?? 第 1 頁(yè) / 共 2 頁(yè)
字號(hào):
/* 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 */

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品88888| www.视频一区| 日韩精品免费专区| 亚洲国产色一区| 亚洲一区二区视频在线| 亚洲国产日韩精品| 一区二区三区免费看视频| 亚洲欧美偷拍卡通变态| 欧美色综合网站| 在线免费观看日韩欧美| 欧美在线小视频| 欧美女孩性生活视频| 777午夜精品免费视频| 日韩一区二区三区四区 | 777奇米四色成人影色区| 欧美日韩国产综合一区二区三区| 欧美日韩国产色站一区二区三区| 欧美日韩视频不卡| 日韩久久久久久| 久久久精品影视| 中文字幕中文在线不卡住| 一区二区三区四区不卡视频| 丝袜亚洲另类欧美综合| 蜜桃久久精品一区二区| 国产成人鲁色资源国产91色综| 丁香婷婷综合五月| 在线精品视频一区二区| 91精品欧美综合在线观看最新| 日韩精品一区二区在线| 亚洲国产精品成人综合| 亚洲精品一二三| 日韩专区欧美专区| 国产一区二区电影| 色狠狠色狠狠综合| 日韩午夜av电影| 欧美极品xxx| 亚洲国产综合91精品麻豆| 久国产精品韩国三级视频| www.成人网.com| 国产午夜亚洲精品羞羞网站| 日韩欧美激情四射| 精品一区二区三区免费播放| 粉嫩嫩av羞羞动漫久久久| 色综合天天在线| 337p亚洲精品色噜噜狠狠| 久久综合九色综合欧美98| 中文字幕在线不卡视频| 日韩激情视频在线观看| 丁香婷婷综合五月| 69p69国产精品| 国产三级欧美三级| 日日夜夜精品视频天天综合网| 国产一区二区美女诱惑| 色屁屁一区二区| 久久精品视频在线看| 亚洲一区二区在线视频| 国产成人av一区二区三区在线观看| 91啦中文在线观看| 337p日本欧洲亚洲大胆精品| 自拍偷在线精品自拍偷无码专区| 人妖欧美一区二区| 99在线精品免费| 精品美女一区二区| 亚洲一区二区3| 成人听书哪个软件好| 91精品国产综合久久久久久久久久| 久久久久久99精品| 一个色在线综合| 国产一区二区三区最好精华液| 91免费在线播放| 久久久影院官网| 美女性感视频久久| 在线观看91视频| 日韩理论片在线| 国产电影一区在线| 精品久久国产老人久久综合| 亚洲在线视频免费观看| 9l国产精品久久久久麻豆| 久久久久久久久久久久久女国产乱 | 欧美一级片免费看| 玉足女爽爽91| 一本色道综合亚洲| 日韩毛片高清在线播放| 国产电影一区在线| 久久久久国产精品免费免费搜索| 日韩国产欧美视频| 欧美日韩视频不卡| 亚洲一级二级三级在线免费观看| 91蜜桃网址入口| 国产精品三级av在线播放| 国产一区二区美女诱惑| 精品粉嫩超白一线天av| 蜜臀久久久久久久| 欧美猛男男办公室激情| 亚洲一级二级在线| 在线日韩一区二区| 怡红院av一区二区三区| 色哟哟一区二区| 一区二区三区毛片| 欧洲另类一二三四区| 一级日本不卡的影视| 91精品福利在线| 伊人夜夜躁av伊人久久| 欧美综合天天夜夜久久| 亚洲国产成人精品视频| 欧美日韩亚洲不卡| 偷窥国产亚洲免费视频| 7777女厕盗摄久久久| 蜜臀国产一区二区三区在线播放| 91精品国产综合久久久久久| 日韩高清欧美激情| 日韩精品一区二区三区老鸭窝| 蜜芽一区二区三区| 久久久五月婷婷| 国产成人av一区二区三区在线观看| 国产欧美日韩三区| 91麻豆蜜桃一区二区三区| 亚洲一区视频在线| 91精品蜜臀在线一区尤物| 久久99精品一区二区三区 | 亚洲一区二区三区免费视频| 欧美在线高清视频| 日韩影院免费视频| 精品国产麻豆免费人成网站| 国产成人综合视频| 亚洲视频在线一区二区| 欧美性色综合网| 九九九精品视频| 国产精品国产三级国产三级人妇 | 色婷婷激情一区二区三区| 亚洲午夜久久久久中文字幕久| 91精品国产综合久久精品性色| 久久99精品久久久久久动态图| 国产目拍亚洲精品99久久精品| 99国产精品久| 视频一区二区三区在线| 欧美精品一区二区在线观看| 波多野结衣在线一区| 香蕉成人伊视频在线观看| 久久一区二区三区四区| 97精品国产97久久久久久久久久久久 | 性欧美大战久久久久久久久| 欧美成人猛片aaaaaaa| 成人免费高清视频| 午夜电影一区二区| 国产日本一区二区| 91国产精品成人| 国产一区二三区| 一区二区三区四区高清精品免费观看| 日韩一区二区三区高清免费看看| 国产精品白丝jk白祙喷水网站| 亚洲精选免费视频| 欧美xxxx在线观看| 日本高清不卡一区| 国产综合久久久久影院| 欧美成人高清电影在线| 亚洲欧美aⅴ...| 成人在线视频一区二区| 久久久久99精品国产片| 日韩电影一区二区三区四区| 不卡一区二区三区四区| 精品久久免费看| 欧美在线免费观看视频| 国产精品中文字幕日韩精品| 亚洲综合色网站| 国产日产亚洲精品系列| 欧美日韩国产综合一区二区| 国产成人一级电影| 日产国产高清一区二区三区| 国产精品久久看| 精品国免费一区二区三区| 色偷偷成人一区二区三区91| 国产一区欧美日韩| 日日欢夜夜爽一区| 亚洲另类在线制服丝袜| 国产欧美va欧美不卡在线| 欧美电影免费观看完整版 | 欧美一三区三区四区免费在线看 | 国产无人区一区二区三区| 欧美高清你懂得| 色屁屁一区二区| 国产精品18久久久久久久久 | 欧美日本高清视频在线观看| 夜色激情一区二区| 欧美日韩国产精品成人| 99国产精品国产精品毛片| 国产麻豆精品一区二区| 奇米一区二区三区av| 亚洲v中文字幕| 一区二区三区精品视频在线| 中文字幕综合网| 国产精品高清亚洲| 亚洲国产成人91porn| 亚洲欧美日韩在线| 国产精品乱人伦| 中文无字幕一区二区三区| 久久久久久久久久久黄色| 亚洲精品一区二区三区四区高清| 欧美一区二区日韩| 91精品麻豆日日躁夜夜躁|