diff options
author | Carlos Martín Nieto <cmn@dwim.me> | 2013-08-08 14:39:32 +0200 |
---|---|---|
committer | Carlos Martín Nieto <cmn@dwim.me> | 2013-08-08 14:39:32 +0200 |
commit | eba7399251cfa95d9346b9b41ca78dc5d43a840d (patch) | |
tree | 60c186b774d8ee0f1130e043366a33edcb0ec5dc /src/config_file.c | |
parent | 4efa32903adf131631d283c914e0a5bf29c49e4d (diff) | |
download | libgit2-eba7399251cfa95d9346b9b41ca78dc5d43a840d.tar.gz |
config: move next() and free() into the iterator
Like we have in the references iterator, next and free belong in the
iterator itself.
Diffstat (limited to 'src/config_file.c')
-rw-r--r-- | src/config_file.c | 59 |
1 files changed, 30 insertions, 29 deletions
diff --git a/src/config_file.c b/src/config_file.c index ed79624eb..3e0c6cc0b 100644 --- a/src/config_file.c +++ b/src/config_file.c @@ -28,9 +28,9 @@ typedef struct cvar_t { } cvar_t; typedef struct git_config_file_iter { - git_config_backend_iter parent; + git_config_iterator parent; git_strmap_iter iter; - cvar_t* next; + cvar_t* next_var; } git_config_file_iter; @@ -254,32 +254,15 @@ static void backend_free(git_config_backend *_backend) git__free(backend); } -static int config_iterator_new( - git_config_backend_iter **iter, - struct git_config_backend* backend) -{ - diskfile_backend *b = (diskfile_backend *)backend; - git_config_file_iter *it = git__calloc(1, sizeof(git_config_file_iter)); - - GITERR_CHECK_ALLOC(it); - - it->parent.backend = backend; - it->iter = git_strmap_begin(b->values); - it->next = NULL; - *iter = (git_config_backend_iter *) it; - - return 0; -} - static void config_iterator_free( - git_config_backend_iter* iter) + git_config_iterator* iter) { git__free(iter); } static int config_iterator_next( git_config_entry *entry, - git_config_backend_iter *iter) + git_config_iterator *iter) { git_config_file_iter *it = (git_config_file_iter *) iter; diskfile_backend *b = (diskfile_backend *) it->parent.backend; @@ -287,22 +270,42 @@ static int config_iterator_next( cvar_t * var; const char* key; - if (it->next == NULL) { + if (it->next_var == NULL) { err = git_strmap_next(&key, (void**) &var, &(it->iter), b->values); } else { - key = it->next->entry->name; - var = it->next; + key = it->next_var->entry->name; + var = it->next_var; } if (err < 0) { - it->next = NULL; + it->next_var = NULL; return -1; } entry->name = key; entry->value = var->entry->value; entry->level = var->entry->level; - it->next = CVAR_LIST_NEXT(var); + it->next_var = CVAR_LIST_NEXT(var); + + return 0; +} + +static int config_iterator_new( + git_config_iterator **iter, + struct git_config_backend* backend) +{ + diskfile_backend *b = (diskfile_backend *)backend; + git_config_file_iter *it = git__calloc(1, sizeof(git_config_file_iter)); + + GITERR_CHECK_ALLOC(it); + + it->parent.backend = backend; + it->iter = git_strmap_begin(b->values); + it->next_var = NULL; + + it->parent.next = config_iterator_next; + it->parent.free = config_iterator_free; + *iter = (git_config_iterator *) it; return 0; } @@ -607,9 +610,7 @@ int git_config_file__ondisk(git_config_backend **out, const char *path) backend->parent.set = config_set; backend->parent.set_multivar = config_set_multivar; backend->parent.del = config_delete; - backend->parent.iterator_new = config_iterator_new; - backend->parent.iterator_free = config_iterator_free; - backend->parent.next = config_iterator_next; + backend->parent.iterator = config_iterator_new; backend->parent.refresh = config_refresh; backend->parent.free = backend_free; |