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

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

?? untgz.c

?? emacs的一個非常有用的插件,叫xrefactory,可以實現source insight里的那種函數跳轉.和cscope(跳回來不方便)配合使用,非常的不錯.
?? C
字號:
/* * untgz.c -- Display contents and/or extract file from * a gzip'd TAR file * written by "Pedro A. Aranda Guti\irrez" <paag@tid.es> * adaptation to Unix by Jean-loup Gailly <jloup@gzip.org> */#include <stdio.h>#include <stdlib.h>#include <string.h>#include <time.h>#include <errno.h>#include <fcntl.h>#ifdef unix# include <unistd.h>#else# include <direct.h># include <io.h>#endif#include "zlib.h"#ifdef WIN32#  ifndef F_OK#    define F_OK (0)#  endif#  ifdef _MSC_VER#    define mkdir(dirname,mode) _mkdir(dirname)#    define strdup(str)         _strdup(str)#    define unlink(fn)          _unlink(fn)#    define access(path,mode)   _access(path,mode)#  else#    define mkdir(dirname,mode) _mkdir(dirname)#  endif#else#  include <utime.h>#endif/* Values used in typeflag field.  */#define REGTYPE	 '0'		/* regular file */#define AREGTYPE '\0'		/* regular file */#define LNKTYPE  '1'		/* link */#define SYMTYPE  '2'		/* reserved */#define CHRTYPE  '3'		/* character special */#define BLKTYPE  '4'		/* block special */#define DIRTYPE  '5'		/* directory */#define FIFOTYPE '6'		/* FIFO special */#define CONTTYPE '7'		/* reserved */#define BLOCKSIZE 512struct tar_header{				/* byte offset */  char name[100];		/*   0 */  char mode[8];			/* 100 */  char uid[8];			/* 108 */  char gid[8];			/* 116 */  char size[12];		/* 124 */  char mtime[12];		/* 136 */  char chksum[8];		/* 148 */  char typeflag;		/* 156 */  char linkname[100];		/* 157 */  char magic[6];		/* 257 */  char version[2];		/* 263 */  char uname[32];		/* 265 */  char gname[32];		/* 297 */  char devmajor[8];		/* 329 */  char devminor[8];		/* 337 */  char prefix[155];		/* 345 */				/* 500 */};union tar_buffer {  char               buffer[BLOCKSIZE];  struct tar_header  header;};enum { TGZ_EXTRACT = 0, TGZ_LIST };static char *TGZfname	OF((const char *));void TGZnotfound	OF((const char *));int getoct		OF((char *, int));char *strtime		OF((time_t *));int ExprMatch		OF((char *,char *));int makedir		OF((char *));int matchname		OF((int,int,char **,char *));void error		OF((const char *));int  tar		OF((gzFile, int, int, int, char **));void help		OF((int));int main		OF((int, char **));char *prog;/* This will give a benign warning */static char *TGZprefix[] = { "\0", ".tgz", ".tar.gz", ".tar", NULL };/* Return the real name of the TGZ archive *//* or NULL if it does not exist. */static char *TGZfname OF((const char *fname)){  static char buffer[1024];  int origlen,i;    strcpy(buffer,fname);  origlen = strlen(buffer);  for (i=0; TGZprefix[i]; i++)    {       strcpy(buffer+origlen,TGZprefix[i]);       if (access(buffer,F_OK) == 0)         return buffer;    }  return NULL;}/* error message for the filename */void TGZnotfound OF((const char *fname)){  int i;  fprintf(stderr,"%s : couldn't find ",prog);  for (i=0;TGZprefix[i];i++)    fprintf(stderr,(TGZprefix[i+1]) ? "%s%s, " : "or %s%s\n",            fname,            TGZprefix[i]);  exit(1);}/* help functions */int getoct(char *p,int width){  int result = 0;  char c;    while (width --)    {      c = *p++;      if (c == ' ')	continue;      if (c == 0)	break;      result = result * 8 + (c - '0');    }  return result;}char *strtime (time_t *t){  struct tm   *local;  static char result[32];  local = localtime(t);  sprintf(result,"%2d/%02d/%4d %02d:%02d:%02d",	  local->tm_mday, local->tm_mon+1, local->tm_year+1900,	  local->tm_hour, local->tm_min,   local->tm_sec);  return result;}/* regular expression matching */#define ISSPECIAL(c) (((c) == '*') || ((c) == '/'))int ExprMatch(char *string,char *expr){  while (1)    {      if (ISSPECIAL(*expr))	{	  if (*expr == '/')	    {	      if (*string != '\\' && *string != '/')		return 0;	      string ++; expr++;	    }	  else if (*expr == '*')	    {	      if (*expr ++ == 0)		return 1;	      while (*++string != *expr)		if (*string == 0)		  return 0;	    }	}      else	{	  if (*string != *expr)	    return 0;	  if (*expr++ == 0)	    return 1;	  string++;	}    }}/* recursive make directory *//* abort if you get an ENOENT errno somewhere in the middle *//* e.g. ignore error "mkdir on existing directory" *//* *//* return 1 if OK *//*        0 on error */int makedir (char *newdir){  char *buffer = strdup(newdir);  char *p;  int  len = strlen(buffer);    if (len <= 0) {    free(buffer);    return 0;  }  if (buffer[len-1] == '/') {    buffer[len-1] = '\0';  }  if (mkdir(buffer, 0775) == 0)    {      free(buffer);      return 1;    }  p = buffer+1;  while (1)    {      char hold;            while(*p && *p != '\\' && *p != '/')	p++;      hold = *p;      *p = 0;      if ((mkdir(buffer, 0775) == -1) && (errno == ENOENT))	{	  fprintf(stderr,"%s: couldn't create directory %s\n",prog,buffer);	  free(buffer);	  return 0;	}      if (hold == 0)	break;      *p++ = hold;    }  free(buffer);  return 1;}int matchname (int arg,int argc,char **argv,char *fname){  if (arg == argc)		/* no arguments given (untgz tgzarchive) */    return 1;  while (arg < argc)    if (ExprMatch(fname,argv[arg++]))      return 1;  return 0; /* ignore this for the moment being */}/* Tar file list or extract */int tar (gzFile in,int action,int arg,int argc,char **argv){  union  tar_buffer buffer;  int    len;  int    err;  int    getheader = 1;  int    remaining = 0;  FILE   *outfile = NULL;  char   fname[BLOCKSIZE];  time_t tartime;    if (action == TGZ_LIST)    printf("     day      time     size                       file\n"	   " ---------- -------- --------- -------------------------------------\n");  while (1)    {      len = gzread(in, &buffer, BLOCKSIZE);      if (len < 0)	error (gzerror(in, &err));      /*       * Always expect complete blocks to process       * the tar information.       */      if (len != BLOCKSIZE)	error("gzread: incomplete block read");            /*       * If we have to get a tar header       */      if (getheader == 1)	{	  /*	   * if we met the end of the tar	   * or the end-of-tar block,	   * we are done	   */	  if ((len == 0)  || (buffer.header.name[0]== 0)) break;	  tartime = (time_t)getoct(buffer.header.mtime,12);	  strcpy(fname,buffer.header.name);	  	  switch (buffer.header.typeflag)	    {	    case DIRTYPE:	      if (action == TGZ_LIST)		printf(" %s     <dir> %s\n",strtime(&tartime),fname);	      if (action == TGZ_EXTRACT)		makedir(fname);	      break;	    case REGTYPE:	    case AREGTYPE:	      remaining = getoct(buffer.header.size,12);	      if (action == TGZ_LIST)		printf(" %s %9d %s\n",strtime(&tartime),remaining,fname);	      if (action == TGZ_EXTRACT)		{		  if ((remaining) && (matchname(arg,argc,argv,fname)))		    {		      outfile = fopen(fname,"wb");		      if (outfile == NULL) {			/* try creating directory */			char *p = strrchr(fname, '/');			if (p != NULL) {			  *p = '\0';			  makedir(fname);			  *p = '/';			  outfile = fopen(fname,"wb");			}		      }		      fprintf(stderr,			      "%s %s\n",			      (outfile) ? "Extracting" : "Couldn't create",			      fname);		    }		  else		    outfile = NULL;		}	      /*	       * could have no contents	       */	      getheader = (remaining) ? 0 : 1;	      break;	    default:	      if (action == TGZ_LIST)		printf(" %s     <---> %s\n",strtime(&tartime),fname);	      break;	    }	}      else	{	  unsigned int bytes = (remaining > BLOCKSIZE) ? BLOCKSIZE : remaining;	  if ((action == TGZ_EXTRACT) && (outfile != NULL))	    {	      if (fwrite(&buffer,sizeof(char),bytes,outfile) != bytes)		{		  fprintf(stderr,"%s : error writing %s skipping...\n",prog,fname);		  fclose(outfile);		  unlink(fname);		}	    }	  remaining -= bytes;	  if (remaining == 0)	    {	      getheader = 1;	      if ((action == TGZ_EXTRACT) && (outfile != NULL))		{#ifdef WIN32		  HANDLE hFile;		  FILETIME ftm,ftLocal;		  SYSTEMTIME st;		  struct tm localt; 		  fclose(outfile);		  localt = *localtime(&tartime);		  hFile = CreateFile(fname, GENERIC_READ | GENERIC_WRITE,				     0, NULL, OPEN_EXISTING, 0, NULL);		  		  st.wYear = (WORD)localt.tm_year+1900;		  st.wMonth = (WORD)localt.tm_mon;		  st.wDayOfWeek = (WORD)localt.tm_wday;		  st.wDay = (WORD)localt.tm_mday;		  st.wHour = (WORD)localt.tm_hour;		  st.wMinute = (WORD)localt.tm_min;		  st.wSecond = (WORD)localt.tm_sec;		  st.wMilliseconds = 0;		  SystemTimeToFileTime(&st,&ftLocal);		  LocalFileTimeToFileTime(&ftLocal,&ftm);		  SetFileTime(hFile,&ftm,NULL,&ftm);		  CloseHandle(hFile);		  outfile = NULL;#else		  struct utimbuf settime;		  settime.actime = settime.modtime = tartime;		  fclose(outfile);		  outfile = NULL;		  utime(fname,&settime);#endif		}	    }	}    }    if (gzclose(in) != Z_OK)    error("failed gzclose");  return 0;}/* =========================================================== */void help(int exitval){  fprintf(stderr,	  "untgz v 0.1\n"	  " an sample application of zlib 1.0.4\n\n"          "Usage : untgz TGZfile            to extract all files\n"          "        untgz TGZfile fname ...  to extract selected files\n"          "        untgz -l TGZfile         to list archive contents\n"          "        untgz -h                 to display this help\n\n");  exit(exitval);}void error(const char *msg){    fprintf(stderr, "%s: %s\n", prog, msg);    exit(1);}/* ====================================================================== */int _CRT_glob = 0;	/* disable globbing of the arguments */int main(int argc,char **argv){    int 	action = TGZ_EXTRACT;    int 	arg = 1;    char	*TGZfile;    gzFile	*f;        prog = strrchr(argv[0],'\\');    if (prog == NULL)      {	prog = strrchr(argv[0],'/');	if (prog == NULL)	  {	    prog = strrchr(argv[0],':');	    if (prog == NULL)	      prog = argv[0];	    else	      prog++;	  }	else	  prog++;      }    else      prog++;        if (argc == 1)      help(0);    if (strcmp(argv[arg],"-l") == 0)      {	action = TGZ_LIST;	if (argc == ++arg)	  help(0);      }    else if (strcmp(argv[arg],"-h") == 0)      {	help(0);      }    if ((TGZfile = TGZfname(argv[arg])) == NULL)      TGZnotfound(argv[arg]);                ++arg;    if ((action == TGZ_LIST) && (arg != argc))      help(1);/* *  Process the TGZ file */    switch(action)      {      case TGZ_LIST:      case TGZ_EXTRACT:	f = gzopen(TGZfile,"rb");	if (f == NULL)	  {	    fprintf(stderr,"%s: Couldn't gzopen %s\n",		    prog,		    TGZfile);	    return 1;	  }	exit(tar(f, action, arg, argc, argv));      break;	      default:	error("Unknown option!");	exit(1);      }    return 0;}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
一区二区三区在线免费观看| 麻豆免费看一区二区三区| 国产一区二区在线观看免费| 欧美一区二区精品| 人人超碰91尤物精品国产| 91精品国产手机| 国产精品综合视频| 最新日韩在线视频| 欧美在线你懂得| 五月天一区二区| 精品国产三级a在线观看| 国产精品综合久久| 亚洲三级在线免费观看| 538在线一区二区精品国产| 韩国女主播一区二区三区| 国产欧美一区视频| 欧美日韩一级片在线观看| 韩国一区二区三区| 亚洲午夜羞羞片| 国产日韩av一区二区| 欧美日韩在线直播| 成人丝袜18视频在线观看| 一区二区三区四区在线播放 | 欧美成人bangbros| 成人av在线播放网站| 天天av天天翘天天综合网色鬼国产 | 亚洲一区二区三区激情| 精品国产乱码久久| 欧美精品xxxxbbbb| 91在线观看地址| 国产乱码精品一区二区三区av| 亚洲精品写真福利| 国产精品视频观看| 91精品国产综合久久久久久久久久| 成人伦理片在线| 国产精品综合av一区二区国产馆| 亚洲国产精品久久不卡毛片| 国产精品短视频| 欧美激情一区二区三区全黄| 日韩一级在线观看| 91精品久久久久久蜜臀| 色狠狠一区二区三区香蕉| aaa欧美色吧激情视频| www.99精品| 日本丰满少妇一区二区三区| 91色九色蝌蚪| 欧美日韩视频专区在线播放| 欧美影视一区二区三区| 在线精品视频免费观看| 欧美日韩亚洲丝袜制服| 日韩一区二区免费视频| 国产精品久线观看视频| 久久伊人中文字幕| 久久精品亚洲国产奇米99| 久久一区二区三区四区| 精品国产在天天线2019| 久久九九国产精品| 亚洲精品国产第一综合99久久| 亚洲小少妇裸体bbw| 免费观看一级特黄欧美大片| 国产成人在线视频播放| 欧美三级中文字| 久久亚洲精精品中文字幕早川悠里 | 日韩电影在线免费看| 激情图区综合网| 91麻豆自制传媒国产之光| 欧美日韩一区二区在线观看视频| 日韩亚洲欧美在线| 久久精品久久99精品久久| 99re热视频这里只精品| 67194成人在线观看| 日本午夜精品一区二区三区电影| 国产一区二区三区综合| 欧美在线啊v一区| 中文幕一区二区三区久久蜜桃| 日韩精品亚洲一区| 在线电影院国产精品| 精品久久人人做人人爽| 亚洲精品乱码久久久久久久久 | 久久久精品人体av艺术| 国产麻豆9l精品三级站| 成人av第一页| 亚洲人123区| 69p69国产精品| 国内精品伊人久久久久av一坑| 久久亚洲私人国产精品va媚药| 不卡大黄网站免费看| 日韩一区二区中文字幕| 韩国v欧美v日本v亚洲v| 欧美精品色综合| 日韩国产欧美在线观看| 欧美日韩一二三区| 亚洲黄色免费电影| 色一区在线观看| 综合网在线视频| 高清久久久久久| 国产欧美日韩不卡| 国产1区2区3区精品美女| 国产视频视频一区| 国产九色精品成人porny| 日韩欧美自拍偷拍| 国内成人精品2018免费看| 欧美成人女星排名| 国产麻豆成人传媒免费观看| 久久视频一区二区| 欧美主播一区二区三区| 精品国产免费一区二区三区香蕉| 视频精品一区二区| 国产精品色婷婷| 在线电影院国产精品| 波多野结衣的一区二区三区| 亚洲永久精品大片| 久久久久久久综合色一本| 色国产精品一区在线观看| 麻豆精品精品国产自在97香蕉| 国产亚洲va综合人人澡精品 | 国产一区二区三区四区五区美女 | 91精品国产欧美日韩| 国产69精品久久99不卡| 日韩主播视频在线| 亚洲美女免费在线| 国产日韩欧美综合一区| 日韩一区二区三区电影| 成人av中文字幕| 久久精品国产亚洲a| 一区二区三区日韩欧美| 国产精品入口麻豆原神| 中文字幕第一页久久| 欧美色爱综合网| 亚洲一区二区中文在线| 亚洲黄网站在线观看| 亚洲电影在线播放| 麻豆精品在线视频| 国产麻豆视频一区二区| 色综合天天综合网天天看片| 欧美三级韩国三级日本三斤 | 在线观看不卡一区| 色系网站成人免费| 在线视频国内自拍亚洲视频| 91网页版在线| 在线观看日韩精品| 在线播放日韩导航| 精品理论电影在线| 国产精品欧美综合在线| 国产精品久久99| 亚洲最新在线观看| 日韩综合小视频| 久久99久久久久久久久久久| 国产乱国产乱300精品| 风间由美一区二区三区在线观看| 国产成人激情av| 在线免费观看日本欧美| 717成人午夜免费福利电影| 日韩精品影音先锋| 中文字幕一区二区三区四区不卡| 亚洲精品国产无天堂网2021| 美女尤物国产一区| 一本大道久久a久久精品综合| 欧美一级黄色片| 亚洲精品国产一区二区精华液| 亚洲国产综合人成综合网站| 国产露脸91国语对白| 在线看一区二区| 国产精品久久久久久亚洲伦| 天天影视色香欲综合网老头| www.在线欧美| 国产婷婷色一区二区三区四区| 亚洲午夜精品在线| av不卡免费在线观看| 国产午夜久久久久| 国内偷窥港台综合视频在线播放| av电影在线观看一区| 国产亚洲精品精华液| 免费在线观看视频一区| 精品视频在线看| 亚洲韩国精品一区| 色婷婷av一区| 亚洲男同1069视频| 色综合久久中文字幕综合网| 中文字幕av一区二区三区高 | |精品福利一区二区三区| 国产精品白丝av| 久久精品一区二区| 成人免费视频app| 国产精品―色哟哟| fc2成人免费人成在线观看播放 | 91精品国产麻豆国产自产在线| 日韩精品国产欧美| 欧美本精品男人aⅴ天堂| 国产精品原创巨作av| 亚洲欧美怡红院| 欧美日韩视频第一区| 国产一区二区免费看| 亚洲婷婷综合色高清在线| 91精品国产品国语在线不卡| 国产精品一区二区免费不卡| 亚洲精品高清视频在线观看| 精品嫩草影院久久| 欧美午夜理伦三级在线观看| 国产成人在线看|