~ubuntu-branches/ubuntu/saucy/ecasound2.2/saucy

« back to all changes in this revision

Viewing changes to readline-4.0/keymaps.c

  • Committer: Bazaar Package Importer
  • Author(s): Junichi Uekawa
  • Date: 2008-03-23 21:42:49 UTC
  • mfrom: (3.1.6 hardy)
  • Revision ID: james.westby@ubuntu.com-20080323214249-evlfv3y1o8q747la
Tags: 2.4.6.1-2
* Bug fix: "FTBFS with GCC 4.3: missing #includes", thanks to Martin
  Michlmayr (Closes: #454890).
- 13_gcc4: updated

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
/* keymaps.c -- Functions and keymaps for the GNU Readline library. */
2
 
 
3
 
/* Copyright (C) 1988,1989 Free Software Foundation, Inc.
4
 
 
5
 
   This file is part of GNU Readline, a library for reading lines
6
 
   of text with interactive input and history editing.
7
 
 
8
 
   Readline is free software; you can redistribute it and/or modify it
9
 
   under the terms of the GNU General Public License as published by the
10
 
   Free Software Foundation; either version 1, or (at your option) any
11
 
   later version.
12
 
 
13
 
   Readline is distributed in the hope that it will be useful, but
14
 
   WITHOUT ANY WARRANTY; without even the implied warranty of
15
 
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
16
 
   General Public License for more details.
17
 
 
18
 
   You should have received a copy of the GNU General Public License
19
 
   along with Readline; see the file COPYING.  If not, write to the Free
20
 
   Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
21
 
#define READLINE_LIBRARY
22
 
 
23
 
#if defined (HAVE_CONFIG_H)
24
 
#  include <config.h>
25
 
#endif
26
 
 
27
 
#if defined (HAVE_STDLIB_H)
28
 
#  include <stdlib.h>
29
 
#else
30
 
#  include "ansi_stdlib.h"
31
 
#endif /* HAVE_STDLIB_H */
32
 
 
33
 
#include "rlconf.h"
34
 
#include "keymaps.h"
35
 
#include "emacs_keymap.c"
36
 
 
37
 
#if defined (VI_MODE)
38
 
#include "vi_keymap.c"
39
 
#endif
40
 
 
41
 
extern int rl_do_lowercase_version ();
42
 
extern int rl_rubout (), rl_insert ();
43
 
 
44
 
extern char *xmalloc (), *xrealloc ();
45
 
 
46
 
/* **************************************************************** */
47
 
/*                                                                  */
48
 
/*                    Functions for manipulating Keymaps.           */
49
 
/*                                                                  */
50
 
/* **************************************************************** */
51
 
 
52
 
 
53
 
/* Return a new, empty keymap.
54
 
   Free it with free() when you are done. */
55
 
Keymap
56
 
rl_make_bare_keymap ()
57
 
{
58
 
  register int i;
59
 
  Keymap keymap = (Keymap)xmalloc (KEYMAP_SIZE * sizeof (KEYMAP_ENTRY));
60
 
 
61
 
  for (i = 0; i < KEYMAP_SIZE; i++)
62
 
    {
63
 
      keymap[i].type = ISFUNC;
64
 
      keymap[i].function = (Function *)NULL;
65
 
    }
66
 
 
67
 
  for (i = 'A'; i < ('Z' + 1); i++)
68
 
    {
69
 
      keymap[i].type = ISFUNC;
70
 
      keymap[i].function = rl_do_lowercase_version;
71
 
    }
72
 
 
73
 
  return (keymap);
74
 
}
75
 
 
76
 
/* Return a new keymap which is a copy of MAP. */
77
 
Keymap
78
 
rl_copy_keymap (map)
79
 
     Keymap map;
80
 
{
81
 
  register int i;
82
 
  Keymap temp = rl_make_bare_keymap ();
83
 
 
84
 
  for (i = 0; i < KEYMAP_SIZE; i++)
85
 
    {
86
 
      temp[i].type = map[i].type;
87
 
      temp[i].function = map[i].function;
88
 
    }
89
 
  return (temp);
90
 
}
91
 
 
92
 
/* Return a new keymap with the printing characters bound to rl_insert,
93
 
   the uppercase Meta characters bound to run their lowercase equivalents,
94
 
   and the Meta digits bound to produce numeric arguments. */
95
 
Keymap
96
 
rl_make_keymap ()
97
 
{
98
 
  register int i;
99
 
  Keymap newmap;
100
 
 
101
 
  newmap = rl_make_bare_keymap ();
102
 
 
103
 
  /* All ASCII printing characters are self-inserting. */
104
 
  for (i = ' '; i < 127; i++)
105
 
    newmap[i].function = rl_insert;
106
 
 
107
 
  newmap[TAB].function = rl_insert;
108
 
  newmap[RUBOUT].function = rl_rubout;  /* RUBOUT == 127 */
109
 
  newmap[CTRL('H')].function = rl_rubout;
110
 
 
111
 
#if KEYMAP_SIZE > 128
112
 
  /* Printing characters in some 8-bit character sets. */
113
 
  for (i = 128; i < 160; i++)
114
 
    newmap[i].function = rl_insert;
115
 
 
116
 
  /* ISO Latin-1 printing characters should self-insert. */
117
 
  for (i = 160; i < 256; i++)
118
 
    newmap[i].function = rl_insert;
119
 
#endif /* KEYMAP_SIZE > 128 */
120
 
 
121
 
  return (newmap);
122
 
}
123
 
 
124
 
/* Free the storage associated with MAP. */
125
 
void
126
 
rl_discard_keymap (map)
127
 
     Keymap map;
128
 
{
129
 
  int i;
130
 
 
131
 
  if (!map)
132
 
    return;
133
 
 
134
 
  for (i = 0; i < KEYMAP_SIZE; i++)
135
 
    {
136
 
      switch (map[i].type)
137
 
        {
138
 
        case ISFUNC:
139
 
          break;
140
 
 
141
 
        case ISKMAP:
142
 
          rl_discard_keymap ((Keymap)map[i].function);
143
 
          break;
144
 
 
145
 
        case ISMACR:
146
 
          free ((char *)map[i].function);
147
 
          break;
148
 
        }
149
 
    }
150
 
}