tail head cat sleep
QR code linking to this page

Man page  — EDITLINE

명칭

editline, el_init, el_end, el_reset, el_gets, el_getc, el_push, el_parse, el_set, el_source, el_resize, el_line, el_insertstr, el_deletestr, el_data_set, el_data_get, history_init, history_end, history – 라인 에디터와 역사 함수

내용

프로그램 라이브러리

Command Line Editor Library (libedit, -ledit)

서식


#include <histedit.h>
EditLine *
el_init(const char *prog, FILE *fin, FILE *fout);

void
el_end(EditLine *e);

void
el_reset(EditLine *e);

const char *
el_gets(EditLine *e, int *count);

int
el_getc(EditLine *e, char *ch);

void
el_push(EditLine *e, const char *str);

int
el_parse(EditLine *e, int argc, char *argv[]);

int
el_set(EditLine *e, int op, ...);

int
el_source(EditLine *e, const char *file);

void
el_resize(EditLine *e);

const LineInfo *
el_line(EditLine *e);

int
el_insertstr(EditLine *e, char *str);

void
el_deletestr(EditLine *e, int count);

void
el_data_set(EditLine *e, void *data);

void *
el_data_get(EditLine *e);

History *
history_init();

void
history_end(History *h);

const HistEvent *
history(History *h, int op, ...);

해설

editline 프로그램 라이브러리에는, 범용의 라인 편집과 역사 함수가 갖춰지고 있습니다. 이것은 sh(1) 에 있는 것 과 유사합니다.

이러한 함수는 libedit 프로그램 라이브러리로 이용할 수 있습니다 (이것에는 libtermcap 프로그램 라이브러리가 필요합니다). 프로그램은 -ledit -ltermcap (와)과 링크 한다 필요가 있습니다.

라인 편집 함수

라인 편집 함수는, 공통의 데이터 구조, EditLine (을)를 사용합니다. 이것은 el_init() 에 의해 작성되어 el_end() 에 의해 해방됩니다.

이하의 함수를 이용할 수 있습니다.
el_init()
  라인 에디터를 초기화해, 다른 모든 라인 편집 함수가 사용하는 데이터 구조를 돌려줍니다. prog (은)는, 기동하는 측의 프로그램의 이름이며, 어느 설정을 사용할까 결정하기 위해서(때문에) editrc(5) 파일을 읽어낼 때 사용됩니다. fin (와)과 fout (은)는 각각 사용하는 입력 스트림과 출력 시냇물입니다. 이 다큐멘테이션에서는, "the tty" 의 참조가 실제로는 이 입력/출력 스트림의 편성을 참조합니다.
el_end()
  클린 업 해 e 그리고 종료합니다. el_init() 그리고 작성되었다고 상정됩니다.
el_reset()
  tty 와 퍼서를 리셋트 합니다. 이것은 tty 상태를 혼란시킨 가능성이 있다 에러의 다음에 호출할 필요가 있습니다.
el_gets()
  tty 로부터 1 행을 읽어냅니다. count (은)는, 읽어내진 캐릭터수를 넣도록(듯이) 수정됩니다. 처리가 성공했을 경우는 읽어내진 라인을 돌려주어, 캐릭터가 독해없는지, 또는 에러가 발생했을 경우는 NULL (을)를 돌려줍니다.
el_getc()
  tty 로부터 1 캐릭터를 읽어냅니다. ch (은)는, 읽어내진 캐릭터를 넣도록(듯이) 수정됩니다. 처리가 성공했을 경우는 읽어내진 캐릭터의 수를 돌려주어, 그렇지 않은 경우는 -1 을 돌려줍니다.
el_push()
  str (을)를 입력 스트림에 되돌립니다. 이것은 매크로 전개 기구에 의해 사용됩니다. 상세한 것에 대하여는, editrc(5) bind -s 의 설명을 참조해 주세요.
el_parse()
  argv 배열(사이즈는 argc 엘리먼트입니다) (을)를 퍼스 해, 편입 editline 명령을 실행합니다. 커멘드의 접두어가 "prog:" 의 경우, "prog" 하지만 el_init() (으)로 지정되었다 prog 인수와 일치한다면, el_parse() (은)는 명령을 실행할 뿐입니다. 명령이 미지의 경우는 반환값은 -1 입니다. 에러가 없는가 또는 "prog" 하지만 일치하지 않았던 경우는 반환값은 0 입니다. 명령이 에러를 돌려주었을 때는 1 입니다. 상세한 것에 대하여는, editrc(5) (을)를 참조해 주세요.

