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

Diff for /src/usr.bin/tmux/arguments.c between version 1.34 and 1.35

version 1.34, 2020/06/04 07:12:05 version 1.35, 2020/06/12 07:10:43
Line 212 
Line 212 
 char *  char *
 args_escape(const char *s)  args_escape(const char *s)
 {  {
         static const char        quoted[] = " #\"';${}";          static const char        dquoted[] = " #';${}";
           static const char        squoted[] = " \"";
         char                    *escaped, *result;          char                    *escaped, *result;
         int                      flags;          int                      flags, quotes = 0;
   
         if (*s == '\0') {          if (*s == '\0') {
                 xasprintf(&result, "''");                  xasprintf(&result, "''");
                 return (result);                  return (result);
         }          }
           if (s[strcspn(s, dquoted)] != '\0')
                   quotes = '"';
           else if (s[strcspn(s, squoted)] != '\0')
                   quotes = '\'';
   
         if (s[0] != ' ' &&          if (s[0] != ' ' &&
             (strchr(quoted, s[0]) != NULL || s[0] == '~') &&              s[1] == '\0' &&
             s[1] == '\0') {              (quotes != 0 || s[0] == '~')) {
                 xasprintf(&escaped, "\\%c", s[0]);                  xasprintf(&escaped, "\\%c", s[0]);
                 return (escaped);                  return (escaped);
         }          }
   
         if (strchr(s, ' ') != NULL && strchr(s, '\'') == NULL) {  
                 xasprintf(&escaped, "'%s'", s);  
                 return (escaped);  
         }  
   
         flags = VIS_OCTAL|VIS_CSTYLE|VIS_TAB|VIS_NL;          flags = VIS_OCTAL|VIS_CSTYLE|VIS_TAB|VIS_NL;
         if (s[strcspn(s, quoted)] != '\0')          if (quotes == '"')
                 flags |= VIS_DQ;                  flags |= VIS_DQ;
         utf8_stravis(&escaped, s, flags);          utf8_stravis(&escaped, s, flags);
   
         if (flags & VIS_DQ) {          if (quotes == '\'')
                   xasprintf(&result, "'%s'", escaped);
           else if (quotes == '"') {
                 if (*escaped == '~')                  if (*escaped == '~')
                         xasprintf(&result, "\"\\%s\"", escaped);                          xasprintf(&result, "\"\\%s\"", escaped);
                 else                  else

Legend:
Removed from v.1.34  
changed lines
  Added in v.1.35