diff options
-rw-r--r-- | src/command/cmd_funcs.c | 136 | ||||
-rw-r--r-- | src/command/cmd_funcs.h | 256 | ||||
-rw-r--r-- | src/config/preferences.c | 776 | ||||
-rw-r--r-- | src/omemo/crypto.c | 20 | ||||
-rw-r--r-- | src/omemo/crypto.h | 18 | ||||
-rw-r--r-- | src/omemo/omemo.c | 13 | ||||
-rw-r--r-- | src/omemo/omemo.h | 8 | ||||
-rw-r--r-- | src/tools/http_download.c | 54 | ||||
-rw-r--r-- | src/tools/http_download.h | 17 | ||||
-rw-r--r-- | src/tools/http_upload.c | 31 | ||||
-rw-r--r-- | src/tools/http_upload.h | 19 | ||||
-rw-r--r-- | src/ui/console.c | 2 | ||||
-rw-r--r-- | src/ui/window.c | 2 | ||||
-rw-r--r-- | src/ui/window.h | 2 | ||||
-rw-r--r-- | tests/unittests/omemo/stub_omemo.c | 41 | ||||
-rw-r--r-- | tests/unittests/test_http_download.c | 103 | ||||
-rw-r--r-- | tests/unittests/test_http_download.h | 2 | ||||
-rw-r--r-- | tests/unittests/tools/stub_http_download.c | 22 | ||||
-rw-r--r-- | tests/unittests/ui/stub_ui.c | 105 |
19 files changed, 791 insertions, 836 deletions
diff --git a/src/command/cmd_funcs.c b/src/command/cmd_funcs.c index fb39f104..cfacd370 100644 --- a/src/command/cmd_funcs.c +++ b/src/command/cmd_funcs.c @@ -4807,16 +4807,18 @@ cmd_disco(ProfWin* window, const char* const command, gchar** args) return TRUE; } - -char *_add_omemo_stream(int *fd, FILE **fh, char **err) { +#ifdef HAVE_OMEMO +char* +_add_omemo_stream(int* fd, FILE** fh, char** err) +{ // Create temporary file for writing ciphertext. int tmpfd; - char *tmpname = NULL; + char* tmpname = NULL; if ((tmpfd = g_file_open_tmp("profanity.XXXXXX", &tmpname, NULL)) == -1) { *err = "Unable to create temporary file for encrypted transfer."; return NULL; } - FILE *tmpfh = fdopen(tmpfd, "wb"); + FILE* tmpfh = fdopen(tmpfd, "wb"); // The temporary ciphertext file should be removed after it has // been closed. @@ -4824,7 +4826,7 @@ char *_add_omemo_stream(int *fd, FILE **fh, char **err) { free(tmpname); int crypt_res; - char *fragment; + char* fragment; fragment = omemo_encrypt_file(*fh, tmpfh, file_size(*fd), &crypt_res); if (crypt_res != 0) { fclose(tmpfh); @@ -4843,14 +4845,15 @@ char *_add_omemo_stream(int *fd, FILE **fh, char **err) { return fragment; } +#endif gboolean cmd_sendfile(ProfWin* window, const char* const command, gchar** args) { jabber_conn_status_t conn_status = connection_get_status(); - char *filename = args[0]; - char *alt_scheme = NULL; - char *alt_fragment = NULL; + char* filename = args[0]; + char* alt_scheme = NULL; + char* alt_fragment = NULL; // expand ~ to $HOME if (filename[0] == '~' && filename[1] == '/') { @@ -4887,58 +4890,46 @@ cmd_sendfile(ProfWin* window, const char* const command, gchar** args) goto out; } - FILE *fh = fdopen(fd, "rb"); + FILE* fh = fdopen(fd, "rb"); switch (window->type) { - case WIN_MUC: - case WIN_CHAT: - { - ProfChatWin *chatwin = (ProfChatWin*)window; + case WIN_MUC: + case WIN_CHAT: + { + ProfChatWin* chatwin = (ProfChatWin*)window; #ifdef HAVE_OMEMO - if (chatwin->is_omemo) { - char *err = NULL; - alt_scheme = OMEMO_AESGCM_URL_SCHEME; - alt_fragment = _add_omemo_stream(&fd, &fh, &err); - if (err != NULL) { - cons_show_error(err); - win_println(window, THEME_ERROR, "-", err); - goto out; - } - break; + if (chatwin->is_omemo) { + char* err = NULL; + alt_scheme = OMEMO_AESGCM_URL_SCHEME; + alt_fragment = _add_omemo_stream(&fd, &fh, &err); + if (err != NULL) { + cons_show_error(err); + win_println(window, THEME_ERROR, "-", err); + goto out; } + break; + } #endif - if (window->type == WIN_CHAT) { - assert(chatwin->memcheck == PROFCHATWIN_MEMCHECK); - if ((chatwin->pgp_send && !prefs_get_boolean(PREF_PGP_SENDFILE)) - || (chatwin->is_otr && !prefs_get_boolean(PREF_OTR_SENDFILE))) { - cons_show_error("Uploading unencrypted files disabled. See /otr sendfile or /pgp sendfile."); - win_println(window, THEME_ERROR, "-", "Sending encrypted files via http_upload is not possible yet."); - goto out; - } + if (window->type == WIN_CHAT) { + assert(chatwin->memcheck == PROFCHATWIN_MEMCHECK); + if ((chatwin->pgp_send && !prefs_get_boolean(PREF_PGP_SENDFILE)) + || (chatwin->is_otr && !prefs_get_boolean(PREF_OTR_SENDFILE))) { + cons_show_error("Uploading unencrypted files disabled. See /otr sendfile or /pgp sendfile."); + win_println(window, THEME_ERROR, "-", "Sending encrypted files via http_upload is not possible yet."); + goto out; } - break; - } - case WIN_PRIVATE: // We don't support encryption in private MUC windows. - default: - cons_show_error("Unsupported window for file transmission."); - goto out; } break; } - case WIN_PRIVATE: - { - //we don't support encryption in private muc windows - break; - } + case WIN_PRIVATE: // We don't support encryption in private MUC windows. default: cons_show_error("Unsupported window for file transmission."); - free(filename); - return TRUE; + goto out; } - HTTPUpload *upload = malloc(sizeof(HTTPUpload)); + HTTPUpload* upload = malloc(sizeof(HTTPUpload)); upload->window = window; upload->filename = strdup(filename); @@ -8847,7 +8838,7 @@ cmd_omemo_policy(ProfWin* window, const char* const command, gchar** args) } gboolean -cmd_save(ProfWin *window, const char *const command, gchar **args) +cmd_save(ProfWin* window, const char* const command, gchar** args) { log_info("Saving preferences to configuration file"); cons_show("Saving preferences."); @@ -9123,8 +9114,8 @@ cmd_url_open(ProfWin* window, const char* const command, gchar** args) gchar* suffix_cmd = g_strdup(suffix_cmd_pref[1]); g_strfreev(suffix_cmd_pref); - gchar *scheme = g_uri_parse_scheme(args[1]); - if( 0 == g_strcmp0(scheme, OMEMO_AESGCM_URL_SCHEME)) { + gchar* scheme = g_uri_parse_scheme(args[1]); + if (0 == g_strcmp0(scheme, "aesgcm")) { require_save = true; } g_free(scheme); @@ -9163,15 +9154,16 @@ cmd_url_open(ProfWin* window, const char* const command, gchar** args) return TRUE; } - -void _url_save_fallback_method(ProfWin *window, const char *url, const char *filename) { - FILE *fh = fopen(filename, "wb"); +void +_url_save_fallback_method(ProfWin* window, const char* url, const char* filename) +{ + FILE* fh = fopen(filename, "wb"); if (!fh) { cons_show_error("Cannot open file '%s' for writing.", filename); return; } - HTTPDownload *download = malloc(sizeof(HTTPDownload)); + HTTPDownload* download = malloc(sizeof(HTTPDownload)); download->window = window; download->url = strdup(url); download->filehandle = fh; @@ -9180,8 +9172,10 @@ void _url_save_fallback_method(ProfWin *window, const char *url, const char *fil http_download_add_download(download); } -void _url_save_external_method(const char *scheme_cmd, const char *url, const char *filename) { - gchar **argv = g_strsplit(scheme_cmd, " ", 0); +void +_url_save_external_method(const char* scheme_cmd, const char* url, const char* filename) +{ + gchar** argv = g_strsplit(scheme_cmd, " ", 0); guint num_args = 0; while (argv[num_args]) { @@ -9202,11 +9196,13 @@ void _url_save_external_method(const char *scheme_cmd, const char *url, const ch } } -char *_make_unique_filename(const char *filename) { - char *unique = strdup(filename); +char* +_make_unique_filename(const char* filename) +{ + char* unique = strdup(filename); unsigned int i = 0; - while(g_file_test(unique, G_FILE_TEST_EXISTS)) { + while (g_file_test(unique, G_FILE_TEST_EXISTS)) { free(unique); if (i > 1000) { // Give up after 1000 attempts. @@ -9222,11 +9218,9 @@ char *_make_unique_filename(const char *filename) { } gboolean -cmd_url_save(ProfWin *window, const char *const command, gchar **args) +cmd_url_save(ProfWin* window, const char* const command, gchar** args) { - if (window->type != WIN_CHAT && - window->type != WIN_MUC && - window->type != WIN_PRIVATE) { + if (window->type != WIN_CHAT && window->type != WIN_MUC && window->type != WIN_PRIVATE) { cons_show_error("`/url save` is not supported in this window."); return TRUE; } @@ -9236,18 +9230,18 @@ cmd_url_save(ProfWin *window, const char *const command, gchar **args) return TRUE; } - gchar *url = args[1]; - gchar *path = g_strdup(args[2]); + gchar* url = args[1]; + gchar* path = g_strdup(args[2]); - gchar *scheme = g_uri_parse_scheme(url); + gchar* scheme = g_uri_parse_scheme(url); if (scheme == NULL) { cons_show("URL '%s' is not valid.", url); g_free(url); return TRUE; } - gchar *directory = NULL; - gchar *basename = NULL; + gchar* directory = NULL; + gchar* basename = NULL; if (path != NULL) { directory = g_path_get_dirname(path); basename = g_path_get_basename(path); @@ -9267,10 +9261,10 @@ cmd_url_save(ProfWin *window, const char *const command, gchar **args) basename = http_basename_from_url(url); } - char *filename = NULL; + char* filename = NULL; filename = g_build_filename(directory, basename, NULL); - char *unique_filename = _make_unique_filename(filename); + char* unique_filename = _make_unique_filename(filename); if (!unique_filename) { cons_show_error("Failed to generate an unique filename from '%s'.", filename); free(filename); @@ -9280,11 +9274,11 @@ cmd_url_save(ProfWin *window, const char *const command, gchar **args) free(filename); filename = unique_filename; - gchar *scheme_cmd = prefs_get_string_with_option(PREF_URL_SAVE_CMD, scheme); + gchar* scheme_cmd = prefs_get_string_with_option(PREF_URL_SAVE_CMD, scheme); if (scheme_cmd == NULL) { if (g_strcmp0(scheme, "http") == 0 - || g_strcmp0(scheme, "https") == 0 - || g_strcmp0(scheme, OMEMO_AESGCM_URL_SCHEME) == 0) { + || g_strcmp0(scheme, "https") == 0 + || g_strcmp0(scheme, "aesgcm") == 0) { _url_save_fallback_method(window, url, filename); } else { cons_show_error("No download method defined for the scheme '%s'.", scheme); diff --git a/src/command/cmd_funcs.h b/src/command/cmd_funcs.h index f6fac7ca..d5311bba 100644 --- a/src/command/cmd_funcs.h +++ b/src/command/cmd_funcs.h @@ -111,133 +111,133 @@ gboolean cmd_pgp(ProfWin* window, const char* const command, gchar** args); #ifdef HAVE_LIBGPGME gboolean cmd_ox(ProfWin* window, const char* const command, gchar** args); #endif // HAVE_LIBGPGME -gboolean cmd_outtype(ProfWin *window, const char *const command, gchar **args); -gboolean cmd_prefs(ProfWin *window, const char *const command, gchar **args); -gboolean cmd_priority(ProfWin *window, const char *const command, gchar **args); -gboolean cmd_quit(ProfWin *window, const char *const command, gchar **args); -gboolean cmd_reconnect(ProfWin *window, const char *const command, gchar **args); -gboolean cmd_room(ProfWin *window, const char *const command, gchar **args); -gboolean cmd_rooms(ProfWin *window, const char *const command, gchar **args); -gboolean cmd_bookmark(ProfWin *window, const char *const command, gchar **args); -gboolean cmd_bookmark_ignore(ProfWin *window, const char *const command, gchar **args); -gboolean cmd_roster(ProfWin *window, const char *const command, gchar **args); -gboolean cmd_software(ProfWin *window, const char *const command, gchar **args); -gboolean cmd_splash(ProfWin *window, const char *const command, gchar **args); -gboolean cmd_states(ProfWin *window, const char *const command, gchar **args); -gboolean cmd_status_get(ProfWin *window, const char *const command, gchar **args); -gboolean cmd_status_set(ProfWin *window, const char *const command, gchar **args); -gboolean cmd_sub(ProfWin *window, const char *const command, gchar **args); -gboolean cmd_theme(ProfWin *window, const char *const command, gchar **args); -gboolean cmd_tiny(ProfWin *window, const char *const command, gchar **args); -gboolean cmd_wintitle(ProfWin *window, const char *const command, gchar **args); -gboolean cmd_vercheck(ProfWin *window, const char *const command, gchar **args); -gboolean cmd_who(ProfWin *window, const char *const command, gchar **args); -gboolean cmd_win(ProfWin *window, const char *const command, gchar **args); -gboolean cmd_alias(ProfWin *window, const char *const command, gchar **args); -gboolean cmd_xmlconsole(ProfWin *window, const char *const command, gchar **args); -gboolean cmd_ping(ProfWin *window, const char *const command, gchar **args); -gboolean cmd_form(ProfWin *window, const char *const command, gchar **args); -gboolean cmd_occupants(ProfWin *window, const char *const command, gchar **args); -gboolean cmd_kick(ProfWin *window, const char *const command, gchar **args); -gboolean cmd_ban(ProfWin *window, const char *const command, gchar **args); -gboolean cmd_subject(ProfWin *window, const char *const command, gchar **args); -gboolean cmd_affiliation(ProfWin *window, const char *const command, gchar **args); -gboolean cmd_role(ProfWin *window, const char *const command, gchar **args); -gboolean cmd_privileges(ProfWin *window, const char *const command, gchar **args); -gboolean cmd_presence(ProfWin *window, const char *const command, gchar **args); -gboolean cmd_wrap(ProfWin *window, const char *const command, gchar **args); -gboolean cmd_time(ProfWin *window, const char *const command, gchar **args); -gboolean cmd_resource(ProfWin *window, const char *const command, gchar **args); -gboolean cmd_inpblock(ProfWin *window, const char *const command, gchar **args); -gboolean cmd_titlebar(ProfWin *window, const char *const command, gchar **args); -gboolean cmd_titlebar_show_hide(ProfWin *window, const char *const command, gchar **args); -gboolean cmd_mainwin(ProfWin *window, const char *const command, gchar **args); -gboolean cmd_statusbar(ProfWin *window, const char *const command, gchar **args); -gboolean cmd_inputwin(ProfWin *window, const char *const command, gchar **args); -gboolean cmd_script(ProfWin *window, const char *const command, gchar **args); -gboolean cmd_export(ProfWin *window, const char *const command, gchar **args); -gboolean cmd_charset(ProfWin *window, const char *const command, gchar **args); -gboolean cmd_console(ProfWin *window, const char *const command, gchar **args); -gboolean cmd_command_list(ProfWin *window, const char *const command, gchar **args); -gboolean cmd_command_exec(ProfWin *window, const char *const command, gchar **args); - -gboolean cmd_plugins(ProfWin *window, const char *const command, gchar **args); -gboolean cmd_plugins_sourcepath(ProfWin *window, const char *const command, gchar **args); -gboolean cmd_plugins_install(ProfWin *window, const char *const command, gchar **args); -gboolean cmd_plugins_update(ProfWin *window, const char *const command, gchar **args); -gboolean cmd_plugins_uninstall(ProfWin *window, const char *const command, gchar **args); -gboolean cmd_plugins_load(ProfWin *window, const char *const command, gchar **args); -gboolean cmd_plugins_unload(ProfWin *window, const char *const command, gchar **args); -gboolean cmd_plugins_reload(ProfWin *window, const char *const command, gchar **args); -gboolean cmd_plugins_python_version(ProfWin *window, const char *const command, gchar **args); - -gboolean cmd_blocked(ProfWin *window, const char *const command, gchar **args); - -gboolean cmd_account(ProfWin *window, const char *const command, gchar **args); -gboolean cmd_account_list(ProfWin *window, const char *const command, gchar **args); -gboolean cmd_account_show(ProfWin *window, const char *const command, gchar **args); -gboolean cmd_account_add(ProfWin *window, const char *const command, gchar **args); -gboolean cmd_account_remove(ProfWin *window, const char *const command, gchar **args); -gboolean cmd_account_enable(ProfWin *window, const char *const command, gchar **args); -gboolean cmd_account_disable(ProfWin *window, const char *const command, gchar **args); -gboolean cmd_account_rename(ProfWin *window, const char *const command, gchar **args); -gboolean cmd_account_default(ProfWin *window, const char *const command, gchar **args); -gboolean cmd_account_set(ProfWin *window, const char *const command, gchar **args); -gboolean cmd_account_clear(ProfWin *window, const char *const command, gchar **args); - -gboolean cmd_tls_certpath(ProfWin *window, const char *const command, gchar **args); -gboolean cmd_tls_trust(ProfWin *window, const char *const command, gchar **args); -gboolean cmd_tls_trusted(ProfWin *window, const char *const command, gchar **args); -gboolean cmd_tls_revoke(ProfWin *window, const char *const command, gchar **args); -gboolean cmd_tls_cert(ProfWin *window, const char *const command, gchar **args); - -gboolean cmd_otr_char(ProfWin *window, const char *const command, gchar **args); -gboolean cmd_otr_log(ProfWin *window, const char *const command, gchar **args); -gboolean cmd_otr_libver(ProfWin *window, const char *const command, gchar **args); -gboolean cmd_otr_policy(ProfWin *window, const char *const command, gchar **args); -gboolean cmd_otr_gen(ProfWin *window, const char *const command, gchar **args); -gboolean cmd_otr_myfp(ProfWin *window, const char *const command, gchar **args); -gboolean cmd_otr_theirfp(ProfWin *window, const char *const command, gchar **args); -gboolean cmd_otr_start(ProfWin *window, const char *const command, gchar **args); -gboolean cmd_otr_end(ProfWin *window, const char *const command, gchar **args); -gboolean cmd_otr_trust(ProfWin *window, const char *const command, gchar **args); -gboolean cmd_otr_untrust(ProfWin *window, const char *const command, gchar **args); -gboolean cmd_otr_secret(ProfWin *window, const char *const command, gchar **args); -gboolean cmd_otr_question(ProfWin *window, const char *const command, gchar **args); -gboolean cmd_otr_answer(ProfWin *window, const char *const command, gchar **args); -gboolean cmd_otr_sendfile(ProfWin *window, const char *const command, gchar **args); - -gboolean cmd_wins(ProfWin *window, const char *const command, gchar **args); -gboolean cmd_wins_unread(ProfWin *window, const char *const command, gchar **args); -gboolean cmd_wins_prune(ProfWin *window, const char *const command, gchar **args); -gboolean cmd_wins_swap(ProfWin *window, const char *const command, gchar **args); - -gboolean cmd_form_field(ProfWin *window, char *tag, gchar **args); - -gboolean cmd_omemo_gen(ProfWin *window, const char *const command, gchar **args); -gboolean cmd_omemo_char(ProfWin *window, const char *const command, gchar **args); -gboolean cmd_omemo_log(ProfWin *window, const char *const command, gchar **args); -gboolean cmd_omemo_start(ProfWin *window, const char *const command, gchar **args); -gboolean cmd_omemo_end(ProfWin *window, const char *const command, gchar **args); -gboolean cmd_omemo_fingerprint(ProfWin *window, const char *const command, gchar **args); -gboolean cmd_omemo_trust(ProfWin *window, const char *const command, gchar **args); -gboolean cmd_omemo_untrust(ProfWin *window, const char *const command, gchar **args); -gboolean cmd_omemo_policy(ProfWin *window, const char *const command, gchar **args); -gboolean cmd_omemo_clear_device_list(ProfWin *window, const char *const command, gchar **args); - -gboolean cmd_save(ProfWin *window, const char *const command, gchar **args); -gboolean cmd_reload(ProfWin *window, const char *const command, gchar **args); - -gboolean cmd_paste(ProfWin *window, const char *const command, gchar **args); -gboolean cmd_color(ProfWin *window, const char *const command, gchar **args); -gboolean cmd_avatar(ProfWin *window, const char *const command, gchar **args); -gboolean cmd_os(ProfWin *window, const char *const command, gchar **args); -gboolean cmd_correction(ProfWin *window, const char *const command, gchar **args); -gboolean cmd_correct(ProfWin *window, const char *const command, gchar **args); -gboolean cmd_slashguard(ProfWin *window, const char *const command, gchar **args); -gboolean cmd_serversoftware(ProfWin *window, const char *const command, gchar **args); -gboolean cmd_url_open(ProfWin *window, const char *const command, gchar **args); -gboolean cmd_url_save(ProfWin *window, const char *const command, gchar **args); -gboolean cmd_executable(ProfWin *window, const char *const command, gchar **args); +gboolean cmd_outtype(ProfWin* window, const char* const command, gchar** args); +gboolean cmd_prefs(ProfWin* window, const char* const command, gchar** args); +gboolean cmd_priority(ProfWin* window, const char* const command, gchar** args); +gboolean cmd_quit(ProfWin* window, const char* const command, gchar** args); +gboolean cmd_reconnect(ProfWin* window, const char* const command, gchar** args); +gboolean cmd_room(ProfWin* window, const char* const command, gchar** args); +gboolean cmd_rooms(ProfWin* window, const char* const command, gchar** args); +gboolean cmd_bookmark(ProfWin* window, const char* const command, gchar** args); +gboolean cmd_bookmark_ignore(ProfWin* window, const char* const command, gchar** args); +gboolean cmd_roster(ProfWin* window, const char* const command, gchar** args); +gboolean cmd_software(ProfWin* window, const char* const command, gchar** args); +gboolean cmd_splash(ProfWin* window, const char* const command, gchar** args); +gboolean cmd_states(ProfWin* window, const char* const command, gchar** args); +gboolean cmd_status_get(ProfWin* window, const char* const command, gchar** args); +gboolean cmd_status_set(ProfWin* window, const char* const command, gchar** args); +gboolean cmd_sub(ProfWin* window, const char* const command, gchar** args); +gboolean cmd_theme(ProfWin* window, const char* const command, gchar** args); +gboolean cmd_tiny(ProfWin* window, const char* const command, gchar** args); +gboolean cmd_wintitle(ProfWin* window, const char* const command, gchar** args); +gboolean cmd_vercheck(ProfWin* window, const char* const command, gchar** args); +gboolean cmd_who(ProfWin* window, const char* const command, gchar** args); +gboolean cmd_win(ProfWin* window, const char* const command, gchar** args); +gboolean cmd_alias(ProfWin* window, const char* const command, gchar** args); +gboolean cmd_xmlconsole(ProfWin* window, const char* const command, gchar** args); +gboolean cmd_ping(ProfWin* window, const char* const command, gchar** args); +gboolean cmd_form(ProfWin* window, const char* const command, gchar** args); +gboolean cmd_occupants(ProfWin* window, const char* const command, gchar** args); +gboolean cmd_kick(ProfWin* window, const char* const command, gchar** args); +gboolean cmd_ban(ProfWin* window, const char* const command, gchar** args); +gboolean cmd_subject(ProfWin* window, const char* const command, gchar** args); +gboolean cmd_affiliation(ProfWin* window, const char* const command, gchar** args); +gboolean cmd_role(ProfWin* window, const char* const command, gchar** args); +gboolean cmd_privileges(ProfWin* window, const char* const command, gchar** args); +gboolean cmd_presence(ProfWin* window, const char* const command, gchar** args); +gboolean cmd_wrap(ProfWin* window, const char* const command, gchar** args); +gboolean cmd_time(ProfWin* window, const char* const command, gchar** args); +gboolean cmd_resource(ProfWin* window, const char* const command, gchar** args); +gboolean cmd_inpblock(ProfWin* window, const char* const command, gchar** args); +gboolean cmd_titlebar(ProfWin* window, const char* const command, gchar** args); +gboolean cmd_titlebar_show_hide(ProfWin* window, const char* const command, gchar** args); +gboolean cmd_mainwin(ProfWin* window, const char* const command, gchar** args); +gboolean cmd_statusbar(ProfWin* window, const char* const command, gchar** args); +gboolean cmd_inputwin(ProfWin* window, const char* const command, gchar** args); +gboolean cmd_script(ProfWin* window, const char* const command, gchar** args); +gboolean cmd_export(ProfWin* window, const char* const command, gchar** args); +gboolean cmd_charset(ProfWin* window, const char* const command, gchar** args); +gboolean cmd_console(ProfWin* window, const char* const command, gchar** args); +gboolean cmd_command_list(ProfWin* window, const char* const command, gchar** args); +gboolean cmd_command_exec(ProfWin* window, const char* const command, gchar** args); + +gboolean cmd_plugins(ProfWin* window, const char* const command, gchar** args); +gboolean cmd_plugins_sourcepath(ProfWin* window, const char* const command, gchar** args); +gboolean cmd_plugins_install(ProfWin* window, const char* const command, gchar** args); +gboolean cmd_plugins_update(ProfWin* window, const char* const command, gchar** args); +gboolean cmd_plugins_uninstall(ProfWin* window, const char* const command, gchar** args); +gboolean cmd_plugins_load(ProfWin* window, const char* const command, gchar** args); +gboolean cmd_plugins_unload(ProfWin* window, const char* const command, gchar** args); +gboolean cmd_plugins_reload(ProfWin* window, const char* const command, gchar** args); +gboolean cmd_plugins_python_version(ProfWin* window, const char* const command, gchar** args); + +gboolean cmd_blocked(ProfWin* window, const char* const command, gchar** args); + +gboolean cmd_account(ProfWin* window, const char* const command, gchar** args); +gboolean cmd_account_list(ProfWin* window, const char* const command, gchar** args); +gboolean cmd_account_show(ProfWin* window, const char* const command, gchar** args); +gboolean cmd_account_add(ProfWin* window, const char* const command, gchar** args); +gboolean cmd_account_remove(ProfWin* window, const char* const command, gchar** args); +gboolean cmd_account_enable(ProfWin* window, const char* const command, gchar** args); +gboolean cmd_account_disable(ProfWin* window, const char* const command, gchar** args); +gboolean cmd_account_rename(ProfWin* window, const char* const command, gchar** args); +gboolean cmd_account_default(ProfWin* window, const char* const command, gchar** args); +gboolean cmd_account_set(ProfWin* window, const char* const command, gchar** args); +gboolean cmd_account_clear(ProfWin* window, const char* const command, gchar** args); + +gboolean cmd_tls_certpath(ProfWin* window, const char* const command, gchar** args); +gboolean cmd_tls_trust(ProfWin* window, const char* const command, gchar** args); +gboolean cmd_tls_trusted(ProfWin* window, const char* const command, gchar** args); +gboolean cmd_tls_revoke(ProfWin* window, const char* const command, gchar** args); +gboolean cmd_tls_cert(ProfWin* window, const char* const command, gchar** args); + +gboolean cmd_otr_char(ProfWin* window, const char* const command, gchar** args); +gboolean cmd_otr_log(ProfWin* window, const char* const command, gchar** args); +gboolean cmd_otr_libver(ProfWin* window, const char* const command, gchar** args); +gboolean cmd_otr_policy(ProfWin* window, const char* const command, gchar** args); +gboolean cmd_otr_gen(ProfWin* window, const char* const command, gchar** args); +gboolean cmd_otr_myfp(ProfWin* window, const char* const command, gchar** args); +gboolean cmd_otr_theirfp(ProfWin* window, const char* const command, gchar** args); +gboolean cmd_otr_start(ProfWin* window, const char* const command, gchar** args); +gboolean cmd_otr_end(ProfWin* window, const char* const command, gchar** args); +gboolean cmd_otr_trust(ProfWin* window, const char* const command, gchar** args); +gboolean cmd_otr_untrust(ProfWin* window, const char* const command, gchar** args); +gboolean cmd_otr_secret(ProfWin* window, const char* const command, gchar** args); +gboolean cmd_otr_question(ProfWin* window, const char* const command, gchar** args); +gboolean cmd_otr_answer(ProfWin* window, const char* const command, gchar** args); +gboolean cmd_otr_sendfile(ProfWin* window, const char* const command, gchar** args); + +gboolean cmd_wins(ProfWin* window, const char* const command, gchar** args); +gboolean cmd_wins_unread(ProfWin* window, const char* const command, gchar** args); +gboolean cmd_wins_prune(ProfWin* window, const char* const command, gchar** args); +gboolean cmd_wins_swap(ProfWin* window, const char* const command, gchar** args); + +gboolean cmd_form_field(ProfWin* window, char* tag, gchar** args); + +gboolean cmd_omemo_gen(ProfWin* window, const char* const command, gchar** args); +gboolean cmd_omemo_char(ProfWin* window, const char* const command, gchar** args); +gboolean cmd_omemo_log(ProfWin* window, const char* const command, gchar** args); +gboolean cmd_omemo_start(ProfWin* window, const char* const command, gchar** args); +gboolean cmd_omemo_end(ProfWin* window, const char* const command, gchar** args); +gboolean cmd_omemo_fingerprint(ProfWin* window, const char* const command, gchar** args); +gboolean cmd_omemo_trust(ProfWin* window, const char* const command, gchar** args); +gboolean cmd_omemo_untrust(ProfWin* window, const char* const command, gchar** args); +gboolean cmd_omemo_policy(ProfWin* window, const char* const command, gchar** args); +gboolean cmd_omemo_clear_device_list(ProfWin* window, const char* const command, gchar** args); + +gboolean cmd_save(ProfWin* window, const char* const command, gchar** args); +gboolean cmd_reload(ProfWin* window, const char* const command, gchar** args); + +gboolean cmd_paste(ProfWin* window, const char* const command, gchar** args); +gboolean cmd_color(ProfWin* window, const char* const command, gchar** args); +gboolean cmd_avatar(ProfWin* window, const char* const command, gchar** args); +gboolean cmd_os(ProfWin* window, const char* const command, gchar** args); +gboolean cmd_correction(ProfWin* window, const char* const command, gchar** args); +gboolean cmd_correct(ProfWin* window, const char* const command, gchar** args); +gboolean cmd_slashguard(ProfWin* window, const char* const command, gchar** args); +gboolean cmd_serversoftware(ProfWin* window, const char* const command, gchar** args); +gboolean cmd_url_open(ProfWin* window, const char* const command, gchar** args); +gboolean cmd_url_save(ProfWin* window, const char* const command, gchar** args); +gboolean cmd_executable(ProfWin* window, const char* const command, gchar** args); #endif diff --git a/src/config/preferences.c b/src/config/preferences.c index e1ff4a06..0511212e 100644 --- a/src/config/preferences.c +++ b/src/config/preferences.c @@ -1790,145 +1790,144 @@ _save_prefs(void) static const char* _get_group(preference_t pref) { - switch (pref) - { - case PREF_CLEAR_PERSIST_HISTORY: - case PREF_SPLASH: - case PREF_BEEP: - case PREF_THEME: - case PREF_VERCHECK: - case PREF_WINTITLE_SHOW: - case PREF_WINTITLE_GOODBYE: - case PREF_FLASH: - case PREF_INTYPE: - case PREF_HISTORY: - case PREF_OCCUPANTS: - case PREF_OCCUPANTS_JID: - case PREF_OCCUPANTS_WRAP: - case PREF_STATUSES: - case PREF_STATUSES_CONSOLE: - case PREF_STATUSES_CHAT: - case PREF_STATUSES_MUC: - case PREF_MUC_PRIVILEGES: - case PREF_PRESENCE: - case PREF_WRAP: - case PREF_TIME_CONSOLE: - case PREF_TIME_CHAT: - case PREF_TIME_MUC: - case PREF_TIME_CONFIG: - case PREF_TIME_PRIVATE: - case PREF_TIME_XMLCONSOLE: - case PREF_TIME_STATUSBAR: - case PREF_TIME_LASTACTIVITY: - case PREF_ROSTER: - case PREF_ROSTER_OFFLINE: - case PREF_ROSTER_RESOURCE: - case PREF_ROSTER_PRESENCE: - case PREF_ROSTER_STATUS: - case PREF_ROSTER_EMPTY: - case PREF_ROSTER_BY: - case PREF_ROSTER_ORDER: - case PREF_ROSTER_UNREAD: - case PREF_ROSTER_COUNT: - case PREF_ROSTER_COUNT_ZERO: - case PREF_ROSTER_PRIORITY: - case PREF_ROSTER_WRAP: - case PREF_ROSTER_RESOURCE_JOIN: - case PREF_ROSTER_CONTACTS: - case PREF_ROSTER_UNSUBSCRIBED: - case PREF_ROSTER_ROOMS: - case PREF_ROSTER_ROOMS_POS: - case PREF_ROSTER_ROOMS_BY: - case PREF_ROSTER_ROOMS_ORDER: - case PREF_ROSTER_ROOMS_UNREAD: - case PREF_ROSTER_ROOMS_SERVER: - case PREF_ROSTER_ROOMS_USE_AS_NAME: - case PREF_ROSTER_PRIVATE: - case PREF_RESOURCE_TITLE: - case PREF_RESOURCE_MESSAGE: - case PREF_ENC_WARN: - case PREF_INPBLOCK_DYNAMIC: - case PREF_TLS_SHOW: - case PREF_CONSOLE_MUC: - case PREF_CONSOLE_PRIVATE: - case PREF_CONSOLE_CHAT: - case PREF_COLOR_NICK: - case PREF_COLOR_NICK_OWN: - case PREF_ROSTER_COLOR_NICK: - case PREF_OCCUPANTS_COLOR_NICK: - case PREF_STATUSBAR_SHOW_NAME: - case PREF_STATUSBAR_SHOW_NUMBER: - case PREF_STATUSBAR_SHOW_READ: - case PREF_STATUSBAR_SELF: - case PREF_STATUSBAR_CHAT: - case PREF_STATUSBAR_ROOM: - case PREF_TITLEBAR_MUC_TITLE_JID: - case PREF_TITLEBAR_MUC_TITLE_NAME: - case PREF_SLASH_GUARD: - return PREF_GROUP_UI; - case PREF_STATES: - case PREF_OUTTYPE: - return PREF_GROUP_CHATSTATES; - case PREF_NOTIFY_TYPING: - case PREF_NOTIFY_TYPING_CURRENT: - case PREF_NOTIFY_CHAT: - case PREF_NOTIFY_CHAT_CURRENT: - case PREF_NOTIFY_CHAT_TEXT: - case PREF_NOTIFY_ROOM: - case PREF_NOTIFY_ROOM_MENTION: - case PREF_NOTIFY_ROOM_TRIGGER: - case PREF_NOTIFY_ROOM_CURRENT: - case PREF_NOTIFY_ROOM_TEXT: - case PREF_NOTIFY_INVITE: - case PREF_NOTIFY_SUB: - case PREF_NOTIFY_MENTION_CASE_SENSITIVE: - case PREF_NOTIFY_MENTION_WHOLE_WORD: - case PREF_TRAY: - case PREF_TRAY_READ: - case PREF_ADV_NOTIFY_DISCO_OR_VERSION: - return PREF_GROUP_NOTIFICATIONS; - case PREF_CHLOG: - case PREF_GRLOG: - case PREF_LOG_ROTATE: - case PREF_LOG_SHARED: - return PREF_GROUP_LOGGING; - case PREF_AVATAR_CMD: - case PREF_URL_OPEN_CMD: - case PREF_URL_SAVE_CMD: - return PREF_GROUP_EXECUTABLES; - case PREF_AUTOAWAY_CHECK: - case PREF_AUTOAWAY_MODE: - case PREF_AUTOAWAY_MESSAGE: - case PREF_AUTOXA_MESSAGE: - case PREF_LASTACTIVITY: - return PREF_GROUP_PRESENCE; - case PREF_CONNECT_ACCOUNT: - case PREF_DEFAULT_ACCOUNT: - case PREF_CARBONS: - case PREF_RECEIPTS_SEND: - case PREF_RECEIPTS_REQUEST: - case PREF_REVEAL_OS: - case PREF_TLS_CERTPATH: - case PREF_CORRECTION_ALLOW: - case PREF_MAM: - return PREF_GROUP_CONNECTION; - case PREF_OTR_LOG: - case PREF_OTR_POLICY: - case PREF_OTR_SENDFILE: - return PREF_GROUP_OTR; - case PREF_PGP_LOG: - case PREF_PGP_SENDFILE: - return PREF_GROUP_PGP; - case PREF_BOOKMARK_INVITE: - case PREF_ROOM_LIST_CACHE: - return PREF_GROUP_MUC; - case PREF_PLUGINS_SOURCEPATH: - return PREF_GROUP_PLUGINS; - case PREF_OMEMO_LOG: - case PREF_OMEMO_POLICY: - return PREF_GROUP_OMEMO; - default: - return NULL; + switch (pref) { + case PREF_CLEAR_PERSIST_HISTORY: + case PREF_SPLASH: + case PREF_BEEP: + case PREF_THEME: + case PREF_VERCHECK: + case PREF_WINTITLE_SHOW: + case PREF_WINTITLE_GOODBYE: + case PREF_FLASH: + case PREF_INTYPE: + case PREF_HISTORY: + case PREF_OCCUPANTS: + case PREF_OCCUPANTS_JID: + case PREF_OCCUPANTS_WRAP: + case PREF_STATUSES: + case PREF_STATUSES_CONSOLE: + case PREF_STATUSES_CHAT: + case PREF_STATUSES_MUC: + case PREF_MUC_PRIVILEGES: + case PREF_PRESENCE: + case PREF_WRAP: + case PREF_TIME_CONSOLE: + case PREF_TIME_CHAT: + case PREF_TIME_MUC: + case PREF_TIME_CONFIG: + case PREF_TIME_PRIVATE: + case PREF_TIME_XMLCONSOLE: + case PREF_TIME_STATUSBAR: + case PREF_TIME_LASTACTIVITY: + case PREF_ROSTER: + case PREF_ROSTER_OFFLINE: + case PREF_ROSTER_RESOURCE: + case PREF_ROSTER_PRESENCE: + case PREF_ROSTER_STATUS: + case PREF_ROSTER_EMPTY: + case PREF_ROSTER_BY: + case PREF_ROSTER_ORDER: + case PREF_ROSTER_UNREAD: + case PREF_ROSTER_COUNT: + case PREF_ROSTER_COUNT_ZERO: + case PREF_ROSTER_PRIORITY: + case PREF_ROSTER_WRAP: + case PREF_ROSTER_RESOURCE_JOIN: + case PREF_ROSTER_CONTACTS: + case PREF_ROSTER_UNSUBSCRIBED: + case PREF_ROSTER_ROOMS: + case PREF_ROSTER_ROOMS_POS: + case PREF_ROSTER_ROOMS_BY: + case PREF_ROSTER_ROOMS_ORDER: + case PREF_ROSTER_ROOMS_UNREAD: + case PREF_ROSTER_ROOMS_SERVER: + case PREF_ROSTER_ROOMS_USE_AS_NAME: + case PREF_ROSTER_PRIVATE: + case PREF_RESOURCE_TITLE: + case PREF_RESOURCE_MESSAGE: + case PREF_ENC_WARN: + case PREF_INPBLOCK_DYNAMIC: + case PREF_TLS_SHOW: + case PREF_CONSOLE_MUC: + case PREF_CONSOLE_PRIVATE: + case PREF_CONSOLE_CHAT: + case PREF_COLOR_NICK: + case PREF_COLOR_NICK_OWN: + case PREF_ROSTER_COLOR_NICK: + case PREF_OCCUPANTS_COLOR_NICK: + case PREF_STATUSBAR_SHOW_NAME: + case PREF_STATUSBAR_SHOW_NUMBER: + case PREF_STATUSBAR_SHOW_READ: + case PREF_STATUSBAR_SELF: + case PREF_STATUSBAR_CHAT: + case PREF_STATUSBAR_ROOM: + case PREF_TITLEBAR_MUC_TITLE_JID: + case PREF_TITLEBAR_MUC_TITLE_NAME: + case PREF_SLASH_GUARD: + return PREF_GROUP_UI; + case PREF_STATES: + case PREF_OUTTYPE: + return PREF_GROUP_CHATSTATES; + case PREF_NOTIFY_TYPING: + case PREF_NOTIFY_TYPING_CURRENT: + case PREF_NOTIFY_CHAT: + case PREF_NOTIFY_CHAT_CURRENT: + case PREF_NOTIFY_CHAT_TEXT: + case PREF_NOTIFY_ROOM: + case PREF_NOTIFY_ROOM_MENTION: + case PREF_NOTIFY_ROOM_TRIGGER: + case PREF_NOTIFY_ROOM_CURRENT: + case PREF_NOTIFY_ROOM_TEXT: + case PREF_NOTIFY_INVITE: + case PREF_NOTIFY_SUB: + case PREF_NOTIFY_MENTION_CASE_SENSITIVE: + case PREF_NOTIFY_MENTION_WHOLE_WORD: + case PREF_TRAY: + case PREF_TRAY_READ: + case PREF_ADV_NOTIFY_DISCO_OR_VERSION: + return PREF_GROUP_NOTIFICATIONS; + case PREF_CHLOG: + case PREF_GRLOG: + case PREF_LOG_ROTATE: + case PREF_LOG_SHARED: + return PREF_GROUP_LOGGING; + case PREF_AVATAR_CMD: + case PREF_URL_OPEN_CMD: + case PREF_URL_SAVE_CMD: + return PREF_GROUP_EXECUTABLES; + case PREF_AUTOAWAY_CHECK: + case PREF_AUTOAWAY_MODE: + case PREF_AUTOAWAY_MESSAGE: + case PREF_AUTOXA_MESSAGE: + case PREF_LASTACTIVITY: + return PREF_GROUP_PRESENCE; + case PREF_CONNECT_ACCOUNT: + case PREF_DEFAULT_ACCOUNT: + case PREF_CARBONS: + case PREF_RECEIPTS_SEND: + case PREF_RECEIPTS_REQUEST: + case PREF_REVEAL_OS: + case PREF_TLS_CERTPATH: + case PREF_CORRECTION_ALLOW: + case PREF_MAM: + return PREF_GROUP_CONNECTION; + case PREF_OTR_LOG: + case PREF_OTR_POLICY: + case PREF_OTR_SENDFILE: + return PREF_GROUP_OTR; + case PREF_PGP_LOG: + case PREF_PGP_SENDFILE: + return PREF_GROUP_PGP; + case PREF_BOOKMARK_INVITE: + case PREF_ROOM_LIST_CACHE: + return PREF_GROUP_MUC; + case PREF_PLUGINS_SOURCEPATH: + return PREF_GROUP_PLUGINS; + case PREF_OMEMO_LOG: + case PREF_OMEMO_POLICY: + return PREF_GROUP_OMEMO; + default: + return NULL; } } @@ -1937,256 +1936,255 @@ _get_group(preference_t pref) static const char* _get_key(preference_t pref) { - switch (pref) - { - case PREF_CLEAR_PERSIST_HISTORY: - return "clear.persist_history"; - case PREF_SPLASH: - return "splash"; - case PREF_BEEP: - return "beep"; - case PREF_THEME: - return "theme"; - case PREF_VERCHECK: - return "vercheck"; - case PREF_WINTITLE_SHOW: - return "wintitle.show"; - case PREF_WINTITLE_GOODBYE: - return "wintitle.goodbye"; - case PREF_FLASH: - return "flash"; - case PREF_TRAY: - return "tray"; - case PREF_TRAY_READ: - return "tray.read"; - case PREF_ADV_NOTIFY_DISCO_OR_VERSION: - return "adv.notify.discoversion"; - case PREF_INTYPE: - return "intype"; - case PREF_HISTORY: - return "history"; - case PREF_CARBONS: - return "carbons"; - case PREF_RECEIPTS_SEND: - return "receipts.send"; - case PREF_RECEIPTS_REQUEST: - return "receipts.request"; - case PREF_REVEAL_OS: - return "reveal.os"; - case PREF_OCCUPANTS: - return "occupants"; - case PREF_OCCUPANTS_JID: - return "occupants.jid"; - case PREF_OCCUPANTS_WRAP: - return "occupants.wrap"; - case PREF_MUC_PRIVILEGES: - return "privileges"; - case PREF_STATUSES: - return "statuses"; - case PREF_STATUSES_CONSOLE: - return "statuses.console"; - case PREF_STATUSES_CHAT: - return "statuses.chat"; - case PREF_STATUSES_MUC: - return "statuses.muc"; - case PREF_STATES: - return "enabled"; - case PREF_OUTTYPE: - return "outtype"; - case PREF_NOTIFY_TYPING: - return "typing"; - case PREF_NOTIFY_TYPING_CURRENT: - return "typing.current"; - case PREF_NOTIFY_CHAT: - return "message"; - case PREF_NOTIFY_CHAT_CURRENT: - return "message.current"; - case PREF_NOTIFY_CHAT_TEXT: - return "message.text"; - case PREF_NOTIFY_ROOM: - return "room"; - case PREF_NOTIFY_ROOM_TRIGGER: - return "room.trigger"; - case PREF_NOTIFY_ROOM_MENTION: - return "room.mention"; - case PREF_NOTIFY_ROOM_CURRENT: - return "room.current"; - case PREF_NOTIFY_ROOM_TEXT: - return "room.text"; - case PREF_NOTIFY_INVITE: - return "invite"; - case PREF_NOTIFY_SUB: - return "sub"; - case PREF_NOTIFY_MENTION_CASE_SENSITIVE: - return "room.mention.casesensitive"; - case PREF_NOTIFY_MENTION_WHOLE_WORD: - return "room.mention.wholeword"; - case PREF_CHLOG: - return "chlog"; - case PREF_GRLOG: - return "grlog"; - case PREF_AUTOAWAY_CHECK: - return "autoaway.check"; - case PREF_AUTOAWAY_MODE: - return "autoaway.mode"; - case PREF_AUTOAWAY_MESSAGE: - return "autoaway.awaymessage"; - case PREF_AUTOXA_MESSAGE: - return "autoaway.xamessage"; - case PREF_CONNECT_ACCOUNT: - return "account"; - case PREF_DEFAULT_ACCOUNT: - return "defaccount"; - case PREF_OTR_LOG: - return "log"; - case PREF_OTR_POLICY: - return "policy"; - case PREF_OTR_SENDFILE: - return "sendfile"; - case PREF_LOG_ROTATE: - return "rotate"; - case PREF_LOG_SHARED: - return "shared"; - case PREF_PRESENCE: - return "presence"; - case PREF_WRAP: - return "wrap"; - case PREF_TIME_CONSOLE: - return "time.console"; - case PREF_TIME_CHAT: - return "time.chat"; - case PREF_TIME_MUC: - return "time.muc"; - case PREF_TIME_CONFIG: - return "time.config"; - case PREF_TIME_PRIVATE: - return "time.private"; - case PREF_TIME_XMLCONSOLE: - return "time.xmlconsole"; - case PREF_TIME_STATUSBAR: - return "time.statusbar"; - case PREF_TIME_LASTACTIVITY: - return "time.lastactivity"; - case PREF_ROSTER: - return "roster"; - case PREF_ROSTER_OFFLINE: - return "roster.offline"; - case PREF_ROSTER_RESOURCE: - return "roster.resource"; - case PREF_ROSTER_PRESENCE: - return "roster.presence"; - case PREF_ROSTER_STATUS: - return "roster.status"; - case PREF_ROSTER_EMPTY: - return "roster.empty"; - case PREF_ROSTER_BY: - return "roster.by"; - case PREF_ROSTER_ORDER: - return "roster.order"; - case PREF_ROSTER_UNREAD: - return "roster.unread"; - case PREF_ROSTER_COUNT: - return "roster.count"; - case PREF_ROSTER_COUNT_ZERO: - return "roster.count.zero"; - case PREF_ROSTER_PRIORITY: - return "roster.priority"; - case PREF_ROSTER_WRAP: - return "roster.wrap"; - case PREF_ROSTER_RESOURCE_JOIN: - return "roster.resource.join"; - case PREF_ROSTER_CONTACTS: - return "roster.contacts"; - case PREF_ROSTER_UNSUBSCRIBED: - return "roster.unsubscribed"; - case PREF_ROSTER_ROOMS: - return "roster.rooms"; - case PREF_ROSTER_ROOMS_POS: - return "roster.rooms.pos"; - case PREF_ROSTER_ROOMS_BY: - return "roster.rooms.by"; - case PREF_ROSTER_ROOMS_ORDER: - return "roster.rooms.order"; - case PREF_ROSTER_ROOMS_UNREAD: - return "roster.rooms.unread"; - case PREF_ROSTER_ROOMS_SERVER: - return "roster.rooms.server"; - case PREF_ROSTER_ROOMS_USE_AS_NAME: - return "roster.rooms.use.name"; - case PREF_ROSTER_PRIVATE: - return "roster.private"; - case PREF_RESOURCE_TITLE: - return "resource.title"; - case PREF_RESOURCE_MESSAGE: - return "resource.message"; - case PREF_INPBLOCK_DYNAMIC: - return "inpblock.dynamic"; - case PREF_ENC_WARN: - return "enc.warn"; - case PREF_TITLEBAR_MUC_TITLE_JID: - return "titlebar.muc.title.jid"; - case PREF_TITLEBAR_MUC_TITLE_NAME: - return "titlebar.muc.title.name"; - case PREF_PGP_LOG: - return "log"; - case PREF_PGP_SENDFILE: - return "sendfile"; - case PREF_TLS_CERTPATH: - return "tls.certpath"; - case PREF_TLS_SHOW: - return "tls.show"; - case PREF_LASTACTIVITY: - return "lastactivity"; - case PREF_CONSOLE_MUC: - return "console.muc"; - case PREF_CONSOLE_PRIVATE: - return "console.private"; - case PREF_CONSOLE_CHAT: - return "console.chat"; - case PREF_COLOR_NICK: - return "color.nick"; - case PREF_COLOR_NICK_OWN: - return "color.nick.own"; - case PREF_ROSTER_COLOR_NICK: - return "color.roster.nick"; - case PREF_OCCUPANTS_COLOR_NICK: - return "color.occupants.nick"; - case PREF_BOOKMARK_INVITE: - return "bookmark.invite"; - case PREF_PLUGINS_SOURCEPATH: - return "sourcepath"; - case PREF_ROOM_LIST_CACHE: - return "rooms.cache"; - case PREF_STATUSBAR_SHOW_NAME: - return "statusbar.show.name"; - case PREF_STATUSBAR_SHOW_NUMBER: - return "statusbar.show.number"; - case PREF_STATUSBAR_SHOW_READ: - return "statusbar.show.read"; - case PREF_STATUSBAR_SELF: - return "statusbar.self"; - case PREF_STATUSBAR_CHAT: - return "statusbar.chat"; - case PREF_STATUSBAR_ROOM: - return "statusbar.room"; - case PREF_OMEMO_LOG: - return "log"; - case PREF_OMEMO_POLICY: - return "policy"; - case PREF_CORRECTION_ALLOW: - return "correction.allow"; - case PREF_AVATAR_CMD: - return "avatar.cmd"; - case PREF_SLASH_GUARD: - return "slashguard"; - case PREF_MAM: - return "mam"; - case PREF_URL_OPEN_CMD: - return "url.open.cmd"; - case PREF_URL_SAVE_CMD: - return "url.save.cmd"; - default: - return NULL; + switch (pref) { + case PREF_CLEAR_PERSIST_HISTORY: + return "clear.persist_history"; + case PREF_SPLASH: + return "splash"; + case PREF_BEEP: + return "beep"; + case PREF_THEME: + return "theme"; + case PREF_VERCHECK: + return "vercheck"; + case PREF_WINTITLE_SHOW: + return "wintitle.show"; + case PREF_WINTITLE_GOODBYE: + return "wintitle.goodbye"; + case PREF_FLASH: + return "flash"; + case PREF_TRAY: + return "tray"; + case PREF_TRAY_READ: + return "tray.read"; + case PREF_ADV_NOTIFY_DISCO_OR_VERSION: + return "adv.notify.discoversion"; + case PREF_INTYPE: + return "intype"; + case PREF_HISTORY: + return "history"; + case PREF_CARBONS: + return "carbons"; + case PREF_RECEIPTS_SEND: + return "receipts.send"; + case PREF_RECEIPTS_REQUEST: + return "receipts.request"; + case PREF_REVEAL_OS: + return "reveal.os"; + case PREF_OCCUPANTS: + return "occupants"; + case PREF_OCCUPANTS_JID: + return "occupants.jid"; + case PREF_OCCUPANTS_WRAP: + return "occupants.wrap"; + case PREF_MUC_PRIVILEGES: + return "privileges"; + case PREF_STATUSES: + return "statuses"; + case PREF_STATUSES_CONSOLE: + return "statuses.console"; + case PREF_STATUSES_CHAT: + return "statuses.chat"; + case PREF_STATUSES_MUC: + return "statuses.muc"; + case PREF_STATES: + return "enabled"; + case PREF_OUTTYPE: + return "outtype"; + case PREF_NOTIFY_TYPING: + return "typing"; + case PREF_NOTIFY_TYPING_CURRENT: + return "typing.current"; + case PREF_NOTIFY_CHAT: + return "message"; + case PREF_NOTIFY_CHAT_CURRENT: + return "message.current"; + case PREF_NOTIFY_CHAT_TEXT: + return "message.text"; + case PREF_NOTIFY_ROOM: + return "room"; + case PREF_NOTIFY_ROOM_TRIGGER: + return "room.trigger"; + case PREF_NOTIFY_ROOM_MENTION: + return "room.mention"; + case PREF_NOTIFY_ROOM_CURRENT: + return "room.current"; + case PREF_NOTIFY_ROOM_TEXT: + return "room.text"; + case PREF_NOTIFY_INVITE: + return "invite"; + case PREF_NOTIFY_SUB: + return "sub"; + case PREF_NOTIFY_MENTION_CASE_SENSITIVE: + return "room.mention.casesensitive"; + case PREF_NOTIFY_MENTION_WHOLE_WORD: + return "room.mention.wholeword"; + case PREF_CHLOG: + return "chlog"; + case PREF_GRLOG: + return "grlog"; + case PREF_AUTOAWAY_CHECK: + return "autoaway.check"; + case PREF_AUTOAWAY_MODE: + return "autoaway.mode"; + case PREF_AUTOAWAY_MESSAGE: + return "autoaway.awaymessage"; + case PREF_AUTOXA_MESSAGE: + return "autoaway.xamessage"; + case PREF_CONNECT_ACCOUNT: + return "account"; + case PREF_DEFAULT_ACCOUNT: + return "defaccount"; + case PREF_OTR_LOG: + return "log"; + case PREF_OTR_POLICY: + return "policy"; + case PREF_OTR_SENDFILE: + return "sendfile"; + case PREF_LOG_ROTATE: + return "rotate"; + case PREF_LOG_SHARED: + return "shared"; + case PREF_PRESENCE: + return "presence"; + case PREF_WRAP: + return "wrap"; + case PREF_TIME_CONSOLE: + return "time.console"; + case PREF_TIME_CHAT: + return "time.chat"; + case PREF_TIME_MUC: + return "time.muc"; + case PREF_TIME_CONFIG: + return "time.config"; + case PREF_TIME_PRIVATE: + return "time.private"; + case PREF_TIME_XMLCONSOLE: + return "time.xmlconsole"; + case PREF_TIME_STATUSBAR: + return "time.statusbar"; + case PREF_TIME_LASTACTIVITY: + return "time.lastactivity"; + case PREF_ROSTER: + return "roster"; + case PREF_ROSTER_OFFLINE: + return "roster.offline"; + case PREF_ROSTER_RESOURCE: + return "roster.resource"; + case PREF_ROSTER_PRESENCE: + return "roster.presence"; + case PREF_ROSTER_STATUS: + return "roster.status"; + case PREF_ROSTER_EMPTY: + return "roster.empty"; + case PREF_ROSTER_BY: + return "roster.by"; + case PREF_ROSTER_ORDER: + return "roster.order"; + case PREF_ROSTER_UNREAD: + return "roster.unread"; + case PREF_ROSTER_COUNT: + return "roster.count"; + case PREF_ROSTER_COUNT_ZERO: + return "roster.count.zero"; + case PREF_ROSTER_PRIORITY: + return "roster.priority"; + case PREF_ROSTER_WRAP: + return "roster.wrap"; + case PREF_ROSTER_RESOURCE_JOIN: + return "roster.resource.join"; + case PREF_ROSTER_CONTACTS: + return "roster.contacts"; + case PREF_ROSTER_UNSUBSCRIBED: + return "roster.unsubscribed"; + case PREF_ROSTER_ROOMS: + return "roster.rooms"; + case PREF_ROSTER_ROOMS_POS: + return "roster.rooms.pos"; + case PREF_ROSTER_ROOMS_BY: + return "roster.rooms.by"; + case PREF_ROSTER_ROOMS_ORDER: + return "roster.rooms.order"; + case PREF_ROSTER_ROOMS_UNREAD: + return "roster.rooms.unread"; + case PREF_ROSTER_ROOMS_SERVER: + return "roster.rooms.server"; + case PREF_ROSTER_ROOMS_USE_AS_NAME: + return "roster.rooms.use.name"; + case PREF_ROSTER_PRIVATE: + return "roster.private"; + case PREF_RESOURCE_TITLE: + return "resource.title"; + case PREF_RESOURCE_MESSAGE: + return "resource.message"; + case PREF_INPBLOCK_DYNAMIC: + return "inpblock.dynamic"; + case PREF_ENC_WARN: + return "enc.warn"; + case PREF_TITLEBAR_MUC_TITLE_JID: + return "titlebar.muc.title.jid"; + case PREF_TITLEBAR_MUC_TITLE_NAME: + return "titlebar.muc.title.name"; + case PREF_PGP_LOG: + return "log"; + case PREF_PGP_SENDFILE: + return "sendfile"; + case PREF_TLS_CERTPATH: + return "tls.certpath"; + case PREF_TLS_SHOW: + return "tls.show"; + case PREF_LASTACTIVITY: + return "lastactivity"; + case PREF_CONSOLE_MUC: + return "console.muc"; + case PREF_CONSOLE_PRIVATE: + return "console.private"; + case PREF_CONSOLE_CHAT: + return "console.chat"; + case PREF_COLOR_NICK: + return "color.nick"; + case PREF_COLOR_NICK_OWN: + return "color.nick.own"; + case PREF_ROSTER_COLOR_NICK: + return "color.roster.nick"; + case PREF_OCCUPANTS_COLOR_NICK: + return "color.occupants.nick"; + case PREF_BOOKMARK_INVITE: + return "bookmark.invite"; + case PREF_PLUGINS_SOURCEPATH: + return "sourcepath"; + case PREF_ROOM_LIST_CACHE: + return "rooms.cache"; + case PREF_STATUSBAR_SHOW_NAME: + return "statusbar.show.name"; + case PREF_STATUSBAR_SHOW_NUMBER: + return "statusbar.show.number"; + case PREF_STATUSBAR_SHOW_READ: + return "statusbar.show.read"; + case PREF_STATUSBAR_SELF: + return "statusbar.self"; + case PREF_STATUSBAR_CHAT: + return "statusbar.chat"; + case PREF_STATUSBAR_ROOM: + return "statusbar.room"; + case PREF_OMEMO_LOG: + return "log"; + case PREF_OMEMO_POLICY: + return "policy"; + case PREF_CORRECTION_ALLOW: + return "correction.allow"; + case PREF_AVATAR_CMD: + return "avatar.cmd"; + case PREF_SLASH_GUARD: + return "slashguard"; + case PREF_MAM: + return "mam"; + case PREF_URL_OPEN_CMD: + return "url.open.cmd"; + case PREF_URL_SAVE_CMD: + return "url.save.cmd"; + default: + return NULL; } } diff --git a/src/omemo/crypto.c b/src/omemo/crypto.c index 3be64636..a9f72626 100644 --- a/src/omemo/crypto.c +++ b/src/omemo/crypto.c @@ -41,7 +41,7 @@ #include "omemo/omemo.h" #include "omemo/crypto.h" -#define AES256_GCM_TAG_LENGTH 16 +#define AES256_GCM_TAG_LENGTH 16 #define AES256_GCM_BUFFER_SIZE 1024 int @@ -377,8 +377,10 @@ out: return res; } -int aes256gcm_crypt_file(FILE *in, FILE *out, off_t file_size, - unsigned char key[], unsigned char nonce[], bool encrypt) { +int +aes256gcm_crypt_file(FILE* in, FILE* out, off_t file_size, + unsigned char key[], unsigned char nonce[], bool encrypt) +{ if (!gcry_control(GCRYCTL_INITIALIZATION_FINISHED_P)) { fputs("libgcrypt has not been initialized\n", stderr); @@ -393,7 +395,7 @@ int aes256gcm_crypt_file(FILE *in, FILE *out, off_t file_size, gcry_cipher_hd_t hd; res = gcry_cipher_open(&hd, GCRY_CIPHER_AES256, GCRY_CIPHER_MODE_GCM, - GCRY_CIPHER_SECURE); + GCRY_CIPHER_SECURE); if (res != GPG_ERR_NO_ERROR) { goto out; } @@ -463,18 +465,20 @@ out: return res; } -char *aes256gcm_create_secure_fragment(unsigned char *key, unsigned char *nonce) { +char* +aes256gcm_create_secure_fragment(unsigned char* key, unsigned char* nonce) +{ int key_size = AES256_GCM_KEY_LENGTH; int nonce_size = AES256_GCM_NONCE_LENGTH; - char *fragment = gcry_malloc_secure((nonce_size+key_size)*2+1); + char* fragment = gcry_malloc_secure((nonce_size + key_size) * 2 + 1); for (int i = 0; i < nonce_size; i++) { - sprintf(&(fragment[i*2]), "%02x", nonce[i]); + sprintf(&(fragment[i * 2]), "%02x", nonce[i]); } for (int i = 0; i < key_size; i++) { - sprintf(&(fragment[(i+nonce_size)*2]), "%02x", key[i]); + sprintf(&(fragment[(i + nonce_size) * 2]), "%02x", key[i]); } return fragment; diff --git a/src/omemo/crypto.h b/src/omemo/crypto.h index e8d91ecc..f0090daf 100644 --- a/src/omemo/crypto.h +++ b/src/omemo/crypto.h @@ -40,7 +40,7 @@ #define AES128_GCM_IV_LENGTH 12 #define AES128_GCM_TAG_LENGTH 16 -#define AES256_GCM_KEY_LENGTH 32 +#define AES256_GCM_KEY_LENGTH 32 #define AES256_GCM_NONCE_LENGTH 12 int omemo_crypto_init(void); @@ -181,13 +181,13 @@ int aes128gcm_encrypt(unsigned char* ciphertext, size_t* ciphertext_len, const unsigned char* const plaintext, size_t plaintext_len, const unsigned char* const iv, const unsigned char* const key); -int aes128gcm_decrypt(unsigned char *plaintext, - size_t *plaintext_len, const unsigned char *const ciphertext, - size_t ciphertext_len, const unsigned char *const iv, size_t iv_len, - const unsigned char *const key, const unsigned char *const tag); +int aes128gcm_decrypt(unsigned char* plaintext, + size_t* plaintext_len, const unsigned char* const ciphertext, + size_t ciphertext_len, const unsigned char* const iv, size_t iv_len, + const unsigned char* const key, const unsigned char* const tag); -int aes256gcm_crypt_file(FILE *in, FILE *out, off_t file_size, - unsigned char key[], unsigned char nonce[], bool encrypt); +int aes256gcm_crypt_file(FILE* in, FILE* out, off_t file_size, + unsigned char key[], unsigned char nonce[], bool encrypt); -char *aes256gcm_create_secure_fragment(unsigned char *key, - unsigned char *nonce); +char* aes256gcm_create_secure_fragment(unsigned char* key, + unsigned char* nonce); diff --git a/src/omemo/omemo.c b/src/omemo/omemo.c index c6f92e46..e08d3f06 100644 --- a/src/omemo/omemo.c +++ b/src/omemo/omemo.c @@ -1654,13 +1654,16 @@ _generate_signed_pre_key(void) SIGNAL_UNREF(signed_pre_key); } - -void omemo_free(void *a) { +void +omemo_free(void* a) +{ gcry_free(a); } -char *omemo_encrypt_file(FILE *in, FILE *out, off_t file_size, int *gcry_res) { - unsigned char *key = gcry_random_bytes_secure( +char* +omemo_encrypt_file(FILE* in, FILE* out, off_t file_size, int* gcry_res) +{ + unsigned char* key = gcry_random_bytes_secure( AES256_GCM_KEY_LENGTH, GCRY_VERY_STRONG_RANDOM); @@ -1668,7 +1671,7 @@ char *omemo_encrypt_file(FILE *in, FILE *out, off_t file_size, int *gcry_res) { unsigned char nonce[AES256_GCM_NONCE_LENGTH]; gcry_create_nonce(nonce, AES256_GCM_NONCE_LENGTH); - char *fragment = aes256gcm_create_secure_fragment(key, nonce); + char* fragment = aes256gcm_create_secure_fragment(key, nonce); *gcry_res = aes256gcm_crypt_file(in, out, file_size, key, nonce, true); if (*gcry_res != GPG_ERR_NO_ERROR) { diff --git a/src/omemo/omemo.h b/src/omemo/omemo.h index 0bddd9cd..e875dadd 100644 --- a/src/omemo/omemo.h +++ b/src/omemo/omemo.h @@ -95,8 +95,8 @@ void omemo_start_muc_sessions(const char* const roomjid); void omemo_start_device_session(const char* const jid, uint32_t device_id, GList* prekeys, uint32_t signed_prekey_id, const unsigned char* const signed_prekey, size_t signed_prekey_len, const unsigned char* const signature, size_t signature_len, const unsigned char* const identity_key, size_t identity_key_len); gboolean omemo_loaded(void); -char * omemo_on_message_send(ProfWin *win, const char *const message, gboolean request_receipt, gboolean muc, const char *const replace_id); -char * omemo_on_message_recv(const char *const from, uint32_t sid, const unsigned char *const iv, size_t iv_len, GList *keys, const unsigned char *const payload, size_t payload_len, gboolean muc, gboolean *trusted); +char* omemo_on_message_send(ProfWin* win, const char* const message, gboolean request_receipt, gboolean muc, const char* const replace_id); +char* omemo_on_message_recv(const char* const from, uint32_t sid, const unsigned char* const iv, size_t iv_len, GList* keys, const unsigned char* const payload, size_t payload_len, gboolean muc, gboolean* trusted); -char *omemo_encrypt_file(FILE *in, FILE *out, off_t file_size, int *gcry_res); -void omemo_free(void *a); +char* omemo_encrypt_file(FILE* in, FILE* out, off_t file_size, int* gcry_res); +void omemo_free(void* a); diff --git a/src/tools/http_download.c b/src/tools/http_download.c index 3d4003f9..09e6bb6e 100644 --- a/src/tools/http_download.c +++ b/src/tools/http_download.c @@ -58,12 +58,12 @@ #define FALLBACK_MSG "" -GSList *download_processes = NULL; +GSList* download_processes = NULL; static int -_xferinfo(void *userdata, curl_off_t dltotal, curl_off_t dlnow, curl_off_t ultotal, curl_off_t ulnow) +_xferinfo(void* userdata, curl_off_t dltotal, curl_off_t dlnow, curl_off_t ultotal, curl_off_t ulnow) { - HTTPDownload *download = (HTTPDownload *)userdata; + HTTPDownload* download = (HTTPDownload*)userdata; pthread_mutex_lock(&lock); @@ -84,7 +84,7 @@ _xferinfo(void *userdata, curl_off_t dltotal, curl_off_t dlnow, curl_off_t ultot dlperc = (100 * dlnow) / dltotal; } - char *msg; + char* msg; if (asprintf(&msg, "Downloading '%s': %d%%", download->url, dlperc) == -1) { msg = strdup(FALLBACK_MSG); } @@ -98,20 +98,20 @@ _xferinfo(void *userdata, curl_off_t dltotal, curl_off_t dlnow, curl_off_t ultot #if LIBCURL_VERSION_NUM < 0x072000 static int -_older_progress(void *p, double dltotal, double dlnow, double ultotal, double ulnow) +_older_progress(void* p, double dltotal, double dlnow, double ultotal, double ulnow) { return _xferinfo(p, (curl_off_t)dltotal, (curl_off_t)dlnow, (curl_off_t)ultotal, (curl_off_t)ulnow); } #endif -void * -http_file_get(void *userdata) +void* +http_file_get(void* userdata) { - HTTPDownload *download = (HTTPDownload *)userdata; + HTTPDownload* download = (HTTPDownload*)userdata; - char *err = NULL; + char* err = NULL; - CURL *curl; + CURL* curl; CURLcode res; download->cancel = 0; @@ -125,7 +125,7 @@ http_file_get(void *userdata) win_print_http_transfer(download->window, msg, download->url); free(msg); - char *cert_path = prefs_get_string(PREF_TLS_CERTPATH); + char* cert_path = prefs_get_string(PREF_TLS_CERTPATH); pthread_mutex_unlock(&lock); curl_global_init(CURL_GLOBAL_ALL); @@ -133,16 +133,16 @@ http_file_get(void *userdata) curl_easy_setopt(curl, CURLOPT_URL, download->url); - #if LIBCURL_VERSION_NUM >= 0x072000 +#if LIBCURL_VERSION_NUM >= 0x072000 curl_easy_setopt(curl, CURLOPT_XFERINFOFUNCTION, _xferinfo); curl_easy_setopt(curl, CURLOPT_XFERINFODATA, download); - #else +#else curl_easy_setopt(curl, CURLOPT_PROGRESSFUNCTION, _older_progress); curl_easy_setopt(curl, CURLOPT_PROGRESSDATA, download); - #endif +#endif curl_easy_setopt(curl, CURLOPT_NOPROGRESS, 0L); - curl_easy_setopt(curl, CURLOPT_WRITEDATA, (void *)download->filehandle); + curl_easy_setopt(curl, CURLOPT_WRITEDATA, (void*)download->filehandle); curl_easy_setopt(curl, CURLOPT_USERAGENT, "profanity"); @@ -165,7 +165,7 @@ http_file_get(void *userdata) g_free(cert_path); if (err) { - char *msg; + char* msg; if (download->cancel) { if (asprintf(&msg, "Downloading '%s' failed: Download was canceled", download->url) == -1) { msg = strdup(FALLBACK_MSG); @@ -200,11 +200,11 @@ http_file_get(void *userdata) } void -http_download_cancel_processes(ProfWin *window) +http_download_cancel_processes(ProfWin* window) { - GSList *download_process = download_processes; + GSList* download_process = download_processes; while (download_process) { - HTTPDownload *download = download_process->data; + HTTPDownload* download = download_process->data; if (download->window == window) { download->cancel = 1; break; @@ -214,21 +214,23 @@ http_download_cancel_processes(ProfWin *window) } void -http_download_add_download(HTTPDownload *download) +http_download_add_download(HTTPDownload* download) { download_processes = g_slist_append(download_processes, download); } -char *http_basename_from_url(const char *url) { - const char *default_name = "index.html"; +char* +http_basename_from_url(const char* url) +{ + const char* default_name = "index.html"; - GFile *file = g_file_new_for_uri(url); - char *filename = g_file_get_basename(file); + GFile* file = g_file_new_for_uri(url); + char* filename = g_file_get_basename(file); g_object_unref(file); if (g_strcmp0(filename, ".") == 0 - || g_strcmp0(filename, "..") == 0 - || g_strcmp0(filename, G_DIR_SEPARATOR_S) == 0) { + || g_strcmp0(filename, "..") == 0 + || g_strcmp0(filename, G_DIR_SEPARATOR_S) == 0) { g_free(filename); return strdup(default_name); } diff --git a/src/tools/http_download.h b/src/tools/http_download.h index 868b99f2..ba8b5023 100644 --- a/src/tools/http_download.h +++ b/src/tools/http_download.h @@ -46,20 +46,21 @@ #include "ui/win_types.h" -typedef struct http_download_t { - char *url; - FILE *filehandle; +typedef struct http_download_t +{ + char* url; + FILE* filehandle; curl_off_t bytes_received; - ProfWin *window; + ProfWin* window; pthread_t worker; int cancel; } HTTPDownload; -void* http_file_get(void *userdata); +void* http_file_get(void* userdata); -void http_download_cancel_processes(ProfWin *window); -void http_download_add_download(HTTPDownload *download); +void http_download_cancel_processes(ProfWin* window); +void http_download_add_download(HTTPDownload* download); -char *http_basename_from_url(const char *url); +char* http_basename_from_url(const char* url); #endif diff --git a/src/tools/http_upload.c b/src/tools/http_upload.c index 2fb32062..fcdd582a 100644 --- a/src/tools/http_upload.c +++ b/src/tools/http_upload.c @@ -128,9 +128,11 @@ _data_callback(void* ptr, size_t size, size_t nmemb, void* data) return realsize; } -int format_alt_url(char *original_url, char *new_scheme, char *new_fragment, char **new_url) { +int +format_alt_url(char* original_url, char* new_scheme, char* new_fragment, char** new_url) +{ int ret = 0; - CURLU *h = curl_url(); + CURLU* h = curl_url(); if ((ret = curl_url_set(h, CURLUPART_URL, original_url, 0)) != 0) { goto out; @@ -155,12 +157,12 @@ out: return ret; } -void * -http_file_put(void *userdata) +void* +http_file_put(void* userdata) { HTTPUpload* upload = (HTTPUpload*)userdata; - FILE *fh = NULL; + FILE* fh = NULL; char* err = NULL; char* content_type_header; @@ -283,10 +285,10 @@ http_file_put(void *userdata) win_mark_received(upload->window, upload->put_url); free(msg); - char *url = NULL; + char* url = NULL; if (format_alt_url(upload->get_url, upload->alt_scheme, upload->alt_fragment, &url) != 0) { - char *msg; - if (asprintf(&msg, "Uploading '%s' failed: Bad URL ('%s')", upload->filename, upload->get_url)== -1) { + char* msg; + if (asprintf(&msg, "Uploading '%s' failed: Bad URL ('%s')", upload->filename, upload->get_url) == -1) { msg = strdup(FALLBACK_MSG); } cons_show_error(msg); @@ -295,21 +297,21 @@ http_file_put(void *userdata) switch (upload->window->type) { case WIN_CHAT: { - ProfChatWin *chatwin = (ProfChatWin*)(upload->window); + ProfChatWin* chatwin = (ProfChatWin*)(upload->window); assert(chatwin->memcheck == PROFCHATWIN_MEMCHECK); cl_ev_send_msg(chatwin, url, url); break; } case WIN_PRIVATE: { - ProfPrivateWin *privatewin = (ProfPrivateWin*)(upload->window); + ProfPrivateWin* privatewin = (ProfPrivateWin*)(upload->window); assert(privatewin->memcheck == PROFPRIVATEWIN_MEMCHECK); cl_ev_send_priv_msg(privatewin, url, url); break; } case WIN_MUC: { - ProfMucWin *mucwin = (ProfMucWin*)(upload->window); + ProfMucWin* mucwin = (ProfMucWin*)(upload->window); assert(mucwin->memcheck == PROFMUCWIN_MEMCHECK); cl_ev_send_muc_msg(mucwin, url, url); break; @@ -342,14 +344,14 @@ file_mime_type(const char* const filename) { char* out_mime_type; char file_header[FILE_HEADER_BYTES]; - FILE *fh; + FILE* fh; if (!(fh = fopen(filename, "rb"))) { return strdup(FALLBACK_MIMETYPE); } size_t file_header_size = fread(file_header, 1, FILE_HEADER_BYTES, fh); fclose(fh); - char *content_type = g_content_type_guess(filename, (unsigned char*)file_header, file_header_size, NULL); + char* content_type = g_content_type_guess(filename, (unsigned char*)file_header, file_header_size, NULL); if (content_type != NULL) { char* mime_type = g_content_type_get_mime_type(content_type); out_mime_type = strdup(mime_type); @@ -361,7 +363,8 @@ file_mime_type(const char* const filename) return out_mime_type; } -off_t file_size(int filedes) +off_t +file_size(int filedes) { struct stat st; fstat(filedes, &st); diff --git a/src/tools/http_upload.h b/src/tools/http_upload.h index 9e801973..4e95d4d8 100644 --- a/src/tools/http_upload.h +++ b/src/tools/http_upload.h @@ -45,17 +45,18 @@ #include "ui/win_types.h" -typedef struct http_upload_t { - char *filename; - FILE *filehandle; +typedef struct http_upload_t +{ + char* filename; + FILE* filehandle; off_t filesize; curl_off_t bytes_sent; - char *mime_type; - char *get_url; - char *put_url; - char *alt_scheme; - char *alt_fragment; - ProfWin *window; + char* mime_type; + char* get_url; + char* put_url; + char* alt_scheme; + char* alt_fragment; + ProfWin* window; pthread_t worker; int cancel; } HTTPUpload; diff --git a/src/ui/console.c b/src/ui/console.c index 03a5b21f..8d028139 100644 --- a/src/ui/console.c +++ b/src/ui/console.c @@ -2192,7 +2192,7 @@ cons_show_omemo_prefs(void) cons_show("OMEMO char (/omemo char) : %s", ch); free(ch); - cons_alert(); + cons_alert(NULL); } void diff --git a/src/ui/window.c b/src/ui/window.c index c03b3aab..6f77f107 100644 --- a/src/ui/window.c +++ b/src/ui/window.c @@ -1390,7 +1390,7 @@ win_appendln_highlight(ProfWin* window, theme_item_t theme_item, const char* con } void -win_print_http_transfer(ProfWin *window, const char *const message, char *url) +win_print_http_transfer(ProfWin* window, const char* const message, char* url) { win_print_outgoing_with_receipt(window, "!", NULL, message, url, NULL); } diff --git a/src/ui/window.h b/src/ui/window.h index 86d1dbfd..7ff25a87 100644 --- a/src/ui/window.h +++ b/src/ui/window.h @@ -72,7 +72,7 @@ void win_println_incoming_muc_msg(ProfWin* window, char* show_char, int flags, c void win_print_outgoing_muc_msg(ProfWin* window, char* show_char, const char* const me, const char* const id, const char* const replace_id, const char* const message); void win_print_history(ProfWin* window, const ProfMessage* const message); -void win_print_http_transfer(ProfWin *window, const char *const message, char *url); +void win_print_http_transfer(ProfWin* window, const char* const message, char* url); void win_newline(ProfWin* window); void win_redraw(ProfWin* window); diff --git a/tests/unittests/omemo/stub_omemo.c b/tests/unittests/omemo/stub_omemo.c index 7cca34d5..f6cc4491 100644 --- a/tests/unittests/omemo/stub_omemo.c +++ b/tests/unittests/omemo/stub_omemo.c @@ -79,15 +79,38 @@ omemo_own_fingerprint(gboolean formatted) return NULL; } -void omemo_start_muc_sessions(const char *const roomjid) {} -void omemo_start_session(const char *const barejid) {} -void omemo_trust(const char *const jid, const char *const fingerprint_formatted) {} -void omemo_untrust(const char *const jid, const char *const fingerprint_formatted) {} -void omemo_devicelist_publish(GList *device_list) {} -void omemo_publish_crypto_materials(void) {} -void omemo_start_sessions(void) {} +void +omemo_start_muc_sessions(const char* const roomjid) +{ +} +void +omemo_start_session(const char* const barejid) +{ +} +void +omemo_trust(const char* const jid, const char* const fingerprint_formatted) +{ +} +void +omemo_untrust(const char* const jid, const char* const fingerprint_formatted) +{ +} +void +omemo_devicelist_publish(GList* device_list) +{ +} +void +omemo_publish_crypto_materials(void) +{ +} +void +omemo_start_sessions(void) +{ +} -char *omemo_encrypt_file(FILE *in, FILE *out, off_t file_size, int *gcry_res) { +char* +omemo_encrypt_file(FILE* in, FILE* out, off_t file_size, int* gcry_res) +{ return NULL; }; -void omemo_free(void *a) {}; +void omemo_free(void* a){}; diff --git a/tests/unittests/test_http_download.c b/tests/unittests/test_http_download.c index c0516a66..96d45d03 100644 --- a/tests/unittests/test_http_download.c +++ b/tests/unittests/test_http_download.c @@ -10,62 +10,65 @@ #include "tools/http_download.h" -typedef struct { - char *url; - char *basename; +typedef struct +{ + char* url; + char* basename; } url_test_t; -void http_basename_from_url_td(void **state) { +void +http_basename_from_url_td(void** state) +{ int num_tests = 11; url_test_t tests[] = { - (url_test_t){ - .url = "https://host.test/image.jpeg", - .basename = "image.jpeg", - }, - (url_test_t){ - .url = "https://host.test/image.jpeg#somefragment", - .basename = "image.jpeg", - }, - (url_test_t){ - .url = "https://host.test/image.jpeg?query=param", - .basename = "image.jpeg", - }, - (url_test_t){ - .url = "https://host.test/image.jpeg?query=param&another=one", - .basename = "image.jpeg", - }, - (url_test_t){ - .url = "https://host.test/images/", - .basename = "images", - }, - (url_test_t){ - .url = "https://host.test/images/../../file", - .basename = "file", - }, - (url_test_t){ - .url = "https://host.test/images/../../file/..", - .basename = "index.html", - }, - (url_test_t){ - .url = "https://host.test/images/..//", - .basename = "index.html", - }, - (url_test_t){ - .url = "https://host.test/", - .basename = "index.html", - }, - (url_test_t){ - .url = "https://host.test", - .basename = "index.html", - }, - (url_test_t){ - .url = "aesgcm://host.test", - .basename = "index.html", - }, + (url_test_t){ + .url = "https://host.test/image.jpeg", + .basename = "image.jpeg", + }, + (url_test_t){ + .url = "https://host.test/image.jpeg#somefragment", + .basename = "image.jpeg", + }, + (url_test_t){ + .url = "https://host.test/image.jpeg?query=param", + .basename = "image.jpeg", + }, + (url_test_t){ + .url = "https://host.test/image.jpeg?query=param&another=one", + .basename = "image.jpeg", + }, + (url_test_t){ + .url = "https://host.test/images/", + .basename = "images", + }, + (url_test_t){ + .url = "https://host.test/images/../../file", + .basename = "file", + }, + (url_test_t){ + .url = "https://host.test/images/../../file/..", + .basename = "index.html", + }, + (url_test_t){ + .url = "https://host.test/images/..//", + .basename = "index.html", + }, + (url_test_t){ + .url = "https://host.test/", + .basename = "index.html", + }, + (url_test_t){ + .url = "https://host.test", + .basename = "index.html", + }, + (url_test_t){ + .url = "aesgcm://host.test", + .basename = "index.html", + }, }; - char *basename; - for(int i = 0; i < num_tests; i++) { + char* basename; + for (int i = 0; i < num_tests; i++) { basename = http_basename_from_url(tests[i].url); assert_string_equal(basename, tests[i].basename); } diff --git a/tests/unittests/test_http_download.h b/tests/unittests/test_http_download.h index ce8913eb..a1c62a7f 100644 --- a/tests/unittests/test_http_download.h +++ b/tests/unittests/test_http_download.h @@ -1 +1 @@ -void http_basename_from_url_td(void **state); +void http_basename_from_url_td(void** state); diff --git a/tests/unittests/tools/stub_http_download.c b/tests/unittests/tools/stub_http_download.c index a07146b4..202c9cbf 100644 --- a/tests/unittests/tools/stub_http_download.c +++ b/tests/unittests/tools/stub_http_download.c @@ -6,23 +6,23 @@ typedef struct prof_win_t ProfWin; -typedef struct http_download_t { - char *url; - char *filename; - char *directory; - FILE *filehandle; +typedef struct http_download_t +{ + char* url; + char* filename; + char* directory; + FILE* filehandle; curl_off_t bytes_received; - ProfWin *window; + ProfWin* window; pthread_t worker; int cancel; } HTTPDownload; +void* http_file_get(void* userdata); -void* http_file_get(void *userdata); +void http_download_cancel_processes(ProfWin* window); +void http_download_add_download(HTTPDownload* download); -void http_download_cancel_processes(ProfWin *window); -void http_download_add_download(HTTPDownload *download); - -char *http_filename_from_url(const char *url); +char* http_filename_from_url(const char* url); #endif diff --git a/tests/unittests/ui/stub_ui.c b/tests/unittests/ui/stub_ui.c index f284d04b..06f0d988 100644 --- a/tests/unittests/ui/stub_ui.c +++ b/tests/unittests/ui/stub_ui.c @@ -236,97 +236,16 @@ ui_contact_online(char* barejid, Resource* resource, GDateTime* last_activity) check_expected(last_activity); } -void ui_contact_typing(const char * const barejid, const char * const resource) {} -void chatwin_incoming_msg(ProfChatWin *chatwin, ProfMessage *message, gboolean win_created) {} -void chatwin_receipt_received(ProfChatWin *chatwin, const char * const id) {} - -void privwin_incoming_msg(ProfPrivateWin *privatewin, ProfMessage *message) {} - -void ui_disconnected(void) {} -void chatwin_recipient_gone(ProfChatWin *chatwin) {} - -void chatwin_outgoing_msg(ProfChatWin *chatwin, const char *const message, char *id, prof_enc_t enc_mode, gboolean request_receipt, const char *const replace_id) {} -void chatwin_outgoing_carbon(ProfChatWin *chatwin, ProfMessage *message) {} -void privwin_outgoing_msg(ProfPrivateWin *privwin, const char * const message) {} - -void privwin_occupant_offline(ProfPrivateWin *privwin) {} -void privwin_occupant_kicked(ProfPrivateWin *privwin, const char *const actor, const char *const reason) {} -void privwin_occupant_banned(ProfPrivateWin *privwin, const char *const actor, const char *const reason) {} -void privwin_occupant_online(ProfPrivateWin *privwin) {} -void privwin_message_occupant_offline(ProfPrivateWin *privwin) {} - -void privwin_message_left_room(ProfPrivateWin *privwin) {} - -void ui_room_join(const char * const roomjid, gboolean focus) {} -void ui_switch_to_room(const char * const roomjid) {} - -void mucwin_role_change(ProfMucWin *mucwin, const char * const role, const char * const actor, - const char * const reason) {} -void mucwin_affiliation_change(ProfMucWin *mucwin, const char * const affiliation, const char * const actor, - const char * const reason) {} -void mucwin_role_and_affiliation_change(ProfMucWin *mucwin, const char * const role, - const char * const affiliation, const char * const actor, const char * const reason) {} -void mucwin_occupant_role_change(ProfMucWin *mucwin, const char * const nick, const char * const role, - const char * const actor, const char * const reason) {} -void mucwin_occupant_affiliation_change(ProfMucWin *mucwin, const char * const nick, const char * const affiliation, - const char * const actor, const char * const reason) {} -void mucwin_occupant_role_and_affiliation_change(ProfMucWin *mucwin, const char * const nick, const char * const role, - const char * const affiliation, const char * const actor, const char * const reason) {} -void mucwin_roster(ProfMucWin *mucwin, GList *occupants, const char * const presence) {} -void mucwin_history(ProfMucWin *mucwin, const ProfMessage *const message) {} -void mucwin_incoming_msg(ProfMucWin *mucwin, const ProfMessage *const message, GSList *mentions, GList *triggers, gboolean filter_reflection) {} -void mucwin_outgoing_msg(ProfMucWin *mucwin, const char *const message, const char *const id, prof_enc_t enc_mode, const char *const replace_id) {} -void mucwin_subject(ProfMucWin *mucwin, const char * const nick, const char * const subject) {} -void mucwin_requires_config(ProfMucWin *mucwin) {} -void ui_room_destroy(const char * const roomjid) {} -void mucwin_info(ProfMucWin *mucwin) {} -void mucwin_show_role_list(ProfMucWin *mucwin, muc_role_t role) {} -void mucwin_show_affiliation_list(ProfMucWin *mucwin, muc_affiliation_t affiliation) {} -void mucwin_room_info_error(ProfMucWin *mucwin, const char * const error) {} -void mucwin_room_disco_info(ProfMucWin *mucwin, GSList *identities, GSList *features) {} -void ui_room_destroyed(const char * const roomjid, const char * const reason, const char * const new_jid, - const char * const password) {} -void ui_room_kicked(const char * const roomjid, const char * const actor, const char * const reason) {} -void mucwin_occupant_kicked(ProfMucWin *mucwin, const char * const nick, const char * const actor, - const char * const reason) {} -void ui_room_banned(const char * const roomjid, const char * const actor, const char * const reason) {} -void mucwin_occupant_banned(ProfMucWin *mucwin, const char * const nick, const char * const actor, - const char * const reason) {} -void ui_leave_room(const char * const roomjid) {} -void mucwin_broadcast(ProfMucWin *mucwin, const char * const message) {} -void mucwin_occupant_offline(ProfMucWin *mucwin, const char * const nick) {} -void mucwin_occupant_online(ProfMucWin *mucwin, const char * const nick, const char * const roles, - const char * const affiliation, const char * const show, const char * const status) {} -void mucwin_occupant_nick_change(ProfMucWin *mucwin, const char * const old_nick, const char * const nick) {} -void mucwin_nick_change(ProfMucWin *mucwin, const char * const nick) {} -void mucwin_occupant_presence(ProfMucWin *mucwin, const char * const nick, const char * const show, - const char * const status) {} -void mucwin_update_occupants(ProfMucWin *mucwin) {} -void mucwin_show_occupants(ProfMucWin *mucwin) {} -void mucwin_hide_occupants(ProfMucWin *mucwin) {} -void mucwin_set_enctext(ProfMucWin *mucwin, const char *const enctext) {} -void mucwin_unset_enctext(ProfMucWin *mucwin) {} -void mucwin_set_message_char(ProfMucWin *mucwin, const char *const ch) {} -void mucwin_unset_message_char(ProfMucWin *mucwin) {} - -void win_update_entry_message(ProfWin *window, const char *const id, const char *const message) {}; -void win_mark_received(ProfWin *window, const char *const id) {}; -void win_print_http_transfer(ProfWin *window, const char *const message, char *url) {}; - -void ui_show_roster(void) {} -void ui_hide_roster(void) {} -void ui_roster_add(const char * const barejid, const char * const name) {} -void ui_roster_remove(const char * const barejid) {} -void ui_contact_already_in_group(const char * const contact, const char * const group) {} -void ui_contact_not_in_group(const char * const contact, const char * const group) {} -void ui_group_added(const char * const contact, const char * const group) {} -void ui_group_removed(const char * const contact, const char * const group) {} -void chatwin_contact_online(ProfChatWin *chatwin, Resource *resource, GDateTime *last_activity) {} -void chatwin_contact_offline(ProfChatWin *chatwin, char *resource, char *status) {} - -void ui_contact_offline(char *barejid, char *resource, char *status) {} - -void ui_handle_recipient_error(const char * const recipient, const char * const err_msg) +void +ui_contact_typing(const char* const barejid, const char* const resource) +{ +} +void +chatwin_incoming_msg(ProfChatWin* chatwin, ProfMessage* message, gboolean win_created) +{ +} +void +chatwin_receipt_received(ProfChatWin* chatwin, const char* const id) { } @@ -552,6 +471,10 @@ mucwin_unset_message_char(ProfMucWin* mucwin) { } +void win_update_entry_message(ProfWin* window, const char* const id, const char* const message){}; +void win_mark_received(ProfWin* window, const char* const id){}; +void win_print_http_transfer(ProfWin* window, const char* const message, char* url){}; + void ui_show_roster(void) { |