: argv[0]el_parse() 에 의해 수정되는 일이 있습니다. "prog" (와)과 명령 command 의 사이의 코론은, NUL ("\0") 그리고 옮겨놓을 수 있습니다.

el_set()
  el_set() editline 파라미터를 설정합니다. op (은)는 어느 파라미터를 설정할까를 결정해, 각 조작에는 독자적인 파라미터 리스트가 있습니다.

op 의 값에 대해서는, 필수 인수 리스트와 함께 다음의 파라미터가 서포트 되고 있습니다.

EL_PROMPT,char *(*f)(EditLine *)
  prompt 인쇄 함수를 f (으)로서 정의합니다. 이것은 prompt가 들어간 string (을)를 돌려주는 것입니다.
EL_TERMINAL,const char *type
  tty 의 단말 타입이 type 이다고 정의합니다. type 하지만 NULL 의 경우는 TERM 에입니다.
EL_EDITOR,const char *mode
  편집 모드를 mode (으)로 설정합니다. 그것은 "emacs" 또는 "vi" 의 1 개(살)일 필요가 있습니다.
EL_SIGNAL,int flag
  flag 하지만 제로가 아닌 경우, editline (은)는, 명령 입력을 읽어낼 때, 다음의 시그널용의 시그널 핸들러를 인스톨 합니다. SIGCONT, SIGHUP, SIGINT, SIGQUIT, SIGSTOP, SIGTERM, SIGTSTP, 및 SIGWINCH 사용됩니다.
EL_BIND,
  const char *, ..., NULL 편입 bind 명령을 실행합니다. 상세한 것에 대하여는, editrc(5) (을)를 참조해 주세요.
EL_ECHOTC,
  const char *, ..., NULL 편입 echotc 명령을 실행합니다. 상세한 것에 대하여는, editrc(5) (을)를 참조해 주세요.
EL_SETTC,
  const char *, ..., NULL 편입 settc 명령을 실행합니다. 상세한 것에 대하여는, editrc(5) (을)를 참조해 주세요.
EL_SETTY,
  const char *, ..., NULL 편입 setty 명령을 실행합니다. 상세한 것에 대하여는, editrc(5) (을)를 참조해 주세요.
EL_TELLTC,
  const char *, ..., NULL 편입 telltc 명령을 실행합니다. 상세한 것에 대하여는, editrc(5) (을)를 참조해 주세요.
EL_ADDFN,
  const char *name, const char *help, "unsigned, char, (*func)(EditLine, *e,, int, ch) 유저 정의 함수 func() (을)를 추가합니다. 이것은 name (으)로서 참조되어 name 에 결합된 키가 입력되었을 때에 불려 갑니다. helpname 의 설명입니다. 기동시에, ch (은)는 호출을 일으키는 키입니다. func() 의 반환값은 다음의 1 개입니다.
CC_NORM 통상의 캐릭터를 추가합니다.
CC_NEWLINE 줄 끝이 입력되었습니다.
CC_EOF 하지만 입력되었습니다.
CC_ARGHACK 인수로서 한층 더 명령 입력을 예기 하고 있습니다. 표시되는 것은 아무것도 하지 않습니다.
CC_REFRESH 표시를 리프레쉬 합니다.
CC_CURSOR 커서가 이동되었으므로, CC_REFRESH (을)를 갱신 및 실행합니다.
CC_REDISPLAY
  입력행 전체를 재표시합니다. 이것이 편리한 것은, 키 결합이 그 외의 정보를 출력하는 경우입니다.
CC_ERROR 에러가 발생했습니다. beep음, 그리고 tty 를 플래시 합니다.
CC_FATAL 치명적 에러. tty 를 기존 상태에 리셋트 합니다.
EL_HIST,
  History *(*func)(History *, int op, ...), const char *ptr 어느 역사 함수를 사용하는지를 정의합니다. 그것은 통상은 history() 입니다. ptr (은)는, history_init() 하지만 돌려주는 값일 필요가 있습니다.
el_source()
  file 의 내용을 읽는 것으로 editline (을)를 초기화합니다. el_parse() 하지만, file 안의 행 마다 불려 갑니다. file 하지만 NULL 의 경우, $HOME/.editrc (을)를 시험합니다. file 의 형식의 상세한 것에 대하여는, editrc(5) (을)를 참조해 주세요.
el_resize()
  단말의 사이즈가 변화하는 경우는 호출할 필요가 있습니다. EL_SIGNAL 하지만 el_set() 그리고 설정되어 있는 경우, 이것은 자동적으로 행해집니다. 그렇지 않은 경우는, 적절한 기회에 el_resize() (을)를 호출하는 것은 어플리케이션의 책임입니다.
