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

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

?? options.c

?? ctags的最新版5.7,可以比較5.6版看看,免費下載
?? C
?? 第 1 頁 / 共 4 頁
字號:
/* *  Cooked argument parsing */static void parseShortOption (cookedArgs *const args){	args->simple [0] = *args->shortOptions++;	args->simple [1] = '\0';	args->item = args->simple;	if (! isCompoundOption (*args->simple))		args->parameter = "";	else if (*args->shortOptions == '\0')	{		argForth (args->args);		if (argOff (args->args))			args->parameter = NULL;		else			args->parameter = argItem (args->args);		args->shortOptions = NULL;	}	else	{		args->parameter = args->shortOptions;		args->shortOptions = NULL;	}}static void parseLongOption (cookedArgs *const args, const char *item){	const char* const equal = strchr (item, '=');	if (equal == NULL)	{		args->item = eStrdup (item); /* FIXME: memory leak. */		args->parameter = "";	}	else	{		const size_t length = equal - item;		args->item = xMalloc (length + 1, char); /* FIXME: memory leak. */		strncpy (args->item, item, length);		args->item [length] = '\0';		args->parameter = equal + 1;	}	Assert (args->item != NULL);	Assert (args->parameter != NULL);}static void cArgRead (cookedArgs *const current){	char* item;	Assert (current != NULL);	if (! argOff (current->args))	{		item = argItem (current->args);		current->shortOptions = NULL;		Assert (item != NULL);		if (strncmp (item, "--", (size_t) 2) == 0)		{			current->isOption = TRUE;			current->longOption = TRUE;			parseLongOption (current, item + 2);			Assert (current->item != NULL);			Assert (current->parameter != NULL);		}		else if (*item == '-')		{			current->isOption = TRUE;			current->longOption = FALSE;			current->shortOptions = item + 1;			parseShortOption (current);		}		else		{			current->isOption = FALSE;			current->longOption = FALSE;			current->item = item;			current->parameter = NULL;		}	}}extern cookedArgs* cArgNewFromString (const char* string){	cookedArgs* const result = xMalloc (1, cookedArgs);	memset (result, 0, sizeof (cookedArgs));	result->args = argNewFromString (string);	cArgRead (result);	return result;}extern cookedArgs* cArgNewFromArgv (char* const* const argv){	cookedArgs* const result = xMalloc (1, cookedArgs);	memset (result, 0, sizeof (cookedArgs));	result->args = argNewFromArgv (argv);	cArgRead (result);	return result;}extern cookedArgs* cArgNewFromFile (FILE* const fp){	cookedArgs* const result = xMalloc (1, cookedArgs);	memset (result, 0, sizeof (cookedArgs));	result->args = argNewFromFile (fp);	cArgRead (result);	return result;}extern cookedArgs* cArgNewFromLineFile (FILE* const fp){	cookedArgs* const result = xMalloc (1, cookedArgs);	memset (result, 0, sizeof (cookedArgs));	result->args = argNewFromLineFile (fp);	cArgRead (result);	return result;}extern void cArgDelete (cookedArgs* const current){	Assert (current != NULL);	argDelete (current->args);	memset (current, 0, sizeof (cookedArgs));	eFree (current);}static boolean cArgOptionPending (cookedArgs* const current){	boolean result = FALSE;	if (current->shortOptions != NULL)		if (*current->shortOptions != '\0')			result = TRUE;	return result;}extern boolean cArgOff (cookedArgs* const current){	Assert (current != NULL);	return (boolean) (argOff (current->args) && ! cArgOptionPending (current));}extern boolean cArgIsOption (cookedArgs* const current){	Assert (current != NULL);	return current->isOption;}extern const char* cArgItem (cookedArgs* const current){	Assert (current != NULL);	return current->item;}extern void cArgForth (cookedArgs* const current){	Assert (current != NULL);	Assert (! cArgOff (current));	if (cArgOptionPending (current))		parseShortOption (current);	else	{		Assert (! argOff (current->args));		argForth (current->args);		if (! argOff (current->args))			cArgRead (current);		else		{			current->isOption = FALSE;			current->longOption = FALSE;			current->shortOptions = NULL;			current->item = NULL;			current->parameter = NULL;		}	}}/* *  File extension and language mapping */static void addExtensionList (		stringList *const slist, const char *const elist, const boolean clear){	char *const extensionList = eStrdup (elist);	const char *extension = NULL;	boolean first = TRUE;	if (clear)	{		verbose ("      clearing\n");		stringListClear (slist);	}	verbose ("      adding: ");	if (elist != NULL  &&  *elist != '\0')	{		extension = extensionList;		if (elist [0] == EXTENSION_SEPARATOR)			++extension;	}	while (extension != NULL)	{		char *separator = strchr (extension, EXTENSION_SEPARATOR);		if (separator != NULL)			*separator = '\0';		verbose ("%s%s", first ? "" : ", ",				*extension == '\0' ? "(NONE)" : extension);		stringListAdd (slist, vStringNewInit (extension));		first = FALSE;		if (separator == NULL)			extension = NULL;		else			extension = separator + 1;	}	if (Option.verbose)	{		printf ("\n      now: ");		stringListPrint (slist);		putchar ('\n');	}	eFree (extensionList);}static boolean isFalse (const char *parameter){	return (boolean) (		strcasecmp (parameter, "0"  ) == 0  ||		strcasecmp (parameter, "n"  ) == 0  ||		strcasecmp (parameter, "no" ) == 0  ||		strcasecmp (parameter, "off") == 0);}static boolean isTrue (const char *parameter){	return (boolean) (		strcasecmp (parameter, "1"  ) == 0  ||		strcasecmp (parameter, "y"  ) == 0  ||		strcasecmp (parameter, "yes") == 0  ||		strcasecmp (parameter, "on" ) == 0);}/*  Determines whether the specified file name is considered to be a header *  file for the purposes of determining whether enclosed tags are global or *  static. */extern boolean isIncludeFile (const char *const fileName){	boolean result = FALSE;	const char *const extension = fileExtension (fileName);	if (Option.headerExt != NULL)		result = stringListExtensionMatched (Option.headerExt, extension);	return result;}/* *  Specific option processing */static void processEtagsInclude (		const char *const option, const char *const parameter){	if (! Option.etags)		error (FATAL, "Etags must be enabled to use \"%s\" option", option);	else	{		vString *const file = vStringNewInit (parameter);		if (Option.etagsInclude == NULL)			Option.etagsInclude = stringListNew ();		stringListAdd (Option.etagsInclude, file);		FilesRequired = FALSE;	}}static void processExcludeOption (		const char *const option __unused__, const char *const parameter){	const char *const fileName = parameter + 1;	if (parameter [0] == '\0')		freeList (&Excluded);	else if (parameter [0] == '@')	{		stringList* const sl = stringListNewFromFile (fileName);		if (sl == NULL)			error (FATAL | PERROR, "cannot open \"%s\"", fileName);		if (Excluded == NULL)			Excluded = sl;		else			stringListCombine (Excluded, sl);		verbose ("    adding exclude patterns from %s\n", fileName);	}	else	{		vString *const item = vStringNewInit (parameter);		if (Excluded == NULL)			Excluded = stringListNew ();		stringListAdd (Excluded, item);		verbose ("    adding exclude pattern: %s\n", parameter);	}}extern boolean isExcludedFile (const char* const name){	const char* base = baseFilename (name);	boolean result = FALSE;	if (Excluded != NULL)	{		result = stringListFileMatched (Excluded, base);		if (! result  &&  name != base)			result = stringListFileMatched (Excluded, name);	}#ifdef AMIGA	/* not a good solution, but the only one which works often */	if (! result)		result = (boolean) (strcmp (name, TagFile.name) == 0);#endif	return result;}static void processExcmdOption (		const char *const option, const char *const parameter){	switch (*parameter)	{		case 'm': Option.locate = EX_MIX;     break;		case 'n': Option.locate = EX_LINENUM; break;		case 'p': Option.locate = EX_PATTERN; break;		default:			error (FATAL, "Invalid value for \"%s\" option", option);			break;	}}static void processExtraTagsOption (		const char *const option, const char *const parameter){	struct sInclude *const inc = &Option.include;	const char *p = parameter;	boolean mode = TRUE;	int c;	if (*p != '+'  &&  *p != '-')	{		inc->fileNames     = FALSE;		inc->qualifiedTags = FALSE;#if 0		inc->fileScope     = FALSE;#endif	}	while ((c = *p++) != '\0') switch (c)	{		case '+': mode = TRUE;                break;		case '-': mode = FALSE;               break;		case 'f': inc->fileNames     = mode;  break;		case 'q': inc->qualifiedTags = mode;  break;#if 0		case 'F': inc->fileScope     = mode;  break;#endif		default: error(WARNING, "Unsupported parameter '%c' for \"%s\" option",					   c, option);			break;	}}static void processFieldsOption (		const char *const option, const char *const parameter){	struct sExtFields *field = &Option.extensionFields;	const char *p = parameter;	boolean mode = TRUE;	int c;	if (*p != '+'  &&  *p != '-')	{		field->access           = FALSE;		field->fileScope        = FALSE;		field->implementation   = FALSE;		field->inheritance      = FALSE;		field->kind             = FALSE;		field->kindKey          = FALSE;		field->kindLong         = FALSE;		field->language         = FALSE;		field->scope            = FALSE;		field->typeRef          = FALSE;	}	while ((c = *p++) != '\0') switch (c)	{		case '+': mode = TRUE;                  break;		case '-': mode = FALSE;                 break;		case 'a': field->access         = mode; break;		case 'f': field->fileScope      = mode; break;		case 'm': field->implementation = mode; break;		case 'i': field->inheritance    = mode; break;		case 'k': field->kind           = mode; break;		case 'K': field->kindLong       = mode; break;		case 'l': field->language       = mode; break;		case 'n': field->lineNumber     = mode; break;		case 's': field->scope          = mode; break;		case 'S': field->signature      = mode; break;		case 'z': field->kindKey        = mode; break;		case 't': field->typeRef        = mode; break;		default: error(WARNING, "Unsupported parameter '%c' for \"%s\" option",					c, option);			break;	}}static void processFilterTerminatorOption (		const char *const option __unused__, const char *const parameter){	freeString (&Option.filterTerminator);	Option.filterTerminator = stringCopy (parameter);}static void processFormatOption (		const char *const option, const char *const parameter){	unsigned int format;	if (sscanf (parameter, "%u", &format) < 1)		error (FATAL, "Invalid value for \"%s\" option",option);	else if (format <= (unsigned int) MaxSupportedTagFormat)		Option.tagFileFormat = format;	else		error (FATAL, "Unsupported value for \"%s\" option", option);}static void printInvocationDescription (void){	printf (INVOCATION, getExecutableName ());}static void printOptionDescriptions (const optionDescription *const optDesc){	int i;	for (i = 0 ; optDesc [i].description != NULL ; ++i)	{		if (! Option.etags || optDesc [i].usedByEtags)			puts (optDesc [i].description);	}}static void printFeatureList (void){	int i;	for (i = 0 ; Features [i] != NULL ; ++i)	{		if (i == 0)			printf ("  Optional compiled features: ");		printf ("%s+%s", (i>0 ? ", " : ""), Features [i]);#ifdef CUSTOM_CONFIGURATION_FILE		if (strcmp (Features [i], "custom-conf") == 0)			printf ("=%s", CUSTOM_CONFIGURATION_FILE);#endif

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲精品一区二区三区精华液| 一区二区三区四区在线免费观看| 日韩一区中文字幕| 日本成人在线电影网| 91免费看片在线观看| 久久综合久色欧美综合狠狠| 夜夜夜精品看看| jlzzjlzz亚洲女人18| 日韩欧美国产电影| 日韩中文字幕av电影| 在线免费观看一区| 国产欧美日韩在线视频| 麻豆精品在线播放| 3d成人h动漫网站入口| 亚洲一级二级三级在线免费观看| 成人国产在线观看| 国产性做久久久久久| 国产一区啦啦啦在线观看| 日韩午夜精品电影| 五月激情综合色| 欧美日韩一级片网站| 一区二区三区在线观看网站| 成人精品免费视频| 欧美v日韩v国产v| 日韩成人免费在线| 91精品午夜视频| 日韩国产精品久久久久久亚洲| 欧美亚洲尤物久久| 亚洲一区二区影院| 欧美三级视频在线| 日韩激情一区二区| 91麻豆精品国产91久久久资源速度| 一区二区三区四区国产精品| 色综合久久天天| 一区二区三区 在线观看视频| 在线视频你懂得一区二区三区| 亚洲色图在线播放| 日本精品裸体写真集在线观看| 亚洲日本青草视频在线怡红院 | 色婷婷久久久综合中文字幕| 国产偷国产偷亚洲高清人白洁| 久久99精品国产| 国产欧美精品一区二区色综合| 成人免费视频网站在线观看| 国产精品久久久久桃色tv| 91香蕉视频污在线| 亚洲国产精品久久久久婷婷884| 欧美电影一区二区三区| 日本美女视频一区二区| 久久综合九色综合久久久精品综合| 国产乱码字幕精品高清av | 午夜精品久久久久久久99樱桃| 欧美日韩国产乱码电影| 成人黄色国产精品网站大全在线免费观看| 久久久777精品电影网影网| 成人久久视频在线观看| 亚洲成a人片综合在线| 欧美电影免费观看高清完整版| 国产成人精品免费视频网站| 伊人一区二区三区| 日韩欧美成人激情| 91美女视频网站| 久久99精品久久久久久动态图| 欧美高清在线一区二区| 欧美视频中文字幕| 国产凹凸在线观看一区二区| 亚洲女女做受ⅹxx高潮| 精品裸体舞一区二区三区| jiyouzz国产精品久久| 免费三级欧美电影| 日韩美女精品在线| 欧美成人三级在线| 欧美综合视频在线观看| 国产馆精品极品| 天堂午夜影视日韩欧美一区二区| 国产女同性恋一区二区| 91精品国产91久久久久久最新毛片 | 亚洲亚洲人成综合网络| 久久亚洲一区二区三区四区| 欧美性一级生活| 国产成人精品www牛牛影视| 天天av天天翘天天综合网| 日本一区二区三区高清不卡 | 色综合一个色综合亚洲| 国产一区啦啦啦在线观看| 亚洲二区在线观看| 中文字幕一区二区三区在线不卡| 日韩精品一区在线| 欧美日韩国产综合久久 | 亚洲另类在线制服丝袜| 国产情人综合久久777777| 日韩欧美国产综合| 69堂精品视频| 色婷婷综合久久久久中文 | 精品久久久久99| 欧美顶级少妇做爰| 欧美色网一区二区| 91看片淫黄大片一级| av一二三不卡影片| 成人的网站免费观看| 国产精品亚洲午夜一区二区三区| 日韩成人免费电影| 午夜伦欧美伦电影理论片| 亚洲午夜日本在线观看| 亚洲美女视频在线观看| 亚洲视频一二三区| 亚洲精品日韩专区silk| 一区二区三区中文字幕| 一区二区三区四区激情| 夜夜亚洲天天久久| 北条麻妃一区二区三区| 成人一区在线看| 丁香婷婷综合激情五月色| 国产v日产∨综合v精品视频| 国产不卡视频在线观看| 丁香婷婷综合激情五月色| 成人爱爱电影网址| 91老师国产黑色丝袜在线| 色丁香久综合在线久综合在线观看| 97久久久精品综合88久久| av成人老司机| 欧美亚洲国产一卡| 欧美麻豆精品久久久久久| 欧美一区二区性放荡片| 精品国产伦一区二区三区免费| 精品国产91洋老外米糕| 国产欧美综合色| 亚洲美女屁股眼交3| 首页国产欧美久久| 99re视频精品| 国产福利精品一区二区| 国产曰批免费观看久久久| 国产在线精品一区二区不卡了| 国内精品免费在线观看| 成人99免费视频| 欧美三级韩国三级日本三斤| 日韩一区二区三区四区| 久久精品在这里| 亚洲女同ⅹxx女同tv| 免费观看久久久4p| 成人自拍视频在线观看| 欧美午夜电影在线播放| 日韩免费观看高清完整版 | 精品婷婷伊人一区三区三| 欧美三电影在线| 26uuu成人网一区二区三区| 国产精品午夜春色av| 亚洲第一福利一区| 国产成人自拍网| 欧美日韩视频在线第一区| 久久综合色鬼综合色| 一区二区欧美在线观看| 国产一区二区三区免费播放 | 欧美一级高清片| 亚洲国产精品成人久久综合一区| 亚洲一区二区3| 国产精品亚洲а∨天堂免在线| 欧美制服丝袜第一页| 久久精品无码一区二区三区 | 亚洲乱码国产乱码精品精可以看| 日韩av不卡一区二区| 色综合欧美在线视频区| 久久蜜臀精品av| 日本欧美肥老太交大片| 一本久道中文字幕精品亚洲嫩| 欧美成人乱码一区二区三区| 玉米视频成人免费看| 国产不卡视频一区二区三区| 91麻豆精品国产自产在线观看一区| 国产精品久久毛片| 精品一区二区在线观看| 91精品国产麻豆国产自产在线| 日韩理论片中文av| 制服丝袜中文字幕一区| 中文字幕一区日韩精品欧美| 精品一二三四区| 日韩一区二区视频在线观看| 亚洲精品水蜜桃| 成人一区二区三区在线观看| 精品日韩在线观看| 视频在线观看国产精品| 欧美日韩一级片在线观看| 亚洲欧美另类综合偷拍| 成人app网站| 中文一区二区在线观看| 国产夫妻精品视频| 26uuu亚洲综合色| 久久99精品国产麻豆婷婷洗澡| 91精品福利在线一区二区三区 | 国产精品国产三级国产| 国产一区二区中文字幕| 欧美成人女星排行榜| 美美哒免费高清在线观看视频一区二区| 欧美体内she精高潮| 亚洲永久精品大片| 91福利在线观看| 亚洲在线免费播放| 欧美日韩在线三区| 亚洲电影一区二区三区| 欧美美女bb生活片|