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

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

?? bind.c

?? Linux下的MUD客戶端程序
?? C
?? 第 1 頁 / 共 3 頁
字號:
/* bind.c -- key binding and startup file support for the readline library. *//* 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 1, 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,   675 Mass Ave, Cambridge, MA 02139, USA. */#define READLINE_LIBRARY#include <stdio.h>#include <sys/types.h>#include <fcntl.h>#if !defined (NO_SYS_FILE)#  include <sys/file.h>#endif /* !NO_SYS_FILE */#include <signal.h>#if defined (HAVE_UNISTD_H)#  include <unistd.h>#endif /* HAVE_UNISTD_H */#if defined (HAVE_STDLIB_H)#  include <stdlib.h>#else#  include "ansi_stdlib.h"#endif /* HAVE_STDLIB_H */#include <errno.h>/* Not all systems declare ERRNO in errno.h... and some systems #define it! */#if !defined (errno)extern int errno;#endif /* !errno */#include "posixstat.h"/* System-specific feature definitions and include files. */#include "rldefs.h"/* Some standard library routines. */#include "readline.h"#include "history.h"#if !defined (strchr) && !defined (__STDC__)extern char *strchr (), *strrchr ();#endif /* !strchr && !__STDC__ */extern int _rl_horizontal_scroll_mode;extern int _rl_mark_modified_lines;extern int _rl_bell_preference;extern int _rl_meta_flag;extern int _rl_convert_meta_chars_to_ascii;extern int _rl_output_meta_chars;extern int _rl_complete_show_all;#if defined (PAREN_MATCHING)extern int rl_blink_matching_paren;#endif /* PAREN_MATCHING */#if defined (VISIBLE_STATS)extern int rl_visible_stats;#endif /* VISIBLE_STATS */extern int rl_complete_with_tilde_expansion;extern int rl_completion_query_items;#if defined (VI_MODE)extern char *rl_vi_comment_begin;#endifextern int rl_explicit_arg;extern int rl_editing_mode;extern unsigned short _rl_parsing_conditionalized_out;extern Keymap _rl_keymap;extern char *possible_control_prefixes[], *possible_meta_prefixes[];extern char **rl_funmap_names ();/* Forward declarations */void rl_set_keymap_from_edit_mode ();static int glean_key_from_name ();#if defined (HAVE_STRCASECMP)#define stricmp strcasecmp#define strnicmp strncasecmp#elsestatic int stricmp (), strnicmp ();#endif#if defined (STATIC_MALLOC)static char *xmalloc (), *xrealloc ();#elseextern char *xmalloc (), *xrealloc ();#endif /* STATIC_MALLOC *//* **************************************************************** *//*								    *//*			Binding keys				    *//*								    *//* **************************************************************** *//* rl_add_defun (char *name, Function *function, int key)   Add NAME to the list of named functions.  Make FUNCTION be the function   that gets called.  If KEY is not -1, then bind it. */rl_add_defun (name, function, key)     char *name;     Function *function;     int key;{  if (key != -1)    rl_bind_key (key, function);  rl_add_funmap_entry (name, function);  return 0;}/* Bind KEY to FUNCTION.  Returns non-zero if KEY is out of range. */intrl_bind_key (key, function)     int key;     Function *function;{  if (key < 0)    return (key);  if (META_CHAR (key) && _rl_convert_meta_chars_to_ascii)    {      if (_rl_keymap[ESC].type == ISKMAP)	{	  Keymap escmap;	  escmap = FUNCTION_TO_KEYMAP (_rl_keymap, ESC);	  key = UNMETA (key);	  escmap[key].type = ISFUNC;	  escmap[key].function = function;	  return (0);	}      return (key);    }  _rl_keymap[key].type = ISFUNC;  _rl_keymap[key].function = function;  return (0);}/* Bind KEY to FUNCTION in MAP.  Returns non-zero in case of invalid   KEY. */intrl_bind_key_in_map (key, function, map)     int key;     Function *function;     Keymap map;{  int result;  Keymap oldmap = _rl_keymap;  _rl_keymap = map;  result = rl_bind_key (key, function);  _rl_keymap = oldmap;  return (result);}/* Make KEY do nothing in the currently selected keymap.   Returns non-zero in case of error. */intrl_unbind_key (key)     int key;{  return (rl_bind_key (key, (Function *)NULL));}/* Make KEY do nothing in MAP.   Returns non-zero in case of error. */intrl_unbind_key_in_map (key, map)     int key;     Keymap map;{  return (rl_bind_key_in_map (key, (Function *)NULL, map));}/* Bind the key sequence represented by the string KEYSEQ to   FUNCTION.  This makes new keymaps as necessary.  The initial   place to do bindings is in MAP. */rl_set_key (keyseq, function, map)     char *keyseq;     Function *function;     Keymap map;{  return (rl_generic_bind (ISFUNC, keyseq, function, map));}/* Bind the key sequence represented by the string KEYSEQ to   the string of characters MACRO.  This makes new keymaps as   necessary.  The initial place to do bindings is in MAP. */rl_macro_bind (keyseq, macro, map)     char *keyseq, *macro;     Keymap map;{  char *macro_keys;  int macro_keys_len;  macro_keys = (char *)xmalloc ((2 * strlen (macro)) + 1);  if (rl_translate_keyseq (macro, macro_keys, &macro_keys_len))    {      free (macro_keys);      return -1;    }  rl_generic_bind (ISMACR, keyseq, macro_keys, map);  return 0;}/* Bind the key sequence represented by the string KEYSEQ to   the arbitrary pointer DATA.  TYPE says what kind of data is   pointed to by DATA, right now this can be a function (ISFUNC),   a macro (ISMACR), or a keymap (ISKMAP).  This makes new keymaps   as necessary.  The initial place to do bindings is in MAP. */rl_generic_bind (type, keyseq, data, map)     int type;     char *keyseq, *data;     Keymap map;{  char *keys;  int keys_len;  register int i;  /* If no keys to bind to, exit right away. */  if (!keyseq || !*keyseq)    {      if (type == ISMACR)	free (data);      return -1;    }  keys = xmalloc (1 + (2 * strlen (keyseq)));  /* Translate the ASCII representation of KEYSEQ into an array of     characters.  Stuff the characters into KEYS, and the length of     KEYS into KEYS_LEN. */  if (rl_translate_keyseq (keyseq, keys, &keys_len))    {      free (keys);      return -1;    }  /* Bind keys, making new keymaps as necessary. */  for (i = 0; i < keys_len; i++)    {      int ic = (int) ((unsigned char)keys[i]);      if (_rl_convert_meta_chars_to_ascii && META_CHAR (ic))	{	  ic = UNMETA (ic);	  if (map[ESC].type == ISKMAP)	    map = FUNCTION_TO_KEYMAP (map, ESC);	}      if ((i + 1) < keys_len)	{	  if (map[ic].type != ISKMAP)	    {	      if (map[ic].type == ISMACR)		free ((char *)map[ic].function);	      map[ic].type = ISKMAP;	      map[ic].function = KEYMAP_TO_FUNCTION (rl_make_bare_keymap());	    }	  map = FUNCTION_TO_KEYMAP (map, ic);	}      else	{	  if (map[ic].type == ISMACR)	    free ((char *)map[ic].function);	  map[ic].function = KEYMAP_TO_FUNCTION (data);	  map[ic].type = type;	}    }  free (keys);  return 0;}/* Translate the ASCII representation of SEQ, stuffing the values into ARRAY,   an array of characters.  LEN gets the final length of ARRAY.  Return   non-zero if there was an error parsing SEQ. */rl_translate_keyseq (seq, array, len)     char *seq, *array;     int *len;{  register int i, c, l = 0;  for (i = 0; c = seq[i]; i++)    {      if (c == '\\')	{	  c = seq[++i];	  if (!c)	    break;	  if (((c == 'C' || c == 'M') &&  seq[i + 1] == '-') ||	      (c == 'e'))	    {	      /* Handle special case of backwards define. */	      if (strncmp (&seq[i], "C-\\M-", 5) == 0)		{		  array[l++] = ESC;		  i += 5;		  array[l++] = CTRL (to_upper (seq[i]));		  if (!seq[i])		    i--;		  continue;		}	      switch (c)		{		case 'M':		  i++;		  array[l++] = ESC;		  break;		case 'C':		  i += 2;		  /* Special hack for C-?... */		  if (seq[i] == '?')		    array[l++] = RUBOUT;		  else		    array[l++] = CTRL (to_upper (seq[i]));		  break;		case 'e':		  array[l++] = ESC;		}	      continue;	    }	}      array[l++] = c;    }  *len = l;  array[l] = '\0';  return (0);}/* Return a pointer to the function that STRING represents.   If STRING doesn't have a matching function, then a NULL pointer   is returned. */Function *rl_named_function (string)     char *string;{  register int i;  rl_initialize_funmap ();  for (i = 0; funmap[i]; i++)    if (stricmp (funmap[i]->name, string) == 0)      return (funmap[i]->function);  return ((Function *)NULL);}/* Return the function (or macro) definition which would be invoked via   KEYSEQ if executed in MAP.  If MAP is NULL, then the current keymap is   used.  TYPE, if non-NULL, is a pointer to an int which will receive the   type of the object pointed to.  One of ISFUNC (function), ISKMAP (keymap),   or ISMACR (macro). */Function *rl_function_of_keyseq (keyseq, map, type)     char *keyseq;     Keymap map;     int *type;{  register int i;  if (!map)    map = _rl_keymap;  for (i = 0; keyseq && keyseq[i]; i++)    {      int ic = keyseq[i];      if (META_CHAR (ic) && _rl_convert_meta_chars_to_ascii)	{	  if (map[ESC].type != ISKMAP)	    {	      if (type)		*type = map[ESC].type;	      return (map[ESC].function);	    }	  else	    {	      map = FUNCTION_TO_KEYMAP (map, ESC);	      ic = UNMETA (ic);	    }	}      if (map[ic].type == ISKMAP)	{	  /* If this is the last key in the key sequence, return the	     map. */	  if (!keyseq[i + 1])	    {	      if (type)		*type = ISKMAP;	      return (map[ic].function);	    }	  else	    map = FUNCTION_TO_KEYMAP (map, ic);	}      else	{	  if (type)	    *type = map[ic].type;	  return (map[ic].function);	}    }  return ((Function *) NULL);}/* The last key bindings file read. */static char *last_readline_init_file = (char *)NULL;/* Re-read the current keybindings file. */rl_re_read_init_file (count, ignore)     int count, ignore;{  int r;  r = rl_read_init_file ((char *)NULL);  rl_set_keymap_from_edit_mode ();  return r;}/* Do key bindings from a file.  If FILENAME is NULL it defaults   to the first non-null filename from this list:     1. the filename used for the previous call     2. the value of the shell variable `INPUTRC'     3. ~/.inputrc   If the file existed and could be opened and read, 0 is returned,   otherwise errno is returned. */intrl_read_init_file (filename)     char *filename;{  register int i;  char *buffer, *openname, *line, *end;  struct stat finfo;  int file;  /* Default the filename. */  if (!filename)    {      filename = last_readline_init_file;      if (!filename)        filename = getenv ("INPUTRC");      if (!filename)	filename = DEFAULT_INPUTRC;    }  if (!*filename)    filename = DEFAULT_INPUTRC;  openname = tilde_expand (filename);  if ((stat (openname, &finfo) < 0) ||      (file = open (openname, O_RDONLY, 0666)) < 0)    {      free (openname);      return (errno);    }  else    free (openname);  if (filename != last_readline_init_file)    {      if (last_readline_init_file)	free (last_readline_init_file);      last_readline_init_file = savestring (filename);    }  /* Read the file into BUFFER. */

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲一区在线观看网站| 九色|91porny| 国产中文一区二区三区| 不卡的av电影在线观看| 在线电影一区二区三区| 国产精品色一区二区三区| 午夜电影网一区| 色综合天天综合网国产成人综合天| 欧美精品视频www在线观看| 国产精品久久综合| 国产一区在线观看麻豆| 91精品国产综合久久久蜜臀粉嫩| 中文一区二区完整视频在线观看| 国产精品系列在线观看| 91免费视频网| 中文天堂在线一区| 激情综合色播五月| 欧美精品 日韩| 亚洲影视在线观看| 91美女在线看| 亚洲视频免费在线| 成人精品免费网站| 国产日产欧美一区| 激情久久久久久久久久久久久久久久| 欧美日韩一级视频| 亚洲va韩国va欧美va精品| 色综合久久88色综合天天免费| 国产人伦精品一区二区| 韩日欧美一区二区三区| 欧美成人一区二区| 精品一区二区三区香蕉蜜桃| 91精品国产综合久久福利软件| 亚洲成人一区在线| 欧美日韩免费不卡视频一区二区三区| 亚洲精品综合在线| 在线视频一区二区三区| 亚洲国产一区在线观看| 欧美亚洲国产一区二区三区va| 有坂深雪av一区二区精品| 色婷婷精品大在线视频| 亚洲一区二区三区不卡国产欧美| 在线视频你懂得一区二区三区| 亚洲六月丁香色婷婷综合久久 | 成人在线综合网站| 国产亚洲成av人在线观看导航| 国产在线播放一区二区三区| 久久综合久久鬼色中文字| 国产乱妇无码大片在线观看| 日本一区二区三区在线观看| 99久久精品免费看国产免费软件| 亚洲日本丝袜连裤袜办公室| 在线欧美日韩国产| 日本午夜精品视频在线观看 | 91伊人久久大香线蕉| 亚洲日本免费电影| 欧美日本韩国一区| 免费不卡在线视频| 亚洲国产岛国毛片在线| 99久久精品国产导航| 亚洲国产成人91porn| 床上的激情91.| 亚洲自拍偷拍图区| 欧美不卡视频一区| 99久久国产免费看| 三级精品在线观看| 久久精品一区四区| 日本道免费精品一区二区三区| 日韩av在线免费观看不卡| 欧美tk丨vk视频| 91网站在线观看视频| 日韩国产精品久久| 国产精品久久夜| 欧美一二三四区在线| k8久久久一区二区三区| 天天综合天天综合色| 久久久久国产精品人| 在线观看免费亚洲| 国产91精品免费| 视频一区在线视频| 亚洲三级在线播放| 欧美mv日韩mv| 欧美亚洲一区二区在线| 国产精品影视在线观看| 婷婷开心久久网| 亚洲国产精品99久久久久久久久| 欧美浪妇xxxx高跟鞋交| 国产宾馆实践打屁股91| 日韩二区三区四区| 夜夜亚洲天天久久| 中文字幕日本不卡| 久久无码av三级| 欧美二区三区的天堂| av亚洲精华国产精华精| 黄页视频在线91| 日韩不卡一区二区三区| 有码一区二区三区| 中文字幕一区二区三区四区 | 在线观看日韩电影| 不卡一区中文字幕| 国产成人av网站| 麻豆精品在线看| 日日摸夜夜添夜夜添国产精品| 亚洲欧美激情一区二区| 国产欧美日韩激情| 久久精品亚洲一区二区三区浴池| 欧美一区二区三区公司| 欧美日韩国产高清一区二区 | 国产精品久久久久久亚洲伦| 精品国产91乱码一区二区三区| 717成人午夜免费福利电影| 在线精品视频免费播放| 色综合婷婷久久| 99久久久久久99| 99re在线精品| 色噜噜久久综合| 色8久久人人97超碰香蕉987| 99久久久精品| 色播五月激情综合网| 色婷婷久久久亚洲一区二区三区 | 国产精品一区二区在线观看网站 | 3d动漫精品啪啪| 欧美一区二区三区四区在线观看| 欧美老肥妇做.爰bbww| 91精品国产欧美一区二区| 91精品国产综合久久久久久久| 91精品国产综合久久久久久| 欧美高清精品3d| 日韩一级片网站| 久久亚洲捆绑美女| 欧美激情综合在线| 亚洲人精品一区| 午夜激情久久久| 麻豆精品一区二区综合av| 韩国欧美国产一区| 9人人澡人人爽人人精品| 91丨porny丨户外露出| 精品视频色一区| 精品99一区二区| 国产精品国产三级国产aⅴ原创 | 日韩黄色片在线观看| 美洲天堂一区二卡三卡四卡视频| 久久精品二区亚洲w码| 国产综合色产在线精品| 91视频在线观看免费| 欧美日韩一级视频| 国产午夜精品久久久久久久 | 欧美电视剧免费观看| 亚洲国产高清在线观看视频| 亚洲美女一区二区三区| 免费观看在线色综合| 国产乱人伦精品一区二区在线观看| 成人福利视频网站| 777a∨成人精品桃花网| 欧美极品美女视频| 丝袜诱惑制服诱惑色一区在线观看 | 粉嫩蜜臀av国产精品网站| 一本色道久久综合狠狠躁的推荐 | 精品理论电影在线| 亚洲欧美日韩系列| 久草在线在线精品观看| 在线影视一区二区三区| 日韩午夜激情视频| 一区二区在线免费| 国精品**一区二区三区在线蜜桃 | 高清视频一区二区| 欧美精品一卡二卡| 国产精品天美传媒| 六月丁香婷婷色狠狠久久| 在线观看一区二区精品视频| 久久综合一区二区| 日韩成人av影视| 色哟哟国产精品免费观看| 亚洲精品在线三区| 午夜在线电影亚洲一区| 91丨九色丨尤物| 久久久久成人黄色影片| 日本不卡视频在线| 欧美性色黄大片手机版| 国产精品国产自产拍高清av王其| 青青青伊人色综合久久| 欧美亚男人的天堂| 亚洲色欲色欲www在线观看| 国产精品99久久久久久有的能看 | 亚洲精品一卡二卡| 丁香激情综合五月| 久久新电视剧免费观看| 强制捆绑调教一区二区| 欧美剧在线免费观看网站| 一区二区三区中文在线| 成人一级片网址| 国产免费久久精品| 国产盗摄女厕一区二区三区| 日韩视频一区在线观看| 视频一区二区不卡| 在线播放一区二区三区| 亚洲国产一区二区三区| 欧美视频一区二区在线观看| 亚洲精品视频一区二区| 91精品91久久久中77777| 亚洲精品高清在线|