URI: 
       fixed string cutting in draw.c - dwm - dynamic window manager
  HTML git clone https://git.parazyd.org/dwm
   DIR Log
   DIR Files
   DIR Refs
   DIR README
   DIR LICENSE
       ---
   DIR commit 4d67199a4bb68e5377d2fece62a83fde66c92861
   DIR parent 95766d6241a401b3665ac1ad528b90c55e7b6810
  HTML Author: Anselm R.Garbe <arg@10ksloc.org>
       Date:   Mon, 14 Aug 2006 08:52:15 +0200
       
       fixed string cutting in draw.c
       
       Diffstat:
         M draw.c                              |      12 ++++++++++--
       
       1 file changed, 10 insertions(+), 2 deletions(-)
       ---
   DIR diff --git a/draw.c b/draw.c
       @@ -26,7 +26,7 @@ drawtext(const char *text, Bool invert)
        {
                int x, y, w, h;
                static char buf[256];
       -        unsigned int len;
       +        unsigned int len, olen;
                XGCValues gcv;
                XPoint points[5];
                XRectangle r = { dc.x, dc.y, dc.w, dc.h };
       @@ -51,7 +51,7 @@ drawtext(const char *text, Bool invert)
                        return;
        
                w = 0;
       -        len = strlen(text);
       +        olen = len = strlen(text);
                if(len >= sizeof(buf))
                        len = sizeof(buf) - 1;
                memcpy(buf, text, len);
       @@ -64,6 +64,14 @@ drawtext(const char *text, Bool invert)
                /* shorten text if necessary */
                while(len && (w = textnw(buf, len)) > dc.w - h)
                        buf[--len] = 0;
       +        if(len < olen) {
       +                if(len > 3)
       +                        memcpy(buf + len - 4, "...\0", 4);
       +                else if(len > 2)
       +                        memcpy(buf + len - 3, "..\0", 3);
       +                else if(len > 1)
       +                        memcpy(buf + len - 2, ".\0", 2);
       +        }
        
                if(w > dc.w)
                        return; /* too long */