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

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

?? script.c

?? minicom2.0源代碼
?? C
?? 第 1 頁 / 共 2 頁
字號:
/* * Runscript    Run a login-or-something script. *		A basic like "programming language". *		This program also looks like a basic interpreter : *		a bit messy. (But hey, I'm no compiler writer :-)) * * Author:	Miquel van Smoorenburg, miquels@drinkel.ow.nl * * Bugs:	The "expect" routine is, unlike gosub, NOT reentrant ! * *		This file is part of the minicom communications package, *		Copyright 1991-1995 Miquel van Smoorenburg, *		1997-1999 Jukka Lahtinen * *		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. * * 10.07.98 jl  Added the log command * 05.04.99 jl  The logfile name should also be passed as a parameter */#ifdef HAVE_CONFIG_H#include <config.h>#endif#include "rcsid.h"RCSID(PKG_VER "$Id: script.c,v 1.4 2000/09/19 18:04:51 walker Exp $")#include "port.h"#include "minicom.h"#include "intl.h" #define OK	0#define ERR	-1#define RETURN	1#define BREAK	2#ifndef lintchar *Version = "@(#)runscript 1.23 31-May-1999 JL";#endifstruct line {  char *line;  int labelcount;  int lineno;  struct line *next;};struct var {  char *name;  int value;  struct var *next;};#define LNULL ((struct line *)0)#define VNULL ((struct var  *)0)#ifndef CNULL#define CNULL ((char *)0)#endif/* * Structure describing the script we are currently executing. */struct env {  struct line *lines;		/* Start of all lines */  struct var *vars;		/* Start of all variables */  char *scriptname;		/* Name of this script */  int verbose;			/* Are we verbose? */  jmp_buf ebuf;			/* For exit */  int exstat;			/* For exit */};  struct env *curenv;		/* Execution environment */  int gtimeout = 120;		/* Global Timeout */int etimeout = 0;		/* Timeout in expect routine */jmp_buf ejmp;			/* To jump to if expect times out */int inexpect = 0;		/* Are we in the expect routine */char *newline;			/* What to print for '\n'. */char *s_login = "name";		/* User's login name */char *s_pass = "password";	/* User's password */struct line *thisline;		/* Line to be executed */ int laststatus = 0;		/* Status of last command */char homedir[256];		/* Home directory */char logfname[PARS_VAL_LEN];	/* Name of logfile */static char inbuf[65];		/* Input buffer. *//* Forward declarations */int s_exec();int execscript();/* * Print something formatted to stderr. *//*VARARGS*/ void s_error(fmt, a1, a2, a3, a4)char *fmt;char *a1, *a2, *a3, *a4;{  fprintf(stderr, fmt, a1, a2, a3, a4);}/* * Walk through the environment, see if LOGIN and/or PASS are present. * If so, delete them. (Someone using "ps" might see them!) */void init_env(){  extern char **environ;  char **e;  for(e = environ; *e; e++) {	if (!strncmp(*e, "LOGIN=", 6)) {		s_login = (*e) + 6;		*e = "LOGIN=";	}	if (!strncmp(*e, "PASS=", 5)) {		s_pass = (*e) + 5;		*e = "PASS=";	}  }}/* * Return an environment variable. */char *mygetenv(env)char *env;{  if (!strcmp(env, "LOGIN")) return(s_login);  if (!strcmp(env, "PASS")) return(s_pass);  return(getenv(env));}/* * Display a syntax error and exit. */void syntaxerr(s)char *s;{  s_error(_("script \"%s\": syntax error in line %d %s%s\n"),	  curenv->scriptname, thisline->lineno, s, "\r");  exit(1);	}/* * Skip all space */void skipspace(s)char **s;{  while(**s == ' ' || **s == '\t') (*s)++;}  /* * Our clock. This gets called every second. *//*ARGSUSED*/void myclock(dummy)int dummy;{  (void)dummy;  signal(SIGALRM, myclock);  alarm(1);  if (--gtimeout == 0) {  	s_error(_("script \"%s\": global timeout%s\n"),		curenv->scriptname,"\r");  	exit(1);  }	  if (inexpect && etimeout && --etimeout == 0) siglongjmp(ejmp, 1);}/* * Read a word and advance pointer. * Also processes quoting, variable substituting, and \ escapes. */char *getword(s)char **s;{  static char buf[81];  int len, f;  int idx = 0;  char *t = *s;  int sawesc = 0;  int sawq = 0;  char *env, envbuf[32];  if (**s == 0) return(CNULL);  for(len = 0; len < 81; len++) {  	if (sawesc && t[len]) {  		sawesc = 0;  		if (t[len] <= '7' && t[len] >= '0') {  			buf[idx] = 0;  			for(f = 0; f < 4 && len < 81 && t[len] <= '7' &&  			    t[len] >= '0'; f++)   				buf[idx] = 8*buf[idx] + t[len++] - '0';  			if (buf[idx] == 0) buf[idx] = '@';	  			idx++; len--;  			continue;  		}  		switch(t[len]) {  			case 'r':  				buf[idx++] = '\r';  				break;  			case 'n':  				buf[idx++] = '\n';  				break;  			case 'b':  				buf[idx++] = '\b';  				break;#ifndef _HPUX_SOURCE  			case 'a':  				buf[idx++] = '\a';	  				break;#endif  			case 'f':  				buf[idx++] = '\f';  				break;  			case 'c':  				buf[idx++] = 255;  				break;  			default:  				buf[idx++] = t[len];  				break;  		}	  		sawesc = 0;  		continue;  	}  	if (t[len] == '\\') {  		sawesc = 1;  		continue;  	}  	if (t[len] == '"') {  		if (sawq == 1) {  			sawq = 0;  			len++;  			break;  		}	  		sawq = 1;  		continue;  	}  	if (t[len] == '$' && t[len + 1] == '(') {  		for(f = len; t[f] && t[f] != ')'; f++)  			;  		if (t[f] == ')') {  			strncpy(envbuf, &t[len + 2], f - len - 2);  			envbuf[f - len - 2] = 0;  			len = f;  			env = mygetenv(envbuf);  			if (env == CNULL) env = "";  			while(*env) buf[idx++] = *env++;  			continue;  		}  	}  	if((!sawq && (t[len] == ' ' || t[len] == '\t')) || t[len] == 0) break;  	buf[idx++] = t[len];  }  buf[idx] = 0;	  (*s) += len;  skipspace(s);	  if (sawesc || sawq) syntaxerr(_("(word contains ESC or quote)"));  return(buf);}/* * Save a string to memory. Strip trailing '\n'. */char *strsave(s)char *s;{  char *t;  int len;  len = strlen(s);  if (len && s[len - 1] == '\n') s[--len] = 0;  if ((t = (char *)malloc(len + 1)) == (char *)0) return(t);  strcpy(t, s);  return(t);}/* * Throw away all malloced memory. */void freemem(){  struct line *l, *nextl;  struct var *v, *nextv;  for(l = curenv->lines; l; l = nextl) {	nextl = l->next;  	free((char *)l->line);  	free((char *)l);  }  for(v = curenv->vars; v; v = nextv) {	nextv = v->next;  	free(v->name);  	free((char *)v);  }}/* * Read a script into memory. */int readscript(s)char *s;{  FILE *fp;  struct line *tl, *prev = LNULL;  char *t;  char buf[81];  int no = 0;  if ((fp = fopen(s, "r")) == (FILE *)0) {  	s_error(_("runscript: couldn't open %s%s\n"), s, "\r");  	exit(1);  }    /* Read all the lines into a linked list in memory. */  while((t = fgets(buf, 80, fp)) != CNULL) {  	no++;  	skipspace(&t);  	if (*t == '\n') continue;  	if (  ((tl = (struct line *)malloc(sizeof (struct line))) == LNULL) ||  	      ((tl->line = strsave(t)) == CNULL)) {  			s_error(_("script %s: out of memory%s\n"), s, "\r");  			exit(1);  	}  	if (prev)  		prev->next = tl;  	else  		curenv->lines = tl;  	tl->next = (struct line *)0;  	tl->labelcount = 0;  	tl->lineno = no;  	prev = tl;  }  return(0);}/* Read one character, and store it in the buffer. */void readchar(){  char c;  int n;  while((n = read(0, &c, 1)) != 1)  	if (errno != EINTR) break;    if (n <= 0) return;  /* Shift character into the buffer. */#ifdef _SYSV  memcpy(inbuf, inbuf + 1, 63);#else#  ifdef _BSD43  bcopy(inbuf + 1, inbuf, 63);#  else  /* This is Posix, I believe. */  memmove(inbuf, inbuf + 1, 63);#  endif#endif  if (curenv->verbose) fputc(c, stderr);	  inbuf[63] = c;}/* See if a string just came in. */int expfound(word)char *word;{  int len;  len = strlen(word);  if (len > 64) len = 64;  return(!strcmp(inbuf + 64 - len, word));}/* * Send text to a file (stdout or stderr). */int output(text, fp)char *text;FILE *fp;{  unsigned char *w;  int first = 1;  int donl = 1;  while((w = (unsigned char *)getword(&text)) != (unsigned char *)0) {  	if (!first) fputc(' ', fp);  	first = 0;  	for(; *w; w++) {  		if (*w == 255) {  			donl = 0;  			continue;  		}  		if (*w == '\n')  			fputs(newline, fp);  		else	  			fputc(*w, fp);  	}  }  if (donl) fputs(newline, fp);  fflush(fp);  return(OK);}/* * Find a variable in the list. * If it is not there, create it. */struct var *getvar(name, cr)char *name;int cr;{  struct var *v, *end = VNULL;    for(v = curenv->vars; v; v = v->next) {  	end = v;  	if (!strcmp(v->name, name)) return(v);  }  if (!cr) {  	s_error(_("script \"%s\" line %d: unknown variable \"%s\"%s\n"),  		curenv->scriptname, thisline->lineno, name, "\r");  	exit(1);  }  if ((v = (struct var *)malloc(sizeof(struct var))) == VNULL ||      (v->name = strsave(name)) == CNULL) {  	s_error(_("script \"%s\": out of memory%s\n"),		curenv->scriptname, "\r");  	exit(1);  }  if (end)	end->next = v;  else  	curenv->vars = v;	  v->next = VNULL;  v->value = 0;  return(v);}/* * Read a number or variable. */int getnum(text)char *text;{  int val;  if (!strcmp(text, "$?")) return(laststatus);  if ((val = atoi(text)) != 0 || *text == '0') return(val);  return(getvar(text, 0)->value);}  	/* * Get the lines following "expect" into memory. */struct line **buildexpect(){  static struct line *seq[17];  int f;  char *w, *t;    for(f = 0; f < 16; f++) {  	if (thisline == LNULL) {  		s_error(_("script \"%s\": unexpected end of file%s\n"),   			curenv->scriptname, "\r");  		exit(1);	  	}  	t = thisline->line;  	w = getword(&t);  	if (!strcmp(w, "}")) {  		if (*t) syntaxerr(_("(garbage after })")); 		seq[f] = NULL;  		return(seq);  	}  	seq[f] = thisline;  	thisline = thisline->next;  }  if (f == 16) syntaxerr(_("(too many arguments)"));  return(seq);}/* * Our "expect" function. */int expect(text)char *text;{  char *s, *w;  struct line **seq;  struct line oneline;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
精品亚洲免费视频| 夜夜精品浪潮av一区二区三区| 日本中文字幕不卡| 在线综合+亚洲+欧美中文字幕| 日韩国产一区二| 欧美电视剧在线观看完整版| 精品一区中文字幕| 中文一区在线播放| 色综合久久88色综合天天免费| 亚洲1区2区3区视频| 欧美一级久久久| 国产99一区视频免费 | 欧美mv和日韩mv国产网站| 男女性色大片免费观看一区二区| 日韩精品专区在线| 福利视频网站一区二区三区| 亚洲精品乱码久久久久久黑人| 欧美日韩久久久| 精品无人码麻豆乱码1区2区| 国产精品美女久久久久久久网站| 91精品福利在线| 精品一区二区在线观看| 欧美国产禁国产网站cc| 欧美色欧美亚洲另类二区| 精品午夜一区二区三区在线观看| 亚洲特黄一级片| 精品免费视频一区二区| 不卡一区在线观看| 日本视频在线一区| ...av二区三区久久精品| 欧美精品v日韩精品v韩国精品v| 精品中文字幕一区二区| 亚洲黄色录像片| 久久久久亚洲蜜桃| 欧美日韩一区二区三区不卡| 国产成人亚洲精品狼色在线| 国产成人免费9x9x人网站视频| 亚洲四区在线观看| 精品日韩一区二区三区免费视频| 色婷婷国产精品| 韩国一区二区视频| 亚洲成人av一区二区| 国产精品全国免费观看高清| 日韩欧美第一区| 欧美性受xxxx| voyeur盗摄精品| 另类综合日韩欧美亚洲| 一区二区三国产精华液| 国产精品美女视频| 久久久综合精品| 欧美一区二区三区白人| 欧洲色大大久久| 91在线无精精品入口| 国产福利精品导航| 久久国产乱子精品免费女| 亚洲一区二区三区国产| 综合久久久久久| 国产日本欧美一区二区| 精品理论电影在线观看 | 不卡视频一二三四| 精品在线播放午夜| 日本亚洲视频在线| 亚洲成人在线观看视频| 亚洲欧美日韩国产成人精品影院| 国产精品视频你懂的| 国产三级欧美三级日产三级99| 日韩精品一区二区三区在线观看| 欧美久久一二区| 欧美日韩国产色站一区二区三区| 91香蕉视频mp4| 91免费看片在线观看| 不卡视频免费播放| 波多野结衣中文字幕一区| 成人在线视频首页| 成人听书哪个软件好| av成人免费在线| 99久久亚洲一区二区三区青草 | 99视频超级精品| www.欧美亚洲| 色域天天综合网| 在线一区二区三区四区五区 | 91麻豆精品国产自产在线 | 国产成人夜色高潮福利影视| 国产一区二区在线视频| 国产精品1024久久| 成人免费视频视频| 色综合久久久久网| 欧美日韩国产首页在线观看| 91精选在线观看| 精品国产乱码久久久久久久久| 久久免费美女视频| 国产精品水嫩水嫩| 一区二区三区中文字幕在线观看| 亚洲综合自拍偷拍| 日韩精品一级中文字幕精品视频免费观看 | 一区二区三区免费| 亚洲国产精品久久久久婷婷884 | 日本韩国一区二区| 欧美三级视频在线观看| 欧美一区二区三区免费在线看| 精品国产髙清在线看国产毛片| 久久久久久久久岛国免费| 中文av字幕一区| 亚洲精品成人悠悠色影视| 天涯成人国产亚洲精品一区av| 蜜臀av一级做a爰片久久| 国产精品18久久久久久久久 | 国产女主播视频一区二区| 日韩一区欧美小说| 五月天国产精品| 国模冰冰炮一区二区| 91色婷婷久久久久合中文| 欧美精品久久久久久久多人混战| 欧美精品一区二区久久久| 国产精品成人午夜| 日韩精品亚洲专区| 成人午夜电影久久影院| 欧美日韩一区二区三区四区| 2欧美一区二区三区在线观看视频| 亚洲欧洲成人av每日更新| 日韩综合一区二区| av电影在线观看不卡| 日韩一区二区免费在线电影| 日韩一区在线免费观看| 麻豆精品一二三| 色视频一区二区| 国产日韩精品一区二区三区| 亚洲国产一区二区三区| 国产精品亚洲人在线观看| 欧美体内she精视频| 国产亚洲美州欧州综合国| 亚洲高清视频的网址| 国产成人鲁色资源国产91色综| 制服丝袜激情欧洲亚洲| 一区二区中文字幕在线| 国产一区美女在线| 777久久久精品| 亚洲欧美一区二区三区极速播放| 九色综合国产一区二区三区| 欧美视频在线一区二区三区| 国产精品美女视频| 国产一区二区三区蝌蚪| 337p亚洲精品色噜噜狠狠| 亚洲免费观看高清完整版在线观看| 国产曰批免费观看久久久| 91精品国产欧美一区二区成人 | 欧美激情一区二区三区四区| 蜜臀av一区二区| 7777女厕盗摄久久久| 亚洲亚洲精品在线观看| 91免费观看视频在线| 欧美国产激情一区二区三区蜜月| 久久精品国产77777蜜臀| 欧美高清性hdvideosex| 亚洲一区二区四区蜜桃| 91年精品国产| 亚洲裸体xxx| www.亚洲激情.com| 国产精品狼人久久影院观看方式| 国产iv一区二区三区| 国产日产欧美一区二区视频| 国产在线观看一区二区| 日韩欧美一级二级| 美女网站在线免费欧美精品| 67194成人在线观看| 日韩电影一区二区三区| 欧美精品粉嫩高潮一区二区| 天堂精品中文字幕在线| 3751色影院一区二区三区| 奇米影视7777精品一区二区| 51精品国自产在线| 免费亚洲电影在线| 日韩免费观看2025年上映的电影| 蜜臀a∨国产成人精品| 91精品国产一区二区三区蜜臀| 免费在线观看一区二区三区| 日韩视频一区二区在线观看| 九九九久久久精品| 久久精品一区蜜桃臀影院| 国产999精品久久久久久绿帽| 国产精品亲子伦对白| jvid福利写真一区二区三区| 亚洲精品一二三| 欧美久久一区二区| 精品中文字幕一区二区| 国产欧美精品一区二区三区四区| eeuss鲁一区二区三区| 亚洲视频在线观看三级| 欧美日韩高清在线| 狠狠色狠狠色综合日日91app| 久久精品免费在线观看| 99久久久国产精品免费蜜臀| 亚洲第一搞黄网站| 亚洲欧美国产三级| 欧美自拍丝袜亚洲| 男人的天堂亚洲一区| 国产精品久久久久天堂| 欧美色涩在线第一页| 美女在线视频一区| 国产精品国产三级国产aⅴ中文|