diff options
Diffstat (limited to 'src/utils.c')
| -rw-r--r-- | src/utils.c | 25 |
1 files changed, 20 insertions, 5 deletions
diff --git a/src/utils.c b/src/utils.c index 1f08445..1110194 100644 --- a/src/utils.c +++ b/src/utils.c @@ -23,22 +23,24 @@ char* inner(String* str) { } -void set_map_pair(KeyValMap* map, char* key, char* val) { -for (int i = 0; i < map->count; i++) { +void set_map_pair(KeyValMap* map, StrPair pair) { + for (int i = 0; i < map->count; i++) { char* key_i = get_from_KeyValMap(map, i)->key; if (key_i == NULL) continue; - if (strcmp(key_i, key) == 0) { + if (strcmp(key_i, pair.key) == 0) { // TODO: maybe copy instead strcpy( map->blocks[i / map->block_size][i % map->block_size].val, - val + pair.val ); - break; + return; } } + push_to_KeyValMap(map, pair); } MaybeStr get_map_value(KeyValMap* map, char* key) { + printf("%d\n", map->count); for (int i = 0; i < map->count; i++) { char* key_i = get_from_KeyValMap(map, i)->key; if (key_i == NULL) continue; @@ -69,3 +71,16 @@ char* get_var(char* varname, ShellState* shstate) { if (maybe_varval.some == true) return maybe_varval.value; return getenv(varname); } + + +bool is_identifier(char* str) { + if (str == NULL) return false; + if (!isalpha(str[0]) && str[0] != '_') return false; +for (int i = 1; str[i] != '\0'; i++) { + if (!isalnum(str[i]) && str[i] != '_') return false; + } + return true; +} + + + |
