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

Diff for /src/usr.bin/tmux/cmd-set-buffer.c between version 1.17 and 1.18

version 1.17, 2014/04/24 09:14:43 version 1.18, 2014/05/13 07:34:35
Line 31 
Line 31 
   
 const struct cmd_entry cmd_set_buffer_entry = {  const struct cmd_entry cmd_set_buffer_entry = {
         "set-buffer", "setb",          "set-buffer", "setb",
         "ab:", 1, 1,          "ab:n:", 0, 1,
         "[-a] " CMD_BUFFER_USAGE " data",          "[-a] " CMD_BUFFER_USAGE " [-n new-buffer-name] data",
         0,          0,
         NULL,          NULL,
         cmd_set_buffer_exec          cmd_set_buffer_exec
Line 43 
Line 43 
 {  {
         struct args             *args = self->args;          struct args             *args = self->args;
         struct paste_buffer     *pb;          struct paste_buffer     *pb;
         u_int                    limit;  
         char                    *pdata, *cause;          char                    *pdata, *cause;
           const char              *bufname;
         size_t                   psize, newsize;          size_t                   psize, newsize;
         int                      buffer;  
   
         limit = options_get_number(&global_options, "buffer-limit");          bufname = NULL;
   
           if (args_has(args, 'n')) {
                   if (args->argc > 0) {
                           cmdq_error(cmdq, "don't provide data with n flag");
                           return (CMD_RETURN_ERROR);
                   }
   
                   if (args_has(args, 'b'))
                           bufname = args_get(args, 'b');
   
                   if (bufname == NULL) {
                           pb = paste_get_top();
                           if (pb == NULL) {
                                   cmdq_error(cmdq, "no buffer");
                                   return (CMD_RETURN_ERROR);
                           }
                           bufname = pb->name;
                   }
   
                   if (paste_rename(bufname, args_get(args, 'n'), &cause) != 0) {
                           cmdq_error(cmdq, "%s", cause);
                           free(cause);
                           return (CMD_RETURN_ERROR);
                   }
   
                   return (CMD_RETURN_NORMAL);
           }
   
           if (args->argc != 1) {
                   cmdq_error(cmdq, "no data specified");
                   return (CMD_RETURN_ERROR);
           }
   
         psize = 0;          psize = 0;
         pdata = NULL;          pdata = NULL;
   
         pb = NULL;          pb = NULL;
         buffer = -1;  
   
         if ((newsize = strlen(args->argv[0])) == 0)          if ((newsize = strlen(args->argv[0])) == 0)
                 return (CMD_RETURN_NORMAL);                  return (CMD_RETURN_NORMAL);
   
         if (args_has(args, 'b')) {          if (args_has(args, 'b')) {
                 buffer = args_strtonum(args, 'b', 0, INT_MAX, &cause);                  bufname = args_get(args, 'b');
                 if (cause != NULL) {                  pb = paste_get_name(bufname);
                         cmdq_error(cmdq, "buffer %s", cause);  
                         free(cause);  
                         return (CMD_RETURN_ERROR);  
                 }  
                 pb = paste_get_index(buffer);  
                 if (pb == NULL) {  
                         cmdq_error(cmdq, "no buffer %d", buffer);  
                         return (CMD_RETURN_ERROR);  
                 }  
         } else if (args_has(args, 'a')) {          } else if (args_has(args, 'a')) {
                 pb = paste_get_top();                  pb = paste_get_top();
                 if (pb != NULL)                  if (pb != NULL)
                         buffer = 0;                          bufname = pb->name;
         }          }
   
         if (args_has(args, 'a') && pb != NULL) {          if (args_has(args, 'a') && pb != NULL) {
Line 87 
Line 108 
         memcpy(pdata + psize, args->argv[0], newsize);          memcpy(pdata + psize, args->argv[0], newsize);
         psize += newsize;          psize += newsize;
   
         if (buffer == -1)          if (paste_set(pdata, psize, bufname, &cause) != 0) {
                 paste_add(pdata, psize, limit);                  cmdq_error(cmdq, "%s", cause);
         else                  free(pdata);
                 paste_replace(buffer, pdata, psize);                  free(cause);
                   return (CMD_RETURN_ERROR);
           }
   
         return (CMD_RETURN_NORMAL);          return (CMD_RETURN_NORMAL);
 }  }

Legend:
Removed from v.1.17  
changed lines
  Added in v.1.18