cLib: Enable all warnings and treat them as errors

They are useful!

missing-field-initializiers has been disabled as libgit2's standard way
of initializing the options gives this error.
This commit is contained in:
Vishesh Handa
2019-05-27 10:57:55 +02:00
parent d6557fd988
commit ecd4993b14
4 changed files with 44 additions and 4 deletions

View File

@ -45,6 +45,8 @@ add_library(native-lib
git.c git.c
) )
target_compile_options(native-lib PRIVATE -Werror -Wall -Wextra -Wno-missing-field-initializers)
# The order of these libraries is super dooper important # The order of these libraries is super dooper important
# Otherwise you'll get linker errors # Otherwise you'll get linker errors
target_link_libraries(native-lib git2-lib ssh2-lib openssl-lib crypto-lib android log) target_link_libraries(native-lib git2-lib ssh2-lib openssl-lib crypto-lib android log)

View File

@ -8,6 +8,8 @@
#include "gitjournal.h" #include "gitjournal.h"
#define UNUSED(x) (void)(x)
void gj_log(const char *message) { void gj_log(const char *message) {
__android_log_print(ANDROID_LOG_ERROR, "GitJournalLib", "%s", message); __android_log_print(ANDROID_LOG_ERROR, "GitJournalLib", "%s", message);
} }
@ -31,6 +33,10 @@ JNIEXPORT void JNICALL
Java_io_gitjournal_gitjournal_Git_setupLib( Java_io_gitjournal_gitjournal_Git_setupLib(
JNIEnv *env, JNIEnv *env,
jobject this_obj) { jobject this_obj) {
UNUSED(env);
UNUSED(this_obj);
gj_init(); gj_init();
} }
@ -39,6 +45,8 @@ Java_io_gitjournal_gitjournal_Git_init(
JNIEnv *env, JNIEnv *env,
jobject this_obj, jobject this_obj,
jstring jni_git_base_path) { jstring jni_git_base_path) {
UNUSED(this_obj);
const char *git_base_path = (*env)->GetStringUTFChars(env, jni_git_base_path, 0); const char *git_base_path = (*env)->GetStringUTFChars(env, jni_git_base_path, 0);
int err = gj_git_init(git_base_path); int err = gj_git_init(git_base_path);
@ -56,6 +64,7 @@ Java_io_gitjournal_gitjournal_Git_clone(
jobject this_obj, jobject this_obj,
jstring jni_clone_url, jstring jni_clone_url,
jstring jni_git_base_path) { jstring jni_git_base_path) {
UNUSED(this_obj);
const char *clone_url = (*env)->GetStringUTFChars(env, jni_clone_url, 0); const char *clone_url = (*env)->GetStringUTFChars(env, jni_clone_url, 0);
const char *git_base_path = (*env)->GetStringUTFChars(env, jni_git_base_path, 0); const char *git_base_path = (*env)->GetStringUTFChars(env, jni_git_base_path, 0);
@ -76,6 +85,7 @@ Java_io_gitjournal_gitjournal_Git_pull(
jstring jni_git_base_path, jstring jni_git_base_path,
jstring jni_author_name, jstring jni_author_name,
jstring jni_author_email) { jstring jni_author_email) {
UNUSED(this_obj);
const char *git_base_path = (*env)->GetStringUTFChars(env, jni_git_base_path, 0); const char *git_base_path = (*env)->GetStringUTFChars(env, jni_git_base_path, 0);
const char *author_name = (*env)->GetStringUTFChars(env, jni_author_name, 0); const char *author_name = (*env)->GetStringUTFChars(env, jni_author_name, 0);
const char *author_email = (*env)->GetStringUTFChars(env, jni_author_email, 0); const char *author_email = (*env)->GetStringUTFChars(env, jni_author_email, 0);
@ -95,6 +105,7 @@ Java_io_gitjournal_gitjournal_Git_push(
JNIEnv *env, JNIEnv *env,
jobject this_obj, jobject this_obj,
jstring jni_git_base_path) { jstring jni_git_base_path) {
UNUSED(this_obj);
const char *git_base_path = (*env)->GetStringUTFChars(env, jni_git_base_path, 0); const char *git_base_path = (*env)->GetStringUTFChars(env, jni_git_base_path, 0);
int err = gj_git_push(git_base_path); int err = gj_git_push(git_base_path);
@ -114,6 +125,7 @@ Java_io_gitjournal_gitjournal_Git_commit(
jstring jni_author_name, jstring jni_author_name,
jstring jni_author_email, jstring jni_author_email,
jstring jni_message) { jstring jni_message) {
UNUSED(this_obj);
const char *git_base_path = (*env)->GetStringUTFChars(env, jni_git_base_path, 0); const char *git_base_path = (*env)->GetStringUTFChars(env, jni_git_base_path, 0);
const char *author_name = (*env)->GetStringUTFChars(env, jni_author_name, 0); const char *author_name = (*env)->GetStringUTFChars(env, jni_author_name, 0);
const char *author_email = (*env)->GetStringUTFChars(env, jni_author_email, 0); const char *author_email = (*env)->GetStringUTFChars(env, jni_author_email, 0);
@ -134,6 +146,7 @@ Java_io_gitjournal_gitjournal_Git_resetHard(
jobject this_obj, jobject this_obj,
jstring jni_git_base_path, jstring jni_git_base_path,
jstring jni_ref) { jstring jni_ref) {
UNUSED(this_obj);
const char *git_base_path = (*env)->GetStringUTFChars(env, jni_git_base_path, 0); const char *git_base_path = (*env)->GetStringUTFChars(env, jni_git_base_path, 0);
const char *ref = (*env)->GetStringUTFChars(env, jni_ref, 0); const char *ref = (*env)->GetStringUTFChars(env, jni_ref, 0);
@ -152,6 +165,8 @@ Java_io_gitjournal_gitjournal_Git_add(
jobject this_obj, jobject this_obj,
jstring jni_git_base_path, jstring jni_git_base_path,
jstring jni_add_pattern) { jstring jni_add_pattern) {
UNUSED(this_obj);
const char *git_base_path = (*env)->GetStringUTFChars(env, jni_git_base_path, 0); const char *git_base_path = (*env)->GetStringUTFChars(env, jni_git_base_path, 0);
const char *add_pattern = (*env)->GetStringUTFChars(env, jni_add_pattern, 0); const char *add_pattern = (*env)->GetStringUTFChars(env, jni_add_pattern, 0);
@ -171,6 +186,8 @@ Java_io_gitjournal_gitjournal_Git_rm(
jobject this_obj, jobject this_obj,
jstring jni_git_base_path, jstring jni_git_base_path,
jstring jni_pattern) { jstring jni_pattern) {
UNUSED(this_obj);
const char *git_base_path = (*env)->GetStringUTFChars(env, jni_git_base_path, 0); const char *git_base_path = (*env)->GetStringUTFChars(env, jni_git_base_path, 0);
const char *pattern = (*env)->GetStringUTFChars(env, jni_pattern, 0); const char *pattern = (*env)->GetStringUTFChars(env, jni_pattern, 0);
@ -191,6 +208,8 @@ Java_io_gitjournal_gitjournal_Git_setSshKeys(
jstring jni_public_key_path, jstring jni_public_key_path,
jstring jni_private_key_path, jstring jni_private_key_path,
jstring jni_passphrase) { jstring jni_passphrase) {
UNUSED(this_obj);
const char *public_key_path = (*env)->GetStringUTFChars(env, jni_public_key_path, 0); const char *public_key_path = (*env)->GetStringUTFChars(env, jni_public_key_path, 0);
const char *private_key_path = (*env)->GetStringUTFChars(env, jni_private_key_path, 0); const char *private_key_path = (*env)->GetStringUTFChars(env, jni_private_key_path, 0);
const char *passphrase = (*env)->GetStringUTFChars(env, jni_passphrase, 0); const char *passphrase = (*env)->GetStringUTFChars(env, jni_passphrase, 0);
@ -205,6 +224,8 @@ Java_io_gitjournal_gitjournal_Git_generateKeys(
jstring jni_private_key_path, jstring jni_private_key_path,
jstring jni_public_key_path, jstring jni_public_key_path,
jstring jni_comment) { jstring jni_comment) {
UNUSED(this_obj);
const char *private_key_path = (*env)->GetStringUTFChars(env, jni_private_key_path, 0); const char *private_key_path = (*env)->GetStringUTFChars(env, jni_private_key_path, 0);
const char *public_key_path = (*env)->GetStringUTFChars(env, jni_public_key_path, 0); const char *public_key_path = (*env)->GetStringUTFChars(env, jni_public_key_path, 0);
const char *comment = (*env)->GetStringUTFChars(env, jni_comment, 0); const char *comment = (*env)->GetStringUTFChars(env, jni_comment, 0);

View File

@ -13,6 +13,8 @@
#define GJ_ERR_PULL_INVALID_STATE -955 #define GJ_ERR_PULL_INVALID_STATE -955
#define GJ_ERR_LAST -955 #define GJ_ERR_LAST -955
#define UNUSED(x) (void)(x)
void gj_log_internal(const char *format, ...) void gj_log_internal(const char *format, ...)
{ {
char buffer[1024]; char buffer[1024];
@ -73,6 +75,9 @@ void gj_error_free(const gj_error *err)
int match_cb(const char *path, const char *spec, void *payload) int match_cb(const char *path, const char *spec, void *payload)
{ {
UNUSED(spec);
UNUSED(payload);
gj_log_internal("Match: %s\n", path); gj_log_internal("Match: %s\n", path);
return 0; return 0;
} }
@ -111,6 +116,9 @@ cleanup:
int rm_match_cb(const char *path, const char *spec, void *payload) int rm_match_cb(const char *path, const char *spec, void *payload)
{ {
UNUSED(spec);
UNUSED(payload);
char *git_base_path = (char *)payload; char *git_base_path = (char *)payload;
if (!git_base_path) if (!git_base_path)
{ {
@ -155,7 +163,6 @@ int gj_git_rm(const char *git_base_path, const char *pattern)
char *paths[] = {(char *)pattern}; char *paths[] = {(char *)pattern};
git_strarray pathspec = {paths, 1}; git_strarray pathspec = {paths, 1};
void *payload = (void *)git_base_path;
err = git_index_remove_all(index, &pathspec, rm_match_cb, (void *)git_base_path); err = git_index_remove_all(index, &pathspec, rm_match_cb, (void *)git_base_path);
if (err < 0) if (err < 0)
goto cleanup; goto cleanup;
@ -291,6 +298,8 @@ cleanup:
int fetch_progress(const git_transfer_progress *stats, void *payload) int fetch_progress(const git_transfer_progress *stats, void *payload)
{ {
UNUSED(payload);
int fetch_percent = int fetch_percent =
(100 * stats->received_objects) / (100 * stats->received_objects) /
stats->total_objects; stats->total_objects;
@ -327,6 +336,8 @@ typedef struct
int credentials_cb(git_cred **out, const char *url, const char *username_from_url, int credentials_cb(git_cred **out, const char *url, const char *username_from_url,
unsigned int allowed_types, void *payload) unsigned int allowed_types, void *payload)
{ {
UNUSED(url);
if (!payload) if (!payload)
{ {
gj_log_internal("credentials_cb has no payload\n"); gj_log_internal("credentials_cb has no payload\n");
@ -399,7 +410,6 @@ int gj_git_push(const char *git_base_path)
int err = 0; int err = 0;
git_repository *repo = NULL; git_repository *repo = NULL;
git_remote *remote = NULL; git_remote *remote = NULL;
git_oid head_id;
err = git_repository_open(&repo, git_base_path); err = git_repository_open(&repo, git_base_path);
if (err < 0) if (err < 0)
@ -433,8 +443,8 @@ cleanup:
static int perform_fastforward(git_repository *repo, const git_oid *target_oid) static int perform_fastforward(git_repository *repo, const git_oid *target_oid)
{ {
git_checkout_options ff_checkout_options = GIT_CHECKOUT_OPTIONS_INIT; git_checkout_options ff_checkout_options = GIT_CHECKOUT_OPTIONS_INIT;
git_reference *target_ref; git_reference *target_ref = NULL;
git_reference *new_target_ref; git_reference *new_target_ref = NULL;
git_object *target = NULL; git_object *target = NULL;
int err = 0; int err = 0;

View File

@ -9,6 +9,8 @@
#include <libssh/callbacks.h> #include <libssh/callbacks.h>
*/ */
#define UNUSED(x) (void)(x)
void change_pubickey_comment(const char *filename, const char *comment) void change_pubickey_comment(const char *filename, const char *comment)
{ {
FILE *fp = fopen(filename, "r"); FILE *fp = fopen(filename, "r");
@ -33,6 +35,7 @@ void change_pubickey_comment(const char *filename, const char *comment)
void gj_ssh_log_callback(int priority, const char *function, const char *buffer, void *userdata) void gj_ssh_log_callback(int priority, const char *function, const char *buffer, void *userdata)
{ {
UNUSED(userdata);
char log_str[1024]; char log_str[1024];
sprintf(log_str, "LIB_SSH P%d : %s : %s\n", priority, function, buffer); sprintf(log_str, "LIB_SSH P%d : %s : %s\n", priority, function, buffer);
gj_log(log_str); gj_log(log_str);
@ -41,6 +44,10 @@ void gj_ssh_log_callback(int priority, const char *function, const char *buffer,
int gj_generate_ssh_keys(const char *private_key_path, int gj_generate_ssh_keys(const char *private_key_path,
const char *public_key_path, const char *comment) const char *public_key_path, const char *comment)
{ {
UNUSED(private_key_path);
UNUSED(public_key_path);
UNUSED(comment);
return 1; return 1;
/* /*
ssh_key key; ssh_key key;