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

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

?? modprobe.c

?? GCC資料大全
?? C
?? 第 1 頁 / 共 3 頁
字號:
			 int removing,			 struct module_options **options,			 struct module_command **commands){	FILE *cfile;	char *line;	char *result = NULL;	unsigned int linenum = 0;	cfile = fopen(filename, "r");	if (!cfile) {		if (mustload)			fatal("Failed to open config file %s: %s\n",			      filename, strerror(errno));		return NULL;	}	while ((line = getline_wrapped(cfile, &linenum)) != NULL) {		char *ptr = line;		char *cmd, *modname;		if (dump_only)			printf("%s\n", line);		cmd = strsep_skipspace(&ptr, "\t ");		if (cmd == NULL || cmd[0] == '#' || cmd[0] == '\0')			continue;		if (strcmp(cmd, "alias") == 0) {			char *wildcard				= underscores(strsep_skipspace(&ptr, "\t "));			char *realname				= underscores(strsep_skipspace(&ptr, "\t "));			if (!wildcard || !realname)				grammar(cmd, filename, linenum);			else if (fnmatch(wildcard,name,0) == 0)				result = NOFAIL(strdup(realname));		} else if (strcmp(cmd, "include") == 0) {			char *newresult, *newfilename;			newfilename = strsep_skipspace(&ptr, "\t ");			if (!newfilename)				grammar(cmd, filename, linenum);			else {				newresult = read_config(newfilename, 1, name,							dump_only, removing,							options, commands);				/* Files included override aliases,				   etc that was already set ... */				if (newresult)					result = newresult;			}		} else if (strcmp(cmd, "options") == 0) {			modname = strsep_skipspace(&ptr, "\t ");			if (!modname || !ptr)				grammar(cmd, filename, linenum);			else {				ptr += strspn(ptr, "\t ");				*options = add_options(underscores(modname),						       ptr, *options);			}		} else if (strcmp(cmd, "install") == 0) {			modname = strsep_skipspace(&ptr, "\t ");			if (!modname || !ptr)				grammar(cmd, filename, linenum);			else if (!removing) {				ptr += strspn(ptr, "\t ");				*commands = add_command(underscores(modname),							ptr, *commands);			}		} else if (strcmp(cmd, "remove") == 0) {			modname = strsep_skipspace(&ptr, "\t ");			if (!modname || !ptr)				grammar(cmd, filename, linenum);			else if (removing) {				ptr += strspn(ptr, "\t ");				*commands = add_command(underscores(modname),							ptr, *commands);			}		} else			grammar(cmd, filename, linenum);		free(line);	}	fclose(cfile);	return result;}static void add_to_env_var(const char *option){	const char *oldenv;	if ((oldenv = getenv("MODPROBE_OPTIONS")) != NULL) {		char *newenv;		asprintf(&newenv, "%s %s", oldenv, option);		setenv("MODPROBE_OPTIONS", newenv, 1);	} else		setenv("MODPROBE_OPTIONS", option, 1);}/* Prepend options from environment. */static char **merge_args(char *args, char *argv[], int *argc){	char *arg, *argstring;	char **newargs = NULL;	unsigned int i, num_env = 0;	if (!args)		return argv;	argstring = NOFAIL(strdup(args));	for (arg = strtok(argstring, " "); arg; arg = strtok(NULL, " ")) {		num_env++;		newargs = NOFAIL(realloc(newargs,					 sizeof(newargs[0])					 * (num_env + *argc + 1)));		newargs[num_env] = arg;	}	/* Append commandline args */	newargs[0] = argv[0];	for (i = 1; i <= *argc; i++)		newargs[num_env+i] = argv[i];	*argc += num_env;	return newargs;}static char *gather_options(char *argv[]){	char *optstring = NOFAIL(strdup(""));	/* Rest is module options */	while (*argv) {		if (strchr(*argv, ' ')) {			/* Spaces handled by "" pairs, but no way of			   escaping quotes */			char protected_option[strlen(optstring) + 3];			sprintf(protected_option, "\"%s\"", *argv);			optstring = append_option(optstring, protected_option);		} else			optstring = append_option(optstring, *argv);		argv++;	}	return optstring;}static struct option options[] = { { "verbose", 0, NULL, 'v' },				   { "version", 0, NULL, 'V' },				   { "config", 1, NULL, 'C' },				   { "name", 1, NULL, 'o' },				   { "remove", 0, NULL, 'r' },				   { "showconfig", 0, NULL, 'c' },				   { "autoclean", 0, NULL, 'k' },				   { "quiet", 0, NULL, 'q' },				   { "show", 0, NULL, 'n' },				   { "dry-run", 0, NULL, 'n' },				   { "syslog", 0, NULL, 's' },				   { "type", 1, NULL, 't' },				   { "list", 0, NULL, 'l' },				   { "all", 0, NULL, 'a' },				   { "ignore-install", 0, NULL, 'i' },				   { "ignore-remove", 0, NULL, 'i' },				   { "force", 0, NULL, 'f' },				   { "force-vermagic", 0, NULL, 1 },				   { "force-modversion", 0, NULL, 2 },				   { "set-version", 1, NULL, 'S' },				   { "show-depends", 0, NULL, 'D' },				   { "first-time", 0, NULL, 3 },				   { NULL, 0, NULL, 0 } };#define DEFAULT_CONFIG "/etc/modprobe.conf"#define MODPROBE_DEVFSD_CONF "/etc/modprobe.devfs"/* This is a horrible hack to allow devfsd, which calls modprobe with   -C /etc/modules.conf or /etc/modules.devfs, to work.  FIXME. *//* Modern devfsd or variants should use -q explicitly in 2.6. */static int is_devfs_call(char *argv[]){	unsigned int i;	/* Look for "/dev" arg */	for (i = 1; argv[i]; i++) {		if (strncmp(argv[i], "/dev/", 5) == 0)			return 1;	}	return 0;}int main(int argc, char *argv[]){	struct utsname buf;	struct stat statbuf;	int opt;	int dump_only = 0;	int dry_run = 0;	int remove = 0;	int verbose = 0;	int unknown_silent = 0;	int list_only = 0;	int all = 0;	int ignore_commands = 0;	int strip_vermagic = 0;	int strip_modversion = 0;	int ignore_proc = 0;	int first_time = 0;	unsigned int i, num_modules;	char *type = NULL;	const char *config = NULL, *command = NULL;	char *dirname, *optstring;	char *modname, *newname = NULL;	char *aliasfilename, *symfilename;	errfn_t error = fatal;	/* Prepend options from environment. */	argv = merge_args(getenv("MODPROBE_OPTIONS"), argv, &argc);	/* --set-version overrides version, and disables backwards compat. */	for (opt = 1; opt < argc; opt++)		if (strncmp(argv[opt],"--set-version",strlen("--set-version"))		    == 0)			break;	if (opt == argc)		try_old_version("modprobe", argv);	uname(&buf);	while ((opt = getopt_long(argc, argv, "vVC:o:rknqQsclt:aif", options, NULL)) != -1){		switch (opt) {		case 'v':			add_to_env_var("-v");			verbose = 1;			break;		case 'V':			puts(PACKAGE " version " VERSION);			exit(0);		case 'S':			strncpy(buf.release, optarg, sizeof(buf.release));			buf.release[sizeof(buf.release)-1] = '\0';			break;		case 'C':			if (is_devfs_call(argv)) {				if (streq("/etc/modules.devfs", optarg)) {					config = MODPROBE_DEVFSD_CONF;					add_to_env_var("-C");					add_to_env_var(config);					/* Fall thru to -q */				} else if (streq("/etc/modules.conf", optarg))					/* Ignore config, fall thru to -q */					;				else {					/* False alarm.  Treat as normal. */					config = optarg;					add_to_env_var("-C");					add_to_env_var(config);					break;				}			} else {				config = optarg;				add_to_env_var("-C");				add_to_env_var(config);				break;			}		case 'q':			unknown_silent = 1;			add_to_env_var("-q");			break;		case 'D':			dry_run = 1;			ignore_proc = 1;			verbose = 1;			add_to_env_var("-D");			break;		case 'o':			newname = optarg;			break;		case 'r':			remove = 1;			break;		case 'c':			dump_only = 1;			break;		case 't':			type = optarg;			break;		case 'l':			list_only = 1;			break;		case 'a':			all = 1;			error = warn;			break;		case 'k':			/* FIXME: This should actually do something */			break;		case 'n':			dry_run = 1;			break;		case 's':			add_to_env_var("-s");			log = 1;			break;		case 'i':			ignore_commands = 1;			break;		case 'f':			strip_vermagic = 1;			strip_modversion = 1;			break;		case 1:			strip_vermagic = 1;			break;		case 2:			strip_modversion = 1;			break;		case 3:			first_time = 1;			break;		default:			print_usage(argv[0]);		}	}	/* If stderr not open, go to syslog */	if (log || fstat(STDERR_FILENO, &statbuf) != 0) {		openlog("modprobe", LOG_CONS, LOG_DAEMON);		log = 1;	}	if (argc < optind + 1 && !dump_only && !list_only && !remove)		print_usage(argv[0]);	dirname = NOFAIL(malloc(strlen(buf.release) + sizeof(MODULE_DIR) + 1));	sprintf(dirname, "%s/%s", MODULE_DIR, buf.release);	aliasfilename = NOFAIL(malloc(strlen(dirname)				      + sizeof("/modules.alias")));	sprintf(aliasfilename, "%s/modules.alias", dirname);	symfilename = NOFAIL(malloc(strlen(dirname)				    + sizeof("/modules.symbols")));	sprintf(symfilename, "%s/modules.symbols", dirname);	/* Old-style -t xxx wildcard?  Only with -l. */	if (list_only) {		if (optind+1 < argc)			fatal("Can't have multiple wildcards\n");		/* fprintf(stderr, "man find\n"); return 1; */		return do_wildcard(dirname, type, argv[optind]?:"*");	}	if (type)		fatal("-t only supported with -l");	if (dump_only) {		struct module_command *commands = NULL;		struct module_options *modoptions = NULL;		read_config(config ?: DEFAULT_CONFIG,			    config ? 1 : 0, "", 1, 0, &modoptions, &commands);		read_config(aliasfilename, 0, "", 1, 0,&modoptions, &commands);		read_config(symfilename, 0, "", 1, 0, &modoptions, &commands);		exit(0);	}	if (remove || all) {		num_modules = argc - optind;		optstring = NOFAIL(strdup(""));		/* -r only allows certain restricted options */		if (newname)			fatal("Can't specify replacement name with -%c\n",			      remove ? 'r' : 'a');	} else {		num_modules = 1;		optstring = gather_options(argv+optind+1);	}	/* num_modules is always 1 except for -r or -a. */	for (i = 0; i < num_modules; i++) {		struct module_command *commands = NULL;		struct module_options *modoptions = NULL;		LIST_HEAD(list);		char *modulearg = argv[optind + i];		/* Convert name we are looking for */		underscores(modulearg);		/* Returns the resolved alias, options */		modname = read_config(config ?: DEFAULT_CONFIG,				      config ? 1 : 0,				      modulearg, 0,				      remove, &modoptions, &commands);		/* No luck?  Try symbol names, if starts with symbol:. */		if (!modname		    && strncmp(modulearg, "symbol:", strlen("symbol:") == 0))			modname = read_config(symfilename, 0, modulearg, 0,					      remove, &modoptions, &commands);		/* If we have an alias, gather any options associated with it		   (needs to happen after parsing complete). */		if (modname) {		got_modname:			optstring = add_extra_options(modulearg, optstring,						      modoptions);			read_depends(dirname, modname, &list);		} else {			read_depends(dirname, modulearg, &list);			/* We don't allow canned aliases to override real			   modules, so we delay lookup until now. */			if (list_empty(&list)			    && (modname = read_config(aliasfilename, 0,						      modulearg, 0,						      remove, &modoptions,						      &commands)))				goto got_modname;			modname = strdup(modulearg);		}		if (list_empty(&list)) {			/* The dependencies have to be real modules, but			   handle case where the first is completely bogus. */			command = find_command(modname, commands);			if (command && !ignore_commands) {				do_command(modname, command, verbose, dry_run,					   fatal, remove ? "remove":"install");				continue;			}			if (unknown_silent)				exit(1);			error("Module %s not found.\n", modname);			continue;		}		if (remove)			rmmod(&list, first_time, error, dry_run, verbose,			      commands, ignore_commands, 0);		else			insmod(&list, NOFAIL(strdup(optstring)), newname,			       first_time, error, dry_run, verbose, modoptions,			       commands, ignore_commands, ignore_proc,			       strip_vermagic, strip_modversion);		free(modname);	}	free(dirname);	free(aliasfilename);	free(symfilename);	free(optstring);	if (log)		closelog();	return 0;}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产不卡一区视频| 国产成人在线影院| 日韩精品一区二区三区蜜臀| 不卡的电视剧免费网站有什么| 亚洲一区二区三区美女| 久久久亚洲精品一区二区三区| 在线看一区二区| 国产精品888| 免费精品99久久国产综合精品| 亚洲欧洲一区二区在线播放| 日韩欧美一区二区免费| 色av综合在线| 国产 欧美在线| 美腿丝袜亚洲综合| 午夜精品久久久久久久久| 国产精品久久二区二区| 欧美精品一区在线观看| 91麻豆精品国产| 欧美日韩中文字幕一区二区| 99精品偷自拍| 国产高清亚洲一区| 精品一区二区三区免费毛片爱| 性感美女久久精品| 亚洲综合视频在线观看| 国产精品久久毛片a| 久久九九全国免费| 欧美精品一区二| 日韩午夜在线播放| 91.com在线观看| 欧美日韩一区二区三区视频| 99在线热播精品免费| 高清shemale亚洲人妖| 久久不见久久见中文字幕免费| 丝袜美腿亚洲一区二区图片| 亚洲成人免费电影| 亚洲第一激情av| 亚洲国产精品久久不卡毛片 | 亚洲一二三区在线观看| 综合久久一区二区三区| 日韩一区欧美小说| 亚洲人成在线观看一区二区| 亚洲三级在线播放| 亚洲日本护士毛茸茸| 国产精品久久久爽爽爽麻豆色哟哟| 国产精品嫩草久久久久| 中文字幕制服丝袜一区二区三区| 亚洲乱码一区二区三区在线观看| 国产精品久久一级| 亚洲欧美在线高清| 亚洲一区二区3| 日韩电影在线一区二区| 男人操女人的视频在线观看欧美| 美女高潮久久久| 极品少妇xxxx精品少妇| 国产一区久久久| av中文字幕亚洲| 欧美性色综合网| 欧美一区二区三区免费在线看| 精品久久人人做人人爰| 久久亚洲影视婷婷| 亚洲欧洲av另类| 香蕉成人啪国产精品视频综合网| 日韩精品电影在线| 韩国中文字幕2020精品| 成人午夜激情影院| 91精彩视频在线观看| 91精品国产一区二区三区| 2021国产精品久久精品| 最新国产精品久久精品| 亚洲一区二区在线视频| 老司机精品视频在线| 不卡电影一区二区三区| 欧美喷潮久久久xxxxx| 精品久久久久久最新网址| 国产精品视频一二三区 | 精品综合免费视频观看| 国产盗摄一区二区| 欧美性三三影院| 久久精品夜夜夜夜久久| 亚洲香蕉伊在人在线观| 国产精品一区二区三区四区| 色琪琪一区二区三区亚洲区| 日韩视频在线一区二区| 一区在线观看视频| 蜜桃av噜噜一区二区三区小说| 国产1区2区3区精品美女| 欧美中文一区二区三区| 精品国产成人在线影院| 亚洲精品视频一区二区| 韩国在线一区二区| 欧美在线|欧美| 久久久久国产精品人| 亚洲自拍偷拍网站| 国产福利一区二区三区在线视频| 欧美亚洲综合另类| 国产区在线观看成人精品| 亚洲午夜一区二区三区| 暴力调教一区二区三区| 欧美大胆一级视频| 亚洲亚洲精品在线观看| 风间由美一区二区三区在线观看| 欧美高清www午色夜在线视频| 国产精品久久久久久久久免费樱桃| 美国欧美日韩国产在线播放| 色狠狠一区二区三区香蕉| 国产欧美精品一区aⅴ影院| 免费成人美女在线观看| 欧美色图一区二区三区| 国产精品传媒视频| 国产夫妻精品视频| 精品成a人在线观看| 日日摸夜夜添夜夜添精品视频| 色综合久久九月婷婷色综合| 中文字幕不卡的av| 国产一区二区三区日韩| 日韩视频免费观看高清完整版 | av一区二区久久| 2014亚洲片线观看视频免费| 青青草伊人久久| 欧美在线视频日韩| 亚洲品质自拍视频网站| 暴力调教一区二区三区| 中文字幕免费不卡| 国产91丝袜在线播放0| 久久久久久久久蜜桃| 国产一区二区三区日韩| 精品国产免费人成电影在线观看四季| 日韩影院免费视频| 欧美精品 国产精品| 午夜激情一区二区| 欧美日韩成人一区| 日韩精品久久理论片| 欧美久久久久免费| 日韩有码一区二区三区| 91精品国产综合久久精品麻豆| 天天av天天翘天天综合网| 欧美男生操女生| 秋霞午夜av一区二区三区| 884aa四虎影成人精品一区| 日韩电影在线观看一区| 91精品国产91综合久久蜜臀| 秋霞国产午夜精品免费视频| 欧美电影免费观看高清完整版在线| 蜜桃一区二区三区四区| 日韩三级免费观看| 国产精品系列在线播放| 国产精品久久毛片a| 91猫先生在线| 亚洲一二三四在线| 欧美一区二区日韩一区二区| 久久精品国产亚洲一区二区三区 | 亚洲在线成人精品| 欧美久久久久免费| 精品一区二区三区免费| 中文字幕成人av| 色吧成人激情小说| 日本视频免费一区| 国产午夜精品久久久久久免费视| 成人在线综合网站| 有码一区二区三区| 欧美日本在线播放| 久草中文综合在线| 国产精品国产三级国产普通话99 | 欧美日韩亚洲综合在线| 蜜臀久久99精品久久久久久9| 久久久久久久性| 91蝌蚪porny成人天涯| 五月天激情综合| 欧美国产日韩精品免费观看| 91色.com| 美国一区二区三区在线播放| 国产精品欧美经典| 欧美日本国产一区| 国产精品亚洲а∨天堂免在线| 亚洲欧美日韩久久| 中文字幕一区二区视频| 色婷婷av一区二区三区大白胸| 天天av天天翘天天综合网色鬼国产| 久久久久97国产精华液好用吗| 91亚洲永久精品| 久久成人久久爱| 亚洲综合成人在线| 久久久99久久精品欧美| 欧美揉bbbbb揉bbbbb| 国产成人综合在线观看| 亚洲成人在线观看视频| 国产女人18毛片水真多成人如厕 | 欧美午夜精品免费| 久久国产日韩欧美精品| 亚洲激情中文1区| 欧美精品一区视频| 欧美人xxxx| www.日韩精品| 国产一区二区0| 日韩精品免费专区| 中文字幕制服丝袜一区二区三区 | 看电视剧不卡顿的网站| 有坂深雪av一区二区精品| 久久精品一区二区三区不卡| 7777精品伊人久久久大香线蕉最新版|