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 5bf8439ba81e8d9235923dc3f8effa4a105ab8ba
   DIR parent a3ee498a2796928b86bdb2b6fd73c56af68dc0eb
   URI Author: Christoph Lohmann <20h@r-36.net>
       Date:   Tue, 25 Jul 2017 19:49:30 +0200
       
       Add a status to failed connectto() requests.
       
       Diffstat:
         M common.h                            |       1 +
         M sacc.c                              |      24 ++++++++++++++++--------
         M ui_ti.c                             |      23 +++++++++++++++++++++++
         M ui_txt.c                            |      15 +++++++++++++++
       
       4 files changed, 55 insertions(+), 8 deletions(-)
       ---
   DIR diff --git a/common.h b/common.h
       t@@ -25,6 +25,7 @@ struct dir {
        void die(const char *fmt, ...);
        void display(Item *item);
        Item *selectitem(Item *entry);
       +void status(char *fmt, ...);
        const char *typedisplay(char t);
        void uicleanup(void);
        char *uiprompt(char *fmt, ...);
   DIR diff --git a/sacc.c b/sacc.c
       t@@ -341,8 +341,10 @@ connectto(const char *host, const char *port)
                struct addrinfo *addrs, *addr;
                int sock, r;
        
       -        if (r = getaddrinfo(host, port, &hints, &addrs))
       -                die("Can't resolve hostname ā€œ%sā€: %s", host, gai_strerror(r));
       +        if (r = getaddrinfo(host, port, &hints, &addrs)) {
       +                status("Can't resolve hostname ā€œ%sā€: %s", host, gai_strerror(r));
       +                return -1;
       +        }
        
                for (addr = addrs; addr; addr = addr->ai_next) {
                        if ((sock = socket(addr->ai_family, addr->ai_socktype,
       t@@ -354,10 +356,14 @@ connectto(const char *host, const char *port)
                        }
                        break;
                }
       -        if (sock < 0)
       -                die("Can't open socket: %s", strerror(errno));
       -        if (r < 0)
       -                die("Can't connect to: %s:%s: %s", host, port, strerror(errno));
       +        if (sock < 0) {
       +                status("Can't open socket: %s", strerror(errno));
       +                return -1;
       +        }
       +        if (r < 0) {
       +                status("Can't connect to: %s:%s: %s", host, port, strerror(errno));
       +                return -1;
       +        }
        
                freeaddrinfo(addrs);
        
       t@@ -372,7 +378,8 @@ download(Item *item, int dest)
                int src;
        
                if (!item->tag) {
       -                src = connectto(item->host, item->port);
       +                if ((src = connectto(item->host, item->port)) < 0)
       +                        return 0;
                        sendselector(src, item->selector);
                } else if ((src = open(item->tag, O_RDONLY)) < 0) {
                        printf("Can't open source file %s: %s\n",
       t@@ -446,7 +453,8 @@ fetchitem(Item *item)
        {
                int sock;
        
       -        sock = connectto(item->host, item->port);
       +        if ((sock = connectto(item->host, item->port)) < 0)
       +                return 0;
                sendselector(sock, item->selector);
                item->raw = getrawitem(sock);
                close(sock);
   DIR diff --git a/ui_ti.c b/ui_ti.c
       t@@ -118,6 +118,29 @@ help(Item *entry)
                return &item;
        }
        
       +void
       +status(char *fmt, ...)
       +{
       +        va_list ap;
       +
       +        putp(tparm(save_cursor));
       +
       +        putp(tparm(cursor_address, lines-1, 0));
       +        putp(tparm(enter_standout_mode));
       +
       +        va_start(ap, fmt);
       +        vprintf(fmt, ap);
       +        va_end(ap);
       +
       +        printf(" <Press Key to continue>");
       +        getchar();
       +
       +        putp(tparm(exit_standout_mode));
       +
       +        putp(tparm(restore_cursor));
       +        fflush(stdout);
       +}
       +
        static void
        displaystatus(Item *item)
        {
   DIR diff --git a/ui_txt.c b/ui_txt.c
       t@@ -56,6 +56,21 @@ ndigits(size_t n)
                return (n < 10) ? 1 : (n < 100) ? 2 : 3;
        }
        
       +void
       +status(char *fmt, ...)
       +{
       +        va_list arg;
       +
       +        va_start(arg, fmt);
       +        vprintf(fmt, arg);
       +        va_end(arg);
       +
       +        printf(" <Press Key to continue>");
       +        fflush(stdout);
       +
       +        getchar();
       +}
       +
        static void
        printstatus(Item *item, char c)
        {