The branch, master has been updated
       via  fb83914bd745996429374122f2289f2930170f71 (commit)
       via  3fa4f691e32482b2d07d16be84b6e22657f9c7dd (commit)
       via  8600fe054bd5db89f8e5758d657018f111be0610 (commit)
       via  8378be03d1dd260fda325c15fb047da8ddd12c1c (commit)
       via  51a1dbfe09f1a8ad543f818c836057c6a56e0938 (commit)
       via  8264e92b3797cda37cc6610ddc26138ba46e2832 (commit)
      from  d5de489dc4ae2e5eaa9e5dee86094afb43cc1387 (commit)

- Log -----------------------------------------------------------------
commit fb83914bd745996429374122f2289f2930170f71
Merge: d5de489 3fa4f69
Author: Thomas Adam <tho...@xteddy.org>
Commit: Thomas Adam <tho...@xteddy.org>

    Merge branch 'obsd-master'
    
    Sync from OpenBSD.

 cfg.c          |   32 +++++++++++++++++---------------
 cmd-string.c   |   53 +++++++++++++++++++++++++++--------------------------
 screen-write.c |   13 +++++++++++--
 server.c       |    2 +-
 tmux.h         |    2 +-
 5 files changed, 57 insertions(+), 45 deletions(-)



commit 3fa4f691e32482b2d07d16be84b6e22657f9c7dd
Author: Nicholas Marriott <n...@openbsd.org>
Commit: Nicholas Marriott <n...@openbsd.org>

    Handle resetting 256-colours properly when parsing #[default],
    #[fg=default] and #[bg=default] styles.
---
 screen-write.c |   13 +++++++++++--
 1 files changed, 11 insertions(+), 2 deletions(-)

diff --git a/screen-write.c b/screen-write.c
index ce9411b..ec7d741 100644
--- a/screen-write.c
+++ b/screen-write.c
@@ -324,6 +324,9 @@ screen_write_parsestyle(
                        fg = defgc->fg;
                        bg = defgc->bg;
                        attr = defgc->attr;
+                       flags &= ~(GRID_FLAG_FG256|GRID_FLAG_BG256);
+                       flags |=
+                           defgc->flags & (GRID_FLAG_FG256|GRID_FLAG_BG256);
                } else if (end > 3 && strncasecmp(tmp + 1, "g=", 2) == 0) {
                        if ((val = colour_fromstring(tmp + 3)) == -1)
                                return;
@@ -335,8 +338,11 @@ screen_write_parsestyle(
                                        } else
                                                flags &= ~GRID_FLAG_FG256;
                                        fg = val;
-                               } else
+                               } else {
                                        fg = defgc->fg;
+                                       flags &= ~GRID_FLAG_FG256;
+                                       flags |= defgc->flags & GRID_FLAG_FG256;
+                               }
                        } else if (*in == 'b' || *in == 'B') {
                                if (val != 8) {
                                        if (val & 0x100) {
@@ -345,8 +351,11 @@ screen_write_parsestyle(
                                        } else
                                                flags &= ~GRID_FLAG_BG256;
                                        bg = val;
-                               } else
+                               } else {
                                        bg = defgc->bg;
+                                       flags &= ~GRID_FLAG_BG256;
+                                       flags |= defgc->flags & GRID_FLAG_BG256;
+                               }
                        } else
                                return;
                } else if (end > 2 && strncasecmp(tmp, "no", 2) == 0) {


commit 8600fe054bd5db89f8e5758d657018f111be0610
Author: Nicholas Marriott <n...@openbsd.org>
Commit: Nicholas Marriott <n...@openbsd.org>

    Use strlcat not strncat in load_cfg and some other trivial tidying from
    Tiago Cunha.
---
 cfg.c |   28 +++++++++++++++-------------
 1 files changed, 15 insertions(+), 13 deletions(-)

diff --git a/cfg.c b/cfg.c
index b64a4d6..5b9ef76 100644
--- a/cfg.c
+++ b/cfg.c
@@ -79,7 +79,7 @@ load_cfg(const char *path, struct cmd_ctx *ctxin, struct 
causelist *causes)
        FILE            *f;
        u_int            n;
        char            *buf, *line, *cause;
-       size_t           len;
+       size_t           len, newlen;
        struct cmd_list *cmdlist;
        struct cmd_ctx   ctx;
        enum cmd_retval  retval;
@@ -88,31 +88,35 @@ load_cfg(const char *path, struct cmd_ctx *ctxin, struct 
causelist *causes)
                cfg_add_cause(causes, "%s: %s", path, strerror(errno));
                return (CMD_RETURN_ERROR);
        }
-       n = 0;
 
        cfg_references++;
 
