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

Diff for /src/usr.bin/tmux/cmd-source-file.c between version 1.14 and 1.15

version 1.14, 2012/11/27 16:12:29 version 1.15, 2013/03/24 09:54:10
Line 26 
Line 26 
  * Sources a configuration file.   * Sources a configuration file.
  */   */
   
 enum cmd_retval  cmd_source_file_exec(struct cmd *, struct cmd_ctx *);  enum cmd_retval cmd_source_file_exec(struct cmd *, struct cmd_q *);
   
   void            cmd_source_file_show(struct cmd_q *);
   void            cmd_source_file_done(struct cmd_q *);
   
 const struct cmd_entry cmd_source_file_entry = {  const struct cmd_entry cmd_source_file_entry = {
         "source-file", "source",          "source-file", "source",
         "", 1, 1,          "", 1, 1,
Line 39 
Line 42 
 };  };
   
 enum cmd_retval  enum cmd_retval
 cmd_source_file_exec(struct cmd *self, struct cmd_ctx *ctx)  cmd_source_file_exec(struct cmd *self, struct cmd_q *cmdq)
 {  {
         struct args             *args = self->args;          struct args     *args = self->args;
         int                      retval;          struct cmd_q    *cmdq1;
         u_int                    i;          char            *cause;
         char                    *cause;  
   
         retval = load_cfg(args->argv[0], ctx, &cfg_causes);          cmdq1 = cmdq_new(NULL);
           cmdq1->emptyfn = cmd_source_file_done;
           cmdq1->data = cmdq;
   
         /*          switch (load_cfg(args->argv[0], cmdq1, &cause)) {
          * If the context for the cmdclient came from tmux's configuration          case -1:
          * file, then return the status of this command now, regardless of the                  if (cfg_references == 0) {
          * error condition. Any errors from parsing a configuration file at                          cmdq_free(cmdq1);
          * startup will be handled for us by the server.                          cmdq_error(cmdq, "%s", cause);
          */                          free(cause);
         if (cfg_references > 0 ||                          return (CMD_RETURN_ERROR);
             (ctx->curclient == NULL && ctx->cmdclient == NULL))                  }
                 return (retval);                  ARRAY_ADD(&cfg_causes, cause);
                   /* FALLTHROUGH */
           case 0:
                   if (cfg_references == 0)
                           cmd_source_file_show(cmdq);
                   cmdq_free(cmdq1);
                   return (CMD_RETURN_NORMAL);
           }
   
         /*          cmdq->references++;
          * We were called from the command-line in which case print the errors          cfg_references++;
          * gathered here directly.  
          */          cmdq_continue(cmdq1);
           return (CMD_RETURN_WAIT);
   }
   
   void
   cmd_source_file_show(struct cmd_q *cmdq)
   {
           u_int    i;
           char    *cause;
   
         for (i = 0; i < ARRAY_LENGTH(&cfg_causes); i++) {          for (i = 0; i < ARRAY_LENGTH(&cfg_causes); i++) {
                 cause = ARRAY_ITEM(&cfg_causes, i);                  cause = ARRAY_ITEM(&cfg_causes, i);
                 ctx->print(ctx, "%s", cause);                  cmdq_print(cmdq, "%s", cause);
                 free(cause);                  free(cause);
         }          }
         ARRAY_FREE(&cfg_causes);          ARRAY_FREE(&cfg_causes);
   }
   
         return (retval);  void
   cmd_source_file_done(struct cmd_q *cmdq1)
   {
           struct cmd_q    *cmdq = cmdq1->data;
   
           cmdq_free(cmdq1);
   
           cfg_references--;
           if (cmdq_free(cmdq) || cfg_references != 0)
                   return;
   
           cmd_source_file_show(cmdq);
   
           cmdq_continue(cmdq);
 }  }

Legend:
Removed from v.1.14  
changed lines
  Added in v.1.15