t* sacc + cursorline and uri preview
       
   URI git clone git://git.codevoid.de/sacc-sdk
   DIR Log
   DIR Files
   DIR Refs
   DIR LICENSE
       ---
   DIR commit d1db3194cc1350795afe44cda9e73d916e74e71c
   DIR parent fa93a3cfbc2505d467a4c58b1faadc36ed667cea
   URI Author: Quentin Rameau <quinq@fifth.space>
       Date:   Thu, 22 Jun 2017 23:38:41 +0200
       
       Ensure we write all we want on the socket
       
       Diffstat:
         M sacc.c                              |      21 +++++++++++++++------
       
       1 file changed, 15 insertions(+), 6 deletions(-)
       ---
   DIR diff --git a/sacc.c b/sacc.c
       t@@ -282,15 +282,24 @@ getrawitem(int sock)
                return raw;
        }
        
       -int
       +void
        sendselector(int sock, const char *selector)
        {
       -        if (write(sock, selector, strlen(selector)) < 0)
       -                die("Can't send message: %s", strerror(errno));
       -        if (write(sock, "\r\n", strlen("\r\n")) < 0)
       -                die("Can't send message: %s", strerror(errno));
       +        char *msg, *p;
       +        size_t ln;
       +        ssize_t n;
        
       -        return 1;
       +        ln = strlen(selector) + 3;
       +        msg = p = xmalloc(ln);
       +        snprintf(msg, ln--, "%s\r\n", selector);
       +
       +        while ((n = write(sock, p, ln)) != -1 && n != 0) {
       +                ln -= n;
       +                p += n;
       +        }
       +        free(msg);
       +        if (n == -1)
       +                die("Can't send message: %s", strerror(errno));
        }
        
        int