summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/piece-table.c15
-rw-r--r--src/piece-table.h3
-rw-r--r--tests/piece-table-delete.c8
-rw-r--r--tests/piece-table-insert.c2
4 files changed, 17 insertions, 11 deletions
diff --git a/src/piece-table.c b/src/piece-table.c
index 7ca95f1..85966f7 100644
--- a/src/piece-table.c
+++ b/src/piece-table.c
@@ -363,18 +363,16 @@ piece_table_delete(piece_table *pt, size_t pos, size_t len)
pt->length -= len;
}
-
piece_table *
-piece_table_create (char *orig)
+piece_table_create_from (char *orig, size_t size)
{
piece *original;
piece_table * pt = malloc (sizeof (*pt));
- size_t len = strlen(orig); /* obtain from the outside? */
- pt->length = len;
+ pt->length = size;
/* Original buffer */
text_buffer_init(&pt->orig);
- text_buffer_fill(&pt->orig, orig, len);
+ text_buffer_fill(&pt->orig, orig, size);
/* Add buffer */
text_buffer_init(&pt->add);
@@ -397,6 +395,13 @@ piece_table_create (char *orig)
return pt;
}
+piece_table *
+piece_table_create (char *orig, size_t size)
+{
+ return piece_table_create_from ("", 0);
+}
+
+
void
piece_table_destroy (piece_table *pt)
{
diff --git a/src/piece-table.h b/src/piece-table.h
index ee39958..0182aad 100644
--- a/src/piece-table.h
+++ b/src/piece-table.h
@@ -22,7 +22,8 @@
typedef struct _piece_table piece_table;
-piece_table *piece_table_create ();
+piece_table *piece_table_create (void);
+piece_table * piece_table_create_from (char *orig, size_t size);
void piece_table_destroy (piece_table * piece_table);
char piece_table_index (piece_table *pt, size_t pos);
diff --git a/tests/piece-table-delete.c b/tests/piece-table-delete.c
index 4a99b79..6d6d3af 100644
--- a/tests/piece-table-delete.c
+++ b/tests/piece-table-delete.c
@@ -5,7 +5,7 @@
int
main()
{
- piece_table *pt = piece_table_create("0123456789");
+ piece_table *pt = piece_table_create_from("0123456789", 10);
char tmp[100];
piece_table_delete(pt, 0, 10);
@@ -14,21 +14,21 @@ main()
return 1;
piece_table_destroy(pt);
- pt = piece_table_create("0123456789");
+ pt = piece_table_create_from("0123456789", 10);
piece_table_delete(pt, 0, 1);
piece_table_to_string(pt, tmp, 99);
if (strcmp(tmp, "123456789"))
return 2;
piece_table_destroy(pt);
- pt = piece_table_create("0123456789");
+ pt = piece_table_create_from("0123456789", 10);
piece_table_delete(pt, 9, 1);
piece_table_to_string(pt, tmp, 99);
if (strcmp(tmp, "012345678"))
return 3;
piece_table_destroy(pt);
- pt = piece_table_create("0123456789");
+ pt = piece_table_create_from("0123456789", 10);
piece_table_delete(pt, 7, 1);
piece_table_delete(pt, 0, 1);
piece_table_to_string(pt, tmp, 99);
diff --git a/tests/piece-table-insert.c b/tests/piece-table-insert.c
index 54ff842..c22a317 100644
--- a/tests/piece-table-insert.c
+++ b/tests/piece-table-insert.c
@@ -5,7 +5,7 @@
int
main()
{
- piece_table *pt = piece_table_create("0123456789");
+ piece_table *pt = piece_table_create_from("0123456789", 10);
char tmp[100];
piece_table_insert(pt, 10, "abcdefgh", 8);