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

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

?? split-include.c

?? ZD1211 source code, based on linux 2.44 or linux 2.
?? C
字號:
/* * split-include.c * * Copyright abandoned, Michael Chastain, <mailto:mec@shout.net>. * This is a C version of syncdep.pl by Werner Almesberger. * * This program takes autoconf.h as input and outputs a directory full * of one-line include files, merging onto the old values. * * Think of the configuration options as key-value pairs.  Then there * are five cases: * *    key      old value   new value   action * *    KEY-1    VALUE-1     VALUE-1     leave file alone *    KEY-2    VALUE-2A    VALUE-2B    write VALUE-2B into file *    KEY-3    -           VALUE-3     write VALUE-3  into file *    KEY-4    VALUE-4     -           write an empty file *    KEY-5    (empty)     -           leave old empty file alone */#include <sys/types.h>#include <sys/stat.h>#include <ctype.h>#include <errno.h>#include <fcntl.h>#include <stdio.h>#include <stdlib.h>#include <string.h>#include <unistd.h>#define ERROR_EXIT(strExit)						\    {									\	const int errnoSave = errno;					\	fprintf(stderr, "%s: ", str_my_name);				\	errno = errnoSave;						\	perror((strExit));						\	exit(1);							\    }int main(int argc, const char * argv []){    const char * str_my_name;    const char * str_file_autoconf;    const char * str_dir_config;    FILE * fp_config;    FILE * fp_target;    FILE * fp_find;    int buffer_size;    char * line;    char * old_line;    char * list_target;    char * ptarget;    struct stat stat_buf;    /* Check arg count. */    if (argc != 3)    {	fprintf(stderr, "%s: wrong number of arguments.\n", argv[0]);	exit(1);    }    str_my_name       = argv[0];    str_file_autoconf = argv[1];    str_dir_config    = argv[2];    /* Find a buffer size. */    if (stat(str_file_autoconf, &stat_buf) != 0)	ERROR_EXIT(str_file_autoconf);    buffer_size = 2 * stat_buf.st_size + 4096;    /* Allocate buffers. */    if ( (line        = malloc(buffer_size)) == NULL    ||   (old_line    = malloc(buffer_size)) == NULL    ||   (list_target = malloc(buffer_size)) == NULL )	ERROR_EXIT(str_file_autoconf);    /* Open autoconfig file. */    if ((fp_config = fopen(str_file_autoconf, "r")) == NULL)	ERROR_EXIT(str_file_autoconf);    /* Make output directory if needed. */    if (stat(str_dir_config, &stat_buf) != 0)    {	if (mkdir(str_dir_config, 0755) != 0)	    ERROR_EXIT(str_dir_config);    }    /* Change to output directory. */    if (chdir(str_dir_config) != 0)	ERROR_EXIT(str_dir_config);	    /* Put initial separator into target list. */    ptarget = list_target;    *ptarget++ = '\n';    /* Read config lines. */    while (fgets(line, buffer_size, fp_config))    {	const char * str_config;	int is_same;	int itarget;	if (line[0] != '#')	    continue;	if ((str_config = strstr(line, "CONFIG_")) == NULL)	    continue;	/* Make the output file name. */	str_config += sizeof("CONFIG_") - 1;	for (itarget = 0; !isspace((int)str_config[itarget]); itarget++)	{	    char c = str_config[itarget];	    if (isupper((int)c)) c = tolower((int)c);	    if (c == '_')   c = '/';	    ptarget[itarget] = c;	}	ptarget[itarget++] = '.';	ptarget[itarget++] = 'h';	ptarget[itarget++] = '\0';	/* Check for existing file. */	is_same = 0;	if ((fp_target = fopen(ptarget, "r")) != NULL)	{	    fgets(old_line, buffer_size, fp_target);	    if (fclose(fp_target) != 0)		ERROR_EXIT(ptarget);	    if (!strcmp(line, old_line))		is_same = 1;	}	if (!is_same)	{	    /* Auto-create directories. */	    int islash;	    for (islash = 0; islash < itarget; islash++)	    {		if (ptarget[islash] == '/')		{		    ptarget[islash] = '\0';		    if (stat(ptarget, &stat_buf) != 0		    &&  mkdir(ptarget, 0755)     != 0)			ERROR_EXIT( ptarget );		    ptarget[islash] = '/';		}	    }	    /* Write the file. */	    if ((fp_target = fopen(ptarget, "w" )) == NULL)		ERROR_EXIT(ptarget);	    fputs(line, fp_target);	    if (ferror(fp_target) || fclose(fp_target) != 0)		ERROR_EXIT(ptarget);	}	/* Update target list */	ptarget += itarget;	*(ptarget-1) = '\n';    }    /*     * Close autoconfig file.     * Terminate the target list.     */    if (fclose(fp_config) != 0)	ERROR_EXIT(str_file_autoconf);    *ptarget = '\0';    /*     * Fix up existing files which have no new value.     * This is Case 4 and Case 5.     *     * I re-read the tree and filter it against list_target.     * This is crude.  But it avoids data copies.  Also, list_target     * is compact and contiguous, so it easily fits into cache.     *     * Notice that list_target contains strings separated by \n,     * with a \n before the first string and after the last.     * fgets gives the incoming names a terminating \n.     * So by having an initial \n, strstr will find exact matches.     */    fp_find = popen("find * -type f -name \"*.h\" -print", "r");    if (fp_find == 0)	ERROR_EXIT( "find" );    line[0] = '\n';    while (fgets(line+1, buffer_size, fp_find))    {	if (strstr(list_target, line) == NULL)	{	    /*	     * This is an old file with no CONFIG_* flag in autoconf.h.	     */	    /* First strip the \n. */	    line[strlen(line)-1] = '\0';	    /* Grab size. */	    if (stat(line+1, &stat_buf) != 0)		ERROR_EXIT(line);	    /* If file is not empty, make it empty and give it a fresh date. */	    if (stat_buf.st_size != 0)	    {		if ((fp_target = fopen(line+1, "w")) == NULL)		    ERROR_EXIT(line);		if (fclose(fp_target) != 0)		    ERROR_EXIT(line);	    }	}    }    if (pclose(fp_find) != 0)	ERROR_EXIT("find");    return 0;}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产女主播视频一区二区| 国产亚洲精品福利| 久久精品国产亚洲5555| 91蜜桃在线免费视频| a级高清视频欧美日韩| 夫妻av一区二区| 精品一区二区免费视频| 亚洲777理论| 国产精品福利一区二区三区| 国产日韩精品视频一区| 最新国产成人在线观看| 成人v精品蜜桃久久一区| 欧美日韩在线播放| 欧美r级在线观看| 亚洲色图制服诱惑| 亚洲bt欧美bt精品| 99久久夜色精品国产网站| 91网站在线观看视频| 精品国产乱码久久久久久老虎| 国产午夜精品一区二区| 亚洲 欧美综合在线网络| 91视视频在线观看入口直接观看www | 综合在线观看色| 亚洲欧美一区二区不卡| 麻豆一区二区在线| 在线观看日韩国产| 国产精品久久久久久亚洲伦| 麻豆成人免费电影| 欧美中文字幕亚洲一区二区va在线| 日本一区二区三区四区在线视频| 日本大胆欧美人术艺术动态| 99精品国产99久久久久久白柏| 精品国产三级a在线观看| 欧美aⅴ一区二区三区视频| 欧美在线小视频| 亚洲影院久久精品| 欧美日韩一区久久| 视频在线观看一区| 色拍拍在线精品视频8848| 国产精品妹子av| 色狠狠桃花综合| 亚洲超碰精品一区二区| 欧美一级理论性理论a| 日韩av二区在线播放| 日韩免费视频一区| 国产成人午夜片在线观看高清观看| 久久先锋影音av| 国产在线观看一区二区| 日韩你懂的在线观看| 成人综合婷婷国产精品久久免费| 国产精品久久久久影院色老大| 在线国产电影不卡| 欧美电影精品一区二区| 成人精品国产免费网站| 亚洲美女偷拍久久| 久久毛片高清国产| 欧美三级午夜理伦三级中视频| 经典三级视频一区| 一区二区三区四区高清精品免费观看 | 日韩高清不卡一区| 亚洲视频在线一区二区| 2022国产精品视频| 欧美亚洲自拍偷拍| 国产99精品在线观看| 三级成人在线视频| 日本一区二区三区在线不卡| 欧美日本一区二区| 一本大道综合伊人精品热热| 国模娜娜一区二区三区| 一区二区在线观看免费视频播放| 另类综合日韩欧美亚洲| 亚洲电影一区二区三区| 国产精品萝li| 欧美激情在线一区二区三区| 亚洲素人一区二区| 欧美韩国一区二区| 国产农村妇女毛片精品久久麻豆| 日韩精品一区二区三区四区视频| 91麻豆精品国产91久久久久久 | 青青草97国产精品免费观看| 一区二区三区欧美| 视频在线观看一区| 麻豆精品新av中文字幕| 国产专区欧美精品| 成人午夜免费av| 成人午夜私人影院| 一本久道中文字幕精品亚洲嫩| 97成人超碰视| 欧美日韩免费不卡视频一区二区三区| 欧美怡红院视频| 日韩一区二区中文字幕| 国产欧美精品区一区二区三区| 国产欧美日韩精品在线| 亚洲色图欧洲色图婷婷| 日韩黄色一级片| 国产制服丝袜一区| 97久久人人超碰| 欧美剧在线免费观看网站| 日韩欧美视频在线| 1区2区3区欧美| 美女视频一区在线观看| 国产高清在线精品| 欧美在线观看一区| 国产亚洲综合在线| 午夜成人免费视频| a级精品国产片在线观看| 91精品国产91久久久久久一区二区| 午夜精品一区二区三区电影天堂 | 欧美tickle裸体挠脚心vk| 日本亚洲电影天堂| 97精品久久久久中文字幕| 久久亚洲精品国产精品紫薇| 亚洲成人三级小说| 亚洲欧美另类小说| 精品在线观看免费| 7777精品伊人久久久大香线蕉经典版下载 | 一区二区三国产精华液| 国内久久精品视频| 日韩欧美国产精品一区| 日本中文字幕不卡| 91精品国产综合久久福利软件 | av在线一区二区| 久久精品亚洲乱码伦伦中文| 精品一区二区三区久久久| 欧美日韩成人激情| 欧美中文字幕亚洲一区二区va在线 | 欧美成人乱码一区二区三区| 视频一区欧美精品| 欧美另类videos死尸| 青草国产精品久久久久久| 日韩欧美精品在线视频| 国产成人在线电影| 国产色一区二区| 成人中文字幕合集| 日本一区二区三区久久久久久久久不| 国产乱人伦偷精品视频免下载| 久久人人97超碰com| 国产成人小视频| 亚洲国产成人精品视频| 3atv在线一区二区三区| 国内精品自线一区二区三区视频| 精品福利av导航| 99re这里都是精品| 无吗不卡中文字幕| 国产欧美一区视频| 欧美日韩久久不卡| 欧美一区二区在线视频| 国产精品一二三四区| 欧美国产成人精品| 成人av资源站| 精品一区中文字幕| 成人福利电影精品一区二区在线观看 | 免费在线看成人av| 亚洲摸摸操操av| 精品久久久久久久久久久久包黑料 | 美腿丝袜亚洲综合| 国产精品乱人伦| 2021久久国产精品不只是精品| 色呦呦网站一区| 国产一区二区在线电影| 亚洲电影视频在线| 日韩福利电影在线| 亚洲一区欧美一区| 精品一区二区三区影院在线午夜| 亚洲精品v日韩精品| 精品国产免费视频| 欧美精品高清视频| 色中色一区二区| 色哟哟一区二区| 色综合天天综合网天天看片| 波多野结衣视频一区| 成人午夜电影网站| 91在线无精精品入口| 91在线精品秘密一区二区| av男人天堂一区| 一本色道久久综合精品竹菊| 91蝌蚪porny成人天涯| 91国内精品野花午夜精品| 欧美日韩综合不卡| 日韩三级在线观看| 久久精品一区二区三区不卡牛牛 | 久久九九久精品国产免费直播| 午夜私人影院久久久久| 天天综合网天天综合色| 免费精品视频最新在线| 免费xxxx性欧美18vr| 成人av影视在线观看| 一本久久a久久精品亚洲| 91精品国产综合久久精品性色| 精品黑人一区二区三区久久| 中文字幕中文在线不卡住| 一区二区在线免费观看| 美女一区二区三区| 国产 日韩 欧美大片| 欧美老肥妇做.爰bbww| 日本一区二区在线不卡| 日本人妖一区二区| 色综合久久综合中文综合网| 精品国产一区二区三区av性色| 亚洲精品国久久99热|