X-Git-Url: http://git.madism.org/?a=blobdiff_plain;f=madtty%2Fmadtty.h;h=69d7288a3079a0521d7e741d39745d2816ebb60a;hb=d0e48d929c19d39c4a13e57e0f8a8dd6194d6dde;hp=d14c09e0faae93c2c21787e29c3eb58cf62b8231;hpb=8ead06c97e16165208fd9d02ada73d63aeca11f2;p=apps%2Fmadtty.git diff --git a/madtty/madtty.h b/madtty/madtty.h index d14c09e..69d7288 100644 --- a/madtty/madtty.h +++ b/madtty/madtty.h @@ -118,6 +118,7 @@ typedef struct RoteTerm_ { * that will be used for newly inserted * characters */ + int pty; /* pty of the process */ pid_t childpid; /* pid of the child process running in the * terminal; 0 for none. This is READ-ONLY. */ @@ -166,7 +167,7 @@ void rote_vt_destroy(RoteTerm *rt); * to execute the command and will exit with status 127. You can catch * that by installing a SIGCHLD handler if you want. */ -pid_t rote_vt_forkpty(RoteTerm *rt, const char *command); +pid_t rote_vt_forkpty(RoteTerm *rt, const char *path, const char *argv[]); /* Disconnects the RoteTerm from its forked child process. This function * should be called when the child process dies or something of the sort. @@ -183,6 +184,8 @@ void rote_vt_forsake_child(RoteTerm *rt); * read from the child process it will return immediately. */ void rote_vt_update(RoteTerm *rt); +int rote_vt_read(RoteTerm *rt, char *buf, int buflen); + /* Puts data into the terminal: if there is a forked process running, * the data will be sent to it. If there is no forked process, * the data will simply be injected into the terminal (as in @@ -240,64 +243,4 @@ void *rote_vt_take_snapshot(RoteTerm *rt); * This function does NOT free() the passed buffer */ void rote_vt_restore_snapshot(RoteTerm *rt, void *snapbuf); -/* Returns the pseudo tty descriptor associated with the given terminal. - * Please don't do weird things with it (like close it for instance), - * or things will break - * - * This function returns -1 if the given terminal does not yet have - * an associated pty. A pty is only associated to a terminal when - * needed, e.g. on a call to rote_vt_forkpty. */ -int rote_vt_get_pty_fd(RoteTerm *rt); - -/* Declaration of custom escape sequence callback type. See the - * rote_vt_add_es_handler function for more info */ -typedef int (*rote_es_handler_t)(RoteTerm *rt, const char *es); - -/* Installs a custom escape sequence handler for the given RoteTerm. - * The handler will be called by the library every time it tries to - * recognize an escape sequence; depending on the return value of the - * handler, it will proceed in a different manner. See the description - * of the possible return values (ROTE_HANDLERESULT_* constants) below - * for more info. - * - * This handler will be called EACH TIME THE ESCAPE SEQUENCE BUFFER - * RECEIVES A CHARACTER. Therefore, it must execute speedily in order - * not to create too heavy a performance penalty. In particular, the - * writer of the handler should take care to quickly test for invalid - * or incomplete escape sequences before trying to do more elaborate - * parsing. - * - * The handler will NOT be called with an empty escape sequence (i.e. - * one in which only the initial ESC was received). - * - * The custom handler receives the terminal it pertains to and the - * escape sequence as a string (without the initial escape character). - * - * The handler may of course modify the terminal as it sees fit, taking - * care not to corrupt it of course (in particular, it should appropriately - * raise the line_dirty[] and curpos_dirty flags to indicate what it has - * changed). - */ -void rote_vt_install_handler(RoteTerm *rt, rote_es_handler_t handler); - -/* Possible return values for the custom handler function and their - * meanings: */ -#define ROTE_HANDLERESULT_OK 0 /* means escape sequence was handled */ - -#define ROTE_HANDLERESULT_NOTYET 1 /* means the escape sequence was not - * recognized yet, but there is hope that - * it still will once more characters - * arrive (i.e. it is not yet complete). - * - * The library will thus continue collecting - * characters and calling the handler as - * each character arrives until - * either OK or NOWAY is returned. - */ - -#define ROTE_HANDLERESULT_NOWAY 2 /* means the escape sequence was not - * recognized, and there is no chance - * that it will even if more characters - * are added to it. */ - #endif /* MADTTY_MADTTY_H */