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

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

?? entry.c

?? ctags-5.5.4.tar.gz,一個很好的代碼開發以及編輯源碼
?? C
?? 第 1 頁 / 共 2 頁
字號:
/**   $Id: entry.c,v 1.9 2003/10/13 02:35:45 darren Exp $**   Copyright (c) 1996-2002, Darren Hiebert**   This source code is released for free distribution under the terms of the*   GNU General Public License.**   This module contains functions for creating tag entries.*//**   INCLUDE FILES*/#include "general.h"	/* must always come first */#include <string.h>#include <ctype.h>	/* to define isspace () */#include <errno.h>#if defined (HAVE_SYS_TYPES_H)# include <sys/types.h>	    /* to declare off_t on some hosts */#endif#if defined (HAVE_TYPES_H)# include <types.h>	    /* to declare off_t on some hosts */#endif#if defined (HAVE_UNISTD_H)# include <unistd.h>	/* to declare close (), ftruncate (), truncate () */#endif/*  These header files provide for the functions necessary to do file *  truncation. */#ifdef HAVE_FCNTL_H# include <fcntl.h>#endif#ifdef HAVE_IO_H# include <io.h>#endif#include "debug.h"#include "ctags.h"#include "entry.h"#include "main.h"#include "options.h"#include "read.h"#include "routines.h"#include "sort.h"#include "strlist.h"/**   MACROS*/#define PSEUDO_TAG_PREFIX	"!_"#define includeExtensionFlags()		(Option.tagFileFormat > 1)/* *  Portability defines */#if !defined(HAVE_TRUNCATE) && !defined(HAVE_FTRUNCATE) && !defined(HAVE_CHSIZE)# define USE_REPLACEMENT_TRUNCATE#endif/*  Hack for rediculous practice of Microsoft Visual C++. */#if defined (WIN32) && defined (_MSC_VER)# define chsize		_chsize# define open		_open# define close		_close# define O_RDWR 	_O_RDWR#endif/**   DATA DEFINITIONS*/tagFile TagFile = {    NULL,		/* tag file name */    NULL,		/* tag file directory (absolute) */    NULL,		/* file pointer */    { 0, 0 },		/* numTags */    { 0, 0, 0 },	/* max */    { NULL, NULL, 0 },	/* etags */    NULL		/* vLine */};static boolean TagsToStdout = FALSE;/**   FUNCTION PROTOTYPES*/#ifdef NEED_PROTO_TRUNCATEextern int truncate (const char *path, off_t length);#endif#ifdef NEED_PROTO_FTRUNCATEextern int ftruncate (int fd, off_t length);#endif/**   FUNCTION DEFINITIONS*/extern void freeTagFileResources (void){    if (TagFile.directory != NULL)	eFree (TagFile.directory);    vStringDelete (TagFile.vLine);}extern const char *tagFileName (void){    return TagFile.name;}/**   Pseudo tag support*/static void rememberMaxLengths (const size_t nameLength, const size_t lineLength){    if (nameLength > TagFile.max.tag)	TagFile.max.tag = nameLength;    if (lineLength > TagFile.max.line)	TagFile.max.line = lineLength;}static void writePseudoTag (const char *const tagName,			    const char *const fileName,			    const char *const pattern){    const int length = fprintf (TagFile.fp, "%s%s\t%s\t/%s/\n",			       PSEUDO_TAG_PREFIX, tagName, fileName, pattern);    ++TagFile.numTags.added;    rememberMaxLengths (strlen (tagName), (size_t) length);}static void addPseudoTags (void){    if (! Option.xref)    {	char format [11];	const char *formatComment = "unknown format";	sprintf (format, "%u", Option.tagFileFormat);	if (Option.tagFileFormat == 1)	    formatComment = "original ctags format";	else if (Option.tagFileFormat == 2)	    formatComment =		    "extended format; --format=1 will not append ;\" to lines";	writePseudoTag ("TAG_FILE_FORMAT", format, formatComment);	writePseudoTag ("TAG_FILE_SORTED",			Option.sorted == SO_FOLDSORTED ? "2" :			    (Option.sorted == SO_SORTED ? "1" : "0"),		       "0=unsorted, 1=sorted, 2=foldcase");	writePseudoTag ("TAG_PROGRAM_AUTHOR",	AUTHOR_NAME,  AUTHOR_EMAIL);	writePseudoTag ("TAG_PROGRAM_NAME",	PROGRAM_NAME, "");	writePseudoTag ("TAG_PROGRAM_URL",	PROGRAM_URL,  "official site");	writePseudoTag ("TAG_PROGRAM_VERSION",	PROGRAM_VERSION, "");    }}static void updateSortedFlag (const char *const line,			      FILE *const fp, fpos_t startOfLine){    const char *const tab = strchr (line, '\t');    if (tab != NULL)    {	const long boolOffset = tab - line + 1;		/* where it should be */	if (line [boolOffset] == '0'  ||  line [boolOffset] == '1')	{	    fpos_t nextLine;	    if (fgetpos (fp, &nextLine) == -1 || fsetpos (fp, &startOfLine) == -1)		error (WARNING, "Failed to update 'sorted' pseudo-tag");	    else	    {		fpos_t flagLocation;		int c, d;		do		    c = fgetc (fp);		while (c != '\t'  &&  c != '\n');		fgetpos (fp, &flagLocation);		d = fgetc (fp);		if (c == '\t'  &&  (d == '0'  ||  d == '1')  &&		    d != (int) Option.sorted)		{		    fsetpos (fp, &flagLocation);		    fputc (Option.sorted == SO_FOLDSORTED ? '2' :				(Option.sorted == SO_SORTED ? '1' : '0'), fp);		}		fsetpos (fp, &nextLine);	    }	}    }}/*  Look through all line beginning with "!_TAG_FILE", and update those which *  require it. */static long unsigned int updatePseudoTags (FILE *const fp){    enum { maxEntryLength = 20 };    char entry [maxEntryLength + 1];    unsigned long linesRead = 0;    fpos_t startOfLine;    size_t entryLength;    const char *line;    sprintf (entry, "%sTAG_FILE", PSEUDO_TAG_PREFIX);    entryLength = strlen (entry);    Assert (entryLength < maxEntryLength);    fgetpos (fp, &startOfLine);    line = readLine (TagFile.vLine, fp);    while (line != NULL  &&  line [0] == entry [0])    {	++linesRead;	if (strncmp (line, entry, entryLength) == 0)	{	    char tab, classType [16];	    if (sscanf (line + entryLength, "%15s%c", classType, &tab) == 2  &&		tab == '\t')	    {		if (strcmp (classType, "_SORTED") == 0)		    updateSortedFlag (line, fp, startOfLine);	    }	    fgetpos (fp, &startOfLine);	}	line = readLine (TagFile.vLine, fp);    }    while (line != NULL)			/* skip to end of file */    {	++linesRead;	line = readLine (TagFile.vLine, fp);    }    return linesRead;}/* *  Tag file management */static boolean isValidTagAddress (const char *const excmd){    boolean isValid = FALSE;    if (strchr ("/?", excmd [0]) != NULL)	isValid = TRUE;    else    {	char *address = xMalloc (strlen (excmd) + 1, char);	if (sscanf (excmd, "%[^;\n]", address) == 1  &&	    strspn (address,"0123456789") == strlen (address))		isValid = TRUE;	eFree (address);    }    return isValid;}static boolean isCtagsLine (const char *const line){    enum fieldList { TAG, TAB1, SRC_FILE, TAB2, EXCMD, NUM_FIELDS };    boolean ok = FALSE;			/* we assume not unless confirmed */    const size_t fieldLength = strlen (line) + 1;    char *const fields = xMalloc (NUM_FIELDS * fieldLength, char);    if (fields == NULL)	error (FATAL, "Cannot analyze tag file");    else    {#define field(x)	(fields + ((size_t) (x) * fieldLength))	const int numFields = sscanf (line, "%[^\t]%[\t]%[^\t]%[\t]%[^\r\n]",				     field (TAG), field (TAB1), field (SRC_FILE),				     field (TAB2), field (EXCMD));	/*  There must be exactly five fields: two tab fields containing	 *  exactly one tab each, the tag must not begin with "#", and the	 *  file name should not end with ";", and the excmd must be	 *  accceptable.	 *	 *  These conditions will reject tag-looking lines like:	 *      int	a;	<C-comment>	 *      #define	LABEL	<C-comment>	 */	if (numFields == NUM_FIELDS   &&	    strlen (field (TAB1)) == 1  &&	    strlen (field (TAB2)) == 1  &&	    field (TAG) [0] != '#'      &&	    field (SRC_FILE) [strlen (field (SRC_FILE)) - 1] != ';'  &&	    isValidTagAddress (field (EXCMD)))		ok = TRUE;	eFree (fields);    }    return ok;}static boolean isEtagsLine (const char *const line){    boolean result = FALSE;    if (line [0] == '\f')	result = (boolean) (line [1] == '\n'  ||  line [1] == '\r');    return result;}static boolean isTagFile (const char *const filename){    boolean ok = FALSE;			/* we assume not unless confirmed */    FILE *const fp = fopen (filename, "rb");    if (fp == NULL  &&  errno == ENOENT)	ok = TRUE;    else if (fp != NULL)    {	const char *line = readLine (TagFile.vLine, fp);	if (line == NULL)	    ok = TRUE;	else	    ok = (boolean) (isCtagsLine (line) || isEtagsLine (line));	fclose (fp);    }    return ok;}extern void copyBytes (FILE* const fromFp, FILE* const toFp, const long size){    enum { BufferSize = 1000 };    long toRead, numRead;    char* buffer = xMalloc (BufferSize, char);    long remaining = size;    do    {	toRead = (0 < remaining && remaining < BufferSize) ?		    remaining : (long) BufferSize;	numRead = fread (buffer, (size_t) 1, (size_t) toRead, fromFp);	if (fwrite (buffer, (size_t)1, (size_t)numRead, toFp) < (size_t)numRead)	    error (FATAL | PERROR, "cannot complete write");	if (remaining > 0)	    remaining -= numRead;    } while (numRead == toRead  &&  remaining != 0);    eFree (buffer);}extern void copyFile (const char *const from, const char *const to, const long size){    FILE* const fromFp = fopen (from, "rb");    if (fromFp == NULL)	error (FATAL | PERROR, "cannot open file to copy");    else    {	FILE* const toFp = fopen (to, "wb");	if (toFp == NULL)	    error (FATAL | PERROR, "cannot open copy destination");	else	{	    copyBytes (fromFp, toFp, size);	    fclose (toFp);	}	fclose (fromFp);    }}extern void openTagFile (void){    setDefaultTagFileName ();    TagsToStdout = isDestinationStdout ();    if (TagFile.vLine == NULL)	TagFile.vLine = vStringNew ();    /*  Open the tags file.     */    if (TagsToStdout)	TagFile.fp = tempFile ("w", &TagFile.name);    else    {	boolean fileExists;	setDefaultTagFileName ();	TagFile.name = eStrdup (Option.tagFileName);	fileExists = doesFileExist (TagFile.name);	if (fileExists  &&  ! isTagFile (TagFile.name))	    error (FATAL,	      "\"%s\" doesn't look like a tag file; I refuse to overwrite it.",		  TagFile.name);	if (Option.etags)	{	    if (Option.append  &&  fileExists)		TagFile.fp = fopen (TagFile.name, "a+b");	    else		TagFile.fp = fopen (TagFile.name, "w+b");	}	else	{	    if (Option.append  &&  fileExists)	    {		TagFile.fp = fopen (TagFile.name, "r+");		if (TagFile.fp != NULL)		{		    TagFile.numTags.prev = updatePseudoTags (TagFile.fp);		    fclose (TagFile.fp);		    TagFile.fp = fopen (TagFile.name, "a+");		}	    }	    else	    {		TagFile.fp = fopen (TagFile.name, "w");		if (TagFile.fp != NULL)

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产一区二区三区久久悠悠色av | 国产精品色噜噜| 激情欧美一区二区| 中文字幕一区视频| 337p亚洲精品色噜噜狠狠| 精品亚洲成av人在线观看| 国产日韩欧美综合在线| 欧美在线影院一区二区| 韩国成人福利片在线播放| 亚洲精品免费电影| 欧美精品一区二区三区蜜桃视频| 成人网男人的天堂| 午夜成人免费电影| 成人免费在线观看入口| 欧美精品一区二区三区久久久| 欧美在线视频日韩| 色婷婷激情久久| 国产裸体歌舞团一区二区| 日本伊人色综合网| 免费成人在线播放| 爽好久久久欧美精品| 亚洲一区视频在线观看视频| 国产精品日日摸夜夜摸av| 久久精品人人做人人爽人人 | 色偷偷久久人人79超碰人人澡| 国产白丝网站精品污在线入口| 久久99蜜桃精品| 国产一区二区伦理| 国产成人精品亚洲午夜麻豆| 国产一区二区在线免费观看| 麻豆精品国产91久久久久久| 日本vs亚洲vs韩国一区三区二区| 亚洲午夜激情网页| 强制捆绑调教一区二区| 日韩av中文在线观看| 韩国精品免费视频| 9色porny自拍视频一区二区| 97久久超碰精品国产| 欧美日韩一区二区在线观看| 91精品久久久久久蜜臀| 2023国产精品| 中文字幕一区在线观看视频| 一区二区国产视频| 蜜桃视频第一区免费观看| 国产伦精品一区二区三区免费迷 | 天天av天天翘天天综合网色鬼国产| 偷拍日韩校园综合在线| 国产成人综合在线| 欧美顶级少妇做爰| 成人欧美一区二区三区1314| 午夜一区二区三区在线观看| 久久国内精品视频| 欧美日韩视频在线第一区| 久久蜜桃一区二区| 肉肉av福利一精品导航| 色综合久久综合中文综合网| 精品毛片乱码1区2区3区| 一区二区高清免费观看影视大全| 久久99精品久久久| 久久综合色天天久久综合图片| 亚洲二区在线观看| 色域天天综合网| 中文字幕免费在线观看视频一区| 久久91精品久久久久久秒播| 91美女在线观看| 亚洲男同性恋视频| 欧洲精品视频在线观看| 一区二区高清视频在线观看| 色欲综合视频天天天| 午夜欧美电影在线观看| 在线播放中文字幕一区| 美女爽到高潮91| 欧美国产精品专区| 欧美亚洲一区二区在线| 日韩avvvv在线播放| 26uuu亚洲婷婷狠狠天堂| 欧美日韩在线免费视频| 欧美成人精品福利| 亚洲精品一区二区在线观看| 美腿丝袜亚洲三区| 亚洲国产精品综合小说图片区| 久久免费的精品国产v∧| 91精品国产乱| 欧美一级免费大片| 日本v片在线高清不卡在线观看| 欧美日韩国产a| 精品一区二区三区在线播放视频| 精品国产99国产精品| 处破女av一区二区| 亚洲在线成人精品| 欧美精品精品一区| 国产精品1区二区.| 亚洲二区视频在线| 中文字幕av不卡| 欧美精品色综合| 99久久综合狠狠综合久久| 免费观看一级欧美片| 亚洲精品成a人| 久久久久久一二三区| 欧美亚洲自拍偷拍| 丁香网亚洲国际| 国产美女视频91| 精品午夜久久福利影院| 老汉av免费一区二区三区| 亚洲成人精品一区| 亚洲一区二区三区四区在线| 亚洲欧美在线观看| **欧美大码日韩| 中文字幕亚洲成人| 亚洲视频 欧洲视频| 一区二区三区在线观看网站| 一区二区在线观看免费视频播放| 中文字幕欧美一| 亚洲一本大道在线| 免费观看在线综合色| 成人性生交大片| 欧美无砖砖区免费| 欧美老女人在线| 久久综合久久久久88| 亚洲免费看黄网站| 久久精品国产秦先生| 成人动漫在线一区| 欧美丰满一区二区免费视频| 国产女同互慰高潮91漫画| 久久久久久久久久久电影| 国产成人综合自拍| eeuss鲁片一区二区三区| 777a∨成人精品桃花网| 亚洲一区二区三区四区五区黄| 成人激情图片网| 亚洲男女毛片无遮挡| 色婷婷精品久久二区二区蜜臀av| 91精品国产综合久久久久久| 国产精品久久久久影院老司| 日韩精品高清不卡| 欧美优质美女网站| 亚洲美女屁股眼交3| 国产精品99久久久久久久女警| 欧美日韩激情一区| 亚洲素人一区二区| 成人一区在线观看| 中文字幕免费一区| 岛国一区二区在线观看| 久久免费视频色| 国产激情视频一区二区在线观看 | 精品国产污污免费网站入口 | 精品中文字幕一区二区| 7777精品伊人久久久大香线蕉| 亚洲日穴在线视频| 在线看国产一区| 亚洲一区免费观看| 91精品在线免费观看| 免费一级片91| 久久久久久久电影| 国产麻豆欧美日韩一区| 欧美激情在线观看视频免费| 国产成人午夜电影网| 中文字幕日韩av资源站| 一本久久综合亚洲鲁鲁五月天| 一区二区三区在线影院| 精品视频全国免费看| 狠狠网亚洲精品| 亚洲靠逼com| 久久久国际精品| 欧美在线啊v一区| 国产东北露脸精品视频| 亚洲精品va在线观看| 国产欧美久久久精品影院| 欧美日韩国产天堂| 91免费观看视频在线| 麻豆国产一区二区| 一区二区高清免费观看影视大全| 久久综合一区二区| 91精品国产综合久久久蜜臀图片 | 欧美一级高清大全免费观看| av电影一区二区| 99re亚洲国产精品| av在线不卡电影| 91视频一区二区| 欧美日韩国产一二三| 色欧美乱欧美15图片| 在线视频综合导航| 欧美日韩国产一区| 国产.精品.日韩.另类.中文.在线.播放 | 欧美精品第一页| 不卡的av电影| 国产91富婆露脸刺激对白| 日本欧美肥老太交大片| 亚洲综合色在线| 亚洲天堂av一区| 18欧美乱大交hd1984| 国产精品久久久久久久久免费桃花 | 国产在线播放一区二区三区| 午夜精品爽啪视频| 亚洲午夜久久久久久久久电影院| 欧美激情一二三区| 国产色综合一区| 国产精品嫩草99a| 一区二区三区欧美久久| 国产在线播放一区二区三区|