speech-tools/siod/editline.h
2015-09-19 10:52:26 +02:00

165 lines
6.1 KiB
C

/****************************************************************************/
/* */
/* Copyright 1992 Simmule Turner and Rich Salz. All rights reserved. */
/* */
/* This software is not subject to any license of the American Telephone */
/* and Telegraph Company or of the Regents of the University of California. */
/* */
/* Permission is granted to anyone to use this software for any purpose on */
/* any computer system, and to alter it and redistribute it freely, subject */
/* to the following restrictions: */
/* 1. The authors are not responsible for the consequences of use of this */
/* software, no matter how awful, even if they arise from flaws in it. */
/* 2. The origin of this software must not be misrepresented, either by */
/* explicit claim or by omission. Since few users ever read sources, */
/* credits must appear in the documentation. */
/* 3. Altered versions must be plainly marked as such, and must not be */
/* misrepresented as being the original software. Since few users */
/* ever read sources, credits must appear in the documentation. */
/* 4. This notice may not be removed or altered. */
/* */
/****************************************************************************/
/* */
/* This is a line-editing library, it can be linked into almost any */
/* program to provide command-line editing and recall. */
/* */
/* Posted to comp.sources.misc Sun, 2 Aug 1992 03:05:27 GMT */
/* by rsalz@osf.org (Rich $alz) */
/* */
/****************************************************************************/
/* */
/* The version contained here has some modifications by awb@cstr.ed.ac.uk */
/* (Alan W Black) in order to integrate it with the Edinburgh Speech Tools */
/* library and Scheme-in-one-defun in particular. All modifications to */
/* to this work are continued with the same copyright above. That is */
/* this version of editline does not have the the "no commercial use" */
/* restriction that some of the rest of the EST library may have */
/* awb Dec 30 1998 */
/* */
/****************************************************************************/
/* $Revision: 1.2 $
**
** Internal header file for editline library.
**
*/
/* Explicit configuration for Unix environment which will effectively be */
/* set up by the Speech Tools configuration by this point -- awb */
#define ANSI_ARROWS
#define HAVE_TCGETATTR
#define HAVE_STDLIB
#define HIDE
#define USE_DIRENT
#define SYS_UNIX
/* will all work without this except long lines */
#define USE_TERMCAP
/*
** Command status codes (moved from editline.h).
*/
typedef enum _STATUS {
CSdone, CSeof, CSmove, CSdispatch, CSstay
} STATUS;
typedef STATUS (*Keymap_Function)();
#include <stdio.h>
#if defined(HAVE_STDLIB)
#include <stdlib.h>
#include <string.h>
#endif /* defined(HAVE_STDLIB) */
#if defined(SYS_UNIX)
#include "el_unix.h"
#endif /* defined(SYS_UNIX) */
#if defined(SYS_OS9)
#include "os9.h"
#endif /* defined(SYS_OS9) */
#if !defined(ESIZE_T)
#define ESIZE_T unsigned int
#endif /* !defined(ESIZE_T) */
typedef unsigned char ECHAR;
#if defined(HIDE)
#define STATIC static
#else
#define STATIC /* NULL */
#endif /* !defined(HIDE) */
#if !defined(CONST)
#if defined(__STDC__)
#define CONST const
#else
#define CONST
#endif /* defined(__STDC__) */
#endif /* !defined(CONST) */
#define MEM_INC 64
#define SCREEN_INC 256
#if 0
#define DISPOSE(p) free((char *)(p))
#define NEW(T, c) \
((T *)malloc((unsigned int)(sizeof (T) * (c))))
#define RENEW(p, T, c) \
(p = (T *)realloc((char *)(p), (unsigned int)(sizeof (T) * (c))))
#define STRDUP(X) strdup(X)
#endif
#define COPYFROMTO(new, p, len) \
(void)memcpy((char *)(new), (char *)(p), (int)(len))
/* CSTR EST replacements -- awb */
#include "EST_walloc.h"
#define DISPOSE(p) wfree(p)
#define NEW(T,c) walloc(T,c)
#define RENEW(p,T,c) (p = wrealloc(p,T,c))
#define STRDUP(X) wstrdup(X)
/*
** Variables and routines internal to this package.
*/
extern int rl_eof;
extern int rl_erase;
extern int rl_intr;
extern int rl_kill;
extern int rl_quit;
extern int el_user_intr; /* with SIGINT if non-zero */
extern int el_no_echo; /* e.g under emacs, don't echo except prompt */
extern char *rl_complete(char *pathname, int *unique);
extern int rl_list_possib(char *pathname,char ***avp);
extern char *editline_history_file;
void rl_ttyset(int Reset);
void rl_add_slash(char *path,char *p);
int el_is_directory(char *path);
void do_user_intr();
#if !defined(HAVE_STDLIB)
extern char *getenv();
extern char *malloc();
extern char *realloc();
extern char *memcpy();
extern char *strcat();
extern char *strchr();
extern char *strrchr();
extern char *strcpy();
extern char *strdup();
extern int strcmp();
extern int strlen();
extern int strncmp();
#endif /* !defined(HAVE_STDLIB) */
/* Added prototypes for available functions in editline -- awb */
char * readline(CONST char* prompt);
void add_history(char *p);
void read_history(const char *history_file);
void write_history(const char *history_file);
typedef char **EL_USER_COMPLETION_FUNCTION_TYPE(char *text,int start, int end);
extern EL_USER_COMPLETION_FUNCTION_TYPE*el_user_completion_function;
char *el_current_sym();
void el_redisplay();
void el_bind_key_in_metamap(char c, Keymap_Function func);