Tidy up various bits of the paste code, make the data buffer char * and add

comments.
This commit is contained in:
Nicholas Marriott
2009-11-26 22:28:24 +00:00
parent ba5404d93e
commit 8cb410c63c
7 changed files with 55 additions and 24 deletions

28
paste.c
View File

@ -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);