亚洲欧美第一页_禁久久精品乱码_粉嫩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一区二区三区免费野_久草精品视频
国产亚洲人成网站| 欧美久久一二区| 婷婷中文字幕一区三区| 国产午夜精品在线观看| 欧美日韩精品电影| 99久久99精品久久久久久| 青青青伊人色综合久久| 一区二区三区在线视频免费观看| 日韩久久免费av| 欧美日韩亚洲综合一区| 成人小视频免费在线观看| 麻豆精品视频在线| 亚洲成人动漫在线免费观看| 欧美国产日韩a欧美在线观看| 在线综合+亚洲+欧美中文字幕| 91亚洲国产成人精品一区二区三 | 成人高清免费观看| 美腿丝袜一区二区三区| 亚洲成年人影院| 亚洲免费电影在线| 中文无字幕一区二区三区| 日韩亚洲欧美一区| 欧美日韩另类一区| 欧美色中文字幕| 在线欧美小视频| 在线观看亚洲精品视频| 96av麻豆蜜桃一区二区| av中文一区二区三区| 成人国产视频在线观看| 国产成人av影院| 国产酒店精品激情| 国产亚洲精品7777| 成人一区二区在线观看| 国产成人在线观看| 国产毛片精品一区| 精品亚洲欧美一区| 久久国产福利国产秒拍| 毛片av中文字幕一区二区| 麻豆成人久久精品二区三区小说| 日av在线不卡| 精品一区二区三区久久| 国产乱人伦偷精品视频不卡| 国产资源精品在线观看| 国产一区二区0| 国产精品一区久久久久| 国产盗摄视频一区二区三区| 国产成人av影院| 99精品欧美一区二区三区小说| 99精品久久99久久久久| 色综合天天综合| 欧美人体做爰大胆视频| 91.com视频| 精品日韩欧美在线| 国产婷婷色一区二区三区四区| 欧美国产精品劲爆| 综合久久给合久久狠狠狠97色| 一区二区三区精密机械公司| 婷婷亚洲久悠悠色悠在线播放| 美国精品在线观看| 国产99精品在线观看| 色综合咪咪久久| 9191国产精品| 国产色产综合产在线视频| 国产精品久久久久久一区二区三区 | 97久久人人超碰| 色偷偷88欧美精品久久久| 欧美日本在线播放| 久久久欧美精品sm网站| 一区二区三区四区不卡视频| 欧美精品xxxxbbbb| 欧美视频精品在线| 亚洲精品在线免费观看视频| **网站欧美大片在线观看| 亚洲一区二区三区四区五区黄| 日韩黄色免费电影| 成人中文字幕电影| 欧美日韩视频一区二区| 国产欧美一区二区在线| 亚洲一区二区偷拍精品| 久久国产精品99久久人人澡| 91在线码无精品| 欧美电影免费提供在线观看| 亚洲三级电影全部在线观看高清| 日韩电影一区二区三区四区| 成人午夜碰碰视频| 欧美精品xxxxbbbb| 1区2区3区欧美| 国产一区中文字幕| 欧美区一区二区三区| 日本一区二区视频在线| 首页亚洲欧美制服丝腿| 成人av网站免费| 精品日韩一区二区三区| 亚洲国产精品影院| 成人av片在线观看| 精品欧美一区二区三区精品久久| 亚洲少妇屁股交4| 国产尤物一区二区| 欧美一级黄色录像| 亚洲自拍都市欧美小说| 成人一区二区视频| 精品国精品国产| 午夜精品福利久久久| 91小视频在线| 国产日产精品一区| 国内精品伊人久久久久av一坑| 欧美美女喷水视频| 一区二区久久久久久| av中文字幕在线不卡| 欧美激情一区二区三区四区| 久久99久久99精品免视看婷婷 | 精品国产乱码久久久久久免费| 欧美日韩国产经典色站一区二区三区| 在线成人av影院| 一区二区三区在线免费视频 | 激情六月婷婷综合| 91精品欧美一区二区三区综合在| 一区二区三区在线视频免费| 99久久精品国产导航| 久久久久99精品一区| 美国毛片一区二区三区| 91精品在线免费观看| 午夜av一区二区| 正在播放亚洲一区| 日韩国产在线一| 91精品黄色片免费大全| 天天综合色天天综合| 欧美精品乱码久久久久久| 亚洲一级二级三级在线免费观看| 91麻豆精品在线观看| 亚洲欧美成人一区二区三区| 91性感美女视频| 一区二区三区欧美亚洲| 色一情一乱一乱一91av| 亚洲一区二区三区精品在线| 91国在线观看| 一区二区三区国产精品| 欧美日韩一级片在线观看| 午夜精品国产更新| 日韩午夜电影在线观看| 毛片一区二区三区| 久久久久久久综合狠狠综合| 国产不卡一区视频| 亚洲欧美怡红院| 在线观看91精品国产入口| 亚洲成人一区在线| 欧美一区二区三区免费在线看| 久久激情综合网| 国产午夜亚洲精品不卡| 91天堂素人约啪| 亚洲与欧洲av电影| 欧美老肥妇做.爰bbww| 青青草精品视频| 国产亚洲精品福利| 狠狠色丁香久久婷婷综| 日韩精品一级二级| 日韩av电影免费观看高清完整版 | 日韩精品国产精品| 久久精品一区二区三区不卡| 欧美一区三区四区| 色美美综合视频| www.欧美.com| 成人三级在线视频| 成人综合婷婷国产精品久久免费| 夜夜嗨av一区二区三区四季av| 久久久99精品免费观看不卡| 精品少妇一区二区三区日产乱码| 在线观看不卡一区| 日本二三区不卡| 94色蜜桃网一区二区三区| 国产成人av一区| 国产精品一二三四五| hitomi一区二区三区精品| 91精品蜜臀在线一区尤物| 国产精品久久精品日日| 亚洲视频精选在线| 国产乱对白刺激视频不卡| 国产精品99久久不卡二区| 91一区二区三区在线播放| 欧美日韩在线不卡| 欧美亚洲一区二区三区四区| 欧美一区二区三区在线| 国产情人综合久久777777| 久久综合国产精品| 欧美成人女星排行榜| 精品91自产拍在线观看一区| 日本一区二区三区在线观看| 日韩国产在线观看| 国产欧美综合在线| 欧美性感一区二区三区| 同产精品九九九| 久久久久久夜精品精品免费| 久久夜色精品一区| 99re热这里只有精品免费视频| 日av在线不卡| 亚洲图片欧美色图| 国产精品网站在线| 26uuu精品一区二区| 91麻豆精品国产| 91视频一区二区|