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

Diff for /src/usr.bin/tmux/cfg.c between version 1.9 and 1.10

version 1.9, 2010/02/06 17:15:33 version 1.10, 2010/02/06 23:22:27
Line 33 
Line 33 
 void printflike2 cfg_print(struct cmd_ctx *, const char *, ...);  void printflike2 cfg_print(struct cmd_ctx *, const char *, ...);
 void printflike2 cfg_error(struct cmd_ctx *, const char *, ...);  void printflike2 cfg_error(struct cmd_ctx *, const char *, ...);
   
 char     *cfg_cause;  char                   *cfg_cause;
 int       cfg_finished;  int                     cfg_finished;
 char    **cfg_causes;  struct causelist        cfg_causes = ARRAY_INITIALIZER;
 u_int     cfg_ncauses;  
   
 /* ARGSUSED */  /* ARGSUSED */
 void printflike2  void printflike2
Line 55 
Line 54 
         va_end(ap);          va_end(ap);
 }  }
   
 void printflike3  void printflike2
 cfg_add_cause(u_int *ncauses, char ***causes, const char *fmt, ...)  cfg_add_cause(struct causelist *causes, const char *fmt, ...)
 {  {
         char    *cause;          char    *cause;
         va_list  ap;          va_list  ap;
Line 65 
Line 64 
         xvasprintf(&cause, fmt, ap);          xvasprintf(&cause, fmt, ap);
         va_end(ap);          va_end(ap);
   
         *causes = xrealloc(*causes, *ncauses + 1, sizeof **causes);          ARRAY_ADD(causes, cause);
         (*causes)[(*ncauses)++] = cause;  
 }  }
   
 /*  /*
Line 74 
Line 72 
  * causes. Note that causes and ncauses must be initialised by the caller!   * causes. Note that causes and ncauses must be initialised by the caller!
  */   */
 int  int
 load_cfg(  load_cfg(const char *path, struct cmd_ctx *ctxin, struct causelist *causes)
     const char *path, struct cmd_ctx *ctxin, u_int *ncauses, char ***causes)  
 {  {
         FILE            *f;          FILE            *f;
         u_int            n;          u_int            n;
Line 85 
Line 82 
         struct cmd_ctx   ctx;          struct cmd_ctx   ctx;
   
         if ((f = fopen(path, "rb")) == NULL) {          if ((f = fopen(path, "rb")) == NULL) {
                 cfg_add_cause(ncauses, causes, "%s: %s", path, strerror(errno));                  cfg_add_cause(causes, "%s: %s", path, strerror(errno));
                 return (-1);                  return (-1);
         }          }
         n = 0;          n = 0;
Line 105 
Line 102 
                 if (cmd_string_parse(buf, &cmdlist, &cause) != 0) {                  if (cmd_string_parse(buf, &cmdlist, &cause) != 0) {
                         if (cause == NULL)                          if (cause == NULL)
                                 continue;                                  continue;
                         cfg_add_cause(                          cfg_add_cause(causes, "%s: %u: %s", path, n, cause);
                             ncauses, causes, "%s: %u: %s", path, n, cause);  
                         xfree(cause);                          xfree(cause);
                         continue;                          continue;
                 }                  }
Line 132 
Line 128 
                 cmd_list_exec(cmdlist, &ctx);                  cmd_list_exec(cmdlist, &ctx);
                 cmd_list_free(cmdlist);                  cmd_list_free(cmdlist);
                 if (cfg_cause != NULL) {                  if (cfg_cause != NULL) {
                         cfg_add_cause(                          cfg_add_cause(causes, "%s: %d: %s", path, n, cfg_cause);
                             ncauses, causes, "%s: %d: %s", path, n, cfg_cause);  
                         xfree(cfg_cause);                          xfree(cfg_cause);
                         continue;                          continue;
                 }                  }
Line 142 
Line 137 
                 xfree(line);                  xfree(line);
         fclose(f);          fclose(f);
   
         if (*ncauses != 0)          if (ARRAY_LENGTH(causes) != 0)
                 return (-1);                  return (-1);
         return (0);          return (0);
 }  }

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