diff options
author | Russell Belfer <rb@github.com> | 2014-03-11 16:41:11 -0700 |
---|---|---|
committer | Russell Belfer <rb@github.com> | 2014-03-11 16:41:11 -0700 |
commit | 680f306d361609a818e8d9ebb382286be084263c (patch) | |
tree | 35095a63ca4686f8213e9793b5071ff1dd928bb6 /src/warning.c | |
parent | 676a34a33d9ef18163c3a33bac60083de471144f (diff) | |
download | libgit2-rb/warnings-for-commit-headers.tar.gz |
Warnings that default to being errorsrb/warnings-for-commit-headers
This is a try at extending the warning API to include warnings
that would be errors unless the user callback decides to demote
them to warnings. This allows for relaxed parsing logic that will
default to strict behavior but can continue if possible.
Diffstat (limited to 'src/warning.c')
-rw-r--r-- | src/warning.c | 16 |
1 files changed, 9 insertions, 7 deletions
diff --git a/src/warning.c b/src/warning.c index 1066c2c8d..b0bc7c03d 100644 --- a/src/warning.c +++ b/src/warning.c @@ -19,18 +19,18 @@ void git_warning_set_callback(git_warning_callback cb, void *payload) } static int git_warning__send( - git_warning *warning, const char *fmt, va_list ap) + git_warning *warning, int default_rval, const char *fmt, va_list ap) { int error = 0; git_buf buf = GIT_BUF_INIT; git_warning_callback cb = _warning_cb; if (!cb) - return 0; + return default_rval; if (!(error = git_buf_vprintf(&buf, fmt, ap))) { warning->message = git_buf_cstr(&buf); - error = cb(warning, _warning_payload); + error = cb(warning, default_rval, _warning_payload); } git_buf_free(&buf); @@ -40,6 +40,7 @@ static int git_warning__send( int git_warn( git_warning_t type, + int default_rval, const char *fmt, ...) { @@ -48,12 +49,12 @@ int git_warn( git_warning warning; if (!_warning_cb) - return 0; + return default_rval; warning.type = type; va_start(ap, fmt); - error = git_warning__send(&warning, fmt, ap); + error = git_warning__send(&warning, default_rval, fmt, ap); va_end(ap); return error; @@ -61,6 +62,7 @@ int git_warn( int git_warn_invalid_data( git_warning_t type, + int default_rval, const char *data, int datalen, const char *fmt, @@ -71,7 +73,7 @@ int git_warn_invalid_data( git_warning_invalid_data warning; if (!_warning_cb) - return 0; + return default_rval; warning.base.type = type; warning.invalid_data = git__strndup(data, datalen); @@ -79,7 +81,7 @@ int git_warn_invalid_data( warning.invalid_data_len = datalen; va_start(ap, fmt); - error = git_warning__send((git_warning *)&warning, fmt, ap); + error = git_warning__send((git_warning *)&warning, default_rval, fmt, ap); va_end(ap); git__free((char *)warning.invalid_data); |