[BACK]Return to utf8.c CVS log [TXT][DIR] Up to [local] / src / usr.bin / tmux

Diff for /src/usr.bin/tmux/utf8.c between version 1.8 and 1.9

version 1.8, 2014/03/31 21:43:35 version 1.9, 2014/04/02 18:12:18
Line 19 
Line 19 
 #include <sys/types.h>  #include <sys/types.h>
   
 #include <string.h>  #include <string.h>
   #include <vis.h>
   
 #include "tmux.h"  #include "tmux.h"
   
Line 349 
Line 350 
                         return (item->width);                          return (item->width);
         }          }
         return (1);          return (1);
   }
   
   /*
    * Encode len characters from src into dst, which is guaranteed to have four
    * bytes available for each character from src (for \abc or UTF-8) plus space
    * for \0.
    */
   int
   utf8_strvis(char *dst, const char *src, size_t len, int flag)
   {
           struct utf8_data         utf8data;
           const char              *start, *end;
           int                      more;
           size_t                   i;
   
           start = dst;
           end = src + len;
   
           while (src < end) {
                   if (utf8_open(&utf8data, *src)) {
                           more = 1;
                           while (++src < end && more)
                                   more = utf8_append(&utf8data, *src);
                           if (!more) {
                                   /* UTF-8 character finished. */
                                   for (i = 0; i < utf8data.size; i++)
                                           *dst++ = utf8data.data[i];
                                   continue;
                           } else if (utf8data.have > 0) {
                                   /* Not a complete UTF-8 character. */
                                   src -= utf8data.have;
                           }
                   }
                   if (src < end - 1)
                           dst = vis(dst, src[0], flag, src[1]);
                   else if (src < end)
                           dst = vis(dst, src[0], flag, '\0');
                   src++;
           }
   
           *dst = '\0';
           return (dst - start);
 }  }

Legend:
Removed from v.1.8  
changed lines
  Added in v.1.9