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

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

?? complete.c

?? 基于的linux的oracle sqlplus替代工具
?? C
?? 第 1 頁 / 共 4 頁
字號:
    temp = pathname + 1;#endif  if (temp == 0 || *temp == '\0')    return (pathname);  /* If the basename is NULL, we might have a pathname like '/usr/src/'.     Look for a previous slash and, if one is found, return the portion     following that slash.  If there's no previous slash, just return the     pathname we were passed. */  else if (temp[1] == '\0')    {      for (x = temp - 1; x > pathname; x--)        if (*x == '/')          break;      return ((*x == '/') ? x + 1 : pathname);    }  else    return ++temp;}/* Output TO_PRINT to rl_outstream.  If VISIBLE_STATS is defined and we   are using it, check for and output a single character for `special'   filenames.  Return the number of characters we output. */#define PUTX(c) \    do { \      if (CTRL_CHAR (c)) \        { \          putc ('^', rl_outstream); \          putc (UNCTRL (c), rl_outstream); \          printed_len += 2; \        } \      else if (c == RUBOUT) \	{ \	  putc ('^', rl_outstream); \	  putc ('?', rl_outstream); \	  printed_len += 2; \	} \      else \	{ \	  putc (c, rl_outstream); \	  printed_len++; \	} \    } while (0)static intprint_filename (to_print, full_pathname)     char *to_print, *full_pathname;{  int printed_len = 0;#if !defined (VISIBLE_STATS)  char *s;  for (s = to_print; *s; s++)    {      PUTX (*s);    }#else    char *s, c, *new_full_pathname;  int extension_char, slen, tlen;  for (s = to_print; *s; s++)    {      PUTX (*s);    } if (rl_filename_completion_desired && rl_visible_stats)    {      /* If to_print != full_pathname, to_print is the basename of the	 path passed.  In this case, we try to expand the directory	 name before checking for the stat character. */      if (to_print != full_pathname)	{	  /* Terminate the directory name. */	  c = to_print[-1];	  to_print[-1] = '\0';	  /* If setting the last slash in full_pathname to a NUL results in	     full_pathname being the empty string, we are trying to complete	     files in the root directory.  If we pass a null string to the	     bash directory completion hook, for example, it will expand it	     to the current directory.  We just want the `/'. */	  s = tilde_expand (full_pathname && *full_pathname ? full_pathname : "/");	  if (rl_directory_completion_hook)	    (*rl_directory_completion_hook) (&s);	  slen = strlen (s);	  tlen = strlen (to_print);	  new_full_pathname = (char *)xmalloc (slen + tlen + 2);	  strcpy (new_full_pathname, s);	  new_full_pathname[slen] = '/';	  strcpy (new_full_pathname + slen + 1, to_print);	  extension_char = stat_char (new_full_pathname);	  free (new_full_pathname);	  to_print[-1] = c;	}      else	{	  s = tilde_expand (full_pathname);	  extension_char = stat_char (s);	}      free (s);      if (extension_char)	{	  putc (extension_char, rl_outstream);	  printed_len++;	}    }#endif /* VISIBLE_STATS */  return printed_len;}static char *rl_quote_filename (s, rtype, qcp)     char *s;     int rtype;     char *qcp;{  char *r;  r = (char *)xmalloc (strlen (s) + 2);  *r = *rl_completer_quote_characters;  strcpy (r + 1, s);  if (qcp)    *qcp = *rl_completer_quote_characters;  return r;}/* Find the bounds of the current word for completion purposes, and leave   rl_point set to the end of the word.  This function skips quoted   substrings (characters between matched pairs of characters in   rl_completer_quote_characters).  First we try to find an unclosed   quoted substring on which to do matching.  If one is not found, we use   the word break characters to find the boundaries of the current word.   We call an application-specific function to decide whether or not a   particular word break character is quoted; if that function returns a   non-zero result, the character does not break a word.  This function   returns the opening quote character if we found an unclosed quoted   substring, '\0' otherwise.  FP, if non-null, is set to a value saying   which (shell-like) quote characters we found (single quote, double   quote, or backslash) anywhere in the string.  DP, if non-null, is set to   the value of the delimiter character that caused a word break. */char_rl_find_completion_word (fp, dp)     int *fp, *dp;{  int scan, end, found_quote, delimiter, pass_next, isbrk;  char quote_char;  end = rl_point;  found_quote = delimiter = 0;  quote_char = '\0';  if (rl_completer_quote_characters)    {      /* We have a list of characters which can be used in pairs to	 quote substrings for the completer.  Try to find the start	 of an unclosed quoted substring. */      /* FOUND_QUOTE is set so we know what kind of quotes we found. */      for (scan = pass_next = 0; scan < end; scan++)	{	  if (pass_next)	    {	      pass_next = 0;	      continue;	    }	  /* Shell-like semantics for single quotes -- don't allow backslash	     to quote anything in single quotes, especially not the closing	     quote.  If you don't like this, take out the check on the value	     of quote_char. */	  if (quote_char != '\'' && rl_line_buffer[scan] == '\\')	    {	      pass_next = 1;	      found_quote |= RL_QF_BACKSLASH;	      continue;	    }	  if (quote_char != '\0')	    {	      /* Ignore everything until the matching close quote char. */	      if (rl_line_buffer[scan] == quote_char)		{		  /* Found matching close.  Abandon this substring. */		  quote_char = '\0';		  rl_point = end;		}	    }	  else if (strchr (rl_completer_quote_characters, rl_line_buffer[scan]))	    {	      /* Found start of a quoted substring. */	      quote_char = rl_line_buffer[scan];	      rl_point = scan + 1;	      /* Shell-like quoting conventions. */	      if (quote_char == '\'')		found_quote |= RL_QF_SINGLE_QUOTE;	      else if (quote_char == '"')		found_quote |= RL_QF_DOUBLE_QUOTE;	      else		found_quote |= RL_QF_OTHER_QUOTE;      	    }	}    }  if (rl_point == end && quote_char == '\0')    {      /* We didn't find an unclosed quoted substring upon which to do         completion, so use the word break characters to find the         substring on which to complete. */#if defined (HANDLE_MULTIBYTE)      while (rl_point = _rl_find_prev_mbchar (rl_line_buffer, rl_point, MB_FIND_ANY))#else      while (--rl_point)#endif	{	  scan = rl_line_buffer[rl_point];	  if (strchr (rl_completer_word_break_characters, scan) == 0)	    continue;	  /* Call the application-specific function to tell us whether	     this word break character is quoted and should be skipped. */	  if (rl_char_is_quoted_p && found_quote &&	      (*rl_char_is_quoted_p) (rl_line_buffer, rl_point))	    continue;	  /* Convoluted code, but it avoids an n^2 algorithm with calls	     to char_is_quoted. */	  break;	}    }  /* If we are at an unquoted word break, then advance past it. */  scan = rl_line_buffer[rl_point];  /* If there is an application-specific function to say whether or not     a character is quoted and we found a quote character, let that     function decide whether or not a character is a word break, even     if it is found in rl_completer_word_break_characters.  Don't bother     if we're at the end of the line, though. */  if (scan)    {      if (rl_char_is_quoted_p)	isbrk = (found_quote == 0 ||		(*rl_char_is_quoted_p) (rl_line_buffer, rl_point) == 0) &&		strchr (rl_completer_word_break_characters, scan) != 0;      else	isbrk = strchr (rl_completer_word_break_characters, scan) != 0;      if (isbrk)	{	  /* If the character that caused the word break was a quoting	     character, then remember it as the delimiter. */	  if (rl_basic_quote_characters &&	      strchr (rl_basic_quote_characters, scan) &&	      (end - rl_point) > 1)	    delimiter = scan;	  /* If the character isn't needed to determine something special	     about what kind of completion to perform, then advance past it. */	  if (rl_special_prefixes == 0 || strchr (rl_special_prefixes, scan) == 0)	    rl_point++;	}    }  if (fp)    *fp = found_quote;  if (dp)    *dp = delimiter;  return (quote_char);}static char **gen_completion_matches (text, start, end, our_func, found_quote, quote_char)     char *text;     int start, end;     rl_compentry_func_t *our_func;     int found_quote, quote_char;{  char **matches, *temp;  /* If the user wants to TRY to complete, but then wants to give     up and use the default completion function, they set the     variable rl_attempted_completion_function. */  if (rl_attempted_completion_function)    {      matches = (*rl_attempted_completion_function) (text, start, end);      if (matches || rl_attempted_completion_over)	{	  rl_attempted_completion_over = 0;	  return (matches);	}    }  /* Beware -- we're stripping the quotes here.  Do this only if we know     we are doing filename completion and the application has defined a     filename dequoting function. */  temp = (char *)NULL;  if (found_quote && our_func == rl_filename_completion_function &&      rl_filename_dequoting_function)    {      /* delete single and double quotes */      temp = (*rl_filename_dequoting_function) (text, quote_char);      text = temp;	/* not freeing text is not a memory leak */    }  matches = rl_completion_matches (text, our_func);  FREE (temp);  return matches;  }/* Filter out duplicates in MATCHES.  This frees up the strings in   MATCHES. */static char **remove_duplicate_matches (matches)     char **matches;{  char *lowest_common;  int i, j, newlen;  char dead_slot;  char **temp_array;  /* Sort the items. */  for (i = 0; matches[i]; i++)    ;  /* Sort the array without matches[0], since we need it to     stay in place no matter what. */  if (i)    qsort (matches+1, i-1, sizeof (char *), (QSFUNC *)_rl_qsort_string_compare);  /* Remember the lowest common denominator for it may be unique. */  lowest_common = savestring (matches[0]);  for (i = newlen = 0; matches[i + 1]; i++)    {      if (strcmp (matches[i], matches[i + 1]) == 0)	{	  free (matches[i]);	  matches[i] = (char *)&dead_slot;	}      else	newlen++;    }  /* We have marked all the dead slots with (char *)&dead_slot.     Copy all the non-dead entries into a new array. */  temp_array = (char **)xmalloc ((3 + newlen) * sizeof (char *));  for (i = j = 1; matches[i]; i++)    {      if (matches[i] != (char *)&dead_slot)	temp_array[j++] = matches[i];    }  temp_array[j] = (char *)NULL;  if (matches[0] != (char *)&dead_slot)    free (matches[0]);  /* Place the lowest common denominator back in [0]. */  temp_array[0] = lowest_common;  /* If there is one string left, and it is identical to the     lowest common denominator, then the LCD is the string to     insert. */  if (j == 2 && strcmp (temp_array[0], temp_array[1]) == 0)    {      free (temp_array[1]);      temp_array[1] = (char *)NULL;    }  return (temp_array);}/* Find the common prefix of the list of matches, and put it into   matches[0]. */static intcompute_lcd_of_matches (match_list, matches, text)     char **match_list;     int matches;     const char *text;{  register int i, c1, c2, si;  int low;		/* Count of max-matched characters. */#if defined (HANDLE_MULTIBYTE)  int v;  mbstate_t ps1, ps2;  wchar_t wc1, wc2;#endif  /* If only one match, just use that.  Otherwise, compare each     member of the list with the next, finding out where they     stop matching. */  if (matches == 1)    {      match_list[0] = match_list[1];      match_list[1] = (char *)NULL;      return 1;    }  for (i = 1, low = 100000; i < matches; i++)    {#if defined (HANDLE_MULTIBYTE)      if (MB_CUR_MAX > 1 && rl_byte_oriented == 0)	{	  memset (&ps1, 0, sizeof (mbstate_t));	  memset (&ps2, 0, sizeof (mbstate_t));	}#endif      if (_rl_completion_case_fold)	{	  for (si = 0;	       (c1 = _rl_to_lower(match_list[i][si])) &&	       (c2 = _rl_to_lower(match_list[i + 1][si]));	       si++)#if defined (HANDLE_MULTIBYTE)	    if (MB_CUR_MAX > 1 && rl_byte_oriented == 0)	      {		v = mbrtowc (&wc1, match_list[i]+si, strlen (match_list[i]+si), &ps1);		mbrtowc (&wc2, match_list[i+1]+si, strlen (match_list[i+1]+si), &ps2);		wc1 = towlower (wc1);		wc2 = towlower (wc2);		if (wc1 != wc2)		  break;		else if (v > 1)		  si += v - 1;	      }	    else#endif	    if (c1 != c2)	      break;	}      else	{	  for (si = 0;	       (c1 = match_list[i][si]) &&	       (c2 = match_list[i + 1][si]);	       si++)#if defined (HANDLE_MULTIBYTE)	    if (MB_CUR_MAX > 1 && rl_byte_oriented == 0)	      {		mbstate_t ps_back = ps1;		if (!_rl_compare_chars (match_list[i], si, &ps1, match_list[i+1], si, &ps2))		  break;		else if ((v = _rl_get_char_len (&match_list[i][si], &ps_back)) > 1)		  si += v - 1;	      }	    else#endif	    if (c1 != c2)	      break;	}      if (low > si)	low = si;    }  /* If there were multiple matches, but none matched up to even the     first character, and the user typed something, use that as the     value of matches[0]. */  if (low == 0 && text && *text)    {      match_list[0] = (char *)xmalloc (strlen (text) + 1);      strcpy (match_list[0], text);    }  else    {      match_list[0] = (char *)xmalloc (low + 1);      /* XXX - this might need changes in the presence of multibyte chars */      /* If we are ignoring case, try to preserve the case of the string	 the user typed in the face of multiple matches differing in case. */      if (_rl_completion_case_fold)	{	  /* sort the list to get consistent answers. */	  qsort (match_list+1, matches, sizeof(char *), (QSFUNC *)_rl_qsort_string_compare);	  si = strlen (text);	  if (si <= low)	    {	      for (i = 1; i <= matches; i++)		if (strncmp (match_list[i], text, si) == 0)		  {		    strncpy (match_list[0], match_list[i], low);		    break;		  }	      /* no casematch, use first entry */	      if (i > matches)		strncpy (match_list[0], match_list[1], low);	    }	  else	    /* otherwise, just use the text the user typed. */	    strncpy (match_list[0], text, low);	}      else        strncpy (match_list[0], match_list[1], low);

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日本成人中文字幕| 国产一区二区福利视频| 久久精品视频一区二区| 欧美性色欧美a在线播放| 极品少妇一区二区| 一区二区三区视频在线看| 国产欧美精品一区二区三区四区 | 国产欧美日韩另类一区| 色综合久久久久久久久久久| 国产不卡免费视频| 日韩成人免费电影| 一区二区三区在线不卡| 国产精品的网站| 中文在线一区二区| 精品欧美一区二区久久| 欧美中文字幕久久| 欧美日韩一级视频| 欧美亚洲精品一区| 99免费精品视频| 91污在线观看| 福利一区在线观看| 成人免费毛片app| 国产一区二区精品久久91| 国内精品久久久久影院一蜜桃| 亚洲成人精品在线观看| 日韩精品一区第一页| 男男gaygay亚洲| 蜜桃av一区二区在线观看 | www.激情成人| www.亚洲色图.com| 在线观看免费亚洲| 7777精品伊人久久久大香线蕉超级流畅 | av电影在线观看不卡| 成人激情文学综合网| 91福利在线播放| 成人av在线电影| 色婷婷亚洲婷婷| 91精品婷婷国产综合久久 | 亚洲精品日日夜夜| 亚洲最色的网站| 欧美aaaaaa午夜精品| 极品少妇一区二区三区精品视频| 国产91丝袜在线播放九色| 91女神在线视频| 欧美日韩高清在线播放| 久久午夜老司机| 中文字幕一区二区三中文字幕| 亚洲国产精品久久艾草纯爱| 韩国av一区二区三区| 99re亚洲国产精品| 日韩精品一区二区三区swag| 国产精品天干天干在观线| 日韩avvvv在线播放| 精品一区二区国语对白| 成人av在线资源网站| 欧美日韩精品福利| 欧美日韩视频在线第一区 | 在线日韩国产精品| 日韩亚洲欧美在线| 亚洲精品视频在线观看免费| 久久97超碰国产精品超碰| 久久国产尿小便嘘嘘尿| 日本韩国视频一区二区| 欧美日本精品一区二区三区| 国产欧美日韩久久| 日韩高清在线电影| 婷婷成人综合网| 91在线云播放| 国产农村妇女毛片精品久久麻豆 | 舔着乳尖日韩一区| 国产a精品视频| 精品国产伦一区二区三区观看方式| 亚洲欧洲三级电影| 不卡一区二区三区四区| 日韩欧美成人一区| 视频一区在线视频| 91久久精品网| 一区二区久久久| 成人一道本在线| 国产精品日韩成人| 成人自拍视频在线观看| 在线成人av影院| 日韩二区在线观看| 色婷婷国产精品综合在线观看| 亚洲国产精品成人综合色在线婷婷| 日本成人中文字幕在线视频| 7777精品伊人久久久大香线蕉经典版下载| 自拍偷在线精品自拍偷无码专区| 国产寡妇亲子伦一区二区| 欧美精品色综合| 一级中文字幕一区二区| 欧美视频在线不卡| 一区二区在线免费观看| 欧美性猛交xxxx乱大交退制版| 亚洲欧美日韩在线不卡| 欧美日韩dvd在线观看| 亚洲午夜精品17c| 色婷婷av一区二区三区软件 | 中文字幕永久在线不卡| aaa欧美日韩| 一区二区三区中文免费| 欧美视频一区二区三区四区| 视频一区二区中文字幕| 色88888久久久久久影院按摩| 国产精品久久久久久久裸模| 91网站最新网址| 一区二区三区色| 欧美va亚洲va香蕉在线| 国产成人免费在线| 亚洲美女少妇撒尿| 风流少妇一区二区| 国产精品久久久爽爽爽麻豆色哟哟| 精品一二三四区| 久久精子c满五个校花| 丁香亚洲综合激情啪啪综合| 亚洲国产中文字幕| 91精品国产欧美一区二区| 狠狠色综合播放一区二区| 《视频一区视频二区| 69久久99精品久久久久婷婷 | 在线播放国产精品二区一二区四区| 蜜臀av性久久久久蜜臀aⅴ| 久久久不卡网国产精品二区| 91在线精品一区二区三区| 蜜桃av噜噜一区二区三区小说| 久久影视一区二区| 成人黄色软件下载| 爽好久久久欧美精品| 国产精品嫩草99a| 在线不卡中文字幕播放| 国产一区在线看| 国产精品国产馆在线真实露脸| 欧美巨大另类极品videosbest| av电影天堂一区二区在线观看| 蜜臀av一区二区| 亚洲综合免费观看高清完整版 | 亚洲欧洲精品成人久久奇米网| 欧美亚洲日本国产| av不卡在线观看| 蜜芽一区二区三区| 一区二区三区免费观看| 日韩理论电影院| 久久综合九色综合欧美98| 91精品国产欧美一区二区| 欧美色图12p| 在线免费av一区| 99久久精品免费看国产| 精品一区二区成人精品| 青青草视频一区| 日本亚洲欧美天堂免费| 亚洲综合在线五月| 亚洲欧美偷拍卡通变态| 亚洲欧美在线视频观看| www国产成人| 91精品国产综合久久精品图片 | 欧美综合亚洲图片综合区| 91视频你懂的| 日本道在线观看一区二区| 91麻豆免费视频| 欧美综合一区二区三区| 色8久久人人97超碰香蕉987| 欧美性xxxxxxxx| 欧美日韩精品欧美日韩精品一| 91精品国产欧美一区二区18| 欧美日韩精品二区第二页| 9191精品国产综合久久久久久 | www.99精品| 99久久99久久精品免费看蜜桃| 99久久精品国产导航| 欧亚一区二区三区| 91精品婷婷国产综合久久性色 | 欧美美女直播网站| 欧美人与禽zozo性伦| 欧美成人激情免费网| 国产三级一区二区| 亚洲欧美一区二区视频| 亚洲自拍偷拍综合| 蜜臀av一区二区三区| 日韩福利电影在线| 国产精品一区二区在线看| av资源站一区| 欧美色图一区二区三区| 日韩精品中午字幕| 最新欧美精品一区二区三区| 亚洲福利一区二区| 国产aⅴ综合色| 日本黄色一区二区| 欧美电影免费观看高清完整版在线观看 | 欧美日韩三级一区二区| 精品人伦一区二区色婷婷| 亚洲精品高清视频在线观看| 秋霞国产午夜精品免费视频| 国产美女久久久久| 在线观看免费成人| 久久久久久久久久久久电影| 亚洲欧美日韩人成在线播放| 亚洲成人www| 91视视频在线观看入口直接观看www | 国产精品色噜噜| 亚洲成人高清在线|