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

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

?? complete.c

?? 基于的linux的oracle sqlplus替代工具
?? C
?? 第 1 頁(yè) / 共 4 頁(yè)
字號(hào):
    {      rl_ding ();      FREE (saved_line_buffer);      completion_changed_buffer = 0;      RL_UNSETSTATE(RL_STATE_COMPLETING);      return (0);    }  switch (what_to_do)    {    case TAB:    case '!':      /* Insert the first match with proper quoting. */      if (*matches[0])	insert_match (matches[0], start, matches[1] ? MULT_MATCH : SINGLE_MATCH, &quote_char);      /* If there are more matches, ring the bell to indicate.	 If we are in vi mode, Posix.2 says to not ring the bell.	 If the `show-all-if-ambiguous' variable is set, display	 all the matches immediately.  Otherwise, if this was the	 only match, and we are hacking files, check the file to	 see if it was a directory.  If so, and the `mark-directories'	 variable is set, add a '/' to the name.  If not, and we	 are at the end of the line, then add a space.  */      if (matches[1])	{	  if (what_to_do == '!')	    {	      display_matches (matches);	      break;	    }	  else if (rl_editing_mode != vi_mode)	    rl_ding ();	/* There are other matches remaining. */	}      else	append_to_match (matches[0], delimiter, quote_char, nontrivial_lcd);      break;    case '*':      insert_all_matches (matches, start, &quote_char);      break;    case '?':      display_matches (matches);      break;    default:      fprintf (stderr, "\r\nreadline: bad value %d for what_to_do in rl_complete\n", what_to_do);      rl_ding ();      FREE (saved_line_buffer);      RL_UNSETSTATE(RL_STATE_COMPLETING);      return 1;    }  _rl_free_match_list (matches);  /* Check to see if the line has changed through all of this manipulation. */  if (saved_line_buffer)    {      completion_changed_buffer = strcmp (rl_line_buffer, saved_line_buffer) != 0;      free (saved_line_buffer);    }  RL_UNSETSTATE(RL_STATE_COMPLETING);  return 0;}/***************************************************************//*							       *//*  Application-callable completion match generator functions  *//*							       *//***************************************************************//* Return an array of (char *) which is a list of completions for TEXT.   If there are no completions, return a NULL pointer.   The first entry in the returned array is the substitution for TEXT.   The remaining entries are the possible completions.   The array is terminated with a NULL pointer.   ENTRY_FUNCTION is a function of two args, and returns a (char *).     The first argument is TEXT.     The second is a state argument; it should be zero on the first call, and     non-zero on subsequent calls.  It returns a NULL pointer to the caller     when there are no more matches. */char **rl_completion_matches (text, entry_function)     const char *text;     rl_compentry_func_t *entry_function;{  /* Number of slots in match_list. */  int match_list_size;  /* The list of matches. */  char **match_list;  /* Number of matches actually found. */  int matches;  /* Temporary string binder. */  char *string;  matches = 0;  match_list_size = 10;  match_list = (char **)xmalloc ((match_list_size + 1) * sizeof (char *));  match_list[1] = (char *)NULL;  while (string = (*entry_function) (text, matches))    {      if (matches + 1 == match_list_size)	match_list = (char **)xrealloc	  (match_list, ((match_list_size += 10) + 1) * sizeof (char *));      match_list[++matches] = string;      match_list[matches + 1] = (char *)NULL;    }  /* If there were any matches, then look through them finding out the     lowest common denominator.  That then becomes match_list[0]. */  if (matches)    compute_lcd_of_matches (match_list, matches, text);  else				/* There were no matches. */    {      free (match_list);      match_list = (char **)NULL;    }  return (match_list);}/* A completion function for usernames.   TEXT contains a partial username preceded by a random   character (usually `~').  */char *rl_username_completion_function (text, state)     const char *text;     int state;{#if defined (__WIN32__) || defined (__OPENNT)  return (char *)NULL;#else /* !__WIN32__ && !__OPENNT) */  static char *username = (char *)NULL;  static struct passwd *entry;  static int namelen, first_char, first_char_loc;  char *value;  if (state == 0)    {      FREE (username);      first_char = *text;      first_char_loc = first_char == '~';      username = savestring (&text[first_char_loc]);      namelen = strlen (username);      setpwent ();    }  while (entry = getpwent ())    {      /* Null usernames should result in all users as possible completions. */      if (namelen == 0 || (STREQN (username, entry->pw_name, namelen)))	break;    }  if (entry == 0)    {      endpwent ();      return ((char *)NULL);    }  else    {      value = (char *)xmalloc (2 + strlen (entry->pw_name));      *value = *text;      strcpy (value + first_char_loc, entry->pw_name);      if (first_char == '~')	rl_filename_completion_desired = 1;      return (value);    }#endif /* !__WIN32__ && !__OPENNT */}/* Okay, now we write the entry_function for filename completion.  In the   general case.  Note that completion in the shell is a little different   because of all the pathnames that must be followed when looking up the   completion for a command. */char *rl_filename_completion_function (text, state)     const char *text;     int state;{  static DIR *directory = (DIR *)NULL;  static char *filename = (char *)NULL;  static char *dirname = (char *)NULL;  static char *users_dirname = (char *)NULL;  static int filename_len;  char *temp;  int dirlen;  struct dirent *entry;  /* If we don't have any state, then do some initialization. */  if (state == 0)    {      /* If we were interrupted before closing the directory or reading	 all of its contents, close it. */      if (directory)	{	  closedir (directory);	  directory = (DIR *)NULL;	}      FREE (dirname);      FREE (filename);      FREE (users_dirname);      filename = savestring (text);      if (*text == 0)	text = ".";      dirname = savestring (text);      temp = strrchr (dirname, '/');#if defined (__MSDOS__)      /* special hack for //X/... */      if (dirname[0] == '/' && dirname[1] == '/' && ISALPHA ((unsigned char)dirname[2]) && dirname[3] == '/')        temp = strrchr (dirname + 3, '/');#endif      if (temp)	{	  strcpy (filename, ++temp);	  *temp = '\0';	}#if defined (__MSDOS__)      /* searches from current directory on the drive */      else if (ISALPHA ((unsigned char)dirname[0]) && dirname[1] == ':')        {          strcpy (filename, dirname + 2);          dirname[2] = '\0';        }#endif      else	{	  dirname[0] = '.';	  dirname[1] = '\0';	}      /* We aren't done yet.  We also support the "~user" syntax. */      /* Save the version of the directory that the user typed. */      users_dirname = savestring (dirname);      if (*dirname == '~')	{	  temp = tilde_expand (dirname);	  free (dirname);	  dirname = temp;	}      if (rl_directory_rewrite_hook)	(*rl_directory_rewrite_hook) (&dirname);      if (rl_directory_completion_hook && (*rl_directory_completion_hook) (&dirname))	{	  free (users_dirname);	  users_dirname = savestring (dirname);	}      directory = opendir (dirname);      filename_len = strlen (filename);      rl_filename_completion_desired = 1;    }  /* At this point we should entertain the possibility of hacking wildcarded     filenames, like /usr/man/man<WILD>/te<TAB>.  If the directory name     contains globbing characters, then build an array of directories, and     then map over that list while completing. */  /* *** UNIMPLEMENTED *** */  /* Now that we have some state, we can read the directory. */  entry = (struct dirent *)NULL;  while (directory && (entry = readdir (directory)))    {      /* Special case for no filename.  If the user has disabled the         `match-hidden-files' variable, skip filenames beginning with `.'.	 All other entries except "." and ".." match. */      if (filename_len == 0)	{	  if (_rl_match_hidden_files == 0 && HIDDEN_FILE (entry->d_name))	    continue;	  if (entry->d_name[0] != '.' ||	       (entry->d_name[1] &&		 (entry->d_name[1] != '.' || entry->d_name[2])))	    break;	}      else	{	  /* Otherwise, if these match up to the length of filename, then	     it is a match. */	  if (_rl_completion_case_fold)	    {	      if ((_rl_to_lower (entry->d_name[0]) == _rl_to_lower (filename[0])) &&		  (((int)D_NAMLEN (entry)) >= filename_len) &&		  (_rl_strnicmp (filename, entry->d_name, filename_len) == 0))		break;	    }	  else	    {	      if ((entry->d_name[0] == filename[0]) &&		  (((int)D_NAMLEN (entry)) >= filename_len) &&		  (strncmp (filename, entry->d_name, filename_len) == 0))		break;	    }	}    }  if (entry == 0)    {      if (directory)	{	  closedir (directory);	  directory = (DIR *)NULL;	}      if (dirname)	{	  free (dirname);	  dirname = (char *)NULL;	}      if (filename)	{	  free (filename);	  filename = (char *)NULL;	}      if (users_dirname)	{	  free (users_dirname);	  users_dirname = (char *)NULL;	}      return (char *)NULL;    }  else    {      /* dirname && (strcmp (dirname, ".") != 0) */      if (dirname && (dirname[0] != '.' || dirname[1]))	{	  if (rl_complete_with_tilde_expansion && *users_dirname == '~')	    {	      dirlen = strlen (dirname);	      temp = (char *)xmalloc (2 + dirlen + D_NAMLEN (entry));	      strcpy (temp, dirname);	      /* Canonicalization cuts off any final slash present.  We		 may need to add it back. */	      if (dirname[dirlen - 1] != '/')	        {	          temp[dirlen++] = '/';	          temp[dirlen] = '\0';	        }	    }	  else	    {	      dirlen = strlen (users_dirname);	      temp = (char *)xmalloc (2 + dirlen + D_NAMLEN (entry));	      strcpy (temp, users_dirname);	      /* Make sure that temp has a trailing slash here. */	      if (users_dirname[dirlen - 1] != '/')		temp[dirlen++] = '/';	    }	  strcpy (temp + dirlen, entry->d_name);	}      else	temp = savestring (entry->d_name);      return (temp);    }}/* An initial implementation of a menu completion function a la tcsh.  The   first time (if the last readline command was not rl_menu_complete), we   generate the list of matches.  This code is very similar to the code in   rl_complete_internal -- there should be a way to combine the two.  Then,   for each item in the list of matches, we insert the match in an undoable   fashion, with the appropriate character appended (this happens on the   second and subsequent consecutive calls to rl_menu_complete).  When we   hit the end of the match list, we restore the original unmatched text,   ring the bell, and reset the counter to zero. */intrl_menu_complete (count, ignore)     int count, ignore;{  rl_compentry_func_t *our_func;  int matching_filenames, found_quote;  static char *orig_text;  static char **matches = (char **)0;  static int match_list_index = 0;  static int match_list_size = 0;  static int orig_start, orig_end;  static char quote_char;  static int delimiter;  /* The first time through, we generate the list of matches and set things     up to insert them. */  if (rl_last_func != rl_menu_complete)    {      /* Clean up from previous call, if any. */      FREE (orig_text);      if (matches)	_rl_free_match_list (matches);      match_list_index = match_list_size = 0;      matches = (char **)NULL;      /* Only the completion entry function can change these. */      set_completion_defaults ('%');      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. */      orig_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);      orig_start = rl_point;      rl_point = orig_end;      orig_text = rl_copy_text (orig_start, orig_end);      matches = gen_completion_matches (orig_text, orig_start, orig_end,					our_func, found_quote, quote_char);      /* 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. */      matching_filenames = rl_filename_completion_desired;      if (matches == 0 || postprocess_matches (&matches, matching_filenames) == 0)	{    	  rl_ding ();	  FREE (matches);	  matches = (char **)0;	  FREE (orig_text);	  orig_text = (char *)0;    	  completion_changed_buffer = 0;          return (0);	}      for (match_list_size = 0; matches[match_list_size]; match_list_size++)        ;      /* matches[0] is lcd if match_list_size > 1, but the circular buffer	 code below should take care of it. */    }  /* Now we have the list of matches.  Replace the text between     rl_line_buffer[orig_start] and rl_line_buffer[rl_point] with     matches[match_list_index], and add any necessary closing char. */  if (matches == 0 || match_list_size == 0)     {      rl_ding ();      FREE (matches);      matches = (char **)0;      completion_changed_buffer = 0;      return (0);    }  match_list_index = (match_list_index + count) % match_list_size;  if (match_list_index < 0)    match_list_index += match_list_size;  if (match_list_index == 0 && match_list_size > 1)    {      rl_ding ();      insert_match (orig_text, orig_start, MULT_MATCH, &quote_char);    }  else    {      insert_match (matches[match_list_index], orig_start, SINGLE_MATCH, &quote_char);      append_to_match (matches[match_list_index], delimiter, quote_char,		       strcmp (orig_text, matches[match_list_index]));    }  completion_changed_buffer = 1;  return (0);}

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲精品国产精华液| 看电视剧不卡顿的网站| 欧美日韩中字一区| 婷婷六月综合网| 日韩三级中文字幕| 国产一区二区三区美女| 中文字幕一区av| 欧美日韩国产另类不卡| 麻豆精品一区二区综合av| 久久久国产精品午夜一区ai换脸| 99久久精品费精品国产一区二区| 亚洲一区二区视频在线| 日韩精品资源二区在线| 盗摄精品av一区二区三区| 亚洲综合久久久久| 欧美va亚洲va| 97久久人人超碰| 日本在线观看不卡视频| 久久久www免费人成精品| 色综合久久久久综合99| 日韩专区一卡二卡| 国产午夜亚洲精品午夜鲁丝片| 91在线免费看| 日韩国产欧美视频| 国产亲近乱来精品视频| 欧美性大战xxxxx久久久| 美女精品自拍一二三四| 中文字幕亚洲一区二区av在线| 欧美久久久久久久久| 国产精品一区不卡| 亚洲国产日韩av| 久久久夜色精品亚洲| 在线亚洲欧美专区二区| 精品一区二区三区在线视频| 亚洲日本乱码在线观看| 日韩一级在线观看| 91玉足脚交白嫩脚丫在线播放| 91浏览器入口在线观看| 美国毛片一区二区| 亚洲日本电影在线| 久久综合色之久久综合| 91电影在线观看| 精品一区二区三区的国产在线播放| 亚洲欧洲制服丝袜| www欧美成人18+| 欧美日韩一区久久| 成人黄色小视频| 久久国产免费看| 亚洲一区免费观看| 久久久久久99久久久精品网站| 在线亚洲免费视频| 成人国产精品免费观看| 免费观看91视频大全| 亚洲欧美福利一区二区| 久久免费电影网| 911精品国产一区二区在线| 99久久久久免费精品国产| 老司机午夜精品| 午夜欧美电影在线观看| 国产精品天美传媒| 精品电影一区二区| 欧美日韩亚洲不卡| 色婷婷综合久色| 成人小视频免费观看| 精品影视av免费| 肉色丝袜一区二区| 亚洲精品一二三四区| 国产日韩欧美综合一区| 日韩一区二区三区视频在线| 欧美亚洲日本一区| 99re免费视频精品全部| 国产宾馆实践打屁股91| 久久国产精品99精品国产 | 精品国产一区二区国模嫣然| 欧美性色综合网| 91日韩在线专区| 本田岬高潮一区二区三区| 国产一区中文字幕| 精油按摩中文字幕久久| 青青草国产精品97视觉盛宴| 亚洲国产成人高清精品| 尤物av一区二区| √…a在线天堂一区| 国产精品久久午夜| 中文字幕 久热精品 视频在线| 精品sm在线观看| 欧美tickling挠脚心丨vk| 91精品免费观看| 欧美精品三级日韩久久| 欧美优质美女网站| 色婷婷久久99综合精品jk白丝| 99久久精品国产麻豆演员表| www.久久精品| bt欧美亚洲午夜电影天堂| 国产成人av电影在线| 国产毛片精品国产一区二区三区| 麻豆成人av在线| 久久99国产精品免费网站| 久久99国产精品尤物| 久久99深爱久久99精品| 久久疯狂做爰流白浆xx| 老鸭窝一区二区久久精品| 久久99精品久久久久| 精品亚洲免费视频| 国产一区二区在线看| 国产一区二区精品久久| 国产成人精品综合在线观看| 国产成人在线视频网址| 成人美女视频在线观看| 国产99久久精品| 97精品国产露脸对白| 91麻豆国产福利精品| 在线精品视频一区二区三四 | 91亚洲精华国产精华精华液| 91麻豆免费看| 欧美日韩一区二区三区在线看 | 久久精品男人天堂av| 国产日本欧洲亚洲| 国产精品久久久久久福利一牛影视| 国产精品久久久久7777按摩| 亚洲欧美日韩电影| 亚洲一区二区三区美女| 日韩精品欧美精品| 国模娜娜一区二区三区| 国产成人自拍高清视频在线免费播放 | 亚洲第四色夜色| 日本三级韩国三级欧美三级| 奇米色777欧美一区二区| 韩国三级电影一区二区| 亚洲国产一区二区视频| 热久久免费视频| 国产乱码精品一区二区三区忘忧草 | 久久不见久久见免费视频7| 国产一区二区三区日韩| av在线播放成人| 欧美日韩专区在线| 精品国产乱子伦一区| 国产精品女主播av| 亚洲丶国产丶欧美一区二区三区| 热久久久久久久| 成人国产精品视频| 欧美三片在线视频观看| 欧美大白屁股肥臀xxxxxx| 国产午夜亚洲精品羞羞网站| 一区二区在线观看免费视频播放| 日本三级亚洲精品| 丰满少妇久久久久久久| 欧美三区在线视频| 久久久精品tv| 亚洲国产精品久久久久婷婷884 | 麻豆精品视频在线观看免费 | 粉嫩av亚洲一区二区图片| 日本丰满少妇一区二区三区| 欧美一级片在线看| 中文字幕av一区 二区| 午夜久久久久久电影| 国产精品中文字幕一区二区三区| 91丨porny丨国产入口| 欧美一区二区大片| 国产精品久久福利| 日韩国产精品久久久久久亚洲| 国产电影一区在线| 欧美日韩国产成人在线免费| 国产日韩在线不卡| 日韩中文字幕亚洲一区二区va在线| 国产福利电影一区二区三区| 欧美日韩激情在线| 国产精品无码永久免费888| 亚洲成a人在线观看| 国产91在线|亚洲| 91精品久久久久久久91蜜桃| 国产精品乱码一区二三区小蝌蚪| 日韩精品免费专区| 99精品国产99久久久久久白柏| 日韩一区二区视频在线观看| 综合色中文字幕| 久久99精品久久久久久| 在线观看国产日韩| 国产欧美日韩一区二区三区在线观看 | 天天色 色综合| av在线这里只有精品| 精品国产网站在线观看| 亚洲影院在线观看| 成人黄色免费短视频| 精品理论电影在线| 亚洲一级二级在线| 成人午夜短视频| 亚洲精品在线观| 首页欧美精品中文字幕| 91免费观看视频在线| 久久蜜臀精品av| 七七婷婷婷婷精品国产| 在线精品视频免费播放| 欧美国产精品久久| 久久超碰97中文字幕| 777午夜精品视频在线播放| 亚洲日本中文字幕区| 成人免费福利片| 国产午夜精品理论片a级大结局| 毛片av中文字幕一区二区|