~ubuntu-branches/ubuntu/vivid/openipmi/vivid

« back to all changes in this revision

Viewing changes to libedit/histedit.h

  • Committer: Bazaar Package Importer
  • Author(s): Noèl Köthe
  • Date: 2006-09-15 17:56:24 UTC
  • mfrom: (1.1.2 upstream) (2.1.1 etch)
  • Revision ID: james.westby@ubuntu.com-20060915175624-ljk0mg3xtcm65tvm
Tags: 2.0.7-1
* new upstream release from 2006-06-08
  Thanks to John Wright <john.wright hp.com> for initial work
  (closes: Bug#380149)
* updated Standards Version
* new binaries openipmicmd, openipmish, rmcp_ping

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/*      $NetBSD: histedit.h,v 1.28 2005/07/14 15:00:58 christos Exp $   */
 
2
 
 
3
/*-
 
4
 * Copyright (c) 1992, 1993
 
5
 *      The Regents of the University of California.  All rights reserved.
 
6
 *
 
7
 * This code is derived from software contributed to Berkeley by
 
8
 * Christos Zoulas of Cornell University.
 
9
 *
 
10
 * Redistribution and use in source and binary forms, with or without
 
11
 * modification, are permitted provided that the following conditions
 
12
 * are met:
 
13
 * 1. Redistributions of source code must retain the above copyright
 
14
 *    notice, this list of conditions and the following disclaimer.
 
15
 * 2. Redistributions in binary form must reproduce the above copyright
 
16
 *    notice, this list of conditions and the following disclaimer in the
 
17
 *    documentation and/or other materials provided with the distribution.
 
18
 * 3. Neither the name of the University nor the names of its contributors
 
19
 *    may be used to endorse or promote products derived from this software
 
20
 *    without specific prior written permission.
 
21
 *
 
22
 * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
 
23
 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 
24
 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
 
25
 * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
 
26
 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
 
27
 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
 
28
 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
 
29
 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
 
30
 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
 
31
 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 
32
 * SUCH DAMAGE.
 
33
 *
 
34
 *      @(#)histedit.h  8.2 (Berkeley) 1/3/94
 
35
 */
 
36
 
 
37
/*
 
38
 * histedit.h: Line editor and history interface.
 
39
 */
 
40
#ifndef _HISTEDIT_H_
 
41
#define _HISTEDIT_H_
 
42
 
 
43
#define LIBEDIT_MAJOR 2
 
44
#define LIBEDIT_MINOR 9
 
45
 
 
46
#include <sys/types.h>
 
47
#include <stdio.h>
 
48
 
 
49
#ifdef __cplusplus
 
50
extern "C" {
 
51
#endif
 
52
 
 
53
/*
 
54
 * ==== Editing ====
 
55
 */
 
56
 
 
57
typedef struct editline EditLine;
 
58
 
 
59
/*
 
60
 * For user-defined function interface
 
61
 */
 
62
typedef struct lineinfo {
 
63
        const char      *buffer;
 
64
        const char      *cursor;
 
65
        const char      *lastchar;
 
66
} LineInfo;
 
67
 
 
68
/*
 
69
 * EditLine editor function return codes.
 
70
 * For user-defined function interface
 
71
 */
 
72
#define CC_NORM         0
 
73
#define CC_NEWLINE      1
 
74
#define CC_EOF          2
 
75
#define CC_ARGHACK      3
 
76
#define CC_REFRESH      4
 
77
#define CC_CURSOR       5
 
78
#define CC_ERROR        6
 
79
#define CC_FATAL        7
 
80
#define CC_REDISPLAY    8
 
81
#define CC_REFRESH_BEEP 9
 
82
 
 
83
/*
 
84
 * Initialization, cleanup, and resetting
 
85
 */
 
86
EditLine        *el_init(const char *, FILE *, FILE *, FILE *);
 
87
void             el_end(EditLine *);
 
88
void             el_reset(EditLine *);
 
89
 
 
90
/*
 
91
 * Get a line, a character or push a string back in the input queue
 
92
 */
 
93
const char      *el_gets(EditLine *, int *);
 
94
int              el_getc(EditLine *, char *);
 
95
void             el_push(EditLine *, char *);
 
96
 
 
97
/*
 
98
 * Beep!
 
99
 */
 
100
void             el_beep(EditLine *);
 
101
 
 
102
/*
 
103
 * High level function internals control
 
104
 * Parses argc, argv array and executes builtin editline commands
 
105
 */
 
106
int              el_parse(EditLine *, int, const char **);
 
107
 
 
108
/*
 
109
 * Low level editline access functions
 
110
 */
 
111
int              el_set(EditLine *, int, ...);
 
112
int              el_get(EditLine *, int, void *);
 
113
unsigned char   _el_fn_complete(EditLine *, int);
 
114
 
 
115
/*
 
116
 * el_set/el_get parameters
 
117
 */
 
118
#define EL_PROMPT       0       /* , el_pfunc_t);               */
 
119
#define EL_TERMINAL     1       /* , const char *);             */
 
120
#define EL_EDITOR       2       /* , const char *);             */
 
121
#define EL_SIGNAL       3       /* , int);                      */
 
122
#define EL_BIND         4       /* , const char *, ..., NULL);  */
 
123
#define EL_TELLTC       5       /* , const char *, ..., NULL);  */
 
124
#define EL_SETTC        6       /* , const char *, ..., NULL);  */
 
125
#define EL_ECHOTC       7       /* , const char *, ..., NULL);  */
 
126
#define EL_SETTY        8       /* , const char *, ..., NULL);  */
 
127
#define EL_ADDFN        9       /* , const char *, const char * */
 
128
                                /* , el_func_t);                */
 
129
#define EL_HIST         10      /* , hist_fun_t, const char *); */
 
130
#define EL_EDITMODE     11      /* , int);                      */
 
131
#define EL_RPROMPT      12      /* , el_pfunc_t);               */
 
132
#define EL_GETCFN       13      /* , el_rfunc_t);               */
 
133
#define EL_CLIENTDATA   14      /* , void *);                   */
 
134
#define EL_UNBUFFERED   15      /* , int);                      */
 
135
#define EL_PREP_TERM    16      /* , int);                      */
 
136
 
 
137
#define EL_BUILTIN_GETCFN       (NULL)
 
138
 
 
139
/*
 
140
 * Source named file or $PWD/.editrc or $HOME/.editrc
 
141
 */
 
142
int             el_source(EditLine *, const char *);
 
143
 
 
144
/*
 
145
 * Must be called when the terminal changes size; If EL_SIGNAL
 
146
 * is set this is done automatically otherwise it is the responsibility
 
147
 * of the application
 
148
 */
 
149
void             el_resize(EditLine *);
 
150
 
 
151
/*
 
152
 * User-defined function interface.
 
153
 */
 
154
const LineInfo  *el_line(EditLine *);
 
155
int              el_insertstr(EditLine *, const char *);
 
156
void             el_deletestr(EditLine *, int);
 
157
 
 
158
 
 
159
/*
 
160
 * ==== History ====
 
161
 */
 
162
 
 
163
typedef struct history History;
 
164
 
 
165
typedef struct HistEvent {
 
166
        int              num;
 
167
        const char      *str;
 
168
} HistEvent;
 
169
 
 
170
/*
 
171
 * History access functions.
 
172
 */
 
173
History *       history_init(void);
 
174
void            history_end(History *);
 
175
 
 
176
int             history(History *, HistEvent *, int, ...);
 
177
 
 
178
#define H_FUNC           0      /* , UTSL               */
 
179
#define H_SETSIZE        1      /* , const int);        */
 
180
#define H_GETSIZE        2      /* , void);             */
 
181
#define H_FIRST          3      /* , void);             */
 
182
#define H_LAST           4      /* , void);             */
 
183
#define H_PREV           5      /* , void);             */
 
184
#define H_NEXT           6      /* , void);             */
 
185
#define H_CURR           8      /* , const int);        */
 
186
#define H_SET            7      /* , int);              */
 
187
#define H_ADD            9      /* , const char *);     */
 
188
#define H_ENTER         10      /* , const char *);     */
 
189
#define H_APPEND        11      /* , const char *);     */
 
190
#define H_END           12      /* , void);             */
 
191
#define H_NEXT_STR      13      /* , const char *);     */
 
192
#define H_PREV_STR      14      /* , const char *);     */
 
193
#define H_NEXT_EVENT    15      /* , const int);        */
 
194
#define H_PREV_EVENT    16      /* , const int);        */
 
195
#define H_LOAD          17      /* , const char *);     */
 
196
#define H_SAVE          18      /* , const char *);     */
 
197
#define H_CLEAR         19      /* , void);             */
 
198
#define H_SETUNIQUE     20      /* , int);              */
 
199
#define H_GETUNIQUE     21      /* , void);             */
 
200
#define H_DEL           22      /* , int);              */
 
201
 
 
202
 
 
203
/*
 
204
 * ==== Tokenization ====
 
205
 */
 
206
 
 
207
typedef struct tokenizer Tokenizer;
 
208
 
 
209
/*
 
210
 * String tokenization functions, using simplified sh(1) quoting rules
 
211
 */
 
212
Tokenizer       *tok_init(const char *);
 
213
void             tok_end(Tokenizer *);
 
214
void             tok_reset(Tokenizer *);
 
215
int              tok_line(Tokenizer *, const LineInfo *,
 
216
                    int *, const char ***, int *, int *);
 
217
int              tok_str(Tokenizer *, const char *,
 
218
                    int *, const char ***);
 
219
 
 
220
#ifdef __cplusplus
 
221
}
 
222
#endif
 
223
 
 
224
#endif /* _HISTEDIT_H_ */