Created termkey_new_abstract()

This commit is contained in:
Paul LeoNerd Evans 2012-01-26 12:55:16 +00:00
parent 63f37cecd6
commit ea2d3073ac
3 changed files with 23 additions and 1 deletions

View File

@ -7,12 +7,15 @@ termkey_new, termkey_destroy \- create or destroy new termkey instance
.sp .sp
.BI "TERMKEY_CHECK_VERSION;" .BI "TERMKEY_CHECK_VERSION;"
.BI "TermKey *termkey_new(int " fd ", int " flags ); .BI "TermKey *termkey_new(int " fd ", int " flags );
.BI "TermKey *termkey_new_abstract(const char *" term ", int " flags );
.BI "void termkey_destroy(TermKey *" tk ); .BI "void termkey_destroy(TermKey *" tk );
.fi .fi
.sp .sp
Link with \fI\-ltermkey\fP. Link with \fI\-ltermkey\fP.
.SH DESCRIPTION .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 .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(). \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 .PP

View File

@ -369,6 +369,24 @@ TermKey *termkey_new(int fd, int flags)
return tk; 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) void termkey_free(TermKey *tk)
{ {
free(tk->buffer); tk->buffer = NULL; free(tk->buffer); tk->buffer = NULL;

View File

@ -157,6 +157,7 @@ enum {
void termkey_check_version(int major, int minor); void termkey_check_version(int major, int minor);
TermKey *termkey_new(int fd, int flags); TermKey *termkey_new(int fd, int flags);
TermKey *termkey_new_abstract(const char *term, int flags);
void termkey_free(TermKey *tk); void termkey_free(TermKey *tk);
void termkey_destroy(TermKey *tk); void termkey_destroy(TermKey *tk);