From a803b2d136a5c71e6f86a92e7ec0d7e24b62a890 Mon Sep 17 00:00:00 2001 From: "Michael D. Lowis" Date: Mon, 10 Jul 2017 15:58:35 -0400 Subject: [PATCH] Removed redundant auxillary apps --- Makefile | 8 +- pty.c | 101 ---------------------- term.c | 234 --------------------------------------------------- tests/term.c | 15 ---- 4 files changed, 2 insertions(+), 356 deletions(-) delete mode 100644 pty.c delete mode 100644 term.c delete mode 100644 tests/term.c diff --git a/Makefile b/Makefile index dc65aab..2507e71 100644 --- a/Makefile +++ b/Makefile @@ -1,6 +1,6 @@ INCS = -Iinc/ -BINS = tide pick xcpd term pty hl-cpp +BINS = tide pick xcpd hl-cpp MAN1 = docs/tide.1 docs/pick.1 docs/picktag.1 docs/pickfile.1 LIBEDIT_OBJS = \ @@ -16,10 +16,9 @@ LIBEDIT_OBJS = \ lib/config.o \ lib/event.o -TEST_BINS = \ +TEST_BINS = \ tests/tide \ tests/pick \ - tests/term \ tests/libedit include config.mk @@ -63,13 +62,10 @@ libedit.a: $(LIBEDIT_OBJS) tide: tide.o libedit.a pick: pick.o libedit.a xcpd: xcpd.o libedit.a -term: term.o libedit.a -pty: pty.o libedit.a hl-cpp: hl-cpp.o libedit.a tests/libedit: tests/libedit.o tests/lib/buf.o tests/lib/utf8.o libedit.a tests/tide: tests/tide.o libedit.a tests/pick: tests/pick.o libedit.a -tests/term: tests/term.o libedit.a # define implicit rule for building binaries %: %.o diff --git a/pty.c b/pty.c deleted file mode 100644 index 1a7d907..0000000 --- a/pty.c +++ /dev/null @@ -1,101 +0,0 @@ -#define _XOPEN_SOURCE 700 -#include -#include -#ifdef __MACH__ - #include -#else - #include -#endif -#include -#include - -void usage(void) { - fprintf(stderr, "usage: pty COMMAND ...\n"); - exit(EXIT_FAILURE); -} - -int pty_spawn(char** argv) { - int fd; - struct termios tio; - pid_t pid; - putenv("TERM=dumb"); - switch ( (pid = forkpty(&fd, NULL, NULL, NULL)) ) { - case -1: // Failed - die("forkpty() :"); - break; - - case 0: // Child Process - if (execvp(argv[0], argv) < 0) - die("execvp('%s', ...) :", argv[0]); - exit(EXIT_FAILURE); - break; - - default: // Parent Process - tcgetattr(fd, &tio); - tio.c_lflag &= ~(ECHO | ECHONL); - tio.c_cc[ VMIN ] = 1; - tio.c_cc[ VTIME ] = 0; - tcsetattr(fd, TCSANOW, &tio); - break; - } - return fd; -} - -int pty_input(int ptyfd, char* buf, size_t bufsz) { - long n; - if ((n = read(STDIN_FILENO, buf, bufsz)) < 0) - die("read() stdin :"); - if (n == 0) - return 1; - if ((n = write(ptyfd, buf, n)) < 0) - die("write() subprocess :"); - return 0; -} - -int pty_output(int ptyfd, char* buf, size_t bufsz) { - long n; - if ((n = read(ptyfd, buf, bufsz)) < 0) { - if (errno == EIO) - return 1; - else - die("read() subprocess :"); - } - if ((n = write(STDOUT_FILENO, buf, n)) < 0) - die("write() stdout :"); - return 0; -} - -int main(int argc, char** argv) { - if (argc == 1) usage(); - - /* allocate the buffer, spawn the pty, and setup the polling structures */ - static char buf[4096]; - int done = 0, ptyfd = pty_spawn(++argv); - struct pollfd pfds[2] = { - { .fd = STDIN_FILENO, .events = POLLIN }, - { .fd = ptyfd, .events = POLLIN }, - }; - - /* enter the event loop */ - while (!done) { - /* clear previous events and poll for new ones */ - pfds[0].revents = pfds[1].revents = 0; - if (poll(pfds,2,-1) < 0) - die("poll() :"); - - /* shutdown if there's an error or the pipes are closed */ - if ((pfds[0].revents | pfds[1].revents) & (POLLERR|POLLHUP)) - done = 1; - - /* pass stdin to the subprocess */ - if (pfds[0].revents & POLLIN) - done = pty_input(ptyfd, buf, sizeof(buf)); - - /* pass subprocess output to stdout */ - if (pfds[1].revents & POLLIN) - done = pty_output(ptyfd, buf, sizeof(buf)); - } - close(ptyfd); - - return 0; -} diff --git a/term.c b/term.c deleted file mode 100644 index ceeb253..0000000 --- a/term.c +++ /dev/null @@ -1,234 +0,0 @@ -#define _XOPEN_SOURCE 700 -#include -#include -#ifdef __MACH__ - #include -#else - #include -#endif -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -int CmdFD = -1; -char* ShellCmd[] = { NULL, NULL }; -static int SearchDir = DOWN; -static char* SearchTerm = NULL; - -bool fdready(int fd); - -/* unused functions */ -void onfocus(bool focused) {} -void onerror(char* msg) {} - -void onscroll(double percent) { - size_t bend = buf_end(win_buf(EDIT)); - size_t off = (size_t)((double)bend * percent); - view_scrollto(win_view(EDIT), (off >= bend ? bend : off)); -} - -void onlayout(void) { - /* calculate and update scroll region */ - View* view = win_view(EDIT); - size_t bend = buf_end(win_buf(EDIT)); - if (bend == 0) bend = 1; - if (!view->rows) return; - size_t vbeg = view->rows[0]->off; - size_t vend = view->rows[view->nrows-1]->off + view->rows[view->nrows-1]->rlen; - double scroll_vis = (double)(vend - vbeg) / (double)bend; - double scroll_off = ((double)vbeg / (double)bend); - win_setscroll(scroll_off, scroll_vis); -} - -void onupdate(void) { - long n = 0, r = 0, i = 0; - static char buf[8192]; - if (!fdready(CmdFD)) return; - if ((n = read(CmdFD, buf, sizeof(buf))) < 0) - die("read() subprocess :"); - while (i < n) { - Rune rune = 0; - size_t length = 0; - while (!utf8decode(&rune, &length, buf[i++])); - view_insert(win_view(EDIT), false, rune); - } - win_buf(EDIT)->outpoint = win_view(EDIT)->selection.end; -} - -void onshutdown(void) { - x11_deinit(); -} - -void onmouseleft(WinRegion id, bool pressed, size_t row, size_t col) { - static int count = 0; - static uint64_t before = 0; - if (!pressed) return; - uint64_t now = getmillis(); - count = ((now-before) <= config_get_int(DblClickTime) ? count+1 : 1); - before = now; - - if (count == 1) { - if (x11_keymodsset(ModShift)) - view_selext(win_view(id), row, col); - else - view_setcursor(win_view(id), row, col); - } else if (count == 2) { - view_select(win_view(id), row, col); - } else if (count == 3) { - view_selword(win_view(id), row, col); - } -} - -void onmousemiddle(WinRegion id, bool pressed, size_t row, size_t col) { - if (pressed) return; - if (win_btnpressed(MouseLeft)) { - cut(); - } else { - char* str = view_fetch(win_view(id), row, col); - //if (str) exec(str); - free(str); - } -} - -void onmouseright(WinRegion id, bool pressed, size_t row, size_t col) { - if (pressed) return; - if (win_btnpressed(MouseLeft)) { - paste(); - } else { - SearchDir *= (x11_keymodsset(ModShift) ? -1 : +1); - free(SearchTerm); - SearchTerm = view_fetch(win_view(id), row, col); - if (view_findstr(win_view(EDIT), SearchDir, SearchTerm)) { - win_setregion(EDIT); - win_warpptr(EDIT); - } - } -} - -static void oninput(Rune rune) { - view_insert(win_view(FOCUSED), false, rune); - if (win_getregion() == EDIT) { - size_t point = win_buf(EDIT)->outpoint; - size_t pos = win_view(EDIT)->selection.end; - if (rune == '\n' && pos > point) { - Sel range = { .beg = point, .end = pos }; - char* str = view_getstr(win_view(EDIT), &range); - write(CmdFD, str, strlen(str)-1); - free(str); - } - } -} - -bool update_needed(void) { - return fdready(CmdFD); -} - -/******************************************************************************/ - -bool fdready(int fd) { - fd_set fds; - FD_ZERO(&fds); - FD_SET(fd, &fds); - struct timeval tv = { .tv_usec = 0 }; - return (select(fd+1, &fds, NULL, NULL, &tv) > 0); -} - -int pty_spawn(char** argv) { - int fd; - struct termios tio; - pid_t pid; - putenv("TERM=dumb"); - switch ( (pid = forkpty(&fd, NULL, NULL, NULL)) ) { - case -1: // Failed - die("forkpty() :"); - break; - - case 0: // Child Process - if (execvp(argv[0], argv) < 0) - die("execvp('%s', ...) :", argv[0]); - exit(EXIT_FAILURE); - break; - - default: // Parent Process - tcgetattr(fd, &tio); - tio.c_lflag &= ~(ECHO | ECHONL); - tio.c_cc[ VMIN ] = 1; - tio.c_cc[ VTIME ] = 0; - tcsetattr(fd, TCSANOW, &tio); - break; - } - return fd; -} - -/******************************************************************************/ - -static void quit(void) { - x11_deinit(); -} - -static KeyBinding Bindings[] = { - /* Cursor Movements */ - { ModAny, KEY_HOME, cursor_home }, - { ModAny, KEY_END, cursor_end }, - { ModAny, KEY_UP, cursor_up }, - { ModAny, KEY_DOWN, cursor_dn }, - { ModAny, KEY_LEFT, cursor_left }, - { ModAny, KEY_RIGHT, cursor_right }, - { ModCtrl, ';', cursor_warp }, - - /* Standard Unix Shortcuts */ - { ModCtrl, 'u', del_to_bol }, - { ModCtrl, 'k', del_to_eol }, - { ModCtrl, 'w', del_to_bow }, - { ModCtrl, 'a', cursor_bol }, - { ModCtrl, 'e', cursor_eol }, - - /* Standard Text Editing Shortcuts */ -// { ModCtrl, 's', save }, - { ModCtrl, 'z', undo }, - { ModCtrl, 'y', redo }, - { ModCtrl, 'x', cut }, - { ModCtrl, 'c', copy }, - { ModCtrl, 'v', paste }, - { ModCtrl, 'j', join_lines }, - { ModCtrl, 'l', select_line }, - { ModCtrl|ModShift, 'a', select_all }, - - /* Common Special Keys */ - { ModNone, KEY_PGUP, page_up }, - { ModNone, KEY_PGDN, page_dn }, - { ModAny, KEY_DELETE, delete }, - { ModAny, KEY_BACKSPACE, backspace }, - - /* Implementation Specific */ - { ModNone, KEY_ESCAPE, select_prev }, - { ModCtrl, 't', change_focus }, - { ModCtrl, 'q', quit }, -// { ModCtrl, 'h', highlight }, -// { ModOneOrMore, 'f', search }, -// { ModCtrl, 'd', execute }, -// { ModCtrl, 'n', new_win }, - { 0, 0, 0 } -}; - - -#ifndef TEST -int main(int argc, char** argv) { - if (!ShellCmd[0]) ShellCmd[0] = getenv("SHELL"); - if (!ShellCmd[0]) ShellCmd[0] = "/bin/sh"; - CmdFD = pty_spawn(argc > 1 ? argv+1 : ShellCmd); - win_window("term", onerror); - win_setkeys(Bindings, oninput); - win_buf(EDIT)->crlf = 1; - config_set_int(TabWidth, 8); - win_loop(); - return 0; -} -#endif diff --git a/tests/term.c b/tests/term.c deleted file mode 100644 index 43bfabe..0000000 --- a/tests/term.c +++ /dev/null @@ -1,15 +0,0 @@ -#define INCLUDE_DEFS -#include -#include - -// Inculd the source file so we can access everything -#include "../term.c" - -TEST_SUITE(UnitTests) { -} - -int main(int argc, char** argv) { - atf_init(argc,argv); - RUN_TEST_SUITE(UnitTests); - return atf_print_results(); -} -- 2.49.0