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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? jartool.c

?? jar文件處理原程序
?? C
?? 第 1 頁 / 共 3 頁
字號(hào):
#endif    flags = UNPACK_UB2(file_header, LOC_EXTRA);#ifdef DEBUG        printf("Flags are %#hx\n", flags);#endif    method = UNPACK_UB2(file_header, LOC_COMP);#ifdef DEBUG    printf("Compression method is %#hx\n", method);#endif    /* if there isn't a data descriptor */    if(!(flags & 0x0008)){      crc = UNPACK_UB4(file_header, LOC_CRC);#ifdef DEBUG          printf("CRC is %x\n", crc);#endif    }    if(filename_len < fnlen){      if(filename != NULL)        free(filename);            filename = malloc(sizeof(ub1) * (fnlen + 1));      filename_len = fnlen + 1;    }    pb_read(&pbf, filename, fnlen);    filename[fnlen] = '\0';#ifdef DEBUG        printf("filename is %s\n", filename);#endif    if(file_num > 0){      handle = FALSE;            for(j = 0; j < file_num; j++)        if(strcmp(files[j], filename) == 0){          handle = TRUE;          break;        }    }    if(!handle)      f_fd = -1;    /* OK, there is some directory information in the file.  Nothing to do       but ensure the directory(s) exist, and create them if they don't.       What a pain! */    if(index(filename, '/') != NULL && handle){      /* Loop through all the directories in the path, (everything w/ a '/') */      ub1 *start = filename;      char *tmp_buff;      struct stat sbuf;      tmp_buff = malloc(sizeof(char) * strlen(filename));      for(;;){        ub1 *idx = index(start, '/');        if(idx == NULL)          break;        else if(idx == start){          start++;          continue;        }        start = idx + 1;        strncpy(tmp_buff, filename, (idx - filename));        tmp_buff[(idx - filename)] = '\0';#ifdef DEBUG            printf("checking the existance of %s\n", tmp_buff);#endif        if(stat(tmp_buff, &sbuf) < 0){          if(errno != ENOENT){            perror("stat");            exit(1);          }        } else if(S_ISDIR(sbuf.st_mode)){#ifdef DEBUG              printf("Directory exists\n");#endif          continue;        }else {          fprintf(stderr, "Hmmm.. %s exists but isn't a directory!\n",                  tmp_buff);          exit(1);        }        #ifdef DEBUG            printf("Making directory..\n");#endif        if(mkdir(tmp_buff, 0755) < 0){          perror("mkdir");          exit(1);        }        if(verbose && handle)          printf("%10s: %s/\n", "created", tmp_buff);      }      /* only a directory */      if(strlen(start) == 0)        dir = TRUE;#ifdef DEBUG          printf("Leftovers are \"%s\" (%d)\n", start, strlen(start));#endif      /* If the entry was just a directory, don't write to file, etc */      if(strlen(start) == 0)        f_fd = -1;      free(tmp_buff);    }    if(f_fd != -1 && handle){      f_fd = creat(filename, 00644);      if(f_fd < 0){        fprintf(stderr, "Error extracting JAR archive!\n");        perror(filename);        exit(1);      }    }    if(method != 8 && flags & 0x0008){      fprintf(stderr, "Error in JAR file! (not compressed but data desc.)\n");      exit(1);    }    if(method == 8 || flags & 0x0008){      if(seekable)        lseek(fd, eflen, SEEK_CUR);      else        consume(&pbf, eflen);            inflate_file(&pbf, f_fd, &ze);    } else {#ifdef DEBUG          printf("writing stored data.. (%d bytes)\n", csize);#endif      out_a = 0;      in_a = csize;      ze.crc = crc32(ze.crc, NULL, 0); /* initialize the crc */      while(out_a < csize){        rdamt = (in_a > RDSZ ? RDSZ : in_a);        if(pb_read(&pbf, rd_buff, rdamt) != rdamt){          perror("read");          exit(1);        }                ze.crc = crc32(ze.crc, (Bytef*)rd_buff, rdamt);        if(f_fd >= 0)          write(f_fd, rd_buff, rdamt);        out_a += rdamt;        in_a -= rdamt;#ifdef DEBUG            printf("%d bytes written\n", out_a);#endif      }      if(seekable)        lseek(fd, eflen, SEEK_CUR);      else        consume(&pbf, eflen);    }    /* if there is a data descriptor left, compare the CRC */    if(flags & 0x0008){      if(pb_read(&pbf, scratch, 16) != 16){        perror("read");        exit(1);      }      signature = UNPACK_UB4(scratch, 0);      if(signature != 0x08074b50){        fprintf(stderr, "Error! Missing data descriptor!\n");        exit(1);      }      crc = UNPACK_UB4(scratch, 4);    }    if(crc != ze.crc){      fprintf(stderr, "Error! CRCs do not match! Got %x, expected %x\n",              ze.crc, crc);      exit(1);    }    close(f_fd);    if(verbose && dir == FALSE && handle)      printf("%10s: %s\n",             (method == 8 ? "inflated" : "extracted"),             filename);  }  return 0;}int list_jar(int fd, char **files, int file_num){  int rdamt;  ub4 signature;  ub4 csize;  ub4 usize;  ub4 mdate;  ub4 tmp;  ub2 fnlen;  ub2 eflen;  ub2 clen;  ub2 flags;  ub2 method;  ub2 cen_size;  ub1 *filename = NULL;  ub1 scratch[16];  ub1 cen_header[46];  int filename_len = 0;  off_t size;  int i, j;  time_t tdate;  struct tm *s_tm;  char ascii_date[30];  zipentry ze;#ifdef DEBUG  printf("Listing jar file, looking for %d files\n", file_num);#endif  /* This should be the start of the central-header-end section */  if(seekable){    if(lseek(fd, -22, SEEK_END) == (off_t)-1){      perror("lseek");      exit(1);    }        if(read(fd, &tmp, sizeof(ub4)) != 4){      perror("read");      exit(1);    }        if(tmp != 0x06054b50){      fprintf(stderr, "Error in JAR file format. zip-style comment?\n");      exit(1);    }    if(lseek(fd, 6, SEEK_CUR) == (off_t)-1){      perror("lseek");      exit(1);    }      if(read(fd, &cen_size, 2) != 2){      perror("read");      exit(1);    }    /*   printf("%hu entries in central header\n", cen_size); */    if(lseek(fd, 4, SEEK_CUR) == (off_t)-1){      perror("lseek");      exit(1);    }    if(read(fd, &tmp, 4) != 4){      perror("read");      exit(1);    }    /*   printf("Central header offset = %d\n", tmp); */    if(lseek(fd, tmp, SEEK_SET) != tmp){      perror("lseek");      exit(1);    }    /* Loop through the entries in the central header */    for(i = 0; i < cen_size; i++){          if(read(fd, &cen_header, 46) != 46){        perror("read");        exit(1);      }      signature = UNPACK_UB4(cen_header, 0);      if(signature != 0x02014b50){        fprintf(stderr, "Error in JAR file! Cannot locate central header!\n");        exit(1);      }      usize = UNPACK_UB4(cen_header, CEN_USIZE);      fnlen = UNPACK_UB2(cen_header, CEN_FNLEN);      eflen = UNPACK_UB2(cen_header, CEN_EFLEN);      clen = UNPACK_UB2(cen_header, CEN_COMLEN);      /* If we're providing verbose output, we need to make an ASCII       * formatted version of the date. */      if(verbose){        mdate = UNPACK_UB4(cen_header, CEN_MODTIME);        tdate = dos2unixtime(mdate);        s_tm = localtime(&tdate);        strftime(ascii_date, 30, "%a %b %d %H:%M:%S %Z %Y", s_tm);      }      if(filename_len < fnlen){        if(filename != NULL)          free(filename);              filename = malloc(sizeof(ub1) * (fnlen + 1));        filename_len = fnlen + 1;      }          if(read(fd, filename, fnlen) != fnlen){        perror("read");        exit(1);      }      filename[fnlen] = '\0';          /* if the user specified a list of files on the command line,         we'll only display those, otherwise we'll display everything */      if(file_num > 0){        for(j = 0; j < file_num; j++)          if(strcmp(files[j], filename) == 0){            if(verbose)              printf("%6d %s %s\n", usize, ascii_date, filename);            else              printf("%s\n", filename);            break;          }      } else {        if(verbose)          printf("%6d %s %s\n", usize, ascii_date, filename);        else          printf("%s\n", filename);      }                        size = eflen + clen;      if(size > 0){        if(lseek(fd, size, SEEK_CUR) == (off_t)-1){          perror("lseek");          exit(1);        }      }    }  } else {    /* the file isn't seekable.. evil! */    pb_file pbf;    pb_init(&pbf, fd);    init_inflation();    for(;;){      if((rdamt = pb_read(&pbf, scratch, 4)) != 4){        perror("read");        break;      }            signature = UNPACK_UB4(scratch, 0);      #ifdef DEBUG      printf("signature is %x\n", signature);#endif            if(signature == 0x08074b50){#ifdef DEBUG        printf("skipping data descriptor\n");#endif        pb_read(&pbf, scratch, 12);        continue;      } else if(signature == 0x02014b50){#ifdef DEBUG        printf("Central header reached.. we're all done!\n");#endif        break;      }else if(signature != 0x04034b50){#ifdef DEBUG        printf("Ick! %#x\n", signature);#endif        break;      }            if((rdamt = pb_read(&pbf, (file_header + 4), 26)) != 26){        perror("read");        break;      }            csize = UNPACK_UB4(file_header, LOC_CSIZE);#ifdef DEBUG      printf("Compressed size is %u\n", csize);#endif            fnlen = UNPACK_UB2(file_header, LOC_FNLEN);#ifdef DEBUG      printf("Filename length is %hu\n", fnlen);#endif            eflen = UNPACK_UB2(file_header, LOC_EFLEN);#ifdef DEBUG      printf("Extra field length is %hu\n", eflen);#endif            method = UNPACK_UB2(file_header, LOC_COMP);#ifdef DEBUG      printf("Compression method is %#hx\n", method);#endif      flags = UNPACK_UB2(file_header, LOC_EXTRA);#ifdef DEBUG      printf("Flags are %#hx\n", flags);#endif            usize = UNPACK_UB4(file_header, LOC_USIZE);      /* If we're providing verbose output, we need to make an ASCII       * formatted version of the date. */      if(verbose){        mdate = UNPACK_UB4(file_header, LOC_MODTIME);        tdate = dos2unixtime(mdate);        s_tm = localtime(&tdate);        strftime(ascii_date, 30, "%a %b %d %H:%M:%S %Z %Y", s_tm);      }      if(filename_len < fnlen){        if(filename != NULL)          free(filename);                filename = malloc(sizeof(ub1) * (fnlen + 1));        filename_len = fnlen + 1;      }            pb_read(&pbf, filename, fnlen);      filename[fnlen] = '\0';            /* the header is at the end.  In a JAR file, this means that the data         happens to be compressed.  We have no choice but to inflate the         data */      if(flags & 0x0008){        size = eflen;        if(size > 0)          consume(&pbf, size);                if(method == 8){#ifdef DEBUG          printf("inflating %s\n", filename);#endif          inflate_file(&pbf, -1, &ze);          usize = ze.usize;        } else           printf("We're shit outta luck!\n");                } else {        size = csize + (eflen > 0 ? eflen : 0);        #ifdef DEBUG        printf("Skipping %d bytes\n", size);#endif        consume(&pbf, size);      }      /* print out the listing */      if(file_num > 0){        for(j = 0; j < file_num; j++)          if(strcmp(files[j], filename) == 0){            if(verbose)              printf("%6d %s %s\n", usize, ascii_date, filename);            else              printf("%s\n", filename);            break;          }      } else {        if(verbose)          printf("%6d %s %s\n", usize, ascii_date, filename);        else          printf("%s\n", filename);      }            }  }  return 0;}int consume(pb_file *pbf, int amt){  int tc = 0; /* total amount consumed */  ub1 buff[RDSZ];  int rdamt;#ifdef DEBUG  printf("Consuming %d bytes\n", amt);#endif  while(tc < amt){    rdamt = pb_read(pbf, buff, ((amt - tc) < RDSZ ? (amt - tc) : RDSZ));#ifdef DEBUG    printf("got %d bytes\n", rdamt);#endif    tc += rdamt;  }#ifdef DEBUG  printf("%d bytes consumed\n", tc);#endif  return 0;}void usage(char *filename){  fprintf(stderr, "Usage: %s {ctxuV}[vfm0M] [jar-file] [manifest-file] [-C dir] files ...\nOptions\n -c  create new archive\n -t  list table of contents for archive\n -x  extract named (or all) files from archive\n -u  update existing archive\n -V  display version information\n -v  generate verbose output on standard output\n -f  specify archive file name\n -m  include manifest information from specified manifest file\n -0  store only; use no ZIP compression\n -M  Do not create a manifest file for the entries\n -C  change to the specified directory and include the following file\nIf any file is a directory then it is processed recursively.\nThe manifest file name and the archive file name needs to be specified\nin the same order the 'm' and 'f' flags are specified.\n\nExample 1: to archive two class files into an archive called classes.jar: \n     jar cvf classes.jar Foo.class Bar.class \nExample 2: use an existing manifest file 'mymanifest' and archive all the\n     files in the foo/ directory into 'classes.jar': \n     jar cvfm classes.jar mymanifest -C foo/ .\n", filename);  exit(1);}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91在线精品一区二区三区| 日韩毛片在线免费观看| 亚洲国产精品av| 亚洲欧美一区二区三区极速播放| 亚洲精品日韩一| 毛片av一区二区三区| 国产成人一区二区精品非洲| 色丁香久综合在线久综合在线观看| 91精品国产一区二区三区蜜臀| 久久一留热品黄| 亚洲日本成人在线观看| 麻豆精品一区二区| 一本久久a久久精品亚洲| 欧美电影免费观看高清完整版在线 | 欧美亚洲尤物久久| 精品国产91洋老外米糕| 亚洲欧美另类小说视频| 狠狠久久亚洲欧美| 日本一区二区动态图| 亚洲国产日韩一区二区| 国产精品中文字幕日韩精品| 欧美亚一区二区| 国产色一区二区| 日韩av不卡在线观看| 91在线观看成人| 26uuu国产电影一区二区| 一区二区三区精品在线观看| 国产激情视频一区二区在线观看 | 亚洲人成影院在线观看| 日韩经典一区二区| 91网页版在线| 国产调教视频一区| 麻豆免费看一区二区三区| 91丨porny丨户外露出| 精品国产伦一区二区三区观看方式 | 亚洲国产欧美一区二区三区丁香婷| 国产精品一区一区| 9191久久久久久久久久久| 亚洲欧洲日韩综合一区二区| 激情五月激情综合网| 欧美人牲a欧美精品| 国产精品国产三级国产普通话99| 麻豆一区二区99久久久久| 欧美日韩亚洲另类| ...av二区三区久久精品| 国产真实乱子伦精品视频| 91精品国产麻豆| 亚洲美女一区二区三区| 国产91综合网| 久久久久一区二区三区四区| 欧美a级理论片| 欧美高清精品3d| 亚洲一区二区三区激情| 色婷婷激情久久| 亚洲色图自拍偷拍美腿丝袜制服诱惑麻豆| 国产精品久久久久婷婷二区次| 国产乱理伦片在线观看夜一区| 精品乱人伦小说| 久久精品免费看| 日韩欧美国产三级| 免费成人深夜小野草| 91精品国产一区二区三区香蕉 | 欧美精品在线观看播放| 亚洲永久免费av| 91精品1区2区| 亚洲福中文字幕伊人影院| 在线观看91视频| 亚洲国产精品久久久久婷婷884| 一本到高清视频免费精品| 自拍偷拍亚洲欧美日韩| 91免费版在线| 亚洲国产日日夜夜| 欧美久久一二三四区| 日韩精品欧美精品| 日韩一区二区视频在线观看| 蜜桃精品在线观看| 精品久久久久久久久久久院品网 | 精品少妇一区二区三区视频免付费 | 国产99精品国产| 中文字幕乱码一区二区免费| 成人午夜精品在线| 中文字幕一区日韩精品欧美| 色综合天天性综合| 亚洲一区二区免费视频| 欧美人牲a欧美精品| 日韩激情视频在线观看| 欧美sm美女调教| 成人性生交大片免费| 专区另类欧美日韩| 欧美美女一区二区在线观看| 奇米精品一区二区三区在线观看| 精品理论电影在线观看| 成人免费黄色大片| 一级中文字幕一区二区| 在线播放中文一区| 激情综合色播五月| 国产精品乱码人人做人人爱 | 亚洲欧美综合网| 色屁屁一区二区| 日日噜噜夜夜狠狠视频欧美人| 日韩精品一区二区三区在线| 国产91综合网| 亚洲国产一区视频| 精品黑人一区二区三区久久| 国产大陆亚洲精品国产| 亚洲精品高清在线观看| 日韩一级片在线观看| 成人精品一区二区三区四区| 亚洲一区二区视频| 欧美大片在线观看| 97se亚洲国产综合自在线| 午夜精品视频一区| 国产欧美一区二区在线观看| 色狠狠综合天天综合综合| 久久国产麻豆精品| 亚洲人午夜精品天堂一二香蕉| 欧美人动与zoxxxx乱| 国产成人在线观看免费网站| 亚洲国产一区二区视频| 久久久久久久久蜜桃| 色综合欧美在线视频区| 激情综合色综合久久综合| 一区二区三区不卡视频在线观看| 日韩精品一区二区三区三区免费 | 亚洲成人先锋电影| 久久精品欧美日韩精品 | 免费成人结看片| 亚洲视频电影在线| 精品区一区二区| 91蝌蚪porny九色| 精品亚洲成av人在线观看| 亚洲一区二区三区四区的 | 国产精品亚洲人在线观看| 亚洲成年人网站在线观看| 欧美高清在线一区| 日韩欧美第一区| 91国产精品成人| 成人视屏免费看| 久久99精品国产.久久久久久 | 色天天综合久久久久综合片| 精品一区二区av| 亚洲午夜精品一区二区三区他趣| 国产欧美视频一区二区三区| 91精品国产综合久久福利软件| 色婷婷综合久久久中文字幕| 国产伦精品一区二区三区视频青涩 | www.亚洲精品| 国产一区二区不卡在线| 日本欧美在线看| 亚洲国产一区二区视频| 亚洲人成网站在线| 国产精品久线在线观看| 久久精品亚洲精品国产欧美| 日韩视频在线观看一区二区| 在线观看91视频| 色妹子一区二区| 97se亚洲国产综合自在线| 国产aⅴ精品一区二区三区色成熟| 免费美女久久99| 婷婷成人激情在线网| 亚洲精品福利视频网站| 亚洲四区在线观看| 国产精品高潮呻吟| 国产精品国产三级国产普通话99| 久久精品亚洲一区二区三区浴池| 日本高清无吗v一区| 奇米影视在线99精品| 亚洲精品一区二区三区精华液| 日韩电影在线观看网站| 精品国产乱码久久久久久牛牛 | 久久女同精品一区二区| 免费不卡在线视频| 91精品欧美久久久久久动漫| 美腿丝袜亚洲一区| 亚洲国产精品精华液ab| 色综合天天做天天爱| 性做久久久久久| 日韩午夜在线播放| 91亚洲资源网| 黄色资源网久久资源365| 亚洲欧洲另类国产综合| 欧美日韩国产123区| 奇米精品一区二区三区四区 | 亚洲欧美另类综合偷拍| 不卡的av中国片| 精品影视av免费| 一区二区三区欧美激情| 精品国产露脸精彩对白| 欧美三区在线视频| 成人av在线资源网站| 日本高清不卡视频| 日本美女一区二区三区| 综合久久一区二区三区| 中文字幕不卡一区| 精品入口麻豆88视频| 欧美日韩成人在线| 一道本成人在线| 91网页版在线| 国产激情精品久久久第一区二区| 亚洲精品综合在线|