亚洲欧美第一页_禁久久精品乱码_粉嫩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一区二区三区免费野_久草精品视频
亚洲超碰精品一区二区| 顶级嫩模精品视频在线看| 亚洲成av人**亚洲成av**| 一区二区三区色| 亚洲欧美另类久久久精品| 国产精品国产三级国产有无不卡 | 国产精品一区二区无线| 久久99国产精品尤物| 久久99国产精品久久99| 紧缚奴在线一区二区三区| 国产老肥熟一区二区三区| 激情文学综合网| 国产成人精品亚洲日本在线桃色 | 精品少妇一区二区三区| 欧美精品一区二区三区在线播放 | 亚洲午夜免费电影| 午夜欧美一区二区三区在线播放| 首页综合国产亚洲丝袜| 另类成人小视频在线| 激情综合色综合久久综合| 国精产品一区一区三区mba桃花 | 亚洲视频网在线直播| 亚洲精选一二三| 亚洲成在线观看| 麻豆精品一区二区av白丝在线| 国产伦精一区二区三区| 99精品欧美一区二区三区综合在线| 成人高清av在线| 欧美日韩一区中文字幕| 精品人伦一区二区色婷婷| 久久精品男人天堂av| ...xxx性欧美| 亚洲高清不卡在线观看| 精品一区二区三区免费观看| 国产成人免费网站| 色综合网站在线| 91精品一区二区三区久久久久久 | 精品福利一区二区三区| 欧美国产激情二区三区| 一区二区三区不卡在线观看| 蜜臀av性久久久久蜜臀av麻豆| 国产白丝精品91爽爽久久| 91在线国内视频| 欧美日韩三级在线| 国产清纯美女被跳蛋高潮一区二区久久w| 国产精品每日更新在线播放网址| 亚洲一区二区三区视频在线播放| 韩国三级电影一区二区| 色婷婷一区二区三区四区| 日韩视频一区二区三区在线播放| 国产精品久久久久久久久果冻传媒| 午夜一区二区三区视频| 国产成人免费高清| 欧美精品自拍偷拍动漫精品| 国产三级久久久| 丝袜a∨在线一区二区三区不卡 | 精品理论电影在线| 亚洲综合一二区| 6080亚洲精品一区二区| 久久九九99视频| 丝袜国产日韩另类美女| 成人h动漫精品| 欧美va日韩va| 亚洲成人一区二区在线观看| 成人一区二区三区视频| 9191精品国产综合久久久久久| 亚洲欧美在线观看| 国产麻豆日韩欧美久久| 欧美一区二区视频在线观看2022 | 91蜜桃免费观看视频| 精品国产乱码久久久久久1区2区 | 北岛玲一区二区三区四区| 欧美一级生活片| 亚洲最大成人综合| 成人综合婷婷国产精品久久蜜臀| 欧美大片日本大片免费观看| 亚洲一级不卡视频| 91视频免费播放| 国产欧美日韩三区| 极品美女销魂一区二区三区| 91精品国产综合久久精品| 一区二区三区不卡视频在线观看 | 成人性色生活片免费看爆迷你毛片| 久久久久久久久97黄色工厂| 国产99一区视频免费| 51精品国自产在线| 青娱乐精品在线视频| 久久品道一品道久久精品| 在线成人av网站| 色婷婷久久久久swag精品| 99视频精品免费视频| 中文字幕精品一区二区精品绿巨人| 另类小说综合欧美亚洲| 4438x成人网最大色成网站| 亚洲一区二区三区在线播放 | 欧美人牲a欧美精品| 亚洲欧美电影院| 91香蕉视频mp4| 中文字幕一区二区三区四区| 不卡av电影在线播放| 国产欧美日韩精品一区| 国产成人综合精品三级| 国产蜜臀av在线一区二区三区| 国产成人精品免费在线| 国产亚洲欧美日韩日本| 成人免费三级在线| 中文字幕日韩一区| 一本色道a无线码一区v| 亚洲伦在线观看| 欧美在线免费视屏| 日产国产欧美视频一区精品| 欧美一区二区三区四区五区| 日本欧洲一区二区| 精品国产凹凸成av人导航| 精彩视频一区二区三区| 国产亚洲视频系列| www.久久精品| 亚洲图片欧美视频| 欧美一区二区三区小说| 国产乱子轮精品视频| 中文字幕二三区不卡| 99re这里都是精品| 亚洲成人福利片| 精品国产精品网麻豆系列| 成人手机电影网| 亚洲精品日韩一| 制服丝袜国产精品| 激情综合亚洲精品| 亚洲欧美自拍偷拍色图| 欧美日韩激情一区二区三区| 日本在线不卡视频| 久久久久久久久99精品| 色欧美88888久久久久久影院| 亚洲1区2区3区视频| 欧美日本在线观看| 亚洲午夜国产一区99re久久| 另类成人小视频在线| 三级成人在线视频| 17c精品麻豆一区二区免费| 在线观看精品一区| 在线精品视频一区二区| 欧美日韩不卡在线| 国产91精品在线观看| 亚洲图片欧美激情| 欧美日韩国产美女| 国产91高潮流白浆在线麻豆| 亚洲视频图片小说| 欧美一级免费大片| 成人精品国产免费网站| 丝袜国产日韩另类美女| 中文字幕免费在线观看视频一区| 欧美色网一区二区| 国产不卡视频一区二区三区| 亚洲福利一区二区三区| 日本一区二区免费在线| 欧美精品vⅰdeose4hd| 成人免费视频一区二区| 日韩av中文字幕一区二区三区| 国产精品成人免费精品自在线观看| 欧美日本一道本| 91在线精品一区二区三区| 蜜臀av性久久久久av蜜臀妖精| 亚洲丝袜制服诱惑| 日韩亚洲欧美综合| 欧美性大战久久久久久久| 国产精品99久久久| 视频在线观看一区二区三区| 综合中文字幕亚洲| 久久久噜噜噜久久中文字幕色伊伊| 色狠狠一区二区三区香蕉| 国产精品一区专区| 日韩精品每日更新| 一区二区三区中文字幕在线观看| 久久精品亚洲国产奇米99| 3d动漫精品啪啪1区2区免费| 97久久超碰国产精品电影| 国产在线精品视频| 日韩国产精品久久久久久亚洲| 亚洲乱码中文字幕综合| 日韩精品影音先锋| 欧美日韩中文字幕一区| 91麻豆视频网站| 成人午夜视频免费看| 国内精品写真在线观看| 日日摸夜夜添夜夜添精品视频 | 欧美国产精品一区二区| 精品国产一区二区三区av性色| 不卡影院免费观看| 亚洲欧洲综合另类| 国产精品自拍av| 一色屋精品亚洲香蕉网站| 紧缚捆绑精品一区二区| 日韩精品一区二区三区视频播放| 9久草视频在线视频精品| 日韩一区二区三区电影在线观看| 毛片av一区二区| 免费成人小视频| 国产一区二区剧情av在线| 色中色一区二区| av在线播放不卡|