diff options
author | Thomas White <taw@bitwiz.org.uk> | 2016-04-21 22:56:10 +0200 |
---|---|---|
committer | Thomas White <taw@bitwiz.org.uk> | 2016-04-21 22:56:10 +0200 |
commit | 2c85156b2bc8b68502b47c250bd4902ff6449c95 (patch) | |
tree | f6f76f8bd687634708c4a85614dcf3bdca353c1c /src/sc_parse.c | |
parent | 0a87aa482db59a13a7f3ffe32f50d1392680d74a (diff) |
More WIP on slide adding
Diffstat (limited to 'src/sc_parse.c')
-rw-r--r-- | src/sc_parse.c | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/src/sc_parse.c b/src/sc_parse.c index edad176..c8eea6f 100644 --- a/src/sc_parse.c +++ b/src/sc_parse.c @@ -103,6 +103,7 @@ SCBlock *sc_block_append(SCBlock *bl, char *name, char *opt, char *contents, bln->next = NULL; if ( bl != NULL ) { + bln->next = bl->next; bl->next = bln; } @@ -124,6 +125,7 @@ SCBlock *sc_block_append_end(SCBlock *bl, char *name, char *opt, char *contents) if ( bln == NULL ) return NULL; while ( bl->next != NULL ) { + bln->next = bl->next; bl = bl->next; }; @@ -659,3 +661,34 @@ SCBlock *sc_block_copy(const SCBlock *bl) return first_copy; } + + +static char *s_strdup(const char *a) +{ + if ( a == NULL ) return NULL; + return strdup(a); +} + + +SCBlock *sc_block_split(SCBlock *bl, size_t pos) +{ + SCBlock *n = sc_block_new(); + + if ( bl->child != NULL ) { + fprintf(stderr, "Splitting a block with a child!\n"); + return NULL; + } + + /* Second block */ + n->name = s_strdup(bl->name); + n->options = s_strdup(bl->options); + n->contents = strdup(bl->contents+pos); + + /* Truncate the first block */ + bl->contents[pos] = '\0'; + + n->next = bl->next; + bl->next = n; + + return n; +} |