diff options
author | Preston Pan <ret2pop@gmail.com> | 2024-12-27 20:05:06 -0800 |
---|---|---|
committer | Preston Pan <ret2pop@gmail.com> | 2024-12-27 20:05:06 -0800 |
commit | 63f11aaec8d21844a07fd27003a992c102a3a297 (patch) | |
tree | 6240a2c8561642d0c1d0b95148d6c868c7855a4a /server/tsv.c | |
parent | fd14f6fbf8206589d2a0ad8f0793845cb8faf1d7 (diff) |
make directory structure for client
Diffstat (limited to 'server/tsv.c')
-rw-r--r-- | server/tsv.c | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/server/tsv.c b/server/tsv.c new file mode 100644 index 0000000..9b1c2be --- /dev/null +++ b/server/tsv.c @@ -0,0 +1,32 @@ +#include <stdlib.h> +#include <stdbool.h> + +#include <tsv.h> +#include <helpers.h> +#include <better_string.h> + +tsv_t *init_tsv(char *source) { + tsv_t *tsv = safe_calloc(1, sizeof(tsv_t *)); + tsv->source = source; + tsv->i = 0; + tsv->c = tsv->source[tsv->i]; + return tsv; +} + +void tsv_move(tsv_t *tsv) { + if (tsv->c != '\0') { + tsv->i++; + tsv->c = tsv->source[tsv->i]; + } +} + +string_t *tsv_next(tsv_t *tsv) { + string_t *s = init_string(NULL); + bool escape = false; + while (tsv->c != '\t' && !escape) { + if (tsv->c == '\0') break; + string_push(s, tsv->c); + tsv_move(tsv); + } + return s; +} |