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

Diff for /src/usr.bin/tmux/Attic/cmd-string.c between version 1.29 and 1.30

version 1.29, 2017/06/14 07:42:41 version 1.30, 2018/08/19 19:03:46
Line 54 
Line 54 
         (*p)--;          (*p)--;
 }  }
   
   static int
   cmd_string_unicode(wchar_t *wc, const char *s, size_t *p, char ch)
   {
           int     size = (ch == 'u') ? 4 : 8;
           u_int   tmp;
   
           if (size == 4 && sscanf(s + *p, "%4x", &tmp) != 1)
                   return (-1);
           if (size == 8 && sscanf(s + *p, "%8x", &tmp) != 1)
                   return (-1);
           *p += size;
   
           *wc = (wchar_t)tmp;
           return (0);
   }
   
 int  int
 cmd_string_split(const char *s, int *rargc, char ***rargv)  cmd_string_split(const char *s, int *rargc, char ***rargv)
 {  {
Line 191 
Line 207 
 static char *  static char *
 cmd_string_string(const char *s, size_t *p, char endch, int esc)  cmd_string_string(const char *s, size_t *p, char endch, int esc)
 {  {
         int     ch;          int                     ch;
         char   *buf, *t;          wchar_t                 wc;
         size_t  len;          struct utf8_data        ud;
           char                   *buf = NULL, *t;
           size_t                  len = 0;
   
         buf = NULL;  
         len = 0;  
   
         while ((ch = cmd_string_getc(s, p)) != endch) {          while ((ch = cmd_string_getc(s, p)) != endch) {
                 switch (ch) {                  switch (ch) {
                 case EOF:                  case EOF:
Line 220 
Line 235 
                         case 't':                          case 't':
                                 ch = '\t';                                  ch = '\t';
                                 break;                                  break;
                           case 'u':
                           case 'U':
                                   if (cmd_string_unicode(&wc, s, p, ch) != 0)
                                           goto error;
                                   if (utf8_split(wc, &ud) != UTF8_DONE)
                                           goto error;
                                   if (len >= SIZE_MAX - ud.size - 1)
                                           goto error;
                                   buf = xrealloc(buf, len + ud.size);
                                   memcpy(buf + len, ud.data, ud.size);
                                   len += ud.size;
                                   continue;
                         }                          }
                         break;                          break;
                 case '$':                  case '$':

Legend:
Removed from v.1.29  
changed lines
  Added in v.1.30