diff options
author | Vicent Martà <tanoku@gmail.com> | 2012-05-02 19:56:38 -0700 |
---|---|---|
committer | Vicent Martà <tanoku@gmail.com> | 2012-05-02 19:56:38 -0700 |
commit | 3fbcac89c47cb66ea193f66da6d93d1c36ed0f5e (patch) | |
tree | 1774677db7e5f0e33c3ab3967d64e2c95a631a5e /src | |
parent | b02bcd97f80beabc96cd1f861bfc3b5f7532ef8b (diff) | |
download | libgit2-3fbcac89c47cb66ea193f66da6d93d1c36ed0f5e.tar.gz |
Remove old and unused error codes
Diffstat (limited to 'src')
-rw-r--r-- | src/config.c | 5 | ||||
-rw-r--r-- | src/crlf.c | 3 | ||||
-rw-r--r-- | src/delta-apply.c | 5 | ||||
-rw-r--r-- | src/diff.c | 7 | ||||
-rw-r--r-- | src/errors.c | 106 | ||||
-rw-r--r-- | src/fetch.c | 10 | ||||
-rw-r--r-- | src/filter.c | 8 | ||||
-rw-r--r-- | src/object.c | 3 | ||||
-rw-r--r-- | src/refspec.c | 8 | ||||
-rw-r--r-- | src/revwalk.c | 2 | ||||
-rw-r--r-- | src/tag.c | 2 | ||||
-rw-r--r-- | src/transport.c | 6 | ||||
-rw-r--r-- | src/transports/git.c | 2 | ||||
-rw-r--r-- | src/transports/http.c | 6 | ||||
-rw-r--r-- | src/tree-cache.c | 77 | ||||
-rw-r--r-- | src/tree.c | 2 | ||||
-rw-r--r-- | src/util.c | 16 | ||||
-rw-r--r-- | src/util.h | 2 |
18 files changed, 62 insertions, 208 deletions
diff --git a/src/config.c b/src/config.c index 4c971924c..0ab0cd424 100644 --- a/src/config.c +++ b/src/config.c @@ -59,8 +59,7 @@ int git_config_new(git_config **out) git_config *cfg; cfg = git__malloc(sizeof(git_config)); - if (cfg == NULL) - return GIT_ENOMEM; + GITERR_CHECK_ALLOC(cfg); memset(cfg, 0x0, sizeof(git_config)); @@ -221,7 +220,7 @@ int git_config_parse_bool(int *out, const char *value) return 0; } - return GIT_EINVALIDTYPE; + return -1; } static int parse_int64(int64_t *out, const char *value) diff --git a/src/crlf.c b/src/crlf.c index 8fe588a35..b495d2de0 100644 --- a/src/crlf.c +++ b/src/crlf.c @@ -216,8 +216,7 @@ int git_filter_add__crlf_to_odb(git_vector *filters, git_repository *repo, const /* If we're good, we create a new filter object and push it * into the filters array */ filter = git__malloc(sizeof(struct crlf_filter)); - if (filter == NULL) - return GIT_ENOMEM; + GITERR_CHECK_ALLOC(filter); filter->f.apply = &crlf_apply_to_odb; filter->f.do_free = NULL; diff --git a/src/delta-apply.c b/src/delta-apply.c index c8c662fa8..d3be084e0 100644 --- a/src/delta-apply.c +++ b/src/delta-apply.c @@ -61,8 +61,9 @@ int git__delta_apply( return -1; } - if ((res_dp = git__malloc(res_sz + 1)) == NULL) - return GIT_ENOMEM; + res_dp = git__malloc(res_sz + 1); + GITERR_CHECK_ALLOC(res_dp); + res_dp[res_sz] = '\0'; out->data = res_dp; out->len = res_sz; diff --git a/src/diff.c b/src/diff.c index b21dfaf90..b845f9e8c 100644 --- a/src/diff.c +++ b/src/diff.c @@ -35,10 +35,10 @@ static bool diff_path_matches_pathspec(git_diff_list *diff, const char *path) return true; git_vector_foreach(&diff->pathspec, i, match) { - int result = git__fnmatch(match->pattern, path, 0); + int result = p_fnmatch(match->pattern, path, 0); /* if we didn't match, look for exact dirname prefix match */ - if (result == GIT_ENOMATCH && + if (result == FNM_NOMATCH && (match->flags & GIT_ATTR_FNMATCH_HASWILD) == 0 && strncmp(path, match->pattern, match->length) == 0 && path[match->length] == '/') @@ -46,9 +46,6 @@ static bool diff_path_matches_pathspec(git_diff_list *diff, const char *path) if (result == 0) return (match->flags & GIT_ATTR_FNMATCH_NEGATIVE) ? false : true; - - if (result != GIT_ENOMATCH) - giterr_clear(); } return false; diff --git a/src/errors.c b/src/errors.c index 7a6bbd654..f708519ab 100644 --- a/src/errors.c +++ b/src/errors.c @@ -9,105 +9,6 @@ #include "posix.h" #include <stdarg.h> -static struct { - int num; - const char *str; -} error_codes[] = { - {GIT_ERROR, "Unspecified error"}, - {GIT_ENOTOID, "Input was not a properly formatted Git object id."}, - {GIT_ENOTFOUND, "Object does not exist in the scope searched."}, - {GIT_ENOMEM, "Not enough space available."}, - {GIT_EOSERR, "Consult the OS error information."}, - {GIT_EOBJTYPE, "The specified object is of invalid type"}, - {GIT_EOBJCORRUPTED, "The specified object has its data corrupted"}, - {GIT_ENOTAREPO, "The specified repository is invalid"}, - {GIT_EINVALIDTYPE, "The object or config variable type is invalid or doesn't match"}, - {GIT_EMISSINGOBJDATA, "The object cannot be written that because it's missing internal data"}, - {GIT_EPACKCORRUPTED, "The packfile for the ODB is corrupted"}, - {GIT_EFLOCKFAIL, "Failed to adquire or release a file lock"}, - {GIT_EZLIB, "The Z library failed to inflate/deflate an object's data"}, - {GIT_EBUSY, "The queried object is currently busy"}, - {GIT_EINVALIDPATH, "The path is invalid"}, - {GIT_EBAREINDEX, "The index file is not backed up by an existing repository"}, - {GIT_EINVALIDREFNAME, "The name of the reference is not valid"}, - {GIT_EREFCORRUPTED, "The specified reference has its data corrupted"}, - {GIT_ETOONESTEDSYMREF, "The specified symbolic reference is too deeply nested"}, - {GIT_EPACKEDREFSCORRUPTED, "The pack-refs file is either corrupted of its format is not currently supported"}, - {GIT_EINVALIDPATH, "The path is invalid" }, - {GIT_EREVWALKOVER, "The revision walker is empty; there are no more commits left to iterate"}, - {GIT_EINVALIDREFSTATE, "The state of the reference is not valid"}, - {GIT_ENOTIMPLEMENTED, "This feature has not been implemented yet"}, - {GIT_EEXISTS, "A reference with this name already exists"}, - {GIT_EOVERFLOW, "The given integer literal is too large to be parsed"}, - {GIT_ENOTNUM, "The given literal is not a valid number"}, - {GIT_EAMBIGUOUS, "The given oid prefix is ambiguous"}, -}; - -const char *git_strerror(int num) -{ - size_t i; - - if (num == GIT_EOSERR) - return strerror(errno); - for (i = 0; i < ARRAY_SIZE(error_codes); i++) - if (num == error_codes[i].num) - return error_codes[i].str; - - return "Unknown error"; -} - -#define ERROR_MAX_LEN 1024 - -void git___rethrow(const char *msg, ...) -{ - char new_error[ERROR_MAX_LEN]; - char *last_error; - char *old_error = NULL; - - va_list va; - - last_error = GIT_GLOBAL->error.last; - - va_start(va, msg); - vsnprintf(new_error, ERROR_MAX_LEN, msg, va); - va_end(va); - - old_error = git__strdup(last_error); - - snprintf(last_error, ERROR_MAX_LEN, "%s \n - %s", new_error, old_error); - - git__free(old_error); -} - -void git___throw(const char *msg, ...) -{ - va_list va; - - va_start(va, msg); - vsnprintf(GIT_GLOBAL->error.last, ERROR_MAX_LEN, msg, va); - va_end(va); -} - -const char *git_lasterror(void) -{ - char *last_error = GIT_GLOBAL->error.last; - - if (!last_error[0]) { - const git_error *err = git_error_last(); - if (err != NULL) - return err->message; - return NULL; - } - - return last_error; -} - -void git_clearerror(void) -{ - char *last_error = GIT_GLOBAL->error.last; - last_error[0] = '\0'; -} - /******************************************** * New error handling ********************************************/ @@ -198,13 +99,8 @@ void giterr_clear(void) GIT_GLOBAL->last_error = NULL; } -const git_error *git_error_last(void) +const git_error *giterr_last(void) { return GIT_GLOBAL->last_error; } -void git_error_clear(void) -{ - giterr_clear(); -} - diff --git a/src/fetch.c b/src/fetch.c index 6fe1b5676..1944bd005 100644 --- a/src/fetch.c +++ b/src/fetch.c @@ -29,21 +29,13 @@ struct filter_payload { static int filter_ref__cb(git_remote_head *head, void *payload) { struct filter_payload *p = payload; - int ret; if (!p->found_head && strcmp(head->name, GIT_HEAD_FILE) == 0) { p->found_head = 1; } else { /* If it doesn't match the refpec, we don't want it */ - ret = git_refspec_src_match(p->spec, head->name); - - if (ret == GIT_ENOMATCH) + if (!git_refspec_src_matches(p->spec, head->name)) return 0; - - if (ret < GIT_SUCCESS) { - giterr_set(GITERR_NET, "Error matching remote ref name"); - return -1; - } } /* If we have the object, mark it so we don't ask for it */ diff --git a/src/filter.c b/src/filter.c index d6c2e1c97..73fe83e61 100644 --- a/src/filter.c +++ b/src/filter.c @@ -92,11 +92,11 @@ int git_filters_load(git_vector *filters, git_repository *repo, const char *path if (mode == GIT_FILTER_TO_ODB) { /* Load the CRLF cleanup filter when writing to the ODB */ error = git_filter_add__crlf_to_odb(filters, repo, path); - if (error < GIT_SUCCESS) + if (error < 0) return error; } else { giterr_set(GITERR_INVALID, "Worktree filters are not implemented yet"); - return GIT_ENOTIMPLEMENTED; + return -1; } return (int)filters->length; @@ -135,7 +135,7 @@ int git_filters_apply(git_buf *dest, git_buf *source, git_vector *filters) /* Pre-grow the destination buffer to more or less the size * we expect it to have */ if (git_buf_grow(dest, git_buf_len(source)) < 0) - return GIT_ENOMEM; + return -1; for (i = 0; i < filters->length; ++i) { git_filter *filter = git_vector_get(filters, i); @@ -153,7 +153,7 @@ int git_filters_apply(git_buf *dest, git_buf *source, git_vector *filters) src = dst; if (git_buf_oom(dbuffer[dst])) - return GIT_ENOMEM; + return -1; } /* Ensure that the output ends up in dbuffer[1] (i.e. the dest) */ diff --git a/src/object.c b/src/object.c index 979fb40ca..8e8eac4e3 100644 --- a/src/object.c +++ b/src/object.c @@ -62,8 +62,7 @@ static int create_object(git_object **object_out, git_otype type) case GIT_OBJ_BLOB: case GIT_OBJ_TREE: object = git__malloc(git_object__size(type)); - if (object == NULL) - return GIT_ENOMEM; + GITERR_CHECK_ALLOC(object); memset(object, 0x0, git_object__size(type)); break; diff --git a/src/refspec.c b/src/refspec.c index bec770a30..ee4d3a158 100644 --- a/src/refspec.c +++ b/src/refspec.c @@ -10,6 +10,7 @@ #include "common.h" #include "refspec.h" #include "util.h" +#include "posix.h" int git_refspec_parse(git_refspec *refspec, const char *str) { @@ -52,9 +53,12 @@ const char *git_refspec_dst(const git_refspec *refspec) return refspec == NULL ? NULL : refspec->dst; } -int git_refspec_src_match(const git_refspec *refspec, const char *refname) +int git_refspec_src_matches(const git_refspec *refspec, const char *refname) { - return (refspec == NULL || refspec->src == NULL) ? GIT_ENOMATCH : git__fnmatch(refspec->src, refname, 0); + if (refspec == NULL || refspec->src == NULL) + return false; + + return (p_fnmatch(refspec->src, refname, 0) == 0); } int git_refspec_transform(char *out, size_t outlen, const git_refspec *spec, const char *name) diff --git a/src/revwalk.c b/src/revwalk.c index c62bb4e0e..1b539787f 100644 --- a/src/revwalk.c +++ b/src/revwalk.c @@ -486,7 +486,7 @@ static int push_glob_cb(const char *refname, void *data_) { struct push_cb_data *data = (struct push_cb_data *)data_; - if (!git__fnmatch(data->glob, refname, 0)) + if (!p_fnmatch(data->glob, refname, 0)) return push_ref(data->walk, refname, data->hide); return 0; @@ -420,7 +420,7 @@ int git_tag_list_match(git_strarray *tag_names, const char *pattern, git_reposit assert(tag_names && repo && pattern); if (git_vector_init(&taglist, 8, NULL) < GIT_SUCCESS) - return GIT_ENOMEM; + return -1; filter.taglist = &taglist; filter.pattern = pattern; diff --git a/src/transport.c b/src/transport.c index 0c88e44d3..bc4248d5b 100644 --- a/src/transport.c +++ b/src/transport.c @@ -66,8 +66,10 @@ int git_transport_new(git_transport **out, const char *url) fn = transport_find_fn(url); - if (fn == NULL) - return git__throw(GIT_EINVALIDARGS, "Unsupported URL or non-existent path"); + if (fn == NULL) { + giterr_set(GITERR_NET, "Unsupported URL protocol"); + return -1; + } error = fn(&transport); if (error < GIT_SUCCESS) diff --git a/src/transports/git.c b/src/transports/git.c index 31bc21c96..c51b1670f 100644 --- a/src/transports/git.c +++ b/src/transports/git.c @@ -72,7 +72,7 @@ static int gen_proto(git_buf *request, const char *cmd, const char *url) git_buf_putc(request, '\0'); if (git_buf_oom(request)) - return GIT_ENOMEM; + return -1; return 0; } diff --git a/src/transports/http.c b/src/transports/http.c index 3690f3ded..1b2b5eb89 100644 --- a/src/transports/http.c +++ b/src/transports/http.c @@ -78,7 +78,7 @@ static int gen_request(git_buf *buf, const char *url, const char *host, const ch git_buf_puts(buf, "\r\n"); if (git_buf_oom(buf)) - return GIT_ENOMEM; + return -1; return 0; } @@ -174,13 +174,13 @@ static int on_headers_complete(http_parser *parser) if (t->content_type == NULL) { t->content_type = git__strdup(git_buf_cstr(buf)); if (t->content_type == NULL) - return t->error = GIT_ENOMEM; + return t->error = -1; } git_buf_clear(buf); git_buf_printf(buf, "application/x-git-%s-advertisement", t->service); if (git_buf_oom(buf)) - return t->error = GIT_ENOMEM; + return t->error = -1; if (strcmp(t->content_type, git_buf_cstr(buf))) return t->error = -1; diff --git a/src/tree-cache.c b/src/tree-cache.c index 9baa06a99..ebc2c6807 100644 --- a/src/tree-cache.c +++ b/src/tree-cache.c @@ -82,24 +82,19 @@ static int read_tree_internal(git_tree_cache **out, git_tree_cache *tree = NULL; const char *name_start, *buffer; int count; - int error = GIT_SUCCESS; size_t name_len; buffer = name_start = *buffer_in; - if ((buffer = memchr(buffer, '\0', buffer_end - buffer)) == NULL) { - error = GIT_EOBJCORRUPTED; - goto cleanup; - } + if ((buffer = memchr(buffer, '\0', buffer_end - buffer)) == NULL) + goto corrupted; - if (++buffer >= buffer_end) { - error = GIT_EOBJCORRUPTED; - goto cleanup; - } + if (++buffer >= buffer_end) + goto corrupted; name_len = strlen(name_start); - if ((tree = git__malloc(sizeof(git_tree_cache) + name_len + 1)) == NULL) - return GIT_ENOMEM; + tree = git__malloc(sizeof(git_tree_cache) + name_len + 1); + GITERR_CHECK_ALLOC(tree); memset(tree, 0x0, sizeof(git_tree_cache)); tree->parent = parent; @@ -109,39 +104,28 @@ static int read_tree_internal(git_tree_cache **out, tree->name[name_len] = '\0'; /* Blank-terminated ASCII decimal number of entries in this tree */ - if (git__strtol32(&count, buffer, &buffer, 10) < GIT_SUCCESS || count < -1) { - error = GIT_EOBJCORRUPTED; - goto cleanup; - } + if (git__strtol32(&count, buffer, &buffer, 10) < 0 || count < -1) + goto corrupted; tree->entries = count; - if (*buffer != ' ' || ++buffer >= buffer_end) { - error = GIT_EOBJCORRUPTED; - goto cleanup; - } + if (*buffer != ' ' || ++buffer >= buffer_end) + goto corrupted; /* Number of children of the tree, newline-terminated */ - if (git__strtol32(&count, buffer, &buffer, 10) < GIT_SUCCESS || - count < 0) { - error = GIT_EOBJCORRUPTED; - goto cleanup; - } + if (git__strtol32(&count, buffer, &buffer, 10) < 0 || count < 0) + goto corrupted; tree->children_count = count; - if (*buffer != '\n' || ++buffer > buffer_end) { - error = GIT_EOBJCORRUPTED; - goto cleanup; - } + if (*buffer != '\n' || ++buffer > buffer_end) + goto corrupted; /* The SHA1 is only there if it's not invalidated */ if (tree->entries >= 0) { /* 160-bit SHA-1 for this tree and it's children */ - if (buffer + GIT_OID_RAWSZ > buffer_end) { - error = GIT_EOBJCORRUPTED; - goto cleanup; - } + if (buffer + GIT_OID_RAWSZ > buffer_end) + goto corrupted; git_oid_fromraw(&tree->oid, (const unsigned char *)buffer); buffer += GIT_OID_RAWSZ; @@ -150,40 +134,39 @@ static int read_tree_internal(git_tree_cache **out, /* Parse children: */ if (tree->children_count > 0) { unsigned int i; - int err; tree->children = git__malloc(tree->children_count * sizeof(git_tree_cache *)); - if (tree->children == NULL) - goto cleanup; + GITERR_CHECK_ALLOC(tree->children); for (i = 0; i < tree->children_count; ++i) { - err = read_tree_internal(&tree->children[i], &buffer, buffer_end, tree); - - if (err < GIT_SUCCESS) - goto cleanup; + if (read_tree_internal(&tree->children[i], &buffer, buffer_end, tree) < 0) + return -1; } } *buffer_in = buffer; *out = tree; - return GIT_SUCCESS; + return 0; - cleanup: + corrupted: git_tree_cache_free(tree); - return error; + giterr_set(GITERR_INDEX, "Corruped TREE extension in index"); + return -1; } int git_tree_cache_read(git_tree_cache **tree, const char *buffer, size_t buffer_size) { const char *buffer_end = buffer + buffer_size; - int error; - error = read_tree_internal(tree, &buffer, buffer_end, NULL); + if (read_tree_internal(tree, &buffer, buffer_end, NULL) < 0) + return -1; - if (buffer < buffer_end) - return GIT_EOBJCORRUPTED; + if (buffer < buffer_end) { + giterr_set(GITERR_INDEX, "Corruped TREE extension in index (unexpected trailing data)"); + return -1; + } - return error; + return 0; } void git_tree_cache_free(git_tree_cache *tree) diff --git a/src/tree.c b/src/tree.c index 09ed1a3e8..7e2bfc102 100644 --- a/src/tree.c +++ b/src/tree.c @@ -741,7 +741,7 @@ int git_tree_walk(git_tree *tree, git_treewalk_cb callback, int mode, void *payl case GIT_TREEWALK_PRE: tree_error("Preorder tree walking is still not implemented"); - return GIT_ENOTIMPLEMENTED; + return -1; default: giterr_set(GITERR_INVALID, "Invalid walking mode for tree walk"); diff --git a/src/util.c b/src/util.c index 2cf7b158b..20a627ea8 100644 --- a/src/util.c +++ b/src/util.c @@ -60,22 +60,6 @@ int git_strarray_copy(git_strarray *tgt, const git_strarray *src) return 0; } -int git__fnmatch(const char *pattern, const char *name, int flags) -{ - int ret; - - ret = p_fnmatch(pattern, name, flags); - switch (ret) { - case 0: - return 0; - case FNM_NOMATCH: - return GIT_ENOMATCH; - default: - giterr_set(GITERR_OS, "Error trying to match path"); - return -1; - } -} - int git__strtol64(int64_t *result, const char *nptr, const char **endptr, int base) { const char *p; diff --git a/src/util.h b/src/util.h index 1fee9a70c..a76800141 100644 --- a/src/util.h +++ b/src/util.h @@ -105,8 +105,6 @@ GIT_INLINE(const char *) git__next_line(const char *s) return s; } -extern int git__fnmatch(const char *pattern, const char *name, int flags); - extern void git__tsort(void **dst, size_t size, int (*cmp)(const void *, const void *)); /** |