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

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

?? entry.c

?? ctags-5.5.4.tar.gz,一個很好的代碼開發(fā)以及編輯源碼
?? C
?? 第 1 頁 / 共 2 頁
字號:
		    addPseudoTags ();	    }	}	if (TagFile.fp == NULL)	{	    error (FATAL | PERROR, "cannot open tag file");	    exit (1);	}    }    if (TagsToStdout)	TagFile.directory = eStrdup (CurrentDirectory);    else	TagFile.directory = absoluteDirname (TagFile.name);}#ifdef USE_REPLACEMENT_TRUNCATE/*  Replacement for missing library function. */static int replacementTruncate (const char *const name, const long size){    char *tempName = NULL;    FILE *fp = tempFile ("w", &tempName);    fclose (fp);    copyFile (name, tempName, size);    copyFile (tempName, name, WHOLE_FILE);    remove (tempName);    eFree (tempName);    return 0;}#endifstatic void sortTagFile (void){    if (TagFile.numTags.added > 0L)    {	if (Option.sorted != SO_UNSORTED)	{	    verbose ("sorting tag file\n");#ifdef EXTERNAL_SORT	    externalSortTags (TagsToStdout);#else	    internalSortTags (TagsToStdout);#endif	}	else if (TagsToStdout)	    catFile (tagFileName ());    }    if (TagsToStdout)	remove (tagFileName ());		/* remove temporary file */}static void resizeTagFile (const long newSize){    int result;#ifdef USE_REPLACEMENT_TRUNCATE    result = replacementTruncate (TagFile.name, newSize);#else# ifdef HAVE_TRUNCATE    result = truncate (TagFile.name, (off_t) newSize);# else    const int fd = open (TagFile.name, O_RDWR);    if (fd == -1)	result = -1;    else    {#  ifdef HAVE_FTRUNCATE	result = ftruncate (fd, (off_t) newSize);#  else#   ifdef HAVE_CHSIZE	result = chsize (fd, newSize);#   endif#  endif	close (fd);    }# endif#endif    if (result == -1)	fprintf (errout, "Cannot shorten tag file: errno = %d\n", errno);}static void writeEtagsIncludes (FILE *const fp){    if (Option.etagsInclude)    {	unsigned int i;	for (i = 0  ;  i < stringListCount (Option.etagsInclude)  ;  ++i)	{	    vString *item = stringListItem (Option.etagsInclude, i);	    fprintf (fp, "\f\n%s,include\n", vStringValue (item));	}    }}extern void closeTagFile (const boolean resize){    long desiredSize, size;    if (Option.etags)	writeEtagsIncludes (TagFile.fp);    desiredSize = ftell (TagFile.fp);    fseek (TagFile.fp, 0L, SEEK_END);    size = ftell (TagFile.fp);    fclose (TagFile.fp);    if (resize  &&  desiredSize < size)    {	DebugStatement (	    debugPrintf (DEBUG_STATUS, "shrinking %s from %ld to %ld bytes\n",			TagFile.name, size, desiredSize); )	resizeTagFile (desiredSize);    }    sortTagFile ();    eFree (TagFile.name);    TagFile.name = NULL;}extern void beginEtagsFile (void){    TagFile.etags.fp = tempFile ("w+b", &TagFile.etags.name);    TagFile.etags.byteCount = 0;}extern void endEtagsFile (const char *const name){    const char *line;    fprintf (TagFile.fp, "\f\n%s,%ld\n", name, (long) TagFile.etags.byteCount);    if (TagFile.etags.fp != NULL)    {	rewind (TagFile.etags.fp);	while ((line = readLine (TagFile.vLine, TagFile.etags.fp)) != NULL)	    fputs (line, TagFile.fp);	fclose (TagFile.etags.fp);	remove (TagFile.etags.name);	eFree (TagFile.etags.name);	TagFile.etags.fp = NULL;	TagFile.etags.name = NULL;    }}/* *  Tag entry management *//*  This function copies the current line out to a specified file. It has no *  effect on the fileGetc () function.  During copying, any '\' characters *  are doubled and a leading '^' or trailing '$' is also quoted. End of line *  characters (line feed or carriage return) are dropped. */static size_t writeSourceLine (FILE *const fp, const char *const line){    size_t length = 0;    const char *p;    /*	Write everything up to, but not including, a line end character.     */    for (p = line  ;  *p != '\0'  ;  ++p)    {	const int next = *(p + 1);	const int c = *p;	if (c == CRETURN  ||  c == NEWLINE)	    break;	/*  If character is '\', or a terminal '$', then quote it.	 */	if (c == BACKSLASH  ||  c == (Option.backward ? '?' : '/')  ||	    (c == '$'  &&  (next == NEWLINE  ||  next == CRETURN)))	{	    putc (BACKSLASH, fp);	    ++length;	}	putc (c, fp);	++length;    }    return length;}/*  Writes "line", stripping leading and duplicate white space. */static size_t writeCompactSourceLine (FILE *const fp, const char *const line){    boolean lineStarted = FALSE;    size_t  length = 0;    const char *p;    int c;    /*	Write everything up to, but not including, the newline.     */    for (p = line, c = *p  ;  c != NEWLINE  &&  c != '\0'  ;  c = *++p)    {	if (lineStarted  || ! isspace (c))	/* ignore leading spaces */	{	    lineStarted = TRUE;	    if (isspace (c))	    {		int next;		/*  Consume repeating white space.		 */		while (next = *(p+1) , isspace (next)  &&  next != NEWLINE)		    ++p;		c = ' ';	/* force space character for any white space */	    }	    if (c != CRETURN  ||  *(p + 1) != NEWLINE)	    {		putc (c, fp);		++length;	    }	}    }    return length;}static int writeXrefEntry (const tagEntryInfo *const tag){    const char *const line =	    readSourceLine (TagFile.vLine, tag->filePosition, NULL);    int length;    if (Option.tagFileFormat == 1)	length = fprintf (TagFile.fp, "%-16s %4lu %-16s ", tag->name,		tag->lineNumber, tag->sourceFileName);    else	length = fprintf (TagFile.fp, "%-16s %-10s %4lu %-16s ", tag->name,		tag->kindName, tag->lineNumber, tag->sourceFileName);    length += writeCompactSourceLine (TagFile.fp, line);    putc (NEWLINE, TagFile.fp);    ++length;    return length;}/*  Truncates the text line containing the tag at the character following the *  tag, providing a character which designates the end of the tag. */static void truncateTagLine (char *const line, const char *const token,			     const boolean discardNewline){    char *p = strstr (line, token);    if (p != NULL)    {	p += strlen (token);	if (*p != '\0'  &&  ! (*p == '\n'  &&  discardNewline))	    ++p;		/* skip past character terminating character */	*p = '\0';    }}static int writeEtagsEntry (const tagEntryInfo *const tag){    int length;    if (tag->isFileEntry)	length = fprintf (TagFile.etags.fp, "\177%s\001%lu,0\n",			 tag->name, tag->lineNumber);    else    {	long seekValue;	char *const line =		readSourceLine (TagFile.vLine, tag->filePosition, &seekValue);	if (tag->truncateLine)	    truncateTagLine (line, tag->name, TRUE);	else	    line [strlen (line) - 1] = '\0';	length = fprintf (TagFile.etags.fp, "%s\177%s\001%lu,%ld\n", line,			 tag->name, tag->lineNumber, seekValue);    }    TagFile.etags.byteCount += length;    return length;}static int addExtensionFields (const tagEntryInfo *const tag){    const char* const kindKey = Option.extensionFields.kindKey ? "kind:" : "";    boolean first = TRUE;    const char* separator = ";\"";    const char* const empty = "";    int length = 0;/* "sep" returns a value only the first time it is evaluated */#define sep (first ? (first = FALSE, separator) : empty)    if (tag->kindName != NULL && (Option.extensionFields.kindLong  ||	 (Option.extensionFields.kind  && tag->kind == '\0')))	length += fprintf (TagFile.fp,"%s\t%s%s", sep, kindKey, tag->kindName);    else if (tag->kind != '\0'  && (Option.extensionFields.kind  ||	    (Option.extensionFields.kindLong  &&  tag->kindName == NULL)))	length += fprintf (TagFile.fp, "%s\t%s%c", sep, kindKey, tag->kind);    if (Option.extensionFields.lineNumber)	length += fprintf (TagFile.fp, "%s\tline:%ld", sep, tag->lineNumber);    if (Option.extensionFields.language  &&  tag->language != NULL)	length += fprintf (TagFile.fp, "%s\tlanguage:%s", sep, tag->language);    if (Option.extensionFields.scope  &&	    tag->extensionFields.scope [0] != NULL  &&	    tag->extensionFields.scope [1] != NULL)	length += fprintf (TagFile.fp, "%s\t%s:%s", sep,			   tag->extensionFields.scope [0],			   tag->extensionFields.scope [1]);    if (Option.extensionFields.fileScope  &&  tag->isFileScope)	length += fprintf (TagFile.fp, "%s\tfile:", sep);    if (Option.extensionFields.inheritance  &&	    tag->extensionFields.inheritance != NULL)	length += fprintf (TagFile.fp, "%s\tinherits:%s", sep,			   tag->extensionFields.inheritance);    if (Option.extensionFields.access  &&  tag->extensionFields.access != NULL)	length += fprintf (TagFile.fp, "%s\taccess:%s", sep,			   tag->extensionFields.access);    if (Option.extensionFields.implementation  &&	    tag->extensionFields.implementation != NULL)	length += fprintf (TagFile.fp, "%s\timplementation:%s", sep,			   tag->extensionFields.implementation);    if (Option.extensionFields.signature  &&	    tag->extensionFields.signature != NULL)	length += fprintf (TagFile.fp, "%s\tsignature:%s", sep,			   tag->extensionFields.signature);    return length;#undef sep}static int writePatternEntry (const tagEntryInfo *const tag){    char *const line = readSourceLine (TagFile.vLine, tag->filePosition, NULL);    const int searchChar = Option.backward ? '?' : '/';    boolean newlineTerminated;    int length = 0;    if (tag->truncateLine)	truncateTagLine (line, tag->name, FALSE);    newlineTerminated = (boolean) (line [strlen (line) - 1] == '\n');    length += fprintf (TagFile.fp, "%c^", searchChar);    length += writeSourceLine (TagFile.fp, line);    length += fprintf (TagFile.fp, "%s%c", newlineTerminated ? "$":"",		      searchChar);    return length;}static int writeLineNumberEntry (const tagEntryInfo *const tag){    return fprintf (TagFile.fp, "%lu", tag->lineNumber);}static int writeCtagsEntry (const tagEntryInfo *const tag){    int length = fprintf (TagFile.fp, "%s\t%s\t",			  tag->name, tag->sourceFileName);    if (tag->lineNumberEntry)	length += writeLineNumberEntry (tag);    else	length += writePatternEntry (tag);    if (includeExtensionFlags ())	length += addExtensionFields (tag);    length += fprintf (TagFile.fp, "\n");    return length;}extern void makeTagEntry (const tagEntryInfo *const tag){    Assert (tag->name != NULL);    if (tag->name [0] == '\0')	error (WARNING, "ignoring null tag in %s", vStringValue (File.name));    else    {	int length = 0;	DebugStatement ( debugEntry (tag); )	if (Option.xref)	{	    if (! tag->isFileEntry)		length = writeXrefEntry (tag);	}	else if (Option.etags)	    length = writeEtagsEntry (tag);	else	    length = writeCtagsEntry (tag);	++TagFile.numTags.added;	rememberMaxLengths (strlen (tag->name), (size_t) length);	DebugStatement ( fflush (TagFile.fp); )    }}extern void initTagEntry (tagEntryInfo *const e, const char *const name){    Assert (File.source.name != NULL);    memset (e, 0, sizeof (tagEntryInfo));    e->lineNumberEntry	= (boolean) (Option.locate == EX_LINENUM);    e->lineNumber	= getSourceLineNumber ();    e->language		= getSourceLanguageName ();    e->filePosition	= getInputFilePosition ();    e->sourceFileName	= getSourceFileTagPath ();    e->name		= name;}/* vi:set tabstop=8 shiftwidth=4: */

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
激情综合网av| av不卡在线观看| 椎名由奈av一区二区三区| 欧美午夜一区二区三区| 国产福利一区在线观看| 视频一区二区国产| 亚洲日本一区二区| 久久精品亚洲国产奇米99| 欧美男生操女生| 99精品视频在线免费观看| 激情五月激情综合网| 午夜精品久久久久久久99樱桃| 国产人妖乱国产精品人妖| 欧美精品18+| 欧美在线观看视频一区二区| 成人精品视频网站| 激情欧美一区二区| 日本不卡不码高清免费观看| 亚洲午夜日本在线观看| 综合分类小说区另类春色亚洲小说欧美| 欧美一区二区成人6969| 欧美三级一区二区| 欧美专区亚洲专区| 成人激情av网| 国产99久久久国产精品免费看| 麻豆免费精品视频| 男女男精品视频| 日本成人中文字幕在线视频| 亚洲高清免费视频| 亚洲国产欧美另类丝袜| 一区二区久久久| 中文字幕亚洲成人| 日韩一区在线免费观看| 国产精品久久久久久久第一福利| 久久久国产精品麻豆| 精品国产青草久久久久福利| 91精品国产全国免费观看 | 91黄视频在线| 91麻豆国产精品久久| 成人高清免费观看| jlzzjlzz欧美大全| 99久久久久久| 91久久久免费一区二区| 在线影院国内精品| 欧美久久免费观看| 欧美大片一区二区| 国产日韩欧美不卡| 亚洲色图视频免费播放| 亚洲一区成人在线| 日本在线不卡视频| 国内精品不卡在线| 成人激情小说乱人伦| 国产mv日韩mv欧美| 91在线视频播放地址| 日本道在线观看一区二区| 欧美日韩国产大片| 欧美成人一区二区三区| 国产亚洲一二三区| 18欧美亚洲精品| 午夜精品久久一牛影视| 奇米888四色在线精品| 精品一区二区三区日韩| 成人开心网精品视频| 在线亚洲免费视频| 欧美一级片免费看| 国产欧美日产一区| 亚洲午夜成aⅴ人片| 久久精品国产久精国产爱| 东方aⅴ免费观看久久av| 欧洲在线/亚洲| 欧美videos中文字幕| 亚洲国产精品黑人久久久| 亚洲愉拍自拍另类高清精品| 久久国产尿小便嘘嘘| zzijzzij亚洲日本少妇熟睡| 欧美日韩激情一区二区三区| 久久久无码精品亚洲日韩按摩| 欧美高清在线一区| 午夜精品久久久| 懂色av中文字幕一区二区三区| 91高清在线观看| 精品国产污网站| 伊人婷婷欧美激情| 国内精品伊人久久久久av影院| 91网站视频在线观看| 欧美一区二区黄| 亚洲欧美国产毛片在线| 免费在线看成人av| 一本久道久久综合中文字幕 | 精品成人免费观看| 一区二区三区欧美亚洲| 国产一二三精品| 欧美另类一区二区三区| 国产精品美女久久久久久久网站| 日韩黄色免费网站| a级高清视频欧美日韩| 日韩欧美亚洲国产另类| 一区二区三区国产精华| 成人中文字幕在线| 欧美不卡激情三级在线观看| 亚洲国产精品一区二区久久恐怖片 | 欧美夫妻性生活| 国产精品对白交换视频| 美洲天堂一区二卡三卡四卡视频| 色狠狠一区二区| 欧美国产精品一区| 韩国精品久久久| 91精品国产一区二区三区| 一区二区三区不卡视频| 成人免费视频一区| 久久久久久久久久电影| 久久精品国产亚洲一区二区三区| 欧美色窝79yyyycom| 日韩美女视频19| 国产精品88888| 精品理论电影在线观看| 青娱乐精品在线视频| 欧美精品在线观看一区二区| 一区二区久久久久| 日本韩国欧美三级| 亚洲伦理在线精品| av电影在线观看完整版一区二区| 久久久国产精华| 国产一区二区在线看| 精品国产凹凸成av人导航| 美脚の诱脚舐め脚责91 | 91麻豆精品国产自产在线 | 国产麻豆成人精品| 久久影院午夜论| 精品亚洲国内自在自线福利| 日韩精品专区在线影院观看| 日本怡春院一区二区| 日韩一区二区三区四区| 日本中文字幕不卡| 日韩欧美久久久| 精品影院一区二区久久久| 亚洲精品一区二区三区四区高清| 免费xxxx性欧美18vr| 日韩一级高清毛片| 国产一区二区三区电影在线观看| 久久久99精品久久| 国产99一区视频免费| 中文字幕一区二区三区视频| 99久久婷婷国产精品综合| 亚洲欧美日本韩国| 欧美日韩在线一区二区| 日韩电影在线观看一区| 精品国产乱码久久久久久免费| 国产精品99精品久久免费| 国产精品久久夜| 欧洲一区在线电影| 日韩成人伦理电影在线观看| 日韩欧美成人激情| 国产成人啪免费观看软件| 国产精品拍天天在线| 色综合天天在线| 亚洲国产wwwccc36天堂| 日韩精品综合一本久道在线视频| 国产精品一区二区黑丝| 最新中文字幕一区二区三区| 欧美三级日本三级少妇99| 蜜桃久久av一区| 日本一区二区成人| 欧美天天综合网| 韩国精品主播一区二区在线观看| 一区在线中文字幕| 欧美日韩另类一区| 国产专区综合网| 亚洲激情男女视频| 精品国产乱码久久久久久影片| av动漫一区二区| 青娱乐精品视频在线| 国产精品三级av在线播放| 欧美午夜一区二区三区| 国产一区二区三区免费播放| 亚洲男人天堂av网| 日韩精品资源二区在线| 99国产一区二区三精品乱码| 日本在线播放一区二区三区| 国产精品视频观看| 欧美精品一级二级| 成人91在线观看| 日韩成人精品在线| 一区二区中文视频| 精品国产91久久久久久久妲己| 91色综合久久久久婷婷| 久久精品国产一区二区| 亚洲精品美国一| 国产欧美日韩亚州综合| 制服丝袜av成人在线看| 色先锋资源久久综合| 国产精品69毛片高清亚洲| 天天亚洲美女在线视频| 国产精品二三区| 久久精品亚洲乱码伦伦中文| 欧美精品一二三| 色婷婷久久久久swag精品| 国产一区二区三区免费在线观看| 亚洲v日本v欧美v久久精品| 亚洲欧美在线视频观看|