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

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

?? display.c

?? 基于的linux的oracle sqlplus替代工具
?? C
?? 第 1 頁 / 共 5 頁
字號:
/* display.c -- readline redisplay facility. *//* Copyright (C) 1987, 1989, 1992 Free Software Foundation, Inc.   This file is part of the GNU Readline Library, a library for   reading lines of text with interactive input and history editing.   The GNU Readline Library 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, or   (at your option) any later version.   The GNU Readline Library is distributed in the hope that it will be   useful, but WITHOUT ANY WARRANTY; without even the implied warranty   of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the   GNU General Public License for more details.   The GNU General Public License is often shipped with GNU software, and   is generally kept in a file called COPYING or LICENSE.  If you do not   have a copy of the license, write to the Free Software Foundation,   59 Temple Place, Suite 330, Boston, MA 02111 USA. */#define READLINE_LIBRARY#if defined (HAVE_CONFIG_H)#  include <config.h>#endif#include <sys/types.h>#if defined (HAVE_UNISTD_H)#  include <unistd.h>#endif /* HAVE_UNISTD_H */#include "posixstat.h"#if defined (HAVE_STDLIB_H)#  include <stdlib.h>#else#  include "ansi_stdlib.h"#endif /* HAVE_STDLIB_H */#include <stdio.h>/* System-specific feature definitions and include files. */#include "rldefs.h"#include "rlmbutil.h"/* Termcap library stuff. */#include "tcap.h"/* Some standard library routines. */#include "readline.h"#include "history.h"#include "rlprivate.h"#include "xmalloc.h"#if !defined (strchr) && !defined (__STDC__)extern char *strchr (), *strrchr ();#endif /* !strchr && !__STDC__ */#if defined (HACK_TERMCAP_MOTION)extern char *_rl_term_forward_char;#endifstatic void update_line PARAMS((char *, char *, int, int, int, int));static void space_to_eol PARAMS((int));static void delete_chars PARAMS((int));static void insert_some_chars PARAMS((char *, int, int));static void cr PARAMS((void));#if defined (HANDLE_MULTIBYTE)static int _rl_col_width PARAMS((char *, int, int));static int *_rl_wrapped_line;#else#  define _rl_col_width(l, s, e)	(((e) <= (s)) ? 0 : (e) - (s))#endifstatic int *inv_lbreaks, *vis_lbreaks;static int inv_lbsize, vis_lbsize;/* Heuristic used to decide whether it is faster to move from CUR to NEW   by backing up or outputting a carriage return and moving forward. */#define CR_FASTER(new, cur) (((new) + 1) < ((cur) - (new)))/* **************************************************************** *//*								    *//*			Display stuff				    *//*								    *//* **************************************************************** *//* This is the stuff that is hard for me.  I never seem to write good   display routines in C.  Let's see how I do this time. *//* (PWP) Well... Good for a simple line updater, but totally ignores   the problems of input lines longer than the screen width.   update_line and the code that calls it makes a multiple line,   automatically wrapping line update.  Careful attention needs   to be paid to the vertical position variables. *//* Keep two buffers; one which reflects the current contents of the   screen, and the other to draw what we think the new contents should   be.  Then compare the buffers, and make whatever changes to the   screen itself that we should.  Finally, make the buffer that we   just drew into be the one which reflects the current contents of the   screen, and place the cursor where it belongs.   Commands that want to can fix the display themselves, and then let   this function know that the display has been fixed by setting the   RL_DISPLAY_FIXED variable.  This is good for efficiency. *//* Application-specific redisplay function. */rl_voidfunc_t *rl_redisplay_function = rl_redisplay;/* Global variables declared here. *//* What YOU turn on when you have handled all redisplay yourself. */int rl_display_fixed = 0;int _rl_suppress_redisplay = 0;/* The stuff that gets printed out before the actual text of the line.   This is usually pointing to rl_prompt. */char *rl_display_prompt = (char *)NULL;/* Pseudo-global variables declared here. *//* The visible cursor position.  If you print some text, adjust this. */int _rl_last_c_pos = 0;int _rl_last_v_pos = 0;/* Number of lines currently on screen minus 1. */int _rl_vis_botlin = 0;/* Variables used only in this file. *//* The last left edge of text that was displayed.  This is used when   doing horizontal scrolling.  It shifts in thirds of a screenwidth. */static int last_lmargin;/* The line display buffers.  One is the line currently displayed on   the screen.  The other is the line about to be displayed. */static char *visible_line = (char *)NULL;static char *invisible_line = (char *)NULL;/* A buffer for `modeline' messages. */static char msg_buf[128];/* Non-zero forces the redisplay even if we thought it was unnecessary. */static int forced_display;/* Default and initial buffer size.  Can grow. */static int line_size = 1024;/* Variables to keep track of the expanded prompt string, which may   include invisible characters. */static char *local_prompt, *local_prompt_prefix;static int prompt_visible_length, prompt_prefix_length;/* The number of invisible characters in the line currently being   displayed on the screen. */static int visible_wrap_offset;/* The number of invisible characters in the prompt string.  Static so it   can be shared between rl_redisplay and update_line */static int wrap_offset;/* The index of the last invisible character in the prompt string. */static int prompt_last_invisible;/* The length (buffer offset) of the first line of the last (possibly   multi-line) buffer displayed on the screen. */static int visible_first_line_len;/* Number of invisible characters on the first physical line of the prompt.   Only valid when the number of physical characters in the prompt exceeds   (or is equal to) _rl_screenwidth. */static int prompt_invis_chars_first_line;static int prompt_last_screen_line;/* Expand the prompt string S and return the number of visible   characters in *LP, if LP is not null.  This is currently more-or-less   a placeholder for expansion.  LIP, if non-null is a place to store the   index of the last invisible character in the returned string. NIFLP,   if non-zero, is a place to store the number of invisible characters in   the first prompt line. *//* Current implementation:	\001 (^A) start non-visible characters	\002 (^B) end non-visible characters   all characters except \001 and \002 (following a \001) are copied to   the returned string; all characters except those between \001 and   \002 are assumed to be `visible'. */	static char *expand_prompt (pmt, lp, lip, niflp)     char *pmt;     int *lp, *lip, *niflp;{  char *r, *ret, *p;  int l, rl, last, ignoring, ninvis, invfl;  /* Short-circuit if we can. */  if (strchr (pmt, RL_PROMPT_START_IGNORE) == 0)    {      r = savestring (pmt);      if (lp)	*lp = strlen (r);      return r;    }  l = strlen (pmt);  r = ret = (char *)xmalloc (l + 1);  invfl = 0;	/* invisible chars in first line of prompt */  for (rl = ignoring = last = ninvis = 0, p = pmt; p && *p; p++)    {      /* This code strips the invisible character string markers	 RL_PROMPT_START_IGNORE and RL_PROMPT_END_IGNORE */      if (*p == RL_PROMPT_START_IGNORE)	{	  ignoring++;	  continue;	}      else if (ignoring && *p == RL_PROMPT_END_IGNORE)	{	  ignoring = 0;	  last = r - ret - 1;	  continue;	}      else	{	  *r++ = *p;	  if (!ignoring)	    rl++;	  else	    ninvis++;	  if (rl == _rl_screenwidth)	    invfl = ninvis;	}    }  if (rl < _rl_screenwidth)    invfl = ninvis;  *r = '\0';  if (lp)    *lp = rl;  if (lip)    *lip = last;  if (niflp)    *niflp = invfl;  return ret;}/* Just strip out RL_PROMPT_START_IGNORE and RL_PROMPT_END_IGNORE from   PMT and return the rest of PMT. */char *_rl_strip_prompt (pmt)     char *pmt;{  char *ret;  ret = expand_prompt (pmt, (int *)NULL, (int *)NULL, (int *)NULL);  return ret;}/* * Expand the prompt string into the various display components, if * necessary. * * local_prompt = expanded last line of string in rl_display_prompt *		  (portion after the final newline) * local_prompt_prefix = portion before last newline of rl_display_prompt, *			 expanded via expand_prompt * prompt_visible_length = number of visible characters in local_prompt * prompt_prefix_length = number of visible characters in local_prompt_prefix * * This function is called once per call to readline().  It may also be * called arbitrarily to expand the primary prompt. * * The return value is the number of visible characters on the last line * of the (possibly multi-line) prompt. */intrl_expand_prompt (prompt)     char *prompt;{  char *p, *t;  int c;  /* Clear out any saved values. */  FREE (local_prompt);  FREE (local_prompt_prefix);  local_prompt = local_prompt_prefix = (char *)0;  prompt_last_invisible = prompt_visible_length = 0;  if (prompt == 0 || *prompt == 0)    return (0);  p = strrchr (prompt, '\n');  if (!p)    {      /* The prompt is only one logical line, though it might wrap. */      local_prompt = expand_prompt (prompt, &prompt_visible_length,					    &prompt_last_invisible,					    &prompt_invis_chars_first_line);      local_prompt_prefix = (char *)0;      return (prompt_visible_length);    }  else    {      /* The prompt spans multiple lines. */      t = ++p;      local_prompt = expand_prompt (p, &prompt_visible_length,				       &prompt_last_invisible,				       &prompt_invis_chars_first_line);      c = *t; *t = '\0';      /* The portion of the prompt string up to and including the	 final newline is now null-terminated. */      local_prompt_prefix = expand_prompt (prompt, &prompt_prefix_length,						   (int *)NULL,						   &prompt_invis_chars_first_line);      *t = c;      return (prompt_prefix_length);    }}/* Initialize the VISIBLE_LINE and INVISIBLE_LINE arrays, and their associated   arrays of line break markers.  MINSIZE is the minimum size of VISIBLE_LINE   and INVISIBLE_LINE; if it is greater than LINE_SIZE, LINE_SIZE is   increased.  If the lines have already been allocated, this ensures that   they can hold at least MINSIZE characters. */static voidinit_line_structures (minsize)      int minsize;{  register int n;  if (invisible_line == 0)	/* initialize it */    {      if (line_size < minsize)	line_size = minsize;      visible_line = (char *)xmalloc (line_size);      invisible_line = (char *)xmalloc (line_size);    }  else if (line_size < minsize)	/* ensure it can hold MINSIZE chars */    {      line_size *= 2;      if (line_size < minsize)	line_size = minsize;      visible_line = (char *)xrealloc (visible_line, line_size);      invisible_line = (char *)xrealloc (invisible_line, line_size);    }  for (n = minsize; n < line_size; n++)    {      visible_line[n] = 0;      invisible_line[n] = 1;    }  if (vis_lbreaks == 0)    {      /* should be enough. */      inv_lbsize = vis_lbsize = 256;      inv_lbreaks = (int *)xmalloc (inv_lbsize * sizeof (int));      vis_lbreaks = (int *)xmalloc (vis_lbsize * sizeof (int));#if defined (HANDLE_MULTIBYTE)      _rl_wrapped_line = (int *)xmalloc (vis_lbsize * sizeof (int));#endif      inv_lbreaks[0] = vis_lbreaks[0] = 0;    }}  /* Basic redisplay algorithm. */voidrl_redisplay (){  register int in, out, c, linenum, cursor_linenum;  register char *line;  int c_pos, inv_botlin, lb_botlin, lb_linenum;  int newlines, lpos, temp;  char *prompt_this_line;#if defined (HANDLE_MULTIBYTE)  wchar_t wc;  size_t wc_bytes;  int wc_width;  mbstate_t ps;  int _rl_wrapped_multicolumn = 0;#endif  if (!readline_echoing_p)    return;  if (!rl_display_prompt)    rl_display_prompt = "";  if (invisible_line == 0)    {      init_line_structures (0);      rl_on_new_line ();    }  /* Draw the line into the buffer. */  c_pos = -1;  line = invisible_line;  out = inv_botlin = 0;  /* Mark the line as modified or not.  We only do this for history     lines. */  if (_rl_mark_modified_lines && current_history () && rl_undo_list)    {      line[out++] = '*';      line[out] = '\0';    }  /* If someone thought that the redisplay was handled, but the currently     visible line has a different modification state than the one about     to become visible, then correct the caller's misconception. */  if (visible_line[0] != invisible_line[0])    rl_display_fixed = 0;  /* If the prompt to be displayed is the `primary' readline prompt (the     one passed to readline()), use the values we have already expanded.     If not, use what's already in rl_display_prompt.  WRAP_OFFSET is the     number of non-visible characters in the prompt string. */  if (rl_display_prompt == rl_prompt || local_prompt)    {      int local_len = local_prompt ? strlen (local_prompt) : 0;      if (local_prompt_prefix && forced_display)	_rl_output_some_chars (local_prompt_prefix, strlen (local_prompt_prefix));      if (local_len > 0)	{	  temp = local_len + out + 2;	  if (temp >= line_size)	    {

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品久久久爽爽爽麻豆色哟哟| 久久国产精品免费| 日本女人一区二区三区| 成+人+亚洲+综合天堂| 91精品免费观看| 国产精品成人一区二区艾草 | 亚洲精品国产一区二区精华液 | 在线免费视频一区二区| 精品盗摄一区二区三区| 亚洲综合无码一区二区| 国产成人午夜电影网| 在线观看91av| 亚洲色图在线播放| 高清久久久久久| 精品乱人伦小说| 亚洲18色成人| 91国偷自产一区二区三区成为亚洲经典| 精品粉嫩aⅴ一区二区三区四区| 亚洲午夜在线视频| 91在线观看污| 亚洲欧美中日韩| 福利一区福利二区| 久久久午夜电影| 久久精品久久综合| 欧美一区二区国产| 免费高清在线一区| 日韩女优电影在线观看| 视频一区二区三区在线| 欧美午夜电影在线播放| 夜夜嗨av一区二区三区网页| av在线这里只有精品| 中文一区二区完整视频在线观看| 国产精品自在在线| 久久免费的精品国产v∧| 激情综合亚洲精品| 久久综合久久久久88| 韩国成人福利片在线播放| 日韩欧美激情四射| 久88久久88久久久| 精品久久免费看| 久久精品国产99| 26uuu精品一区二区三区四区在线| 久久99精品国产麻豆婷婷洗澡| 91精品久久久久久久99蜜桃| 日本一道高清亚洲日美韩| 在线不卡免费欧美| 日本不卡视频在线| 久久亚洲一区二区三区明星换脸| 国产一区二区三区四区五区美女 | 亚洲一二三专区| 欧美日韩国产在线观看| 日日摸夜夜添夜夜添亚洲女人| 69堂精品视频| 国产精品正在播放| 国产精品久久久久桃色tv| 色婷婷综合视频在线观看| 丝袜亚洲另类欧美综合| 精品久久久三级丝袜| 国产成人8x视频一区二区 | 日本一区二区在线不卡| 91麻豆精品在线观看| 日韩精品五月天| 久久久久国产免费免费| 色偷偷久久一区二区三区| 亚洲v日本v欧美v久久精品| 久久综合成人精品亚洲另类欧美 | 成人动漫av在线| 午夜久久福利影院| 久久精品综合网| 在线观看一区不卡| 国产剧情一区二区| 亚洲国产中文字幕| 久久精品一级爱片| 欧美色视频在线| 高清不卡在线观看| 日韩精品成人一区二区三区| 国产亚洲精品超碰| 欧美一区二区三区的| 成人av电影在线| 蜜桃91丨九色丨蝌蚪91桃色| 中文字幕亚洲视频| 精品精品国产高清a毛片牛牛| 一本色道久久加勒比精品| 国产美女视频91| 午夜国产不卡在线观看视频| 久久久99精品免费观看| 欧美精品视频www在线观看| 东方欧美亚洲色图在线| 美美哒免费高清在线观看视频一区二区 | 欧美日韩国产色站一区二区三区| 韩国三级电影一区二区| 午夜婷婷国产麻豆精品| 亚洲人成7777| 日本一区二区免费在线| 日韩精品中文字幕在线不卡尤物| 欧美伊人久久久久久午夜久久久久| 国产成人精品三级| 国产揄拍国内精品对白| 日本不卡视频在线| 天天影视色香欲综合网老头| 亚洲综合丝袜美腿| 亚洲久草在线视频| 亚洲另类在线视频| 综合久久一区二区三区| 中文字幕av在线一区二区三区| 久久伊人蜜桃av一区二区| 欧美一区二区三区公司| 91精品国产福利| 91精品国产入口在线| 欧美日韩极品在线观看一区| 97aⅴ精品视频一二三区| 99久久久久久| 色老综合老女人久久久| 色网站国产精品| 欧美视频一区二| 337p亚洲精品色噜噜噜| 日韩女优视频免费观看| 精品国产青草久久久久福利| 日韩欧美国产一区在线观看| 日韩一区二区电影在线| 欧美午夜电影一区| 欧美另类z0zxhd电影| 欧美日韩精品欧美日韩精品一 | 色综合色狠狠天天综合色| 99久久精品免费看国产免费软件| 高清久久久久久| 色综合久久综合网97色综合| 欧美性猛交xxxxxx富婆| 欧美日本一区二区三区| 精品嫩草影院久久| 国产日产亚洲精品系列| 国产精品高清亚洲| 亚洲精品高清在线观看| 亚洲午夜免费电影| 麻豆精品一区二区三区| 懂色av一区二区在线播放| 色天使久久综合网天天| 欧美日韩视频专区在线播放| 日韩视频在线观看一区二区| 国产午夜亚洲精品理论片色戒| 国产精品灌醉下药二区| 午夜精品久久久久| 国产精品一区一区三区| 色综合久久天天综合网| 欧美精品久久久久久久多人混战 | 91在线一区二区三区| 欧美日韩国产综合久久| 国产三区在线成人av| 一区二区免费在线| 国产一区在线看| 欧美在线影院一区二区| 精品日本一线二线三线不卡| 国产精品久久久久久亚洲毛片| 天天综合色天天综合| 成人高清免费在线播放| 欧美挠脚心视频网站| 中文字幕国产一区二区| 亚洲国产视频一区二区| 高清视频一区二区| 91精品福利在线一区二区三区 | 99久久综合国产精品| 欧美福利视频一区| 国产精品国产馆在线真实露脸| 日韩国产欧美三级| 91免费观看在线| 久久久电影一区二区三区| 亚洲一二三级电影| av动漫一区二区| 精品欧美一区二区三区精品久久| 国产精品白丝在线| 久久99精品国产| 欧美日韩高清一区二区三区| 中文字幕中文字幕一区二区| 青青草97国产精品免费观看无弹窗版| 波多野结衣欧美| 久久精品夜色噜噜亚洲aⅴ| 免费高清视频精品| 欧美在线999| 亚洲精品成人悠悠色影视| 国产精品1区2区| 久久这里都是精品| 精品一区二区三区香蕉蜜桃 | 日本韩国精品在线| 国产精品美女久久久久aⅴ| 久久99精品久久久久久国产越南| 欧美日韩一区二区三区四区| 亚洲男人的天堂在线观看| thepron国产精品| 中文字幕不卡一区| 成人毛片老司机大片| 欧美韩国日本不卡| 成人一区二区三区在线观看 | 日韩视频中午一区| 欧美aaaaa成人免费观看视频| 欧美怡红院视频| 五月婷婷久久丁香| 欧美日韩久久一区| 亚洲h动漫在线| 欧美一卡二卡三卡| 精品系列免费在线观看|