+       n = 0;
        line = NULL;
        retval = CMD_RETURN_NORMAL;
        while ((buf = fgetln(f, &len))) {
                if (buf[len - 1] == '\n')
                        len--;
 
-               if (line != NULL)
-                       line = xrealloc(line, 1, strlen(line) + len + 1);
-               else {
-                       line = xmalloc(len + 1);
+               /* Current line is the continuation of the previous one. */
+               if (line != NULL) {
+                       newlen = strlen(line) + len + 1;
+                       line = xrealloc(line, 1, newlen);
+               } else {
+                       newlen = len + 1;
+                       line = xmalloc(newlen);
                        *line = '\0';
                }
 
-               /* Append buffer to line. strncat will terminate. */
-               strncat(line, buf, len);
+               /* Append current line to the previous. */
+               strlcat(line, buf, newlen);
                n++;
 
                /* Continuation: get next line? */
                len = strlen(line);
                if (len > 0 && line[len - 1] == '\\') {
                        line[len - 1] = '\0';
+
                        /* Ignore escaped backslash at EOL. */
                        if (len > 1 && line[len - 2] != '\\')
                                continue;
@@ -127,11 +131,10 @@ load_cfg(const char *path, struct cmd_ctx *ctxin, struct 
causelist *causes)
                        cfg_add_cause(causes, "%s: %u: %s", path, n, cause);
                        free(cause);
                        continue;
-               } else
-                       free(buf);
+               }
+               free(buf);
                if (cmdlist == NULL)
                        continue;
-               cfg_cause = NULL;
 
                if (ctxin == NULL) {
                        ctx.msgdata = NULL;
@@ -162,8 +165,7 @@ load_cfg(const char *path, struct cmd_ctx *ctxin, struct 
causelist *causes)
                }
                cmd_list_free(cmdlist);
                if (cfg_cause != NULL) {
-                       cfg_add_cause(
-                           causes, "%s: %d: %s", path, n, cfg_cause);
+                       cfg_add_cause(causes, "%s: %d: %s", path, n, cfg_cause);
                        free(cfg_cause);
                }
        }


commit 8378be03d1dd260fda325c15fb047da8ddd12c1c
Author: Nicholas Marriott <n...@openbsd.org>
Commit: Nicholas Marriott <n...@openbsd.org>

    Fix argument order in a log statement.
---
 server.c |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/server.c b/server.c
index bad2227..a3632ad 100644
--- a/server.c
+++ b/server.c
@@ -166,7 +166,7 @@ server_start(int lockfd, char *lockfile)
                load_cfg(SYSTEM_CFG, NULL, &cfg_causes);
        else if (errno != ENOENT) {
                cfg_add_cause(
-                   &cfg_causes, "%s: %s", strerror(errno), SYSTEM_CFG);
+                   &cfg_causes, "%s: %s", SYSTEM_CFG, strerror(errno));
        }
        if (cfg_file != NULL)
                load_cfg(cfg_file, NULL, &cfg_causes);


commit 51a1dbfe09f1a8ad543f818c836057c6a56e0938
Author: Nicholas Marriott <n...@openbsd.org>
Commit: Nicholas Marriott <n...@openbsd.org>

    Simplify command string parsing with a helper function from Tiago Cunha.
---
 cmd-string.c |   53 +++++++++++++++++++++++++++--------------------------
 1 files changed, 27 insertions(+), 26 deletions(-)

diff --git a/cmd-string.c b/cmd-string.c
index 93beb3c..5a27c5b 100644
--- a/cmd-string.c
+++ b/cmd-string.c
@@ -31,11 +31,12 @@
  * Parse a command from a string.
  */
 
-int    cmd_string_getc(const char *, size_t *);
-void   cmd_string_ungetc(size_t *);
-char   *cmd_string_string(const char *, size_t *, char, int);
-char   *cmd_string_variable(const char *, size_t *);
-char   *cmd_string_expand_tilde(const char *, size_t *);
+int     cmd_string_getc(const char *, size_t *);
+void    cmd_string_ungetc(size_t *);
+void    cmd_string_copy(char **, char *, size_t *);
+char   *cmd_string_string(const char *, size_t *, char, int);
+char   *cmd_string_variable(const char *, size_t *);
+char   *cmd_string_expand_tilde(const char *, size_t *);
 
 int
 cmd_string_getc(const char *s, size_t *p)
@@ -84,26 +85,17 @@ cmd_string_parse(const char *s, struct cmd_list **cmdlist, 
char **cause)
                case '\'':
                        if ((t = cmd_string_string(s, &p, '\'', 0)) == NULL)
                                goto error;
-                       buf = xrealloc(buf, 1, len + strlen(t) + 1);
-                       strlcpy(buf + len, t, strlen(t) + 1);
-                       len += strlen(t);
-                       free(t);
+                       cmd_string_copy(&buf, t, &len);
                        break;
                case '"':
                        if ((t = cmd_string_string(s, &p, '"', 1)) == NULL)
                                goto error;
-                       buf = xrealloc(buf, 1, len + strlen(t) + 1);
-                       strlcpy(buf + len, t, strlen(t) + 1);
-                       len += strlen(t);
-                       free(t);
+                       cmd_string_copy(&buf, t, &len);
                        break;
                case '$':
                        if ((t = cmd_string_variable(s, &p)) == NULL)
                                goto error;
