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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? complete.c

?? 基于的linux的oracle sqlplus替代工具
?? C
?? 第 1 頁 / 共 4 頁
字號:
      match_list[0][low] = '\0';    }  return matches;}static intpostprocess_matches (matchesp, matching_filenames)     char ***matchesp;     int matching_filenames;{  char *t, **matches, **temp_matches;  int nmatch, i;  matches = *matchesp;  if (matches == 0)    return 0;  /* It seems to me that in all the cases we handle we would like     to ignore duplicate possiblilities.  Scan for the text to     insert being identical to the other completions. */  if (rl_ignore_completion_duplicates)    {      temp_matches = remove_duplicate_matches (matches);      free (matches);      matches = temp_matches;    }  /* If we are matching filenames, then here is our chance to     do clever processing by re-examining the list.  Call the     ignore function with the array as a parameter.  It can     munge the array, deleting matches as it desires. */  if (rl_ignore_some_completions_function && matching_filenames)    {      for (nmatch = 1; matches[nmatch]; nmatch++)	;      (void)(*rl_ignore_some_completions_function) (matches);      if (matches == 0 || matches[0] == 0)	{	  FREE (matches);	  *matchesp = (char **)0;	  return 0;        }      else	{	  /* If we removed some matches, recompute the common prefix. */	  for (i = 1; matches[i]; i++)	    ;	  if (i > 1 && i < nmatch)	    {	      t = matches[0];	      compute_lcd_of_matches (matches, i - 1, t);	      FREE (t);	    }	}    }  *matchesp = matches;  return (1);}/* A convenience function for displaying a list of strings in   columnar format on readline's output stream.  MATCHES is the list   of strings, in argv format, LEN is the number of strings in MATCHES,   and MAX is the length of the longest string in MATCHES. */voidrl_display_match_list (matches, len, max)     char **matches;     int len, max;{  int count, limit, printed_len, lines;  int i, j, k, l;  char *temp;  /* How many items of MAX length can we fit in the screen window? */  max += 2;  limit = _rl_screenwidth / max;  if (limit != 1 && (limit * max == _rl_screenwidth))    limit--;  /* Avoid a possible floating exception.  If max > _rl_screenwidth,     limit will be 0 and a divide-by-zero fault will result. */  if (limit == 0)    limit = 1;  /* How many iterations of the printing loop? */  count = (len + (limit - 1)) / limit;  /* Watch out for special case.  If LEN is less than LIMIT, then     just do the inner printing loop.	   0 < len <= limit  implies  count = 1. */  /* Sort the items if they are not already sorted. */  if (rl_ignore_completion_duplicates == 0)    qsort (matches + 1, len, sizeof (char *), (QSFUNC *)_rl_qsort_string_compare);  rl_crlf ();  lines = 0;  if (_rl_print_completions_horizontally == 0)    {      /* Print the sorted items, up-and-down alphabetically, like ls. */      for (i = 1; i <= count; i++)	{	  for (j = 0, l = i; j < limit; j++)	    {	      if (l > len || matches[l] == 0)		break;	      else		{		  temp = printable_part (matches[l]);		  printed_len = print_filename (temp, matches[l]);		  if (j + 1 < limit)		    for (k = 0; k < max - printed_len; k++)		      putc (' ', rl_outstream);		}	      l += count;	    }	  rl_crlf ();	  lines++;	  if (_rl_page_completions && lines >= (_rl_screenheight - 1) && i < count)	    {	      lines = _rl_internal_pager (lines);	      if (lines < 0)		return;	    }	}    }  else    {      /* Print the sorted items, across alphabetically, like ls -x. */      for (i = 1; matches[i]; i++)	{	  temp = printable_part (matches[i]);	  printed_len = print_filename (temp, matches[i]);	  /* Have we reached the end of this line? */	  if (matches[i+1])	    {	      if (i && (limit > 1) && (i % limit) == 0)		{		  rl_crlf ();		  lines++;		  if (_rl_page_completions && lines >= _rl_screenheight - 1)		    {		      lines = _rl_internal_pager (lines);		      if (lines < 0)			return;		    }		}	      else		for (k = 0; k < max - printed_len; k++)		  putc (' ', rl_outstream);	    }	}      rl_crlf ();    }}/* Display MATCHES, a list of matching filenames in argv format.  This   handles the simple case -- a single match -- first.  If there is more   than one match, we compute the number of strings in the list and the   length of the longest string, which will be needed by the display   function.  If the application wants to handle displaying the list of   matches itself, it sets RL_COMPLETION_DISPLAY_MATCHES_HOOK to the   address of a function, and we just call it.  If we're handling the   display ourselves, we just call rl_display_match_list.  We also check   that the list of matches doesn't exceed the user-settable threshold,   and ask the user if he wants to see the list if there are more matches   than RL_COMPLETION_QUERY_ITEMS. */static voiddisplay_matches (matches)     char **matches;{  int len, max, i;  char *temp;  /* Move to the last visible line of a possibly-multiple-line command. */  _rl_move_vert (_rl_vis_botlin);  /* Handle simple case first.  What if there is only one answer? */  if (matches[1] == 0)    {      temp = printable_part (matches[0]);      rl_crlf ();      print_filename (temp, matches[0]);      rl_crlf ();      rl_forced_update_display ();      rl_display_fixed = 1;      return;    }  /* There is more than one answer.  Find out how many there are,     and find the maximum printed length of a single entry. */  for (max = 0, i = 1; matches[i]; i++)    {      temp = printable_part (matches[i]);      len = strlen (temp);      if (len > max)	max = len;    }  len = i - 1;  /* If the caller has defined a display hook, then call that now. */  if (rl_completion_display_matches_hook)    {      (*rl_completion_display_matches_hook) (matches, len, max);      return;    }	  /* If there are many items, then ask the user if she really wants to     see them all. */  if (len >= rl_completion_query_items)    {      rl_crlf ();      fprintf (rl_outstream, "Display all %d possibilities? (y or n)", len);      fflush (rl_outstream);      if (get_y_or_n (0) == 0)	{	  rl_crlf ();	  rl_forced_update_display ();	  rl_display_fixed = 1;	  return;	}    }  rl_display_match_list (matches, len, max);  rl_forced_update_display ();  rl_display_fixed = 1;}static char *make_quoted_replacement (match, mtype, qc)     char *match;     int mtype;     char *qc;	/* Pointer to quoting character, if any */{  int should_quote, do_replace;  char *replacement;  /* If we are doing completion on quoted substrings, and any matches     contain any of the completer_word_break_characters, then auto-     matically prepend the substring with a quote character (just pick     the first one from the list of such) if it does not already begin     with a quote string.  FIXME: Need to remove any such automatically     inserted quote character when it no longer is necessary, such as     if we change the string we are completing on and the new set of     matches don't require a quoted substring. */  replacement = match;  should_quote = match && rl_completer_quote_characters &&			rl_filename_completion_desired &&			rl_filename_quoting_desired;  if (should_quote)    should_quote = should_quote && (!qc || !*qc ||		     (rl_completer_quote_characters && strchr (rl_completer_quote_characters, *qc)));  if (should_quote)    {      /* If there is a single match, see if we need to quote it.         This also checks whether the common prefix of several	 matches needs to be quoted. */      should_quote = rl_filename_quote_characters			? (_rl_strpbrk (match, rl_filename_quote_characters) != 0)			: 0;      do_replace = should_quote ? mtype : NO_MATCH;      /* Quote the replacement, since we found an embedded	 word break character in a potential match. */      if (do_replace != NO_MATCH && rl_filename_quoting_function)	replacement = (*rl_filename_quoting_function) (match, do_replace, qc);    }  return (replacement);}static voidinsert_match (match, start, mtype, qc)     char *match;     int start, mtype;     char *qc;{  char *replacement;  char oqc;  oqc = qc ? *qc : '\0';  replacement = make_quoted_replacement (match, mtype, qc);  /* Now insert the match. */  if (replacement)    {      /* Don't double an opening quote character. */      if (qc && *qc && start && rl_line_buffer[start - 1] == *qc &&	    replacement[0] == *qc)	start--;      /* If make_quoted_replacement changed the quoting character, remove	 the opening quote and insert the (fully-quoted) replacement. */      else if (qc && (*qc != oqc) && start && rl_line_buffer[start - 1] == oqc &&	    replacement[0] != oqc)	start--;      _rl_replace_text (replacement, start, rl_point - 1);      if (replacement != match)        free (replacement);    }}/* Append any necessary closing quote and a separator character to the   just-inserted match.  If the user has specified that directories   should be marked by a trailing `/', append one of those instead.  The   default trailing character is a space.  Returns the number of characters   appended.  If NONTRIVIAL_MATCH is set, we test for a symlink (if the OS   has them) and don't add a suffix for a symlink to a directory.  A   nontrivial match is one that actually adds to the word being completed.   The variable rl_completion_mark_symlink_dirs controls this behavior   (it's initially set to the what the user has chosen, indicated by the   value of _rl_complete_mark_symlink_dirs, but may be modified by an   application's completion function). */static intappend_to_match (text, delimiter, quote_char, nontrivial_match)     char *text;     int delimiter, quote_char, nontrivial_match;{  char temp_string[4], *filename;  int temp_string_index, s;  struct stat finfo;  temp_string_index = 0;  if (quote_char && rl_point && rl_line_buffer[rl_point - 1] != quote_char)    temp_string[temp_string_index++] = quote_char;  if (delimiter)    temp_string[temp_string_index++] = delimiter;  else if (rl_completion_suppress_append == 0 && rl_completion_append_character)    temp_string[temp_string_index++] = rl_completion_append_character;  temp_string[temp_string_index++] = '\0';  if (rl_filename_completion_desired)    {      filename = tilde_expand (text);      s = (nontrivial_match && rl_completion_mark_symlink_dirs == 0)		? LSTAT (filename, &finfo)		: stat (filename, &finfo);      if (s == 0 && S_ISDIR (finfo.st_mode))	{	  if (_rl_complete_mark_directories)	    {	      /* This is clumsy.  Avoid putting in a double slash if point		 is at the end of the line and the previous character is a		 slash. */	      if (rl_point && rl_line_buffer[rl_point] == '\0' && rl_line_buffer[rl_point - 1] == '/')		;	      else if (rl_line_buffer[rl_point] != '/')		rl_insert_text ("/");	    }	}#ifdef S_ISLNK      /* Don't add anything if the filename is a symlink and resolves to a	 directory. */      else if (s == 0 && S_ISLNK (finfo.st_mode) &&	       stat (filename, &finfo) == 0 && S_ISDIR (finfo.st_mode))	;#endif      else	{	  if (rl_point == rl_end && temp_string_index)	    rl_insert_text (temp_string);	}      free (filename);    }  else    {      if (rl_point == rl_end && temp_string_index)	rl_insert_text (temp_string);    }  return (temp_string_index);}static voidinsert_all_matches (matches, point, qc)     char **matches;     int point;     char *qc;{  int i;  char *rp;  rl_begin_undo_group ();  /* remove any opening quote character; make_quoted_replacement will add     it back. */  if (qc && *qc && point && rl_line_buffer[point - 1] == *qc)    point--;  rl_delete_text (point, rl_point);  rl_point = point;  if (matches[1])    {      for (i = 1; matches[i]; i++)	{	  rp = make_quoted_replacement (matches[i], SINGLE_MATCH, qc);	  rl_insert_text (rp);	  rl_insert_text (" ");	  if (rp != matches[i])	    free (rp);	}    }  else    {      rp = make_quoted_replacement (matches[0], SINGLE_MATCH, qc);      rl_insert_text (rp);      rl_insert_text (" ");      if (rp != matches[0])	free (rp);    }  rl_end_undo_group ();}void_rl_free_match_list (matches)     char **matches;{  register int i;  if (matches == 0)    return;  for (i = 0; matches[i]; i++)    free (matches[i]);  free (matches);}/* Complete the word at or before point.   WHAT_TO_DO says what to do with the completion.   `?' means list the possible completions.   TAB means do standard completion.   `*' means insert all of the possible completions.   `!' means to do standard completion, and list all possible completions if   there is more than one. */intrl_complete_internal (what_to_do)     int what_to_do;{  char **matches;  rl_compentry_func_t *our_func;  int start, end, delimiter, found_quote, i, nontrivial_lcd;  char *text, *saved_line_buffer;  char quote_char;  RL_SETSTATE(RL_STATE_COMPLETING);  set_completion_defaults (what_to_do);  saved_line_buffer = rl_line_buffer ? savestring (rl_line_buffer) : (char *)NULL;  our_func = rl_completion_entry_function		? rl_completion_entry_function		: rl_filename_completion_function;  /* We now look backwards for the start of a filename/variable word. */  end = rl_point;  found_quote = delimiter = 0;  quote_char = '\0';  if (rl_point)    /* This (possibly) changes rl_point.  If it returns a non-zero char,       we know we have an open quote. */    quote_char = _rl_find_completion_word (&found_quote, &delimiter);  start = rl_point;  rl_point = end;  text = rl_copy_text (start, end);  matches = gen_completion_matches (text, start, end, our_func, found_quote, quote_char);  /* nontrivial_lcd is set if the common prefix adds something to the word     being completed. */  nontrivial_lcd = matches && strcmp (text, matches[0]) != 0;  free (text);  if (matches == 0)    {      rl_ding ();      FREE (saved_line_buffer);      completion_changed_buffer = 0;      RL_UNSETSTATE(RL_STATE_COMPLETING);      return (0);    }  /* If we are matching filenames, the attempted completion function will     have set rl_filename_completion_desired to a non-zero value.  The basic     rl_filename_completion_function does this. */  i = rl_filename_completion_desired;  if (postprocess_matches (&matches, i) == 0)

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品一区二区在线观看不卡| 国产精品全国免费观看高清| 国产麻豆一精品一av一免费 | 91成人免费网站| 久久91精品国产91久久小草| 一区二区高清在线| 国产精品丝袜黑色高跟| 日韩午夜激情视频| 欧洲一区二区三区免费视频| 国产成人精品影视| 麻豆国产精品777777在线| 亚洲高清久久久| 国产精品国产自产拍高清av | 综合久久久久久| 精品国产乱码久久久久久免费| 欧美午夜精品一区| 色视频一区二区| 国产91精品露脸国语对白| 久久疯狂做爰流白浆xx| 视频在线观看一区二区三区| 综合婷婷亚洲小说| 国产精品国产三级国产aⅴ入口| 久久五月婷婷丁香社区| 日韩欧美成人激情| 日韩一卡二卡三卡国产欧美| 欧美日韩性生活| 色婷婷久久99综合精品jk白丝 | 国产成人亚洲综合a∨猫咪| 日韩成人免费在线| 五月婷婷综合在线| 一区二区三区在线观看欧美| 自拍偷拍亚洲欧美日韩| 国产女主播一区| 久久精品亚洲精品国产欧美kt∨| 日韩三级在线免费观看| 日韩欧美国产三级电影视频| 欧美一级日韩免费不卡| 4438x成人网最大色成网站| 欧美高清一级片在线| 色婷婷综合视频在线观看| 91九色02白丝porn| 欧美做爰猛烈大尺度电影无法无天| av不卡在线观看| 一本色道久久加勒比精品| 91美女精品福利| 欧美午夜片在线看| 91精品国产综合久久久久久久久久| 欧美日本国产视频| 欧美区在线观看| 日韩三级免费观看| 精品国产乱码久久久久久牛牛 | 国产日韩精品视频一区| 国产欧美一区二区在线观看| 国产精品久久久久久久裸模| 亚洲精品国产第一综合99久久| 亚洲人精品午夜| 亚洲成av人影院在线观看网| 日韩电影一区二区三区| 黄色小说综合网站| 国产成a人亚洲精品| 色婷婷久久99综合精品jk白丝| 欧美日韩一级黄| 欧美zozozo| 国产精品欧美一区二区三区| 亚洲精品成人少妇| 午夜av区久久| 国内精品不卡在线| 91视频.com| 欧美久久久一区| 久久婷婷久久一区二区三区| 亚洲色图色小说| 亚洲gay无套男同| 国产精品影视在线观看| 色综合久久综合网97色综合 | 91精品国产高清一区二区三区| 欧美成人bangbros| 亚洲人成小说网站色在线| 男人操女人的视频在线观看欧美| 国产精品白丝jk白祙喷水网站| 色综合天天综合给合国产| 欧美军同video69gay| 日本一区二区三区高清不卡| 亚洲一区二区三区小说| 国模套图日韩精品一区二区 | 日本美女一区二区| 国产露脸91国语对白| 91网站视频在线观看| 日韩视频123| 亚洲欧洲av在线| 蜜臀久久99精品久久久久宅男 | 久久精品国产一区二区三区免费看| 成人一级黄色片| 欧美一区二区三区精品| 中文字幕在线一区| 久久国产免费看| 91国在线观看| 欧美激情一区二区三区蜜桃视频| 亚洲va欧美va国产va天堂影院| 国产精品乡下勾搭老头1| 欧美精品tushy高清| 亚洲女爱视频在线| 国产成人av电影| 欧美成人一区二区三区| 亚洲一区二区三区在线| 成人亚洲一区二区一| 精品国产青草久久久久福利| 亚洲永久精品大片| 99久免费精品视频在线观看| 26uuu精品一区二区在线观看| 亚洲综合免费观看高清完整版 | 555夜色666亚洲国产免| 亚洲三级理论片| 粉嫩一区二区三区性色av| 欧美va亚洲va国产综合| 亚洲成人av一区二区三区| 91麻豆精东视频| 中文字幕精品在线不卡| 国产高清久久久久| 精品三级在线观看| 日韩影院精彩在线| 欧美美女激情18p| 亚洲乱码国产乱码精品精可以看| 成人av网址在线| 久久久久久久久97黄色工厂| 精品在线一区二区| 日韩欧美国产精品一区| 蜜桃视频在线观看一区二区| 69堂国产成人免费视频| 午夜在线电影亚洲一区| 欧美日韩一区二区三区四区| 亚洲最大成人网4388xx| 99久久久久久| 最新国产成人在线观看| 9l国产精品久久久久麻豆| 亚洲人亚洲人成电影网站色| av激情成人网| 亚洲欧美日本韩国| 色琪琪一区二区三区亚洲区| 一区二区三区日韩精品视频| 91久久久免费一区二区| 亚洲综合图片区| 337p亚洲精品色噜噜狠狠| 免费观看在线综合色| 欧美tickling挠脚心丨vk| 国产乱码字幕精品高清av | 丰满亚洲少妇av| 国产精品色婷婷久久58| 91在线观看地址| 亚洲国产综合色| 日韩欧美国产综合在线一区二区三区| 久久精工是国产品牌吗| 亚洲精品在线免费播放| 成人精品gif动图一区| 亚洲免费观看高清完整版在线观看 | 中文字幕免费不卡| 91蜜桃在线观看| 亚洲成人三级小说| 日韩美女视频一区二区在线观看| 国产原创一区二区| 成人欧美一区二区三区白人 | 久久精品欧美日韩| yourporn久久国产精品| 亚洲免费视频成人| 日韩欧美区一区二| 不卡一二三区首页| 图片区小说区区亚洲影院| 日韩精品综合一本久道在线视频| 国产91高潮流白浆在线麻豆| 亚洲靠逼com| 日韩欧美在线123| aaa亚洲精品| 麻豆精品国产91久久久久久| 国产精品午夜久久| 欧美日韩国产高清一区| 国产老妇另类xxxxx| 亚洲国产精品久久久久秋霞影院| 欧美成人乱码一区二区三区| 91麻豆福利精品推荐| 久久不见久久见免费视频1| 国产精品久久午夜夜伦鲁鲁| 91精品国产色综合久久ai换脸| 国产99久久久久久免费看农村| 亚洲日本va午夜在线影院| 精品久久99ma| 欧洲日韩一区二区三区| 韩国精品一区二区| 亚洲最新在线观看| 国产日韩精品一区| 日韩三级视频中文字幕| 91亚洲大成网污www| 国产一区欧美二区| 亚洲成人在线网站| 国产精品理伦片| 精品少妇一区二区三区| 欧美色综合久久| av亚洲精华国产精华精| 九九**精品视频免费播放| 性久久久久久久久久久久| 日韩一区在线播放| 久久久不卡网国产精品二区|