summaryrefslogtreecommitdiffstats
path: root/paste.c
diff options
context:
space:
mode:
authorThomas Adam <thomas@xteddy.org>2015-09-14 12:42:19 +0100
committerThomas Adam <thomas@xteddy.org>2015-09-14 12:42:19 +0100
commit74b958ecbed7102a0f3f5faf5d976411726661ba (patch)
tree7b0cc592b9127fe05afc9bbbf67263489d66eb85 /paste.c
parentef35c9f7659205659d6863058b9a7262b21440a5 (diff)
parent16efa8483888e326aed2c05a01b63b45a2b118ef (diff)
Merge branch 'obsd-master'
Conflicts: Makefile
Diffstat (limited to 'paste.c')
-rw-r--r--paste.c37
1 files changed, 7 insertions, 30 deletions
diff --git a/paste.c b/paste.c
index 11357731..d4f8e99e 100644
--- a/paste.c
+++ b/paste.c
@@ -110,18 +110,6 @@ paste_get_top(const char **name)
return (pb);
}
-/* Free the most recent buffer. */
-int
-paste_free_top(void)
-{
- struct paste_buffer *pb;
-
- pb = paste_get_top(NULL);
- if (pb == NULL)
- return (-1);
- return (paste_free_name(pb->name));
-}
-
/* Get a paste buffer by name. */
struct paste_buffer *
paste_get_name(const char *name)
@@ -135,20 +123,10 @@ paste_get_name(const char *name)
return (RB_FIND(paste_name_tree, &paste_by_name, &pbfind));
}
-/* Free a paste buffer by name. */
-int
-paste_free_name(const char *name)
+/* Free a paste buffer. */
+void
+paste_free(struct paste_buffer *pb)
{
- struct paste_buffer *pb, pbfind;
-
- if (name == NULL || *name == '\0')
- return (-1);
-
- pbfind.name = (char *)name;
- pb = RB_FIND(paste_name_tree, &paste_by_name, &pbfind);
- if (pb == NULL)
- return (-1);
-
RB_REMOVE(paste_name_tree, &paste_by_name, pb);
RB_REMOVE(paste_time_tree, &paste_by_time, pb);
if (pb->automatic)
@@ -157,7 +135,6 @@ paste_free_name(const char *name)
free(pb->data);
free(pb->name);
free(pb);
- return (0);
}
/*
@@ -178,7 +155,7 @@ paste_add(char *data, size_t size)
if (paste_num_automatic < limit)
break;
if (pb->automatic)
- paste_free_name(pb->name);
+ paste_free(pb);
}
pb = xmalloc(sizeof *pb);
@@ -256,7 +233,7 @@ paste_rename(const char *oldname, const char *newname, char **cause)
int
paste_set(char *data, size_t size, const char *name, char **cause)
{
- struct paste_buffer *pb;
+ struct paste_buffer *pb, *old;
if (cause != NULL)
*cause = NULL;
@@ -287,8 +264,8 @@ paste_set(char *data, size_t size, const char *name, char **cause)
pb->automatic = 0;
pb->order = paste_next_order++;
- if (paste_get_name(name) != NULL)
- paste_free_name(name);
+ if ((old = paste_get_name(name)) != NULL)
+ paste_free(old);
RB_INSERT(paste_name_tree, &paste_by_name, pb);
RB_INSERT(paste_time_tree, &paste_by_time, pb);