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

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

?? util.c

?? linux 下的超級終端 minicom
?? C
字號:
/* * util.c       Little helper routines that didn't fit anywhere else. * *		This file is part of the minicom communications package, *		Copyright 1991-1995 Miquel van Smoorenburg. * *		This program is free software; you can redistribute it and/or *		modify it under the terms of the GNU General Public License *		as published by the Free Software Foundation; either version *		2 of the License, or (at your option) any later version. * * jseymour@jimsun.LinxNet.com (Jim Seymour) 03/26/98 - Added get_port() *    function to support multiple port specifications in config. */#ifdef HAVE_CONFIG_H#include <config.h>#endif#include "rcsid.h"RCSID("$Id: util.c,v 1.1.1.1 2003/03/30 18:55:54 al-guest Exp $")#include "port.h"#include "minicom.h"#include "intl.h"static int not_suid = -1;/* * A modified version of the getargs routine. */static int getargs(s, arps, maxargs)register char *s;char *arps[];int maxargs;{	register int i;	register char *sp;	register char qchar;	int literal = 0;	i = 0;	while (i < maxargs) {		while (*s == ' ' || *s == '\t')			++s;		if (*s == '\n' || *s == '\0')			break;		arps[i++] = sp = s;		qchar = 0;		while(*s != '\0'  &&  *s != '\n') {			if (literal) {				literal = 0;				*sp++ = *s++;				continue;			}			literal = 0;			if (qchar == 0 && (*s == ' ' || *s == '\t')) {				++s;				break;			}			switch(*s) {			default:				*sp++ = *s++;				break;			case '\\':				literal = 1;				s++;				break;				case '"':			case '\'':				if(qchar == *s) {					qchar = 0;					++s;					break;				}				if(qchar)					*sp++ = *s++;				else					qchar = *s++;				break;			}		}		*sp++ = 0;	}	if (i >= maxargs)		return -1;	arps[i] = (char *)0;	return i;}/* * Is a character from s2 in s1? */static int anys(s1, s2)char *s1, *s2;{  while(*s2)  	if (strchr(s1, *s2++) != (char *)NULL) return(1);  return(0);}/* * If there is a shell-metacharacter in "cmd", * call a shell to do the dirty work. */int fastexec(cmd)char *cmd;{  char *words[128];  char *p;  if (anys(cmd, "~`$&*()=|{};?><"))  	return(execl("/bin/sh", "sh", "-c", cmd, (char *)0));  /* Delete escape-characters ment for the shell */  p = cmd;  while((p = strchr(p, '\\')) != (char *)NULL)  	strcpy(p, p + 1);  /* Split line into words */  if (getargs(cmd, words, 127) < 0) {  	return(-1);  }  return (execvp(words[0], words));}/* * Fork, then redirect I/O if neccesary. * in    : new stdin * out   : new stdout * err   : new stderr * Returns exit status of "cmd" on success, -1 on error. */int fastsystem(cmd, in, out, err)char *cmd, *in, *out, *err;{  int pid;  int st;  int async = 0;  char *p;  /* If the command line ends with '&', don't wait for child. */  p = strrchr(cmd, '&');  if (p != (char *)0 && !p[1]) {  	*p = 0;  	async = 1;  }    /* Fork. */  if ((pid = fork()) == 0) { /* child */  	if (in != (char *)NULL) {  		close(0);  		if (open(in, O_RDONLY) < 0) exit(-1);  	}  	if (out != (char *)NULL) {  		close(1);  		if (open(out, O_WRONLY) < 0) exit(-1);  	}  	if (err != (char *)NULL) {  		close(2);  		if (open(err, O_RDWR) < 0) exit(-1);  	}  	exit(fastexec(cmd));  } else if (pid > 0) { /* parent */  	if (async) return(0);  	pid = m_wait(&st);  	if (pid < 0) return(-1);  	return(st);  }  return(-1);}/* Drop all priviliges (irreversable). */void drop_all_privs(){#ifdef HAS_REUID  /* Regain privs needed to drop privs :) */  setregid(real_gid, eff_gid);  setreuid(real_uid, eff_uid);#endif  /* Drop it. */  setgid(real_gid);  setuid(real_uid);  eff_uid = real_uid;  eff_gid = real_gid;  not_suid = 1;}/* Drop priviliges (swap uid's) */void drop_privs(){#ifdef HAS_REUID  setregid(eff_gid, real_gid);  if (setreuid(eff_uid, real_uid) < 0)	fprintf(stderr, _("minicom: cannot setreuid(%d, %d)\n"), eff_uid, real_uid);  not_suid = 1;#endif}/* Set priviliges (swap uid's) */void set_privs(){#ifdef HAS_REUID  setregid(real_gid, eff_gid);  if (setreuid(real_uid, eff_uid) < 0)	fprintf(stderr, _("minicom: cannot setreuid(%d, %d)\n"), real_uid, eff_uid);  not_suid = 0;#endif}/* Safe fopen for suid programs. */FILE *sfopen(file, mode)char *file;char *mode;{#ifdef HAS_REUID  int saved_errno;#else  char *p, buf[128];  struct stat stt;  int do_chown = 0;#endif  FILE *fp;  /* Initialize. */  if (not_suid < 0) not_suid = (real_uid == eff_uid);  /* If we're not running set-uid at the moment just open the file. */  if (not_suid) return (fopen(file, mode));#ifdef HAS_REUID  /* Just drop priviliges before opening the file. */  drop_privs();  fp = fopen(file, mode);  saved_errno = errno;  set_privs();  errno = saved_errno;  return(fp);#else  /* Read access? */  if (strcmp(mode, "r") == 0) {	if (access(file, R_OK) < 0) return(NULL);	return(fopen(file, mode));  }  /* Write access test. */  if (stat(file, &stt) == 0) {	if (access(file, W_OK) < 0) return(NULL);  } else {	/* Test if directory is writable. */	strncpy(buf, file, sizeof(buf));	if((p = strrchr(buf, '/')) == (char *)NULL)  		strcpy(buf, ".");	else		*p = '\0';	if (access(buf, W_OK) < 0) return(NULL);	do_chown = 1;  }  /* Now open/create the file. */  if ((fp = fopen(file, mode)) == NULL) return(fp);  if (!do_chown) return(fp);#ifndef HAS_FCHOWN  /* There is a security hole / race condition here. */  (void) chown(file, (uid_t)real_uid, (gid_t)real_gid);#else  /* But this is safe. */  (void) fchown(fileno(fp), (uid_t)real_uid, (gid_t)real_gid);#endif /* HAS_FCHOWN */  return(fp);#endif /* HAS_REUID */}/* * Get next port from a space-, comma-, colon-, or semi-colon-separated * list (we're easy :-)) in a PARS_VAL_LEN length string. * * Returns NULL pointer on end-of-list. * * This would appear to be more complicated than it needs be. * * WARNING: Not MT-safe.  Multiple calls to this routine modify the same * local static storage space. */char *get_port(char *port_list){  static char next_port[PARS_VAL_LEN];  static char loc_port_list[PARS_VAL_LEN];  static char *sp = NULL;  static char *ep;  /* first pass? */  if(sp == NULL) {    strncpy(loc_port_list, port_list, PARS_VAL_LEN);    loc_port_list[PARS_VAL_LEN] = (char) 0;    ep = &loc_port_list[strlen(loc_port_list)];    sp = strtok(loc_port_list, ":;, ");  }  else if(*sp != (char) 0) {    sp = strtok(sp, ":;, ");  }  else    sp = NULL;  if(sp != NULL) {       strncpy(next_port, sp, PARS_VAL_LEN);       next_port[PARS_VAL_LEN] = (char) 0;       /* point to next token--skipping multiple occurrences of delimiters */       for(sp += strlen(next_port); sp != ep && *sp != '/'; ++sp)	 ;       return(next_port);  }  else {    return(NULL);  }}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲第一电影网| 国产精品色眯眯| 91福利资源站| 99久久久无码国产精品| 不卡一卡二卡三乱码免费网站| 国产精品一区久久久久| 免费成人在线影院| 久久精品国产精品亚洲精品| 久久精品久久99精品久久| 蜜臀av国产精品久久久久| 麻豆国产精品777777在线| 精久久久久久久久久久| 国产成人综合在线| av资源网一区| 欧美专区在线观看一区| 91精品久久久久久久久99蜜臂| 日韩亚洲欧美高清| 欧美激情一区二区三区不卡 | 精品sm捆绑视频| 久久综合九色综合欧美98| 国产精品无人区| 蜜桃一区二区三区在线| 国模娜娜一区二区三区| 不卡一区二区三区四区| 欧美丰满一区二区免费视频| 精品久久久久99| 中文字幕一区二区三区视频 | 精品一区二区影视| 国产aⅴ综合色| 欧美午夜寂寞影院| 国产亚洲综合性久久久影院| 亚洲自拍偷拍av| 日韩av在线播放中文字幕| 激情综合色播激情啊| 99国产精品视频免费观看| 日韩欧美中文一区| 亚洲视频一区二区在线| 美日韩一级片在线观看| 99久久精品国产观看| 日韩一区二区不卡| 亚洲精品欧美综合四区| 久久国产福利国产秒拍| 欧美午夜一区二区三区| 国产欧美一区二区精品仙草咪| 亚洲成人久久影院| 国产99久久久国产精品免费看| 欧美日韩一区 二区 三区 久久精品| 久久亚洲综合av| 视频一区二区三区在线| 国产盗摄女厕一区二区三区| 欧美精品一级二级| 中文字幕 久热精品 视频在线| 亚洲线精品一区二区三区| 精品一区二区久久久| 欧美性猛交xxxx乱大交退制版| 国产精品无人区| 国产一区二区视频在线播放| 欧美二区在线观看| 国产精品久久久久久户外露出| 美国三级日本三级久久99| 91精品1区2区| 亚洲人成电影网站色mp4| 黄一区二区三区| 日韩一区二区三区精品视频| 一区二区三区久久久| 大白屁股一区二区视频| 26uuu欧美| 国产一区三区三区| 日韩欧美不卡一区| 丝袜亚洲另类丝袜在线| 欧美日韩精品一区视频| 日本在线不卡一区| 色视频成人在线观看免| 亚洲欧洲日本在线| 福利一区福利二区| 中文字幕巨乱亚洲| 粉嫩av一区二区三区在线播放 | 国产99久久久精品| 久久久午夜电影| 国产精品 欧美精品| 欧美精品一区二区高清在线观看| 日本特黄久久久高潮| 91精品国产乱码久久蜜臀| 石原莉奈在线亚洲二区| 欧美一区二区啪啪| 精品制服美女久久| 久久看人人爽人人| 国产成人精品三级麻豆| 国产视频一区不卡| 成人av资源网站| 亚洲国产综合在线| 精品美女在线观看| 99久久久久久99| 图片区小说区国产精品视频| 欧美成人激情免费网| 成人aaaa免费全部观看| 一区二区三区视频在线观看| 欧美日韩国产一二三| 麻豆精品一区二区三区| 久久午夜老司机| 色综合色综合色综合色综合色综合 | 国产欧美一区二区精品秋霞影院| 从欧美一区二区三区| 亚洲一区二区在线观看视频| 91精品国产手机| 国产精品亚洲第一| 亚洲激情图片一区| 日韩精品一区二区三区四区| 成人h动漫精品一区二| 亚洲国产日韩一级| 国产视频视频一区| 欧美高清dvd| 成人91在线观看| 麻豆91小视频| 亚洲伦理在线精品| 精品精品国产高清a毛片牛牛 | 99视频一区二区三区| 日韩成人一级片| 亚洲男人的天堂av| 精品三级av在线| 欧美日韩国产影片| www.激情成人| 国产一区二区不卡老阿姨| 亚洲国产aⅴ成人精品无吗| 国产视频一区在线观看| 91精品免费在线观看| 91成人看片片| 99麻豆久久久国产精品免费| 国产一区在线观看麻豆| 日韩高清国产一区在线| 亚洲欧美日韩国产另类专区| 国产女人18水真多18精品一级做| 欧美日韩综合一区| 一本一道久久a久久精品综合蜜臀| 国产一区在线精品| 九九九精品视频| 免费av成人在线| 丝袜a∨在线一区二区三区不卡| 日韩一区在线看| 国产精品伦一区| 亚洲国产精品传媒在线观看| 欧美大片一区二区| 日韩欧美亚洲国产另类| 91精品免费在线观看| 91麻豆精品国产91久久久 | 日韩精品一区二区三区三区免费| 欧美午夜影院一区| 色视频欧美一区二区三区| 色综合激情久久| 99riav久久精品riav| 不卡电影免费在线播放一区| 成人激情小说网站| 成人高清伦理免费影院在线观看| 国产精品77777| 高清在线成人网| jlzzjlzz国产精品久久| 99精品视频在线观看免费| www.在线成人| 日本乱人伦aⅴ精品| 日本电影欧美片| 欧美美女一区二区在线观看| 欧美精品电影在线播放| 欧美美女一区二区三区| 欧美电影精品一区二区| 国产欧美综合在线观看第十页 | 欧美专区亚洲专区| 欧美日本一区二区三区四区| 日韩精品中文字幕一区二区三区| 日韩久久精品一区| 国产精品视频一二| 亚洲一区二区三区视频在线播放| 日本sm残虐另类| 国产一区二区三区免费观看| 波多野结衣精品在线| 91九色最新地址| 欧美r级电影在线观看| 国产精品免费免费| 一区二区视频在线| 蜜桃一区二区三区在线| 国产成a人亚洲| 欧美日韩午夜影院| 精品福利在线导航| 最新不卡av在线| 午夜一区二区三区在线观看| 国产盗摄女厕一区二区三区| 在线观看视频91| 久久久久9999亚洲精品| 一区二区三区产品免费精品久久75| 秋霞午夜鲁丝一区二区老狼| 国产99久久久国产精品潘金| 欧美久久久久久蜜桃| 欧美国产日韩亚洲一区| 亚洲成人tv网| 成人高清视频在线观看| 在线电影国产精品| 亚洲日本欧美天堂| 国产精品18久久久久| 欧美电影一区二区三区| 国产精品白丝在线| 精品一区二区av|