-                       buf = xrealloc(buf, 1, len + strlen(t) + 1);
-                       strlcpy(buf + len, t, strlen(t) + 1);
-                       len += strlen(t);
-                       free(t);
+                       cmd_string_copy(&buf, t, &len);
                        break;
                case '#':
                        /* Comment: discard rest of line. */
@@ -147,12 +139,10 @@ cmd_string_parse(const char *s, struct cmd_list 
**cmdlist, char **cause)
                        goto out;
                case '~':
                        if (buf == NULL) {
-                               if ((t = cmd_string_expand_tilde(s, &p)) == 
NULL)
+                               t = cmd_string_expand_tilde(s, &p);
+                               if (t == NULL)
                                        goto error;
-                               buf = xrealloc(buf, 1, len + strlen(t) + 1);
-                               strlcpy(buf + len, t, strlen(t) + 1);
-                               len += strlen(t);
-                               free(t);
+                               cmd_string_copy(&buf, t, &len);
                                break;
                        }
                        /* FALLTHROUGH */
@@ -181,6 +171,20 @@ out:
        return (rval);
 }
 
+void
+cmd_string_copy(char **dst, char *src, size_t *len)
+{
+       size_t srclen;
+
+       srclen = strlen(src);
+
+       *dst = xrealloc(*dst, 1, *len + srclen + 1);
+       strlcpy(*dst + *len, src, srclen + 1);
+
+       *len += srclen;
+       free(src);
+}
+
 char *
 cmd_string_string(const char *s, size_t *p, char endch, int esc)
 {
@@ -220,10 +224,7 @@ cmd_string_string(const char *s, size_t *p, char endch, 
int esc)
                                break;
                        if ((t = cmd_string_variable(s, p)) == NULL)
                                goto error;
-                       buf = xrealloc(buf, 1, len + strlen(t) + 1);
-                       strlcpy(buf + len, t, strlen(t) + 1);
-                       len += strlen(t);
-                       free(t);
+                       cmd_string_copy(&buf, t, &len);
                        continue;
                }
 


commit 8264e92b3797cda37cc6610ddc26138ba46e2832
Author: Nicholas Marriott <n...@openbsd.org>
Commit: Nicholas Marriott <n...@openbsd.org>

    Fix return value of load_cfg, from Thomas Adam.
---
 cfg.c  |    4 ++--
 tmux.h |    2 +-
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/cfg.c b/cfg.c
index 3da6ea4..b64a4d6 100644
--- a/cfg.c
+++ b/cfg.c
@@ -73,7 +73,7 @@ cfg_add_cause(struct causelist *causes, const char *fmt, ...)
  * Load configuration file. Returns -1 for an error with a list of messages in
  * causes. Note that causes must be initialised by the caller!
  */
-int
+enum cmd_retval
 load_cfg(const char *path, struct cmd_ctx *ctxin, struct causelist *causes)
 {
        FILE            *f;
@@ -86,7 +86,7 @@ load_cfg(const char *path, struct cmd_ctx *ctxin, struct 
causelist *causes)
 
        if ((f = fopen(path, "rb")) == NULL) {
                cfg_add_cause(causes, "%s: %s", path, strerror(errno));
-               return (-1);
+               return (CMD_RETURN_ERROR);
        }
        n = 0;
 
diff --git a/tmux.h b/tmux.h
index 981d4f2..429f2d7 100644
--- a/tmux.h
+++ b/tmux.h
@@ -1520,7 +1520,7 @@ extern int       cfg_finished;
 extern int       cfg_references;
 extern struct causelist cfg_causes;
 void printflike2 cfg_add_cause(struct causelist *, const char *, ...);
-int             load_cfg(const char *, struct cmd_ctx *, struct causelist *);
+enum cmd_retval         load_cfg(const char *, struct cmd_ctx *, struct 
causelist *);
 void            show_cfg_causes(struct session *);
 
 /* format.c */


-----------------------------------------------------------------------

Summary of changes:
 cfg.c          |   32 +++++++++++++++++---------------
 cmd-string.c   |   53 +++++++++++++++++++++++++++--------------------------
 screen-write.c |   13 +++++++++++--
 server.c       |    2 +-
 tmux.h         |    2 +-
 5 files changed, 57 insertions(+), 45 deletions(-)


hooks/post-receive
-- 
tmux

------------------------------------------------------------------------------
LogMeIn Rescue: Anywhere, Anytime Remote support for IT. Free Trial
Remotely access PCs and mobile devices and provide instant support
Improve your efficiency, and focus on delivering more value-add services
Discover what IT Professionals Know. Rescue delivers
http://p.sf.net/sfu/logmein_12329d2d
_______________________________________________
tmux-cvs mailing list
tmux-cvs@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/tmux-cvs

Reply via email to