URI: 
       tFix compilation on Linux - ledit - Text editor (WIP)
  HTML git clone git://lumidify.org/ledit.git (fast, but not encrypted)
  HTML git clone https://lumidify.org/git/ledit.git (encrypted, but very slow)
   DIR Log
   DIR Files
   DIR Refs
   DIR README
   DIR LICENSE
       ---
   DIR commit a52f6845ba83e6df5d60d22844b1a2546ca97af1
   DIR parent b3a32dd52672a8a385308afb73198d129294c7c3
  HTML Author: lumidify <nobody@lumidify.org>
       Date:   Thu, 11 Nov 2021 18:48:56 +0100
       
       Fix compilation on Linux
       
       Diffstat:
         M keys_basic.c                        |       3 +--
         M ledit.c                             |      17 ++++++++++++++---
       
       2 files changed, 15 insertions(+), 5 deletions(-)
       ---
   DIR diff --git a/keys_basic.c b/keys_basic.c
       t@@ -1655,7 +1655,7 @@ join_lines(ledit_buffer *buffer, char *text, int len) {
                if (num == 0)
                        num = 1;
                int start_group = 1;
       -        ledit_line *ll1, *ll2;
       +        ledit_line *ll1;
                int cur_line = buffer->cur_line;
                /* FIXME: have a general tmp buf for everyone to use */
                txtbuf *buf = txtbuf_new();
       t@@ -1670,7 +1670,6 @@ join_lines(ledit_buffer *buffer, char *text, int len) {
                           are stored later */
                        ll1 = ledit_buffer_get_line(buffer, cur_line);
                        oldlen = ll1->len;
       -                ll2 = ledit_buffer_get_line(buffer, cur_line + 1);
                        /* FIXME: truncate whitespace to one space */
                        ledit_buffer_delete_range(
                            buffer, 0,
   DIR diff --git a/ledit.c b/ledit.c
       t@@ -65,6 +65,17 @@ ledit_common common;
        int cur_lang = 0;
        struct action cur_action = {ACTION_NONE, NULL};
        
       +/* stolen from OpenBSD */
       +#define        ledit_timespecsub(tsp, usp, vsp)                                \
       +        do {                                                            \
       +                (vsp)->tv_sec = (tsp)->tv_sec - (usp)->tv_sec;          \
       +                (vsp)->tv_nsec = (tsp)->tv_nsec - (usp)->tv_nsec;       \
       +                if ((vsp)->tv_nsec < 0) {                               \
       +                        (vsp)->tv_sec--;                                \
       +                        (vsp)->tv_nsec += 1000000000L;                  \
       +                }                                                       \
       +        } while (0)
       +
        static void
        mainloop(void) {
                XEvent event;
       t@@ -174,7 +185,7 @@ mainloop(void) {
                        };
                        if (last_motion_valid) {
                                clock_gettime(CLOCK_MONOTONIC, &now);
       -                        timespecsub(&now, &last_motion, &elapsed);
       +                        ledit_timespecsub(&now, &last_motion, &elapsed);
                                if (elapsed.tv_sec > 0 || elapsed.tv_nsec >= MOUSE_TICK) {
                                        need_redraw |= drag_motion(&last_motion_event);
                                        last_motion = now;
       t@@ -183,7 +194,7 @@ mainloop(void) {
                        }
                        if (last_scroll_valid) {
                                clock_gettime(CLOCK_MONOTONIC, &now);
       -                        timespecsub(&now, &last_scroll, &elapsed);
       +                        ledit_timespecsub(&now, &last_scroll, &elapsed);
                                if (elapsed.tv_sec > 0 || elapsed.tv_nsec >= MOUSE_TICK) {
                                        need_redraw |= button_press(&last_scroll_event, scroll_num);
                                        last_scroll = now;
       t@@ -211,7 +222,7 @@ mainloop(void) {
                        }
        
                        clock_gettime(CLOCK_MONOTONIC, &now);
       -                timespecsub(&now, &last, &elapsed);
       +                ledit_timespecsub(&now, &last, &elapsed);
                        if (elapsed.tv_sec == 0 && elapsed.tv_nsec < TICK) {
                                sleep_time.tv_nsec = TICK - elapsed.tv_nsec;
                                nanosleep(&sleep_time, NULL);