diff options
author | Nicholas Marriott <nicm@cvs.openbsd.org> | 2009-11-26 22:28:25 +0000 |
---|---|---|
committer | Nicholas Marriott <nicm@cvs.openbsd.org> | 2009-11-26 22:28:25 +0000 |
commit | d5a8d58642d15648eee6ce4426aca635f5bf272e (patch) | |
tree | d6b7de806e0e025d7de1ebe74f5fddfe6b44639e /usr.bin/tmux/paste.c | |
parent | 4c4cd4aadaca53d9e57c923f2de68758da494c24 (diff) |
Tidy up various bits of the paste code, make the data buffer char * and add
comments.
Diffstat (limited to 'usr.bin/tmux/paste.c')
-rw-r--r-- | usr.bin/tmux/paste.c | 30 |
1 files changed, 26 insertions, 4 deletions
diff --git a/usr.bin/tmux/paste.c b/usr.bin/tmux/paste.c index d7da3e13802..8815f3e3865 100644 --- a/usr.bin/tmux/paste.c +++ b/usr.bin/tmux/paste.c @@ -1,4 +1,4 @@ -/* $OpenBSD: paste.c,v 1.6 2009/11/03 17:17:24 nicm Exp $ */ +/* $OpenBSD: paste.c,v 1.7 2009/11/26 22:28:24 nicm Exp $ */ /* * Copyright (c) 2007 Nicholas Marriott <nicm@users.sourceforge.net> @@ -23,6 +23,11 @@ #include "tmux.h" +/* + * Stack of paste buffers. Note that paste buffer data is not necessarily a C + * string! + */ + void paste_init_stack(struct paste_stack *ps) { @@ -36,6 +41,7 @@ paste_free_stack(struct paste_stack *ps) ; } +/* Return each item of the stack in turn. */ struct paste_buffer * paste_walk_stack(struct paste_stack *ps, uint *idx) { @@ -46,6 +52,7 @@ paste_walk_stack(struct paste_stack *ps, uint *idx) return (pb); } +/* Get the top item on the stack. */ struct paste_buffer * paste_get_top(struct paste_stack *ps) { @@ -54,6 +61,7 @@ paste_get_top(struct paste_stack *ps) return (ARRAY_FIRST(ps)); } +/* Get an item by its index. */ struct paste_buffer * paste_get_index(struct paste_stack *ps, u_int idx) { @@ -62,6 +70,7 @@ paste_get_index(struct paste_stack *ps, u_int idx) return (ARRAY_ITEM(ps, idx)); } +/* Free the top item on the stack. */ int paste_free_top(struct paste_stack *ps) { @@ -79,6 +88,7 @@ paste_free_top(struct paste_stack *ps) return (0); } +/* Free an item by index. */ int paste_free_index(struct paste_stack *ps, u_int idx) { @@ -96,12 +106,16 @@ paste_free_index(struct paste_stack *ps, u_int idx) return (0); } +/* + * Add an item onto the top of the stack, freeing the bottom if at limit. Note + * that the caller is responsible for allocating data. + */ void -paste_add(struct paste_stack *ps, u_char *data, size_t size, u_int limit) +paste_add(struct paste_stack *ps, char *data, size_t size, u_int limit) { struct paste_buffer *pb; - if (*data == '\0') + if (size == 0) return; while (ARRAY_LENGTH(ps) >= limit) { @@ -118,11 +132,19 @@ paste_add(struct paste_stack *ps, u_char *data, size_t size, u_int limit) pb->size = size; } + +/* + * Replace an item on the stack. Note that the caller is responsible for + * allocating data. + */ int -paste_replace(struct paste_stack *ps, u_int idx, u_char *data, size_t size) +paste_replace(struct paste_stack *ps, u_int idx, char *data, size_t size) { struct paste_buffer *pb; + if (size == 0) + return (0); + if (idx >= ARRAY_LENGTH(ps)) return (-1); |