diff options
Diffstat (limited to 'masm/strtab.c')
| -rw-r--r-- | masm/strtab.c | 54 |
1 files changed, 0 insertions, 54 deletions
diff --git a/masm/strtab.c b/masm/strtab.c deleted file mode 100644 index bd914b0..0000000 --- a/masm/strtab.c +++ /dev/null @@ -1,54 +0,0 @@ -#include <merror.h> -#include <string.h> -#include <stdlib.h> - -#include "asm.h" - -int strtab_get_str(struct elf_str_table *strtab, const char *str, size_t *res) -{ - for (size_t i = 0; i < strtab->size; i ++) { - if (strcmp(strtab->ptr + i, str) == 0) { - if (res != NULL) - *res = i; - return M_SUCCESS; - } - } - - return M_ERROR; -} - -int strtab_write_str(struct elf_str_table *strtab, const char *str, size_t *res) -{ - if (strtab_get_str(strtab, str, res) == M_SUCCESS) - return M_SUCCESS; - - size_t len = strlen(str); - char *new = realloc(strtab->ptr, strtab->size + len + 1); - if (new == NULL) - return M_ERROR; - strtab->ptr = new; - memcpy(strtab->ptr + strtab->size, str, len + 1); - - if (res != NULL) - *res = strtab->size; - - strtab->size += len + 1; - return M_SUCCESS; -} - -int strtab_init(struct elf_str_table *strtab) -{ - strtab->size = 1; - strtab->ptr = malloc(1); - if (strtab->ptr == NULL) { - PERROR("cannot alloc"); - return M_ERROR; - } - *strtab->ptr = '\0'; - return M_SUCCESS; -} - -void strtab_free(struct elf_str_table *strtab) -{ - free(strtab->ptr); -} |