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

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

?? script.c

?? linux 下的超級終端 minicom
?? 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 * 04.03.2002 jl Treat the ^ character between quotes as control code prefix */#ifdef HAVE_CONFIG_H#include <config.h>#endif#include "rcsid.h"RCSID(PKG_VER "$Id: script.c,v 1.2 2003/03/30 19:51:53 godisch 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;  		}  	}	/* ^ prefix for control chars - jl 3.2002 */	if (sawq == 1 && t[len] == '^' && t[len + 1] != 0) {		char c = toupper(t[len + 1]);		if (c >= 'A' && c <= '_') {			len++;			buf[idx++] = c - 'A' + 1;			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)

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩av中文字幕一区二区三区| 日韩欧美一区二区三区在线| 国产精品福利av| 成人动漫av在线| 亚洲欧洲av色图| 欧美日韩综合在线| 日韩精品成人一区二区三区 | 久久夜色精品国产噜噜av| 久久国产精品99久久人人澡| 久久综合九色综合欧美就去吻| 激情五月婷婷综合网| 亚洲国产经典视频| 欧美私人免费视频| 韩日av一区二区| 国产精品久久久久久久岛一牛影视 | 欧美精品在线一区二区三区| 蜜臀av一区二区在线观看 | 91国模大尺度私拍在线视频| 亚洲一区av在线| 精品久久久久久久久久久院品网| 国产精品一区二区在线观看不卡| 亚洲精品一二三四区| 欧美日韩欧美一区二区| 国产精品1区2区3区| 亚洲美女偷拍久久| 欧美精品一区二区三区高清aⅴ | 欧美日韩二区三区| 国产麻豆一精品一av一免费| 亚洲精品日日夜夜| 精品国产免费人成在线观看| 一本色道**综合亚洲精品蜜桃冫 | 久久69国产一区二区蜜臀| 日本一区二区电影| 欧美一区二区三区在线视频| av毛片久久久久**hd| 视频一区在线播放| 亚洲人成亚洲人成在线观看图片| 日韩精品在线一区| 欧美日韩一区二区三区在线| 国产91精品免费| 麻豆精品蜜桃视频网站| 亚洲欧美日韩国产手机在线| 久久综合久久综合亚洲| 欧美日韩一区二区三区四区 | 一区二区三区在线视频免费观看| 日韩视频永久免费| 日本韩国欧美三级| 国产成人免费在线视频| 日韩国产成人精品| 亚洲国产另类av| 中文在线一区二区| 精品国产乱码久久久久久浪潮| 欧美亚洲丝袜传媒另类| 99在线精品视频| 懂色av噜噜一区二区三区av| 久久精品国产在热久久| 午夜私人影院久久久久| 亚洲日本欧美天堂| 国产精品狼人久久影院观看方式| 久久久亚洲午夜电影| 日韩美一区二区三区| 正在播放一区二区| 777奇米成人网| 欧美日韩成人一区二区| 欧美午夜精品免费| 欧美性xxxxxxxx| 欧美日韩午夜影院| 色综合久久66| 91色在线porny| 色综合中文字幕国产| 粉嫩欧美一区二区三区高清影视| 精品一区二区国语对白| 久草在线在线精品观看| 久久99精品久久久久久| 国精产品一区一区三区mba视频| 蜜臀av一区二区| 国产一区二区视频在线| 国产精品一区二区男女羞羞无遮挡 | 日韩视频免费直播| 欧美一区二区三区视频在线| 欧美日韩视频在线第一区 | 国产精品久久久久一区二区三区| 久久久99精品久久| 国产精品你懂的在线欣赏| 中文一区一区三区高中清不卡| 国产精品丝袜在线| 日韩毛片在线免费观看| 亚洲美女视频在线| 亚洲地区一二三色| 蜜臀91精品一区二区三区 | 国产福利一区二区三区视频 | 日韩一区日韩二区| 一区二区三区欧美日| 性久久久久久久久久久久| 蜜桃精品在线观看| 国产老女人精品毛片久久| 成人免费观看视频| 色88888久久久久久影院按摩| 91久久久免费一区二区| 91精品国产91热久久久做人人| 日韩免费在线观看| 国产日韩一级二级三级| 亚洲欧美国产三级| 日韩成人一区二区| 成人精品视频一区二区三区 | 欧美成人免费网站| 国产精品久久久久久亚洲伦| 亚洲国产精品影院| 国产一区二区三区黄视频| gogo大胆日本视频一区| 欧美三级在线播放| 久久人人爽人人爽| 亚洲一区二区三区在线| 日本不卡视频在线观看| 久久er99精品| 日本道色综合久久| 久久久久青草大香线综合精品| 亚洲猫色日本管| 久久99国产乱子伦精品免费| 暴力调教一区二区三区| 日韩欧美激情一区| 一区二区在线观看av| 麻豆91免费观看| 欧亚洲嫩模精品一区三区| 26uuu另类欧美| 亚洲国产视频在线| 成人精品鲁一区一区二区| 欧美日韩国产影片| 国产精品久久久一本精品| 久久精品国产免费| 欧美中文字幕一区二区三区 | 最新不卡av在线| 国模冰冰炮一区二区| 欧美剧情电影在线观看完整版免费励志电影 | 久久蜜臀精品av| 午夜精品免费在线| 91美女在线观看| 国产欧美一区二区三区网站| 日本v片在线高清不卡在线观看| 一本色道久久综合亚洲精品按摩| 久久久久久久久久久99999| 日韩电影在线观看网站| 91黄色激情网站| 国产精品免费av| 国产aⅴ综合色| 久久色.com| 麻豆中文一区二区| 欧美精品久久99久久在免费线| 亚洲免费av高清| 99精品欧美一区二区三区小说| 久久午夜电影网| 久久精品国产精品亚洲综合| 欧美日韩国产一二三| 亚洲综合在线免费观看| 色综合色狠狠综合色| 国产精品美女一区二区三区 | 亚洲免费视频成人| 不卡在线观看av| 欧美极品xxx| 国产盗摄视频一区二区三区| 精品黑人一区二区三区久久| 日本成人在线一区| 欧美一区二区三区色| 日韩黄色在线观看| 欧美一区二区三区视频免费| 日本特黄久久久高潮| 欧美一区二区三区日韩视频| 免费看欧美女人艹b| 欧美一区二区三区小说| 奇米色一区二区三区四区| 91麻豆精品国产自产在线 | 激情综合网激情| 精品国产欧美一区二区| 国产中文字幕精品| 国产日韩精品一区| av不卡免费在线观看| 最新国产の精品合集bt伙计| 色婷婷激情久久| 亚洲va欧美va人人爽| 日韩欧美成人一区二区| 国产一区视频在线看| 国产精品久久久久久久蜜臀| 91美女视频网站| 婷婷夜色潮精品综合在线| 日韩欧美不卡在线观看视频| 国产一区二区精品久久91| 国产精品欧美久久久久无广告 | 国产目拍亚洲精品99久久精品| 国产91对白在线观看九色| 亚洲视频一二区| 欧美精品免费视频| 国产一区美女在线| 亚洲欧洲在线观看av| 欧美色网站导航| 精品一区二区免费在线观看| 亚洲欧洲在线观看av| 欧美美女喷水视频| 国产乱妇无码大片在线观看| 亚洲精品欧美激情| 日韩欧美色综合网站|