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

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

?? rlfe.c

?? 基于的linux的oracle sqlplus替代工具
?? C
?? 第 1 頁 / 共 2 頁
字號:
	{	  perror("could not set session leader");	}      /* Tie us to our new controlling tty. */#ifdef TIOCSCTTY      if (ioctl(slave, TIOCSCTTY, NULL))	{	  perror("could not set new controlling tty");	}#else      if ((slave = get_slave_pty(name)) < 0)	{	  perror("ptypair: could not open slave pty");	  exit(1);	}      free(name);#endif      /* make slave pty be standard in, out, and error */      dup2(slave, STDIN_FILENO);      dup2(slave, STDOUT_FILENO);      dup2(slave, STDERR_FILENO);      /* at this point the slave pty should be standard input */      if (slave > 2)	{	  close(slave);	}      /* Try to restore window size; failure isn't critical */      if (ioctl(STDOUT_FILENO, TIOCSWINSZ, &ws) < 0)	{	  perror("could not restore window size");	}      /* now start the shell */      {	static char* command_args[] = { COMMAND_ARGS, NULL };	if (argc < 1)	  execvp(COMMAND, command_args);	else	  execvp(argv[0], &argv[0]);      }      /* should never be reached */      exit(1);    }  /* parent */  signal (SIGCHLD, sig_child);  free(name);  /* Note that we only set termios settings for standard input;   * the master side of a pty is NOT a tty.   */  tcgetattr(STDIN_FILENO, &orig_term);  t = orig_term;  eof_char = t.c_cc[VEOF];  /*  add_special_char(t.c_cc[VEOF]);*/  add_special_char(t.c_cc[VINTR]);  add_special_char(t.c_cc[VQUIT]);  add_special_char(t.c_cc[VSUSP]);#if defined (VDISCARD)  add_special_char(t.c_cc[VDISCARD]);#endif#if 0  t.c_lflag |= (ICANON | ISIG | ECHO | ECHOCTL | ECHOE | \		ECHOK | ECHOKE | ECHONL | ECHOPRT );#else  t.c_lflag &= ~(ICANON | ISIG | ECHO | ECHOCTL | ECHOE | \		 ECHOK | ECHOKE | ECHONL | ECHOPRT );#endif  t.c_iflag |= IGNBRK;  t.c_cc[VMIN] = 1;  t.c_cc[VTIME] = 0;  tcsetattr(STDIN_FILENO, TCSANOW, &t);  in_from_inferior_fd = master;  out_to_inferior_fd = master;  rl_instream = fdopen (master, "r");  rl_getc_function = my_rl_getc;  rl_prep_term_function = null_prep_terminal;   rl_deprep_term_function = null_deprep_terminal;   rl_callback_handler_install (prompt, line_handler);#if 1  rl_directory_completion_hook = rlfe_directory_completion_hook;  rl_completion_entry_function = rlfe_filename_completion_function;#else  rl_directory_rewrite_hook = rlfe_directory_rewrite_hook;#endif  in_from_tty_fd = STDIN_FILENO;  FD_ZERO (&in_set);  maxfd = in_from_inferior_fd > in_from_tty_fd ? in_from_inferior_fd    : in_from_tty_fd;  for (;;)    {      int num;      FD_SET (in_from_inferior_fd, &in_set);      FD_SET (in_from_tty_fd, &in_set);      num = select(maxfd+1, &in_set, NULL, NULL, NULL);      if (propagate_sigwinch)	{	  struct winsize ws;	  if (ioctl (STDIN_FILENO, TIOCGWINSZ, &ws) >= 0)	    {	      ioctl (master, TIOCSWINSZ, &ws);	    }	  propagate_sigwinch = 0;	  continue;	}      if (num <= 0)	{	  perror ("select");	  exit (-1);	}      if (FD_ISSET (in_from_tty_fd, &in_set))	{	  extern int readline_echoing_p;	  struct termios term_master;	  int do_canon = 1;	  int ioctl_ret;	  DPRINT1("[tty avail num_keys:%d]\n", num_keys);	  /* If we can't get tty modes for the master side of the pty, we	     can't handle non-canonical-mode programs.  Always assume the	     master is in canonical echo mode if we can't tell. */	  ioctl_ret = tcgetattr(master, &term_master);	  if (ioctl_ret >= 0)	    {	      DPRINT2 ("echo:%d, canon:%d\n",			(term_master.c_lflag & ECHO) != 0,			(term_master.c_lflag & ICANON) != 0);	      do_canon = (term_master.c_lflag & ICANON) != 0;	      readline_echoing_p = (term_master.c_lflag & ECHO) != 0;	    }	  else	    {	      if (ioctl_err == 0)		DPRINT1("tcgetattr on master fd failed: errno = %d\n", errno);	      ioctl_err = 1;	    }	  if (do_canon == 0 && num_keys == 0)	    {	      char ch[10];	      int count = read (STDIN_FILENO, ch, sizeof(ch));	      write (out_to_inferior_fd, ch, count);	    }	  else	    {	      if (num_keys == 0)		{		  int i;		  /* Re-install callback handler for new prompt. */		  if (prompt != empty_string)		    free (prompt);		  prompt = malloc (buf_count + 1);		  if (prompt == NULL)		    prompt = empty_string;		  else		    {		      memcpy (prompt, buf, buf_count);		      prompt[buf_count] = '\0';		      DPRINT1("New prompt '%s'\n", prompt);#if 0 /* ifdef HAVE_RL_ALREADY_PROMPTED -- doesn't work */		      rl_already_prompted = buf_count > 0;#else		      if (buf_count > 0)			write (1, "\r", 1);#endif		    }		  rl_callback_handler_install (prompt, line_handler);		}	      num_keys++;	      rl_callback_read_char ();	    }	}      else /* input from inferior. */	{	  int i;	  int count;	  int old_count;	  if (buf_count > (sizeof(buf) >> 2))	    buf_count = 0;	  count = read (in_from_inferior_fd, buf+buf_count,			sizeof(buf) - buf_count);	  if (count <= 0)	    {	      DPRINT0 ("(Connection closed by foreign host.)\n");	      tcsetattr(STDIN_FILENO, TCSANOW, &orig_term);	      exit (0);	    }	  old_count = buf_count;	  /* Do some minimal carriage return translation and backspace	     processing before logging the input line. */	  if (logfile)	    {#ifndef __GNUC__	      char *b;#else	      char b[count + 1];#endif	      int i, j;#ifndef __GNUC__	      b = malloc (count + 1);	      if (b) {#endif	      for (i = 0; i < count; i++)	        b[i] = buf[buf_count + i];	      b[i] = '\0';	      for (i = j = 0; i <= count; i++)		{		  if (b[i] == '\r')		    {		      if (b[i+1] != '\n')		        b[j++] = '\n';		    }		  else if (b[i] == '\b')		    {		      if (i)			j--;		    }		  else		    b[j++] = b[i];		}	      fprintf (logfile, "%s", b);#ifndef __GNUC__	      free (b);	      }#endif	    }          /* Look for any pending echo that we need to suppress. */	  while (echo_suppress_start < echo_suppress_limit		 && count > 0		 && buf[buf_count] == echo_suppress_buffer[echo_suppress_start])	    {	      count--;	      buf_count++;	      echo_suppress_start++;	    }          /* Write to the terminal anything that was not suppressed. */          if (count > 0)            write (1, buf + buf_count, count);          /* Finally, look for a prompt candidate.           * When we get around to going input (from the keyboard),           * we will consider the prompt to be anything since the last           * line terminator.  So we need to save that text in the           * initial part of buf.  However, anything before the           * most recent end-of-line is not interesting. */	  buf_count += count;#if 1	  for (i = buf_count;  --i >= old_count; )#else	  for (i = buf_count - 1;  i-- >= buf_count - count; )#endif	    {	      if (buf[i] == '\n' || buf[i] == '\r')		{		  i++;		  memmove (buf, buf+i, buf_count - i);		  buf_count -= i;		  break;		}	    }	  DPRINT2("-> i: %d, buf_count: %d\n", i, buf_count);	}    }}/* * * FILENAME COMPLETION FOR RLFE * */#ifndef PATH_MAX#  define PATH_MAX 1024#endif#define DIRSEP		'/'#define ISDIRSEP(x)	((x) == '/')#define PATHSEP(x)	(ISDIRSEP(x) || (x) == 0)#define DOT_OR_DOTDOT(x) \	((x)[0] == '.' && (PATHSEP((x)[1]) || \			  ((x)[1] == '.' && PATHSEP((x)[2]))))#define FREE(x)		if (x) free(x)#define STRDUP(s, x)	do { \			  s = strdup (x);\			  if (s == 0) \			    return ((char *)NULL); \			} while (0)static intget_inferior_cwd (path, psize)     char *path;     size_t psize;{  int n;  static char procfsbuf[PATH_MAX] = { '\0' };  if (procfsbuf[0] == '\0')    sprintf (procfsbuf, "/proc/%d/cwd", (int)child);  n = readlink (procfsbuf, path, psize);  if (n < 0)    return n;  if (n > psize)    return -1;  path[n] = '\0';  return n;}static intrlfe_directory_rewrite_hook (dirnamep)     char **dirnamep;{  char *ldirname, cwd[PATH_MAX], *retdir, *ld;  int n, ldlen;  ldirname = *dirnamep;  if (*ldirname == '/')    return 0;  n = get_inferior_cwd (cwd, sizeof(cwd) - 1);  if (n < 0)    return 0;  if (n == 0)	/* current directory */    {      cwd[0] = '.';      cwd[1] = '\0';      n = 1;    }  /* Minimally canonicalize ldirname by removing leading `./' */  for (ld = ldirname; *ld; )    {      if (ISDIRSEP (ld[0]))	ld++;      else if (ld[0] == '.' && PATHSEP(ld[1]))	ld++;      else	break;    }  ldlen = (ld && *ld) ? strlen (ld) : 0;  retdir = (char *)malloc (n + ldlen + 3);  if (retdir == 0)    return 0;  if (ldlen)    sprintf (retdir, "%s/%s", cwd, ld);  else    strcpy (retdir, cwd);  free (ldirname);  *dirnamep = retdir;  DPRINT1("rl_directory_rewrite_hook returns %s\n", retdir);  return 1;}/* Translate *DIRNAMEP to be relative to the inferior's CWD.  Leave a trailing   slash on the result. */static intrlfe_directory_completion_hook (dirnamep)     char **dirnamep;{  char *ldirname, *retdir;  int n, ldlen;  ldirname = *dirnamep;  if (*ldirname == '/')    return 0;  n = rlfe_directory_rewrite_hook (dirnamep);  if (n == 0)    return 0;  ldirname = *dirnamep;  ldlen = (ldirname && *ldirname) ? strlen (ldirname) : 0;  if (ldlen == 0 || ldirname[ldlen - 1] != '/')    {      retdir = (char *)malloc (ldlen + 3);      if (retdir == 0)	return 0;      if (ldlen)	strcpy (retdir, ldirname);      else	retdir[ldlen++] = '.';      retdir[ldlen] = '/';      retdir[ldlen+1] = '\0';      free (ldirname);      *dirnamep = retdir;    }  DPRINT1("rl_directory_completion_hook returns %s\n", retdir);  return 1;}static char *rlfe_filename_completion_function (text, state)     const char *text;     int state;{  static DIR *directory;  static char *filename = (char *)NULL;  static char *dirname = (char *)NULL, *ud = (char *)NULL;  static int flen, udlen;  char *temp;  struct dirent *dentry;  if (state == 0)    {      if (directory)	{	  closedir (directory);	  directory = 0;	}      FREE (dirname);      FREE (filename);      FREE (ud);      if (text && *text)        STRDUP (filename, text);      else	{	  filename = malloc(1); 	  if (filename == 0)	    return ((char *)NULL);	  filename[0] = '\0';	}      dirname = (text && *text) ? strdup (text) : strdup (".");      if (dirname == 0)        return ((char *)NULL);      temp = strrchr (dirname, '/');      if (temp)	{	  strcpy (filename, ++temp);	  *temp = '\0';	}      else	{	  dirname[0] = '.';	  dirname[1] = '\0';	}      STRDUP (ud, dirname);      udlen = strlen (ud);      rlfe_directory_completion_hook (&dirname);      directory = opendir (dirname);      flen = strlen (filename);      rl_filename_completion_desired = 1;    }  dentry = 0;  while (directory && (dentry = readdir (directory)))    {      if (flen == 0)	{          if (DOT_OR_DOTDOT(dentry->d_name) == 0)            break;	}      else	{	  if ((dentry->d_name[0] == filename[0]) &&	      (strlen (dentry->d_name) >= flen) &&	      (strncmp (filename, dentry->d_name, flen) == 0))	    break;	}    }  if (dentry == 0)    {      if (directory)	{	  closedir (directory);	  directory = 0;	}      FREE (dirname);      FREE (filename);      FREE (ud);      dirname = filename = ud = 0;      return ((char *)NULL);    }  if (ud == 0 || (ud[0] == '.' && ud[1] == '\0'))    temp = strdup (dentry->d_name);  else    {      temp = malloc (1 + udlen + strlen (dentry->d_name));      strcpy (temp, ud);      strcpy (temp + udlen, dentry->d_name);    }  return (temp);}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品美女久久久久久久久| 欧美揉bbbbb揉bbbbb| 波多野结衣精品在线| 91麻豆免费观看| 欧美日韩国产成人在线91| 精品三级av在线| 国产精品国产馆在线真实露脸| 亚洲国产精品一区二区www| 久久成人av少妇免费| 99久久亚洲一区二区三区青草| 制服.丝袜.亚洲.中文.综合| 国产无一区二区| 婷婷久久综合九色国产成人| 国产精品99精品久久免费| 欧美性猛片xxxx免费看久爱| 久久久久久久国产精品影院| 亚洲国产欧美在线| 国产99精品在线观看| 777亚洲妇女| 综合欧美亚洲日本| 国内精品伊人久久久久av影院| 色嗨嗨av一区二区三区| 久久精品一区蜜桃臀影院| 亚洲福中文字幕伊人影院| 国产aⅴ综合色| 日韩女优电影在线观看| 樱花影视一区二区| 国产福利91精品一区| 欧美女孩性生活视频| 136国产福利精品导航| 久久99国产精品免费| 欧美亚洲自拍偷拍| 亚洲欧美在线观看| 激情综合色综合久久综合| 欧美伊人精品成人久久综合97| 国产精品无人区| 精品在线播放午夜| 在线不卡a资源高清| 一区二区视频免费在线观看| 国产91精品一区二区麻豆网站 | 26uuu久久综合| 亚洲va韩国va欧美va| 成人免费精品视频| 精品国产乱码久久久久久免费| 亚洲一区二区在线播放相泽| 99久久久久久| 国产视频一区二区在线| 激情五月播播久久久精品| 欧美一个色资源| 天天色天天操综合| 欧美日韩在线直播| 亚洲蜜臀av乱码久久精品| 波多野结衣中文字幕一区| 久久精品一区二区三区四区| 蜜桃视频免费观看一区| 91精品免费观看| 日韩精品久久理论片| 欧美日韩另类一区| 亚洲国产视频a| 欧美三级资源在线| 亚洲午夜视频在线| 在线亚洲人成电影网站色www| 成人免费在线观看入口| 99热国产精品| 国产精品色在线观看| 成人性生交大合| 国产精品素人视频| 成人av在线影院| 亚洲欧洲成人av每日更新| 99re视频这里只有精品| 亚洲欧美另类久久久精品2019| 91麻豆国产福利精品| 亚洲靠逼com| 欧美三级韩国三级日本一级| 香港成人在线视频| 欧美男女性生活在线直播观看 | 91精品国产综合久久精品图片| 亚洲成人777| 欧美裸体一区二区三区| 午夜久久久影院| 欧美一区二区三区电影| 久久精品国产99国产| 久久新电视剧免费观看| 高清国产一区二区| 亚洲欧美日韩国产另类专区| 欧美午夜精品免费| 蜜臀av在线播放一区二区三区| 日韩欧美中文字幕制服| 国产伦精品一区二区三区免费迷| 国产亚洲精品bt天堂精选| 成人18视频在线播放| 亚洲一区二区在线播放相泽| 7777精品伊人久久久大香线蕉经典版下载 | 亚洲国产精品综合小说图片区| 欧美人妇做爰xxxⅹ性高电影| 麻豆精品一二三| 久久久99精品免费观看不卡| 99久久综合国产精品| 亚洲成a天堂v人片| 日韩精品一区二区三区在线| 福利一区在线观看| 亚洲一区二区三区中文字幕在线| 欧美一区二区三区视频在线| 国产一区在线观看视频| 亚洲欧美在线aaa| 欧美男女性生活在线直播观看| 精品写真视频在线观看| 国产精品成人午夜| 8v天堂国产在线一区二区| 国产+成+人+亚洲欧洲自线| 亚洲一区二区精品视频| 久久伊人蜜桃av一区二区| 99麻豆久久久国产精品免费优播| 亚洲va韩国va欧美va| 国产欧美日韩综合| 欧美亚洲动漫制服丝袜| 激情图区综合网| 亚洲最新视频在线播放| 精品久久五月天| 色狠狠色狠狠综合| 国精品**一区二区三区在线蜜桃| 亚洲视频一区在线观看| 精品国产一区二区三区四区四| 99re热视频这里只精品| 精品中文字幕一区二区小辣椒| 亚洲视频 欧洲视频| 久久伊99综合婷婷久久伊| 欧美三级电影在线看| 国产精品88av| 日韩二区三区四区| 樱桃国产成人精品视频| 国产调教视频一区| 51午夜精品国产| 色婷婷综合视频在线观看| 久久99九九99精品| 亚洲午夜激情网站| 国产精品久久毛片av大全日韩| 日韩欧美亚洲另类制服综合在线| 在线观看视频一区二区| 大桥未久av一区二区三区中文| 免费欧美在线视频| 亚洲在线观看免费| 国产精品久久国产精麻豆99网站| 日韩欧美国产精品| 欧美日韩午夜在线| 色婷婷综合久色| 不卡一区二区三区四区| 国产伦精品一区二区三区免费迷| 日韩在线一二三区| 亚洲自拍偷拍麻豆| 亚洲视频你懂的| 亚洲国产精品二十页| 2017欧美狠狠色| 欧美一级二级三级乱码| 欧美乱妇23p| 在线观看亚洲成人| 91香蕉国产在线观看软件| 成人黄页在线观看| 国产一区高清在线| 美女网站色91| 乱一区二区av| 久久精品久久综合| 日本成人在线电影网| 亚洲3atv精品一区二区三区| 一区二区三区免费在线观看| 亚洲人一二三区| 亚洲欧美一区二区三区孕妇| 国产精品美女一区二区在线观看| 国产三区在线成人av| 久久久精品天堂| 国产亚洲精久久久久久| 久久久噜噜噜久久人人看| 精品剧情在线观看| 精品久久久久99| 26uuu精品一区二区| 欧美不卡视频一区| 亚洲精品在线观| 久久精品男人的天堂| 国产亚洲精品bt天堂精选| 国产午夜一区二区三区| 国产丝袜美腿一区二区三区| 国产欧美日韩亚州综合| 欧美国产日韩亚洲一区| 国产日韩欧美电影| 国产精品毛片久久久久久久| 国产精品视频九色porn| 亚洲视频电影在线| 夜夜揉揉日日人人青青一国产精品| 亚洲一区在线观看视频| 天堂精品中文字幕在线| 麻豆精品久久精品色综合| 日本不卡视频一二三区| 久久99精品久久久久久| 国产盗摄一区二区| 97久久精品人人做人人爽50路| 99久久伊人久久99| 精品视频一区二区不卡| 日韩欧美卡一卡二| 亚洲国产精品高清| 亚洲激情男女视频|