el_line()
  현재의 라인에 대한 편집 정보를 LineInfo 그리고 돌려줍니다. 이것은 다음과 같이 정의됩니다.
typedef struct lineinfo {
    const char *buffer;    /* 버퍼의 주소 */
    const char *cursor;    /* 커서의 주소 */
    const char *lastchar;  /* 마지막 캐릭터의 주소 */
} LineInfo;
el_insertstr()
  커서가 있는 라인에 str (을)를 삽입합니다. str 하지만 하늘일까 피트하지 않는다 경우는 -1 을 돌려줍니다. 그 이외의 경우는 0 을 돌려줍니다.
el_deletestr()
  커서의 전의 num 개의 캐릭터를 삭제합니다.
el_data_set()
  유저 데이터를 data 에 설정합니다.
el_data_get()
  유저 데이터를 취득합니다.

역사 리스트 함수

역사 함수는 공통의 데이터 구조 History (을)를 사용합니다. History (은)는, history_init() 에 의해 작성되어 history_end() 에 의해 해방됩니다.

다음의 함수를 이용할 수 있습니다.
history_init()
  역사 리스트를 초기화해, 다른 모든 역사 함수가 사용하는 데이터 구조를 돌려줍니다.
history_end()
  클린 업 해, h 그리고 종료합니다. history_init() 그리고 작성된 것과 상정됩니다.

history()
  역사 리스트에 대해 연산 op (을)를 실행합니다. 연산이 요구한다 옵션 인수가 있습니다. op 에 붙어 다음의 값이, 필수 인수 리스트와 함께 서포트되고 있습니다.
H_EVENT,int size
  size 엘리먼트에 역사의 사이즈를 설정합니다.
H_END 클린 업 해, h 그리고 종료합니다. history_init() 그리고 작성된 것과 상정됩니다.
H_CLEAR
  역사를 클리어 합니다.

H_FUNC,
  void *ptr, history_gfun_t first, history_gfun_t next, history_gfun_t last, history_gfun_t prev, history_gfun_t curr, history_vfun_t clear, history_efun_t enter, history_efun_t add 다양한 역사 연산을 실행하는 함수를 정의합니다. ptr (은)는, 함수가 기동될 때 함수로 지정되는 인수입니다.
H_FIRST
  역사의 최초의 엘리먼트를 돌려줍니다.
H_LAST
  역사의 마지막 엘리먼트를 돌려줍니다.
H_PREV
  역사의 직전의 엘리먼트를 돌려줍니다.
H_NEXT
  역사의 다음의 엘리먼트를 돌려줍니다.
H_CURR
  역사의 현재의 엘리먼트를 돌려줍니다.
H_ADD,const char *str
  역사의 현재의 엘리먼트의 말미에 str (을)를 추가하는지, 또는 엘리먼트가 없다 경우는 H_ENTER 그리고 1 개의 엘리먼트를 작성합니다.
H_ENTER,const char *str
  str (을)를 새로운 엘리먼트로서 history() 에 추가합니다. 필요하면, 가장 낡다 엔트리를 삭제해, 리스트가 작성된 사이즈에 유지합니다.
H_PREV_STR,const char *str
  str 그리고 개시한다, 가장 가까운 직전의 이벤트를 돌려줍니다.
H_NEXT_STR,const char *str
  str 그리고 개시한다, 가장 가까운 다음의 이벤트를 돌려줍니다.
H_PREV_EVENT,int e
  e 그렇다고 하는 번호의 직전의 이벤트를 돌려줍니다.
H_NEXT_EVENT,int e
  e 그렇다고 하는 번호의 다음의 이벤트를 돌려줍니다.
H_LOAD,const char *file
  file 에 보존된 역사 리스트를 로드합니다.
H_SAVE,const char *file
  역사 리스트를 file 에 보존합니다.

관련 항목

sh(1), signal(3), termcap(3), editrc(5)

역사

editline 프로그램 라이브러리는 최초로 BSD 4.4 그리고 나타났습니다.

저자

editline 프로그램 라이브러리는 Christos Zoulas 하지만 작성했습니다. 이 메뉴얼은 Luke Mewburn 하지만 작성했습니다.

버그

이 다큐멘테이션은 아마 불완전하다라고 생각됩니다.

el_parse() (은)는, 지정되었다 argv[0] (을)를 수정해 되지 않습니다.

토큰화 함수는 <histedit.h> 안에서는 공에 정의되고 있지 않습니다.


EDITLINE (3) January 11, 1997

tail head cat sleep
QR code linking to this page


Ben Bullock이 유닉스 매뉴얼 페이지에서 서비스에 대한 의견을 주시기 바랍니다. Privacy policy.