From ea2d3073ac177d95fc14c310178aa2b7455b060a Mon Sep 17 00:00:00 2001 From: Paul LeoNerd Evans Date: Thu, 26 Jan 2012 12:55:16 +0000 Subject: [PATCH] Created termkey_new_abstract() --- man/termkey_new.3 | 5 ++++- termkey.c | 18 ++++++++++++++++++ termkey.h.in | 1 + 3 files changed, 23 insertions(+), 1 deletion(-) diff --git a/man/termkey_new.3 b/man/termkey_new.3 index dd188d6..c727d22 100644 --- a/man/termkey_new.3 +++ b/man/termkey_new.3 @@ -7,12 +7,15 @@ termkey_new, termkey_destroy \- create or destroy new termkey instance .sp .BI "TERMKEY_CHECK_VERSION;" .BI "TermKey *termkey_new(int " fd ", int " flags ); +.BI "TermKey *termkey_new_abstract(const char *" term ", int " flags ); .BI "void termkey_destroy(TermKey *" tk ); .fi .sp Link with \fI\-ltermkey\fP. .SH DESCRIPTION -\fBtermkey_new\fP() creates a new \fBtermkey\fP(7) instance connected to the file handle opened by \fIfd\fP using the \fIflags\fP. The \fITermKey\fP structure should be considered opaque; its contents are not intended for use outside of the library. If \fIfd\fP is given the value -1, then no file handle will be associated. +\fBtermkey_new\fP() creates a new \fBtermkey\fP(7) instance connected to the file handle opened by \fIfd\fP using the \fIflags\fP. The \fITermKey\fP structure should be considered opaque; its contents are not intended for use outside of the library. +.PP +\fBtermkey_new_abstract\fP() creates a new \fBtermkey\fP() instance with no file handle associated. As this is usually done for handling other sources of terminal byte input, it also takes a string indicating the termtype to use. .PP \fBtermkey_destroy\fP() destroys the given instance and releases any resources controlled by it. It will not close the underlying filehandle given as the \fIfd\fP argument to \fBtermkey_new\fP(). .PP diff --git a/termkey.c b/termkey.c index 0ef077e..6df53bd 100644 --- a/termkey.c +++ b/termkey.c @@ -369,6 +369,24 @@ TermKey *termkey_new(int fd, int flags) return tk; } +TermKey *termkey_new_abstract(const char *term, int flags) +{ + TermKey *tk = termkey_alloc(); + if(!tk) + return NULL; + + tk->fd = -1; + + termkey_set_flags(tk, flags); + + if(!termkey_init(tk, term)) { + free(tk); + return NULL; + } + + return tk; +} + void termkey_free(TermKey *tk) { free(tk->buffer); tk->buffer = NULL; diff --git a/termkey.h.in b/termkey.h.in index d61afb5..1db9d4d 100644 --- a/termkey.h.in +++ b/termkey.h.in @@ -157,6 +157,7 @@ enum { void termkey_check_version(int major, int minor); TermKey *termkey_new(int fd, int flags); +TermKey *termkey_new_abstract(const char *term, int flags); void termkey_free(TermKey *tk); void termkey_destroy(TermKey *tk);