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

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

?? hush.c

?? 手機嵌入式Linux下可用的busybox源碼
?? C
?? 第 1 頁 / 共 5 頁
字號:
}/* built-in 'cd <path>' handler */static int builtin_cd(struct child_prog *child){	char *newdir;	if (child->argv[1] == NULL)		newdir = getenv("HOME");	else		newdir = child->argv[1];	if (chdir(newdir)) {		printf("cd: %s: %s\n", newdir, strerror(errno));		return EXIT_FAILURE;	}	set_cwd();	return EXIT_SUCCESS;}/* built-in 'env' handler */static int builtin_env(struct child_prog *dummy){	char **e = environ;	if (e == NULL) return EXIT_FAILURE;	for (; *e; e++) {		puts(*e);	}	return EXIT_SUCCESS;}/* built-in 'exec' handler */static int builtin_exec(struct child_prog *child){	if (child->argv[1] == NULL)		return EXIT_SUCCESS;   /* Really? */	child->argv++;	pseudo_exec(child);	/* never returns */}/* built-in 'exit' handler */static int builtin_exit(struct child_prog *child){	if (child->argv[1] == NULL)		exit(last_return_code);	exit (atoi(child->argv[1]));}/* built-in 'export VAR=value' handler */static int builtin_export(struct child_prog *child){	int res = 0;	char *name = child->argv[1];	if (name == NULL) {		return (builtin_env(child));	}	name = strdup(name);	if(name) {		char *value = strchr(name, '=');		if (!value) {			char *tmp;			/* They are exporting something without an =VALUE */			value = get_local_var(name);			if (value) {				size_t ln = strlen(name);				tmp = realloc(name, ln+strlen(value)+2);				if(tmp==NULL)					res = -1;				else {					sprintf(tmp+ln, "=%s", value);					name = tmp;				}			} else {				/* bash does not return an error when trying to export				 * an undefined variable.  Do likewise. */				res = 1;			}		}	}	if (res<0)		perror_msg("export");	else if(res==0)		res = set_local_var(name, 1);	else		res = 0;	free(name);	return res;}/* built-in 'fg' and 'bg' handler */static int builtin_fg_bg(struct child_prog *child){	int i, jobnum;	struct pipe *pi=NULL;	if (!interactive)		return EXIT_FAILURE;	/* If they gave us no args, assume they want the last backgrounded task */	if (!child->argv[1]) {		for (pi = job_list; pi; pi = pi->next) {			if (pi->jobid == last_jobid) {				break;			}		}		if (!pi) {			error_msg("%s: no current job", child->argv[0]);			return EXIT_FAILURE;		}	} else {		if (sscanf(child->argv[1], "%%%d", &jobnum) != 1) {			error_msg("%s: bad argument '%s'", child->argv[0], child->argv[1]);			return EXIT_FAILURE;		}		for (pi = job_list; pi; pi = pi->next) {			if (pi->jobid == jobnum) {				break;			}		}		if (!pi) {			error_msg("%s: %d: no such job", child->argv[0], jobnum);			return EXIT_FAILURE;		}	}	if (*child->argv[0] == 'f') {		/* Put the job into the foreground.  */		tcsetpgrp(shell_terminal, pi->pgrp);	}	/* Restart the processes in the job */	for (i = 0; i < pi->num_progs; i++)		pi->progs[i].is_stopped = 0;	if ( (i=kill(- pi->pgrp, SIGCONT)) < 0) {		if (i == ESRCH) {			remove_bg_job(pi);		} else {			perror_msg("kill (SIGCONT)");		}	}	pi->stopped_progs = 0;	return EXIT_SUCCESS;}/* built-in 'help' handler */static int builtin_help(struct child_prog *dummy){	struct built_in_command *x;	printf("\nBuilt-in commands:\n");	printf("-------------------\n");	for (x = bltins; x->cmd; x++) {		if (x->descr==NULL)			continue;		printf("%s\t%s\n", x->cmd, x->descr);	}	printf("\n\n");	return EXIT_SUCCESS;}/* built-in 'jobs' handler */static int builtin_jobs(struct child_prog *child){	struct pipe *job;	char *status_string;	for (job = job_list; job; job = job->next) {		if (job->running_progs == job->stopped_progs)			status_string = "Stopped";		else			status_string = "Running";		printf(JOB_STATUS_FORMAT, job->jobid, status_string, job->text);	}	return EXIT_SUCCESS;}/* built-in 'pwd' handler */static int builtin_pwd(struct child_prog *dummy){	puts(set_cwd());	return EXIT_SUCCESS;}/* built-in 'read VAR' handler */static int builtin_read(struct child_prog *child){	int res;	if (child->argv[1]) {		char string[BUFSIZ];		char *var = 0;		string[0] = 0;  /* In case stdin has only EOF */		/* read string */		fgets(string, sizeof(string), stdin);		chomp(string);		var = malloc(strlen(child->argv[1])+strlen(string)+2);		if(var) {			sprintf(var, "%s=%s", child->argv[1], string);			res = set_local_var(var, 0);		} else			res = -1;		if (res)			fprintf(stderr, "read: %m\n");		free(var);      /* So not move up to avoid breaking errno */		return res;	} else {		do res=getchar(); while(res!='\n' && res!=EOF);		return 0;	}}/* built-in 'set VAR=value' handler */static int builtin_set(struct child_prog *child){	char *temp = child->argv[1];	struct variables *e;	if (temp == NULL)		for(e = top_vars; e; e=e->next)			printf("%s=%s\n", e->name, e->value);	else		set_local_var(temp, 0);		return EXIT_SUCCESS;}/* Built-in 'shift' handler */static int builtin_shift(struct child_prog *child){	int n=1;	if (child->argv[1]) {		n=atoi(child->argv[1]);	}	if (n>=0 && n<global_argc) {		/* XXX This probably breaks $0 */		global_argc -= n;		global_argv += n;		return EXIT_SUCCESS;	} else {		return EXIT_FAILURE;	}}/* Built-in '.' handler (read-in and execute commands from file) */static int builtin_source(struct child_prog *child){	FILE *input;	int status;	if (child->argv[1] == NULL)		return EXIT_FAILURE;	/* XXX search through $PATH is missing */	input = fopen(child->argv[1], "r");	if (!input) {		error_msg("Couldn't open file '%s'", child->argv[1]);		return EXIT_FAILURE;	}	/* Now run the file */	/* XXX argv and argc are broken; need to save old global_argv	 * (pointer only is OK!) on this stack frame,	 * set global_argv=child->argv+1, recurse, and restore. */	mark_open(fileno(input));	status = parse_file_outer(input);	mark_closed(fileno(input));	fclose(input);	return (status);}static int builtin_umask(struct child_prog *child){	mode_t new_umask;	const char *arg = child->argv[1];	char *end;	if (arg) {		new_umask=strtoul(arg, &end, 8);		if (*end!='\0' || end == arg) {			return EXIT_FAILURE;		}	} else {		printf("%.3o\n", (unsigned int) (new_umask=umask(0)));	}	umask(new_umask);	return EXIT_SUCCESS;}/* built-in 'unset VAR' handler */static int builtin_unset(struct child_prog *child){	/* bash returned already true */	unset_local_var(child->argv[1]);	return EXIT_SUCCESS;}static int builtin_not_written(struct child_prog *child){	printf("builtin_%s not written\n",child->argv[0]);	return EXIT_FAILURE;}static int b_check_space(o_string *o, int len){	/* It would be easy to drop a more restrictive policy	 * in here, such as setting a maximum string length */	if (o->length + len > o->maxlen) {		char *old_data = o->data;		/* assert (data == NULL || o->maxlen != 0); */		o->maxlen += max(2*len, B_CHUNK);		o->data = realloc(o->data, 1 + o->maxlen);		if (o->data == NULL) {			free(old_data);		}	}	return o->data == NULL;}static int b_addchr(o_string *o, int ch){	debug_printf("b_addchr: %c %d %p\n", ch, o->length, o);	if (b_check_space(o, 1)) return B_NOSPAC;	o->data[o->length] = ch;	o->length++;	o->data[o->length] = '\0';	return 0;}static void b_reset(o_string *o){	o->length = 0;	o->nonnull = 0;	if (o->data != NULL) *o->data = '\0';}static void b_free(o_string *o){	b_reset(o);	if (o->data != NULL) free(o->data);	o->data = NULL;	o->maxlen = 0;}/* My analysis of quoting semantics tells me that state information * is associated with a destination, not a source. */static int b_addqchr(o_string *o, int ch, int quote){	if (quote && strchr("*?[\\",ch)) {		int rc;		rc = b_addchr(o, '\\');		if (rc) return rc;	}	return b_addchr(o, ch);}/* belongs in utility.c */char *simple_itoa(unsigned int i){	/* 21 digits plus null terminator, good for 64-bit or smaller ints */	static char local[22];	char *p = &local[21];	*p-- = '\0';	do {		*p-- = '0' + i % 10;		i /= 10;	} while (i > 0);	return p + 1;}static int b_adduint(o_string *o, unsigned int i){	int r;	char *p = simple_itoa(i);	/* no escape checking necessary */	do r=b_addchr(o, *p++); while (r==0 && *p);	return r;}static int static_get(struct in_str *i){	int ch=*i->p++;	if (ch=='\0') return EOF;	return ch;}static int static_peek(struct in_str *i){	return *i->p;}static inline void cmdedit_set_initial_prompt(void){#ifndef BB_FEATURE_SH_FANCY_PROMPT	PS1 = NULL;#else	PS1 = getenv("PS1");	if(PS1==0)		PS1 = "\\w \\$ ";#endif	}static inline void setup_prompt_string(int promptmode, char **prompt_str){	debug_printf("setup_prompt_string %d ",promptmode);#ifndef BB_FEATURE_SH_FANCY_PROMPT	/* Set up the prompt */	if (promptmode == 1) {		if (PS1)			free(PS1);		PS1=xmalloc(strlen(cwd)+4);		sprintf(PS1, "%s %s", cwd, ( geteuid() != 0 ) ?  "$ ":"# ");		*prompt_str = PS1;	} else {		*prompt_str = PS2;	}#else	*prompt_str = (promptmode==1)? PS1 : PS2;#endif	debug_printf("result %s\n",*prompt_str);}static void get_user_input(struct in_str *i){	char *prompt_str;	static char the_command[BUFSIZ];	setup_prompt_string(i->promptmode, &prompt_str);#ifdef BB_FEATURE_COMMAND_EDITING	/*	 ** enable command line editing only while a command line	 ** is actually being read; otherwise, we'll end up bequeathing	 ** atexit() handlers and other unwanted stuff to our	 ** child processes (rob@sysgo.de)	 */	cmdedit_read_input(prompt_str, the_command);#else	fputs(prompt_str, stdout);	fflush(stdout);	the_command[0]=fgetc(i->file);	the_command[1]='\0';#endif	fflush(stdout);	i->p = the_command;}/* This is the magic location that prints prompts  * and gets data back from the user */static int file_get(struct in_str *i){	int ch;	ch = 0;	/* If there is data waiting, eat it up */	if (i->p && *i->p) {		ch=*i->p++;	} else {

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
精品欧美黑人一区二区三区| 亚洲夂夂婷婷色拍ww47| 一区二区三区不卡视频| 激情综合一区二区三区| 欧美视频一区二| 中文字幕第一区二区| 麻豆精品视频在线观看免费| 色综合久久天天| 久久久久久久一区| 久久精品国产成人一区二区三区| 久久精品999| 欧美日韩成人综合在线一区二区| 国产精品国产三级国产| 国产一二精品视频| 欧美videos中文字幕| 奇米影视一区二区三区| 欧洲精品中文字幕| 亚洲人成电影网站色mp4| 东方欧美亚洲色图在线| 欧美一级日韩免费不卡| 日韩av电影免费观看高清完整版在线观看| 色呦呦国产精品| 综合分类小说区另类春色亚洲小说欧美| 蜜臀久久99精品久久久画质超高清| 欧美午夜一区二区三区| 亚洲人快播电影网| 91久久国产最好的精华液| 综合欧美亚洲日本| 91免费看视频| 亚洲精品一二三| 91国模大尺度私拍在线视频| 一区二区成人在线视频 | 久久久久久9999| 免费成人在线影院| 精品少妇一区二区三区视频免付费| 蜜桃视频在线一区| 日韩视频123| 国产精品自产自拍| 久久久99精品久久| 成人午夜激情影院| 亚洲视频免费在线观看| 欧美在线观看你懂的| 午夜av电影一区| 日韩精品一区二区三区在线| 国产一区二区毛片| 中文字幕在线不卡| 精品视频1区2区| 麻豆成人久久精品二区三区小说| 亚洲精品一区在线观看| 高清国产午夜精品久久久久久| 中文一区二区在线观看| 色婷婷精品大在线视频| 亚洲成av人片在www色猫咪| 欧美一区二区三区成人| 国产福利一区二区三区视频在线| 亚洲欧美激情小说另类| 欧美日韩综合在线免费观看| 蜜臀av一区二区三区| 国产欧美精品区一区二区三区 | 亚洲码国产岛国毛片在线| 在线一区二区视频| 毛片av一区二区三区| 中文字幕不卡在线观看| 欧美色涩在线第一页| 韩国女主播成人在线| 亚洲激情校园春色| 久久精品亚洲乱码伦伦中文| 色嗨嗨av一区二区三区| 国产一区二区视频在线播放| 亚洲精品老司机| www日韩大片| 欧美日韩日日摸| 岛国一区二区三区| 日韩国产精品久久| 综合精品久久久| 久久久99精品久久| 欧美一区二区三区视频在线观看| www.视频一区| 久久99精品视频| 亚洲aaa精品| 国产精品久久久久久久久快鸭| 欧美日韩中文字幕一区| 成人一区二区三区中文字幕| 日韩精品成人一区二区三区| 1000部国产精品成人观看| 精品国产青草久久久久福利| 在线视频欧美精品| 972aa.com艺术欧美| 国产成人免费9x9x人网站视频| 日韩高清不卡在线| 一区二区三区国产豹纹内裤在线| 中文字幕av一区二区三区免费看 | 日韩欧美在线观看一区二区三区| 99re66热这里只有精品3直播 | 裸体一区二区三区| 亚洲成av人片在www色猫咪| 亚洲日本在线视频观看| 欧美激情一区二区三区四区| 精品国产一区二区国模嫣然| 欧美一区二区私人影院日本| 欧美少妇xxx| 在线视频国内自拍亚洲视频| 99久免费精品视频在线观看| 成人综合在线视频| 国产精品一区二区91| 国精品**一区二区三区在线蜜桃| 毛片一区二区三区| 九色porny丨国产精品| 免费观看久久久4p| 美女网站视频久久| 麻豆国产欧美日韩综合精品二区| 日本成人在线网站| 久久精品国产一区二区三| 久久爱www久久做| 韩国成人福利片在线播放| 国产综合色视频| 国产毛片精品视频| 国产+成+人+亚洲欧洲自线| 丁香婷婷深情五月亚洲| av在线这里只有精品| 色国产精品一区在线观看| 色视频一区二区| 在线区一区二视频| 欧美日韩久久久一区| 日韩一区二区精品葵司在线| 精品国产a毛片| 久久精品一区二区三区四区| 久久精品欧美日韩| 综合亚洲深深色噜噜狠狠网站| 亚洲伦理在线免费看| 日精品一区二区三区| 国产一区二区三区免费播放| 国产成人无遮挡在线视频| www.一区二区| 欧美日韩一本到| 精品国产亚洲一区二区三区在线观看| 久久精品水蜜桃av综合天堂| 亚洲欧洲精品一区二区三区不卡 | 国产精品大尺度| 亚洲中国最大av网站| 久久精品国产亚洲高清剧情介绍 | 日韩精品中文字幕一区二区三区| 亚洲精品在线免费播放| 中文字幕中文在线不卡住| 亚洲成人福利片| 国产成人自拍在线| 91久久国产最好的精华液| 精品久久久久久久久久久久久久久久久 | 中文字幕永久在线不卡| 亚洲成人动漫一区| 国产成人精品免费网站| 色就色 综合激情| 久久久久久久久久美女| 一区二区三区日韩精品| 国产一区二区三区香蕉| 欧美视频一区在线观看| 国产亚洲成aⅴ人片在线观看| 亚洲影视资源网| 国产麻豆成人精品| 欧美午夜精品免费| 国产免费成人在线视频| 亚洲成人在线网站| 99久久精品国产毛片| 久久这里只有精品首页| 亚洲一区二区视频| 99久久精品国产一区| 久久久蜜桃精品| 五月婷婷久久丁香| 91玉足脚交白嫩脚丫在线播放| 精品国产乱码久久久久久免费| 亚洲高清不卡在线观看| 成人免费视频视频在线观看免费 | 亚洲精品美国一| 国产99久久久久| 26uuu精品一区二区在线观看| 亚洲高清一区二区三区| 99视频一区二区| 中文字幕免费不卡在线| 国模冰冰炮一区二区| 日韩欧美在线影院| 五月激情丁香一区二区三区| 色菇凉天天综合网| 亚洲色图视频免费播放| jlzzjlzz欧美大全| 亚洲国产成人一区二区三区| 国产美女精品在线| 亚洲精品一区二区精华| 麻豆精品一区二区av白丝在线| 69堂成人精品免费视频| 亚洲韩国精品一区| 欧美性一区二区| 一区二区欧美精品| 91激情五月电影| 一区二区三区四区高清精品免费观看| caoporn国产一区二区| 中文字幕一区二区三区精华液| 处破女av一区二区| 日韩美女视频一区| 色先锋资源久久综合| 亚洲自拍偷拍网站|