diff options
| author | Marc André Tanner <mat@brain-dump.org> | 2016-02-25 16:50:30 +0100 |
|---|---|---|
| committer | Marc André Tanner <mat@brain-dump.org> | 2016-02-25 17:20:00 +0100 |
| commit | 301ad6d3a7a0684f4e4c14a48c6e8b8de5567ce0 (patch) | |
| tree | 860854b26b571a8d578858b61baad1515b2367ab | |
| parent | 95bae46af604f1fda07c8e7b92a278e28792c427 (diff) | |
| download | vis-301ad6d3a7a0684f4e4c14a48c6e8b8de5567ce0.tar.gz vis-301ad6d3a7a0684f4e4c14a48c6e8b8de5567ce0.tar.xz | |
vis: ignore trailing NUL byte of register content by default
This is handy when editing registers used for macros.
| -rw-r--r-- | buffer.c | 7 | ||||
| -rw-r--r-- | buffer.h | 2 | ||||
| -rw-r--r-- | register.c | 2 |
3 files changed, 10 insertions, 1 deletions
@@ -88,3 +88,10 @@ bool buffer_prepend(Buffer *buf, const void *data, size_t len) { bool buffer_prepend0(Buffer *buf, const char *data) { return buffer_prepend(buf, data, strlen(data) + (buf->len == 0)); } + +size_t buffer_length0(Buffer *buf) { + size_t len = buf->len; + if (len > 0 && buf->data[len-1] == '\0') + len--; + return len; +} @@ -38,5 +38,7 @@ bool buffer_append0(Buffer*, const char *data); bool buffer_prepend(Buffer*, const void *data, size_t len); /* prepend NUL-terminated data */ bool buffer_prepend0(Buffer*, const char *data); +/* return length of a buffer without trailing NUL byte */ +size_t buffer_length0(Buffer*); #endif @@ -30,7 +30,7 @@ void register_release(Register *reg) { const char *register_get(Vis *vis, Register *reg, size_t *len) { switch (reg->type) { case REGISTER_NORMAL: - *len = reg->buf.len; + *len = buffer_length0(®->buf); return reg->buf.data; case REGISTER_CLIPBOARD: { |
