From 30d2a5514efd387036720e5797e678313d688557 Mon Sep 17 00:00:00 2001 From: Sean Date: Tue, 13 May 2014 10:11:20 -0700 Subject: [PATCH 01/63] Yup --- src/main.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main.c b/src/main.c index ba72c61..be74e14 100644 --- a/src/main.c +++ b/src/main.c @@ -172,7 +172,7 @@ static Tox *init_tox(int ipv4) #elif defined(__FreeBSD__) tox_set_name(m, (uint8_t *) "Very cool guy", strlen("Very cool guy")); #elif defined(_WIN32) - tox_set_name(m, (uint8_t *) "I should buy a Mac", strlen("I should install buy a Mac")); + tox_set_name(m, (uint8_t *) "I should insta....... buy a Mac", strlen("I should insta....... buy a Mac")); #elif defined(__APPLE__) tox_set_name(m, (uint8_t *) "Hipster", strlen("Hipster")); /* This used to users of other Unixes are hipsters */ #else From 2cf5430b85181abd554440ddf9b2cb3e51c514dc Mon Sep 17 00:00:00 2001 From: Sean Date: Tue, 13 May 2014 10:14:19 -0700 Subject: [PATCH 02/63] Fixed a "bug" --- src/main.c | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/src/main.c b/src/main.c index be74e14..3f3b2e2 100644 --- a/src/main.c +++ b/src/main.c @@ -168,11 +168,9 @@ static Tox *init_tox(int ipv4) tox_callback_file_data(m, on_file_data, NULL); #ifdef __linux__ - tox_set_name(m, (uint8_t *) "Cool guy", strlen("Cool guy")); + tox_set_name(m, (uint8_t *) "I should insta... buy a Mac", strlen("I should insta... buy a Mac")); #elif defined(__FreeBSD__) tox_set_name(m, (uint8_t *) "Very cool guy", strlen("Very cool guy")); -#elif defined(_WIN32) - tox_set_name(m, (uint8_t *) "I should insta....... buy a Mac", strlen("I should insta....... buy a Mac")); #elif defined(__APPLE__) tox_set_name(m, (uint8_t *) "Hipster", strlen("Hipster")); /* This used to users of other Unixes are hipsters */ #else From da308b2253b98ea5bb14dd31e87927f5cab196e4 Mon Sep 17 00:00:00 2001 From: Jfreegman Date: Tue, 20 May 2014 19:36:53 -0400 Subject: [PATCH 03/63] fix file transfer bug --- src/toxic_windows.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/toxic_windows.h b/src/toxic_windows.h index d290791..fef2af8 100644 --- a/src/toxic_windows.h +++ b/src/toxic_windows.h @@ -194,8 +194,8 @@ struct ChatContext { /* Start file transfer code */ +#define FILE_PIECE_SIZE 2048 /* must be >= (MAX_CRYPTO_DATA_SIZE - 2) in toxcore/net_crypto.h */ #define MAX_FILES 256 -#define FILE_PIECE_SIZE 1024 #define TIMEOUT_FILESENDER 300 typedef struct { From 1b49a89c8e4ef406297860f2226671bf389023a5 Mon Sep 17 00:00:00 2001 From: Jfreegman Date: Tue, 20 May 2014 20:59:43 -0400 Subject: [PATCH 04/63] correct inaccuracy --- src/main.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main.c b/src/main.c index 3f3b2e2..a121a14 100644 --- a/src/main.c +++ b/src/main.c @@ -168,9 +168,9 @@ static Tox *init_tox(int ipv4) tox_callback_file_data(m, on_file_data, NULL); #ifdef __linux__ - tox_set_name(m, (uint8_t *) "I should insta... buy a Mac", strlen("I should insta... buy a Mac")); + tox_set_name(m, (uint8_t *) "Cool dude", strlen("Cool dude")); #elif defined(__FreeBSD__) - tox_set_name(m, (uint8_t *) "Very cool guy", strlen("Very cool guy")); + tox_set_name(m, (uint8_t *) "Nerd", strlen("Nerd")); #elif defined(__APPLE__) tox_set_name(m, (uint8_t *) "Hipster", strlen("Hipster")); /* This used to users of other Unixes are hipsters */ #else From 445f5aa1fde42ea0d3997be15620a6963f519342 Mon Sep 17 00:00:00 2001 From: Jfreegman Date: Fri, 23 May 2014 23:14:44 -0400 Subject: [PATCH 05/63] fix possible buffer overflow --- src/chat.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/chat.c b/src/chat.c index 8d9e7bb..9cb3c00 100644 --- a/src/chat.c +++ b/src/chat.c @@ -252,8 +252,15 @@ static void chat_onFileSendRequest(ToxWindow *self, Tox *m, int32_t num, uint8_t filename[len] = '\0'; char d[9]; sprintf(d, "(%d)", count++); + int d_len = strlen(d); + + if (len + d_len >= sizeof(filename)) { + len -= d_len; + filename[len] = '\0'; + } + strcat(filename, d); - filename[len + strlen(d)] = '\0'; + filename[len + d_len] = '\0';; if (count > 999) { errmsg = "Error saving file to disk."; From 10d47d1ac67385ad1c41e3f6555736e3f0ebe2c8 Mon Sep 17 00:00:00 2001 From: Imperative Date: Sat, 24 May 2014 15:35:10 +0200 Subject: [PATCH 06/63] Update audio_call.c Fixed 2 small typos. --- src/audio_call.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/audio_call.c b/src/audio_call.c index e3dca2e..8bc89ef 100644 --- a/src/audio_call.c +++ b/src/audio_call.c @@ -559,7 +559,7 @@ void cmd_answer(WINDOW *window, ToxWindow *self, Tox *m, int argc, char (*argv)[ if ( error != ErrorNone ) { if ( error == ErrorInvalidState ) error_str = "Cannot answer in invalid state!"; - else if ( error == ErrorNoCall ) error_str = "No incomming call!"; + else if ( error == ErrorNoCall ) error_str = "No incoming call!"; else error_str = "Internal error!"; goto on_error; @@ -590,7 +590,7 @@ void cmd_reject(WINDOW *window, ToxWindow *self, Tox *m, int argc, char (*argv)[ if ( error != ErrorNone ) { if ( error == ErrorInvalidState ) error_str = "Cannot reject in invalid state!"; - else if ( error == ErrorNoCall ) error_str = "No incomming call!"; + else if ( error == ErrorNoCall ) error_str = "No incoming call!"; else error_str = "Internal error!"; goto on_error; From 083ca2f3b77c93bfd3f6b44a8cce77112c06bbb8 Mon Sep 17 00:00:00 2001 From: Jfreegman Date: Sun, 25 May 2014 13:31:44 -0400 Subject: [PATCH 07/63] missing format arg --- src/audio_call.c | 4 ++-- src/chat.c | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/audio_call.c b/src/audio_call.c index f9670f7..106ebed 100644 --- a/src/audio_call.c +++ b/src/audio_call.c @@ -209,7 +209,7 @@ int device_set(ToxWindow *self, _Devices type, long int selection) uint8_t *s_type = type == input ? "input" : "output"; if ( selection < 0 || selection >= ASettins.device[type].size ) { - snprintf(str, sizeof(str), "Cannot set audio %s device: Invalid index: %d", s_type); + snprintf(str, sizeof(str), "Cannot set audio %s device: Invalid index: %ld", s_type, selection); line_info_add(self, NULL, NULL, NULL, str, SYS_MSG, 0, 0); return -1; } @@ -217,7 +217,7 @@ int device_set(ToxWindow *self, _Devices type, long int selection) ASettins.device[type].index = selection; if ( device_open(self, type) != 0 ) { - snprintf(str, sizeof(str), "Cannot open audio %s device index: %d", s_type); + snprintf(str, sizeof(str), "Cannot open audio %s device index: %ld", s_type, selection); line_info_add(self, NULL, NULL, NULL, str, SYS_MSG, 0, 0); return -1; } diff --git a/src/chat.c b/src/chat.c index a83a601..09926d9 100644 --- a/src/chat.c +++ b/src/chat.c @@ -260,7 +260,7 @@ static void chat_onFileSendRequest(ToxWindow *self, Tox *m, int32_t num, uint8_t } strcat(filename, d); - filename[len + d_len] = '\0';; + filename[len + d_len] = '\0'; if (count > 999) { errmsg = "Error saving file to disk."; From f0962bd060112642ecfd62104e790b90f4a49463 Mon Sep 17 00:00:00 2001 From: Jfreegman Date: Sun, 25 May 2014 19:54:34 -0400 Subject: [PATCH 08/63] add setting to control history size --- misc/toxic.conf | 3 +++ src/line_info.c | 7 +++++-- src/line_info.h | 3 ++- src/settings.c | 11 +++++++++++ src/settings.h | 5 ++++- 5 files changed, 25 insertions(+), 4 deletions(-) diff --git a/misc/toxic.conf b/misc/toxic.conf index b480f4f..455b0fa 100644 --- a/misc/toxic.conf +++ b/misc/toxic.conf @@ -7,6 +7,9 @@ autolog:0; # 1 to disbale terminal alerts on messages, 0 to enable disable_alerts:0; +# maximum lines for chat window history +history_size:700; + # 1 to use native terminal colours, 0 to use toxic default colour theme colour_theme:0; diff --git a/src/line_info.c b/src/line_info.c index 923613a..655d0d5 100644 --- a/src/line_info.c +++ b/src/line_info.c @@ -31,6 +31,9 @@ #include "toxic_windows.h" #include "line_info.h" #include "groupchat.h" +#include "settings.h" + +extern struct user_settings *user_settings; void line_info_init(struct history *hst) { @@ -164,7 +167,7 @@ void line_info_add(ToxWindow *self, uint8_t *tmstmp, uint8_t *name1, uint8_t *na hst->line_end->next = new_line; hst->line_end = new_line; - if (++hst->line_items > MAX_HISTORY) { + if (++hst->line_items > user_settings->history_size) { --hst->line_items; line_info_root_fwd(hst); } @@ -216,7 +219,7 @@ void line_info_print(ToxWindow *self) getmaxyx(self->window, y2, x2); if (self->is_prompt) - y2 = MAX_HISTORY; /* temporary fix to make prompt scroll */ + y2 = user_settings->history_size; /* temporary fix to make prompt scroll */ if (x2 <= SIDEBAR_WIDTH) return; diff --git a/src/line_info.h b/src/line_info.h index be0e1e3..3d921e5 100644 --- a/src/line_info.h +++ b/src/line_info.h @@ -20,7 +20,8 @@ * */ -#define MAX_HISTORY 700 +#define MAX_HISTORY 10000 +#define MIN_HISTORY 20 enum { SYS_MSG, diff --git a/src/settings.c b/src/settings.c index 877e920..0e14d9d 100644 --- a/src/settings.c +++ b/src/settings.c @@ -27,6 +27,7 @@ #include "configdir.h" #include "audio_call.h" #include "settings.h" +#include "line_info.h" static void uset_autolog(struct user_settings *s, int val); static void uset_time(struct user_settings *s, int val); @@ -34,6 +35,7 @@ static void uset_alerts(struct user_settings *s, int val); static void uset_colours(struct user_settings *s, int val); static void uset_ain_dev(struct user_settings *s, int val); static void uset_aout_dev(struct user_settings *s, int val); +static void uset_hst_size(struct user_settings *s, int val); struct { const char *name; @@ -45,6 +47,7 @@ struct { { "colour_theme", uset_colours }, { "audio_in_dev", uset_ain_dev }, { "audio_out_dev", uset_aout_dev }, + { "history_size", uset_hst_size }, }; static void uset_autolog(struct user_settings *s, int val) @@ -87,6 +90,12 @@ static void uset_aout_dev(struct user_settings *s, int val) s->audio_out_dev = (long int) val; } +static void uset_hst_size(struct user_settings *s, int val) +{ + /* if val is out of range use default history size */ + s->history_size = (val > MAX_HISTORY || val < MIN_HISTORY) ? DFLT_HST_SIZE : val; +} + int settings_load(struct user_settings *s, char *path) { char *user_config_dir = get_user_config_dir(); @@ -102,6 +111,8 @@ int settings_load(struct user_settings *s, char *path) free(user_config_dir); + uset_hst_size(s, DFLT_HST_SIZE); /* must be forced in case no setting specified */ + if (fp == NULL && !path) { if ((fp = fopen(dflt_path, "w")) == NULL) return -1; diff --git a/src/settings.h b/src/settings.h index 4c75051..a989030 100644 --- a/src/settings.h +++ b/src/settings.h @@ -20,7 +20,7 @@ * */ -#define NUM_SETTINGS 6 +#define NUM_SETTINGS 7 /* holds user setting values */ struct user_settings { @@ -30,6 +30,7 @@ struct user_settings { int colour_theme; /* boolean (0 for default toxic colours) */ long int audio_in_dev; long int audio_out_dev; + int history_size; /* int between MIN_HISTORY and MAX_HISTORY */ }; enum { @@ -44,6 +45,8 @@ enum { NATIVE_COLS = 1, DFLT_COLS = 0, + + DFLT_HST_SIZE = 700, }; int settings_load(struct user_settings *s, char *path); From b0a66706bd9a55ffdb7b867f31b07626b3dc70e9 Mon Sep 17 00:00:00 2001 From: Zetok Zalbavar Date: Thu, 29 May 2014 15:04:14 +0100 Subject: [PATCH 09/63] Update README.md Update default example path for Tox libs --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index eb9deaf..168a646 100644 --- a/README.md +++ b/README.md @@ -5,7 +5,7 @@ Toxic is an ncurses based instant messaging client for [Tox](http://tox.im) whic * Generate the configure script by running the ```autoreconf -i``` command. * Execute the configure script with ```./configure``` (you may need to pass it the location of your dependency libraries, i.e.): -```./configure --prefix=/where/to/install --with-libtoxcore-headers=/path/to/ProjectTox-Core/toxcore --with-libtoxcore-libs=/path/to/ProjectTox-Core/build/toxcore --with-libsodium-headers=/path/to/libsodium/include/ --with-libsodium-libs=/path/to/sodiumtest/lib/ ``` +```./configure --prefix=/where/to/install --with-libtoxcore-headers=/path/to/ProjectTox-Core/toxcore --with-libtoxcore-libs=/path/to/ProjectTox-Core/build/.libs --with-libsodium-headers=/path/to/libsodium/include/ --with-libsodium-libs=/path/to/sodiumtest/lib/ ``` * Audio calling support requires openal installed * Compile with --disable-av to build without audio call support From ab1c97fb2b189ca37b6cef8fc87600ff40f2594d Mon Sep 17 00:00:00 2001 From: Jfreegman Date: Thu, 29 May 2014 13:57:15 -0400 Subject: [PATCH 10/63] properly set default user settings --- src/settings.c | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/src/settings.c b/src/settings.c index 0e14d9d..49b4f28 100644 --- a/src/settings.c +++ b/src/settings.c @@ -96,6 +96,17 @@ static void uset_hst_size(struct user_settings *s, int val) s->history_size = (val > MAX_HISTORY || val < MIN_HISTORY) ? DFLT_HST_SIZE : val; } +static void set_default_settings(struct user_settings *s) +{ + uset_autolog(s, AUTOLOG_OFF); + uset_time(s, TIME_24); + uset_alerts(s, ALERTS_ENABLED); + uset_colours(s, DFLT_COLS); + uset_ain_dev(s, 0); + uset_aout_dev(s, 0); + uset_hst_size(s, DFLT_HST_SIZE); +} + int settings_load(struct user_settings *s, char *path) { char *user_config_dir = get_user_config_dir(); @@ -111,7 +122,7 @@ int settings_load(struct user_settings *s, char *path) free(user_config_dir); - uset_hst_size(s, DFLT_HST_SIZE); /* must be forced in case no setting specified */ + set_default_settings(s); if (fp == NULL && !path) { if ((fp = fopen(dflt_path, "w")) == NULL) From d65d0a08aaafb1edd698215699c7386c2ea512b6 Mon Sep 17 00:00:00 2001 From: Jfreegman Date: Sun, 1 Jun 2014 03:38:20 -0400 Subject: [PATCH 11/63] fix chat scroll bug --- src/line_info.c | 4 ++++ src/main.c | 4 +++- src/windows.c | 18 +++++++++++++++++- 3 files changed, 24 insertions(+), 2 deletions(-) diff --git a/src/line_info.c b/src/line_info.c index 655d0d5..1e2fd21 100644 --- a/src/line_info.c +++ b/src/line_info.c @@ -209,6 +209,10 @@ void line_info_add(ToxWindow *self, uint8_t *tmstmp, uint8_t *name1, uint8_t *na void line_info_print(ToxWindow *self) { ChatContext *ctx = self->chatwin; + + if (ctx == NULL) + return; + WINDOW *win = ctx->history; ctx->hst->queue = 0; diff --git a/src/main.c b/src/main.c index 975902d..c85c57a 100644 --- a/src/main.c +++ b/src/main.c @@ -453,8 +453,10 @@ void *thread_winref(void *data) { Tox *m = (Tox *) data; - while (true) + while (true) { draw_active_window(m); + refresh_inactive_windows(); + } } int main(int argc, char *argv[]) diff --git a/src/windows.c b/src/windows.c index 564da15..903ff22 100644 --- a/src/windows.c +++ b/src/windows.c @@ -417,7 +417,7 @@ void draw_active_window(Tox *m) ltr = isprint(ch); #endif - if (!ltr && (ch == T_KEY_NEXT || ch == T_KEY_PREV) ) { + if (!ltr && (ch == T_KEY_NEXT || ch == T_KEY_PREV)) { set_next_window((int) ch); } else { pthread_mutex_lock(&Winthread.lock); @@ -426,6 +426,22 @@ void draw_active_window(Tox *m) } } +/* refresh inactive windows to prevent scrolling bugs. + call at least once per second */ +void refresh_inactive_windows(void) +{ + int i; + + for (i = 0; i < MAX_WINDOWS_NUM; ++i) { + ToxWindow *a = &windows[i]; + + if (!a->active || a == active_window || a->is_prompt) /* if prompt doesn't have scroll mode */ + continue; + + line_info_print(a); + } +} + int get_num_active_windows(void) { return num_active_windows; From 848b4e9a4c3804800037e59f14113b33b3bad25f Mon Sep 17 00:00:00 2001 From: Jfreegman Date: Sun, 1 Jun 2014 12:54:45 -0400 Subject: [PATCH 12/63] fix possible buffer overflow --- src/line_info.c | 16 ++++++++-------- src/windows.c | 6 ++---- 2 files changed, 10 insertions(+), 12 deletions(-) diff --git a/src/line_info.c b/src/line_info.c index 1e2fd21..94ac2b4 100644 --- a/src/line_info.c +++ b/src/line_info.c @@ -138,23 +138,23 @@ void line_info_add(ToxWindow *self, uint8_t *tmstmp, uint8_t *name1, uint8_t *na } if (msg) { - strcpy(new_line->msg, msg); - len += strlen(msg); + snprintf(new_line->msg, sizeof(new_line->msg), "%s", msg); + len += strlen(new_line->msg); } if (tmstmp) { - strcpy(new_line->timestamp, tmstmp); - len += strlen(tmstmp); + snprintf(new_line->timestamp, sizeof(new_line->timestamp), "%s", tmstmp); + len += strlen(new_line->timestamp); } if (name1) { - strcpy(new_line->name1, name1); - len += strlen(name1); + snprintf(new_line->name1, sizeof(new_line->name1), "%s", name1); + len += strlen(new_line->name1); } if (name2) { - strcpy(new_line->name2, name2); - len += strlen(name2); + snprintf(new_line->name2, sizeof(new_line->name2), "%s", name2); + len += strlen(new_line->name2); } new_line->len = len; diff --git a/src/windows.c b/src/windows.c index 903ff22..4f4310b 100644 --- a/src/windows.c +++ b/src/windows.c @@ -435,10 +435,8 @@ void refresh_inactive_windows(void) for (i = 0; i < MAX_WINDOWS_NUM; ++i) { ToxWindow *a = &windows[i]; - if (!a->active || a == active_window || a->is_prompt) /* if prompt doesn't have scroll mode */ - continue; - - line_info_print(a); + if (a->active && a != active_window && !a->is_prompt) /* if prompt doesn't have scroll mode */ + line_info_print(a); } } From 7206a9ea73d732a061d8089d73997f5ffbacf009 Mon Sep 17 00:00:00 2001 From: Jfreegman Date: Sun, 1 Jun 2014 13:36:23 -0400 Subject: [PATCH 13/63] fix another possible buffer overflow .. --- src/chat.c | 5 ++++- src/friendlist.c | 6 ++++-- src/prompt.c | 4 ++-- 3 files changed, 10 insertions(+), 5 deletions(-) diff --git a/src/chat.c b/src/chat.c index 09926d9..603280d 100644 --- a/src/chat.c +++ b/src/chat.c @@ -214,8 +214,11 @@ static void chat_onStatusMessageChange(ToxWindow *self, int32_t num, uint8_t *st return; StatusBar *statusbar = self->stb; + + status[len] = '\0'; + snprintf(statusbar->statusmsg, sizeof(statusbar->statusmsg), "%s", status); + len = strlen(statusbar->statusmsg); statusbar->statusmsg_len = len; - strcpy(statusbar->statusmsg, status); statusbar->statusmsg[len] = '\0'; } diff --git a/src/friendlist.c b/src/friendlist.c index d8ca16d..108b772 100644 --- a/src/friendlist.c +++ b/src/friendlist.c @@ -162,9 +162,11 @@ static void friendlist_onStatusMessageChange(ToxWindow *self, int32_t num, uint8 if (len > TOX_MAX_STATUSMESSAGE_LENGTH || num >= max_friends_index) return; - strcpy(friends[num].statusmsg, str); - friends[num].statusmsg[len] = '\0'; + str[len] = '\0'; + snprintf(friends[num].statusmsg, sizeof(friends[num].statusmsg), "%s", str); + len = strlen(friends[num].statusmsg); friends[num].statusmsg_len = len; + friends[num].statusmsg[len] = '\0'; } void friendlist_onFriendAdded(ToxWindow *self, Tox *m, int32_t num, bool sort) diff --git a/src/prompt.c b/src/prompt.c index 1a9f6cd..bb003c3 100644 --- a/src/prompt.c +++ b/src/prompt.c @@ -74,7 +74,7 @@ void prompt_update_nick(ToxWindow *prompt, uint8_t *nick, uint16_t len) { StatusBar *statusbar = prompt->stb; snprintf(statusbar->nick, sizeof(statusbar->nick), "%s", nick); - statusbar->nick_len = len; + statusbar->nick_len = strlen(statusbar->nick); } /* Updates own statusmessage in prompt statusbar */ @@ -82,7 +82,7 @@ void prompt_update_statusmessage(ToxWindow *prompt, uint8_t *statusmsg, uint16_t { StatusBar *statusbar = prompt->stb; snprintf(statusbar->statusmsg, sizeof(statusbar->statusmsg), "%s", statusmsg); - statusbar->statusmsg_len = len; + statusbar->statusmsg_len = strlen(statusbar->statusmsg); } /* Updates own status in prompt statusbar */ From 4d249c5fe3f9778a01cedc0647661250675cffca Mon Sep 17 00:00:00 2001 From: Sean Date: Sun, 1 Jun 2014 14:53:57 -0700 Subject: [PATCH 14/63] Bumped to 0.4.0 --- configure.ac | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/configure.ac b/configure.ac index a2da511..de0d610 100644 --- a/configure.ac +++ b/configure.ac @@ -2,7 +2,7 @@ # Process this file with autoconf to produce a configure script. AC_PREREQ([2.65]) -AC_INIT([toxic], [0.3.3], [https://tox.im/]) +AC_INIT([toxic], [0.4.0], [https://tox.im/]) AC_CONFIG_AUX_DIR(configure_aux) AC_CONFIG_SRCDIR([src/main.c]) AC_CONFIG_HEADERS([config.h]) From f9e15cd60b98444a2ca50ecaaf9812cadfd63e66 Mon Sep 17 00:00:00 2001 From: Jfreegman Date: Mon, 2 Jun 2014 03:19:59 -0400 Subject: [PATCH 15/63] no trailing space for command tab-complete --- src/main.c | 2 +- src/toxic_strings.c | 23 +++++++++++++++++------ src/windows.c | 2 +- 3 files changed, 19 insertions(+), 8 deletions(-) diff --git a/src/main.c b/src/main.c index c85c57a..0cc86e7 100644 --- a/src/main.c +++ b/src/main.c @@ -212,7 +212,7 @@ static int nodelist_load(char *filename) if (name == NULL || port == NULL || key_ascii == NULL) continue; - strncpy(nodes[linecnt], name, NODELEN); + snprintf(nodes[linecnt], sizeof(nodes[linecnt]), "%s", name); nodes[linecnt][NODELEN - 1] = 0; ports[linecnt] = htons(atoi(port)); diff --git a/src/toxic_strings.c b/src/toxic_strings.c index 994c0fd..329791f 100644 --- a/src/toxic_strings.c +++ b/src/toxic_strings.c @@ -195,19 +195,31 @@ int complete_line(wchar_t *buf, size_t *pos, size_t *len, const void *list, int uint8_t tmp[MAX_STR_SIZE]; snprintf(tmp, sizeof(tmp), "%s", ubuf); tmp[*pos] = '\0'; + int n_endchrs = 1; /* 1 = append space to end of match, 2 = append ": ", 0 = append nothing */ + const uint8_t *endchrs; + uint8_t *sub = strrchr(tmp, ' '); - int n_endchrs = 1; /* 1 = append space to end of match, 2 = append ": " */ if (!sub++) { sub = tmp; - - if (sub[0] != '/') /* make sure it's not a command */ - n_endchrs = 2; + n_endchrs = sub[0] == '/' ? 0 : 2; /* no end chars if command */ } if (string_is_empty(sub)) return -1; + switch(n_endchrs) { + case 0: + endchrs = ""; + break; + case 1: + endchrs = " "; + break; + case 2: + endchrs = ": "; + break; + } + int s_len = strlen(sub); const uint8_t *match; bool is_match = false; @@ -225,9 +237,8 @@ int complete_line(wchar_t *buf, size_t *pos, size_t *len, const void *list, int return -1; /* put match in correct spot in buf and append endchars (space or ": ") */ - const uint8_t *endchrs = n_endchrs == 1 ? " " : ": "; int m_len = strlen(match); - int strt = (int) * pos - s_len; + int strt = *pos - s_len; int diff = m_len - s_len + n_endchrs; if (*len + diff > MAX_STR_SIZE) diff --git a/src/windows.c b/src/windows.c index 4f4310b..ce2cd06 100644 --- a/src/windows.c +++ b/src/windows.c @@ -435,7 +435,7 @@ void refresh_inactive_windows(void) for (i = 0; i < MAX_WINDOWS_NUM; ++i) { ToxWindow *a = &windows[i]; - if (a->active && a != active_window && !a->is_prompt) /* if prompt doesn't have scroll mode */ + if (a->active && a != active_window && (a->is_chat || a->is_groupchat)) line_info_print(a); } } From c2dce960b8df7a428e6f9fb99843aa4964c3c59b Mon Sep 17 00:00:00 2001 From: Jfreegman Date: Tue, 3 Jun 2014 02:02:24 -0400 Subject: [PATCH 16/63] add setting to allow specified download path & some fixes --- src/chat.c | 34 +++++++++++-- src/chat_commands.c | 2 +- src/misc_tools.c | 2 +- src/misc_tools.h | 5 +- src/settings.c | 118 +++++++++++++++++++++++++++++--------------- src/settings.h | 5 +- 6 files changed, 116 insertions(+), 50 deletions(-) diff --git a/src/chat.c b/src/chat.c index 603280d..7f32f30 100644 --- a/src/chat.c +++ b/src/chat.c @@ -228,15 +228,21 @@ static void chat_onFileSendRequest(ToxWindow *self, Tox *m, int32_t num, uint8_t if (self->num != num) return; - uint8_t msg[MAX_STR_SIZE]; + uint8_t msg[MAX_STR_SIZE * 2]; uint8_t *errmsg; pathname[path_len] = '\0'; - uint8_t filename[MAX_STR_SIZE]; - get_file_name(pathname, filename); - snprintf(msg, sizeof(msg), "File transfer request for '%s' (%llu bytes).", filename, + /* holds the filename appended to the user specified path */ + uint8_t filename_path[MAX_STR_SIZE] = {0}; + + /* holds the lone filename */ + uint8_t filename_nopath[MAX_STR_SIZE]; + get_file_name(filename_nopath, pathname); + int len = strlen(filename_nopath); + + snprintf(msg, sizeof(msg), "File transfer request for '%s' (%llu bytes).", filename_nopath, (long long unsigned int)filesize); line_info_add(self, NULL, NULL, NULL, msg, SYS_MSG, 0, 0); @@ -246,10 +252,28 @@ static void chat_onFileSendRequest(ToxWindow *self, Tox *m, int32_t num, uint8_t return; } + /* use specified path in config if possible */ + if (user_settings->download_path[0]) { + snprintf(filename_path, sizeof(filename_path), "%s%s", user_settings->download_path, filename_nopath); + len += strlen(user_settings->download_path); + } + + if (len >= sizeof(friends[num].file_receiver.filenames[filenum])) { + errmsg = "File name too long; discarding."; + line_info_add(self, NULL, NULL, NULL, errmsg, SYS_MSG, 0, 0); + return; + } + + uint8_t filename[MAX_STR_SIZE]; + + if (filename_path[0]) + strcpy(filename, filename_path); + else + strcpy(filename, filename_nopath); + /* Append a number to duplicate file names */ FILE *filecheck = NULL; int count = 1; - int len = strlen(filename); while ((filecheck = fopen(filename, "r"))) { filename[len] = '\0'; diff --git a/src/chat_commands.c b/src/chat_commands.c index afbbe27..a0eb2ab 100644 --- a/src/chat_commands.c +++ b/src/chat_commands.c @@ -246,7 +246,7 @@ void cmd_sendfile(WINDOW *window, ToxWindow *self, Tox *m, int argc, char (*argv fseek(file_to_send, 0, SEEK_SET); uint8_t filename[MAX_STR_SIZE]; - get_file_name(path, filename); + get_file_name(filename, path); int filenum = tox_new_file_sender(m, self->num, filesize, filename, strlen(filename)); if (filenum == -1) { diff --git a/src/misc_tools.c b/src/misc_tools.c index 928c6b4..e401010 100644 --- a/src/misc_tools.c +++ b/src/misc_tools.c @@ -233,7 +233,7 @@ void mv_curs_end(WINDOW *w, size_t len, int max_y, int max_x) } /* gets base file name from path or original file name if no path is supplied */ -void get_file_name(uint8_t *pathname, uint8_t *namebuf) +void get_file_name(uint8_t *namebuf, uint8_t *pathname) { int idx = strlen(pathname) - 1; diff --git a/src/misc_tools.h b/src/misc_tools.h index b5b2a93..e1e7e45 100644 --- a/src/misc_tools.h +++ b/src/misc_tools.h @@ -63,9 +63,10 @@ void alert_window(ToxWindow *self, int type, bool is_beep); /* case-insensitive string compare function for use with qsort */ int qsort_strcasecmp_hlpr(const void *nick1, const void *nick2); -/* Returns true if nick is valid. A valid toxic nick: +/* Returns 1 if nick is valid, 0 if not. A valid toxic nick: - cannot be empty - cannot start with a space + - must not contain a forward slash (for logfile naming purposes) - must not contain contiguous spaces */ int valid_nick(uint8_t *nick); @@ -73,4 +74,4 @@ int valid_nick(uint8_t *nick); void mv_curs_end(WINDOW *w, size_t len, int max_y, int max_x); /* gets base file name from path or original file name if no path is supplied */ -void get_file_name(uint8_t *pathname, uint8_t *namebuf); +void get_file_name(uint8_t *namebuf, uint8_t *pathname); diff --git a/src/settings.c b/src/settings.c index 49b4f28..add9e47 100644 --- a/src/settings.c +++ b/src/settings.c @@ -29,17 +29,18 @@ #include "settings.h" #include "line_info.h" -static void uset_autolog(struct user_settings *s, int val); -static void uset_time(struct user_settings *s, int val); -static void uset_alerts(struct user_settings *s, int val); -static void uset_colours(struct user_settings *s, int val); -static void uset_ain_dev(struct user_settings *s, int val); -static void uset_aout_dev(struct user_settings *s, int val); -static void uset_hst_size(struct user_settings *s, int val); +static void uset_autolog(struct user_settings *s, const char *val); +static void uset_time(struct user_settings *s, const char *val); +static void uset_alerts(struct user_settings *s, const char *val); +static void uset_colours(struct user_settings *s, const char *val); +static void uset_ain_dev(struct user_settings *s, const char *val); +static void uset_aout_dev(struct user_settings *s, const char *val); +static void uset_hst_size(struct user_settings *s, const char *val); +static void uset_dwnld_path(struct user_settings *s, const char *val); struct { - const char *name; - void (*func)(struct user_settings *s, int val); + const char *key; + void (*func)(struct user_settings *s, const char *val); } user_settings_list[] = { { "autolog", uset_autolog }, { "time", uset_time }, @@ -48,63 +49,103 @@ struct { { "audio_in_dev", uset_ain_dev }, { "audio_out_dev", uset_aout_dev }, { "history_size", uset_hst_size }, + { "download_path", uset_dwnld_path }, }; -static void uset_autolog(struct user_settings *s, int val) +static void uset_autolog(struct user_settings *s, const char *val) { + int n = atoi(val); + /* default off if invalid value */ - s->autolog = val == AUTOLOG_ON ? AUTOLOG_ON : AUTOLOG_OFF; + s->autolog = n == AUTOLOG_ON ? AUTOLOG_ON : AUTOLOG_OFF; } -static void uset_time(struct user_settings *s, int val) +static void uset_time(struct user_settings *s, const char *val) { + int n = atoi(val); + /* default to 24 hour time if invalid value */ - s->time = val == TIME_12 ? TIME_12 : TIME_24; + s->time = n == TIME_12 ? TIME_12 : TIME_24; } -static void uset_alerts(struct user_settings *s, int val) +static void uset_alerts(struct user_settings *s, const char *val) { + int n = atoi(val); + /* alerts default on if invalid value */ - s->alerts = val == ALERTS_DISABLED ? ALERTS_DISABLED : ALERTS_ENABLED; + s->alerts = n == ALERTS_DISABLED ? ALERTS_DISABLED : ALERTS_ENABLED; } -static void uset_colours(struct user_settings *s, int val) +static void uset_colours(struct user_settings *s, const char *val) { + int n = atoi(val); + /* use default toxic colours if invalid value */ - s->colour_theme = val == NATIVE_COLS ? NATIVE_COLS : DFLT_COLS; + s->colour_theme = n == NATIVE_COLS ? NATIVE_COLS : DFLT_COLS; } -static void uset_ain_dev(struct user_settings *s, int val) +static void uset_ain_dev(struct user_settings *s, const char *val) { - if (val < 0 || val > MAX_DEVICES) - val = (long int) 0; + int n = atoi(val); - s->audio_in_dev = (long int) val; + if (n < 0 || n > MAX_DEVICES) + n = (long int) 0; + + s->audio_in_dev = (long int) n; } -static void uset_aout_dev(struct user_settings *s, int val) +static void uset_aout_dev(struct user_settings *s, const char *val) { - if (val < 0 || val > MAX_DEVICES) - val = (long int) 0; + int n = atoi(val); - s->audio_out_dev = (long int) val; + if (n < 0 || n > MAX_DEVICES) + n = (long int) 0; + + s->audio_out_dev = (long int) n; } -static void uset_hst_size(struct user_settings *s, int val) +static void uset_hst_size(struct user_settings *s, const char *val) { + int n = atoi(val); + /* if val is out of range use default history size */ - s->history_size = (val > MAX_HISTORY || val < MIN_HISTORY) ? DFLT_HST_SIZE : val; + s->history_size = (n > MAX_HISTORY || n < MIN_HISTORY) ? DFLT_HST_SIZE : n; +} + +static void uset_dwnld_path(struct user_settings *s, const char *val) +{ + memset(s->download_path, 0, sizeof(s->download_path)); + + if (val == NULL) + return; + + int len = strlen(val); + + if (len >= sizeof(s->download_path) - 2) /* leave room for null and '/' */ + return; + + FILE *fp = fopen(val, "r"); + + if (fp == NULL) + return; + + strcpy(s->download_path, val); + + if (val[len] != '/') + strcat(s->download_path, "/"); } static void set_default_settings(struct user_settings *s) { - uset_autolog(s, AUTOLOG_OFF); - uset_time(s, TIME_24); - uset_alerts(s, ALERTS_ENABLED); - uset_colours(s, DFLT_COLS); - uset_ain_dev(s, 0); - uset_aout_dev(s, 0); - uset_hst_size(s, DFLT_HST_SIZE); + /* see settings_values enum in settings.h for defaults */ + uset_autolog(s, "0"); + uset_time(s, "24"); + uset_alerts(s, "0"); + uset_colours(s, "0"); + uset_ain_dev(s, "0"); + uset_aout_dev(s, "0"); + uset_hst_size(s, "700"); + uset_dwnld_path(s, NULL); } int settings_load(struct user_settings *s, char *path) @@ -137,17 +178,16 @@ int settings_load(struct user_settings *s, char *path) if (line[0] == '#' || !line[0]) continue; - char *name = strtok(line, ":"); - char *val_s = strtok(NULL, ";"); + const char *key = strtok(line, ":"); + const char *val = strtok(NULL, ";"); - if (name == NULL || val_s == NULL) + if (key == NULL || val == NULL) continue; - int val = atoi(val_s); int i; for (i = 0; i < NUM_SETTINGS; ++i) { - if (!strcmp(user_settings_list[i].name, name)) { + if (!strcmp(user_settings_list[i].key, key)) { (user_settings_list[i].func)(s, val); break; } diff --git a/src/settings.h b/src/settings.h index a989030..83f05b3 100644 --- a/src/settings.h +++ b/src/settings.h @@ -20,7 +20,7 @@ * */ -#define NUM_SETTINGS 7 +#define NUM_SETTINGS 8 /* holds user setting values */ struct user_settings { @@ -31,6 +31,7 @@ struct user_settings { long int audio_in_dev; long int audio_out_dev; int history_size; /* int between MIN_HISTORY and MAX_HISTORY */ + char download_path[MAX_STR_SIZE]; }; enum { @@ -47,6 +48,6 @@ enum { DFLT_COLS = 0, DFLT_HST_SIZE = 700, -}; +} settings_values; int settings_load(struct user_settings *s, char *path); From 4b8dd3ad7260a3d9ff61e3511509fb0519c117ec Mon Sep 17 00:00:00 2001 From: Jfreegman Date: Tue, 3 Jun 2014 02:06:37 -0400 Subject: [PATCH 17/63] update example conf file --- misc/toxic.conf | 3 +++ 1 file changed, 3 insertions(+) diff --git a/misc/toxic.conf b/misc/toxic.conf index 455b0fa..babf468 100644 --- a/misc/toxic.conf +++ b/misc/toxic.conf @@ -18,3 +18,6 @@ audio_in_dev:0; # preferred audio output device; numbers correspond to /lsdev out audio_out_dev:0; + +# preferred path for downloads +download_path:/home/USERNAME/Downloads/; \ No newline at end of file From 789c491c1ed4456d184b458cf6e8f6a880b94554 Mon Sep 17 00:00:00 2001 From: Jfreegman Date: Tue, 3 Jun 2014 16:04:57 -0400 Subject: [PATCH 18/63] fix a few file transfer bugs --- src/chat.c | 32 +++++++++++++++++++++----------- src/chat_commands.c | 2 +- src/file_senders.c | 4 ++-- src/toxic_windows.h | 2 +- 4 files changed, 25 insertions(+), 15 deletions(-) diff --git a/src/chat.c b/src/chat.c index 7f32f30..0bf22ef 100644 --- a/src/chat.c +++ b/src/chat.c @@ -324,21 +324,28 @@ static void chat_onFileControl(ToxWindow *self, Tox *m, int32_t num, uint8_t rec const uint8_t *filename; uint8_t msg[MAX_STR_SIZE] = {0}; + int i; /* file_sender index */ - if (receive_send == 0) + if (receive_send == 0) { filename = friends[num].file_receiver.filenames[filenum]; - else - filename = file_senders[filenum].pathname; + } else { + for (i = 0; i < MAX_FILES; ++i) { + if (file_senders[i].filenum == filenum) + break; + } + + filename = file_senders[i].pathname; + } switch (control_type) { case TOX_FILECONTROL_ACCEPT: - snprintf(msg, sizeof(msg), "File transfer for '%s' accepted (%.1f%%)", filename, 0.0); - file_senders[filenum].line_id = self->chatwin->hst->line_end->id + 1; + if (receive_send == 1) { + snprintf(msg, sizeof(msg), "File transfer for '%s' accepted (%.1f%%)", filename, 0.0); + file_senders[i].line_id = self->chatwin->hst->line_end->id + 1; + } + break; - /*case TOX_FILECONTROL_PAUSE: - wprintw(ctx->history, "File transfer for '%s' paused.\n", filename); - break; */ case TOX_FILECONTROL_KILL: snprintf(msg, sizeof(msg), "File transfer for '%s' failed.", filename); @@ -348,8 +355,11 @@ static void chat_onFileControl(ToxWindow *self, Tox *m, int32_t num, uint8_t rec break; case TOX_FILECONTROL_FINISHED: - snprintf(msg, sizeof(msg), "File transfer for '%s' complete.", filename); - chat_close_file_receiver(num, filenum); + if (receive_send == 0) { + snprintf(msg, sizeof(msg), "File transfer for '%s' complete.", filename); + chat_close_file_receiver(num, filenum); + } + break; } @@ -382,7 +392,7 @@ static void chat_onFileData(ToxWindow *self, Tox *m, int32_t num, uint8_t filenu const uint8_t *name = friends[num].file_receiver.filenames[filenum]; snprintf(msg, sizeof(msg), "Saving file as: '%s' (%.1Lf%%)", name, pct_remain); - line_info_set(self, friends[num].file_receiver.line_id, msg); + line_info_set(self, friends[num].file_receiver.line_id[filenum], msg); } diff --git a/src/chat_commands.c b/src/chat_commands.c index a0eb2ab..063d16d 100644 --- a/src/chat_commands.c +++ b/src/chat_commands.c @@ -185,7 +185,7 @@ void cmd_savefile(WINDOW *window, ToxWindow *self, Tox *m, int argc, char (*argv uint8_t msg[MAX_STR_SIZE]; snprintf(msg, sizeof(msg), "Saving file as: '%s' (%.1f%%)", filename, 0.0); line_info_add(self, NULL, NULL, NULL, msg, SYS_MSG, 0, 0); - friends[self->num].file_receiver.line_id = self->chatwin->hst->line_end->id; + friends[self->num].file_receiver.line_id[filenum] = self->chatwin->hst->line_end->id; if ((friends[self->num].file_receiver.files[filenum] = fopen(filename, "a")) == NULL) { errmsg = "* Error writing to file."; diff --git a/src/file_senders.c b/src/file_senders.c index b8529d0..69aaca5 100644 --- a/src/file_senders.c +++ b/src/file_senders.c @@ -107,9 +107,9 @@ void do_file_senders(Tox *m) if (remain) pct_remain = (1 - (remain / size)) * 100; - const uint8_t *name = file_senders[filenum].pathname; + const uint8_t *name = file_senders[i].pathname; snprintf(msg, sizeof(msg), "File transfer for '%s' accepted (%.1Lf%%)", name, pct_remain); - line_info_set(self, file_senders[filenum].line_id, msg); + line_info_set(self, file_senders[i].line_id, msg); } if (file_senders[i].piecelen == 0) { diff --git a/src/toxic_windows.h b/src/toxic_windows.h index fc0d2d5..30d0f18 100644 --- a/src/toxic_windows.h +++ b/src/toxic_windows.h @@ -219,7 +219,7 @@ struct FileReceiver { FILE *files[MAX_FILES]; bool pending[MAX_FILES]; uint64_t size[MAX_FILES]; - uint32_t line_id; + uint32_t line_id[MAX_FILES]; }; /* End file transfer code */ From 97dedd32fb69dd5ca41fdf613d1b76d232a26d25 Mon Sep 17 00:00:00 2001 From: Jfreegman Date: Tue, 3 Jun 2014 20:35:00 -0400 Subject: [PATCH 19/63] better fix for trailing spaces issue --- src/chat.c | 2 ++ src/groupchat.c | 2 ++ src/main.c | 1 + src/prompt.c | 2 ++ src/toxic_strings.c | 37 +++++++++++++++++++++---------------- src/toxic_strings.h | 3 +++ 6 files changed, 31 insertions(+), 16 deletions(-) diff --git a/src/chat.c b/src/chat.c index 0bf22ef..aec848c 100644 --- a/src/chat.c +++ b/src/chat.c @@ -687,6 +687,8 @@ static void chat_onKey(ToxWindow *self, Tox *m, wint_t key, bool ltr) /* RETURN key: Execute command or print line */ else if (key == '\n') { + rm_trailing_spaces_buf(ctx->line, &ctx->pos, &ctx->len); + uint8_t line[MAX_STR_SIZE]; if (wcs_to_mbs_buf(line, ctx->line, MAX_STR_SIZE) == -1) diff --git a/src/groupchat.c b/src/groupchat.c index 741e122..58e1f77 100644 --- a/src/groupchat.c +++ b/src/groupchat.c @@ -537,6 +537,8 @@ static void groupchat_onKey(ToxWindow *self, Tox *m, wint_t key, bool ltr) /* RETURN key: Execute command or print line */ else if (key == '\n') { + rm_trailing_spaces_buf(ctx->line, &ctx->pos, &ctx->len); + uint8_t line[MAX_STR_SIZE]; if (wcs_to_mbs_buf(line, ctx->line, MAX_STR_SIZE) == -1) diff --git a/src/main.c b/src/main.c index 0cc86e7..854e397 100644 --- a/src/main.c +++ b/src/main.c @@ -591,6 +591,7 @@ int main(int argc, char *argv[]) while (true) { update_unix_time(); do_toxic(m, prompt); + // uint32_t st = MIN(tox_do_interval(m) * 1000, 20000); usleep(10000); } diff --git a/src/prompt.c b/src/prompt.c index bb003c3..3cc3f98 100644 --- a/src/prompt.c +++ b/src/prompt.c @@ -249,6 +249,8 @@ static void prompt_onKey(ToxWindow *self, Tox *m, wint_t key, bool ltr) /* RETURN key: execute command */ else if (key == '\n') { + rm_trailing_spaces_buf(ctx->line, &ctx->pos, &ctx->len); + wprintw(ctx->history, "\n"); uint8_t line[MAX_STR_SIZE] = {0}; diff --git a/src/toxic_strings.c b/src/toxic_strings.c index 329791f..554e2c6 100644 --- a/src/toxic_strings.c +++ b/src/toxic_strings.c @@ -111,6 +111,22 @@ void reset_buf(wchar_t *buf, size_t *pos, size_t *len) *len = 0; } +/* Removes trailing spaces from buf. */ +void rm_trailing_spaces_buf(wchar_t *buf, size_t *pos, size_t *len) +{ + if (*len <= 0) + return; + + if (buf[*len - 1] != ' ') + return; + + if (*pos == *len) + --(*pos); + + buf[--(*len)] = L'\0'; + rm_trailing_spaces_buf(buf, pos, len); +} + #define HIST_PURGE MAX_LINE_HIST / 4 /* shifts hist items back and makes room for HIST_PURGE new entries */ @@ -195,31 +211,19 @@ int complete_line(wchar_t *buf, size_t *pos, size_t *len, const void *list, int uint8_t tmp[MAX_STR_SIZE]; snprintf(tmp, sizeof(tmp), "%s", ubuf); tmp[*pos] = '\0'; - int n_endchrs = 1; /* 1 = append space to end of match, 2 = append ": ", 0 = append nothing */ - const uint8_t *endchrs; - uint8_t *sub = strrchr(tmp, ' '); + int n_endchrs = 1; /* 1 = append space to end of match, 2 = append ": " */ if (!sub++) { sub = tmp; - n_endchrs = sub[0] == '/' ? 0 : 2; /* no end chars if command */ + + if (sub[0] != '/') /* make sure it's not a command */ + n_endchrs = 2; } if (string_is_empty(sub)) return -1; - switch(n_endchrs) { - case 0: - endchrs = ""; - break; - case 1: - endchrs = " "; - break; - case 2: - endchrs = ": "; - break; - } - int s_len = strlen(sub); const uint8_t *match; bool is_match = false; @@ -237,6 +241,7 @@ int complete_line(wchar_t *buf, size_t *pos, size_t *len, const void *list, int return -1; /* put match in correct spot in buf and append endchars (space or ": ") */ + const uint8_t *endchrs = n_endchrs == 1 ? " " : ": "; int m_len = strlen(match); int strt = *pos - s_len; int diff = m_len - s_len + n_endchrs; diff --git a/src/toxic_strings.h b/src/toxic_strings.h index 84bb3f7..64612fd 100644 --- a/src/toxic_strings.h +++ b/src/toxic_strings.h @@ -38,6 +38,9 @@ void kill_buf(wchar_t *buf, size_t *pos, size_t *len); /* nulls buf and sets pos and len to 0 */ void reset_buf(wchar_t *buf, size_t *pos, size_t *len); +/* Removes trailing spaces from buf. */ +void rm_trailing_spaces_buf(wchar_t *buf, size_t *pos, size_t *len); + /* looks for the first instance in list that begins with the last entered word in buf according to pos, then fills buf with the complete word. e.g. "Hello jo" would complete the buffer with "Hello john". From 901ffbc7c0bf22adad0de9306f032232e48b3f5e Mon Sep 17 00:00:00 2001 From: Jfreegman Date: Wed, 4 Jun 2014 14:41:36 -0400 Subject: [PATCH 20/63] improve function --- src/toxic_strings.c | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/src/toxic_strings.c b/src/toxic_strings.c index 554e2c6..b597ce4 100644 --- a/src/toxic_strings.c +++ b/src/toxic_strings.c @@ -120,11 +120,16 @@ void rm_trailing_spaces_buf(wchar_t *buf, size_t *pos, size_t *len) if (buf[*len - 1] != ' ') return; - if (*pos == *len) - --(*pos); + int i; - buf[--(*len)] = L'\0'; - rm_trailing_spaces_buf(buf, pos, len); + for (i = *len - 1; i >= 0; --i) { + if (buf[i] != ' ') + break; + } + + *len = i + 1; + *pos = MIN(*pos, i + 1); + buf[*len] = L'\0'; } #define HIST_PURGE MAX_LINE_HIST / 4 From bfa266c6042595c66bb1d695356fa1110190c941 Mon Sep 17 00:00:00 2001 From: Jfreegman Date: Fri, 6 Jun 2014 15:27:06 -0400 Subject: [PATCH 21/63] refactor calling of toxic_string functions --- src/chat.c | 27 ++++---- src/groupchat.c | 29 ++++---- src/prompt.c | 27 ++++---- src/toxic_strings.c | 157 ++++++++++++++++++++++---------------------- src/toxic_strings.h | 40 +++++------ 5 files changed, 134 insertions(+), 146 deletions(-) diff --git a/src/chat.c b/src/chat.c index aec848c..d1fbc36 100644 --- a/src/chat.c +++ b/src/chat.c @@ -561,7 +561,7 @@ static void chat_onKey(ToxWindow *self, Tox *m, wint_t key, bool ltr) if (ltr) { /* prevents buffer overflows and strange behaviour when cursor goes past the window */ if ( (ctx->len < MAX_STR_SIZE - 1) && (ctx->len < (x2 * (CHATBOX_HEIGHT - 1) - 1)) ) { - add_char_to_buf(ctx->line, &ctx->pos, &ctx->len, key); + add_char_to_buf(ctx, key); if (x == x2 - 1) wmove(self->window, y + 1, 0); @@ -577,7 +577,7 @@ static void chat_onKey(ToxWindow *self, Tox *m, wint_t key, bool ltr) if (key == 0x107 || key == 0x8 || key == 0x7f) { /* BACKSPACE key */ if (ctx->pos > 0) { cur_len = MAX(1, wcwidth(ctx->line[ctx->pos - 1])); - del_char_buf_bck(ctx->line, &ctx->pos, &ctx->len); + del_char_buf_bck(ctx); if (x == 0) wmove(self->window, y - 1, x2 - cur_len); @@ -590,14 +590,14 @@ static void chat_onKey(ToxWindow *self, Tox *m, wint_t key, bool ltr) else if (key == KEY_DC) { /* DEL key: Remove character at pos */ if (ctx->pos != ctx->len) - del_char_buf_frnt(ctx->line, &ctx->pos, &ctx->len); + del_char_buf_frnt(ctx); else beep(); } else if (key == T_KEY_DISCARD) { /* CTRL-U: Delete entire line behind pos */ if (ctx->pos > 0) { - discard_buf(ctx->line, &ctx->pos, &ctx->len); + discard_buf(ctx); wmove(self->window, y2 - CURS_Y_OFFSET, 0); } else { beep(); @@ -606,7 +606,7 @@ static void chat_onKey(ToxWindow *self, Tox *m, wint_t key, bool ltr) else if (key == T_KEY_KILL) { /* CTRL-K: Delete entire line in front of pos */ if (ctx->pos != ctx->len) - kill_buf(ctx->line, &ctx->pos, &ctx->len); + kill_buf(ctx); else beep(); } @@ -654,21 +654,18 @@ static void chat_onKey(ToxWindow *self, Tox *m, wint_t key, bool ltr) } else if (key == KEY_UP) { /* fetches previous item in history */ - fetch_hist_item(ctx->line, &ctx->pos, &ctx->len, ctx->ln_history, ctx->hst_tot, - &ctx->hst_pos, MOVE_UP); + fetch_hist_item(ctx, MOVE_UP); mv_curs_end(self->window, ctx->len, y2, x2); } else if (key == KEY_DOWN) { /* fetches next item in history */ - fetch_hist_item(ctx->line, &ctx->pos, &ctx->len, ctx->ln_history, ctx->hst_tot, - &ctx->hst_pos, MOVE_DOWN); + fetch_hist_item(ctx, MOVE_DOWN); mv_curs_end(self->window, ctx->len, y2, x2); } else if (key == '\t') { /* TAB key: completes command */ if (ctx->len > 1 && ctx->line[0] == '/') { - int diff = complete_line(ctx->line, &ctx->pos, &ctx->len, chat_cmd_list, AC_NUM_CHAT_COMMANDS, - MAX_CMDNAME_SIZE); + int diff = complete_line(ctx, chat_cmd_list, AC_NUM_CHAT_COMMANDS, MAX_CMDNAME_SIZE); if (diff != -1) { if (x + diff > x2 - 1) { @@ -687,7 +684,7 @@ static void chat_onKey(ToxWindow *self, Tox *m, wint_t key, bool ltr) /* RETURN key: Execute command or print line */ else if (key == '\n') { - rm_trailing_spaces_buf(ctx->line, &ctx->pos, &ctx->len); + rm_trailing_spaces_buf(ctx); uint8_t line[MAX_STR_SIZE]; @@ -698,7 +695,7 @@ static void chat_onKey(ToxWindow *self, Tox *m, wint_t key, bool ltr) wmove(self->window, y2 - CURS_Y_OFFSET, 0); if (!string_is_empty(line)) - add_line_to_hist(ctx->line, ctx->len, ctx->ln_history, &ctx->hst_tot, &ctx->hst_pos); + add_line_to_hist(ctx); if (line[0] == '/') { if (strcmp(line, "/close") == 0) { @@ -730,7 +727,7 @@ static void chat_onKey(ToxWindow *self, Tox *m, wint_t key, bool ltr) } } - reset_buf(ctx->line, &ctx->pos, &ctx->len); + reset_buf(ctx); } } @@ -758,7 +755,7 @@ static void chat_onDraw(ToxWindow *self, Tox *m) uint8_t line[MAX_STR_SIZE]; if (wcs_to_mbs_buf(line, ctx->line, MAX_STR_SIZE) == -1) { - reset_buf(ctx->line, &ctx->pos, &ctx->len); + reset_buf(ctx); wmove(self->window, y2 - CURS_Y_OFFSET, 0); } else { mvwprintw(ctx->linewin, 1, 0, "%s", line); diff --git a/src/groupchat.c b/src/groupchat.c index 58e1f77..15c8448 100644 --- a/src/groupchat.c +++ b/src/groupchat.c @@ -395,7 +395,7 @@ static void groupchat_onKey(ToxWindow *self, Tox *m, wint_t key, bool ltr) if (ltr) { if ( (ctx->len < MAX_STR_SIZE - 1) && (ctx->len < (x2 * (CHATBOX_HEIGHT - 1) - 1)) ) { - add_char_to_buf(ctx->line, &ctx->pos, &ctx->len, key); + add_char_to_buf(ctx, key); if (x == x2 - 1) wmove(self->window, y + 1, 0); @@ -408,7 +408,7 @@ static void groupchat_onKey(ToxWindow *self, Tox *m, wint_t key, bool ltr) if (key == 0x107 || key == 0x8 || key == 0x7f) { /* BACKSPACE key: Remove character behind pos */ if (ctx->pos > 0) { cur_len = MAX(1, wcwidth(ctx->line[ctx->pos - 1])); - del_char_buf_bck(ctx->line, &ctx->pos, &ctx->len); + del_char_buf_bck(ctx); if (x == 0) wmove(self->window, y - 1, x2 - cur_len); @@ -421,14 +421,14 @@ static void groupchat_onKey(ToxWindow *self, Tox *m, wint_t key, bool ltr) else if (key == KEY_DC) { /* DEL key: Remove character at pos */ if (ctx->pos != ctx->len) - del_char_buf_frnt(ctx->line, &ctx->pos, &ctx->len); + del_char_buf_frnt(ctx); else beep(); } else if (key == T_KEY_DISCARD) { /* CTRL-U: Delete entire line behind pos */ if (ctx->pos > 0) { - discard_buf(ctx->line, &ctx->pos, &ctx->len); + discard_buf(ctx); wmove(self->window, y2 - CURS_Y_OFFSET, 0); } else { beep(); @@ -437,7 +437,7 @@ static void groupchat_onKey(ToxWindow *self, Tox *m, wint_t key, bool ltr) else if (key == T_KEY_KILL) { /* CTRL-K: Delete entire line in front of pos */ if (ctx->pos != ctx->len) - kill_buf(ctx->line, &ctx->pos, &ctx->len); + kill_buf(ctx); else beep(); } @@ -485,14 +485,12 @@ static void groupchat_onKey(ToxWindow *self, Tox *m, wint_t key, bool ltr) } else if (key == KEY_UP) { /* fetches previous item in history */ - fetch_hist_item(ctx->line, &ctx->pos, &ctx->len, ctx->ln_history, ctx->hst_tot, - &ctx->hst_pos, MOVE_UP); + fetch_hist_item(ctx, MOVE_UP); mv_curs_end(self->window, ctx->len, y2, x2); } else if (key == KEY_DOWN) { /* fetches next item in history */ - fetch_hist_item(ctx->line, &ctx->pos, &ctx->len, ctx->ln_history, ctx->hst_tot, - &ctx->hst_pos, MOVE_DOWN); + fetch_hist_item(ctx, MOVE_DOWN); mv_curs_end(self->window, ctx->len, y2, x2); } @@ -501,11 +499,10 @@ static void groupchat_onKey(ToxWindow *self, Tox *m, wint_t key, bool ltr) int diff; if ((ctx->line[0] != '/') || (ctx->line[1] == 'm' && ctx->line[2] == 'e')) - diff = complete_line(ctx->line, &ctx->pos, &ctx->len, groupchats[self->num].peer_names, + diff = complete_line(ctx, groupchats[self->num].peer_names, groupchats[self->num].num_peers, TOX_MAX_NAME_LENGTH); else - diff = complete_line(ctx->line, &ctx->pos, &ctx->len, glob_cmd_list, AC_NUM_GLOB_COMMANDS, - MAX_CMDNAME_SIZE); + diff = complete_line(ctx, glob_cmd_list, AC_NUM_GLOB_COMMANDS, MAX_CMDNAME_SIZE); if (diff != -1) { if (x + diff > x2 - 1) { @@ -537,7 +534,7 @@ static void groupchat_onKey(ToxWindow *self, Tox *m, wint_t key, bool ltr) /* RETURN key: Execute command or print line */ else if (key == '\n') { - rm_trailing_spaces_buf(ctx->line, &ctx->pos, &ctx->len); + rm_trailing_spaces_buf(ctx); uint8_t line[MAX_STR_SIZE]; @@ -549,7 +546,7 @@ static void groupchat_onKey(ToxWindow *self, Tox *m, wint_t key, bool ltr) if (!string_is_empty(line)) - add_line_to_hist(ctx->line, ctx->len, ctx->ln_history, &ctx->hst_tot, &ctx->hst_pos); + add_line_to_hist(ctx); if (line[0] == '/') { if (strcmp(line, "/close") == 0) { @@ -573,7 +570,7 @@ static void groupchat_onKey(ToxWindow *self, Tox *m, wint_t key, bool ltr) } } - reset_buf(ctx->line, &ctx->pos, &ctx->len); + reset_buf(ctx); } } } @@ -599,7 +596,7 @@ static void groupchat_onDraw(ToxWindow *self, Tox *m) uint8_t line[MAX_STR_SIZE]; if (wcs_to_mbs_buf(line, ctx->line, MAX_STR_SIZE) == -1) { - reset_buf(ctx->line, &ctx->pos, &ctx->len); + reset_buf(ctx); wmove(self->window, y2 - CURS_Y_OFFSET, 0); } else { mvwprintw(ctx->linewin, 1, 0, "%s", line); diff --git a/src/prompt.c b/src/prompt.c index 3cc3f98..39e9ba9 100644 --- a/src/prompt.c +++ b/src/prompt.c @@ -147,14 +147,14 @@ static void prompt_onKey(ToxWindow *self, Tox *m, wint_t key, bool ltr) if (ltr) { if (ctx->len < (MAX_STR_SIZE - 1)) { - add_char_to_buf(ctx->line, &ctx->pos, &ctx->len, key); + add_char_to_buf(ctx, key); } } else { /* if (!ltr) */ /* BACKSPACE key: Remove one character from line */ if (key == 0x107 || key == 0x8 || key == 0x7f) { if (ctx->pos > 0) { - del_char_buf_bck(ctx->line, &ctx->pos, &ctx->len); + del_char_buf_bck(ctx); wmove(ctx->history, y, x - 1); /* not necessary but fixes a display glitch */ } else { beep(); @@ -163,7 +163,7 @@ static void prompt_onKey(ToxWindow *self, Tox *m, wint_t key, bool ltr) else if (key == KEY_DC) { /* DEL key: Remove character at pos */ if (ctx->pos != ctx->len) { - del_char_buf_frnt(ctx->line, &ctx->pos, &ctx->len); + del_char_buf_frnt(ctx); } else { beep(); } @@ -173,7 +173,7 @@ static void prompt_onKey(ToxWindow *self, Tox *m, wint_t key, bool ltr) if (ctx->pos > 0) { wmove(ctx->history, ctx->orig_y, X_OFST); wclrtobot(ctx->history); - discard_buf(ctx->line, &ctx->pos, &ctx->len); + discard_buf(ctx); } else { beep(); } @@ -181,7 +181,7 @@ static void prompt_onKey(ToxWindow *self, Tox *m, wint_t key, bool ltr) else if (key == T_KEY_KILL) { /* CTRL-K: Delete entire line in front of pos */ if (ctx->len != ctx->pos) - kill_buf(ctx->line, &ctx->pos, &ctx->len); + kill_buf(ctx); else beep(); } @@ -212,8 +212,7 @@ static void prompt_onKey(ToxWindow *self, Tox *m, wint_t key, bool ltr) else if (key == KEY_UP) { /* fetches previous item in history */ wmove(ctx->history, ctx->orig_y, X_OFST); - fetch_hist_item(ctx->line, &ctx->pos, &ctx->len, ctx->ln_history, ctx->hst_tot, - &ctx->hst_pos, MOVE_UP); + fetch_hist_item(ctx, MOVE_UP); /* adjust line y origin appropriately when window scrolls down */ if (ctx->at_bottom && ctx->len >= x2 - X_OFST) { @@ -233,14 +232,12 @@ static void prompt_onKey(ToxWindow *self, Tox *m, wint_t key, bool ltr) else if (key == KEY_DOWN) { /* fetches next item in history */ wmove(ctx->history, ctx->orig_y, X_OFST); - fetch_hist_item(ctx->line, &ctx->pos, &ctx->len, ctx->ln_history, ctx->hst_tot, - &ctx->hst_pos, MOVE_DOWN); + fetch_hist_item(ctx, MOVE_DOWN); } else if (key == '\t') { /* TAB key: completes command */ if (ctx->len > 1 && ctx->line[0] == '/') { - if (complete_line(ctx->line, &ctx->pos, &ctx->len, glob_cmd_list, AC_NUM_GLOB_COMMANDS, - MAX_CMDNAME_SIZE) == -1) + if (complete_line(ctx, glob_cmd_list, AC_NUM_GLOB_COMMANDS, MAX_CMDNAME_SIZE) == -1) beep(); } else { beep(); @@ -249,7 +246,7 @@ static void prompt_onKey(ToxWindow *self, Tox *m, wint_t key, bool ltr) /* RETURN key: execute command */ else if (key == '\n') { - rm_trailing_spaces_buf(ctx->line, &ctx->pos, &ctx->len); + rm_trailing_spaces_buf(ctx); wprintw(ctx->history, "\n"); uint8_t line[MAX_STR_SIZE] = {0}; @@ -258,11 +255,11 @@ static void prompt_onKey(ToxWindow *self, Tox *m, wint_t key, bool ltr) memset(&line, 0, sizeof(line)); if (!string_is_empty(line)) - add_line_to_hist(ctx->line, ctx->len, ctx->ln_history, &ctx->hst_tot, &ctx->hst_pos); + add_line_to_hist(ctx); line_info_add(self, NULL, NULL, NULL, line, PROMPT, 0, 0); execute(ctx->history, self, m, line, GLOBAL_COMMAND_MODE); - reset_buf(ctx->line, &ctx->pos, &ctx->len); + reset_buf(ctx); } } } @@ -295,7 +292,7 @@ static void prompt_onDraw(ToxWindow *self, Tox *m) uint8_t line[MAX_STR_SIZE]; if (wcs_to_mbs_buf(line, ctx->line, MAX_STR_SIZE) == -1) - reset_buf(ctx->line, &ctx->pos, &ctx->len); + reset_buf(ctx); else mvwprintw(ctx->history, ctx->orig_y, X_OFST, line); diff --git a/src/toxic_strings.c b/src/toxic_strings.c index b597ce4..9cbc152 100644 --- a/src/toxic_strings.c +++ b/src/toxic_strings.c @@ -31,177 +31,174 @@ #include "misc_tools.h" #include "toxic_strings.h" -/* Adds char to buffer at pos */ -void add_char_to_buf(wchar_t *buf, size_t *pos, size_t *len, wint_t ch) +/* Adds char to line at pos */ +void add_char_to_buf(ChatContext *ctx, wint_t ch) { - if (*pos < 0 || *len >= MAX_STR_SIZE) + if (ctx->pos < 0 || ctx->len >= MAX_STR_SIZE) return; /* move all chars including null in front of pos one space forward and insert char in pos */ int i; - for (i = *len; i >= *pos && i >= 0; --i) - buf[i + 1] = buf[i]; + for (i = ctx->len; i >= ctx->pos && i >= 0; --i) + ctx->line[i + 1] = ctx->line[i]; - buf[(*pos)++] = ch; - ++(*len); + ctx->line[ctx->pos++] = ch; + ++ctx->len; } /* Deletes the character before pos */ -void del_char_buf_bck(wchar_t *buf, size_t *pos, size_t *len) +void del_char_buf_bck(ChatContext *ctx) { - if (*pos <= 0) + if (ctx->pos <= 0) return; int i; /* similar to add_char_to_buf but deletes a char */ - for (i = *pos - 1; i <= *len; ++i) - buf[i] = buf[i + 1]; + for (i = ctx->pos - 1; i <= ctx->len; ++i) + ctx->line[i] = ctx->line[i + 1]; - --(*pos); - --(*len); + --ctx->pos; + --ctx->len; } /* Deletes the character at pos */ -void del_char_buf_frnt(wchar_t *buf, size_t *pos, size_t *len) +void del_char_buf_frnt(ChatContext *ctx) { - if (*pos < 0 || *pos >= *len) + if (ctx->pos < 0 || ctx->pos >= ctx->len) return; int i; - for (i = *pos; i < *len; ++i) - buf[i] = buf[i + 1]; + for (i = ctx->pos; i < ctx->len; ++i) + ctx->line[i] = ctx->line[i + 1]; - --(*len); + --ctx->len; } /* Deletes the line from beginning to pos */ -void discard_buf(wchar_t *buf, size_t *pos, size_t *len) +void discard_buf(ChatContext *ctx) { - if (*pos <= 0) + if (ctx->pos <= 0) return; int i; int c = 0; - for (i = *pos; i <= *len; ++i) - buf[c++] = buf[i]; + for (i = ctx->pos; i <= ctx->len; ++i) + ctx->line[c++] = ctx->line[i]; - *pos = 0; - *len = c - 1; + ctx->pos = 0; + ctx->len = c - 1; } /* Deletes the line from pos to len */ -void kill_buf(wchar_t *buf, size_t *pos, size_t *len) +void kill_buf(ChatContext *ctx) { - if (*len == *pos) + if (ctx->len == ctx->pos) return; - buf[*pos] = L'\0'; - *len = *pos; + ctx->line[ctx->pos] = L'\0'; + ctx->len = ctx->pos; } -/* nulls buf and sets pos and len to 0 */ -void reset_buf(wchar_t *buf, size_t *pos, size_t *len) +/* nulls line and sets pos and len to 0 */ +void reset_buf(ChatContext *ctx) { - buf[0] = L'\0'; - *pos = 0; - *len = 0; + ctx->line[0] = L'\0'; + ctx->pos = 0; + ctx->len = 0; } -/* Removes trailing spaces from buf. */ -void rm_trailing_spaces_buf(wchar_t *buf, size_t *pos, size_t *len) +/* Removes trailing spaces from line. */ +void rm_trailing_spaces_buf(ChatContext *ctx) { - if (*len <= 0) + if (ctx->len <= 0) return; - if (buf[*len - 1] != ' ') + if (ctx->line[ctx->len - 1] != ' ') return; int i; - for (i = *len - 1; i >= 0; --i) { - if (buf[i] != ' ') + for (i = ctx->len - 1; i >= 0; --i) { + if (ctx->line[i] != ' ') break; } - *len = i + 1; - *pos = MIN(*pos, i + 1); - buf[*len] = L'\0'; + ctx->len = i + 1; + ctx->pos = MIN(ctx->pos, i + 1); + ctx->line[ctx->len] = L'\0'; } #define HIST_PURGE MAX_LINE_HIST / 4 /* shifts hist items back and makes room for HIST_PURGE new entries */ -static void shift_hist_back(wchar_t (*hst)[MAX_STR_SIZE], int *hst_tot) +static void shift_hist_back(ChatContext *ctx) { int i; int n = MAX_LINE_HIST - HIST_PURGE; for (i = 0; i < n; ++i) - wmemcpy(hst[i], hst[i + HIST_PURGE], MAX_STR_SIZE); + wmemcpy(ctx->ln_history[i], ctx->ln_history[i + HIST_PURGE], MAX_STR_SIZE); - *hst_tot = n; + ctx->hst_tot = n; } /* adds a line to the ln_history buffer at hst_pos and sets hst_pos to end of history. */ -void add_line_to_hist(const wchar_t *buf, size_t len, wchar_t (*hst)[MAX_STR_SIZE], int *hst_tot, - int *hst_pos) +void add_line_to_hist(ChatContext *ctx) { - if (len > MAX_STR_SIZE) + if (ctx->len > MAX_STR_SIZE) return; - if (*hst_tot >= MAX_LINE_HIST) - shift_hist_back(hst, hst_tot); + if (ctx->hst_tot >= MAX_LINE_HIST) + shift_hist_back(ctx); - ++(*hst_tot); - *hst_pos = *hst_tot; + ++ctx->hst_tot; + ctx->hst_pos = ctx->hst_tot; - wmemcpy(hst[*hst_tot - 1], buf, len + 1); + wmemcpy(ctx->ln_history[ctx->hst_tot - 1], ctx->line, ctx->len + 1); } -/* copies history item at hst_pos to buf. Sets pos and len to the len of the history item. +/* copies history item at hst_pos to line. Sets pos and len to the len of the history item. hst_pos is decremented or incremented depending on key_dir. - resets buffer if at end of history */ -void fetch_hist_item(wchar_t *buf, size_t *pos, size_t *len, wchar_t (*hst)[MAX_STR_SIZE], - int hst_tot, int *hst_pos, int key_dir) + resets line if at end of history */ +void fetch_hist_item(ChatContext *ctx, int key_dir) { if (key_dir == MOVE_UP) { - if (--(*hst_pos) < 0) { - *hst_pos = 0; + if (--ctx->hst_pos < 0) { + ctx->hst_pos = 0; beep(); } } else { - if (++(*hst_pos) >= hst_tot) { - *hst_pos = hst_tot; - reset_buf(buf, pos, len); + if (++ctx->hst_pos >= ctx->hst_tot) { + ctx->hst_pos = ctx->hst_tot; + reset_buf(ctx); return; } } - const wchar_t *hst_line = hst[*hst_pos]; + const wchar_t *hst_line = ctx->ln_history[ctx->hst_pos]; size_t h_len = wcslen(hst_line); - wmemcpy(buf, hst_line, h_len + 1); - - *pos = h_len; - *len = h_len; + wmemcpy(ctx->line, hst_line, h_len + 1); + ctx->pos = h_len; + ctx->len = h_len; } -/* looks for the first instance in list that begins with the last entered word in buf according to pos, - then fills buf with the complete word. e.g. "Hello jo" would complete the buffer +/* looks for the first instance in list that begins with the last entered word in line according to pos, + then fills line with the complete word. e.g. "Hello jo" would complete the line with "Hello john". list is a pointer to the list of strings being compared, n_items is the number of items in the list, and size is the size of each item in the list. - Returns the difference between the old len and new len of buf on success, -1 if error */ -int complete_line(wchar_t *buf, size_t *pos, size_t *len, const void *list, int n_items, int size) + Returns the difference between the old len and new len of line on success, -1 if error */ +int complete_line(ChatContext *ctx, const void *list, int n_items, int size) { - if (*pos <= 0 || *len <= 0 || *len >= MAX_STR_SIZE) + if (ctx->pos <= 0 || ctx->len <= 0 || ctx->len >= MAX_STR_SIZE) return -1; const uint8_t *L = (uint8_t *) list; @@ -209,13 +206,13 @@ int complete_line(wchar_t *buf, size_t *pos, size_t *len, const void *list, int uint8_t ubuf[MAX_STR_SIZE]; /* work with multibyte string copy of buf for simplicity */ - if (wcs_to_mbs_buf(ubuf, buf, MAX_STR_SIZE) == -1) + if (wcs_to_mbs_buf(ubuf, ctx->line, MAX_STR_SIZE) == -1) return -1; /* isolate substring from space behind pos to pos */ uint8_t tmp[MAX_STR_SIZE]; snprintf(tmp, sizeof(tmp), "%s", ubuf); - tmp[*pos] = '\0'; + tmp[ctx->pos] = '\0'; uint8_t *sub = strrchr(tmp, ' '); int n_endchrs = 1; /* 1 = append space to end of match, 2 = append ": " */ @@ -248,14 +245,14 @@ int complete_line(wchar_t *buf, size_t *pos, size_t *len, const void *list, int /* put match in correct spot in buf and append endchars (space or ": ") */ const uint8_t *endchrs = n_endchrs == 1 ? " " : ": "; int m_len = strlen(match); - int strt = *pos - s_len; + int strt = ctx->pos - s_len; int diff = m_len - s_len + n_endchrs; - if (*len + diff > MAX_STR_SIZE) + if (ctx->len + diff > MAX_STR_SIZE) return -1; uint8_t tmpend[MAX_STR_SIZE]; - strcpy(tmpend, &ubuf[*pos]); + strcpy(tmpend, &ubuf[ctx->pos]); strcpy(&ubuf[strt], match); strcpy(&ubuf[strt + m_len], endchrs); strcpy(&ubuf[strt + m_len + n_endchrs], tmpend); @@ -266,10 +263,10 @@ int complete_line(wchar_t *buf, size_t *pos, size_t *len, const void *list, int if (mbs_to_wcs_buf(newbuf, ubuf, MAX_STR_SIZE) == -1) return -1; - wcscpy(buf, newbuf); + wcscpy(ctx->line, newbuf); - *len += (size_t) diff; - *pos += (size_t) diff; + ctx->len += (size_t) diff; + ctx->pos += (size_t) diff; return diff; } diff --git a/src/toxic_strings.h b/src/toxic_strings.h index 64612fd..772c318 100644 --- a/src/toxic_strings.h +++ b/src/toxic_strings.h @@ -20,42 +20,42 @@ * */ -/* Adds char to buffer at pos */ -void add_char_to_buf(wchar_t *buf, size_t *pos, size_t *len, wint_t ch); +/* Adds char to line at pos */ +void add_char_to_buf(ChatContext *ctx, wint_t ch); /* Deletes the character before pos */ -void del_char_buf_bck(wchar_t *buf, size_t *pos, size_t *len); +void del_char_buf_bck(ChatContext *ctx); /* Deletes the character at pos */ -void del_char_buf_frnt(wchar_t *buf, size_t *pos, size_t *len); +void del_char_buf_frnt(ChatContext *ctx); /* Deletes the line from beginning to pos */ -void discard_buf(wchar_t *buf, size_t *pos, size_t *len); +void discard_buf(ChatContext *ctx); /* Deletes the line from pos to len */ -void kill_buf(wchar_t *buf, size_t *pos, size_t *len); +void kill_buf(ChatContext *ctx); -/* nulls buf and sets pos and len to 0 */ -void reset_buf(wchar_t *buf, size_t *pos, size_t *len); +/* nulls line and sets pos and len to 0 */ +void reset_buf(ChatContext *ctx); -/* Removes trailing spaces from buf. */ -void rm_trailing_spaces_buf(wchar_t *buf, size_t *pos, size_t *len); +/* Removes trailing spaces from line. */ +void rm_trailing_spaces_buf(ChatContext *ctx); -/* looks for the first instance in list that begins with the last entered word in buf according to pos, - then fills buf with the complete word. e.g. "Hello jo" would complete the buffer +/* looks for the first instance in list that begins with the last entered word in line according to pos, + then fills line with the complete word. e.g. "Hello jo" would complete the line with "Hello john". list is a pointer to the list of strings being compared, n_items is the number of items in the list, and size is the size of each item in the list. - Returns the difference between the old len and new len of buf on success, -1 if error */ -int complete_line(wchar_t *buf, size_t *pos, size_t *len, const void *list, int n_items, int size); + Returns the difference between the old len and new len of line on success, -1 if error */ +int complete_line(ChatContext *ctx, const void *list, int n_items, int size); /* adds a line to the ln_history buffer at hst_pos and sets hst_pos to last history item. */ -void add_line_to_hist(const wchar_t *buf, size_t len, wchar_t (*hst)[MAX_STR_SIZE], int *hst_tot, - int *hst_pos); +void add_line_to_hist(ChatContext *ctx); -/* copies history item at hst_pos to buf. Sets pos and len to the len of the history item. - hst_pos is decremented or incremented depending on key_dir. */ -void fetch_hist_item(wchar_t *buf, size_t *pos, size_t *len, wchar_t (*hst)[MAX_STR_SIZE], - int hst_tot, int *hst_pos, int key_dir); +/* copies history item at hst_pos to line. Sets pos and len to the len of the history item. + hst_pos is decremented or incremented depending on key_dir. + + resets line if at end of history */ +void fetch_hist_item(ChatContext *ctx, int key_dir); From 8c5ac1f77d5342b133f08da70f2faf347d61eeb9 Mon Sep 17 00:00:00 2001 From: Jfreegman Date: Sat, 7 Jun 2014 14:36:37 -0400 Subject: [PATCH 22/63] proper commandline args --- src/main.c | 117 +++++++++++++++++++++++++++++++------------- src/settings.c | 4 +- src/toxic_strings.c | 2 +- 3 files changed, 87 insertions(+), 36 deletions(-) diff --git a/src/main.c b/src/main.c index 854e397..02e9cf3 100644 --- a/src/main.c +++ b/src/main.c @@ -39,6 +39,7 @@ #include #include #include +#include #ifdef _WIN32 #include @@ -79,7 +80,12 @@ ToxAv *av; char *DATA_FILE = NULL; ToxWindow *prompt = NULL; -static int f_loadfromfile; /* 1 if we want to load from/save the data file, 0 otherwise */ +struct arg_opts { + int load_data_file; + int use_ipv4; + char config_path[MAX_STR_SIZE]; + char nodes_path[MAX_STR_SIZE]; +} arg_opts; struct _Winthread Winthread; struct user_settings *user_settings = NULL; @@ -147,6 +153,9 @@ static Tox *init_tox(int ipv4) m = tox_new(0); } + if (ipv4) + fprintf(stderr, "Forcing IPv4 connection\n"); + if (m == NULL) return NULL; @@ -262,7 +271,12 @@ int init_connection(Tox *m) */ if (!srvlist_loaded) { srvlist_loaded = true; - int res = nodelist_load(PACKAGE_DATADIR "/DHTnodes"); + int res; + + if (!arg_opts.nodes_path[0]) + res = nodelist_load(PACKAGE_DATADIR "/DHTnodes"); + else + res = nodelist_load(arg_opts.nodes_path); if (linecnt < 1) return res; @@ -332,7 +346,7 @@ static void load_friendlist(Tox *m) */ int store_data(Tox *m, char *path) { - if (f_loadfromfile == 0) /*If file loading/saving is disabled*/ + if (arg_opts.load_data_file == 0) /*If file loading/saving is disabled*/ return 0; if (path == NULL) @@ -370,7 +384,7 @@ int store_data(Tox *m, char *path) static void load_data(Tox *m, char *path) { - if (f_loadfromfile == 0) /*If file loading/saving is disabled*/ + if (arg_opts.load_data_file == 0) /*If file loading/saving is disabled*/ return; FILE *fd; @@ -459,36 +473,76 @@ void *thread_winref(void *data) } } +void print_usage(void) +{ + fprintf(stderr, "Usage: Print usage here\n"); +} + +void set_default_opts(void) +{ + arg_opts.use_ipv4 = 0; + arg_opts.load_data_file = 1; +} + +void parse_args(int argc, char *argv[]) +{ + set_default_opts(); + + const char *opts_str = "4xf:c:n:"; + int opt, indexptr; + + while (true) { + static struct option long_opts[] = { + {"file", required_argument, 0, 'f'}, + {"nodata", no_argument, 0, 'x'}, + {"ipv4", no_argument, 0, '4'}, + {"config", required_argument, 0, 'c'}, + {"nodes", required_argument, 0, 'n'}, + }; + + opt = getopt_long(argc, argv, opts_str, long_opts, &indexptr); + + if (opt == -1) + break; + + switch (opt) { + case 'f': + DATA_FILE = strdup(optarg); + break; + + case 'x': + arg_opts.load_data_file = 0; + break; + + case '4': + arg_opts.use_ipv4 = 1; + break; + + case 'c': + snprintf(arg_opts.config_path, sizeof(arg_opts.config_path), "%s", optarg); + break; + + case 'n': + snprintf(arg_opts.nodes_path, sizeof(arg_opts.nodes_path), "%s", optarg); + break; + + default: + print_usage(); + exit(EXIT_FAILURE); + } + } +} + int main(int argc, char *argv[]) { char *user_config_dir = get_user_config_dir(); int config_err = 0; - f_loadfromfile = 1; - int f_flag = 0; - int i = 0; - int f_use_ipv4 = 0; + parse_args(argc, argv); /* Make sure all written files are read/writeable only by the current user. */ umask(S_IRGRP | S_IWGRP | S_IROTH | S_IWOTH); - for (i = 0; i < argc; ++i) { - if (argv[i] == NULL) - break; - else if (argv[i][0] == '-') { - if (argv[i][1] == 'f') { - if (argv[i + 1] != NULL) - DATA_FILE = strdup(argv[i + 1]); - else - f_flag = -1; - } else if (argv[i][1] == 'n') { - f_loadfromfile = 0; - } else if (argv[i][1] == '4') { - f_use_ipv4 = 1; - } - } - } - config_err = create_user_config_dir(user_config_dir); if (DATA_FILE == NULL ) { @@ -521,9 +575,11 @@ int main(int argc, char *argv[]) } memset(user_settings, 0, sizeof(struct user_settings)); - int settings_err = settings_load(user_settings, NULL); - Tox *m = init_tox(f_use_ipv4); + char *p = arg_opts.config_path[0] ? arg_opts.config_path : NULL; + int settings_err = settings_load(user_settings, p); + + Tox *m = init_tox(arg_opts.use_ipv4); init_term(); if (m == NULL) { @@ -532,7 +588,7 @@ int main(int argc, char *argv[]) exit(EXIT_FAILURE); } - if (f_loadfromfile) + if (arg_opts.load_data_file) load_data(m, DATA_FILE); prompt = init_windows(m); @@ -568,11 +624,6 @@ int main(int argc, char *argv[]) #endif /* _SUPPORT_AUDIO */ - if (f_flag == -1) { - msg = "You passed '-f' without giving an argument. Defaulting to 'data' for a keyfile..."; - line_info_add(prompt, NULL, NULL, NULL, msg, SYS_MSG, 0, 0); - } - if (config_err) { msg = "Unable to determine configuration directory. Defaulting to 'data' for a keyfile..."; line_info_add(prompt, NULL, NULL, NULL, msg, SYS_MSG, 0, 0); diff --git a/src/settings.c b/src/settings.c index add9e47..6efbc3e 100644 --- a/src/settings.c +++ b/src/settings.c @@ -178,8 +178,8 @@ int settings_load(struct user_settings *s, char *path) if (line[0] == '#' || !line[0]) continue; - const char *key = strtok(line, ":"); - const char *val = strtok(NULL, ";"); + char *key = strtok(line, ":"); + char *val = strtok(NULL, ";"); if (key == NULL || val == NULL) continue; diff --git a/src/toxic_strings.c b/src/toxic_strings.c index 9cbc152..4f7f9ae 100644 --- a/src/toxic_strings.c +++ b/src/toxic_strings.c @@ -128,7 +128,7 @@ void rm_trailing_spaces_buf(ChatContext *ctx) } ctx->len = i + 1; - ctx->pos = MIN(ctx->pos, i + 1); + ctx->pos = MIN(ctx->pos, ctx->len); ctx->line[ctx->len] = L'\0'; } From 935d8f87705c35abff226684db94a580211504bc Mon Sep 17 00:00:00 2001 From: Jfreegman Date: Sat, 7 Jun 2014 14:50:21 -0400 Subject: [PATCH 23/63] update dhtnodes --- misc/DHTnodes | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/misc/DHTnodes b/misc/DHTnodes index 5cdf719..43f6fab 100644 --- a/misc/DHTnodes +++ b/misc/DHTnodes @@ -1,8 +1,8 @@ 192.254.75.98 33445 951C88B7E75C867418ACDB5D273821372BB5BD652740BCDF623A4FA293E75D2F -2607:5600:284::2 33445 951C88B7E75C867418ACDB5D273821372BB5BD652740BCDF623A4FA293E75D2F -23.226.230.47 33445 A09162D68618E742FFBCA1C2C70385E6679604B2D80EA6E84AD0996A1AC8A074 -173.255.223.85 33445 92E0CE88651FC89D54D6A3110FD08854ECD487613E69BFB1002380D35FD4F947 +37.187.46.132 33445 A9D98212B3F972BD11DA52BEB0658C326FCCC1BFD49F347F9C2D3D8B61E1B927 144.76.60.215 33445 04119E835DF3E78BACF0F84235B300546AF8B936F035185E2A8E9E0A67C8924F -109.169.46.133 33445 4086B340BF2C2C3CC5412BCF673080EF10CF5E75A06AC960497BD85B9DEA2E64 -54.199.139.199 33445 7F9C31FE850E97CEFD4C4591DF93FC757C7C12549DDD55F8EEAECC34FE76C029 -66.175.223.88 33445 B24E2FB924AE66D023FE1E42A2EE3B432010206F751A2FFD3E297383ACF1572E +23.226.230.47 33445 A09162D68618E742FFBCA1C2C70385E6679604B2D80EA6E84AD0996A1AC8A074 +37.187.20.216 33445 4FD54CFD426A338399767E56FD0F44F5E35FA8C38C8E87C8DC3FEAC0160F8E17 +54.199.139.199 33445 7F9C31FE850E97CEFD4C4591DF93FC757C7C12549DDD55F8EEAECC34FE76C029 +109.169.46.133 33445 7F31BFC93B8E4016A902144D0B110C3EA97CB7D43F1C4D21BCAE998A7C838821 +192.210.149.121 33445 F404ABAA1C99A9D37D61AB54898F56793E1DEF8BD46B1038B9D822E8460FAB67 From 2a63e62aba0f92493ef4c67ac492256bdb6031e7 Mon Sep 17 00:00:00 2001 From: Jfreegman Date: Sat, 7 Jun 2014 17:14:48 -0400 Subject: [PATCH 24/63] --help message --- src/main.c | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/src/main.c b/src/main.c index 02e9cf3..5a22ff3 100644 --- a/src/main.c +++ b/src/main.c @@ -473,22 +473,28 @@ void *thread_winref(void *data) } } -void print_usage(void) +static void print_usage(void) { - fprintf(stderr, "Usage: Print usage here\n"); + fprintf(stderr, "usage: toxic [OPTION] [FILE ...]\n"); + fprintf(stderr, " -f, --file Use specified data file\n"); + fprintf(stderr, " -x, --nodata Ignore data file\n"); + fprintf(stderr, " -4, --ipv4 Force IPv4 connection\n"); + fprintf(stderr, " -c, --config Use specified config file\n"); + fprintf(stderr, " -n, --nodes Use specified DHTnodes file\n"); + fprintf(stderr, " -h, --help Show this message and exit\n"); } -void set_default_opts(void) +static void set_default_opts(void) { arg_opts.use_ipv4 = 0; arg_opts.load_data_file = 1; } -void parse_args(int argc, char *argv[]) +static void parse_args(int argc, char *argv[]) { set_default_opts(); - const char *opts_str = "4xf:c:n:"; + const char *opts_str = "4xf:c:n:h"; int opt, indexptr; while (true) { @@ -498,6 +504,7 @@ void parse_args(int argc, char *argv[]) {"ipv4", no_argument, 0, '4'}, {"config", required_argument, 0, 'c'}, {"nodes", required_argument, 0, 'n'}, + {"help", no_argument, 0, 'h'}, }; opt = getopt_long(argc, argv, opts_str, long_opts, &indexptr); @@ -526,6 +533,7 @@ void parse_args(int argc, char *argv[]) snprintf(arg_opts.nodes_path, sizeof(arg_opts.nodes_path), "%s", optarg); break; + case 'h': default: print_usage(); exit(EXIT_FAILURE); From 6a2ef5cc6cc63845773b2fd72e19d92fd9d818db Mon Sep 17 00:00:00 2001 From: Jfreegman Date: Sat, 7 Jun 2014 17:59:17 -0400 Subject: [PATCH 25/63] terminate audio before core on exit --- src/main.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main.c b/src/main.c index 5a22ff3..57d7f75 100644 --- a/src/main.c +++ b/src/main.c @@ -442,10 +442,10 @@ void exit_toxic(Tox *m) free(prompt->chatwin->hst); free(prompt->chatwin); free(user_settings); - tox_kill(m); #ifdef _SUPPORT_AUDIO terminate_audio(); #endif /* _SUPPORT_AUDIO */ + tox_kill(m); endwin(); exit(EXIT_SUCCESS); } From 33000598fc7647c89624343c773f87958069a1e4 Mon Sep 17 00:00:00 2001 From: Jfreegman Date: Sun, 8 Jun 2014 01:05:01 -0400 Subject: [PATCH 26/63] more intuitive option logic --- src/main.c | 12 ++++++------ src/settings.c | 4 ++-- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/src/main.c b/src/main.c index 57d7f75..cbe9fd7 100644 --- a/src/main.c +++ b/src/main.c @@ -81,7 +81,7 @@ char *DATA_FILE = NULL; ToxWindow *prompt = NULL; struct arg_opts { - int load_data_file; + int ignore_data_file; int use_ipv4; char config_path[MAX_STR_SIZE]; char nodes_path[MAX_STR_SIZE]; @@ -346,7 +346,7 @@ static void load_friendlist(Tox *m) */ int store_data(Tox *m, char *path) { - if (arg_opts.load_data_file == 0) /*If file loading/saving is disabled*/ + if (arg_opts.ignore_data_file) return 0; if (path == NULL) @@ -384,7 +384,7 @@ int store_data(Tox *m, char *path) static void load_data(Tox *m, char *path) { - if (arg_opts.load_data_file == 0) /*If file loading/saving is disabled*/ + if (arg_opts.ignore_data_file) return; FILE *fd; @@ -487,7 +487,7 @@ static void print_usage(void) static void set_default_opts(void) { arg_opts.use_ipv4 = 0; - arg_opts.load_data_file = 1; + arg_opts.ignore_data_file = 0; } static void parse_args(int argc, char *argv[]) @@ -518,7 +518,7 @@ static void parse_args(int argc, char *argv[]) break; case 'x': - arg_opts.load_data_file = 0; + arg_opts.ignore_data_file = 1; break; case '4': @@ -596,7 +596,7 @@ int main(int argc, char *argv[]) exit(EXIT_FAILURE); } - if (arg_opts.load_data_file) + if (!arg_opts.ignore_data_file) load_data(m, DATA_FILE); prompt = init_windows(m); diff --git a/src/settings.c b/src/settings.c index 6efbc3e..add9e47 100644 --- a/src/settings.c +++ b/src/settings.c @@ -178,8 +178,8 @@ int settings_load(struct user_settings *s, char *path) if (line[0] == '#' || !line[0]) continue; - char *key = strtok(line, ":"); - char *val = strtok(NULL, ";"); + const char *key = strtok(line, ":"); + const char *val = strtok(NULL, ";"); if (key == NULL || val == NULL) continue; From 328e7f8d57690b51c03ca1f5da5ea5bf01eabd62 Mon Sep 17 00:00:00 2001 From: Jfreegman Date: Tue, 10 Jun 2014 17:34:15 -0400 Subject: [PATCH 27/63] fix compile error when no audio support --- src/settings.c | 31 ++++++++++++++++++++++++------- src/settings.h | 13 ++++++++++--- 2 files changed, 34 insertions(+), 10 deletions(-) diff --git a/src/settings.c b/src/settings.c index add9e47..2eb860d 100644 --- a/src/settings.c +++ b/src/settings.c @@ -25,7 +25,11 @@ #include "toxic_windows.h" #include "configdir.h" -#include "audio_call.h" + +#ifdef _SUPPORT_AUDIO + #include "audio_call.h" +#endif + #include "settings.h" #include "line_info.h" @@ -33,11 +37,14 @@ static void uset_autolog(struct user_settings *s, const char *val); static void uset_time(struct user_settings *s, const char *val); static void uset_alerts(struct user_settings *s, const char *val); static void uset_colours(struct user_settings *s, const char *val); -static void uset_ain_dev(struct user_settings *s, const char *val); -static void uset_aout_dev(struct user_settings *s, const char *val); static void uset_hst_size(struct user_settings *s, const char *val); static void uset_dwnld_path(struct user_settings *s, const char *val); +#ifdef _SUPPORT_AUDIO +static void uset_ain_dev(struct user_settings *s, const char *val); +static void uset_aout_dev(struct user_settings *s, const char *val); +#endif + struct { const char *key; void (*func)(struct user_settings *s, const char *val); @@ -46,10 +53,13 @@ struct { { "time", uset_time }, { "disable_alerts", uset_alerts }, { "colour_theme", uset_colours }, - { "audio_in_dev", uset_ain_dev }, - { "audio_out_dev", uset_aout_dev }, { "history_size", uset_hst_size }, { "download_path", uset_dwnld_path }, + +#ifdef _SUPPORT_AUDIO + { "audio_in_dev", uset_ain_dev }, + { "audio_out_dev", uset_aout_dev }, +#endif }; static void uset_autolog(struct user_settings *s, const char *val) @@ -84,6 +94,8 @@ static void uset_colours(struct user_settings *s, const char *val) s->colour_theme = n == NATIVE_COLS ? NATIVE_COLS : DFLT_COLS; } +#ifdef _SUPPORT_AUDIO + static void uset_ain_dev(struct user_settings *s, const char *val) { int n = atoi(val); @@ -104,6 +116,8 @@ static void uset_aout_dev(struct user_settings *s, const char *val) s->audio_out_dev = (long int) n; } +#endif /* _SUPPORT_AUDIO */ + static void uset_hst_size(struct user_settings *s, const char *val) { int n = atoi(val); @@ -142,10 +156,13 @@ static void set_default_settings(struct user_settings *s) uset_time(s, "24"); uset_alerts(s, "0"); uset_colours(s, "0"); - uset_ain_dev(s, "0"); - uset_aout_dev(s, "0"); uset_hst_size(s, "700"); uset_dwnld_path(s, NULL); + +#ifdef _SUPPORT_AUDIO + uset_ain_dev(s, "0"); + uset_aout_dev(s, "0"); +#endif } int settings_load(struct user_settings *s, char *path) diff --git a/src/settings.h b/src/settings.h index 83f05b3..ef9e709 100644 --- a/src/settings.h +++ b/src/settings.h @@ -20,7 +20,11 @@ * */ -#define NUM_SETTINGS 8 +#ifdef _SUPPORT_AUDIO + #define NUM_SETTINGS 8 +#else + #define NUM_SETTINGS 6 +#endif /* holds user setting values */ struct user_settings { @@ -28,10 +32,13 @@ struct user_settings { int alerts; /* boolean */ int time; /* 12 or 24 */ int colour_theme; /* boolean (0 for default toxic colours) */ - long int audio_in_dev; - long int audio_out_dev; int history_size; /* int between MIN_HISTORY and MAX_HISTORY */ char download_path[MAX_STR_SIZE]; + +#ifdef _SUPPORT_AUDIO + long int audio_in_dev; + long int audio_out_dev; +#endif }; enum { From 12e33a1760b1cfee0cd4dd1b6a52a11895f83b4a Mon Sep 17 00:00:00 2001 From: Jfreegman Date: Wed, 11 Jun 2014 14:37:36 -0400 Subject: [PATCH 28/63] drop broken windows support --- src/configdir.c | 47 ----------------------------------------------- src/configdir.h | 4 ---- src/main.c | 7 ------- src/misc_tools.c | 14 +++++--------- 4 files changed, 5 insertions(+), 67 deletions(-) diff --git a/src/configdir.c b/src/configdir.c index 4bb2411..f569ca9 100644 --- a/src/configdir.c +++ b/src/configdir.c @@ -30,14 +30,8 @@ #include #include #include - -#ifdef _WIN32 -#include -#include -#else /* WIN32 */ #include #include -#endif /* WIN32 */ #include "configdir.h" @@ -51,25 +45,6 @@ char *get_user_config_dir(void) { char *user_config_dir; -#ifdef _WIN32 -#warning Please fix configdir for Win32 - return NULL; -#if 0 - char appdata[MAX_PATH]; - BOOL ok; - - ok = SHGetSpecialFolderPathA(NULL, appdata, CSIDL_PROFILE, TRUE); - - if (!ok) { - return NULL; - } - - user_config_dir = strdup(appdata); - - return user_config_dir; -#endif - -#else /* WIN32 */ #ifndef NSS_BUFLEN_PASSWD #define NSS_BUFLEN_PASSWD 4096 @@ -128,7 +103,6 @@ char *get_user_config_dir(void) return user_config_dir; #undef NSS_BUFLEN_PASSWD -#endif /* WIN32 */ } /* @@ -136,26 +110,6 @@ char *get_user_config_dir(void) */ int create_user_config_dir(char *path) { -#ifdef _WIN32 -#warning Please fix configdir for Win32 - return -1; -#if 0 - char *fullpath = malloc(strlen(path) + strlen(CONFIGDIR) + 1); - strcpy(fullpath, path); - strcat(fullpath, CONFIGDIR); - - mkdir_err = _mkdir(fullpath); - struct __stat64 buf; - - if (mkdir_err && (errno != EEXIST || _wstat64(fullpath, &buf) || !S_ISDIR(buf.st_mode))) { - free(fullpath); - return -1; - } - - free(fullpath); -#endif - -#else int mkdir_err; mkdir_err = mkdir(path, 0700); @@ -178,5 +132,4 @@ int create_user_config_dir(char *path) free(fullpath); return 0; -#endif } diff --git a/src/configdir.h b/src/configdir.h index 6a1a7eb..ad4daf8 100644 --- a/src/configdir.h +++ b/src/configdir.h @@ -20,11 +20,7 @@ * */ -#ifdef _win32 -#define CONFIGDIR "\\tox\\" -#else #define CONFIGDIR "/tox/" -#endif #ifndef S_ISDIR #define S_ISDIR(mode) (((mode) & S_IFMT) == S_IFDIR) diff --git a/src/main.c b/src/main.c index cbe9fd7..f979c4f 100644 --- a/src/main.c +++ b/src/main.c @@ -40,18 +40,11 @@ #include #include #include - -#ifdef _WIN32 -#include -#include -#include -#else #include #include #include #include #include -#endif #include diff --git a/src/misc_tools.c b/src/misc_tools.c index e401010..a1e562e 100644 --- a/src/misc_tools.c +++ b/src/misc_tools.c @@ -240,16 +240,12 @@ void get_file_name(uint8_t *namebuf, uint8_t *pathname) while (idx >= 0 && pathname[idx] == '/') pathname[idx--] = '\0'; - uint8_t *filename = strrchr(pathname, '/'); /* Try unix style paths */ + uint8_t *filename = strrchr(pathname, '/'); - if (filename != NULL) { - if (!strlen(++filename)) - filename = pathname; - } else { - filename = strrchr(pathname, '\\'); /* Try windows style paths */ - - if (filename == NULL) - filename = pathname; + if (filename == NULL) { + filename = pathname; + } else if (!strlen(++filename)) { + filename = pathname; } snprintf(namebuf, MAX_STR_SIZE, "%s", filename); From 31acdcada38c22a6bc3bb3542037b6896fc042e9 Mon Sep 17 00:00:00 2001 From: Jfreegman Date: Wed, 11 Jun 2014 18:06:55 -0400 Subject: [PATCH 29/63] reorganize toxic_windows.h into two separate header files, rename main.c to toxic.c --- build/Makefile.am | 15 +- configure.ac | 2 +- src/audio_call.c | 26 +- src/audio_call.h | 25 +- src/chat.c | 3 +- src/chat.h | 3 +- src/chat_commands.c | 3 +- src/chat_commands.h | 8 + src/configdir.h | 5 + src/execute.c | 3 +- src/execute.h | 8 + src/file_senders.c | 4 +- src/file_senders.h | 26 ++ src/friendlist.c | 2 + src/friendlist.h | 13 +- src/global_commands.c | 3 +- src/global_commands.h | 10 +- src/groupchat.c | 3 +- src/groupchat.h | 8 + src/line_info.c | 3 +- src/line_info.h | 8 + src/log.c | 3 +- src/log.h | 5 + src/misc_tools.c | 3 +- src/misc_tools.h | 7 + src/prompt.c | 3 +- src/prompt.h | 4 +- src/settings.c | 3 +- src/settings.h | 7 + src/toxic.c | 652 ++++++++++++++++++++++++++++++++++++++++++ src/toxic.h | 84 ++++++ src/toxic_strings.c | 3 +- src/toxic_strings.h | 7 + src/windows.c | 3 +- src/windows.h | 180 ++++++++++++ 35 files changed, 1114 insertions(+), 31 deletions(-) create mode 100644 src/toxic.c create mode 100644 src/toxic.h create mode 100644 src/windows.h diff --git a/build/Makefile.am b/build/Makefile.am index 4bc008d..0a07e55 100644 --- a/build/Makefile.am +++ b/build/Makefile.am @@ -3,7 +3,8 @@ bin_PROGRAMS = toxic -toxic_SOURCES = $(top_srcdir)/src/main.c \ +toxic_SOURCES = $(top_srcdir)/src/toxic.c \ + $(top_srcdir)/src/toxic.h \ $(top_srcdir)/src/chat.h \ $(top_srcdir)/src/chat.c \ $(top_srcdir)/src/configdir.h \ @@ -12,8 +13,8 @@ toxic_SOURCES = $(top_srcdir)/src/main.c \ $(top_srcdir)/src/prompt.c \ $(top_srcdir)/src/friendlist.h \ $(top_srcdir)/src/friendlist.c \ - $(top_srcdir)/src/toxic_windows.h \ $(top_srcdir)/src/windows.c \ + $(top_srcdir)/src/windows.h \ $(top_srcdir)/src/groupchat.c \ $(top_srcdir)/src/groupchat.h \ $(top_srcdir)/src/global_commands.c \ @@ -35,11 +36,11 @@ toxic_SOURCES = $(top_srcdir)/src/main.c \ $(top_srcdir)/src/settings.c \ $(top_srcdir)/src/settings.h -toxic_CFLAGS = -I$(top_srcdir) \ - $(NCURSES_CFLAGS) \ - $(LIBSODIUM_CFLAGS) \ - $(LIBTOXCORE_CFLAGS) \ - $(PTHREAD_CFLAGS) +toxic_CFLAGS = -I$(top_srcdir) \ + $(NCURSES_CFLAGS) \ + $(LIBSODIUM_CFLAGS) \ + $(LIBTOXCORE_CFLAGS) \ + $(PTHREAD_CFLAGS) toxic_CPPFLAGS = '-DTOXICVER="$(TOXIC_VERSION)"' diff --git a/configure.ac b/configure.ac index de0d610..075b702 100644 --- a/configure.ac +++ b/configure.ac @@ -4,7 +4,7 @@ AC_PREREQ([2.65]) AC_INIT([toxic], [0.4.0], [https://tox.im/]) AC_CONFIG_AUX_DIR(configure_aux) -AC_CONFIG_SRCDIR([src/main.c]) +AC_CONFIG_SRCDIR([src/toxic.c]) AC_CONFIG_HEADERS([config.h]) AM_INIT_AUTOMAKE([1.10 -Wall]) m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])]) diff --git a/src/audio_call.c b/src/audio_call.c index 106ebed..a885814 100644 --- a/src/audio_call.c +++ b/src/audio_call.c @@ -1,16 +1,34 @@ -/* - * Toxic -- Tox Curses Client +/* audio_call.c + * + * + * Copyright (C) 2014 Toxic All Rights Reserved. + * + * This file is part of Toxic. + * + * Toxic is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Toxic is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Toxic. If not, see . + * */ #ifdef HAVE_CONFIG_H #include "config.h" #endif -#include "toxic_windows.h" +#include "toxic.h" +#include "windows.h" #include "audio_call.h" #include "chat_commands.h" #include "global_commands.h" -#include "toxic_windows.h" #include "line_info.h" #include diff --git a/src/audio_call.h b/src/audio_call.h index 264e94b..7583eb4 100644 --- a/src/audio_call.h +++ b/src/audio_call.h @@ -1,5 +1,23 @@ -/* - * Toxic -- Tox Curses Client +/* audio_call.h + * + * + * Copyright (C) 2014 Toxic All Rights Reserved. + * + * This file is part of Toxic. + * + * Toxic is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Toxic is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Toxic. If not, see . + * */ #ifndef _audio_h @@ -7,6 +25,9 @@ #include +#include "toxic.h" +#include "windows.h" + #define MAX_DEVICES 32 typedef enum _AudioError { diff --git a/src/chat.c b/src/chat.c index d1fbc36..a348527 100644 --- a/src/chat.c +++ b/src/chat.c @@ -28,7 +28,8 @@ #include #include -#include "toxic_windows.h" +#include "toxic.h" +#include "windows.h" #include "execute.h" #include "misc_tools.h" #include "friendlist.h" diff --git a/src/chat.h b/src/chat.h index d3aeb3e..e6fc30b 100644 --- a/src/chat.h +++ b/src/chat.h @@ -23,7 +23,8 @@ #ifndef CHAT_H_6489PZ13 #define CHAT_H_6489PZ13 -#include "toxic_windows.h" +#include "windows.h" +#include "toxic.h" void kill_chat_window(ToxWindow *self); ToxWindow new_chat(Tox *m, int32_t friendnum); diff --git a/src/chat_commands.c b/src/chat_commands.c index 063d16d..9c92e8e 100644 --- a/src/chat_commands.c +++ b/src/chat_commands.c @@ -27,7 +27,8 @@ #include #include -#include "toxic_windows.h" +#include "toxic.h" +#include "windows.h" #include "misc_tools.h" #include "friendlist.h" #include "execute.h" diff --git a/src/chat_commands.h b/src/chat_commands.h index 76ecd64..0cab454 100644 --- a/src/chat_commands.h +++ b/src/chat_commands.h @@ -20,6 +20,12 @@ * */ +#ifndef _chat_commands_h +#define _chat_commands_h + +#include "windows.h" +#include "toxic.h" + void cmd_chat_help(WINDOW *, ToxWindow *, Tox *, int argc, char (*argv)[MAX_STR_SIZE]); void cmd_groupinvite(WINDOW *, ToxWindow *, Tox *, int argc, char (*argv)[MAX_STR_SIZE]); void cmd_join_group(WINDOW *, ToxWindow *, Tox *, int argc, char (*argv)[MAX_STR_SIZE]); @@ -34,3 +40,5 @@ void cmd_reject(WINDOW *, ToxWindow *, Tox *, int argc, char (*argv)[MAX_STR_SIZ void cmd_hangup(WINDOW *, ToxWindow *, Tox *, int argc, char (*argv)[MAX_STR_SIZE]); void cmd_cancel(WINDOW *, ToxWindow *, Tox *, int argc, char (*argv)[MAX_STR_SIZE]); #endif /* _SUPPORT_AUDIO */ + +#endif /* #define _chat_commands_h */ diff --git a/src/configdir.h b/src/configdir.h index ad4daf8..0a8b01d 100644 --- a/src/configdir.h +++ b/src/configdir.h @@ -20,6 +20,9 @@ * */ +#ifndef _configdir_h +#define _configdir_h + #define CONFIGDIR "/tox/" #ifndef S_ISDIR @@ -29,3 +32,5 @@ char *get_user_config_dir(void); int create_user_config_dir(char *path); + +#endif /* #define _configdir_h */ diff --git a/src/execute.c b/src/execute.c index 34e8e31..5a9fde8 100644 --- a/src/execute.c +++ b/src/execute.c @@ -28,7 +28,8 @@ #include #include -#include "toxic_windows.h" +#include "toxic.h" +#include "windows.h" #include "execute.h" #include "chat_commands.h" #include "global_commands.h" diff --git a/src/execute.h b/src/execute.h index df9072e..80a6a00 100644 --- a/src/execute.h +++ b/src/execute.h @@ -20,6 +20,12 @@ * */ +#ifndef _execute_h +#define _execute_h + +#include "toxic.h" +#include "windows.h" + #define MAX_NUM_ARGS 4 /* Includes command */ #ifdef _SUPPORT_AUDIO @@ -37,3 +43,5 @@ enum { }; void execute(WINDOW *w, ToxWindow *self, Tox *m, char *cmd, int mode); + +#endif /* #define _execute_h */ diff --git a/src/file_senders.c b/src/file_senders.c index 69aaca5..4d12a54 100644 --- a/src/file_senders.c +++ b/src/file_senders.c @@ -28,7 +28,9 @@ #include #include -#include "toxic_windows.h" +#include "toxic.h" +#include "windows.h" +#include "file_senders.h" #include "line_info.h" FileSender file_senders[MAX_FILES]; diff --git a/src/file_senders.h b/src/file_senders.h index 9ec1cdc..59cc640 100644 --- a/src/file_senders.h +++ b/src/file_senders.h @@ -20,7 +20,33 @@ * */ +#ifndef _filesenders_h +#define _filesenders_h + +#include "toxic.h" +#include "windows.h" + +#define FILE_PIECE_SIZE 2048 /* must be >= (MAX_CRYPTO_DATA_SIZE - 2) in toxcore/net_crypto.h */ +#define MAX_FILES 256 +#define TIMEOUT_FILESENDER 300 + +typedef struct { + FILE *file; + ToxWindow *toxwin; + int32_t friendnum; + bool active; + int filenum; + uint8_t nextpiece[FILE_PIECE_SIZE]; + uint16_t piecelen; + uint8_t pathname[MAX_STR_SIZE]; + uint64_t timestamp; + uint64_t size; + uint32_t line_id; +} FileSender; + /* Should only be called on exit */ void close_all_file_senders(void); void do_file_senders(Tox *m); + +#endif /* #define _filesenders_h */ diff --git a/src/friendlist.c b/src/friendlist.c index 108b772..9e602a6 100644 --- a/src/friendlist.c +++ b/src/friendlist.c @@ -31,6 +31,8 @@ #include +#include "toxic.h" +#include "windows.h" #include "chat.h" #include "friendlist.h" #include "misc_tools.h" diff --git a/src/friendlist.h b/src/friendlist.h index 363cbea..f6cc9fd 100644 --- a/src/friendlist.h +++ b/src/friendlist.h @@ -24,10 +24,21 @@ #define FRIENDLIST_H_53I41IM #include -#include "toxic_windows.h" + +#include "toxic.h" +#include "windows.h" +#include "file_senders.h" #define TIME_STR_SIZE 16 +struct FileReceiver { + uint8_t filenames[MAX_FILES][MAX_STR_SIZE]; + FILE *files[MAX_FILES]; + bool pending[MAX_FILES]; + uint64_t size[MAX_FILES]; + uint32_t line_id[MAX_FILES]; +}; + struct LastOnline { uint64_t last_on; struct tm tm; diff --git a/src/global_commands.c b/src/global_commands.c index b51adca..9221e90 100644 --- a/src/global_commands.c +++ b/src/global_commands.c @@ -27,7 +27,8 @@ #include #include -#include "toxic_windows.h" +#include "toxic.h" +#include "windows.h" #include "misc_tools.h" #include "friendlist.h" #include "log.h" diff --git a/src/global_commands.h b/src/global_commands.h index f8aec5b..5bc5e3c 100644 --- a/src/global_commands.h +++ b/src/global_commands.h @@ -20,6 +20,12 @@ * */ +#ifndef _global_commands_h +#define _global_commands_h + +#include "windows.h" +#include "toxic.h" + void cmd_accept(WINDOW *, ToxWindow *, Tox *, int argc, char (*argv)[MAX_STR_SIZE]); void cmd_add(WINDOW *, ToxWindow *, Tox *, int argc, char (*argv)[MAX_STR_SIZE]); void cmd_clear(WINDOW *, ToxWindow *, Tox *, int argc, char (*argv)[MAX_STR_SIZE]); @@ -36,4 +42,6 @@ void cmd_status(WINDOW *, ToxWindow *, Tox *, int argc, char (*argv)[MAX_STR_SIZ #ifdef _SUPPORT_AUDIO void cmd_list_devices(WINDOW *, ToxWindow *, Tox *, int argc, char (*argv)[MAX_STR_SIZE]); void cmd_change_device(WINDOW *, ToxWindow *, Tox *, int argc, char (*argv)[MAX_STR_SIZE]); -#endif /* _SUPPORT_AUDIO */ \ No newline at end of file +#endif /* _SUPPORT_AUDIO */ + +#endif /* #define _global_commands_h */ diff --git a/src/groupchat.c b/src/groupchat.c index 15c8448..5a42892 100644 --- a/src/groupchat.c +++ b/src/groupchat.c @@ -28,7 +28,8 @@ #include #include -#include "toxic_windows.h" +#include "windows.h" +#include "toxic.h" #include "execute.h" #include "misc_tools.h" #include "groupchat.h" diff --git a/src/groupchat.h b/src/groupchat.h index afaa311..3ef5a1e 100644 --- a/src/groupchat.h +++ b/src/groupchat.h @@ -20,6 +20,12 @@ * */ +#ifndef _groupchat_h +#define _groupchat_h + +#include "toxic.h" +#include "windows.h" + #define SIDEBAR_WIDTH 16 #define SDBAR_OFST 2 /* Offset for the peer number box at the top of the statusbar */ @@ -37,3 +43,5 @@ typedef struct { void kill_groupchat_window(ToxWindow *self); int init_groupchat_win(ToxWindow *prompt, Tox *m, int groupnum); ToxWindow new_group_chat(Tox *m, int groupnum); + +#endif /* #define _groupchat_h */ diff --git a/src/line_info.c b/src/line_info.c index 94ac2b4..6c32295 100644 --- a/src/line_info.c +++ b/src/line_info.c @@ -28,7 +28,8 @@ #include #include -#include "toxic_windows.h" +#include "toxic.h" +#include "windows.h" #include "line_info.h" #include "groupchat.h" #include "settings.h" diff --git a/src/line_info.h b/src/line_info.h index 3d921e5..e9618a7 100644 --- a/src/line_info.h +++ b/src/line_info.h @@ -20,6 +20,12 @@ * */ +#ifndef _line_info_h +#define line_info_h + +#include "windows.h" +#include "toxic.h" + #define MAX_HISTORY 10000 #define MIN_HISTORY 20 @@ -84,3 +90,5 @@ void line_info_set(ToxWindow *self, uint32_t id, uint8_t *msg); void line_info_init(struct history *hst); void line_info_onKey(ToxWindow *self, wint_t key); void line_info_onDraw(ToxWindow *self); + +#endif /* #define line_info_h */ diff --git a/src/log.c b/src/log.c index 63f3d40..d965895 100644 --- a/src/log.c +++ b/src/log.c @@ -29,7 +29,8 @@ #include #include "configdir.h" -#include "toxic_windows.h" +#include "toxic.h" +#include "windows.h" #include "misc_tools.h" #include "log.h" #include "settings.h" diff --git a/src/log.h b/src/log.h index 9473eeb..0cb1ba2 100644 --- a/src/log.h +++ b/src/log.h @@ -20,6 +20,9 @@ * */ +#ifndef _log_h +#define _log_h + #define LOG_FLUSH_LIMIT 2 /* limits calls to fflush(logfile) to a max of one per LOG_FLUSH_LIMIT seconds */ struct chatlog { @@ -40,3 +43,5 @@ void log_enable(uint8_t *name, uint8_t *key, struct chatlog *log); /* disables logging for specified log and closes file */ void log_disable(struct chatlog *log); + +#endif /* #define _log_h */ diff --git a/src/misc_tools.c b/src/misc_tools.c index a1e562e..b28d814 100644 --- a/src/misc_tools.c +++ b/src/misc_tools.c @@ -29,7 +29,8 @@ #include #include -#include "toxic_windows.h" +#include "toxic.h" +#include "windows.h" #include "misc_tools.h" #include "settings.h" diff --git a/src/misc_tools.h b/src/misc_tools.h index e1e7e45..1c056cb 100644 --- a/src/misc_tools.h +++ b/src/misc_tools.h @@ -19,6 +19,11 @@ * along with Toxic. If not, see . * */ +#ifndef _misc_tools_h +#define _misc_tools_h + +#include "windows.h" +#include "toxic.h" #define MIN(x, y) (((x) < (y)) ? (x) : (y)) #define MAX(x, y) (((x) > (y)) ? (x) : (y)) @@ -75,3 +80,5 @@ void mv_curs_end(WINDOW *w, size_t len, int max_y, int max_x); /* gets base file name from path or original file name if no path is supplied */ void get_file_name(uint8_t *namebuf, uint8_t *pathname); + +#endif /* #define _misc_tools_h */ diff --git a/src/prompt.c b/src/prompt.c index 39e9ba9..a6e387d 100644 --- a/src/prompt.c +++ b/src/prompt.c @@ -27,7 +27,8 @@ #include #include -#include "toxic_windows.h" +#include "toxic.h" +#include "windows.h" #include "prompt.h" #include "execute.h" #include "misc_tools.h" diff --git a/src/prompt.h b/src/prompt.h index b120a65..405a3ec 100644 --- a/src/prompt.h +++ b/src/prompt.h @@ -23,8 +23,10 @@ #ifndef PROMPT_H_UZYGWFFL #define PROMPT_H_UZYGWFFL -#define X_OFST 2 /* offset to account for prompt char */ +#include "toxic.h" +#include "windows.h" +#define X_OFST 2 /* offset to account for prompt char */ #ifdef _SUPPORT_AUDIO #define AC_NUM_GLOB_COMMANDS 17 diff --git a/src/settings.c b/src/settings.c index 2eb860d..9e10d42 100644 --- a/src/settings.c +++ b/src/settings.c @@ -23,7 +23,8 @@ #include #include -#include "toxic_windows.h" +#include "toxic.h" +#include "windows.h" #include "configdir.h" #ifdef _SUPPORT_AUDIO diff --git a/src/settings.h b/src/settings.h index ef9e709..946d2e6 100644 --- a/src/settings.h +++ b/src/settings.h @@ -20,6 +20,11 @@ * */ +#ifndef _settings_h +#define _settings_h + +#include "toxic.h" + #ifdef _SUPPORT_AUDIO #define NUM_SETTINGS 8 #else @@ -58,3 +63,5 @@ enum { } settings_values; int settings_load(struct user_settings *s, char *path); + +#endif /* #define _settings_h */ diff --git a/src/toxic.c b/src/toxic.c new file mode 100644 index 0000000..2a54a69 --- /dev/null +++ b/src/toxic.c @@ -0,0 +1,652 @@ +/* toxic.c + * + * + * Copyright (C) 2014 Toxic All Rights Reserved. + * + * This file is part of Toxic. + * + * Toxic is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Toxic is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Toxic. If not, see . + * + */ + +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +#ifndef SIGWINCH +#define SIGWINCH 28 +#endif + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include + +#include "configdir.h" +#include "toxic.h" +#include "windows.h" +#include "friendlist.h" +#include "prompt.h" +#include "misc_tools.h" +#include "file_senders.h" +#include "line_info.h" +#include "settings.h" + +#ifdef _SUPPORT_AUDIO +#include "audio_call.h" +#endif /* _SUPPORT_AUDIO */ + +#ifndef PACKAGE_DATADIR +#define PACKAGE_DATADIR "." +#endif + +#ifdef _SUPPORT_AUDIO +ToxAv *av; +#endif /* _SUPPORT_AUDIO */ + +/* Export for use in Callbacks */ +char *DATA_FILE = NULL; +ToxWindow *prompt = NULL; + +struct arg_opts { + int ignore_data_file; + int use_ipv4; + char config_path[MAX_STR_SIZE]; + char nodes_path[MAX_STR_SIZE]; +} arg_opts; + +struct _Winthread Winthread; +struct user_settings *user_settings = NULL; + +void on_window_resize(int sig) +{ + refresh(); + clear(); +} + +static void init_term(void) +{ + /* Setup terminal */ + signal(SIGWINCH, on_window_resize); +#if HAVE_WIDECHAR + + if (setlocale(LC_ALL, "") == NULL) { + fprintf(stderr, "Could not set your locale, plese check your locale settings or" + "disable wide char support\n"); + exit(EXIT_FAILURE); + } + +#endif + initscr(); + cbreak(); + keypad(stdscr, 1); + noecho(); + timeout(100); + + if (has_colors()) { + short bg_color = COLOR_BLACK; + start_color(); + + if (user_settings->colour_theme == NATIVE_COLS) { + if (assume_default_colors(-1, -1) == OK) + bg_color = -1; + } + + init_pair(0, COLOR_WHITE, COLOR_BLACK); + init_pair(1, COLOR_GREEN, bg_color); + init_pair(2, COLOR_CYAN, bg_color); + init_pair(3, COLOR_RED, bg_color); + init_pair(4, COLOR_BLUE, bg_color); + init_pair(5, COLOR_YELLOW, bg_color); + init_pair(6, COLOR_MAGENTA, bg_color); + init_pair(7, COLOR_BLACK, COLOR_BLACK); + init_pair(8, COLOR_BLACK, COLOR_WHITE); + } + + refresh(); +} + +static Tox *init_tox(int ipv4) +{ + /* Init core */ + int ipv6 = !ipv4; + Tox *m = tox_new(ipv6); + + /* + * TOX_ENABLE_IPV6_DEFAULT is always 1. + * Checking it is redundant, this *should* be doing ipv4 fallback + */ + if (ipv6 && m == NULL) { + fprintf(stderr, "IPv6 didn't initialize, trying IPv4\n"); + m = tox_new(0); + } + + if (ipv4) + fprintf(stderr, "Forcing IPv4 connection\n"); + + if (m == NULL) + return NULL; + + /* Callbacks */ + tox_callback_connection_status(m, on_connectionchange, NULL); + tox_callback_typing_change(m, on_typing_change, NULL); + tox_callback_friend_request(m, on_request, NULL); + tox_callback_friend_message(m, on_message, NULL); + tox_callback_name_change(m, on_nickchange, NULL); + tox_callback_user_status(m, on_statuschange, NULL); + tox_callback_status_message(m, on_statusmessagechange, NULL); + tox_callback_friend_action(m, on_action, NULL); + tox_callback_group_invite(m, on_groupinvite, NULL); + tox_callback_group_message(m, on_groupmessage, NULL); + tox_callback_group_action(m, on_groupaction, NULL); + tox_callback_group_namelist_change(m, on_group_namelistchange, NULL); + tox_callback_file_send_request(m, on_file_sendrequest, NULL); + tox_callback_file_control(m, on_file_control, NULL); + tox_callback_file_data(m, on_file_data, NULL); + +#ifdef __linux__ + tox_set_name(m, (uint8_t *) "Cool dude", strlen("Cool dude")); +#elif defined(__FreeBSD__) + tox_set_name(m, (uint8_t *) "Nerd", strlen("Nerd")); +#elif defined(__APPLE__) + tox_set_name(m, (uint8_t *) "Hipster", strlen("Hipster")); /* This used to users of other Unixes are hipsters */ +#else + tox_set_name(m, (uint8_t *) "Registered Minix user #4", strlen("Registered Minix user #4")); +#endif + + return m; +} + +#define MINLINE 50 /* IP: 7 + port: 5 + key: 38 + spaces: 2 = 70. ! (& e.g. tox.im = 6) */ +#define MAXLINE 256 /* Approx max number of chars in a sever line (name + port + key) */ +#define MAXNODES 50 +#define NODELEN (MAXLINE - TOX_CLIENT_ID_SIZE - 7) + +static int linecnt = 0; +static char nodes[MAXNODES][NODELEN]; +static uint16_t ports[MAXNODES]; +static uint8_t keys[MAXNODES][TOX_CLIENT_ID_SIZE]; + +static int nodelist_load(char *filename) +{ + if (!filename) + return 1; + + FILE *fp = fopen(filename, "r"); + + if (fp == NULL) + return 1; + + char line[MAXLINE]; + + while (fgets(line, sizeof(line), fp) && linecnt < MAXNODES) { + if (strlen(line) > MINLINE) { + char *name = strtok(line, " "); + char *port = strtok(NULL, " "); + char *key_ascii = strtok(NULL, " "); + + /* invalid line */ + if (name == NULL || port == NULL || key_ascii == NULL) + continue; + + snprintf(nodes[linecnt], sizeof(nodes[linecnt]), "%s", name); + nodes[linecnt][NODELEN - 1] = 0; + ports[linecnt] = htons(atoi(port)); + + uint8_t *key_binary = hex_string_to_bin(key_ascii); + memcpy(keys[linecnt], key_binary, TOX_CLIENT_ID_SIZE); + free(key_binary); + + linecnt++; + } + } + + if (linecnt < 1) { + fclose(fp); + return 2; + } + + fclose(fp); + return 0; +} + +int init_connection_helper(Tox *m, int line) +{ + return tox_bootstrap_from_address(m, nodes[line], TOX_ENABLE_IPV6_DEFAULT, + ports[line], keys[line]); +} + +/* Connects to a random DHT node listed in the DHTnodes file + * + * return codes: + * 1: failed to open node file + * 2: no line of sufficient length in node file + * 3: failed to resolve name to IP + * 4: nodelist file contains no acceptable line + */ +static bool srvlist_loaded = false; + +#define NUM_INIT_NODES 5 + +int init_connection(Tox *m) +{ + if (linecnt > 0) /* already loaded nodelist */ + return init_connection_helper(m, rand() % linecnt) ? 0 : 3; + + /* only once: + * - load the nodelist + * - connect to "everyone" inside + */ + if (!srvlist_loaded) { + srvlist_loaded = true; + int res; + + if (!arg_opts.nodes_path[0]) + res = nodelist_load(PACKAGE_DATADIR "/DHTnodes"); + else + res = nodelist_load(arg_opts.nodes_path); + + if (linecnt < 1) + return res; + + res = 3; + int i; + int n = MIN(NUM_INIT_NODES, linecnt); + + for (i = 0; i < n; ++i) { + if (init_connection_helper(m, rand() % linecnt)) + res = 0; + } + + return res; + } + + /* empty nodelist file */ + return 4; +} + +static void do_connection(Tox *m, ToxWindow *prompt) +{ + uint8_t msg[MAX_STR_SIZE] = {0}; + + static int conn_try = 0; + static int conn_err = 0; + static bool dht_on = false; + + bool is_connected = tox_isconnected(m); + + if (!dht_on && !is_connected && !(conn_try++ % 100)) { + if (!conn_err) { + if ((conn_err = init_connection(m))) { + snprintf(msg, sizeof(msg), "\nAuto-connect failed with error code %d", conn_err); + } + } + } else if (!dht_on && is_connected) { + dht_on = true; + prompt_update_connectionstatus(prompt, dht_on); + snprintf(msg, sizeof(msg), "DHT connected."); + } else if (dht_on && !is_connected) { + dht_on = false; + prompt_update_connectionstatus(prompt, dht_on); + snprintf(msg, sizeof(msg), "\nDHT disconnected. Attempting to reconnect."); + } + + if (msg[0]) + line_info_add(prompt, NULL, NULL, NULL, msg, SYS_MSG, 0, 0); +} + +static void load_friendlist(Tox *m) +{ + uint32_t i; + uint32_t numfriends = tox_count_friendlist(m); + + for (i = 0; i < numfriends; ++i) + friendlist_onFriendAdded(NULL, m, i, false); +} + +/* + * Store Messenger to given location + * Return 0 stored successfully + * Return 1 file path is NULL + * Return 2 malloc failed + * Return 3 opening path failed + * Return 4 fwrite failed + */ +int store_data(Tox *m, char *path) +{ + if (arg_opts.ignore_data_file) + return 0; + + if (path == NULL) + return 1; + + FILE *fd; + size_t len; + uint8_t *buf; + + len = tox_size(m); + buf = malloc(len); + + if (buf == NULL) + return 2; + + tox_save(m, buf); + + fd = fopen(path, "wb"); + + if (fd == NULL) { + free(buf); + return 3; + } + + if (fwrite(buf, len, 1, fd) != 1) { + free(buf); + fclose(fd); + return 4; + } + + free(buf); + fclose(fd); + return 0; +} + +static void load_data(Tox *m, char *path) +{ + if (arg_opts.ignore_data_file) + return; + + FILE *fd; + size_t len; + uint8_t *buf; + + if ((fd = fopen(path, "rb")) != NULL) { + fseek(fd, 0, SEEK_END); + len = ftell(fd); + fseek(fd, 0, SEEK_SET); + + buf = malloc(len); + + if (buf == NULL) { + fclose(fd); + endwin(); + fprintf(stderr, "malloc() failed. Aborting...\n"); + exit(EXIT_FAILURE); + } + + if (fread(buf, len, 1, fd) != 1) { + free(buf); + fclose(fd); + endwin(); + fprintf(stderr, "fread() failed. Aborting...\n"); + exit(EXIT_FAILURE); + } + + tox_load(m, buf, len); + load_friendlist(m); + + free(buf); + fclose(fd); + } else { + int st; + + if ((st = store_data(m, path)) != 0) { + endwin(); + fprintf(stderr, "Store messenger failed with return code: %d\n", st); + exit(EXIT_FAILURE); + } + } +} + +void exit_toxic(Tox *m) +{ + store_data(m, DATA_FILE); + close_all_file_senders(); + kill_all_windows(); + log_disable(prompt->chatwin->log); + line_info_cleanup(prompt->chatwin->hst); + free(DATA_FILE); + free(prompt->stb); + free(prompt->chatwin->log); + free(prompt->chatwin->hst); + free(prompt->chatwin); + free(user_settings); +#ifdef _SUPPORT_AUDIO + terminate_audio(); +#endif /* _SUPPORT_AUDIO */ + tox_kill(m); + endwin(); + exit(EXIT_SUCCESS); +} + +static void do_toxic(Tox *m, ToxWindow *prompt) +{ + pthread_mutex_lock(&Winthread.lock); + + do_connection(m, prompt); + do_file_senders(m); + + /* main tox-core loop */ + tox_do(m); + + pthread_mutex_unlock(&Winthread.lock); +} + +void *thread_winref(void *data) +{ + Tox *m = (Tox *) data; + + while (true) { + draw_active_window(m); + refresh_inactive_windows(); + } +} + +static void print_usage(void) +{ + fprintf(stderr, "usage: toxic [OPTION] [FILE ...]\n"); + fprintf(stderr, " -f, --file Use specified data file\n"); + fprintf(stderr, " -x, --nodata Ignore data file\n"); + fprintf(stderr, " -4, --ipv4 Force IPv4 connection\n"); + fprintf(stderr, " -c, --config Use specified config file\n"); + fprintf(stderr, " -n, --nodes Use specified DHTnodes file\n"); + fprintf(stderr, " -h, --help Show this message and exit\n"); +} + +static void set_default_opts(void) +{ + arg_opts.use_ipv4 = 0; + arg_opts.ignore_data_file = 0; +} + +static void parse_args(int argc, char *argv[]) +{ + set_default_opts(); + + const char *opts_str = "4xf:c:n:h"; + int opt, indexptr; + + while (true) { + static struct option long_opts[] = { + {"file", required_argument, 0, 'f'}, + {"nodata", no_argument, 0, 'x'}, + {"ipv4", no_argument, 0, '4'}, + {"config", required_argument, 0, 'c'}, + {"nodes", required_argument, 0, 'n'}, + {"help", no_argument, 0, 'h'}, + }; + + opt = getopt_long(argc, argv, opts_str, long_opts, &indexptr); + + if (opt == -1) + break; + + switch (opt) { + case 'f': + DATA_FILE = strdup(optarg); + break; + + case 'x': + arg_opts.ignore_data_file = 1; + break; + + case '4': + arg_opts.use_ipv4 = 1; + break; + + case 'c': + snprintf(arg_opts.config_path, sizeof(arg_opts.config_path), "%s", optarg); + break; + + case 'n': + snprintf(arg_opts.nodes_path, sizeof(arg_opts.nodes_path), "%s", optarg); + break; + + case 'h': + default: + print_usage(); + exit(EXIT_FAILURE); + } + } +} + +int main(int argc, char *argv[]) +{ + char *user_config_dir = get_user_config_dir(); + int config_err = 0; + + parse_args(argc, argv); + + /* Make sure all written files are read/writeable only by the current user. */ + umask(S_IRGRP | S_IWGRP | S_IROTH | S_IWOTH); + + config_err = create_user_config_dir(user_config_dir); + + if (DATA_FILE == NULL ) { + if (config_err) { + DATA_FILE = strdup("data"); + } else { + DATA_FILE = malloc(strlen(user_config_dir) + strlen(CONFIGDIR) + strlen("data") + 1); + + if (DATA_FILE != NULL) { + strcpy(DATA_FILE, user_config_dir); + strcat(DATA_FILE, CONFIGDIR); + strcat(DATA_FILE, "data"); + } else { + endwin(); + fprintf(stderr, "malloc() failed. Aborting...\n"); + exit(EXIT_FAILURE); + } + } + } + + free(user_config_dir); + + /* init user_settings struct and load settings from conf file */ + user_settings = malloc(sizeof(struct user_settings)); + + if (user_settings == NULL) { + endwin(); + fprintf(stderr, "malloc() failed. Aborting...\n"); + exit(EXIT_FAILURE); + } + + memset(user_settings, 0, sizeof(struct user_settings)); + + char *p = arg_opts.config_path[0] ? arg_opts.config_path : NULL; + int settings_err = settings_load(user_settings, p); + + Tox *m = init_tox(arg_opts.use_ipv4); + init_term(); + + if (m == NULL) { + endwin(); + fprintf(stderr, "Failed to initialize network. Aborting...\n"); + exit(EXIT_FAILURE); + } + + if (!arg_opts.ignore_data_file) + load_data(m, DATA_FILE); + + prompt = init_windows(m); + + /* create new thread for ncurses stuff */ + if (pthread_mutex_init(&Winthread.lock, NULL) != 0) { + endwin(); + fprintf(stderr, "Mutex init failed. Aborting...\n"); + exit(EXIT_FAILURE); + } + + if (pthread_create(&Winthread.tid, NULL, thread_winref, (void *) m) != 0) { + endwin(); + fprintf(stderr, "Thread creation failed. Aborting...\n"); + exit(EXIT_FAILURE); + } + + uint8_t *msg; + +#ifdef _SUPPORT_AUDIO + + av = init_audio(prompt, m); + + device_set(prompt, input, user_settings->audio_in_dev); + device_set(prompt, output, user_settings->audio_out_dev); + + if ( errors() == NoError ) + msg = "Audio initiated with no problems."; + else /* Get error code and stuff */ + msg = "Error initiating audio!"; + + line_info_add(prompt, NULL, NULL, NULL, msg, SYS_MSG, 0, 0); + +#endif /* _SUPPORT_AUDIO */ + + if (config_err) { + msg = "Unable to determine configuration directory. Defaulting to 'data' for a keyfile..."; + line_info_add(prompt, NULL, NULL, NULL, msg, SYS_MSG, 0, 0); + } + + + if (settings_err == -1) { + msg = "Failed to load user settings"; + line_info_add(prompt, NULL, NULL, NULL, msg, SYS_MSG, 0, 0); + } + + + sort_friendlist_index(); + prompt_init_statusbar(prompt, m); + + while (true) { + update_unix_time(); + do_toxic(m, prompt); + // uint32_t st = MIN(tox_do_interval(m) * 1000, 20000); + usleep(10000); + } + + return 0; +} diff --git a/src/toxic.h b/src/toxic.h new file mode 100644 index 0000000..46d4588 --- /dev/null +++ b/src/toxic.h @@ -0,0 +1,84 @@ +/* toxic.h + * + * + * Copyright (C) 2014 Toxic All Rights Reserved. + * + * This file is part of Toxic. + * + * Toxic is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Toxic is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Toxic. If not, see . + * + */ + +#ifndef _toxic_h +#define _toxic_h + +#ifndef TOXICVER +#define TOXICVER "NOVER_" /* Use the -D flag to set this */ +#endif + +#include +#include + +#include + +#define UNKNOWN_NAME "Anonymous" + +#define MAX_FRIENDS_NUM 500 +#define MAX_STR_SIZE 256 +#define MAX_CMDNAME_SIZE 64 +#define TOXIC_MAX_NAME_LENGTH 32 /* Must be <= TOX_MAX_NAME_LENGTH */ +#define KEY_IDENT_DIGITS 2 /* number of hex digits to display for the pub-key based identifier */ +#define TIME_STR_SIZE 16 + +#define EXIT_SUCCESS 0 +#define EXIT_FAILURE 1 + +/* ASCII key codes */ +#define T_KEY_KILL 0x0B /* ctrl-k */ +#define T_KEY_DISCARD 0x15 /* ctrl-u */ +#define T_KEY_NEXT 0x10 /* ctrl-p */ +#define T_KEY_PREV 0x0F /* ctrl-o */ +#define T_KEY_C_E 0x05 /* ctrl-e */ +#define T_KEY_C_A 0x01 /* ctrl-a */ +#define T_KEY_ESC 0x1B /* ESC key */ + +enum { + MOVE_UP, + MOVE_DOWN, +} KEY_DIRS; + +/* Fixes text color problem on some terminals. + Uncomment if necessary */ +/* #define URXVT_FIX */ + +void on_request(Tox *m, uint8_t *public_key, uint8_t *data, uint16_t length, void *userdata); +void on_connectionchange(Tox *m, int32_t friendnumber, uint8_t status, void *userdata); +void on_message(Tox *m, int32_t friendnumber, uint8_t *string, uint16_t length, void *userdata); +void on_action(Tox *m, int32_t friendnumber, uint8_t *string, uint16_t length, void *userdata); +void on_nickchange(Tox *m, int32_t friendnumber, uint8_t *string, uint16_t length, void *userdata); +void on_statuschange(Tox *m, int32_t friendnumber, uint8_t status, void *userdata); +void on_statusmessagechange(Tox *m, int32_t friendnumber, uint8_t *string, uint16_t length, void *userdata); +void on_friendadded(Tox *m, int32_t friendnumber, bool sort); +void on_groupmessage(Tox *m, int groupnumber, int peernumber, uint8_t *message, uint16_t length, void *userdata); +void on_groupaction(Tox *m, int groupnumber, int peernumber, uint8_t *action, uint16_t length, void *userdata); +void on_groupinvite(Tox *m, int32_t friendnumber, uint8_t *group_pub_key, void *userdata); +void on_group_namelistchange(Tox *m, int groupnumber, int peernumber, uint8_t change, void *userdata); +void on_file_sendrequest(Tox *m, int32_t friendnumber, uint8_t filenumber, uint64_t filesize, uint8_t *pathname, + uint16_t pathname_length, void *userdata); +void on_file_control(Tox *m, int32_t friendnumber, uint8_t receive_send, uint8_t filenumber, uint8_t control_type, + uint8_t *data, uint16_t length, void *userdata); +void on_file_data(Tox *m, int32_t friendnumber, uint8_t filenumber, uint8_t *data, uint16_t length, void *userdata); +void on_typing_change(Tox *m, int32_t friendnumber, uint8_t is_typing, void *userdata); + +#endif /* #define _toxic_h */ diff --git a/src/toxic_strings.c b/src/toxic_strings.c index 4f7f9ae..388f9b7 100644 --- a/src/toxic_strings.c +++ b/src/toxic_strings.c @@ -27,7 +27,8 @@ #include #include -#include "toxic_windows.h" +#include "toxic.h" +#include "windows.h" #include "misc_tools.h" #include "toxic_strings.h" diff --git a/src/toxic_strings.h b/src/toxic_strings.h index 772c318..b792532 100644 --- a/src/toxic_strings.h +++ b/src/toxic_strings.h @@ -20,6 +20,11 @@ * */ +#ifndef _toxic_strings_h +#define _toxic_strings_h + +#include "windows.h" + /* Adds char to line at pos */ void add_char_to_buf(ChatContext *ctx, wint_t ch); @@ -59,3 +64,5 @@ void add_line_to_hist(ChatContext *ctx); resets line if at end of history */ void fetch_hist_item(ChatContext *ctx, int key_dir); + +#endif /* #define _toxic_strings_h */ diff --git a/src/windows.c b/src/windows.c index ce2cd06..e1f93f4 100644 --- a/src/windows.c +++ b/src/windows.c @@ -30,7 +30,8 @@ #include "friendlist.h" #include "prompt.h" -#include "toxic_windows.h" +#include "toxic.h" +#include "windows.h" #include "groupchat.h" extern char *DATA_FILE; diff --git a/src/windows.h b/src/windows.h new file mode 100644 index 0000000..99aa74f --- /dev/null +++ b/src/windows.h @@ -0,0 +1,180 @@ +/* windows.h + * + * + * Copyright (C) 2014 Toxic All Rights Reserved. + * + * This file is part of Toxic. + * + * Toxic is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Toxic is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Toxic. If not, see . + * + */ + +#ifndef _windows_h +#define _windows_h + +#include +#include +#include + +#include + +#ifdef _SUPPORT_AUDIO +#include +#endif /* _SUPPORT_AUDIO */ + +#include "toxic.h" + +#define MAX_WINDOWS_NUM 32 +#define CURS_Y_OFFSET 3 /* y-axis cursor offset for chat contexts */ +#define CHATBOX_HEIGHT 4 + +/* Curses foreground colours (background is black) */ +enum { + WHITE, + GREEN, + CYAN, + RED, + BLUE, + YELLOW, + MAGENTA, + BLACK, +} C_COLOURS; + +/* tab alert types: lower types take priority */ +enum { + WINDOW_ALERT_0, + WINDOW_ALERT_1, + WINDOW_ALERT_2, +} WINDOW_ALERTS; + +/* Fixes text color problem on some terminals. + Uncomment if necessary */ +/* #define URXVT_FIX */ + +struct _Winthread { + pthread_t tid; + pthread_mutex_t lock; +}; + +typedef struct ToxWindow ToxWindow; +typedef struct StatusBar StatusBar; +typedef struct PromptBuf PromptBuf; +typedef struct ChatContext ChatContext; + +struct ToxWindow { + void(*onKey)(ToxWindow *, Tox *, wint_t, bool); + void(*onDraw)(ToxWindow *, Tox *); + void(*onInit)(ToxWindow *, Tox *); + void(*onFriendRequest)(ToxWindow *, Tox *, uint8_t *, uint8_t *, uint16_t); + void(*onFriendAdded)(ToxWindow *, Tox *, int32_t, bool); + void(*onConnectionChange)(ToxWindow *, Tox *, int32_t, uint8_t); + void(*onMessage)(ToxWindow *, Tox *, int32_t, uint8_t *, uint16_t); + void(*onNickChange)(ToxWindow *, Tox *, int32_t, uint8_t *, uint16_t); + void(*onStatusChange)(ToxWindow *, Tox *, int32_t, uint8_t); + void(*onStatusMessageChange)(ToxWindow *, int32_t, uint8_t *, uint16_t); + void(*onAction)(ToxWindow *, Tox *, int32_t, uint8_t *, uint16_t); + void(*onGroupMessage)(ToxWindow *, Tox *, int, int, uint8_t *, uint16_t); + void(*onGroupAction)(ToxWindow *, Tox *, int, int, uint8_t *, uint16_t); + void(*onGroupInvite)(ToxWindow *, Tox *, int32_t, uint8_t *); + void(*onGroupNamelistChange)(ToxWindow *, Tox *, int, int, uint8_t); + void(*onFileSendRequest)(ToxWindow *, Tox *, int32_t, uint8_t, uint64_t, uint8_t *, uint16_t); + void(*onFileControl)(ToxWindow *, Tox *, int32_t, uint8_t, uint8_t, uint8_t, uint8_t *, uint16_t); + void(*onFileData)(ToxWindow *, Tox *, int32_t, uint8_t, uint8_t *, uint16_t); + void(*onTypingChange)(ToxWindow *, Tox *, int32_t, uint8_t); + +#ifdef _SUPPORT_AUDIO + + void(*onInvite)(ToxWindow *, ToxAv *, int); + void(*onRinging)(ToxWindow *, ToxAv *, int); + void(*onStarting)(ToxWindow *, ToxAv *, int); + void(*onEnding)(ToxWindow *, ToxAv *, int); + void(*onError)(ToxWindow *, ToxAv *, int); + void(*onStart)(ToxWindow *, ToxAv *, int); + void(*onCancel)(ToxWindow *, ToxAv *, int); + void(*onReject)(ToxWindow *, ToxAv *, int); + void(*onEnd)(ToxWindow *, ToxAv *, int); + void(*onRequestTimeout)(ToxWindow *, ToxAv *, int); + void(*onPeerTimeout)(ToxWindow *, ToxAv *, int); + + int call_index; /* If in a call will have this index set, otherwise it's -1. + * Don't modify outside av callbacks. */ +#endif /* _SUPPORT_AUDIO */ + + char name[TOX_MAX_NAME_LENGTH]; + int32_t num; /* corresponds to friendnumber in chat windows */ + bool active; + int x; + + /* window type identifiers */ + bool is_chat; + bool is_groupchat; + bool is_prompt; + + bool alert0; + bool alert1; + bool alert2; + + ChatContext *chatwin; + StatusBar *stb; + + WINDOW *popup; + WINDOW *window; +}; + +/* statusbar info holder */ +struct StatusBar { + WINDOW *topline; + uint8_t statusmsg[TOX_MAX_STATUSMESSAGE_LENGTH]; + uint16_t statusmsg_len; + uint8_t nick[TOX_MAX_NAME_LENGTH]; + uint16_t nick_len; + uint8_t status; + bool is_online; +}; + +#define MAX_LINE_HIST 128 + +/* chat and groupchat window/buffer holder */ +struct ChatContext { + wchar_t line[MAX_STR_SIZE]; + size_t pos; + size_t len; + + wchar_t ln_history[MAX_LINE_HIST][MAX_STR_SIZE]; /* history for input lines/commands */ + int hst_pos; + int hst_tot; + + struct history *hst; + struct chatlog *log; + + uint8_t self_is_typing; + + WINDOW *history; + WINDOW *linewin; + WINDOW *sidebar; + + /* specific for prompt */ + bool at_bottom; /* true if line end is at bottom of window */ + int orig_y; /* y axis point of line origin */ +}; + +ToxWindow *init_windows(Tox *m); +void draw_active_window(Tox *m); +int add_window(Tox *m, ToxWindow w); +void del_window(ToxWindow *w); +void set_active_window(int ch); +int get_num_active_windows(void); +void kill_all_windows(void); /* should only be called on shutdown */ + +#endif /* #define _windows_h */ From 31a2e648c5c44fdeb7d81b91367a3a9a02893ad2 Mon Sep 17 00:00:00 2001 From: Jfreegman Date: Wed, 11 Jun 2014 18:47:18 -0400 Subject: [PATCH 30/63] code cleanup --- src/main.c | 651 -------------------------------------------- src/misc_tools.c | 7 +- src/settings.c | 2 +- src/toxic.c | 35 +-- src/toxic_windows.h | 260 ------------------ src/windows.c | 33 ++- 6 files changed, 37 insertions(+), 951 deletions(-) delete mode 100644 src/main.c delete mode 100644 src/toxic_windows.h diff --git a/src/main.c b/src/main.c deleted file mode 100644 index f979c4f..0000000 --- a/src/main.c +++ /dev/null @@ -1,651 +0,0 @@ -/* main.c - * - * - * Copyright (C) 2014 Toxic All Rights Reserved. - * - * This file is part of Toxic. - * - * Toxic is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * Toxic is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Toxic. If not, see . - * - */ - -#ifdef HAVE_CONFIG_H -#include "config.h" -#endif - -#ifndef SIGWINCH -#define SIGWINCH 28 -#endif - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include - -#include "configdir.h" -#include "toxic_windows.h" -#include "friendlist.h" -#include "prompt.h" -#include "misc_tools.h" -#include "file_senders.h" -#include "line_info.h" -#include "settings.h" - -#ifdef _SUPPORT_AUDIO -#include "audio_call.h" -#endif /* _SUPPORT_AUDIO */ - -#ifndef PACKAGE_DATADIR -#define PACKAGE_DATADIR "." -#endif - -#ifdef _SUPPORT_AUDIO -ToxAv *av; -#endif /* _SUPPORT_AUDIO */ - -/* Export for use in Callbacks */ -char *DATA_FILE = NULL; -ToxWindow *prompt = NULL; - -struct arg_opts { - int ignore_data_file; - int use_ipv4; - char config_path[MAX_STR_SIZE]; - char nodes_path[MAX_STR_SIZE]; -} arg_opts; - -struct _Winthread Winthread; -struct user_settings *user_settings = NULL; - -void on_window_resize(int sig) -{ - refresh(); - clear(); -} - -static void init_term(void) -{ - /* Setup terminal */ - signal(SIGWINCH, on_window_resize); -#if HAVE_WIDECHAR - - if (setlocale(LC_ALL, "") == NULL) { - fprintf(stderr, "Could not set your locale, plese check your locale settings or" - "disable wide char support\n"); - exit(EXIT_FAILURE); - } - -#endif - initscr(); - cbreak(); - keypad(stdscr, 1); - noecho(); - timeout(100); - - if (has_colors()) { - short bg_color = COLOR_BLACK; - start_color(); - - if (user_settings->colour_theme == NATIVE_COLS) { - if (assume_default_colors(-1, -1) == OK) - bg_color = -1; - } - - init_pair(0, COLOR_WHITE, COLOR_BLACK); - init_pair(1, COLOR_GREEN, bg_color); - init_pair(2, COLOR_CYAN, bg_color); - init_pair(3, COLOR_RED, bg_color); - init_pair(4, COLOR_BLUE, bg_color); - init_pair(5, COLOR_YELLOW, bg_color); - init_pair(6, COLOR_MAGENTA, bg_color); - init_pair(7, COLOR_BLACK, COLOR_BLACK); - init_pair(8, COLOR_BLACK, COLOR_WHITE); - } - - refresh(); -} - -static Tox *init_tox(int ipv4) -{ - /* Init core */ - int ipv6 = !ipv4; - Tox *m = tox_new(ipv6); - - /* - * TOX_ENABLE_IPV6_DEFAULT is always 1. - * Checking it is redundant, this *should* be doing ipv4 fallback - */ - if (ipv6 && m == NULL) { - fprintf(stderr, "IPv6 didn't initialize, trying IPv4\n"); - m = tox_new(0); - } - - if (ipv4) - fprintf(stderr, "Forcing IPv4 connection\n"); - - if (m == NULL) - return NULL; - - /* Callbacks */ - tox_callback_connection_status(m, on_connectionchange, NULL); - tox_callback_typing_change(m, on_typing_change, NULL); - tox_callback_friend_request(m, on_request, NULL); - tox_callback_friend_message(m, on_message, NULL); - tox_callback_name_change(m, on_nickchange, NULL); - tox_callback_user_status(m, on_statuschange, NULL); - tox_callback_status_message(m, on_statusmessagechange, NULL); - tox_callback_friend_action(m, on_action, NULL); - tox_callback_group_invite(m, on_groupinvite, NULL); - tox_callback_group_message(m, on_groupmessage, NULL); - tox_callback_group_action(m, on_groupaction, NULL); - tox_callback_group_namelist_change(m, on_group_namelistchange, NULL); - tox_callback_file_send_request(m, on_file_sendrequest, NULL); - tox_callback_file_control(m, on_file_control, NULL); - tox_callback_file_data(m, on_file_data, NULL); - -#ifdef __linux__ - tox_set_name(m, (uint8_t *) "Cool dude", strlen("Cool dude")); -#elif defined(__FreeBSD__) - tox_set_name(m, (uint8_t *) "Nerd", strlen("Nerd")); -#elif defined(__APPLE__) - tox_set_name(m, (uint8_t *) "Hipster", strlen("Hipster")); /* This used to users of other Unixes are hipsters */ -#else - tox_set_name(m, (uint8_t *) "Registered Minix user #4", strlen("Registered Minix user #4")); -#endif - - return m; -} - -#define MINLINE 50 /* IP: 7 + port: 5 + key: 38 + spaces: 2 = 70. ! (& e.g. tox.im = 6) */ -#define MAXLINE 256 /* Approx max number of chars in a sever line (name + port + key) */ -#define MAXNODES 50 -#define NODELEN (MAXLINE - TOX_CLIENT_ID_SIZE - 7) - -static int linecnt = 0; -static char nodes[MAXNODES][NODELEN]; -static uint16_t ports[MAXNODES]; -static uint8_t keys[MAXNODES][TOX_CLIENT_ID_SIZE]; - -static int nodelist_load(char *filename) -{ - if (!filename) - return 1; - - FILE *fp = fopen(filename, "r"); - - if (fp == NULL) - return 1; - - char line[MAXLINE]; - - while (fgets(line, sizeof(line), fp) && linecnt < MAXNODES) { - if (strlen(line) > MINLINE) { - char *name = strtok(line, " "); - char *port = strtok(NULL, " "); - char *key_ascii = strtok(NULL, " "); - - /* invalid line */ - if (name == NULL || port == NULL || key_ascii == NULL) - continue; - - snprintf(nodes[linecnt], sizeof(nodes[linecnt]), "%s", name); - nodes[linecnt][NODELEN - 1] = 0; - ports[linecnt] = htons(atoi(port)); - - uint8_t *key_binary = hex_string_to_bin(key_ascii); - memcpy(keys[linecnt], key_binary, TOX_CLIENT_ID_SIZE); - free(key_binary); - - linecnt++; - } - } - - if (linecnt < 1) { - fclose(fp); - return 2; - } - - fclose(fp); - return 0; -} - -int init_connection_helper(Tox *m, int line) -{ - return tox_bootstrap_from_address(m, nodes[line], TOX_ENABLE_IPV6_DEFAULT, - ports[line], keys[line]); -} - -/* Connects to a random DHT node listed in the DHTnodes file - * - * return codes: - * 1: failed to open node file - * 2: no line of sufficient length in node file - * 3: failed to resolve name to IP - * 4: nodelist file contains no acceptable line - */ -static bool srvlist_loaded = false; - -#define NUM_INIT_NODES 5 - -int init_connection(Tox *m) -{ - if (linecnt > 0) /* already loaded nodelist */ - return init_connection_helper(m, rand() % linecnt) ? 0 : 3; - - /* only once: - * - load the nodelist - * - connect to "everyone" inside - */ - if (!srvlist_loaded) { - srvlist_loaded = true; - int res; - - if (!arg_opts.nodes_path[0]) - res = nodelist_load(PACKAGE_DATADIR "/DHTnodes"); - else - res = nodelist_load(arg_opts.nodes_path); - - if (linecnt < 1) - return res; - - res = 3; - int i; - int n = MIN(NUM_INIT_NODES, linecnt); - - for (i = 0; i < n; ++i) { - if (init_connection_helper(m, rand() % linecnt)) - res = 0; - } - - return res; - } - - /* empty nodelist file */ - return 4; -} - -static void do_connection(Tox *m, ToxWindow *prompt) -{ - uint8_t msg[MAX_STR_SIZE] = {0}; - - static int conn_try = 0; - static int conn_err = 0; - static bool dht_on = false; - - bool is_connected = tox_isconnected(m); - - if (!dht_on && !is_connected && !(conn_try++ % 100)) { - if (!conn_err) { - if ((conn_err = init_connection(m))) { - snprintf(msg, sizeof(msg), "\nAuto-connect failed with error code %d", conn_err); - } - } - } else if (!dht_on && is_connected) { - dht_on = true; - prompt_update_connectionstatus(prompt, dht_on); - snprintf(msg, sizeof(msg), "DHT connected."); - } else if (dht_on && !is_connected) { - dht_on = false; - prompt_update_connectionstatus(prompt, dht_on); - snprintf(msg, sizeof(msg), "\nDHT disconnected. Attempting to reconnect."); - } - - if (msg[0]) - line_info_add(prompt, NULL, NULL, NULL, msg, SYS_MSG, 0, 0); -} - -static void load_friendlist(Tox *m) -{ - uint32_t i; - uint32_t numfriends = tox_count_friendlist(m); - - for (i = 0; i < numfriends; ++i) - friendlist_onFriendAdded(NULL, m, i, false); -} - -/* - * Store Messenger to given location - * Return 0 stored successfully - * Return 1 file path is NULL - * Return 2 malloc failed - * Return 3 opening path failed - * Return 4 fwrite failed - */ -int store_data(Tox *m, char *path) -{ - if (arg_opts.ignore_data_file) - return 0; - - if (path == NULL) - return 1; - - FILE *fd; - size_t len; - uint8_t *buf; - - len = tox_size(m); - buf = malloc(len); - - if (buf == NULL) - return 2; - - tox_save(m, buf); - - fd = fopen(path, "wb"); - - if (fd == NULL) { - free(buf); - return 3; - } - - if (fwrite(buf, len, 1, fd) != 1) { - free(buf); - fclose(fd); - return 4; - } - - free(buf); - fclose(fd); - return 0; -} - -static void load_data(Tox *m, char *path) -{ - if (arg_opts.ignore_data_file) - return; - - FILE *fd; - size_t len; - uint8_t *buf; - - if ((fd = fopen(path, "rb")) != NULL) { - fseek(fd, 0, SEEK_END); - len = ftell(fd); - fseek(fd, 0, SEEK_SET); - - buf = malloc(len); - - if (buf == NULL) { - fclose(fd); - endwin(); - fprintf(stderr, "malloc() failed. Aborting...\n"); - exit(EXIT_FAILURE); - } - - if (fread(buf, len, 1, fd) != 1) { - free(buf); - fclose(fd); - endwin(); - fprintf(stderr, "fread() failed. Aborting...\n"); - exit(EXIT_FAILURE); - } - - tox_load(m, buf, len); - load_friendlist(m); - - free(buf); - fclose(fd); - } else { - int st; - - if ((st = store_data(m, path)) != 0) { - endwin(); - fprintf(stderr, "Store messenger failed with return code: %d\n", st); - exit(EXIT_FAILURE); - } - } -} - -void exit_toxic(Tox *m) -{ - store_data(m, DATA_FILE); - close_all_file_senders(); - kill_all_windows(); - log_disable(prompt->chatwin->log); - line_info_cleanup(prompt->chatwin->hst); - free(DATA_FILE); - free(prompt->stb); - free(prompt->chatwin->log); - free(prompt->chatwin->hst); - free(prompt->chatwin); - free(user_settings); -#ifdef _SUPPORT_AUDIO - terminate_audio(); -#endif /* _SUPPORT_AUDIO */ - tox_kill(m); - endwin(); - exit(EXIT_SUCCESS); -} - -static void do_toxic(Tox *m, ToxWindow *prompt) -{ - pthread_mutex_lock(&Winthread.lock); - - do_connection(m, prompt); - do_file_senders(m); - - /* main tox-core loop */ - tox_do(m); - - pthread_mutex_unlock(&Winthread.lock); -} - -void *thread_winref(void *data) -{ - Tox *m = (Tox *) data; - - while (true) { - draw_active_window(m); - refresh_inactive_windows(); - } -} - -static void print_usage(void) -{ - fprintf(stderr, "usage: toxic [OPTION] [FILE ...]\n"); - fprintf(stderr, " -f, --file Use specified data file\n"); - fprintf(stderr, " -x, --nodata Ignore data file\n"); - fprintf(stderr, " -4, --ipv4 Force IPv4 connection\n"); - fprintf(stderr, " -c, --config Use specified config file\n"); - fprintf(stderr, " -n, --nodes Use specified DHTnodes file\n"); - fprintf(stderr, " -h, --help Show this message and exit\n"); -} - -static void set_default_opts(void) -{ - arg_opts.use_ipv4 = 0; - arg_opts.ignore_data_file = 0; -} - -static void parse_args(int argc, char *argv[]) -{ - set_default_opts(); - - const char *opts_str = "4xf:c:n:h"; - int opt, indexptr; - - while (true) { - static struct option long_opts[] = { - {"file", required_argument, 0, 'f'}, - {"nodata", no_argument, 0, 'x'}, - {"ipv4", no_argument, 0, '4'}, - {"config", required_argument, 0, 'c'}, - {"nodes", required_argument, 0, 'n'}, - {"help", no_argument, 0, 'h'}, - }; - - opt = getopt_long(argc, argv, opts_str, long_opts, &indexptr); - - if (opt == -1) - break; - - switch (opt) { - case 'f': - DATA_FILE = strdup(optarg); - break; - - case 'x': - arg_opts.ignore_data_file = 1; - break; - - case '4': - arg_opts.use_ipv4 = 1; - break; - - case 'c': - snprintf(arg_opts.config_path, sizeof(arg_opts.config_path), "%s", optarg); - break; - - case 'n': - snprintf(arg_opts.nodes_path, sizeof(arg_opts.nodes_path), "%s", optarg); - break; - - case 'h': - default: - print_usage(); - exit(EXIT_FAILURE); - } - } -} - -int main(int argc, char *argv[]) -{ - char *user_config_dir = get_user_config_dir(); - int config_err = 0; - - parse_args(argc, argv); - - /* Make sure all written files are read/writeable only by the current user. */ - umask(S_IRGRP | S_IWGRP | S_IROTH | S_IWOTH); - - config_err = create_user_config_dir(user_config_dir); - - if (DATA_FILE == NULL ) { - if (config_err) { - DATA_FILE = strdup("data"); - } else { - DATA_FILE = malloc(strlen(user_config_dir) + strlen(CONFIGDIR) + strlen("data") + 1); - - if (DATA_FILE != NULL) { - strcpy(DATA_FILE, user_config_dir); - strcat(DATA_FILE, CONFIGDIR); - strcat(DATA_FILE, "data"); - } else { - endwin(); - fprintf(stderr, "malloc() failed. Aborting...\n"); - exit(EXIT_FAILURE); - } - } - } - - free(user_config_dir); - - /* init user_settings struct and load settings from conf file */ - user_settings = malloc(sizeof(struct user_settings)); - - if (user_settings == NULL) { - endwin(); - fprintf(stderr, "malloc() failed. Aborting...\n"); - exit(EXIT_FAILURE); - } - - memset(user_settings, 0, sizeof(struct user_settings)); - - char *p = arg_opts.config_path[0] ? arg_opts.config_path : NULL; - int settings_err = settings_load(user_settings, p); - - Tox *m = init_tox(arg_opts.use_ipv4); - init_term(); - - if (m == NULL) { - endwin(); - fprintf(stderr, "Failed to initialize network. Aborting...\n"); - exit(EXIT_FAILURE); - } - - if (!arg_opts.ignore_data_file) - load_data(m, DATA_FILE); - - prompt = init_windows(m); - - /* create new thread for ncurses stuff */ - if (pthread_mutex_init(&Winthread.lock, NULL) != 0) { - endwin(); - fprintf(stderr, "Mutex init failed. Aborting...\n"); - exit(EXIT_FAILURE); - } - - if (pthread_create(&Winthread.tid, NULL, thread_winref, (void *) m) != 0) { - endwin(); - fprintf(stderr, "Thread creation failed. Aborting...\n"); - exit(EXIT_FAILURE); - } - - uint8_t *msg; - -#ifdef _SUPPORT_AUDIO - - av = init_audio(prompt, m); - - device_set(prompt, input, user_settings->audio_in_dev); - device_set(prompt, output, user_settings->audio_out_dev); - - if ( errors() == NoError ) - msg = "Audio initiated with no problems."; - else /* Get error code and stuff */ - msg = "Error initiating audio!"; - - line_info_add(prompt, NULL, NULL, NULL, msg, SYS_MSG, 0, 0); - -#endif /* _SUPPORT_AUDIO */ - - if (config_err) { - msg = "Unable to determine configuration directory. Defaulting to 'data' for a keyfile..."; - line_info_add(prompt, NULL, NULL, NULL, msg, SYS_MSG, 0, 0); - } - - - if (settings_err == -1) { - msg = "Failed to load user settings"; - line_info_add(prompt, NULL, NULL, NULL, msg, SYS_MSG, 0, 0); - } - - - sort_friendlist_index(); - prompt_init_statusbar(prompt, m); - - while (true) { - update_unix_time(); - do_toxic(m, prompt); - // uint32_t st = MIN(tox_do_interval(m) * 1000, 20000); - usleep(10000); - } - - return 0; -} diff --git a/src/misc_tools.c b/src/misc_tools.c index b28d814..80220f5 100644 --- a/src/misc_tools.c +++ b/src/misc_tools.c @@ -243,9 +243,10 @@ void get_file_name(uint8_t *namebuf, uint8_t *pathname) uint8_t *filename = strrchr(pathname, '/'); - if (filename == NULL) { - filename = pathname; - } else if (!strlen(++filename)) { + if (filename != NULL) { + if (!strlen(++filename)) + filename = pathname; + } else { filename = pathname; } diff --git a/src/settings.c b/src/settings.c index 9e10d42..723f40f 100644 --- a/src/settings.c +++ b/src/settings.c @@ -146,7 +146,7 @@ static void uset_dwnld_path(struct user_settings *s, const char *val) strcpy(s->download_path, val); - if (val[len] != '/') + if (val[len - 1] != '/') strcat(s->download_path, "/"); } diff --git a/src/toxic.c b/src/toxic.c index 2a54a69..9d9682c 100644 --- a/src/toxic.c +++ b/src/toxic.c @@ -1,4 +1,4 @@ -/* toxic.c +/* main.c * * * Copyright (C) 2014 Toxic All Rights Reserved. @@ -92,8 +92,8 @@ void on_window_resize(int sig) static void init_term(void) { - /* Setup terminal */ signal(SIGWINCH, on_window_resize); + #if HAVE_WIDECHAR if (setlocale(LC_ALL, "") == NULL) { @@ -103,6 +103,7 @@ static void init_term(void) } #endif + initscr(); cbreak(); keypad(stdscr, 1); @@ -450,9 +451,7 @@ static void do_toxic(Tox *m, ToxWindow *prompt) do_connection(m, prompt); do_file_senders(m); - - /* main tox-core loop */ - tox_do(m); + tox_do(m); /* main tox-core loop */ pthread_mutex_unlock(&Winthread.lock); } @@ -488,24 +487,19 @@ static void parse_args(int argc, char *argv[]) { set_default_opts(); + static struct option long_opts[] = { + {"file", required_argument, 0, 'f'}, + {"nodata", no_argument, 0, 'x'}, + {"ipv4", no_argument, 0, '4'}, + {"config", required_argument, 0, 'c'}, + {"nodes", required_argument, 0, 'n'}, + {"help", no_argument, 0, 'h'}, + }; + const char *opts_str = "4xf:c:n:h"; int opt, indexptr; - while (true) { - static struct option long_opts[] = { - {"file", required_argument, 0, 'f'}, - {"nodata", no_argument, 0, 'x'}, - {"ipv4", no_argument, 0, '4'}, - {"config", required_argument, 0, 'c'}, - {"nodes", required_argument, 0, 'n'}, - {"help", no_argument, 0, 'h'}, - }; - - opt = getopt_long(argc, argv, opts_str, long_opts, &indexptr); - - if (opt == -1) - break; - + while ((opt = getopt_long(argc, argv, opts_str, long_opts, &indexptr)) != -1) { switch (opt) { case 'f': DATA_FILE = strdup(optarg); @@ -644,7 +638,6 @@ int main(int argc, char *argv[]) while (true) { update_unix_time(); do_toxic(m, prompt); - // uint32_t st = MIN(tox_do_interval(m) * 1000, 20000); usleep(10000); } diff --git a/src/toxic_windows.h b/src/toxic_windows.h deleted file mode 100644 index 30d0f18..0000000 --- a/src/toxic_windows.h +++ /dev/null @@ -1,260 +0,0 @@ -/* toxic_windows.h - * - * - * Copyright (C) 2014 Toxic All Rights Reserved. - * - * This file is part of Toxic. - * - * Toxic is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * Toxic is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Toxic. If not, see . - * - */ - -#ifndef _windows_h -#define _windows_h - -#ifndef TOXICVER -#define TOXICVER "NOVER_" /* Use the -D flag to set this */ -#endif - -#include -#include -#include -#include - -#include - -#ifdef _SUPPORT_AUDIO -#include -#endif /* _SUPPORT_AUDIO */ - -#define UNKNOWN_NAME "Anonymous" - -#define MAX_WINDOWS_NUM 32 -#define MAX_FRIENDS_NUM 100 -#define MAX_STR_SIZE 256 -#define MAX_CMDNAME_SIZE 64 -#define KEY_SIZE_BYTES 32 -#define TOXIC_MAX_NAME_LENGTH 32 /* Must be <= TOX_MAX_NAME_LENGTH */ -#define N_DEFAULT_WINS 2 /* number of permanent default windows */ -#define CURS_Y_OFFSET 3 /* y-axis cursor offset for chat contexts */ -#define CHATBOX_HEIGHT 4 -#define KEY_IDENT_DIGITS 2 /* number of hex digits to display for the pub-key based identifier */ -#define TIME_STR_SIZE 16 - -#define EXIT_SUCCESS 0 -#define EXIT_FAILURE 1 - -/* ASCII key codes */ -#define T_KEY_KILL 0xB /* ctrl-k */ -#define T_KEY_DISCARD 0x15 /* ctrl-u */ -#define T_KEY_NEXT 0x10 /* ctrl-p */ -#define T_KEY_PREV 0x0F /* ctrl-o */ -#define T_KEY_C_E 0x05 /* ctrl-e */ -#define T_KEY_C_A 0x01 /* ctrl-a */ -#define T_KEY_ESC 0x1B /* ESC key */ - -/* Curses foreground colours (background is black) */ -enum { - WHITE, - GREEN, - CYAN, - RED, - BLUE, - YELLOW, - MAGENTA, - BLACK, -}; - -/* tab alert types: lower types take priority */ -enum { - WINDOW_ALERT_0, - WINDOW_ALERT_1, - WINDOW_ALERT_2, -}; - -enum { - MOVE_UP, - MOVE_DOWN, -}; - -/* Fixes text color problem on some terminals. - Uncomment if necessary */ -/* #define URXVT_FIX */ - -typedef struct ToxWindow ToxWindow; -typedef struct StatusBar StatusBar; -typedef struct PromptBuf PromptBuf; -typedef struct ChatContext ChatContext; - -struct ToxWindow { - void(*onKey)(ToxWindow *, Tox *, wint_t, bool); - void(*onDraw)(ToxWindow *, Tox *); - void(*onInit)(ToxWindow *, Tox *); - void(*onFriendRequest)(ToxWindow *, Tox *, uint8_t *, uint8_t *, uint16_t); - void(*onFriendAdded)(ToxWindow *, Tox *, int32_t, bool); - void(*onConnectionChange)(ToxWindow *, Tox *, int32_t, uint8_t); - void(*onMessage)(ToxWindow *, Tox *, int32_t, uint8_t *, uint16_t); - void(*onNickChange)(ToxWindow *, Tox *, int32_t, uint8_t *, uint16_t); - void(*onStatusChange)(ToxWindow *, Tox *, int32_t, uint8_t); - void(*onStatusMessageChange)(ToxWindow *, int32_t, uint8_t *, uint16_t); - void(*onAction)(ToxWindow *, Tox *, int32_t, uint8_t *, uint16_t); - void(*onGroupMessage)(ToxWindow *, Tox *, int, int, uint8_t *, uint16_t); - void(*onGroupAction)(ToxWindow *, Tox *, int, int, uint8_t *, uint16_t); - void(*onGroupInvite)(ToxWindow *, Tox *, int32_t, uint8_t *); - void(*onGroupNamelistChange)(ToxWindow *, Tox *, int, int, uint8_t); - void(*onFileSendRequest)(ToxWindow *, Tox *, int32_t, uint8_t, uint64_t, uint8_t *, uint16_t); - void(*onFileControl)(ToxWindow *, Tox *, int32_t, uint8_t, uint8_t, uint8_t, uint8_t *, uint16_t); - void(*onFileData)(ToxWindow *, Tox *, int32_t, uint8_t, uint8_t *, uint16_t); - void(*onTypingChange)(ToxWindow *, Tox *, int32_t, uint8_t); - -#ifdef _SUPPORT_AUDIO - - void(*onInvite)(ToxWindow *, ToxAv *, int); - void(*onRinging)(ToxWindow *, ToxAv *, int); - void(*onStarting)(ToxWindow *, ToxAv *, int); - void(*onEnding)(ToxWindow *, ToxAv *, int); - void(*onError)(ToxWindow *, ToxAv *, int); - void(*onStart)(ToxWindow *, ToxAv *, int); - void(*onCancel)(ToxWindow *, ToxAv *, int); - void(*onReject)(ToxWindow *, ToxAv *, int); - void(*onEnd)(ToxWindow *, ToxAv *, int); - void(*onRequestTimeout)(ToxWindow *, ToxAv *, int); - void(*onPeerTimeout)(ToxWindow *, ToxAv *, int); - - int call_index; /* If in a call will have this index set, otherwise it's -1. - * Don't modify outside av callbacks. */ -#endif /* _SUPPORT_AUDIO */ - - char name[TOX_MAX_NAME_LENGTH]; - int32_t num; /* corresponds to friendnumber in chat windows */ - bool active; - int x; - - /* window type identifiers */ - bool is_chat; - bool is_groupchat; - bool is_prompt; - - bool alert0; - bool alert1; - bool alert2; - - ChatContext *chatwin; - StatusBar *stb; - - WINDOW *popup; - WINDOW *window; -}; - -/* statusbar info holder */ -struct StatusBar { - WINDOW *topline; - uint8_t statusmsg[TOX_MAX_STATUSMESSAGE_LENGTH]; - uint16_t statusmsg_len; - uint8_t nick[TOX_MAX_NAME_LENGTH]; - uint16_t nick_len; - uint8_t status; - bool is_online; -}; - -#define MAX_LINE_HIST 128 - -/* chat and groupchat window/buffer holder */ -struct ChatContext { - wchar_t line[MAX_STR_SIZE]; - size_t pos; - size_t len; - - wchar_t ln_history[MAX_LINE_HIST][MAX_STR_SIZE]; /* history for input lines/commands */ - int hst_pos; - int hst_tot; - - struct history *hst; - struct chatlog *log; - - uint8_t self_is_typing; - - WINDOW *history; - WINDOW *linewin; - WINDOW *sidebar; - - /* specific for prompt */ - bool at_bottom; /* true if line end is at bottom of window */ - int orig_y; /* y axis point of line origin */ -}; - -/* Start file transfer code */ - -#define FILE_PIECE_SIZE 2048 /* must be >= (MAX_CRYPTO_DATA_SIZE - 2) in toxcore/net_crypto.h */ -#define MAX_FILES 256 -#define TIMEOUT_FILESENDER 300 - -typedef struct { - FILE *file; - ToxWindow *toxwin; - int32_t friendnum; - bool active; - int filenum; - uint8_t nextpiece[FILE_PIECE_SIZE]; - uint16_t piecelen; - uint8_t pathname[MAX_STR_SIZE]; - uint64_t timestamp; - uint64_t size; - uint32_t line_id; -} FileSender; - -struct FileReceiver { - uint8_t filenames[MAX_FILES][MAX_STR_SIZE]; - FILE *files[MAX_FILES]; - bool pending[MAX_FILES]; - uint64_t size[MAX_FILES]; - uint32_t line_id[MAX_FILES]; -}; - -/* End file transfer code */ - -struct _Winthread { - pthread_t tid; - pthread_mutex_t lock; -}; - -void on_request(Tox *m, uint8_t *public_key, uint8_t *data, uint16_t length, void *userdata); -void on_connectionchange(Tox *m, int32_t friendnumber, uint8_t status, void *userdata); -void on_message(Tox *m, int32_t friendnumber, uint8_t *string, uint16_t length, void *userdata); -void on_action(Tox *m, int32_t friendnumber, uint8_t *string, uint16_t length, void *userdata); -void on_nickchange(Tox *m, int32_t friendnumber, uint8_t *string, uint16_t length, void *userdata); -void on_statuschange(Tox *m, int32_t friendnumber, uint8_t status, void *userdata); -void on_statusmessagechange(Tox *m, int32_t friendnumber, uint8_t *string, uint16_t length, void *userdata); -void on_friendadded(Tox *m, int32_t friendnumber, bool sort); -void on_groupmessage(Tox *m, int groupnumber, int peernumber, uint8_t *message, uint16_t length, void *userdata); -void on_groupaction(Tox *m, int groupnumber, int peernumber, uint8_t *action, uint16_t length, void *userdata); -void on_groupinvite(Tox *m, int32_t friendnumber, uint8_t *group_pub_key, void *userdata); -void on_group_namelistchange(Tox *m, int groupnumber, int peernumber, uint8_t change, void *userdata); -void on_file_sendrequest(Tox *m, int32_t friendnumber, uint8_t filenumber, uint64_t filesize, uint8_t *pathname, - uint16_t pathname_length, void *userdata); -void on_file_control(Tox *m, int32_t friendnumber, uint8_t receive_send, uint8_t filenumber, uint8_t control_type, - uint8_t *data, uint16_t length, void *userdata); -void on_file_data(Tox *m, int32_t friendnumber, uint8_t filenumber, uint8_t *data, uint16_t length, void *userdata); -void on_typing_change(Tox *m, int32_t friendnumber, uint8_t is_typing, void *userdata); - -ToxWindow *init_windows(Tox *m); -void draw_active_window(Tox *m); -int add_window(Tox *m, ToxWindow w); -void del_window(ToxWindow *w); -void set_active_window(int ch); -int get_num_active_windows(void); - -/* cleans up all chat and groupchat windows (should only be called on shutdown) */ -void kill_all_windows(void); -#endif diff --git a/src/windows.c b/src/windows.c index e1f93f4..ef14525 100644 --- a/src/windows.c +++ b/src/windows.c @@ -352,25 +352,28 @@ static void draw_bar(void) int i; for (i = 0; i < MAX_WINDOWS_NUM; ++i) { - if (windows[i].active) { - if (windows + i == active_window) { -#ifdef URXVT_FIX - attron(A_BOLD | COLOR_PAIR(GREEN)); - } else { -#endif - attron(A_BOLD); - } + if (!windows[i].active) + continue; - draw_window_tab(windows[i]); + if (windows + i == active_window) - if (windows + i == active_window) { #ifdef URXVT_FIX - attroff(A_BOLD | COLOR_PAIR(GREEN)); - } else { + attron(A_BOLD | COLOR_PAIR(GREEN)); + else #endif - attroff(A_BOLD); - } - } + + attron(A_BOLD); + + draw_window_tab(windows[i]); + + if (windows + i == active_window) + +#ifdef URXVT_FIX + attroff(A_BOLD | COLOR_PAIR(GREEN)); + else +#endif + + attroff(A_BOLD); } refresh(); From 612c6c95eb4a0d21293ab63e6d0d43b78fcc7838 Mon Sep 17 00:00:00 2001 From: stal Date: Wed, 11 Jun 2014 16:40:43 -0700 Subject: [PATCH 31/63] fix openal includes on mac os #140 --- src/audio_call.c | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/src/audio_call.c b/src/audio_call.c index a885814..9b294a3 100644 --- a/src/audio_call.c +++ b/src/audio_call.c @@ -32,14 +32,20 @@ #include "line_info.h" #include -#include -#include #include #include #include #include #include +#ifdef __APPLE__ +#include +#include +#else +#include +#include +#endif + #define _cbend pthread_exit(NULL) #define AUDIO_FRAME_SIZE (av_DefaultSettings.audio_sample_rate * av_DefaultSettings.audio_frame_duration / 1000) From f10ce94f3858ff6f5f7d112b5dc366be7082cd70 Mon Sep 17 00:00:00 2001 From: Jfreegman Date: Wed, 11 Jun 2014 20:04:20 -0400 Subject: [PATCH 32/63] api changes --- src/line_info.h | 4 ++-- src/prompt.c | 7 +++---- src/toxic.h | 2 +- src/windows.c | 2 +- src/windows.h | 2 +- 5 files changed, 8 insertions(+), 9 deletions(-) diff --git a/src/line_info.h b/src/line_info.h index e9618a7..92f7dc2 100644 --- a/src/line_info.h +++ b/src/line_info.h @@ -21,7 +21,7 @@ */ #ifndef _line_info_h -#define line_info_h +#define _line_info_h #include "windows.h" #include "toxic.h" @@ -91,4 +91,4 @@ void line_info_init(struct history *hst); void line_info_onKey(ToxWindow *self, wint_t key); void line_info_onDraw(ToxWindow *self); -#endif /* #define line_info_h */ +#endif /* #define _line_info_h */ diff --git a/src/prompt.c b/src/prompt.c index a6e387d..20220ae 100644 --- a/src/prompt.c +++ b/src/prompt.c @@ -102,7 +102,7 @@ void prompt_update_connectionstatus(ToxWindow *prompt, bool is_connected) /* Adds friend request to pending friend requests. Returns request number on success, -1 if queue is full or other error. */ -static int add_friend_request(uint8_t *public_key) +static int add_friend_request(const uint8_t *public_key) { if (num_frnd_requests >= MAX_FRIENDS_NUM) return -1; @@ -403,10 +403,9 @@ static void prompt_onConnectionChange(ToxWindow *self, Tox *m, int32_t friendnum } } -static void prompt_onFriendRequest(ToxWindow *self, Tox *m, uint8_t *key, uint8_t *data, uint16_t length) +static void prompt_onFriendRequest(ToxWindow *self, Tox *m, const uint8_t *key, const uint8_t *data, + uint16_t length) { - data[length] = '\0'; - ChatContext *ctx = self->chatwin; uint8_t timefrmt[TIME_STR_SIZE]; diff --git a/src/toxic.h b/src/toxic.h index 46d4588..87b7f82 100644 --- a/src/toxic.h +++ b/src/toxic.h @@ -62,7 +62,7 @@ enum { Uncomment if necessary */ /* #define URXVT_FIX */ -void on_request(Tox *m, uint8_t *public_key, uint8_t *data, uint16_t length, void *userdata); +void on_request(Tox *m, const uint8_t *public_key, const uint8_t *data, uint16_t length, void *userdata); void on_connectionchange(Tox *m, int32_t friendnumber, uint8_t status, void *userdata); void on_message(Tox *m, int32_t friendnumber, uint8_t *string, uint16_t length, void *userdata); void on_action(Tox *m, int32_t friendnumber, uint8_t *string, uint16_t length, void *userdata); diff --git a/src/windows.c b/src/windows.c index ef14525..e73910c 100644 --- a/src/windows.c +++ b/src/windows.c @@ -44,7 +44,7 @@ extern ToxWindow *prompt; static int num_active_windows; /* CALLBACKS START */ -void on_request(Tox *m, uint8_t *public_key, uint8_t *data, uint16_t length, void *userdata) +void on_request(Tox *m, const uint8_t *public_key, const uint8_t *data, uint16_t length, void *userdata) { int i; diff --git a/src/windows.h b/src/windows.h index 99aa74f..9e3fc7b 100644 --- a/src/windows.h +++ b/src/windows.h @@ -76,7 +76,7 @@ struct ToxWindow { void(*onKey)(ToxWindow *, Tox *, wint_t, bool); void(*onDraw)(ToxWindow *, Tox *); void(*onInit)(ToxWindow *, Tox *); - void(*onFriendRequest)(ToxWindow *, Tox *, uint8_t *, uint8_t *, uint16_t); + void(*onFriendRequest)(ToxWindow *, Tox *, const uint8_t *, const uint8_t *, uint16_t); void(*onFriendAdded)(ToxWindow *, Tox *, int32_t, bool); void(*onConnectionChange)(ToxWindow *, Tox *, int32_t, uint8_t); void(*onMessage)(ToxWindow *, Tox *, int32_t, uint8_t *, uint16_t); From 24a85df15f743c0782173836e30d16644c202326 Mon Sep 17 00:00:00 2001 From: Jfreegman Date: Fri, 13 Jun 2014 01:42:20 -0400 Subject: [PATCH 33/63] remove scroll mode, scroll windows via PageUp/PageDown --- src/chat.c | 35 ++++++++++-------------------- src/chat_commands.c | 2 +- src/groupchat.c | 43 +++++++++++++------------------------ src/line_info.c | 52 ++++++++++++++------------------------------- src/line_info.h | 7 +----- src/misc_tools.c | 10 ++++----- src/misc_tools.h | 2 +- src/prompt.c | 21 ++---------------- src/toxic.c | 12 +++-------- src/toxic.h | 2 ++ src/windows.c | 6 ++++++ src/windows.h | 1 + 12 files changed, 63 insertions(+), 130 deletions(-) diff --git a/src/chat.c b/src/chat.c index a348527..6331884 100644 --- a/src/chat.c +++ b/src/chat.c @@ -548,17 +548,6 @@ static void chat_onKey(ToxWindow *self, Tox *m, wint_t key, bool ltr) getmaxyx(self->window, y2, x2); int cur_len = 0; - if (!ltr && (key == T_KEY_ESC)) { /* ESC key: Toggle history scroll mode */ - bool scroll = ctx->hst->scroll_mode ? false : true; - line_info_toggle_scroll(self, scroll); - } - - /* If we're in scroll mode ignore rest of function */ - if (ctx->hst->scroll_mode) { - line_info_onKey(self, key); - return; - } - if (ltr) { /* prevents buffer overflows and strange behaviour when cursor goes past the window */ if ( (ctx->len < MAX_STR_SIZE - 1) && (ctx->len < (x2 * (CHATBOX_HEIGHT - 1) - 1)) ) { @@ -574,6 +563,8 @@ static void chat_onKey(ToxWindow *self, Tox *m, wint_t key, bool ltr) set_typingstatus(self, m, 1); } else { /* if (!ltr) */ + if (line_info_onKey(self, key)) + return; if (key == 0x107 || key == 0x8 || key == 0x7f) { /* BACKSPACE key */ if (ctx->pos > 0) { @@ -746,21 +737,17 @@ static void chat_onDraw(ToxWindow *self, Tox *m) line_info_print(self); wclear(ctx->linewin); - if (ctx->hst->scroll_mode) { - line_info_onDraw(self); - } else { - curs_set(1); - scrollok(ctx->history, 1); + curs_set(1); + scrollok(ctx->history, 0); - if (ctx->len > 0 && !ctx->hst->scroll_mode) { - uint8_t line[MAX_STR_SIZE]; + if (ctx->len> 0) { + uint8_t line[MAX_STR_SIZE]; - if (wcs_to_mbs_buf(line, ctx->line, MAX_STR_SIZE) == -1) { - reset_buf(ctx); - wmove(self->window, y2 - CURS_Y_OFFSET, 0); - } else { - mvwprintw(ctx->linewin, 1, 0, "%s", line); - } + if (wcs_to_mbs_buf(line, ctx->line, MAX_STR_SIZE) == -1) { + reset_buf(ctx); + wmove(self->window, y2 - CURS_Y_OFFSET, 0); + } else { + mvwprintw(ctx->linewin, 1, 0, "%s", line); } } diff --git a/src/chat_commands.c b/src/chat_commands.c index 9c92e8e..3e70ea1 100644 --- a/src/chat_commands.c +++ b/src/chat_commands.c @@ -87,7 +87,7 @@ void cmd_chat_help(WINDOW *window, ToxWindow *self, Tox *m, int argc, char (*arg for (i = 0; i < NUMLINES; ++i) line_info_add(self, NULL, NULL, NULL, lines[i], SYS_MSG, 0, 0); - msg = " * Use ESC key to toggle history scroll mode\n"; + msg = " * Use Page Up/Page Down to scroll chat history\n"; line_info_add(self, NULL, NULL, NULL, msg, SYS_MSG, 1, CYAN); hst->line_start = start; diff --git a/src/groupchat.c b/src/groupchat.c index 5a42892..82d1367 100644 --- a/src/groupchat.c +++ b/src/groupchat.c @@ -147,9 +147,9 @@ static void print_groupchat_help(ToxWindow *self) for (i = 0; i < NUMLINES; ++i) line_info_add(self, NULL, NULL, NULL, lines[i], SYS_MSG, 0, 0); - msg = " * Use ESC key to toggle history scroll mode"; + msg = " * Use Page Up/Page Down to scroll chat history"; line_info_add(self, NULL, NULL, NULL, msg, SYS_MSG, 1, CYAN); - msg = " * Scroll peer list with the Page Up/Page Down keys.\n"; + msg = " * Scroll peer list with the < and > keys.\n"; line_info_add(self, NULL, NULL, NULL, msg, SYS_MSG, 1, CYAN); msg = " * Notice, some friends will be missing names while finding peers\n"; line_info_add(self, NULL, NULL, NULL, msg, SYS_MSG, 1, 0); @@ -383,17 +383,6 @@ static void groupchat_onKey(ToxWindow *self, Tox *m, wint_t key, bool ltr) getmaxyx(self->window, y2, x2); int cur_len = 0; - if (!ltr && (key == T_KEY_ESC) ) { /* ESC key: Toggle history scroll mode */ - bool scroll = ctx->hst->scroll_mode ? false : true; - line_info_toggle_scroll(self, scroll); - } - - /* If we're in scroll mode ignore rest of function */ - if (ctx->hst->scroll_mode) { - line_info_onKey(self, key); - return; - } - if (ltr) { if ( (ctx->len < MAX_STR_SIZE - 1) && (ctx->len < (x2 * (CHATBOX_HEIGHT - 1) - 1)) ) { add_char_to_buf(ctx, key); @@ -405,6 +394,8 @@ static void groupchat_onKey(ToxWindow *self, Tox *m, wint_t key, bool ltr) } } else { /* if (!ltr) */ + if (line_info_onKey(self, key)) + return; if (key == 0x107 || key == 0x8 || key == 0x7f) { /* BACKSPACE key: Remove character behind pos */ if (ctx->pos > 0) { @@ -521,14 +512,14 @@ static void groupchat_onKey(ToxWindow *self, Tox *m, wint_t key, bool ltr) } /* Scroll peerlist up and down one position if list overflows window */ - else if (key == KEY_NPAGE) { + else if (key == T_KEY_C_PRD) { int L = y2 - CHATBOX_HEIGHT - SDBAR_OFST; if (groupchats[self->num].side_pos < groupchats[self->num].num_peers - L) ++groupchats[self->num].side_pos; } - else if (key == KEY_PPAGE) { + else if (key == T_KEY_C_CMA) { if (groupchats[self->num].side_pos > 0) --groupchats[self->num].side_pos; } @@ -587,21 +578,17 @@ static void groupchat_onDraw(ToxWindow *self, Tox *m) line_info_print(self); wclear(ctx->linewin); - if (ctx->hst->scroll_mode) { - line_info_onDraw(self); - } else { - scrollok(ctx->history, 1); - curs_set(1); + scrollok(ctx->history, 0); + curs_set(1); - if (ctx->len > 0) { - uint8_t line[MAX_STR_SIZE]; + if (ctx->len > 0) { + uint8_t line[MAX_STR_SIZE]; - if (wcs_to_mbs_buf(line, ctx->line, MAX_STR_SIZE) == -1) { - reset_buf(ctx); - wmove(self->window, y2 - CURS_Y_OFFSET, 0); - } else { - mvwprintw(ctx->linewin, 1, 0, "%s", line); - } + if (wcs_to_mbs_buf(line, ctx->line, MAX_STR_SIZE) == -1) { + reset_buf(ctx); + wmove(self->window, y2 - CURS_Y_OFFSET, 0); + } else { + mvwprintw(ctx->linewin, 1, 0, "%s", line); } } diff --git a/src/line_info.c b/src/line_info.c index 6c32295..380f225 100644 --- a/src/line_info.c +++ b/src/line_info.c @@ -51,7 +51,7 @@ void line_info_init(struct history *hst) hst->line_end = hst->line_start; } -/* resets line_start when scroll mode is disabled */ +/* resets line_start */ static void line_info_reset_start(struct history *hst) { struct line_info *line = hst->line_end; @@ -59,7 +59,7 @@ static void line_info_reset_start(struct history *hst) while (line) { if (line->id == start_id) { - hst->line_start = line; + hst->line_start = line->next; break; } @@ -67,23 +67,6 @@ static void line_info_reset_start(struct history *hst) } } -void line_info_toggle_scroll(ToxWindow *self, bool scroll) -{ - WINDOW *win = self->chatwin->history; - struct history *hst = self->chatwin->hst; - - if (scroll) { - hst->scroll_mode = true; - scrollok(win, 0); - curs_set(0); - } else { - hst->scroll_mode = false; - scrollok(win, 1); - curs_set(1); - line_info_reset_start(hst); - } -} - void line_info_cleanup(struct history *hst) { struct line_info *tmp1 = hst->line_root; @@ -201,7 +184,7 @@ void line_info_add(ToxWindow *self, uint8_t *tmstmp, uint8_t *name1, uint8_t *na ++hst->start_id; lines -= (1 + hst->line_start->len / (x2 - offst)); - if (!hst->scroll_mode && hst->line_start->next) + if (hst->line_start->next) hst->line_start = hst->line_start->next; } } @@ -407,24 +390,26 @@ static void line_info_page_down(ToxWindow *self, struct history *hst) hst->line_start = hst->line_start->next; } -void line_info_onKey(ToxWindow *self, wint_t key) +bool line_info_onKey(ToxWindow *self, wint_t key) { struct history *hst = self->chatwin->hst; + bool match = true; switch (key) { - case KEY_PPAGE: + /* TODO: Find good key bindings for page up/page down scroll behaviour */ + /* case KEY_SPREVIOUS: line_info_page_up(self, hst); break; - case KEY_NPAGE: + case KEY_SNEXT: line_info_page_down(self, hst); - break; + break; */ - case KEY_UP: + case KEY_PPAGE: line_info_scroll_up(hst); break; - case KEY_DOWN: + case KEY_NPAGE: line_info_scroll_down(hst); break; @@ -435,18 +420,13 @@ void line_info_onKey(ToxWindow *self, wint_t key) case KEY_END: line_info_reset_start(hst); break; + + default: + match = false; + break; } -} -void line_info_onDraw(ToxWindow *self) -{ - ChatContext *ctx = self->chatwin; - - wattron(ctx->linewin, A_BOLD | COLOR_PAIR(BLUE)); - mvwprintw(ctx->linewin, 1, 0, "Scroll mode:\n"); - wattroff(ctx->linewin, A_BOLD | COLOR_PAIR(BLUE)); - mvwprintw(ctx->linewin, 1, 13, "Use up/down arrows, page up/page down, and home/end to navigate.\n" - " ESC to exit.\n"); + return match; } void line_info_clear(struct history *hst) diff --git a/src/line_info.h b/src/line_info.h index 92f7dc2..86bd194 100644 --- a/src/line_info.h +++ b/src/line_info.h @@ -61,7 +61,6 @@ struct history { struct line_info *line_end; uint32_t start_id; /* keeps track of where line_start should be when at bottom of history */ uint32_t line_items; - bool scroll_mode; /* keeps track of lines added between window refreshes */ uint32_t queue; @@ -78,9 +77,6 @@ void line_info_print(ToxWindow *self); /* frees all history lines */ void line_info_cleanup(struct history *hst); -/* Toggles scroll mode for current window */ -void line_info_toggle_scroll(ToxWindow *self, bool scroll); - /* clears the screen (does not delete anything) */ void line_info_clear(struct history *hst); @@ -88,7 +84,6 @@ void line_info_clear(struct history *hst); void line_info_set(ToxWindow *self, uint32_t id, uint8_t *msg); void line_info_init(struct history *hst); -void line_info_onKey(ToxWindow *self, wint_t key); -void line_info_onDraw(ToxWindow *self); +bool line_info_onKey(ToxWindow *self, wint_t key); /* returns true if key is a match */ #endif /* #define _line_info_h */ diff --git a/src/misc_tools.c b/src/misc_tools.c index 80220f5..93b93df 100644 --- a/src/misc_tools.c +++ b/src/misc_tools.c @@ -64,11 +64,10 @@ void get_time_str(uint8_t *buf) strftime(buf, TIME_STR_SIZE, t, get_time()); } -/* XXX: FIX */ -unsigned char *hex_string_to_bin(char hex_string[]) +char *hex_string_to_bin(const char *hex_string) { size_t len = strlen(hex_string); - unsigned char *val = malloc(len); + char *val = malloc(len); if (val == NULL) { endwin(); @@ -76,11 +75,10 @@ unsigned char *hex_string_to_bin(char hex_string[]) exit(EXIT_FAILURE); } - char *pos = hex_string; size_t i; - for (i = 0; i < len; ++i, pos += 2) - sscanf(pos, "%2hhx", &val[i]); + for (i = 0; i < len; ++i, hex_string += 2) + sscanf(hex_string, "%2hhx", &val[i]); return val; } diff --git a/src/misc_tools.h b/src/misc_tools.h index 1c056cb..b01c6b9 100644 --- a/src/misc_tools.h +++ b/src/misc_tools.h @@ -29,7 +29,7 @@ #define MAX(x, y) (((x) > (y)) ? (x) : (y)) /* convert a hex string to binary */ -unsigned char *hex_string_to_bin(char hex_string[]); +char *hex_string_to_bin(const char *hex_string); /* get the current unix time */ uint64_t get_unix_time(void); diff --git a/src/prompt.c b/src/prompt.c index 20220ae..dbaf731 100644 --- a/src/prompt.c +++ b/src/prompt.c @@ -131,21 +131,6 @@ static void prompt_onKey(ToxWindow *self, Tox *m, wint_t key, bool ltr) getyx(ctx->history, y, x); getmaxyx(ctx->history, y2, x2); - /* TODO this is buggy */ - /* ESC key: Toggle history scroll mode */ - /* - if (key == T_KEY_ESC) { - bool scroll = ctx->hst->scroll_mode ? false : true; - line_info_toggle_scroll(self, scroll); - } - */ - - /* If we're in scroll mode ignore rest of function */ - if (ctx->hst->scroll_mode) { - line_info_onKey(self, key); - return; - } - if (ltr) { if (ctx->len < (MAX_STR_SIZE - 1)) { add_char_to_buf(ctx, key); @@ -273,10 +258,8 @@ static void prompt_onDraw(ToxWindow *self, Tox *m) getyx(ctx->history, y, x); getmaxyx(ctx->history, y2, x2); - if (!ctx->hst->scroll_mode) { - curs_set(1); - scrollok(ctx->history, 1); - } + curs_set(1); + scrollok(ctx->history, 1); line_info_print(self); diff --git a/src/toxic.c b/src/toxic.c index 9d9682c..d9e5bbf 100644 --- a/src/toxic.c +++ b/src/toxic.c @@ -84,12 +84,6 @@ struct arg_opts { struct _Winthread Winthread; struct user_settings *user_settings = NULL; -void on_window_resize(int sig) -{ - refresh(); - clear(); -} - static void init_term(void) { signal(SIGWINCH, on_window_resize); @@ -208,9 +202,9 @@ static int nodelist_load(char *filename) while (fgets(line, sizeof(line), fp) && linecnt < MAXNODES) { if (strlen(line) > MINLINE) { - char *name = strtok(line, " "); - char *port = strtok(NULL, " "); - char *key_ascii = strtok(NULL, " "); + const char *name = strtok(line, " "); + const char *port = strtok(NULL, " "); + const char *key_ascii = strtok(NULL, " "); /* invalid line */ if (name == NULL || port == NULL || key_ascii == NULL) diff --git a/src/toxic.h b/src/toxic.h index 87b7f82..5ed9c07 100644 --- a/src/toxic.h +++ b/src/toxic.h @@ -52,6 +52,8 @@ #define T_KEY_C_E 0x05 /* ctrl-e */ #define T_KEY_C_A 0x01 /* ctrl-a */ #define T_KEY_ESC 0x1B /* ESC key */ +#define T_KEY_C_CMA 0x2C /* ctrl-comma */ +#define T_KEY_C_PRD 0x2E /* ctrl-period */ enum { MOVE_UP, diff --git a/src/windows.c b/src/windows.c index e73910c..1aa7f2d 100644 --- a/src/windows.c +++ b/src/windows.c @@ -316,6 +316,12 @@ ToxWindow *init_windows(Tox *m) return prompt; } +void on_window_resize(int sig) +{ + refresh(); + clear(); +} + static void draw_window_tab(ToxWindow toxwin) { /* alert0 takes priority */ diff --git a/src/windows.h b/src/windows.h index 9e3fc7b..3c6f57d 100644 --- a/src/windows.h +++ b/src/windows.h @@ -176,5 +176,6 @@ void del_window(ToxWindow *w); void set_active_window(int ch); int get_num_active_windows(void); void kill_all_windows(void); /* should only be called on shutdown */ +void on_window_resize(int sig); #endif /* #define _windows_h */ From b36680d767a3c5074209d5fbf60dfaa597e1fa8b Mon Sep 17 00:00:00 2001 From: Jfreegman Date: Fri, 13 Jun 2014 03:46:01 -0400 Subject: [PATCH 34/63] fix bug --- src/groupchat.c | 9 +++++---- src/toxic | Bin 0 -> 2852016 bytes src/toxic.h | 4 ++-- 3 files changed, 7 insertions(+), 6 deletions(-) create mode 100644 src/toxic diff --git a/src/groupchat.c b/src/groupchat.c index 82d1367..d888714 100644 --- a/src/groupchat.c +++ b/src/groupchat.c @@ -147,9 +147,9 @@ static void print_groupchat_help(ToxWindow *self) for (i = 0; i < NUMLINES; ++i) line_info_add(self, NULL, NULL, NULL, lines[i], SYS_MSG, 0, 0); - msg = " * Use Page Up/Page Down to scroll chat history"; + msg = " * Use Page Up/Page Down keys to scroll chat history"; line_info_add(self, NULL, NULL, NULL, msg, SYS_MSG, 1, CYAN); - msg = " * Scroll peer list with the < and > keys.\n"; + msg = " * Scroll peer list with the ctrl-] and ctrl-[ keys.\n"; line_info_add(self, NULL, NULL, NULL, msg, SYS_MSG, 1, CYAN); msg = " * Notice, some friends will be missing names while finding peers\n"; line_info_add(self, NULL, NULL, NULL, msg, SYS_MSG, 1, 0); @@ -394,6 +394,7 @@ static void groupchat_onKey(ToxWindow *self, Tox *m, wint_t key, bool ltr) } } else { /* if (!ltr) */ + if (line_info_onKey(self, key)) return; @@ -512,14 +513,14 @@ static void groupchat_onKey(ToxWindow *self, Tox *m, wint_t key, bool ltr) } /* Scroll peerlist up and down one position if list overflows window */ - else if (key == T_KEY_C_PRD) { + else if (key == T_KEY_C_LB) { int L = y2 - CHATBOX_HEIGHT - SDBAR_OFST; if (groupchats[self->num].side_pos < groupchats[self->num].num_peers - L) ++groupchats[self->num].side_pos; } - else if (key == T_KEY_C_CMA) { + else if (key == T_KEY_C_RB) { if (groupchats[self->num].side_pos > 0) --groupchats[self->num].side_pos; } diff --git a/src/toxic b/src/toxic new file mode 100644 index 0000000000000000000000000000000000000000..90b2bc0320b8f630aa8a1c268b75e73a2483205d GIT binary patch literal 2852016 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

w;+N3-vfs1oPsE@_o2fi6{>l1u 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%0A1bKVd%6!hP2Y5wCz9sdN#4LR3;Dl`69 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

aRI!O-}xntw6>e**a*f&5pM z2hUTY^4~B`?*FWxJpXUHxVZg)J;nTs{y)j*p9T4U6!PEki_iaekN>?jWd6MFsISe3 z+R48-{(T(%S3>?P4-fVf<=-13_dj-_JpXg&1+Ocb>VHFY=RXX84ioJRRiR>=8xN&fSE3w<@z|F!e~H1azc~{`il8a zPT~1~#^;{}`JbHa|AzAKYUbZN+;aY(ME`3PpGpNE zSD518P%;0VQ+fY?-sgW4^8Y;KKk=iP{Ijd%`d?_=58H5z<@`@W|7$}2!*UwsKfQuH z|6$9|IyC>3&{UCokhLhVtJg`>%RE__`8P`QJz}|5ej?{$KR@YnLr! z(;@#&hVt)d=D(%ha{fK^zg9v1Rp&no<^Lkte^|Mj@~@r$>B#>CZfU=RdC?|0KwNX8+)MN)&$w;de>?%MS>CT~qwS74t9F ze`fgnwab;U4#`B$C)ER=uC^B?W}cOZWT^56Mx@H{=L{@Y%bkAI!pW&h3x!LMs7|084P-#`CR zjQ_7A|GMD6@yy`;jN-3YP40g#@t-~>xUZPvUr~4be*^iS0{`uI1@C7Re{Ut>C;mI` z4t`xz{2S}~e-ruF1OH*3qWBwMk@N2n|D?^~Lqp@Aw*R+~e=_)Y?+Nx4#qZ1@{KS97 zfyJHwZKCUcHu4WE@UPncsehNu|4}&k&bohc{`cF+zdrES)a&`L8YXNd8^IPpsoZL;kh-JCT3G0)Ex}Q+}t9^VeU@&wtws zuYbB2tTT-w6EI9T!}uQTeZ1N3MU5 z`0xI#xaYsDtXTho{{!St0DstiM)5biO8j49*}pFTd&ob$fL}HLl%Mr+esTWShsZwy z_}fp=%YXGSIsfiMvj2_~gJ0Lw__vCpf5G2{{3C%sY(Jy&-}xHJ|HCpr>3aCkQ2*2B z{|NavF5p+qKjmkAoZq{MkALqYe-l{gy-IKVYx|n`A8Ysh&sB8Czq!c23HWb1Ik--v z@}Js>)Iaf`YzTf`Q}w^9V*QKpZyxfG0{*c5jN;F9$o|;`yY;WiFV=rPMgAo4cZYb2 z;&;E3`JE%={P&zvT>q;n`WO74A^&E;AGV)S{5?mK{9E>~&HwKuawV9(|H0@2e%1a@ z`JFz??|=SD`HsB*kHGu?TnShBJ1gtm|EJ{wa{nh-Opi6R$9fV@7s9^#Gq+9-q2GL=IREYZob&&P{$B+DEsyE>uOP?& zF7cm!Jot6v{gOhl#Sa`s|Md-=|7YZX3HWQC2;R@A`Y#_&>YwnlNx`pcihpZG{=`h~9iu~=sU!Dox&nSM+mHj(}-wSzN zQ~tMAXCH$3>gMY84__x#L{|)(H$?}KnXB2RG1YVdwW@wfEI{4QDlWTywet||YOy6c~RApaJ?AGV)S z{B_^U{Ol3A|A~Q$eq(6-*XHj={xJpos_UPW-?O~_smd?j|D2EfTLOR07s2N#MES4z zLH6&F{I`a@uBrU5u9$zp{}=La1^i+A8O7g2_+88S*XI8d`JDoO)%;U_r;qcC_x~0k z|JJ~tek-_7NBPhEDCeI&CSU(i^LFs-n#%tgiuo7({YrDYkbVDWn{54u>}M2z>Leq*Wd9!FZ%+ijZg5f1UsCkrH5KzO_!mR|YTyss&nSNOtIW?P$>U!r zfg%5@{NntN66D_*_{)#dJN|Dc{LZ6t{U=5i*Z*3v{gcl>nB~uZYL_o#bKv^NZbR2U zI#`bVE%eEz}WzW-Uk{{iqjKl}5vzkB~XSCc<=h8=!!|Fcq`zjkmL zn+yCchWI^A{`Te9HPsSHviyf&H+TPQQU8Om{&#`;53AFt{#V~C_dl1^f8fq!HyY}H z3iY4kPY)aF|I@$Y@y`rc|7+8n|FIJJ{vYgax&FI5gZru}{vBek|M~Twd~;3zpDyF| z5BdKT^50`9|Lk8ff2e=*gOU|3=YKR_|FdgB{#ECH3+3PP_^+D(uKf8gOJe=cg#5S6 z3C?L${dWzL^Y4)SHx4iE_`joW{+HtUA5zA?fc#hgVrKkvH1pp$w%Fqz>HkZh|J@+} z%^L@Mit?ZMP4535>HpQEf?wBE|64o${4dx4GiUMszcli{3i(gHub2PI1v0;TsJ#AD z_d)RMn&Pik%)hw*0YkoB||6$EB`yZ*(*0b&8 zU#x!*M*lUC|EimOezIFEs{d90PR4(d|B}s$JO5cH_WZ~1|26aZ{AWevpAGrhUUNV^UvqML%9D+`G4aa&cC|PU%OHn8wB}hy=LY=o@V~j za+SN4e^^eV`d`(2 zdH(M_7L(sl|5MGsIRAfbgcKd&2?D3zx|GyFDe?O@IusV(E|LvsyoyTMP zkC|H%lZ75?*M9=}=Rp0p-fm|7&%M{~`scPWe~6^5+yB>7oc}b8bW`8~p46Ed$db^N!1F8>(hKN$GK_A_e! znFkk zpIAob_bmI@=AVtnzlRm@tImHZzuU+8Tl4+TLH~yXzpFX_X@6WE|JfwD{uAE>&#O)4 zeF{Hpn<{0{LS zw%_*s`}cnqpMP`*)_)pyGV_FgpI%k|j_Zj3bM5+HOL6^6od3Bk`acT%XLRSk%gg=W zCI0K@1g|TZ@}G!Z|K$Gfm*D*`+u;4ru1);=AF2A!j3)1YkC6LcvGWhN--`7IEacw* z75;ZX|3`!WFi%na&z&UapFL@pKfZsTU!4C_jr{e%->iB6_l75BeuwZUzb)?gH#~O! z3I9&We=P8a?Prw#WQOpcWViom^Y>u?hg-G?e%1P?{4VhyTAYT)e^q|5{<|~!KOXqI zLvkABzmxd)2!BV&eYH*X{}HkC&#(XfVom>_-W>Tqfc2m9kZ~%CpZfJIum5ZrGe`OU zFZ}O{{3n3_Fi%nZb!W)u|F9SAuK#KK-wpXc1pl5P|E$&S__tMT|2+Ts>)-c4{*Qpa z+0^+jmicdt%}?e(yCeTekpGtNg2(Bo{CgE-{+p5gSN8z>Fz z7yLK88+@D=#ZULkwOs#u#XtWwcm8MPcYOTc8~Hy5en+$ZDZgi#|I3&;%8&oz_-8NV zKLzsNuIaz^X)^yO`LBF0I9I0n-^Pmlul@(_e;?%k1pN0H^3U$KTmL&K`mf%dzyC22 zkAE&12TZ`9;pDF2r0zn^0Mh5v(*{|xXS<|)d5*GlsI-7>I z?~x7K{*OlfufTt|A^)!B`u`^8?=kORtbZMa{AYvzW=;OCDdhN{)W7pla9x?||C`3{ z|Ni~Y#PMG}@_!BfTSE3Ts{fHVGS9OAePYl5N^p)z{{-a!7WjJ&@jI6J z_fzC=&-0&%{NDjT``C`$@b?|^oD;S_`CS) zzkdI3TEP9E&+8xjC&7QkA7=W$qv_wf!Lt8j(Eqsw{#D=qq5fUV@BgU!ugbsw=lcA$ zm1S%U_-`=e-_`WrUi|)_tABC+&p7md9{BIkeE%a2C*Vt^JXP+0>5z40`7Z_6cATxr z*zf=N^)K#!IiA-)_}>=%w;S^BY5H%x(N6sf{}-bF^TB_Zr>Op44=3Oj`ge%`P=|$o zDfCIvKT!2AKL70^UjM6?v1;&NIp0kGXV=U5k0$V+QF)7H{}-VDaRvTW`#<&XS?>R; z{>A6tT*B)g{O=C_8x8q)H2pib+3{a-BVYf#82!88zhbCH|ER*_%@q5;`23e9UjJ*9vAw{5havy2rvL7=W&f9<{|mr>n5QWJE}Vc{*vdWP zKU8JmUkZIv^bb`1i~HYR&g&oir@(*JpJw{Mr|I9l)3X0d(f{}Y|Em3;`e!T09RL0y z|BV~){&yv>|Dk2*>_qV2^?%qq5BNB0?2juz5(gYG-E;#1OgDiL(}!-lLv^U81w$yNn?7{Y zO*h?iA9sLh!3hB-q&eLQ&7t~$10Qgl>8AhRtlCODVkAW?oc}qW5A4oc?N~p3-+R(% zG+Iae(H&y{mzuyxfuetS=6^fqe|5}X!6_~Om;Wd}{~1iw)bA+&oAR$3M)==>^}hxD zPY3?xf4Is2fhGTvCq47OmGiI9;%}P&W&Wtw@|X5Mx|8d_2K3ikuK#L-38-vW4*n4R zzg)4dNcfU&l1M1Gt#zoBF@3KlJSXruy0a-+Q?J>*M%8*slNYC=mPqP~zXcPk#IV?F{{&>A#QbzX9~C z>Y3*MAzXlDyK*o|jDMvEXMagqDE$Ld{p|kF{apV|pufp-{aXcez}ZqlNq?ncU77Hu zbeYN$+Z*y{`XAu>;U~M1s-9{5yCnUQq+eO_>_$@-O8>xAKl}ZUCaxcrETQg^cJW^h z2}qDKS@i$P!;;S{ekon2s>BY4{F(j-xqi51i&XVY_$@-O8>xG|KGU&`?B<#`oF9{ z^6dYn`q}mG-?{$#L4V1CcK%;{lgK}i__r(0>&pLkHuQg{|4FX@0no3iXPW=Fog~J8 zB*nkdgB|(5wf=u_{Y_c=P5ociANF$nEdM>l^*;#u!-MSnzjd_8Ka~8x{@~>Ey7K>B z4E>+!Z{hkM0{yCbrulz(vZx=m`OW{<`k&_dAI{Qm>i@F-NaCOG_&3$h^4~LD|0AHk z{E%cnP2=BqipW2Z_y<+V=XK@(yBhjG)BhaT|0w8J)iX_h{i&kqiTV{ujA^*s=~)9-8c@Y5ZGjMgI?__^&!F z`Mj?3|L*$!FFyZ%5!e4)y#ImXK1G^-Ilo7qpMS2@ypDj?E#mXvkGTHDK!2&_{D++X1JC>qv(-O=>+cWx%M|l8ru;+C`VY6&{~Fgn0Q7e{(jR%& ze}tia*8flB`UiskF3b53+5gd8zwuvfsGs%!leqo@(BEiz{VVGaJnKK&P(RE6lezvu zpua+Koo*cep7kGNsGs@&6s~`9(BI=of8<&Jv4;AY|4-%mmjM0Eme;?s|D$<+O{{l<@FS$cp|A3~8{@VP`!}S*d|Jozn#6No7ul~z5+Y#o! zGyOk{|CwC>(^>pY^S{hLkm6s(?XQY|mjCB+{YwM?Hb?ve&-|}2Vc6G&n58M3zI@iAp@UJ_{P5g(R`CntEjD`kw>-MJL+j|Aw>0>;K>mas5+?BCop2|9cwde-{7q zx&Gzj{6E@GzwFtaHU&Sdc|F@kX=KsiZ{x{{{xDJW`ce(x*fPd%F zZt{QNIsQl4^6%jKU&!Kbn*U|~VK3+3wJzcRKG(k@@NYQA4gb(H|2jkd?E3FLu73>h zZ&&2$wD|8iN6i1|eX;)w75%EK{J)oB{%=^1@c)qOF9!a>v2OUII)jZGY zFvTB#rDr(Fe~noG!Rr;Gb723s21on9g_irjwLax%|2H=O^%3Vk7W}`=a{SkHt~CCY z{J&mtURU{VZ^QnN-T(L(*S`w*e~%;o4?O$->4yGazdiB)PqF^F;Q!}>|93g^|H#t+ z)8c$VKd1Sh`Tu8}|2Xh}m7k{d|E1@N{eSR*-~4Cl|79Bx{#{)Es^I_4$Gge@p=bX; z!`A=*jrETxEkt$T{{h1K7xecZgMVxCUr>iO{66%5nfqTwbpN9-24zxky#LdTMPU8M zBdcYOO~*gsvEu#j;22H)n%vT4{;a?MQKtWA*S}wI|6dLKzh#sg|BpQT|3#YZNXI{2 z7n9$=`x5J)3;urr_;D%U@@M`3 ze@XsZzYtvr{JS0T4?fq_pBC7TKZpK5!=GLMc60t~0RPq#+{Az2ng1oW{J$pg5Bx6z z{uTY)^nXz==g+Qxzv28#fPYPm8~&kZ{%0HVFW-)g|Gvfg_lF<9z8Ls7IpQCD(YxcH zUH^T@`L7B5%P)7sKl04~97Fyr|9?;7ANXGa{Cgbnk9s+OcK!1M=f4*4Z*asPy{+m0 zn%vU5!E-gwlQaJN5$hkZVIjH<_*X9CCjSRtYU-DSRX>yO@gKhaso9O>zyEOlv*G%u z_A$HbpW5TZ>z~N;_0KQ1*FQa6|JvaHWly^q{|27@{{ln*j}9gLf5Q6bg8yF${@?7# z|07HPuYES({*TAM?E2>y&VLB-?{vgJ^vwT4TmHXd{UbIiMD@TQE$S%${l_l~Zb$wfc=rDt z4gJ66NTPoctbZ=}|IOh41&cZA|1AB#CGY-^$3I1f6a9;E{-wab;z~FDU+9_t4Tk)i ztBL;pB>!zvi0%UZ)sFawmi((%S}!sG$oa_jn9lz){sTDw^?`qrBmR+R{x{n4A4uXK z_&*5zTOIL7|F!G?>R!rs|0l(N0q4H~@UOheQT%&e|9Fiye@Xx1T>plkzwsG2*Z*j~ zCV$O(r^WlVn&-)h|0THojX;01BmRMB{a5Sj&)olK>t8^2>R*!k|I46XRnN5XfA@vr`akrc z-}txIKbY%(B}>1l|I7L#iN7*`X~wPc`{V;t{Ve{M;`(0&{f)=k^?zNDi~IwLf5mah z=XK@(`x^Q`)4w#=AAx>VJ=6TZ^lzg6NYbz5=ZL?x{vxh_LY970|CjZLy;eV-|LESA zT>lK?^B-dtgZYo;*GzQDH2#fmt}J{n{MB#%Yg!4fYghUi`GBr}WzWAZ!}-4!$Ny<| zBLh(klNapYLZF|4je#TtEC|Gg8$vjeqeqqW)0QudKSG__x-- zEY}Y|SxX{c{zL45z? z9a#U;@|4~Bm$uR3`j_B%zxw~szW*cfUzziVEn66W)A*P9N0R^NJOAnOfANyRXxJst z&zIoqvF0BS`eYOwzY6x{;I)4Cftll$9&C?D`R>uU{08A^v8$jdU|$wqJD=J%Q~vo& zuzf1n_XT@gC_e9rr2KSJzP1yezm=4q0rvh-7F;h=em_!vCfJ8(ou_$Y{HXLSurCjG zK$R&!j+_S$wf>F29P2My8|x|l1?!v)_9XpNNO@WROt2^Ep9S_L{c}ipS${hzFYBL2 z%F}inP1@ykQeM{o2H4|vX&sAsJgaDzu~%UIk);1MuqWxCNXpClr-405|8%e?>7PN$ z%lc=M^0NL}V2}04`n4ecNuky&vHluKe+2d<{S!!eS^re9C+Tkkdy@WXq`a(uIw>#f zp8@uK=zr-dtiO1O=>Lz_@^%lhY#@-qK+QeO7| zxnS4v|8X~9{T=IK{q?KwpUGd7z@Dg|l+V!*_C)<)Pt;G!=jbQpbM%8fAN`D43lJc_tX<$#%KOO8z`e%^xl;$wUe-Si?D^2&dJong4#nef>i-eglk`s@7=}@e+Jm|p?}lz2Yala>Y?MmnPAV> ze^k~io{aSu z_h9~1{}iw%>7Po<%lc=5JxTv;uqWxCL&{T~RDU}uPwiCyTvDFur26NP^3+cCzX^67 z{bQ$M{cS{l_zmVi0qmLhC*uKnUGN$yFY9judy@WXU{BINos_3Kss0(HJhfB(Gr=C~ zp*pF4FfGu(v29p?$xoO+(+~DU{iJ-3ey}I%2YaG^Ql9E$`bl|eXZpdO5B;$IH*^1+ zJ^xe2=Rf`(S7NN){738Q()>q_-}#TlwC8`Z{^%((|Fr+f{s&!csb6Za(DVAA4K?p0QU7QBH|6?g z0)G{!H2!T8e{_#u|2O5&)_<3A{hI*)re~AqsnhgJ_)+AU|0cHlSLga?W$`zi|CIR$ zp69>y`Q!Y@=D%UxYut44IQC1(|E=Tf@_+4xV*ZOf=l}kO`LF6IlK+Qt{hNaSS2@am z=pDcDzp0`B*IrKaZ^re{2LJC;^iyf^-+H6SKa~8x@$Te)#Z~`zfFXa@{|)2%%Yc7D zeR4h1^vn4#@XWu=kUxw6?fCkiSs*M&-(x2T>oa^|E-SvKlJSXn;H5)HoLo`ZovumCxDf&vDCl{pP=`Z251;^}|p0Ar+^z z{NLCh=Ko0IpVL0npjmHPT=i)!(Sx15Z}|MK5S(=V3~`}ytvb;pr8 z@xKk%4?o$&_?zZ`nSZ#j@DI5DVZgumT1WZcGyegaaYXr79ZT~64qQKM*^esjvD4pj zvl##A6EXiaDbB0ww{m>R#|Ihae-{5cas68Y|5``<(IS51e=%GBJ9GW8Wi3*1O3QzB zw}|{hiNDN?9c$K`l~=s6=D!QqKOFeCIpQC9=D&z$JLbgyj$A)%S;+XC=6{)gu(0so zjq5K5{_WS<$^Vh1|0}w8XJ*>}vHi~v zAn_0Pftx{ptt0)YTXX#5Oqt$^sQ!lA$o$WNSpQtm{{-l7bEH48)ZZ56z5maQe;EIR z2!B`y@psT)GSH3xhnD*FDB72z{F(lP34hT4571xdNPo1j=s$$;hx?#Ug8p_#`q9_D zJN_B}D#9Q1KLz?r3*7jB(988V-bluOBMJX43ej_*KXjx&wA5cY!E^pQl<)`r&x8IB zNBSd6{q~tn@0&FLvFqQ%2!B`yH3sz84|3!G=o`EEuYS!B|Jsqn{|_hnVI5E_=%9lna=-3zb!9JWki$w&i_89eg6Z` zf3o?X5tx6hAC@d3q?o5koBwZ}DDHoVKGo#!DF0c{|Lo88ZwK=~9ggOIBG2HOcmT>pDn{7wB|<{!!Pf8bh)|1|5J_}wg{HUHzd{_W%W?;CLcmv!pQ+cf`| z%cI5o#{c4)?U=*=Sg!wl;9q4K|K)dx^S^-<|1FC13Q04k5%mpK+T$O*{*%rBj^g@v z0REkh_y?Z(FJa671g;;pEJi9$Y5w0K@sA|_N|KuOR(_v+V9mdV>koi``HgPkKZJ)V zwWMhkN>h(eq2_sV;{SNAAGYje{7v(}%s=e4{PFcq(NJ>zm({fA!OU>aT` zG{W2F$#`6-I;ETm{hi?db@T1`*RQgo z81J8n@n3L%a$XU?WbXhYZTr7dxc;4he{fTBJx%>T^2~p*E&o%we%P`RsW_$S55|b& zpHSkjB&%6(<@d=4*8ET7`gaEY1uxk7e@^}S`yKxRAFY2m{oiP=A0Am_{7w5mnSZdb z@IRgF-v#)0JBt6nGykOw`FCDO`u|$4A0Amj)rvfw7XS4nV*ZaL{;i7hy2}5D+UEZ= zx&B>&e^Y~-{2zMeUu4VwEUq7xEF%@CH2$q?iTr~uvHw>lC(U{*zfV4}=6^QVzZ>xH zal}9J%ztUkcBJ{A#s3*xKTKIM{-*g~=8qN@{^xT2y958qo881e8sNA8U&fF>d;a+x zt{*O0QPBgI`qvfXKa}`4f0#V3a+UuN)1LpAuK&*C`YV7xy2Vnzl%N97{Fk%ke?Hd_ zT{cp2O3VKx>x=x+zy0QaYyKB-{d)laDo6Z7&-|CS ztT+Ec@;ht(7jgZ20{<3A{3Fl&SI}%n+W)tQWc+_2*AF3!3jUd#r_)#LbSHA3qfAp4L|6kcw|5aRnCFpN<&|mPX8~=|y z>)+B=|8-pdL7=}Va-$y&@*DqK*y_KY>pvLuM~?Idp7q~itN#YB{}9k$Ji!hB(6jzq zZS~*C^;d!ZlGohmk38$Y%~tnVWU*||aTHJ5^-)^hFf$KjM^tU_GA9&WkUHoGt z8vkJaC$s*k>*68!`t)e5e?)m9ngGu~1WRE5U*P>uET4ZUn4ItDAEf#Jn>qi(fPd*k zH}M~O=D(G;|4Yw5-GcSc1^yF(f1@M*p(X#~DW3V?%K0B2^MBF}|Hw1{t!??=M&cj# zL7oi!yB+b5Ecv(Zw4UC)nMSTlDv~q*eKF_%Mb`YM>HQCR{uA}u`A;1G?N5>Xe+P+w z;NJ%Pn+o0JfApQ^{I3M5YG*(E+b$#bKQ80^zXblZiu)94^WSY{;{6W<&XgUJZHn^> zg`~DHIXpu9{s-nC-9_{_V*LlhKJe3le~%;nfhGUasrkc2oW={+merZ(E4o0RAnG_y?B!Yi4-n ze;?-$TlO&irukpyk9s+O7XJ^C_y_)P0sn%f9OZvY{&h3`@Mr6v9_0LC%Mw(l$kS=@ zUo~9J|G{#L3Gv^qIImEMhqLj!qYTIY?XQyl?-8v3K=>V;w}F4PBmR*ke`Dc>U&y)s zf0XlwDGQ|Hl*YeZ;vY%;mDO~V|4sRqokGTcu<37Hg}K20UEts9h(G#4v;UJDW|rsp zhfTj@{qg=UFl1%?P4mCZKkViF+5U&H>1(Wi1pE%vd%(Y_$W8taZ28On;P{xvKYRWG zHvOgiA!VU(+2nD0TKspFi}@cdFXsQ^kCU$}GJo8G#%jaye_cfKKWuuNiGSe#0r0PJ z#6Ps;-#FV({4@Tr=`H0CRYodKY5beE7Wsz~e=l^3Cf7ARg^ACDC|B?wL{$bPGnExBV|0CdEyR@79kDxJaT)Wv5 ze|G&3n;ysYjQjr{;9vTXUH)(1R*Zl2nYjM7LvdcKMuNJ^|Blwr|C#;InEq$D{+~d< zs-9{2uX=k){|aLNC)bx9+c*jPGJj*O|7ouO=PdoE@h|I-JjcJjerf%~?Ogv6aQ{1W zwEh7t;g|n5ntt^1^ucJ@B{0ta37&)i_bK}Mpif4@@f5Hx2e0+3@1Hp?{sr5olJec7 zabDOUJS|QYXcpMxB{%Uw{Qc)I!S>l;-#5#CCMiFMl!q;LGv!Yw_I6U9+V>;&xuiU} zWTyORVxLFKQ~Nmbci#m2@=&&Q?6#TuKTGUj68_~p{{fp`)BJZN@GqNWm;Z!60tbO- z{tcS^TW4ba9Y16Kl=rJ(PvReu@-qJ^U{B&d73@j;+emrJnev}T%2PY#KOO8bPs*9{ zm)qI&IEVij&i^Rj-|2{d=$Ze`n*7Jl#{BDl!TgJtI1tA_*pv8ACFN!Qv%sFje>T{Y z_|GBbDQC*Ros_3`%6~2?FY}*A%2PXy|JT88693)DlJQ?F=U)x{8z#Gn|Hw1{4K(?` z)Q4+M6f6EpG3;b{HKFGiT@0+C-I+2%2Upi|146T+A06pq&($J<9`k*PwkX{ zJJ?P5H;f|u$8r8g1OKiaR!tm|rj7q{@=&4Q{(mD){^RFi{#}GWjsMADPvSp?l$ZI> z1bY(ySzu4%Kbw@NoGJe~q&&4#{_UhZ&cCjXaS$NYoe#QZ-I>`DA5k@7PC>0nRdKLhMZ{AZH#lr!Z&i{;r&t>G-ecaKb<0{Eq|v-H!N2p84OT$-ngo;0%pI+x2$RPGe(x z0{?Mf9}aeUo!7PlTr`TcwPq)LjCRJajpVg#7ku1CUaNP-$35h=VK;o-8sgvYXeIS+ z-x1qs%jNK&#QBc`{!Nbfqrra1fAyODX*>K?ubrbIH~dw99R4ol9}OV+e+uV+LLC1) zIvW3Z=6|GSqeA>=o_}jATsy;|?OGBqGX|pd2EqNW7X15H3;O&UI(!i;&OJZo`}qev z|68yI;SUde#7!6XV>Q6PvdvBY4?Xig%8-BUV9Xy)!}^D}4@Bz&|IX*#@DD8c7ys;; zKRon7`JV{rcS_@6rvZ36te$GG7iS@Q4rKJW3Lx&K?fKgs{~0~r53 z`@{3U_uzF(ruRQv28+Lc7TxQYf0y?9SE>J-&HaBg_dr_AFBU!;9uv6f8d#amo5MKTt9-} zKd1bS^S{JDkmA4B@t;Td!$Uum{~5r)-4XxLGyj20D_dCjfX08(WTO9luD>7fZ&2jv zwD@nkR$TucO8kRIlk=*p_&;u?%xw)pYtjL||5N$~(GL&(Q2u8E|I*pX^-R+*|E(IU84U>uKzsX-_UNSU#?F$Xi+_Bn%v~`%g5hno`?4T zjQ@YQe)!1_q~es8|D&J8@qZ}sm+Q-pHS5jFE8dv$XZimtuK#@CU%8K)^?#w~`2SY3 z9f5!5LYeJ<(}MMn2nrDl1yP%${SN}m{SOp)otbm|{|n9^ezJo3ziIy``+v~O{h#%J z-CX|#;Qx(t-Q>T>v;Ti*>;GS4{d2+p;ZhKlEQ9qg==#^Nm-~O^bkhI*m-B}$`%#ag zpH9pF<+n=Xf64zVA5Zoxy-qSc{7*3L|JNepzi+wz3&H=p9r-_6M;!ks6=?dc^84h2 z?={bplmEZN`bX?oh~QEH)j9J2sQ3CmUjIIU`2UY2{y{$sg;DLAcs=}r#(%t-jwTWT zZCQKX_kR-m{~p4Br$PjmLa5yl|G-ke&=`3*$npQ52!GHILjhDu_P<+D{^7!+|7XH~ z=RyRRLa4)${%B#*{|n&{`r%Rtl`ZF{|3|Qylui8S!R3WhQvdI~o%DadV*Lm2Qiz}{ zMD>pJ2bTKV=K9HhO#g3K|68CRQUU68q(8LOU;Bn1{p|P8ekbw2Yas$xK;_H3@&CwD zf75OGUjL7;e=8p${{IKo{|4v>S3pfGy3vndGqv6v|D{h6{qPibT+ah{D@5Q5sIu6N z{-C$(A5F%8{jmOdpdXq7H9OKDTIw%;+fV!lFBATYVErR@FGP!hezcMs{*k5rCQtes zZX@~^#ro%h{sExB%8`Bqi|MW6|AV~q&#eD0x{CP!ru{SZjGzDb3jXWd((d`E_6g$r zZ}iGydit#z2`Vc6+o4!8C=TiTADjR99_Rm9KWy2BRPz*R^B+yWi28$-{p#1B|G>Zh z#q@u}^~07WOuy;;r>r0KTKz>C|7ZLE1l<3>10Se)3+F#m{XGN3=l{@Nn$Q0@^8XzT z{h$5*8zjBB3bFsgBg?4$ljMEc)BL~qc4_`kUjO?!Zddp-;y*|FYqX#Lk$(Sf5Z4b& z_7PIlGfjWN9g=>}{%@^+AlDB|7MXri|CjZLy<9)be~WYdMWDaRl7G9zAFU$h{}#o0 z^*Tv0WRi|f)SmyA@_!-MzclDq)icfiiyB4$4_{ohH3{8|5B#P!2Z_8?U~)8fAkN$Y=B74u)d$R z|Bod7`Q~q}e;KYHmTWTprv5MM4|}0g2Chao#s)icfi>lYLKKa}+6+yC|T#{+IIuJJzf>E3bI-yXJXl z{8#)y^smbGUk3VX72`Bh{()!xe;Dd#{8!`pF9-c~mi@nsCG@NxX+Qsq`@hB?3IEl( z{wrerigAi5|H!lc=Qa6%{YgKxZ`OY1?VBBt+5i5BjGga8KJy&B&;74pkM}dLcoB~a z&pH#^7yB2sH@_v07Yf0?9F#8|iqAWboM&*RJj^ftB91RtB;{f2jm+;{Q9oJmLUxV|%68MK>#QM?ioAO8N`OSahH2LS~Uz6*< z3iNmU*G>Nyc-G%)tA8!7|LR!3BmSXh{bOwPug&$>gZ|ELH~i7!n)m-T>rLZO_4*){ob}vEM(2ML+RZM^qG| z0$Bgj;%NO#V7dOKKJV*ar18(Xod0#ezj3S^{|`L#f66Ew_}`-t!L4A_>WDuYrkVew4y`fo z{PF!iHvhRi=MT4R*!-vI{I@*+8T8uuPn`eDJ|owE8)E(Qfd7)fzi1UV@gG?7FX_y8 z{A2!X|HBnIf4F6VN-f9#J>QG-|ABP>J5-$4)%uT9^ymLG&wm964#9tVV-o*+!aO+e zuW`gbTw8PeE5(1aZ~mKb{t&WA#VPIjx3*cl|AAK5%zv7BTWY49LsS0k|0eOjDb_z1 z_`|JG6uIJW8UJPf^c?>iasGge@i)!?GXKbP{x{{{@*s)-%}D(3RfynLASzzfP5wt) zYWlzA$-zf{__O=}Wt{&Sz`tW_aXyb$FD?FS{w~IUAjN;ZVqU>j{y)_)|Fl4rXhjRXFX7M-8|1$q@Vc|cV#6R$dsbJLZh<{|sKm0WB{4?X2)AZMWX7scCzZHr9eF_mwg`v{b-NZi{ zZrA@eb@}06b@SS|>9@xE=Z`5suw^HroECKcD;R6H{<&joyXT)x`L`TN#{b)p_y_(l z6@)@Z{6kCr<)8cE&*HzF$3JXY#rT`%e>wgU3?{X@cCA7=XU{Ph^QZZ5I}-o<79yAm zKpl?wN0$7XrrP;`PJ<{6bpH#+e_PHUmTaLeNB6%%iGR1^zLK7kD8yu$YYp>%a{=l9 zb|CQ&{NYjvm960@|Cej}f0l;$ZPk~a<3Hg1VaWr1T zM-u=06(YD4LggiH_y?B!YyOj8{)M|Nf`-BRpVnIZoY(1Oea@<2Uk>c0+u`*ybp6k2 zu^njD-MnpPoe*9BvpU%K1$+G5>?rsi{kIm_8Qv0mU2-03r{`bLSDOF2mmvIiCh-sa;ZguKIN~2!@<;#8FMp~Z(fqd)kAJvj zhk6{{{|jI;Av?4yzsv9V|8&Fr-#L+te|N+B=dV2otq=NXJr{WV3l~$_`jvhw6)HN> zuKzdH&-hO-$ka2AvkkKJFX;F$l=$oFSC&ipKwrOf|9b=O|2M?f1<7aO0NHQ&|mzj zqxko%f0C{K5nTTrpuaA1qd)Sjf3mIq{ki@-L4RA18~;Ze`i=i7w)zj?`Ws{ZKe^E# zdLI9_+3G)#>%R;1*T3e*{{zqbr`hU1i0i)_^oKt?;_q4ibX)xgbN%;#{)UNe_(z`g z&#~2i2-klv=x*!>Z@V{lByNXU1vq{6{f8~ab%iO&DB`OibK{`s2?ibEDrP76B!8SN(WS5`@?cjYN| z^PkrI599pr2mal^x#1sr=08hnM^$@M{w)40xc-f^_?zZG`R@f%{L7!SW6gTA@`^Xs z{Ey)J9{~Q9QylgGp83z#Y{wk_hjaa#0RM`k-OPVR68~z&yppT@f2M8zKZ@&biuwQH zCjJowlNJ)KLJFtPGJl|X9?GBP|7xs%B;5bn6!=q43!4AYc)RgW_b9vkZ_WQ`&i_H+ z-*T!O{|`L#e@~mgH2yi3>whTLkKE`FJ?sBaTR(pOt$aH&{wFaMkN>M+WZYhDxBqQc zDB`z=+4+CYc^n&P{ImZ57|wq)i2o`_^WUL#|GP*rudJ6O(;ML|+x&kV*Z(m1e`}kg z{@=6zzpwBAnd?86|3_i{^EV!Zh5~=eX+iUUw1=Jlw~n^U|JM9Z;QSu}{zZ$p$$tn2 zQ(8#03Z?shr{;Nb;(v!hnR>?gZ}Tkv3q1a}y#7m9nq0z~|B0Ocqrks-Q8)Yp&;0*s z$UhiN*1y$o{aeKRUvZQFg55>`FIL=F(F>Af=GoS>ZS((VuKzLMU$>YW{-J079~ts5 z{|{OJb~4sK@`yq4mKBI{TG0HDUa`yn#h2UVe{24yaQ=@2|Bn7{_(z`ke{9H~#s5iM zKRmL=_%CSwkEHm|j#c5kX1#^)Bpg`tKaJ~e2L7cp-Q>UcVp>a@R-pvJl4<*Raka)j z+W#~Dr*i%9$O@_*<;edlMExa-`^tKalrHQX+x&kz*Z()*-!RaTe$V&6ztHp}%Ae)` zGqC>orwu}|WF1jX3!49fy+!^?f>OPUuCvSk*8I=p{GR~+L4h0o;iY!^mF<-B!KYF? zs*2~V|2muN|2ya}-qel$=or8HKhxHa_kSv1ij05H;`+A+|L>UKCjSR}iuy|x>ndF3 zzjF=qU&Bvi{_7mB{~y4=))9ZSgy#N7n%q?WOzrP#@BfVXS6xH&?~3)0s4PVAC^YJF z^!yLnO5{)Lnf6-L?dSO)rvE&we=g{UM`2Opn)v?50_T5A{Uu-LUBCGIm#_2ZU$y}_ zrR&<|zoH?bfrzj|fT|6fS*ANW6X1*pf7|3{Yo-}QqXe|2UMKVjp4I{q2K z=YO}&^8W?C{+IHfSc|M9NBph*|4p9%w}Wa?|2Ney`+w+Jzp4MXtU~<%5|aP-FGTPt zAgWy3P5wtPn6^RN@tvRik5(i4FXH)cJMjN9N9$ihDgV_g&TG|3S>Z$9)@hIbasF@J zos54k=K8mXleKSUxBp+my5jgJcu5@pcjS5e)8BCX!~Fj;lK;W~;ZZo$?8yHEOaHI^ z!H@rk-DLc8Io5ypNrTY#;Q!Q57kK<*IsadGja~m|?f+MB|K9=pU*)H1nm#XrmcP5XbDS6C(H zKlyWZY|}}yFY`Cn{(mXgAHeCT|C{QU{XdfWKVDPmog@9G{?GP*tH=81g8###P^ik0 z|3{Yo-}IAb|Gz4WKlp#SqvszYssC?OtgCl5{yEQf{Bt$ezazM2*?M;KKh^7t`9GBM zf9E#I<0@DB2N;fjn${rW-|Mjc{SPce@F)ywapeE;WQt8_xBTqK|JnHGdaVEOa|WRu z!T+hBF6j6tIL~hWr{gBO@sG9t-@yHUC-8rjpQep}3hou3e+%}}mr&ox>6v;5z*|Ib09U*!K0_5Yi({t*WiB3KHDsvY@%XzBkYi>z|$T(L&-xWbj#^R>r6MVb3w)fHs^=cC0lRfy;Rhr^Gp zme;}x0eElf|E=xf_$PYO@Ac2>+WPVQR}r26YT*2L0p0bML~sr%lL0w%yazTj`hzUTYz?f_@{BYz~et@|KpteKn+s< zj|%Pd>&L(3|95i#-xcbl^3$~ZSH6kp|G~a~$A8xT--z{(IJgkOQfO4PuAA{6f}3d) zT1xy+Un~3D@&D74W__5`|J{~- z`~N*y|6K5YSPG149Ql7>>Hi(R{r|2k{^0*TuEu}+iSb{hc&^wgN#q0@LKhg0f7tqu zySe_|;k@Og$>Y@2{J)L3{v(p&zd>H06L zs^VKm`c3`6V_o9^4`TiE!2e+>G%8-t&G;v>^#7iLp8fycEdE*kZ`%KhP$7><`CtB= z9XsN0?f>_2{d+*AsQ;Vl&+&iH`c3`6VqY@<@lcljm_M@X{}@m5CY0j8x?l2nUG;w# zYWM$m{)f$fJk0g)33cyM^wVkiuWnnh{|}`6AFQ8W{eukqf5!iDtbhKxgAgp)LzL5k zUjIjyzkg7^quu=wgOP zR~?;vpWc*z=$ZduL;mdg?+LDdAK=oh$kS>1ONNT$-%yJG<{gsT)m8tuxOV=>@!xj% z5d5c~Ti7zxRJk`PUpp_&?3{w*dce zGdKAk75de`lr8^%aQ*vb@i)!?GJmwc-~Qi}KkNUW;rgEe{$)em@DDumU(S#}TmRp} z^;ZJ_svtQ}r^SD}6#tRLzhZ;rc6F8imoUu#tp9(G>wgybcRJ!9dgi~pE&u1a{t>`m z#VL({?G9r8j}Gt~|EBy||NjEl{~Yjd*gV-!)AU2r3I8I`{8zB$|18(PKPaI5P4mCZ zKj`KBS^xhc*Z(~554Lc_KRC{>|F5XcUwZy)4A*}E@NZJ&=`{bZ{dRdVl^-bTFWM=& zUlG3~gpkoep<(`K{r_05{{`UR?TCNqnSYTj|8ZRZfzaYAPHFrrw-B%Yf{}j5zoz_I z|Nj!#KL+?W4RaI!k!Su(+wyPa`VY$DZ<_yQ{-G5A%3yXh|6|IZ#sAA(|BJxCa!WV- z(eYyb%eVewZT`~y-*~S7V5nr}hIabvb`-~d=pa#lv*Nt2^8aAN{LkY5Rj$7k_@m)= z`enYMXZ|bM@{hRwLqLRzQ(FEn-bvzru*hF-A9n00{!RI__@BV_j|KiMj`#;>_|?CR zE&o@z{;DkgrukpyA4>7hc*}48BK|D?CvyGcfPZ;S@;Eik|7BT0ow)v6{+t~<(!Z=W ze?0!Lxsu%fc#Z2H8CPl}yZqN6#eXQpf0g3AuJZqqhWVex|75QJCE(v$Zl|B|ByS?m z`F~|w{!_UAL!s^}PHFyMb*wc0Kg4hTGv&|Xe=65M9{AU6<%WMS+VAzxD*F60`=7D( z507&F@W?(}|6rQ`bNt`){a^j{4|xAarvGnTKRmLBTKl=-A4&H=BgOAZxXOPQX|Mm0 z^v}ThM-Cl?V97e7^<2>PFQN4NU$TF&W2yh^I@NCdi?#mgoIfmCX8IS@{{!j%2h%IR zk@U+S>mHlxuepB+cD(|rTvrR%9a0LZ0P??|7_y_)q@bEEJW+M zp#C37`=2X0O8h%6w)1~${j)fKNLft(g8F|b@z>R_ESK_uwf;F=KZGo*ACT;)Y2zQc zdVw_mRX#BJysrHJ5?lYD%k={?q^hT>ezd3G>mO_V?OZ<~WBM1=|09XN>>un{ihpJ| zd}FFVpwGX|Ah+$>)I zM)Lf}dHMDKOZELfqrds_wQ<+;Hr79Xase6{$3Lm3ss9&@66b#-%iq5!`;I)9#2iHL zjj8@>%Kt6S|IjS`rv5MMN1o?DO!c$*ze!yGVbIic{>N0mJpU7VzW-}I|1*v2e;MX~ zYPU{~Q`7zrjq*GHwVD3>PbU7OE6DtB8`pn0@GscdPJi`*Qv6H)U#&Q=tMTtr#d>*y z{{9V{|9h9~e+Bq=pXg}*e}LclzcO3??{WP{KohDsrTKr$@lyW>ovBvWu2m?Vtv-J| z|5Y@U_yKT8|te|G)T#r01D{tesP>6bk+^c??d+VcN5*MDp*Lcu95{}mh} z_W!|Qe&gSiKa2m*x&Fz(KiI(y|Hw1{wQTu+#`PbU#osjl%luI<=g;E*ORj$k@UJ@A z&G--1`1Sv_wfRf?pMJsh9}oOnEaShZO5Fb*wTbsX!zGgMD+rxN?0=U3mNCr#?D@y9 zxc;fYzbSAN|AA-zLu~o~m+Kz|ZLi{#mj7!{mB#;v`}KcQ{w)7@bNy|=zj8-6{3Fln zpVzVF{~xaZge?B1`CsNA9O`%e*OWiY|KD)^(||wP$qoO|bNsJs$e)e>zvlXDKz_{y zcKR!8#rO}U_^-V%`Mj?3|FX9E|2wXKI`D6C#6R-Pe?43N-*f#Z0)G{!wESN*QXKzB zp7+1e=dZs1aT(nI==orkM3+p{4^5Z&uelT7|4^Mb@k@C$()%B*|NDXSp8@_~eTt*; z?}>i<{|#*Y|68vABxrZ)|EB$)?EmNpzxwt4AK(9A{ohYq|IC>G&dGV&)c*s|{MXm! zFYSN$3)epj^cU^oMn8Jb@AzjUZT;%}cX|9|%$siWU-=ZWFNWg0c}#VQr>6Oj`Twt+ z|7_qNIpQCA_WupF`Ah!)JJ&x4^w;j{$p26BoB#GO)X(_;!S%O;{*v9?=np*W-_uY( zoBu#dX2v`5?_bRY{q2tQho1HCWvHLs|Lw>1&jbCXySw2ZdA|R%x1oME{#%6We;xFP zuJn86zmK7Q7XOQK{cnK&vI;l+(P+Qwg>cH|*ia|4;Ti{vBkfzvURBe<0W20s4bIUFr85 z|BD;yXZ#De{`sK4>p?gAgOmO0U&2s7%m0J8{&!;j54qCs*Z(&))L*|JdCp{UuK!)o z-|a|$=$ZdeL;W?268%eX{qKSPrib0|4?X9JUrvRwZepkGzbH2uvNO8PzTe`u|L8Lt1#Ed8ebFY6C` zxqi0(VL7hUh>)icfigHZJU zP|^>lPX6a8|LN<;zqS6Axc>99^qcy>tRI~v=6^VK@;^uMudg59|8KZ$2zI?k z@b%w_szP+mV7UM5==YD&cAEO7RtXF8{rkr_{@M6%70&;Bs7ujR$#I(I|IJs4@gGS1 zi?2>TudDc9Njv@}{;OgAbAdnn6ewzQ#6Pg)Uoa@&{IUL)BT4_i2G&1fWFfi$^p}*n z`Tg(EQh!7K^=I}!X)h)7pB;Su2Oil$)#oSsX`27n-?NhF%F^@yMT&LB;+LdkU~qVu z{{Bz#DksG9UkUMl;C~VDuXDsdvgF^ic;5X#!@uUCwQm}h%El5bO}H4-?jnK zzc$t%U;o0CJt|f_r;(QbYfliz|AF-Ue~IG0k}GGw+%W&QZbJ00OXB~qLUa}IFWbNk z|HzVm#b7`DOP(kBe?6>!LMa%f%&*FbW9{9Id{%=#xAAYhGbt>|-Y5otT-#_Te z^ZJ)74f8*n{~Jo;|HwjgH}G$C#6Pg)-@2S9{$oh~-yG{7*9_zx}lSFYfRKaKy*c>Kebm5l#_=Ksj^ z{!ga-+5GR8B>s;oL=OP}CP(}uOa5Ie`r(g;lJUAw4>elr?%L$|8Ir$kDO2tZ`p>ZpDw8W z&@%sp+u8Mh`u>mkR}3Tkx8?BIbIx|C?SRF2j^+leaf7(R*`5(#uSLOOI1QFE# zP5VFD|HEGH|1AGKzIY}D#r;1ZWBzZdU*;dm`A;rDk0t-7X46+w|8FQK{vUAuAAtX( zN8R{8Iz`I=DnX9)mm2y%TmQU0*MAYzv83Kkf5kCk{zqqv`b)1#KCi3(Z)N@UUzznE z&ASu+J8=Dg3^f$n_5Veui26fm{;&1Q{OYgQ@BcITzkX|?e`l`$L-7CdUF`JB?j3mc z{~t8t2-M;AKf96ZpIx~Ai$R3SPt*Fpp6kTxpHT9DxqaBNX1!T?#T!%q?`bCEpIx#3 z`BMwfso?+APmRYvr%L`W{r;Dt+DMN7mcVZOW9t7k&kezUdNS<1gzA zJ^TNUntqhy|2uO1mw*WB|EB%F?EgV8_kWiEcjEd_%kqCy{YdhER4w*@vVX8+O>V5b z;*F{Qmu^S${~lcbKf(Wt9(Uva(N})we}2|%N9zCV`H$VX{t()>LorTCi~ojtG5phe+AcH3;rKnm0Zs>{S|kJ{U3tG6xm4H^1S~48pH8V zJN5s)x&Dv9|07ra?>YbflHJ&U;w?G;zYo`cDSS`mr)m7lt`Yq|I7j5KtdeHEmER{H znEHRgqs0IB#rj9SR)9_i|EGRxI{v9SP1GO4Vqz_6QlWuSO z`E_>s+ok*;O8y^QpL|}uBq4ZA;=!thljyLglAv`kOx&$G?%} z|8o1VV@LVV)c+eJGX6OP>mT_;LHx)zqJC;R{;4=!^#Ax_3N2|;p{7c^@sFwhv+++A z=l?1Ae}^OgM=+TnNn^-`H(G^+ZzLXUrS1Rt`8SsT4&?gbl9ll{?f+%|p_Km;D;*mh z={M!i_P;!g>;DY+*Z;!1 zm;WQ#Pt*Kg{=1>)_}|Gk{*UDPuLcpSI8D>v@})Tb38na#+lL(|B^&mk{u}-Hm;Aq) z>xU{Mm7k{RZ#qW${b$Mll}a4xH}!wE|NGHg|G&ZigD2hif8^Q!ch>fQiT~kTe_a-T z)A5hYKj`KB+4%Q3uK#o3-|dJ$f}06iuB}x_89nTSZMFH6^%SI6sQffdfAE#q{|AsvwL)8~klebt$JYK| z!}XsJ{;%@WRQ->M{vZC!@A%);|JnTCiCq7e;Q!4}yYc_fv;S{z=>LuTk^Db!0K5KM z8Lt1DZnnGrtGHC$|0}5V%l{4i>%YwPPxlgJ{&yS9e?)a5dJLX_i5xxu5?DU}(y+3h z=U>?VH>YC#b3y;#K!5WlZk~UPEcG|7l5hRe_~&E3{`c zaQ}1~@&BU>(UZU*ZR&{|NjH|zpBMe{*OHW{>u)A z`Je57dJ@-vJ+LU=z;6Dl?Ruℑ67vIk{c+21$~WBpj}xKmO17KYRZ7bdvwT|DOi` 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
OYhO+uS`PRIm%pL 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ℜfj>nthr$XneTu!Ft1F+xR1NHt( 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

eqotI(%kCzg}`nB>cN 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

  • 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 u`Si0>_Y{l{|M Date: Fri, 13 Jun 2014 15:37:04 -0400 Subject: [PATCH 35/63] fix some buggy behaviour with scrolling --- src/line_info.c | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/src/line_info.c b/src/line_info.c index 380f225..ddb6a52 100644 --- a/src/line_info.c +++ b/src/line_info.c @@ -52,19 +52,21 @@ void line_info_init(struct history *hst) } /* resets line_start */ -static void line_info_reset_start(struct history *hst) +static void line_info_reset_start(ToxWindow *self, struct history *hst) { + int y2, x2; + getmaxyx(self->window, y2, x2); + struct line_info *line = hst->line_end; - uint32_t start_id = hst->start_id; - - while (line) { - if (line->id == start_id) { - hst->line_start = line->next; - break; - } + uint16_t lncnt = 0; + int offst = self->is_groupchat ? SIDEBAR_WIDTH : 0; + while (line->prev && lncnt < (y2 - CHATBOX_HEIGHT - 3)) { line = line->prev; + lncnt += (1 + line->len / (x2 - offst)); } + + hst->line_start = line; } void line_info_cleanup(struct history *hst) @@ -418,7 +420,7 @@ bool line_info_onKey(ToxWindow *self, wint_t key) break; case KEY_END: - line_info_reset_start(hst); + line_info_reset_start(self, hst); break; default: From a0ef4d752faac63cba99828122d6575b7fd433ab Mon Sep 17 00:00:00 2001 From: Jfreegman Date: Fri, 13 Jun 2014 17:37:11 -0400 Subject: [PATCH 36/63] small fix --- src/line_info.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/line_info.c b/src/line_info.c index ddb6a52..0297429 100644 --- a/src/line_info.c +++ b/src/line_info.c @@ -59,11 +59,13 @@ static void line_info_reset_start(ToxWindow *self, struct history *hst) struct line_info *line = hst->line_end; uint16_t lncnt = 0; - int offst = self->is_groupchat ? SIDEBAR_WIDTH : 0; + int side_offst = self->is_groupchat ? SIDEBAR_WIDTH : 0; + int top_offst = self->is_chat ? 4 : 1; /* leave one blank space at bottom */ + int max_y = (y2 - CHATBOX_HEIGHT - top_offst); - while (line->prev && lncnt < (y2 - CHATBOX_HEIGHT - 3)) { + while (line->prev && lncnt < max_y) { line = line->prev; - lncnt += (1 + line->len / (x2 - offst)); + lncnt += (1 + line->len / (x2 - side_offst)); } hst->line_start = line; From a51672476000a1b3b251f46371ab0f980d99a9e8 Mon Sep 17 00:00:00 2001 From: Jfreegman Date: Fri, 13 Jun 2014 19:05:25 -0400 Subject: [PATCH 37/63] fix bug --- src/chat.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/chat.c b/src/chat.c index 6331884..a902f84 100644 --- a/src/chat.c +++ b/src/chat.c @@ -868,7 +868,6 @@ static void chat_onInit(ToxWindow *self, Tox *m) statusbar->topline = subwin(self->window, 2, x2, 0, 0); ctx->history = subwin(self->window, y2 - CHATBOX_HEIGHT + 1, x2, 0, 0); - scrollok(ctx->history, 1); ctx->linewin = subwin(self->window, CHATBOX_HEIGHT, x2, y2 - CHATBOX_HEIGHT, 0); ctx->hst = malloc(sizeof(struct history)); From 9240295724a5b7cd9a8e092bc96f2a047e297bf2 Mon Sep 17 00:00:00 2001 From: jin-eld Date: Sat, 14 Jun 2014 01:53:06 +0200 Subject: [PATCH 38/63] Search for OpenAL framework on OSX if pkg-config does not find OpenAL on OSX, do a manual search for the OpenAL framework. references #140 --- configure.ac | 63 ++++++++++++++++++++++++++++++++++------------------ 1 file changed, 42 insertions(+), 21 deletions(-) diff --git a/configure.ac b/configure.ac index 075b702..59f976f 100644 --- a/configure.ac +++ b/configure.ac @@ -37,7 +37,7 @@ if test -n "$DEPSEARCH"; then CFLAGS="$CFLAGS -I$DEPSEARCH/include" CPPFLAGS="$CPPFLAGS -I$DEPSEARCH/include" LDFLAGS="$LDFLAGS -L$DEPSEARCH/lib" - export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:$DEPSEARCH/lib/pkgconfig + export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:$DEPSEARCH/lib/pkgconfig:/usr/local/lib/pkgconfig fi AC_ARG_WITH(libtoxcore-headers, @@ -77,11 +77,15 @@ AC_ARG_WITH(libsodium-libs, ) WIN32=no +MACH=no AC_CANONICAL_HOST case $host_os in *mingw*) WIN32="yes" ;; + darwin*) + MACH=yes + ;; *freebsd*) LDFLAGS="$LDFLAGS -L/usr/local/lib" CFLAGS="$CFLAGS -I/usr/local/include" @@ -422,29 +426,46 @@ AC_ARG_ENABLE([av], if test "x$BUILD_AV" = "xyes"; then PKG_CHECK_MODULES([OPENAL], [openal], - [ - export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig - - PKG_CHECK_MODULES([LIBTOXAV], [libtoxav], - [ - AC_CHECK_HEADER([tox/toxav.h], - [ - # Place define for audio support - AC_DEFINE([_SUPPORT_AUDIO], [], [Is audio supported]) - AC_MSG_NOTICE([Building with audio support]) - ], - [ - AC_MSG_NOTICE([No A/V headers; disabling A/V support]) - BUILD_AV="no" - ],) - ], - [ - AC_MSG_NOTICE([No A/V library; disabling A/V support]) + [], + [ + if test "x$MACH" = "xyes"; then + CFLAGS="$CFLAGS -framework OpenAL" + AC_CHECK_HEADER([OpenAL/al.h], + [ + OPENAL_CFLAGS="-framework OpenAL" + OPENAL_LIBS="-framework OpenAL" + AC_SUBST(OPENAL_CFLAGS) + AC_SUBST(OPENAL_LIBS) + ], + [ + AC_MSG_NOTICE([No openal framework; disabling A/V support]) + BUILD_AV="no" + ] + ) + CFLAGS="$CFLAGS_SAVE" + else + AC_MSG_NOTICE([No openal library; disabling A/V support]) BUILD_AV="no" - ]) + fi + ]) +fi + +if test "x$BUILD_AV" = "xyes"; then + PKG_CHECK_MODULES([LIBTOXAV], [libtoxav], + [ + AC_CHECK_HEADER([tox/toxav.h], + [ + # Place define for audio support + AC_DEFINE([_SUPPORT_AUDIO], [], [Is audio supported]) + AC_MSG_NOTICE([Building with audio support]) + ], + [ + AC_MSG_NOTICE([No A/V headers; disabling A/V support]) + BUILD_AV="no" + ],) ], [ - AC_MSG_NOTICE([No openal library; disabling A/V support]) + AC_MSG_NOTICE([No A/V library; disabling A/V support]) BUILD_AV="no" ]) fi From ce2d371c4bf0b4e195ad624f939c7f66caf7fc25 Mon Sep 17 00:00:00 2001 From: Jfreegman Date: Sat, 14 Jun 2014 01:43:59 -0400 Subject: [PATCH 39/63] more fixes for line printing/scrolling --- src/chat.c | 13 +++---- src/chat_commands.c | 2 +- src/global_commands.c | 6 ++-- src/groupchat.c | 5 +-- src/line_info.c | 80 ++++++++++++++++++++++++++++++------------- src/line_info.h | 6 ++-- 6 files changed, 75 insertions(+), 37 deletions(-) diff --git a/src/chat.c b/src/chat.c index a902f84..be5eb4a 100644 --- a/src/chat.c +++ b/src/chat.c @@ -409,8 +409,9 @@ static void chat_onGroupInvite(ToxWindow *self, Tox *m, int32_t friendnumber, ui n_len = MIN(n_len, TOXIC_MAX_NAME_LENGTH - 1); name[n_len] = '\0'; - snprintf(msg, sizeof(msg), "%s has invited you to a group chat.\n" - "Type \"/join\" to join the chat.", name); + snprintf(msg, sizeof(msg), "%s has invited you to a group chat.", name); + line_info_add(self, NULL, NULL, NULL, msg, SYS_MSG, 0, 0); + snprintf(msg, sizeof(msg), "Type \"/join\" to join the chat.", name); line_info_add(self, NULL, NULL, NULL, msg, SYS_MSG, 0, 0); memcpy(friends[friendnumber].pending_groupchat, group_pub_key, TOX_CLIENT_ID_SIZE); @@ -429,7 +430,7 @@ void chat_onInvite (ToxWindow *self, ToxAv *av, int call_index) self->call_index = call_index; - line_info_add(self, NULL, NULL, NULL, "Incoming audio call!\nType: \"/answer\" or \"/reject\"", SYS_MSG, 0, 0); + line_info_add(self, NULL, NULL, NULL, "Incoming audio call! Type: \"/answer\" or \"/reject\"", SYS_MSG, 0, 0); alert_window(self, WINDOW_ALERT_0, true); } @@ -439,7 +440,7 @@ void chat_onRinging (ToxWindow *self, ToxAv *av, int call_index) if ( self->call_index != call_index || self->num != toxav_get_peer_id(av, call_index, 0)) return; - line_info_add(self, NULL, NULL, NULL, "Ringing...\n\"cancel\" ?", SYS_MSG, 0, 0); + line_info_add(self, NULL, NULL, NULL, "Ringing...\"cancel\" ?", SYS_MSG, 0, 0); } void chat_onStarting (ToxWindow *self, ToxAv *av, int call_index) @@ -447,7 +448,7 @@ void chat_onStarting (ToxWindow *self, ToxAv *av, int call_index) if ( self->call_index != call_index || self->num != toxav_get_peer_id(av, call_index, 0)) return; - line_info_add(self, NULL, NULL, NULL, "Call started!\nType: \"/hangup\" to end it.", SYS_MSG, 0, 0); + line_info_add(self, NULL, NULL, NULL, "Call started! Type: \"/hangup\" to end it.", SYS_MSG, 0, 0); } void chat_onEnding (ToxWindow *self, ToxAv *av, int call_index) @@ -471,7 +472,7 @@ void chat_onStart (ToxWindow *self, ToxAv *av, int call_index) if ( self->call_index != call_index || self->num != toxav_get_peer_id(av, call_index, 0)) return; - line_info_add(self, NULL, NULL, NULL, "Call started!\nType: \"/hangup\" to end it.", SYS_MSG, 0, 0); + line_info_add(self, NULL, NULL, NULL, "Call started! Type: \"/hangup\" to end it.", SYS_MSG, 0, 0); } void chat_onCancel (ToxWindow *self, ToxAv *av, int call_index) diff --git a/src/chat_commands.c b/src/chat_commands.c index 3e70ea1..fc4e1c6 100644 --- a/src/chat_commands.c +++ b/src/chat_commands.c @@ -186,7 +186,7 @@ void cmd_savefile(WINDOW *window, ToxWindow *self, Tox *m, int argc, char (*argv uint8_t msg[MAX_STR_SIZE]; snprintf(msg, sizeof(msg), "Saving file as: '%s' (%.1f%%)", filename, 0.0); line_info_add(self, NULL, NULL, NULL, msg, SYS_MSG, 0, 0); - friends[self->num].file_receiver.line_id[filenum] = self->chatwin->hst->line_end->id; + friends[self->num].file_receiver.line_id[filenum] = self->chatwin->hst->line_end->id + 1; if ((friends[self->num].file_receiver.files[filenum] = fopen(filename, "a")) == NULL) { errmsg = "* Error writing to file."; diff --git a/src/global_commands.c b/src/global_commands.c index 9221e90..9763070 100644 --- a/src/global_commands.c +++ b/src/global_commands.c @@ -423,9 +423,11 @@ void cmd_prompt_help(WINDOW *window, ToxWindow *self, Tox *m, int argc, char (*a for (i = 0; i < NUMLINES; ++i) line_info_add(self, NULL, NULL, NULL, lines[i], SYS_MSG, 0, 0); - msg = " * Argument messages must be enclosed in quotation marks.\n" - " * Use ctrl-o and ctrl-p to navigate through the tabs.\n"; + msg = " * Argument messages must be enclosed in quotation marks."; line_info_add(self, NULL, NULL, NULL, msg, SYS_MSG, 1, CYAN); + msg = " * Use ctrl-o and ctrl-p to navigate through the tabs."; + line_info_add(self, NULL, NULL, NULL, msg, SYS_MSG, 1, CYAN); + line_info_add(self, NULL, NULL, NULL, "", SYS_MSG, 0, 0); hst->line_start = start; } diff --git a/src/groupchat.c b/src/groupchat.c index d888714..fe78c1e 100644 --- a/src/groupchat.c +++ b/src/groupchat.c @@ -149,10 +149,11 @@ static void print_groupchat_help(ToxWindow *self) msg = " * Use Page Up/Page Down keys to scroll chat history"; line_info_add(self, NULL, NULL, NULL, msg, SYS_MSG, 1, CYAN); - msg = " * Scroll peer list with the ctrl-] and ctrl-[ keys.\n"; + msg = " * Scroll peer list with the ctrl-] and ctrl-[ keys."; line_info_add(self, NULL, NULL, NULL, msg, SYS_MSG, 1, CYAN); - msg = " * Notice, some friends will be missing names while finding peers\n"; + msg = " * Notice, some friends will be missing names while finding peers"; line_info_add(self, NULL, NULL, NULL, msg, SYS_MSG, 1, 0); + line_info_add(self, NULL, NULL, NULL, "", SYS_MSG, 0, 0); hst->line_start = start; } diff --git a/src/line_info.c b/src/line_info.c index 0297429..4c13e9b 100644 --- a/src/line_info.c +++ b/src/line_info.c @@ -49,6 +49,7 @@ void line_info_init(struct history *hst) memset(hst->line_root, 0, sizeof(struct line_info)); hst->line_start = hst->line_root; hst->line_end = hst->line_start; + hst->queue_sz = 0; } /* resets line_start */ @@ -60,7 +61,7 @@ static void line_info_reset_start(ToxWindow *self, struct history *hst) struct line_info *line = hst->line_end; uint16_t lncnt = 0; int side_offst = self->is_groupchat ? SIDEBAR_WIDTH : 0; - int top_offst = self->is_chat ? 4 : 1; /* leave one blank space at bottom */ + int top_offst = self->is_chat ? 3 : 0; int max_y = (y2 - CHATBOX_HEIGHT - top_offst); while (line->prev && lncnt < max_y) { @@ -98,6 +99,33 @@ static void line_info_root_fwd(struct history *hst) hst->line_root = tmp; } +/* adds a line_info line to queue */ +static void line_info_add_queue(struct history *hst, struct line_info *line) +{ + if (hst->queue_sz >= MAX_QUEUE) + return; + + hst->queue[hst->queue_sz++] = line; +} + +/* returns ptr to queue item 0 and removes it from queue */ +static struct line_info *line_info_ret_queue(struct history *hst) +{ + if (hst->queue_sz <= 0) + return NULL; + + struct line_info *ret = hst->queue[0]; + + int i; + + for (i = 0; i < hst->queue_sz; ++i) + hst->queue[i] = hst->queue[i + 1]; + + --hst->queue_sz; + + return ret; +} + void line_info_add(ToxWindow *self, uint8_t *tmstmp, uint8_t *name1, uint8_t *name2, uint8_t *msg, uint8_t type, uint8_t bold, uint8_t colour) { @@ -149,24 +177,28 @@ void line_info_add(ToxWindow *self, uint8_t *tmstmp, uint8_t *name1, uint8_t *na new_line->type = type; new_line->bold = bold; new_line->colour = colour; - new_line->id = hst->line_end->id + 1; - new_line->prev = hst->line_end; - hst->line_end->next = new_line; - hst->line_end = new_line; + line_info_add_queue(hst, new_line); +} + +/* adds a single queue item to hst if possible. only called once per call to line_info_print() */ +static void line_info_check_queue(ToxWindow *self) +{ + struct history *hst = self->chatwin->hst; + struct line_info *line = line_info_ret_queue(hst); + + if (line == NULL) + return; if (++hst->line_items > user_settings->history_size) { --hst->line_items; line_info_root_fwd(hst); } - int newlines = 0; - int i; - - for (i = 0; msg[i]; ++i) { - if (msg[i] == '\n') - ++newlines; - } + line->id = hst->line_end->id + 1; + line->prev = hst->line_end; + hst->line_end->next = line; + hst->line_end = line; int y, y2, x, x2; getmaxyx(self->window, y2, x2); @@ -176,17 +208,14 @@ void line_info_add(ToxWindow *self, uint8_t *tmstmp, uint8_t *name1, uint8_t *na return; int offst = self->is_groupchat ? SIDEBAR_WIDTH : 0; /* offset width of groupchat sidebar */ - int lines = (1 + newlines + (len / (x2 - offst))); - hst->queue_lns += lines; - ++hst->queue; - + int lines = 1 + (line->len / (x2 - offst)); int max_y = self->is_prompt ? y2 : y2 - CHATBOX_HEIGHT; /* move line_start forward proportionate to the number of new lines */ - if (y + hst->queue_lns - hst->queue >= max_y) { + if (y >= max_y) { while (lines > 0) { ++hst->start_id; - lines -= (1 + hst->line_start->len / (x2 - offst)); + lines -= 1 + (hst->line_start->len / (x2 - offst)); if (hst->line_start->next) hst->line_start = hst->line_start->next; @@ -201,11 +230,12 @@ void line_info_print(ToxWindow *self) if (ctx == NULL) return; + struct history *hst = ctx->hst; + + /* Only allow one new item to be added to chat window per call to this function */ + line_info_check_queue(self); + WINDOW *win = ctx->history; - - ctx->hst->queue = 0; - ctx->hst->queue_lns = 0; - wclear(win); int y2, x2; getmaxyx(self->window, y2, x2); @@ -221,7 +251,7 @@ void line_info_print(ToxWindow *self) else wmove(win, 2, 0); - struct line_info *line = ctx->hst->line_start->next; + struct line_info *line = hst->line_start->next; int offst = self->is_groupchat ? SIDEBAR_WIDTH : 0; int numlines = 0; @@ -337,6 +367,10 @@ void line_info_print(ToxWindow *self) line = line->next; } + + /* keep calling until queue is empty */ + if (hst->queue_sz > 0) + line_info_print(self); } void line_info_set(ToxWindow *self, uint32_t id, uint8_t *msg) diff --git a/src/line_info.h b/src/line_info.h index 86bd194..f44a47d 100644 --- a/src/line_info.h +++ b/src/line_info.h @@ -28,6 +28,7 @@ #define MAX_HISTORY 10000 #define MIN_HISTORY 20 +#define MAX_QUEUE 32 enum { SYS_MSG, @@ -62,9 +63,8 @@ struct history { uint32_t start_id; /* keeps track of where line_start should be when at bottom of history */ uint32_t line_items; - /* keeps track of lines added between window refreshes */ - uint32_t queue; - uint32_t queue_lns; + struct line_info *queue[MAX_QUEUE]; + int queue_sz; /* -1 if no queue items */ }; /* adds a line to history (also moves line_start and/or line_root forward if necessary) */ From 1b5da956e539fe360d0adf6557a595ace231c8f0 Mon Sep 17 00:00:00 2001 From: Jfreegman Date: Sat, 14 Jun 2014 02:54:58 -0400 Subject: [PATCH 40/63] more fixes --- src/line_info.c | 23 +++++++++++++---------- src/line_info.h | 4 ++-- 2 files changed, 15 insertions(+), 12 deletions(-) diff --git a/src/line_info.c b/src/line_info.c index 4c13e9b..98774b6 100644 --- a/src/line_info.c +++ b/src/line_info.c @@ -156,6 +156,13 @@ void line_info_add(ToxWindow *self, uint8_t *tmstmp, uint8_t *name1, uint8_t *na if (msg) { snprintf(new_line->msg, sizeof(new_line->msg), "%s", msg); len += strlen(new_line->msg); + + int i; + + for (i = 0; msg[i]; ++i) { + if (msg[i] == '\n') + ++new_line->newlines; + } } if (tmstmp) { @@ -190,10 +197,8 @@ static void line_info_check_queue(ToxWindow *self) if (line == NULL) return; - if (++hst->line_items > user_settings->history_size) { - --hst->line_items; + if (hst->start_id > user_settings->history_size) line_info_root_fwd(hst); - } line->id = hst->line_end->id + 1; line->prev = hst->line_end; @@ -208,17 +213,15 @@ static void line_info_check_queue(ToxWindow *self) return; int offst = self->is_groupchat ? SIDEBAR_WIDTH : 0; /* offset width of groupchat sidebar */ - int lines = 1 + (line->len / (x2 - offst)); + int lines = 1 + line->newlines + (line->len / (x2 - offst)); int max_y = self->is_prompt ? y2 : y2 - CHATBOX_HEIGHT; /* move line_start forward proportionate to the number of new lines */ - if (y >= max_y) { - while (lines > 0) { + if (y + lines - 1 >= max_y) { + while (lines > 0 && hst->line_start->next) { + lines -= 1 + hst->line_start->newlines + (hst->line_start->len / (x2 - offst)); + hst->line_start = hst->line_start->next; ++hst->start_id; - lines -= 1 + (hst->line_start->len / (x2 - offst)); - - if (hst->line_start->next) - hst->line_start = hst->line_start->next; } } } diff --git a/src/line_info.h b/src/line_info.h index f44a47d..84b0eba 100644 --- a/src/line_info.h +++ b/src/line_info.h @@ -50,6 +50,7 @@ struct line_info { uint8_t colour; uint32_t id; uint16_t len; /* combined len of all strings */ + uint8_t newlines; struct line_info *prev; struct line_info *next; @@ -61,10 +62,9 @@ struct history { struct line_info *line_start; /* the first line we want to start printing at */ struct line_info *line_end; uint32_t start_id; /* keeps track of where line_start should be when at bottom of history */ - uint32_t line_items; struct line_info *queue[MAX_QUEUE]; - int queue_sz; /* -1 if no queue items */ + int queue_sz; }; /* adds a line to history (also moves line_start and/or line_root forward if necessary) */ From 499c66f4113b65a2e0f62c49928156788f338b82 Mon Sep 17 00:00:00 2001 From: Jfreegman Date: Sat, 14 Jun 2014 13:54:21 -0400 Subject: [PATCH 41/63] include config header --- src/settings.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/settings.c b/src/settings.c index 723f40f..47ecaca 100644 --- a/src/settings.c +++ b/src/settings.c @@ -20,6 +20,10 @@ * */ +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + #include #include @@ -28,7 +32,7 @@ #include "configdir.h" #ifdef _SUPPORT_AUDIO - #include "audio_call.h" +#include "audio_call.h" #endif #include "settings.h" From 2c4f0d593da344095bed55f6b5b4d3c0fd5eef51 Mon Sep 17 00:00:00 2001 From: Jfreegman Date: Sat, 14 Jun 2014 14:09:20 -0400 Subject: [PATCH 42/63] fix len values --- src/line_info.c | 9 +++++++++ src/line_info.h | 2 +- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/src/line_info.c b/src/line_info.c index 98774b6..b79b61c 100644 --- a/src/line_info.c +++ b/src/line_info.c @@ -126,6 +126,7 @@ static struct line_info *line_info_ret_queue(struct history *hst) return ret; } +/* creates new line_info line and puts it in the queue */ void line_info_add(ToxWindow *self, uint8_t *tmstmp, uint8_t *name1, uint8_t *name2, uint8_t *msg, uint8_t type, uint8_t bold, uint8_t colour) { @@ -145,9 +146,17 @@ void line_info_add(ToxWindow *self, uint8_t *tmstmp, uint8_t *name1, uint8_t *na /* for type-specific formatting in print function */ switch (type) { case ACTION: + case CONNECTION: len += 3; break; + case SYS_MSG: + break; + + case PROMPT: + ++len; + break; + default: len += 2; break; diff --git a/src/line_info.h b/src/line_info.h index 84b0eba..b04f7cc 100644 --- a/src/line_info.h +++ b/src/line_info.h @@ -67,7 +67,7 @@ struct history { int queue_sz; }; -/* adds a line to history (also moves line_start and/or line_root forward if necessary) */ +/* creates new line_info line and puts it in the queue */ void line_info_add(ToxWindow *self, uint8_t *tmstmp, uint8_t *name1, uint8_t *name2, uint8_t *msg, uint8_t type, uint8_t bold, uint8_t colour); From 53cb4b0248bc988b60572ce499bf58b300fdaf6b Mon Sep 17 00:00:00 2001 From: Jfreegman Date: Sun, 15 Jun 2014 15:36:29 -0400 Subject: [PATCH 43/63] ignore ^C --- src/toxic.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/toxic.c b/src/toxic.c index d9e5bbf..924f031 100644 --- a/src/toxic.c +++ b/src/toxic.c @@ -439,6 +439,11 @@ void exit_toxic(Tox *m) exit(EXIT_SUCCESS); } +void ignore_SIGINT(int sig) +{ + return; +} + static void do_toxic(Tox *m, ToxWindow *prompt) { pthread_mutex_lock(&Winthread.lock); @@ -628,6 +633,7 @@ int main(int argc, char *argv[]) sort_friendlist_index(); prompt_init_statusbar(prompt, m); + signal(SIGINT, ignore_SIGINT); while (true) { update_unix_time(); From 1456cef99178b939813c5b7b3db8eb24e94bf4a2 Mon Sep 17 00:00:00 2001 From: Jfreegman Date: Mon, 16 Jun 2014 21:22:26 -0400 Subject: [PATCH 44/63] implement toxdns3 username lookups --- build/Makefile.am | 10 +- configure.ac | 13 +++ src/dns.c | 237 ++++++++++++++++++++++++++++++++++++++++++ src/dns.h | 25 +++++ src/execute.c | 1 + src/global_commands.c | 47 ++++----- src/global_commands.h | 1 + src/misc_tools.h | 5 + src/toxic | Bin 2852016 -> 0 bytes src/toxic.c | 13 +-- 10 files changed, 319 insertions(+), 33 deletions(-) create mode 100644 src/dns.c create mode 100644 src/dns.h delete mode 100644 src/toxic diff --git a/build/Makefile.am b/build/Makefile.am index 0a07e55..0bb356d 100644 --- a/build/Makefile.am +++ b/build/Makefile.am @@ -34,13 +34,16 @@ toxic_SOURCES = $(top_srcdir)/src/toxic.c \ $(top_srcdir)/src/line_info.c \ $(top_srcdir)/src/line_info.h \ $(top_srcdir)/src/settings.c \ - $(top_srcdir)/src/settings.h + $(top_srcdir)/src/settings.h \ + $(top_srcdir)/src/dns.c \ + $(top_srcdir)/src/dns.h toxic_CFLAGS = -I$(top_srcdir) \ $(NCURSES_CFLAGS) \ $(LIBSODIUM_CFLAGS) \ $(LIBTOXCORE_CFLAGS) \ - $(PTHREAD_CFLAGS) + $(PTHREAD_CFLAGS) \ + $(LRESOLV_CFLAGS) toxic_CPPFLAGS = '-DTOXICVER="$(TOXIC_VERSION)"' @@ -50,7 +53,8 @@ toxic_LDADD = $(LIBTOXCORE_LDFLAGS) \ $(LIBTOXCORE_LIBS) \ $(LIBSODIUM_LIBS) \ $(WINSOCK2_LIBS) \ - $(PTHREAD_LIBS) + $(PTHREAD_LIBS) \ + $(LRESOLV_LIBS) # For audio support diff --git a/configure.ac b/configure.ac index 59f976f..0559a17 100644 --- a/configure.ac +++ b/configure.ac @@ -387,6 +387,19 @@ if test "x$LIBTOXCORE_FOUND" = "xno"; then AC_SUBST(LIBTOXCORE_LDFLAGS) fi +PKG_CHECK_MODULES([LRESOLV], [lresolv], +[], +[ + AC_CHECK_HEADER([resolv.h], + [ + LRESOLV_CFLAGS="-lresolv" + LRESOLV_LIBS="-lresolv" + AC_SUBST(LRESOLV_CFLAGS) + AC_SUBST(LRESOLV_LIBS) + ], + [] + ) +]) #### #### A/V Stuff diff --git a/src/dns.c b/src/dns.c new file mode 100644 index 0000000..30ff783 --- /dev/null +++ b/src/dns.c @@ -0,0 +1,237 @@ +/* dns.c + * + * + * Copyright (C) 2014 Toxic All Rights Reserved. + * + * This file is part of Toxic. + * + * Toxic is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Toxic is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Toxic. If not, see . + * + */ + +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +#include +#include +#include +#include +#include + +#include + +#include "toxic.h" +#include "windows.h" +#include "line_info.h" +#include "dns.h" + +#define MAX_DNS_REQST_SIZE 256 +#define NUM_DNS3_SERVERS 1 /* must correspond to number of items in dns3_servers array */ +#define TOX_DNS3_TXT_PREFIX "v=tox3;id=" +#define DNS3_KEY_SZ 32 + +static struct dns3_server { + uint8_t *name; + uint8_t key[DNS3_KEY_SZ]; +} dns3_servers[] = { + { + "utox.org", + { + 0xD3, 0x15, 0x4F, 0x65, 0xD2, 0x8A, 0x5B, 0x41, 0xA0, 0x5D, 0x4A, 0xC7, 0xE4, 0xB3, 0x9C, 0x6B, + 0x1C, 0x23, 0x3C, 0xC8, 0x57, 0xFB, 0x36, 0x5C, 0x56, 0xE8, 0x39, 0x27, 0x37, 0x46, 0x2A, 0x12 + } + }, +}; + +static int dns_error(ToxWindow *self, uint8_t *errmsg, void *dns_obj) +{ + uint8_t msg[MAX_STR_SIZE]; + snprintf(msg, sizeof(msg), "DNS lookup failed: %s", errmsg); + line_info_add(self, NULL, NULL, NULL, msg, SYS_MSG, 0, 0); + + if (dns_obj) + tox_dns3_kill(dns_obj); + + return -1; +} + +/* puts TXT from dns response in buf */ +static int parse_dns_response(ToxWindow *self, u_char *answer, int ans_len, uint8_t *buf) +{ + uint8_t *ans_pt = answer + sizeof(HEADER); + uint8_t *ans_end = answer + ans_len; + uint8_t exp_ans[PACKETSZ]; + + int len = dn_expand(answer, ans_end, ans_pt, exp_ans, sizeof(exp_ans)); + + if (len == -1) + return dns_error(self, "dn_expand failed.", NULL); + + ans_pt += len; + + if (ans_pt > ans_end - 4) + return dns_error(self, "Reply was too short.", NULL); + + int type; + GETSHORT(type, ans_pt); + + if (type != T_TXT) + return dns_error(self, "Broken reply.", NULL); + + + ans_pt += INT16SZ; /* class */ + uint32_t size = 0; + + /* recurse through CNAME rr's */ + do { + ans_pt += size; + len = dn_expand(answer, ans_end, ans_pt, exp_ans, sizeof(exp_ans)); + + if (len == -1) + return dns_error(self, "Second dn_expand failed.", NULL); + + ans_pt += len; + + if (ans_pt > ans_end - 10) + return dns_error(self, "Reply was too short.", NULL); + + GETSHORT(type, ans_pt); + ans_pt += INT16SZ; + ans_pt += 4; + GETSHORT(size, ans_pt); + + if (ans_pt + size < answer || ans_pt + size > ans_end) + return dns_error(self, "RR overflow.", NULL); + + } while (type == T_CNAME); + + if (type != T_TXT) + return dns_error(self, "Not a TXT record.", NULL); + + uint32_t txt_len = *ans_pt; + + if (!size || txt_len >= size || !txt_len) { + uint8_t errmsg[MAX_STR_SIZE]; + snprintf(errmsg, sizeof(errmsg), "No record found.", txt_len, size); + return dns_error(self, errmsg, NULL); + } + + ans_pt++; + ans_pt[txt_len] = '\0'; + memcpy(buf, ans_pt, txt_len + 1); + + return 0; +} + +/* Takes address addr in the form "username@domain", puts the username in namebuf, + and the domain in dombuf. + + return length of username on success, -1 on failure */ +static int parse_addr(uint8_t *addr, uint8_t *namebuf, uint8_t *dombuf) +{ + uint8_t tmpaddr[MAX_STR_SIZE]; + uint8_t *tmpname, *tmpdom; + + strcpy(tmpaddr, addr); + tmpname = strtok(tmpaddr, "@"); + tmpdom = strtok(NULL, ""); + + if (tmpname == NULL || tmpdom == NULL) + return -1; + + strcpy(namebuf, tmpname); + strcpy(dombuf, tmpdom); + + return strlen(namebuf); +} + +/* Does DNS lookup for addr and puts resulting tox id in id_bin. + Return 0 on success, -1 on failure. */ +int dns3_lookup(ToxWindow *self, uint8_t *id_bin, uint8_t *addr, uint16_t addr_len) +{ + if (addr_len >= MAX_STR_SIZE) + return dns_error(self, "Address too long.", NULL); + + uint8_t domain[MAX_STR_SIZE]; + uint8_t name[MAX_STR_SIZE]; + + int namelen = parse_addr(addr, name, domain); + + if (namelen == -1) + return dns_error(self, "Address must be in the form username@domain", NULL); + + /* get domain name/pub key */ + uint8_t *DNS_pubkey, *domname = NULL; + int i; + + for (i = 0; i < NUM_DNS3_SERVERS; ++i) { + if (strcmp(dns3_servers[i].name, domain) == 0) { + DNS_pubkey = dns3_servers[i].key; + domname = dns3_servers[i].name; + break; + } + } + + if (domname == NULL) + return dns_error(self, "Domain not found.", NULL); + + void *dns_obj = tox_dns3_new(DNS_pubkey); + + if (dns_obj == NULL) + return dns_error(self, "Failed to create DNS object.", NULL); + + uint8_t string[MAX_DNS_REQST_SIZE]; + uint32_t request_id; + + int str_len = tox_generate_dns3_string(dns_obj, string, sizeof(string), &request_id, name, namelen); + + if (str_len == -1) + return dns_error(self, "Failed to generate string.", dns_obj); + + string[str_len] = '\0'; + + u_char answer[PACKETSZ]; + uint8_t d_string[MAX_DNS_REQST_SIZE]; + + /* format string and create dns query */ + snprintf(d_string, sizeof(d_string), "_%s._tox.%s", string, domname); + int ans_len = res_query(d_string, C_IN, T_TXT, answer, sizeof(answer)); + + if (ans_len <= 0) + return dns_error(self, "Query failed.", dns_obj); + + uint8_t ans_id[MAX_DNS_REQST_SIZE]; + + /* extract TXT from DNS response */ + if (parse_dns_response(self, answer, ans_len, ans_id) == -1) { + tox_dns3_kill(dns_obj); + return -1; + } + + uint8_t encrypted_id[MAX_DNS_REQST_SIZE]; + int prfx_len = strlen(TOX_DNS3_TXT_PREFIX); + + /* extract the encrypted ID from TXT response */ + if (strncmp(ans_id, TOX_DNS3_TXT_PREFIX, prfx_len) != 0) + return dns_error(self, "Bad dns3 TXT response.", dns_obj); + + memcpy(encrypted_id, ans_id + prfx_len, ans_len - prfx_len); + + if (tox_decrypt_dns3_TXT(dns_obj, id_bin, encrypted_id, strlen(encrypted_id), request_id) == -1) + return dns_error(self, "Error decrypting response.", dns_obj); + + tox_dns3_kill(dns_obj); + return 0; +} diff --git a/src/dns.h b/src/dns.h new file mode 100644 index 0000000..dce3cc0 --- /dev/null +++ b/src/dns.h @@ -0,0 +1,25 @@ +/* dns.c + * + * + * Copyright (C) 2014 Toxic All Rights Reserved. + * + * This file is part of Toxic. + * + * Toxic is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Toxic is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Toxic. If not, see . + * + */ + +/* Does DNS lookup for addr and puts resulting tox id in id_bin. + Return 0 on success, -1 on failure. */ +int dns3_lookup(ToxWindow *self, uint8_t *id_bin, uint8_t *name, uint16_t id_len); diff --git a/src/execute.c b/src/execute.c index 5a9fde8..0775293 100644 --- a/src/execute.c +++ b/src/execute.c @@ -55,6 +55,7 @@ static struct cmd_func global_commands[] = { { "/q", cmd_quit }, { "/quit", cmd_quit }, { "/status", cmd_status }, + #ifdef _SUPPORT_AUDIO { "/lsdev", cmd_list_devices }, { "/sdev", cmd_change_device }, diff --git a/src/global_commands.c b/src/global_commands.c index 9763070..8d25240 100644 --- a/src/global_commands.c +++ b/src/global_commands.c @@ -33,6 +33,7 @@ #include "friendlist.h" #include "log.h" #include "line_info.h" +#include "dns.h" extern char *DATA_FILE; extern ToxWindow *prompt; @@ -120,33 +121,31 @@ void cmd_add(WINDOW *window, ToxWindow *self, Tox *m, int argc, char (*argv)[MAX snprintf(msg, sizeof(msg), "Hello, my name is %s. Care to Tox?", selfname); } - if (strlen(id) != 2 * TOX_FRIEND_ADDRESS_SIZE) { - errmsg = "Invalid ID length."; - line_info_add(self, NULL, NULL, NULL, errmsg, SYS_MSG, 0, 0); - return; - } + uint8_t id_bin[TOX_FRIEND_ADDRESS_SIZE] = {0}; + uint16_t id_len = strlen(id); - size_t i; - char xx[3]; - uint32_t x; - uint8_t id_bin[TOX_FRIEND_ADDRESS_SIZE]; + /* try to add tox ID */ + if (id_len == 2 * TOX_FRIEND_ADDRESS_SIZE) { + size_t i; + char xx[3]; + uint32_t x; - for (i = 0; i < TOX_FRIEND_ADDRESS_SIZE; ++i) { - xx[0] = id[2 * i]; - xx[1] = id[2 * i + 1]; - xx[2] = '\0'; + for (i = 0; i < TOX_FRIEND_ADDRESS_SIZE; ++i) { + xx[0] = id[2 * i]; + xx[1] = id[2 * i + 1]; + xx[2] = '\0'; - if (sscanf(xx, "%02x", &x) != 1) { - errmsg = "Invalid ID."; - line_info_add(self, NULL, NULL, NULL, errmsg, SYS_MSG, 0, 0); - return; + if (sscanf(xx, "%02x", &x) != 1) { + errmsg = "Invalid ID."; + line_info_add(self, NULL, NULL, NULL, errmsg, SYS_MSG, 0, 0); + return; + } + + id_bin[i] = x; } - - id_bin[i] = x; - } - - for (i = 0; i < TOX_FRIEND_ADDRESS_SIZE; i++) { - id[i] = toupper(id[i]); + } else { /* assume id is a username@domain address and do DNS lookup */ + if (dns3_lookup(self, id_bin, id, id_len) == -1) + return; } int32_t f_num = tox_add_friend(m, id_bin, msg, strlen(msg)); @@ -177,7 +176,7 @@ void cmd_add(WINDOW *window, ToxWindow *self, Tox *m, int argc, char (*argv)[MAX break; case TOX_FAERR_SETNEWNOSPAM: - errmsg = "Nospam was different (is this contact already added?"; + errmsg = "Nospam was different."; break; default: diff --git a/src/global_commands.h b/src/global_commands.h index 5bc5e3c..ef77813 100644 --- a/src/global_commands.h +++ b/src/global_commands.h @@ -28,6 +28,7 @@ void cmd_accept(WINDOW *, ToxWindow *, Tox *, int argc, char (*argv)[MAX_STR_SIZE]); void cmd_add(WINDOW *, ToxWindow *, Tox *, int argc, char (*argv)[MAX_STR_SIZE]); +void cmd_addkey(WINDOW *, ToxWindow *, Tox *, int argc, char (*argv)[MAX_STR_SIZE]); void cmd_clear(WINDOW *, ToxWindow *, Tox *, int argc, char (*argv)[MAX_STR_SIZE]); void cmd_connect(WINDOW *, ToxWindow *, Tox *, int argc, char (*argv)[MAX_STR_SIZE]); void cmd_groupchat(WINDOW *, ToxWindow *, Tox *, int argc, char (*argv)[MAX_STR_SIZE]); diff --git a/src/misc_tools.h b/src/misc_tools.h index b01c6b9..6f3baef 100644 --- a/src/misc_tools.h +++ b/src/misc_tools.h @@ -25,8 +25,13 @@ #include "windows.h" #include "toxic.h" +#ifndef MIN #define MIN(x, y) (((x) < (y)) ? (x) : (y)) +#endif + +#ifndef MAX #define MAX(x, y) (((x) > (y)) ? (x) : (y)) +#endif /* convert a hex string to binary */ char *hex_string_to_bin(const char *hex_string); diff --git a/src/toxic b/src/toxic deleted file mode 100644 index 90b2bc0320b8f630aa8a1c268b75e73a2483205d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2852016 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

    w;+N3-vfs1oPsE@_o2fi6{>l1u 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%0A1bKVd%6!hP2Y5wCz9sdN#4LR3;Dl`69 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

    eqotI(%kCzg}`nB>cN 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

  • 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 u`Si0>_Y{l{|M Date: Tue, 17 Jun 2014 10:19:48 +0200 Subject: [PATCH 45/63] Add configure checks for libresolv --- configure.ac | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/configure.ac b/configure.ac index 59f976f..3fc3a3a 100644 --- a/configure.ac +++ b/configure.ac @@ -387,6 +387,15 @@ if test "x$LIBTOXCORE_FOUND" = "xno"; then AC_SUBST(LIBTOXCORE_LDFLAGS) fi +AC_CHECK_HEADER([resolv.h], [], + [ + AC_MSG_ERROR([resolv.h header was not found on your system]) + ]) + +AC_CHECK_LIB(resolv, __res_init, [], + [ + AC_MSG_ERROR([libresolv library was not found on your system]) + ]) #### #### A/V Stuff @@ -490,7 +499,7 @@ if test "x$NCURSES_WIDECHAR_SUPPORT" = "xyes"; then AC_DEFINE([_XOPEN_SOURCE_EXTENDED], [1], [enable X/Open Portability Guide functionality]) fi - + AC_CONFIG_FILES([Makefile misc/Makefile build/Makefile]) From 6f9ab5649382db3e1b0c97913ce0ab3ea2108b50 Mon Sep 17 00:00:00 2001 From: jin-eld Date: Tue, 17 Jun 2014 10:22:05 +0200 Subject: [PATCH 46/63] Remove redundant toxav header check If pkg-config reports that toxav is there, it should be enough, no extra checks needed. --- configure.ac | 7 ------- 1 file changed, 7 deletions(-) diff --git a/configure.ac b/configure.ac index 3fc3a3a..242a1a2 100644 --- a/configure.ac +++ b/configure.ac @@ -462,16 +462,9 @@ fi if test "x$BUILD_AV" = "xyes"; then PKG_CHECK_MODULES([LIBTOXAV], [libtoxav], [ - AC_CHECK_HEADER([tox/toxav.h], - [ # Place define for audio support AC_DEFINE([_SUPPORT_AUDIO], [], [Is audio supported]) AC_MSG_NOTICE([Building with audio support]) - ], - [ - AC_MSG_NOTICE([No A/V headers; disabling A/V support]) - BUILD_AV="no" - ],) ], [ AC_MSG_NOTICE([No A/V library; disabling A/V support]) From b480e22a272013ed4df1c6975faf3a25c511c7ca Mon Sep 17 00:00:00 2001 From: Jfreegman Date: Tue, 17 Jun 2014 12:12:32 -0400 Subject: [PATCH 47/63] don't need this --- build/Makefile.am | 6 ++---- src/global_commands.h | 1 - 2 files changed, 2 insertions(+), 5 deletions(-) diff --git a/build/Makefile.am b/build/Makefile.am index 0bb356d..919987e 100644 --- a/build/Makefile.am +++ b/build/Makefile.am @@ -42,8 +42,7 @@ toxic_CFLAGS = -I$(top_srcdir) \ $(NCURSES_CFLAGS) \ $(LIBSODIUM_CFLAGS) \ $(LIBTOXCORE_CFLAGS) \ - $(PTHREAD_CFLAGS) \ - $(LRESOLV_CFLAGS) + $(PTHREAD_CFLAGS) toxic_CPPFLAGS = '-DTOXICVER="$(TOXIC_VERSION)"' @@ -53,8 +52,7 @@ toxic_LDADD = $(LIBTOXCORE_LDFLAGS) \ $(LIBTOXCORE_LIBS) \ $(LIBSODIUM_LIBS) \ $(WINSOCK2_LIBS) \ - $(PTHREAD_LIBS) \ - $(LRESOLV_LIBS) + $(PTHREAD_LIBS) # For audio support diff --git a/src/global_commands.h b/src/global_commands.h index ef77813..5bc5e3c 100644 --- a/src/global_commands.h +++ b/src/global_commands.h @@ -28,7 +28,6 @@ void cmd_accept(WINDOW *, ToxWindow *, Tox *, int argc, char (*argv)[MAX_STR_SIZE]); void cmd_add(WINDOW *, ToxWindow *, Tox *, int argc, char (*argv)[MAX_STR_SIZE]); -void cmd_addkey(WINDOW *, ToxWindow *, Tox *, int argc, char (*argv)[MAX_STR_SIZE]); void cmd_clear(WINDOW *, ToxWindow *, Tox *, int argc, char (*argv)[MAX_STR_SIZE]); void cmd_connect(WINDOW *, ToxWindow *, Tox *, int argc, char (*argv)[MAX_STR_SIZE]); void cmd_groupchat(WINDOW *, ToxWindow *, Tox *, int argc, char (*argv)[MAX_STR_SIZE]); From b24325d8791c3c1249632df7f0d785c6ace80a75 Mon Sep 17 00:00:00 2001 From: Jfreegman Date: Tue, 17 Jun 2014 19:10:25 -0400 Subject: [PATCH 48/63] threads for DNS lookups --- src/dns.c | 157 +++++++++++++++++++++++++++++++----------- src/dns.h | 9 ++- src/global_commands.c | 87 ++++++++++++----------- src/global_commands.h | 2 + 4 files changed, 171 insertions(+), 84 deletions(-) diff --git a/src/dns.c b/src/dns.c index 30ff783..04979fb 100644 --- a/src/dns.c +++ b/src/dns.c @@ -36,7 +36,9 @@ #include "windows.h" #include "line_info.h" #include "dns.h" +#include "global_commands.h" +#define MAX_DNS_THREADS 10 #define MAX_DNS_REQST_SIZE 256 #define NUM_DNS3_SERVERS 1 /* must correspond to number of items in dns3_servers array */ #define TOX_DNS3_TXT_PREFIX "v=tox3;id=" @@ -55,19 +57,41 @@ static struct dns3_server { }, }; -static int dns_error(ToxWindow *self, uint8_t *errmsg, void *dns_obj) +struct _thread_data { + ToxWindow *self; + uint8_t id_bin[TOX_FRIEND_ADDRESS_SIZE]; + uint8_t addr[MAX_STR_SIZE]; + uint8_t msg[MAX_STR_SIZE]; + uint8_t busy; + Tox *m; +} t_data; + +static struct _dns_thread { + pthread_t tid; + pthread_mutex_t lock; +} dns_thread; + +static int dns_error(ToxWindow *self, uint8_t *errmsg) { uint8_t msg[MAX_STR_SIZE]; snprintf(msg, sizeof(msg), "DNS lookup failed: %s", errmsg); - line_info_add(self, NULL, NULL, NULL, msg, SYS_MSG, 0, 0); - if (dns_obj) - tox_dns3_kill(dns_obj); + pthread_mutex_lock(&dns_thread.lock); + line_info_add(self, NULL, NULL, NULL, msg, SYS_MSG, 0, 0); + pthread_mutex_unlock(&dns_thread.lock); return -1; } -/* puts TXT from dns response in buf */ +static int cleanup_dns_thread(void *dns_obj) +{ + if (dns_obj) + tox_dns3_kill(dns_obj); + + memset(&t_data, 0, sizeof(struct _thread_data)); +} + +/* puts TXT from dns response in buf. Returns length of TXT on success, -1 on fail.*/ static int parse_dns_response(ToxWindow *self, u_char *answer, int ans_len, uint8_t *buf) { uint8_t *ans_pt = answer + sizeof(HEADER); @@ -77,18 +101,18 @@ static int parse_dns_response(ToxWindow *self, u_char *answer, int ans_len, uint int len = dn_expand(answer, ans_end, ans_pt, exp_ans, sizeof(exp_ans)); if (len == -1) - return dns_error(self, "dn_expand failed.", NULL); + return dns_error(self, "dn_expand failed."); ans_pt += len; if (ans_pt > ans_end - 4) - return dns_error(self, "Reply was too short.", NULL); + return dns_error(self, "Reply was too short."); int type; GETSHORT(type, ans_pt); if (type != T_TXT) - return dns_error(self, "Broken reply.", NULL); + return dns_error(self, "Broken reply."); ans_pt += INT16SZ; /* class */ @@ -100,12 +124,12 @@ static int parse_dns_response(ToxWindow *self, u_char *answer, int ans_len, uint len = dn_expand(answer, ans_end, ans_pt, exp_ans, sizeof(exp_ans)); if (len == -1) - return dns_error(self, "Second dn_expand failed.", NULL); + return dns_error(self, "Second dn_expand failed."); ans_pt += len; if (ans_pt > ans_end - 10) - return dns_error(self, "Reply was too short.", NULL); + return dns_error(self, "Reply was too short."); GETSHORT(type, ans_pt); ans_pt += INT16SZ; @@ -113,26 +137,23 @@ static int parse_dns_response(ToxWindow *self, u_char *answer, int ans_len, uint GETSHORT(size, ans_pt); if (ans_pt + size < answer || ans_pt + size > ans_end) - return dns_error(self, "RR overflow.", NULL); + return dns_error(self, "RR overflow."); } while (type == T_CNAME); if (type != T_TXT) - return dns_error(self, "Not a TXT record.", NULL); + return dns_error(self, "Not a TXT record."); uint32_t txt_len = *ans_pt; - if (!size || txt_len >= size || !txt_len) { - uint8_t errmsg[MAX_STR_SIZE]; - snprintf(errmsg, sizeof(errmsg), "No record found.", txt_len, size); - return dns_error(self, errmsg, NULL); - } + if (!size || txt_len >= size || !txt_len) + return dns_error(self, "No record found."); ans_pt++; ans_pt[txt_len] = '\0'; memcpy(buf, ans_pt, txt_len + 1); - return 0; + return txt_len; } /* Takes address addr in the form "username@domain", puts the username in namebuf, @@ -157,20 +178,21 @@ static int parse_addr(uint8_t *addr, uint8_t *namebuf, uint8_t *dombuf) return strlen(namebuf); } -/* Does DNS lookup for addr and puts resulting tox id in id_bin. - Return 0 on success, -1 on failure. */ -int dns3_lookup(ToxWindow *self, uint8_t *id_bin, uint8_t *addr, uint16_t addr_len) +/* Does DNS lookup for addr and puts resulting tox id in id_bin. */ +void *dns3_lookup_thread(void *data) { - if (addr_len >= MAX_STR_SIZE) - return dns_error(self, "Address too long.", NULL); + ToxWindow *self = t_data.self; uint8_t domain[MAX_STR_SIZE]; uint8_t name[MAX_STR_SIZE]; - int namelen = parse_addr(addr, name, domain); + int namelen = parse_addr(t_data.addr, name, domain); - if (namelen == -1) - return dns_error(self, "Address must be in the form username@domain", NULL); + if (namelen == -1) { + dns_error(self, "Must be a Tox key or an address in the form username@domain"); + cleanup_dns_thread(NULL); + return; + } /* get domain name/pub key */ uint8_t *DNS_pubkey, *domname = NULL; @@ -184,21 +206,30 @@ int dns3_lookup(ToxWindow *self, uint8_t *id_bin, uint8_t *addr, uint16_t addr_l } } - if (domname == NULL) - return dns_error(self, "Domain not found.", NULL); + if (domname == NULL) { + dns_error(self, "Domain not found."); + cleanup_dns_thread(NULL); + return; + } void *dns_obj = tox_dns3_new(DNS_pubkey); - if (dns_obj == NULL) - return dns_error(self, "Failed to create DNS object.", NULL); + if (dns_obj == NULL) { + dns_error(self, "Core failed to create DNS object."); + cleanup_dns_thread(NULL); + return; + } uint8_t string[MAX_DNS_REQST_SIZE]; uint32_t request_id; int str_len = tox_generate_dns3_string(dns_obj, string, sizeof(string), &request_id, name, namelen); - if (str_len == -1) - return dns_error(self, "Failed to generate string.", dns_obj); + if (str_len == -1) { + dns_error(self, "Core failed to generate dns3 string."); + cleanup_dns_thread(dns_obj); + return; + } string[str_len] = '\0'; @@ -209,29 +240,71 @@ int dns3_lookup(ToxWindow *self, uint8_t *id_bin, uint8_t *addr, uint16_t addr_l snprintf(d_string, sizeof(d_string), "_%s._tox.%s", string, domname); int ans_len = res_query(d_string, C_IN, T_TXT, answer, sizeof(answer)); - if (ans_len <= 0) - return dns_error(self, "Query failed.", dns_obj); + if (ans_len <= 0) { + dns_error(self, "Query failed."); + cleanup_dns_thread(dns_obj); + return; + } uint8_t ans_id[MAX_DNS_REQST_SIZE]; /* extract TXT from DNS response */ if (parse_dns_response(self, answer, ans_len, ans_id) == -1) { - tox_dns3_kill(dns_obj); - return -1; + cleanup_dns_thread(dns_obj); + return; } uint8_t encrypted_id[MAX_DNS_REQST_SIZE]; int prfx_len = strlen(TOX_DNS3_TXT_PREFIX); /* extract the encrypted ID from TXT response */ - if (strncmp(ans_id, TOX_DNS3_TXT_PREFIX, prfx_len) != 0) - return dns_error(self, "Bad dns3 TXT response.", dns_obj); + if (strncmp(ans_id, TOX_DNS3_TXT_PREFIX, prfx_len) != 0) { + dns_error(self, "Bad dns3 TXT response."); + cleanup_dns_thread(dns_obj); + return; + } memcpy(encrypted_id, ans_id + prfx_len, ans_len - prfx_len); - if (tox_decrypt_dns3_TXT(dns_obj, id_bin, encrypted_id, strlen(encrypted_id), request_id) == -1) - return dns_error(self, "Error decrypting response.", dns_obj); + if (tox_decrypt_dns3_TXT(dns_obj, t_data.id_bin, encrypted_id, strlen(encrypted_id), request_id) == -1) { + dns_error(self, "Core failed to decrypt response."); + cleanup_dns_thread(dns_obj); + return; + } - tox_dns3_kill(dns_obj); - return 0; + pthread_mutex_lock(&dns_thread.lock); + cmd_add_helper(self, t_data.m, t_data.id_bin, t_data.msg); + pthread_mutex_unlock(&dns_thread.lock); + + cleanup_dns_thread(dns_obj); + return; +} + +/* creates new thread for dns3 lookup. Only allows one lookup at a time. */ +void dns3_lookup(ToxWindow *self, Tox *m, uint8_t *id_bin, uint8_t *addr, uint8_t *msg) +{ + if (t_data.busy) { + uint8_t *err = "Please wait for previous DNS lookup to finish."; + line_info_add(self, NULL, NULL, NULL, err, SYS_MSG, 0, 0); + return; + } + + t_data.self = self; + snprintf(t_data.id_bin, sizeof(t_data.id_bin), "%s", id_bin); + snprintf(t_data.addr, sizeof(t_data.addr), "%s", addr); + snprintf(t_data.msg, sizeof(t_data.msg), "%s", msg); + t_data.m = m; + t_data.busy = 1; + + if (pthread_create(&dns_thread.tid, NULL, dns3_lookup_thread, NULL) != 0) { + endwin(); + fprintf(stderr, "DNS thread creation failed. Aborting...\n"); + exit(EXIT_FAILURE); + } + + if (pthread_mutex_init(&dns_thread.lock, NULL) != 0) { + endwin(); + fprintf(stderr, "DNS thread mutex creation failed. Aborting...\n"); + exit(EXIT_FAILURE); + } } diff --git a/src/dns.h b/src/dns.h index dce3cc0..edd6579 100644 --- a/src/dns.h +++ b/src/dns.h @@ -22,4 +22,11 @@ /* Does DNS lookup for addr and puts resulting tox id in id_bin. Return 0 on success, -1 on failure. */ -int dns3_lookup(ToxWindow *self, uint8_t *id_bin, uint8_t *name, uint16_t id_len); + +#ifndef _dns_h +#define _dns_h + +/* creates new thread for dns3 lookup. Only allows one lookup at a time. */ +void dns3_lookup(ToxWindow *self, Tox *m, uint8_t *id_bin, uint8_t *addr, uint8_t *msg); + +#endif /* #define _dns_h */ diff --git a/src/global_commands.c b/src/global_commands.c index 8d25240..e140318 100644 --- a/src/global_commands.c +++ b/src/global_commands.c @@ -90,6 +90,49 @@ void cmd_accept(WINDOW *window, ToxWindow *self, Tox *m, int argc, char (*argv)[ line_info_add(self, NULL, NULL, NULL, msg, SYS_MSG, 0, 0); } +void cmd_add_helper(ToxWindow *self, Tox *m, uint8_t *id_bin, uint8_t *msg) +{ + uint8_t *errmsg; + int32_t f_num = tox_add_friend(m, id_bin, msg, strlen(msg)); + + switch (f_num) { + case TOX_FAERR_TOOLONG: + errmsg = "Message is too long."; + break; + + case TOX_FAERR_NOMESSAGE: + errmsg = "Please add a message to your request."; + break; + + case TOX_FAERR_OWNKEY: + errmsg = "That appears to be your own ID."; + break; + + case TOX_FAERR_ALREADYSENT: + errmsg = "Friend request has already been sent."; + break; + + case TOX_FAERR_UNKNOWN: + errmsg = "Undefined error when adding friend."; + break; + + case TOX_FAERR_BADCHECKSUM: + errmsg = "Bad checksum in address."; + break; + + case TOX_FAERR_SETNEWNOSPAM: + errmsg = "Nospam was different."; + break; + + default: + errmsg = "Friend request sent."; + on_friendadded(m, f_num, true); + break; + } + + line_info_add(self, NULL, NULL, NULL, errmsg, SYS_MSG, 0, 0); +} + void cmd_add(WINDOW *window, ToxWindow *self, Tox *m, int argc, char (*argv)[MAX_STR_SIZE]) { uint8_t *errmsg; @@ -143,49 +186,11 @@ void cmd_add(WINDOW *window, ToxWindow *self, Tox *m, int argc, char (*argv)[MAX id_bin[i] = x; } + + cmd_add_helper(self, m, id_bin, msg); } else { /* assume id is a username@domain address and do DNS lookup */ - if (dns3_lookup(self, id_bin, id, id_len) == -1) - return; + dns3_lookup(self, m, id_bin, id, msg); } - - int32_t f_num = tox_add_friend(m, id_bin, msg, strlen(msg)); - - switch (f_num) { - case TOX_FAERR_TOOLONG: - errmsg = "Message is too long."; - break; - - case TOX_FAERR_NOMESSAGE: - errmsg = "Please add a message to your request."; - break; - - case TOX_FAERR_OWNKEY: - errmsg = "That appears to be your own ID."; - break; - - case TOX_FAERR_ALREADYSENT: - errmsg = "Friend request has already been sent."; - break; - - case TOX_FAERR_UNKNOWN: - errmsg = "Undefined error when adding friend."; - break; - - case TOX_FAERR_BADCHECKSUM: - errmsg = "Bad checksum in address."; - break; - - case TOX_FAERR_SETNEWNOSPAM: - errmsg = "Nospam was different."; - break; - - default: - errmsg = "Friend request sent."; - on_friendadded(m, f_num, true); - break; - } - - line_info_add(self, NULL, NULL, NULL, errmsg, SYS_MSG, 0, 0); } void cmd_clear(WINDOW *window, ToxWindow *self, Tox *m, int argc, char (*argv)[MAX_STR_SIZE]) diff --git a/src/global_commands.h b/src/global_commands.h index 5bc5e3c..688b6af 100644 --- a/src/global_commands.h +++ b/src/global_commands.h @@ -39,6 +39,8 @@ void cmd_prompt_help(WINDOW *, ToxWindow *, Tox *, int argc, char (*argv)[MAX_ST void cmd_quit(WINDOW *, ToxWindow *, Tox *, int argc, char (*argv)[MAX_STR_SIZE]); void cmd_status(WINDOW *, ToxWindow *, Tox *, int argc, char (*argv)[MAX_STR_SIZE]); +void cmd_add_helper(ToxWindow *self, Tox *m, uint8_t *id_bin, uint8_t *msg); + #ifdef _SUPPORT_AUDIO void cmd_list_devices(WINDOW *, ToxWindow *, Tox *, int argc, char (*argv)[MAX_STR_SIZE]); void cmd_change_device(WINDOW *, ToxWindow *, Tox *, int argc, char (*argv)[MAX_STR_SIZE]); From bc51714148aaf05bb4d8ab75d39ea4f0d8ce7654 Mon Sep 17 00:00:00 2001 From: Jfreegman Date: Tue, 17 Jun 2014 19:32:02 -0400 Subject: [PATCH 49/63] exit dns threads with pthread_exit --- src/dns.c | 30 +++++++++++------------------- 1 file changed, 11 insertions(+), 19 deletions(-) diff --git a/src/dns.c b/src/dns.c index 04979fb..ecbe56a 100644 --- a/src/dns.c +++ b/src/dns.c @@ -83,12 +83,13 @@ static int dns_error(ToxWindow *self, uint8_t *errmsg) return -1; } -static int cleanup_dns_thread(void *dns_obj) +static void kill_dns_thread(void *dns_obj) { if (dns_obj) tox_dns3_kill(dns_obj); memset(&t_data, 0, sizeof(struct _thread_data)); + pthread_exit(0); } /* puts TXT from dns response in buf. Returns length of TXT on success, -1 on fail.*/ @@ -190,8 +191,7 @@ void *dns3_lookup_thread(void *data) if (namelen == -1) { dns_error(self, "Must be a Tox key or an address in the form username@domain"); - cleanup_dns_thread(NULL); - return; + kill_dns_thread(NULL); } /* get domain name/pub key */ @@ -208,16 +208,14 @@ void *dns3_lookup_thread(void *data) if (domname == NULL) { dns_error(self, "Domain not found."); - cleanup_dns_thread(NULL); - return; + kill_dns_thread(NULL); } void *dns_obj = tox_dns3_new(DNS_pubkey); if (dns_obj == NULL) { dns_error(self, "Core failed to create DNS object."); - cleanup_dns_thread(NULL); - return; + kill_dns_thread(NULL); } uint8_t string[MAX_DNS_REQST_SIZE]; @@ -227,8 +225,7 @@ void *dns3_lookup_thread(void *data) if (str_len == -1) { dns_error(self, "Core failed to generate dns3 string."); - cleanup_dns_thread(dns_obj); - return; + kill_dns_thread(dns_obj); } string[str_len] = '\0'; @@ -242,16 +239,14 @@ void *dns3_lookup_thread(void *data) if (ans_len <= 0) { dns_error(self, "Query failed."); - cleanup_dns_thread(dns_obj); - return; + kill_dns_thread(dns_obj); } uint8_t ans_id[MAX_DNS_REQST_SIZE]; /* extract TXT from DNS response */ if (parse_dns_response(self, answer, ans_len, ans_id) == -1) { - cleanup_dns_thread(dns_obj); - return; + kill_dns_thread(dns_obj); } uint8_t encrypted_id[MAX_DNS_REQST_SIZE]; @@ -260,24 +255,21 @@ void *dns3_lookup_thread(void *data) /* extract the encrypted ID from TXT response */ if (strncmp(ans_id, TOX_DNS3_TXT_PREFIX, prfx_len) != 0) { dns_error(self, "Bad dns3 TXT response."); - cleanup_dns_thread(dns_obj); - return; + kill_dns_thread(dns_obj); } memcpy(encrypted_id, ans_id + prfx_len, ans_len - prfx_len); if (tox_decrypt_dns3_TXT(dns_obj, t_data.id_bin, encrypted_id, strlen(encrypted_id), request_id) == -1) { dns_error(self, "Core failed to decrypt response."); - cleanup_dns_thread(dns_obj); - return; + kill_dns_thread(dns_obj); } pthread_mutex_lock(&dns_thread.lock); cmd_add_helper(self, t_data.m, t_data.id_bin, t_data.msg); pthread_mutex_unlock(&dns_thread.lock); - cleanup_dns_thread(dns_obj); - return; + kill_dns_thread(dns_obj); } /* creates new thread for dns3 lookup. Only allows one lookup at a time. */ From fc148be3e2dd474c665d5e179460b2cc64c9f351 Mon Sep 17 00:00:00 2001 From: Jfreegman Date: Wed, 18 Jun 2014 12:10:00 -0400 Subject: [PATCH 50/63] fix possible segfaults --- src/groupchat.c | 11 ++++++++++- src/groupchat.h | 1 + 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/src/groupchat.c b/src/groupchat.c index fe78c1e..eb79fc0 100644 --- a/src/groupchat.c +++ b/src/groupchat.c @@ -42,7 +42,7 @@ extern char *DATA_FILE; extern int store_data(Tox *m, char *path); -static GroupChat groupchats[MAX_WINDOWS_NUM]; +static GroupChat groupchats[MAX_GROUPCHAT_NUM]; static int max_groupchat_index = 0; extern struct user_settings *user_settings; @@ -52,6 +52,9 @@ extern const uint8_t glob_cmd_list[AC_NUM_GLOB_COMMANDS][MAX_CMDNAME_SIZE]; int init_groupchat_win(ToxWindow *prompt, Tox *m, int groupnum) { + if (groupnum > MAX_GROUPCHAT_NUM) + return -1; + int i; for (i = 0; i <= max_groupchat_index; ++i) { @@ -296,9 +299,15 @@ static void groupchat_onGroupNamelistChange(ToxWindow *self, Tox *m, int groupnu if (self->num != groupnum) return; + if (groupnum > MAX_GROUPCHAT_NUM) + return; + groupchats[groupnum].num_peers = tox_group_number_peers(m, groupnum); int num_peers = groupchats[groupnum].num_peers; + if (peernum >= num_peers) + return; + /* get old peer name before updating name list */ uint8_t oldpeername[TOX_MAX_NAME_LENGTH]; diff --git a/src/groupchat.h b/src/groupchat.h index 3ef5a1e..f95e0f9 100644 --- a/src/groupchat.h +++ b/src/groupchat.h @@ -28,6 +28,7 @@ #define SIDEBAR_WIDTH 16 #define SDBAR_OFST 2 /* Offset for the peer number box at the top of the statusbar */ +#define MAX_GROUPCHAT_NUM MAX_WINDOWS_NUM typedef struct { int chatwin; From 72e9e7d9c4521595559ba6427d84a969f589940f Mon Sep 17 00:00:00 2001 From: Jfreegman Date: Wed, 18 Jun 2014 13:10:20 -0400 Subject: [PATCH 51/63] add str_to_lower function, ignore DNS domain name case --- src/dns.c | 8 ++++---- src/global_commands.c | 12 ++++-------- src/misc_tools.c | 9 +++++++++ src/misc_tools.h | 3 +++ 4 files changed, 20 insertions(+), 12 deletions(-) diff --git a/src/dns.c b/src/dns.c index ecbe56a..e9a266a 100644 --- a/src/dns.c +++ b/src/dns.c @@ -37,8 +37,8 @@ #include "line_info.h" #include "dns.h" #include "global_commands.h" +#include "misc_tools.h" -#define MAX_DNS_THREADS 10 #define MAX_DNS_REQST_SIZE 256 #define NUM_DNS3_SERVERS 1 /* must correspond to number of items in dns3_servers array */ #define TOX_DNS3_TXT_PREFIX "v=tox3;id=" @@ -173,6 +173,7 @@ static int parse_addr(uint8_t *addr, uint8_t *namebuf, uint8_t *dombuf) if (tmpname == NULL || tmpdom == NULL) return -1; + str_to_lower(tmpdom); strcpy(namebuf, tmpname); strcpy(dombuf, tmpdom); @@ -190,7 +191,7 @@ void *dns3_lookup_thread(void *data) int namelen = parse_addr(t_data.addr, name, domain); if (namelen == -1) { - dns_error(self, "Must be a Tox key or an address in the form username@domain"); + dns_error(self, "Must be a Tox ID or an address in the form username@domain"); kill_dns_thread(NULL); } @@ -245,9 +246,8 @@ void *dns3_lookup_thread(void *data) uint8_t ans_id[MAX_DNS_REQST_SIZE]; /* extract TXT from DNS response */ - if (parse_dns_response(self, answer, ans_len, ans_id) == -1) { + if (parse_dns_response(self, answer, ans_len, ans_id) == -1) kill_dns_thread(dns_obj); - } uint8_t encrypted_id[MAX_DNS_REQST_SIZE]; int prfx_len = strlen(TOX_DNS3_TXT_PREFIX); diff --git a/src/global_commands.c b/src/global_commands.c index e140318..59235d0 100644 --- a/src/global_commands.c +++ b/src/global_commands.c @@ -461,20 +461,16 @@ void cmd_status(WINDOW *window, ToxWindow *self, Tox *m, int argc, char (*argv)[ } char *status = argv[1]; + str_to_lower(status); int len = strlen(status); - char l_status[len + 1]; - int i; - - for (i = 0; i <= len; ++i) - l_status[i] = tolower(status[i]); TOX_USERSTATUS status_kind; - if (!strcmp(l_status, "online")) + if (!strcmp(status, "online")) status_kind = TOX_USERSTATUS_NONE; - else if (!strcmp(l_status, "away")) + else if (!strcmp(status, "away")) status_kind = TOX_USERSTATUS_AWAY; - else if (!strcmp(l_status, "busy")) + else if (!strcmp(status, "busy")) status_kind = TOX_USERSTATUS_BUSY; else { errmsg = "Invalid status. Valid statuses are: online, busy and away."; diff --git a/src/misc_tools.c b/src/misc_tools.c index 93b93df..5350ccf 100644 --- a/src/misc_tools.c +++ b/src/misc_tools.c @@ -250,3 +250,12 @@ void get_file_name(uint8_t *namebuf, uint8_t *pathname) snprintf(namebuf, MAX_STR_SIZE, "%s", filename); } + +/* converts str to all lowercase */ +void str_to_lower(uint8_t *str) +{ + int i; + + for (i = 0; str[i]; ++i) + str[i] = tolower(str[i]); +} diff --git a/src/misc_tools.h b/src/misc_tools.h index 6f3baef..699ab20 100644 --- a/src/misc_tools.h +++ b/src/misc_tools.h @@ -86,4 +86,7 @@ void mv_curs_end(WINDOW *w, size_t len, int max_y, int max_x); /* gets base file name from path or original file name if no path is supplied */ void get_file_name(uint8_t *namebuf, uint8_t *pathname); +/* converts str to all uppercase */ +void str_to_lower(uint8_t *str); + #endif /* #define _misc_tools_h */ From 58a131426a9171528c51c0915b8b249903bca37a Mon Sep 17 00:00:00 2001 From: Jfreegman Date: Wed, 18 Jun 2014 15:54:05 -0400 Subject: [PATCH 52/63] better handling of fatal errors --- src/chat.c | 11 ++-- src/dns.c | 18 +++---- src/friendlist.c | 2 +- src/global_commands.c | 2 +- src/groupchat.c | 29 ++++------ src/line_info.c | 14 ++--- src/prompt.c | 20 +++---- src/toxic.c | 123 +++++++++++++++++++----------------------- src/toxic.h | 16 +++++- src/windows.c | 14 ++--- 10 files changed, 106 insertions(+), 143 deletions(-) diff --git a/src/chat.c b/src/chat.c index be5eb4a..f64c8ae 100644 --- a/src/chat.c +++ b/src/chat.c @@ -874,11 +874,8 @@ static void chat_onInit(ToxWindow *self, Tox *m) ctx->hst = malloc(sizeof(struct history)); ctx->log = malloc(sizeof(struct chatlog)); - if (ctx->log == NULL || ctx->hst == NULL) { - endwin(); - fprintf(stderr, "malloc() failed. Aborting...\n"); - exit(EXIT_FAILURE); - } + if (ctx->log == NULL || ctx->hst == NULL) + exit_toxic_err("failed in chat_onInit", FATALERR_MEMORY); memset(ctx->hst, 0, sizeof(struct history)); memset(ctx->log, 0, sizeof(struct chatlog)); @@ -951,9 +948,7 @@ ToxWindow new_chat(Tox *m, int32_t friendnum) ret.chatwin = chatwin; ret.stb = stb; } else { - endwin(); - fprintf(stderr, "calloc() failed. Aborting...\n"); - exit(EXIT_FAILURE); + exit_toxic_err("failed in new_chat", FATALERR_MEMORY); } ret.num = friendnum; diff --git a/src/dns.c b/src/dns.c index e9a266a..ba7f5f1 100644 --- a/src/dns.c +++ b/src/dns.c @@ -57,7 +57,7 @@ static struct dns3_server { }, }; -struct _thread_data { +static struct _thread_data { ToxWindow *self; uint8_t id_bin[TOX_FRIEND_ADDRESS_SIZE]; uint8_t addr[MAX_STR_SIZE]; @@ -276,7 +276,7 @@ void *dns3_lookup_thread(void *data) void dns3_lookup(ToxWindow *self, Tox *m, uint8_t *id_bin, uint8_t *addr, uint8_t *msg) { if (t_data.busy) { - uint8_t *err = "Please wait for previous DNS lookup to finish."; + uint8_t *err = "Please wait for previous user lookup to finish."; line_info_add(self, NULL, NULL, NULL, err, SYS_MSG, 0, 0); return; } @@ -288,15 +288,9 @@ void dns3_lookup(ToxWindow *self, Tox *m, uint8_t *id_bin, uint8_t *addr, uint8_ t_data.m = m; t_data.busy = 1; - if (pthread_create(&dns_thread.tid, NULL, dns3_lookup_thread, NULL) != 0) { - endwin(); - fprintf(stderr, "DNS thread creation failed. Aborting...\n"); - exit(EXIT_FAILURE); - } + if (pthread_create(&dns_thread.tid, NULL, dns3_lookup_thread, NULL) != 0) + exit_toxic_err("failed in dns3_lookup", FATALERR_THREAD_CREATE); - if (pthread_mutex_init(&dns_thread.lock, NULL) != 0) { - endwin(); - fprintf(stderr, "DNS thread mutex creation failed. Aborting...\n"); - exit(EXIT_FAILURE); - } + if (pthread_mutex_init(&dns_thread.lock, NULL) != 0) + exit_toxic_err("failed in dns3_lookup", FATALERR_MUTEX_INIT); } diff --git a/src/friendlist.c b/src/friendlist.c index 9e602a6..19e35c7 100644 --- a/src/friendlist.c +++ b/src/friendlist.c @@ -56,7 +56,7 @@ extern struct user_settings *user_settings; ToxicFriend friends[MAX_FRIENDS_NUM]; static int friendlist_index[MAX_FRIENDS_NUM] = {0}; -struct _pendingDel { +static struct _pendingDel { int num; bool active; } pendingdelete; diff --git a/src/global_commands.c b/src/global_commands.c index 59235d0..cb0aa52 100644 --- a/src/global_commands.c +++ b/src/global_commands.c @@ -438,7 +438,7 @@ void cmd_prompt_help(WINDOW *window, ToxWindow *self, Tox *m, int argc, char (*a void cmd_quit(WINDOW *window, ToxWindow *self, Tox *m, int argc, char (*argv)[MAX_STR_SIZE]) { - exit_toxic(m); + exit_toxic_success(m); } void cmd_status(WINDOW *window, ToxWindow *self, Tox *m, int argc, char (*argv)[MAX_STR_SIZE]) diff --git a/src/groupchat.c b/src/groupchat.c index eb79fc0..2a048a1 100644 --- a/src/groupchat.c +++ b/src/groupchat.c @@ -260,16 +260,14 @@ static void copy_peernames(int gnum, uint8_t peerlist[][TOX_MAX_NAME_LENGTH], ui groupchats[gnum].peer_name_lengths = malloc(sizeof(uint16_t) * npeers); groupchats[gnum].oldpeer_name_lengths = malloc(sizeof(uint16_t) * npeers); + if (groupchats[gnum].peer_names == NULL || groupchats[gnum].oldpeer_names == NULL + || groupchats[gnum].peer_name_lengths == NULL || groupchats[gnum].oldpeer_name_lengths == NULL) { + exit_toxic_err("failed in copy_peernames", FATALERR_MEMORY); + } + memset(groupchats[gnum].peer_names, 0, sizeof(uint8_t) * npeers * N); memset(groupchats[gnum].peer_name_lengths, 0, sizeof(uint16_t) * npeers); - if (groupchats[gnum].peer_names == NULL || groupchats[gnum].oldpeer_names == NULL - || groupchats[gnum].peer_name_lengths == NULL || groupchats[gnum].oldpeer_name_lengths == NULL) { - endwin(); - fprintf(stderr, "malloc() failed. Aborting...\n"); - exit(EXIT_FAILURE); - } - uint16_t unknown_len = strlen(UNKNOWN_NAME); int i; @@ -649,11 +647,8 @@ static void groupchat_onInit(ToxWindow *self, Tox *m) ctx->hst = malloc(sizeof(struct history)); ctx->log = malloc(sizeof(struct chatlog)); - if (ctx->log == NULL || ctx->hst == NULL) { - endwin(); - fprintf(stderr, "malloc() failed. Aborting...\n"); - exit(EXIT_FAILURE); - } + if (ctx->log == NULL || ctx->hst == NULL) + exit_toxic_err("failed in groupchat_onInit", FATALERR_MEMORY); memset(ctx->hst, 0, sizeof(struct history)); memset(ctx->log, 0, sizeof(struct chatlog)); @@ -688,14 +683,10 @@ ToxWindow new_group_chat(Tox *m, int groupnum) ChatContext *chatwin = calloc(1, sizeof(ChatContext)); - if (chatwin != NULL) - ret.chatwin = chatwin; - else { - endwin(); - fprintf(stderr, "calloc() failed. Aborting...\n"); - exit(EXIT_FAILURE); - } + if (chatwin == NULL) + exit_toxic_err("failed in new_group_chat", FATALERR_MEMORY); + ret.chatwin = chatwin; ret.num = groupnum; return ret; diff --git a/src/line_info.c b/src/line_info.c index b79b61c..a6442f0 100644 --- a/src/line_info.c +++ b/src/line_info.c @@ -40,11 +40,8 @@ void line_info_init(struct history *hst) { hst->line_root = malloc(sizeof(struct line_info)); - if (hst->line_root == NULL) { - endwin(); - fprintf(stderr, "malloc() failed. Aborting...\n"); - exit(EXIT_FAILURE); - } + if (hst->line_root == NULL) + exit_toxic_err("failed in line_info_init", FATALERR_MEMORY); memset(hst->line_root, 0, sizeof(struct line_info)); hst->line_start = hst->line_root; @@ -133,11 +130,8 @@ void line_info_add(ToxWindow *self, uint8_t *tmstmp, uint8_t *name1, uint8_t *na struct history *hst = self->chatwin->hst; struct line_info *new_line = malloc(sizeof(struct line_info)); - if (new_line == NULL) { - endwin(); - fprintf(stderr, "malloc() failed. Aborting...\n"); - exit(EXIT_FAILURE); - } + if (new_line == NULL) + exit_toxic_err("failed in line_info_add", FATALERR_MEMORY); memset(new_line, 0, sizeof(struct line_info)); diff --git a/src/prompt.c b/src/prompt.c index dbaf731..3609574 100644 --- a/src/prompt.c +++ b/src/prompt.c @@ -468,11 +468,8 @@ static void prompt_onInit(ToxWindow *self, Tox *m) ctx->log = malloc(sizeof(struct chatlog)); ctx->hst = malloc(sizeof(struct history)); - if (ctx->log == NULL || ctx->hst == NULL) { - endwin(); - fprintf(stderr, "malloc() failed. Aborting...\n"); - exit(EXIT_FAILURE); - } + if (ctx->log == NULL || ctx->hst == NULL) + exit_toxic_err("failed in prompt_onInit", FATALERR_MEMORY); memset(ctx->log, 0, sizeof(struct chatlog)); memset(ctx->hst, 0, sizeof(struct history)); @@ -508,14 +505,11 @@ ToxWindow new_prompt(void) ChatContext *chatwin = calloc(1, sizeof(ChatContext)); StatusBar *stb = calloc(1, sizeof(StatusBar)); - if (stb != NULL && chatwin != NULL) { - ret.chatwin = chatwin; - ret.stb = stb; - } else { - endwin(); - fprintf(stderr, "calloc() failed. Aborting...\n"); - exit(EXIT_FAILURE); - } + if (stb == NULL || chatwin == NULL) + exit_toxic_err("failed in new_prompt", FATALERR_MEMORY); + + ret.chatwin = chatwin; + ret.stb = stb; return ret; } diff --git a/src/toxic.c b/src/toxic.c index 8ee9976..6eb4254 100644 --- a/src/toxic.c +++ b/src/toxic.c @@ -89,18 +89,47 @@ static void ignore_SIGINT(int sig) return; } +void exit_toxic_success(Tox *m) +{ + store_data(m, DATA_FILE); + close_all_file_senders(); + kill_all_windows(); + log_disable(prompt->chatwin->log); + line_info_cleanup(prompt->chatwin->hst); + free(DATA_FILE); + free(prompt->stb); + free(prompt->chatwin->log); + free(prompt->chatwin->hst); + free(prompt->chatwin); + free(user_settings); +#ifdef _SUPPORT_AUDIO + terminate_audio(); +#endif /* _SUPPORT_AUDIO */ + tox_kill(m); + endwin(); + fprintf(stderr, "Toxic session ended gracefully.\n"); + exit(EXIT_SUCCESS); +} + +void exit_toxic_err(const char *errmsg, int retcode) +{ + if (errmsg == NULL) + errmsg = "No error message"; + + endwin(); + fprintf(stderr, "Toxic session aborted with return code %d (%s)\n", retcode, errmsg); + exit(retcode); +} + static void init_term(void) { signal(SIGWINCH, on_window_resize); #if HAVE_WIDECHAR - if (setlocale(LC_ALL, "") == NULL) { - fprintf(stderr, "Could not set your locale, plese check your locale settings or" - "disable wide char support\n"); - exit(EXIT_FAILURE); - } - + if (setlocale(LC_ALL, "") == NULL) + exit_toxic_err("Could not set your locale, plese check your locale settings or" + "disable wide char support", FATALERR_LOCALE_SET); #endif initscr(); @@ -394,17 +423,13 @@ static void load_data(Tox *m, char *path) if (buf == NULL) { fclose(fd); - endwin(); - fprintf(stderr, "malloc() failed. Aborting...\n"); - exit(EXIT_FAILURE); + exit_toxic_err("failed in load_data", FATALERR_MEMORY); } if (fread(buf, len, 1, fd) != 1) { free(buf); fclose(fd); - endwin(); - fprintf(stderr, "fread() failed. Aborting...\n"); - exit(EXIT_FAILURE); + exit_toxic_err("failed in load_data", FATALERR_FREAD); } tox_load(m, buf, len); @@ -415,35 +440,11 @@ static void load_data(Tox *m, char *path) } else { int st; - if ((st = store_data(m, path)) != 0) { - endwin(); - fprintf(stderr, "Store messenger failed with return code: %d\n", st); - exit(EXIT_FAILURE); - } + if ((st = store_data(m, path)) == 0) + exit_toxic_err("failed in load_data", FATALERR_STORE_DATA); } } -void exit_toxic(Tox *m) -{ - store_data(m, DATA_FILE); - close_all_file_senders(); - kill_all_windows(); - log_disable(prompt->chatwin->log); - line_info_cleanup(prompt->chatwin->hst); - free(DATA_FILE); - free(prompt->stb); - free(prompt->chatwin->log); - free(prompt->chatwin->hst); - free(prompt->chatwin); - free(user_settings); -#ifdef _SUPPORT_AUDIO - terminate_audio(); -#endif /* _SUPPORT_AUDIO */ - tox_kill(m); - endwin(); - exit(EXIT_SUCCESS); -} - static void do_toxic(Tox *m, ToxWindow *prompt) { pthread_mutex_lock(&Winthread.lock); @@ -523,7 +524,7 @@ static void parse_args(int argc, char *argv[]) case 'h': default: print_usage(); - exit(EXIT_FAILURE); + exit(EXIT_SUCCESS); } } } @@ -548,15 +549,12 @@ int main(int argc, char *argv[]) } else { DATA_FILE = malloc(strlen(user_config_dir) + strlen(CONFIGDIR) + strlen("data") + 1); - if (DATA_FILE != NULL) { - strcpy(DATA_FILE, user_config_dir); - strcat(DATA_FILE, CONFIGDIR); - strcat(DATA_FILE, "data"); - } else { - endwin(); - fprintf(stderr, "malloc() failed. Aborting...\n"); - exit(EXIT_FAILURE); - } + if (DATA_FILE == NULL) + exit_toxic_err("failed in main", FATALERR_MEMORY); + + strcpy(DATA_FILE, user_config_dir); + strcat(DATA_FILE, CONFIGDIR); + strcat(DATA_FILE, "data"); } } @@ -565,11 +563,8 @@ int main(int argc, char *argv[]) /* init user_settings struct and load settings from conf file */ user_settings = malloc(sizeof(struct user_settings)); - if (user_settings == NULL) { - endwin(); - fprintf(stderr, "malloc() failed. Aborting...\n"); - exit(EXIT_FAILURE); - } + if (user_settings == NULL) + exit_toxic_err("failed in main", FATALERR_MEMORY); memset(user_settings, 0, sizeof(struct user_settings)); @@ -579,11 +574,8 @@ int main(int argc, char *argv[]) Tox *m = init_tox(arg_opts.use_ipv4); init_term(); - if (m == NULL) { - endwin(); - fprintf(stderr, "Failed to initialize network. Aborting...\n"); - exit(EXIT_FAILURE); - } + if (m == NULL) + exit_toxic_err("failed in main", FATALERR_NETWORKINIT); if (!arg_opts.ignore_data_file) load_data(m, DATA_FILE); @@ -591,17 +583,12 @@ int main(int argc, char *argv[]) prompt = init_windows(m); /* create new thread for ncurses stuff */ - if (pthread_mutex_init(&Winthread.lock, NULL) != 0) { - endwin(); - fprintf(stderr, "Mutex init failed. Aborting...\n"); - exit(EXIT_FAILURE); - } + if (pthread_mutex_init(&Winthread.lock, NULL) != 0) + exit_toxic_err("failed in main", FATALERR_MUTEX_INIT); - if (pthread_create(&Winthread.tid, NULL, thread_winref, (void *) m) != 0) { - endwin(); - fprintf(stderr, "Thread creation failed. Aborting...\n"); - exit(EXIT_FAILURE); - } + if (pthread_create(&Winthread.tid, NULL, thread_winref, (void *) m) != 0) + exit_toxic_err("failed in main", FATALERR_THREAD_CREATE); + uint8_t *msg; diff --git a/src/toxic.h b/src/toxic.h index 166998d..a6000d9 100644 --- a/src/toxic.h +++ b/src/toxic.h @@ -42,7 +42,6 @@ #define TIME_STR_SIZE 16 #define EXIT_SUCCESS 0 -#define EXIT_FAILURE 1 /* ASCII key codes */ #define T_KEY_KILL 0x0B /* ctrl-k */ @@ -60,10 +59,25 @@ enum { MOVE_DOWN, } KEY_DIRS; +typedef enum _FATAL_ERRS { + FATALERR_MEMORY = -1, + FATALERR_FREAD = -2, + FATALERR_THREAD_CREATE = -3, + FATALERR_MUTEX_INIT = -4, + FATALERR_LOCALE_SET = -5, + FATALERR_STORE_DATA = -6, + FATALERR_NETWORKINIT = -7, + FATALERR_INFLOOP = -8, + FATALERR_WININIT = -9, +} FATAL_ERRS; + /* Fixes text color problem on some terminals. Uncomment if necessary */ /* #define URXVT_FIX */ +void exit_toxic_success(Tox *m); +void exit_toxic_err(const char *errmsg, int retcode); + void on_request(Tox *m, const uint8_t *public_key, const uint8_t *data, uint16_t length, void *userdata); void on_connectionchange(Tox *m, int32_t friendnumber, uint8_t status, void *userdata); void on_message(Tox *m, int32_t friendnumber, uint8_t *string, uint16_t length, void *userdata); diff --git a/src/windows.c b/src/windows.c index 1aa7f2d..1295248 100644 --- a/src/windows.c +++ b/src/windows.c @@ -284,11 +284,8 @@ void set_next_window(int ch) if (active_window->window) return; - if (active_window == inf) { /* infinite loop check */ - endwin(); - fprintf(stderr, "set_next_window() failed. Aborting...\n"); - exit(EXIT_FAILURE); - } + if (active_window == inf) /* infinite loop check */ + exit_toxic_err("failed in set_next_window", FATALERR_INFLOOP); } } @@ -304,11 +301,8 @@ ToxWindow *init_windows(Tox *m) { int n_prompt = add_window(m, new_prompt()); - if (n_prompt == -1 || add_window(m, new_friendlist()) == -1) { - endwin(); - fprintf(stderr, "add_window() failed. Aborting...\n"); - exit(EXIT_FAILURE); - } + if (n_prompt == -1 || add_window(m, new_friendlist()) == -1) + exit_toxic_err("failed in init_windows", FATALERR_WININIT); prompt = &windows[n_prompt]; active_window = prompt; From 7eb82a0fe52562b61c5ae17967a6d30be3d0ed42 Mon Sep 17 00:00:00 2001 From: Jfreegman Date: Wed, 18 Jun 2014 15:54:50 -0400 Subject: [PATCH 53/63] bump version to 0.4.1 --- configure.ac | 2 +- src/toxic.c | 6 +++--- src/toxic.h | 14 ++++++-------- 3 files changed, 10 insertions(+), 12 deletions(-) diff --git a/configure.ac b/configure.ac index 3fc3a3a..3b1f181 100644 --- a/configure.ac +++ b/configure.ac @@ -2,7 +2,7 @@ # Process this file with autoconf to produce a configure script. AC_PREREQ([2.65]) -AC_INIT([toxic], [0.4.0], [https://tox.im/]) +AC_INIT([toxic], [0.4.1], [https://tox.im/]) AC_CONFIG_AUX_DIR(configure_aux) AC_CONFIG_SRCDIR([src/toxic.c]) AC_CONFIG_HEADERS([config.h]) diff --git a/src/toxic.c b/src/toxic.c index 6eb4254..c7e0465 100644 --- a/src/toxic.c +++ b/src/toxic.c @@ -111,14 +111,14 @@ void exit_toxic_success(Tox *m) exit(EXIT_SUCCESS); } -void exit_toxic_err(const char *errmsg, int retcode) +void exit_toxic_err(const char *errmsg, int errcode) { if (errmsg == NULL) errmsg = "No error message"; endwin(); - fprintf(stderr, "Toxic session aborted with return code %d (%s)\n", retcode, errmsg); - exit(retcode); + fprintf(stderr, "Toxic session aborted with error code %d (%s)\n", errcode, errmsg); + exit(EXIT_FAILURE); } static void init_term(void) diff --git a/src/toxic.h b/src/toxic.h index a6000d9..97503c7 100644 --- a/src/toxic.h +++ b/src/toxic.h @@ -41,8 +41,6 @@ #define KEY_IDENT_DIGITS 2 /* number of hex digits to display for the pub-key based identifier */ #define TIME_STR_SIZE 16 -#define EXIT_SUCCESS 0 - /* ASCII key codes */ #define T_KEY_KILL 0x0B /* ctrl-k */ #define T_KEY_DISCARD 0x15 /* ctrl-u */ @@ -60,15 +58,15 @@ enum { } KEY_DIRS; typedef enum _FATAL_ERRS { - FATALERR_MEMORY = -1, - FATALERR_FREAD = -2, + FATALERR_MEMORY = -1, /* malloc() or calloc() failed */ + FATALERR_FREAD = -2, /* fread() failed on critical read */ FATALERR_THREAD_CREATE = -3, FATALERR_MUTEX_INIT = -4, FATALERR_LOCALE_SET = -5, FATALERR_STORE_DATA = -6, - FATALERR_NETWORKINIT = -7, - FATALERR_INFLOOP = -8, - FATALERR_WININIT = -9, + FATALERR_NETWORKINIT = -7, /* Tox network failed to init */ + FATALERR_INFLOOP = -8, /* infinite loop detected */ + FATALERR_WININIT = -9, /* window init failed */ } FATAL_ERRS; /* Fixes text color problem on some terminals. @@ -76,7 +74,7 @@ typedef enum _FATAL_ERRS { /* #define URXVT_FIX */ void exit_toxic_success(Tox *m); -void exit_toxic_err(const char *errmsg, int retcode); +void exit_toxic_err(const char *errmsg, int errcode); void on_request(Tox *m, const uint8_t *public_key, const uint8_t *data, uint16_t length, void *userdata); void on_connectionchange(Tox *m, int32_t friendnumber, uint8_t status, void *userdata); From 0cff881d699f77ca14c66e5956350a966205186e Mon Sep 17 00:00:00 2001 From: Jfreegman Date: Wed, 18 Jun 2014 18:07:51 -0400 Subject: [PATCH 54/63] small fix --- src/toxic.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/toxic.c b/src/toxic.c index c7e0465..0aa441c 100644 --- a/src/toxic.c +++ b/src/toxic.c @@ -440,7 +440,7 @@ static void load_data(Tox *m, char *path) } else { int st; - if ((st = store_data(m, path)) == 0) + if ((st = store_data(m, path)) != 0) exit_toxic_err("failed in load_data", FATALERR_STORE_DATA); } } From ca98b49813c78cf3aede241c3dea7743c8ecabda Mon Sep 17 00:00:00 2001 From: Jfreegman Date: Wed, 18 Jun 2014 18:29:07 -0400 Subject: [PATCH 55/63] fix scrolling bug --- src/line_info.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/line_info.c b/src/line_info.c index a6442f0..177440d 100644 --- a/src/line_info.c +++ b/src/line_info.c @@ -222,7 +222,7 @@ static void line_info_check_queue(ToxWindow *self) /* move line_start forward proportionate to the number of new lines */ if (y + lines - 1 >= max_y) { while (lines > 0 && hst->line_start->next) { - lines -= 1 + hst->line_start->newlines + (hst->line_start->len / (x2 - offst)); + lines -= 1 + hst->line_start->next->newlines + (hst->line_start->next->len / (x2 - offst)); hst->line_start = hst->line_start->next; ++hst->start_id; } From 85af9f55ba4652bdc61b8d296842944bfa41f3cb Mon Sep 17 00:00:00 2001 From: Jfreegman Date: Wed, 18 Jun 2014 20:07:34 -0400 Subject: [PATCH 56/63] improve key bindings (I think?) --- src/line_info.c | 14 +++++++------- src/toxic.h | 3 ++- 2 files changed, 9 insertions(+), 8 deletions(-) diff --git a/src/line_info.c b/src/line_info.c index 177440d..a9e1b4b 100644 --- a/src/line_info.c +++ b/src/line_info.c @@ -440,14 +440,14 @@ bool line_info_onKey(ToxWindow *self, wint_t key) bool match = true; switch (key) { - /* TODO: Find good key bindings for page up/page down scroll behaviour */ - /* case KEY_SPREVIOUS: + /* TODO: Find good key bindings for all this stuff */ + case T_KEY_C_H: line_info_page_up(self, hst); break; - case KEY_SNEXT: + case T_KEY_C_B: line_info_page_down(self, hst); - break; */ + break; case KEY_PPAGE: line_info_scroll_up(hst); @@ -457,13 +457,13 @@ bool line_info_onKey(ToxWindow *self, wint_t key) line_info_scroll_down(hst); break; - case KEY_HOME: + /* case ?: line_info_goto_root(hst); break; - case KEY_END: + case ?: line_info_reset_start(self, hst); - break; + break; */ default: match = false; diff --git a/src/toxic.h b/src/toxic.h index 97503c7..883db2f 100644 --- a/src/toxic.h +++ b/src/toxic.h @@ -48,9 +48,10 @@ #define T_KEY_PREV 0x0F /* ctrl-o */ #define T_KEY_C_E 0x05 /* ctrl-e */ #define T_KEY_C_A 0x01 /* ctrl-a */ -#define T_KEY_ESC 0x1B /* ESC key */ #define T_KEY_C_RB 0x1D /* ctrl-] */ #define T_KEY_C_LB 0x1B /* ctrl-[ */ +#define T_KEY_C_B 0x02 /* ctrl-b */ +#define T_KEY_C_H 0x08 /* ctrl-h */ enum { MOVE_UP, From eb7d91068313744a003770122875dcce5baff719 Mon Sep 17 00:00:00 2001 From: Jfreegman Date: Wed, 18 Jun 2014 20:22:26 -0400 Subject: [PATCH 57/63] add toxme.se to dns3 server list --- src/dns.c | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src/dns.c b/src/dns.c index ba7f5f1..190d277 100644 --- a/src/dns.c +++ b/src/dns.c @@ -40,10 +40,11 @@ #include "misc_tools.h" #define MAX_DNS_REQST_SIZE 256 -#define NUM_DNS3_SERVERS 1 /* must correspond to number of items in dns3_servers array */ +#define NUM_DNS3_SERVERS 2 /* must correspond to number of items in dns3_servers array */ #define TOX_DNS3_TXT_PREFIX "v=tox3;id=" #define DNS3_KEY_SZ 32 +/* TODO: process keys from key file instead of hard-coding like a noob */ static struct dns3_server { uint8_t *name; uint8_t key[DNS3_KEY_SZ]; @@ -55,6 +56,13 @@ static struct dns3_server { 0x1C, 0x23, 0x3C, 0xC8, 0x57, 0xFB, 0x36, 0x5C, 0x56, 0xE8, 0x39, 0x27, 0x37, 0x46, 0x2A, 0x12 } }, + { + "toxme.se", + { + 0x5D, 0x72, 0xC5, 0x17, 0xDF, 0x6A, 0xEC, 0x54, 0xF1, 0xE9, 0x77, 0xA6, 0xB6, 0xF2, 0x59, 0x14, + 0xEA, 0x4C, 0xF7, 0x27, 0x7A, 0x85, 0x02, 0x7C, 0xD9, 0xF5, 0x19, 0x6D, 0xF1, 0x7E, 0x0B, 0x13 + } + }, }; static struct _thread_data { From 034a8f5d8b92cc5d17288c6a93d46e296443d2b2 Mon Sep 17 00:00:00 2001 From: Jfreegman Date: Thu, 19 Jun 2014 13:50:41 -0400 Subject: [PATCH 58/63] code cleanup, improve do_connection --- src/dns.c | 7 +++-- src/groupchat.c | 2 +- src/groupchat.h | 2 +- src/misc_tools.h | 2 +- src/toxic.c | 79 +++++++++++++++++++++++++++--------------------- 5 files changed, 51 insertions(+), 41 deletions(-) diff --git a/src/dns.c b/src/dns.c index 190d277..8217cb2 100644 --- a/src/dns.c +++ b/src/dns.c @@ -50,8 +50,8 @@ static struct dns3_server { uint8_t key[DNS3_KEY_SZ]; } dns3_servers[] = { { - "utox.org", - { + "utox.org", + { 0xD3, 0x15, 0x4F, 0x65, 0xD2, 0x8A, 0x5B, 0x41, 0xA0, 0x5D, 0x4A, 0xC7, 0xE4, 0xB3, 0x9C, 0x6B, 0x1C, 0x23, 0x3C, 0xC8, 0x57, 0xFB, 0x36, 0x5C, 0x56, 0xE8, 0x39, 0x27, 0x37, 0x46, 0x2A, 0x12 } @@ -79,6 +79,7 @@ static struct _dns_thread { pthread_mutex_t lock; } dns_thread; + static int dns_error(ToxWindow *self, uint8_t *errmsg) { uint8_t msg[MAX_STR_SIZE]; @@ -289,10 +290,10 @@ void dns3_lookup(ToxWindow *self, Tox *m, uint8_t *id_bin, uint8_t *addr, uint8_ return; } - t_data.self = self; snprintf(t_data.id_bin, sizeof(t_data.id_bin), "%s", id_bin); snprintf(t_data.addr, sizeof(t_data.addr), "%s", addr); snprintf(t_data.msg, sizeof(t_data.msg), "%s", msg); + t_data.self = self; t_data.m = m; t_data.busy = 1; diff --git a/src/groupchat.c b/src/groupchat.c index 2a048a1..dfef239 100644 --- a/src/groupchat.c +++ b/src/groupchat.c @@ -297,7 +297,7 @@ static void groupchat_onGroupNamelistChange(ToxWindow *self, Tox *m, int groupnu if (self->num != groupnum) return; - if (groupnum > MAX_GROUPCHAT_NUM) + if (groupnum > max_groupchat_index) return; groupchats[groupnum].num_peers = tox_group_number_peers(m, groupnum); diff --git a/src/groupchat.h b/src/groupchat.h index f95e0f9..56f08b8 100644 --- a/src/groupchat.h +++ b/src/groupchat.h @@ -28,7 +28,7 @@ #define SIDEBAR_WIDTH 16 #define SDBAR_OFST 2 /* Offset for the peer number box at the top of the statusbar */ -#define MAX_GROUPCHAT_NUM MAX_WINDOWS_NUM +#define MAX_GROUPCHAT_NUM MAX_WINDOWS_NUM - 2 typedef struct { int chatwin; diff --git a/src/misc_tools.h b/src/misc_tools.h index 699ab20..87908f7 100644 --- a/src/misc_tools.h +++ b/src/misc_tools.h @@ -86,7 +86,7 @@ void mv_curs_end(WINDOW *w, size_t len, int max_y, int max_x); /* gets base file name from path or original file name if no path is supplied */ void get_file_name(uint8_t *namebuf, uint8_t *pathname); -/* converts str to all uppercase */ +/* converts str to all lowercase */ void str_to_lower(uint8_t *str); #endif /* #define _misc_tools_h */ diff --git a/src/toxic.c b/src/toxic.c index 0aa441c..582e4dd 100644 --- a/src/toxic.c +++ b/src/toxic.c @@ -128,7 +128,7 @@ static void init_term(void) #if HAVE_WIDECHAR if (setlocale(LC_ALL, "") == NULL) - exit_toxic_err("Could not set your locale, plese check your locale settings or" + exit_toxic_err("Could not set your locale, please check your locale settings or" "disable wide char support", FATALERR_LOCALE_SET); #endif @@ -217,10 +217,12 @@ static Tox *init_tox(int ipv4) #define MAXNODES 50 #define NODELEN (MAXLINE - TOX_CLIENT_ID_SIZE - 7) -static int linecnt = 0; -static char nodes[MAXNODES][NODELEN]; -static uint16_t ports[MAXNODES]; -static uint8_t keys[MAXNODES][TOX_CLIENT_ID_SIZE]; +static struct _toxNodes { + int lines; + char nodes[MAXNODES][NODELEN]; + uint16_t ports[MAXNODES]; + uint8_t keys[MAXNODES][TOX_CLIENT_ID_SIZE]; +} toxNodes; static int nodelist_load(char *filename) { @@ -234,7 +236,7 @@ static int nodelist_load(char *filename) char line[MAXLINE]; - while (fgets(line, sizeof(line), fp) && linecnt < MAXNODES) { + while (fgets(line, sizeof(line), fp) && toxNodes.lines < MAXNODES) { if (strlen(line) > MINLINE) { const char *name = strtok(line, " "); const char *port = strtok(NULL, " "); @@ -244,19 +246,19 @@ static int nodelist_load(char *filename) if (name == NULL || port == NULL || key_ascii == NULL) continue; - snprintf(nodes[linecnt], sizeof(nodes[linecnt]), "%s", name); - nodes[linecnt][NODELEN - 1] = 0; - ports[linecnt] = htons(atoi(port)); + snprintf(toxNodes.nodes[toxNodes.lines], sizeof(toxNodes.nodes[toxNodes.lines]), "%s", name); + toxNodes.nodes[toxNodes.lines][NODELEN - 1] = 0; + toxNodes.ports[toxNodes.lines] = htons(atoi(port)); uint8_t *key_binary = hex_string_to_bin(key_ascii); - memcpy(keys[linecnt], key_binary, TOX_CLIENT_ID_SIZE); + memcpy(toxNodes.keys[toxNodes.lines], key_binary, TOX_CLIENT_ID_SIZE); free(key_binary); - linecnt++; + toxNodes.lines++; } } - if (linecnt < 1) { + if (toxNodes.lines < 1) { fclose(fp); return 2; } @@ -267,8 +269,8 @@ static int nodelist_load(char *filename) int init_connection_helper(Tox *m, int line) { - return tox_bootstrap_from_address(m, nodes[line], TOX_ENABLE_IPV6_DEFAULT, - ports[line], keys[line]); + return tox_bootstrap_from_address(m, toxNodes.nodes[line], TOX_ENABLE_IPV6_DEFAULT, + toxNodes.ports[line], toxNodes.keys[line]); } /* Connects to a random DHT node listed in the DHTnodes file @@ -285,8 +287,8 @@ static bool srvlist_loaded = false; int init_connection(Tox *m) { - if (linecnt > 0) /* already loaded nodelist */ - return init_connection_helper(m, rand() % linecnt) ? 0 : 3; + if (toxNodes.lines > 0) /* already loaded nodelist */ + return init_connection_helper(m, rand() % toxNodes.lines) ? 0 : 3; /* only once: * - load the nodelist @@ -301,15 +303,15 @@ int init_connection(Tox *m) else res = nodelist_load(arg_opts.nodes_path); - if (linecnt < 1) + if (toxNodes.lines < 1) return res; res = 3; int i; - int n = MIN(NUM_INIT_NODES, linecnt); + int n = MIN(NUM_INIT_NODES, toxNodes.lines); for (i = 0; i < n; ++i) { - if (init_connection_helper(m, rand() % linecnt)) + if (init_connection_helper(m, rand() % toxNodes.lines)) res = 0; } @@ -320,30 +322,37 @@ int init_connection(Tox *m) return 4; } +#define TRY_CONNECT 10 + static void do_connection(Tox *m, ToxWindow *prompt) { uint8_t msg[MAX_STR_SIZE] = {0}; - static int conn_try = 0; static int conn_err = 0; - static bool dht_on = false; - + static bool was_connected = false; + static uint64_t last_conn_try = 0; + uint64_t curtime = get_unix_time(); bool is_connected = tox_isconnected(m); - if (!dht_on && !is_connected && !(conn_try++ % 100)) { - if (!conn_err) { - if ((conn_err = init_connection(m))) { - snprintf(msg, sizeof(msg), "\nAuto-connect failed with error code %d", conn_err); - } - } - } else if (!dht_on && is_connected) { - dht_on = true; - prompt_update_connectionstatus(prompt, dht_on); + if (was_connected && is_connected) + return; + + if (!was_connected && is_connected) { + was_connected = true; + prompt_update_connectionstatus(prompt, was_connected); snprintf(msg, sizeof(msg), "DHT connected."); - } else if (dht_on && !is_connected) { - dht_on = false; - prompt_update_connectionstatus(prompt, dht_on); - snprintf(msg, sizeof(msg), "\nDHT disconnected. Attempting to reconnect."); + } else if (was_connected && !is_connected) { + was_connected = false; + prompt_update_connectionstatus(prompt, was_connected); + snprintf(msg, sizeof(msg), "DHT disconnected. Attempting to reconnect."); + } else if (!was_connected && !is_connected && timed_out(last_conn_try, curtime, TRY_CONNECT)) { + /* if autoconnect has already failed there's no point in trying again */ + if (conn_err == 0) { + last_conn_try = curtime; + + if ((conn_err = init_connection(m)) != 0) + snprintf(msg, sizeof(msg), "Auto-connect failed with error code %d", conn_err); + } } if (msg[0]) From 3e797db16e1e6a6db88a4a79c8b19791dea20838 Mon Sep 17 00:00:00 2001 From: Jfreegman Date: Fri, 20 Jun 2014 14:27:33 -0400 Subject: [PATCH 59/63] various fixes --- src/groupchat.c | 4 ++-- src/line_info.c | 17 +++++++++-------- src/toxic.h | 3 ++- 3 files changed, 13 insertions(+), 11 deletions(-) diff --git a/src/groupchat.c b/src/groupchat.c index dfef239..20fb848 100644 --- a/src/groupchat.c +++ b/src/groupchat.c @@ -521,14 +521,14 @@ static void groupchat_onKey(ToxWindow *self, Tox *m, wint_t key, bool ltr) } /* Scroll peerlist up and down one position if list overflows window */ - else if (key == T_KEY_C_LB) { + else if (key == T_KEY_C_RB) { int L = y2 - CHATBOX_HEIGHT - SDBAR_OFST; if (groupchats[self->num].side_pos < groupchats[self->num].num_peers - L) ++groupchats[self->num].side_pos; } - else if (key == T_KEY_C_RB) { + else if (key == T_KEY_C_LB) { if (groupchats[self->num].side_pos > 0) --groupchats[self->num].side_pos; } diff --git a/src/line_info.c b/src/line_info.c index a9e1b4b..42d617f 100644 --- a/src/line_info.c +++ b/src/line_info.c @@ -56,14 +56,15 @@ static void line_info_reset_start(ToxWindow *self, struct history *hst) getmaxyx(self->window, y2, x2); struct line_info *line = hst->line_end; + uint16_t lncnt = 0; int side_offst = self->is_groupchat ? SIDEBAR_WIDTH : 0; - int top_offst = self->is_chat ? 3 : 0; + int top_offst = self->is_chat ? 2 : 0; int max_y = (y2 - CHATBOX_HEIGHT - top_offst); while (line->prev && lncnt < max_y) { + lncnt += (1 + line->newlines) +( line->len / (x2 - side_offst)); line = line->prev; - lncnt += (1 + line->len / (x2 - side_offst)); } hst->line_start = line; @@ -441,11 +442,11 @@ bool line_info_onKey(ToxWindow *self, wint_t key) switch (key) { /* TODO: Find good key bindings for all this stuff */ - case T_KEY_C_H: + case T_KEY_C_F: line_info_page_up(self, hst); break; - case T_KEY_C_B: + case T_KEY_C_V: line_info_page_down(self, hst); break; @@ -459,12 +460,12 @@ bool line_info_onKey(ToxWindow *self, wint_t key) /* case ?: line_info_goto_root(hst); - break; - - case ?: - line_info_reset_start(self, hst); break; */ + case T_KEY_C_H: + line_info_reset_start(self, hst); + break; + default: match = false; break; diff --git a/src/toxic.h b/src/toxic.h index 883db2f..df0a0fa 100644 --- a/src/toxic.h +++ b/src/toxic.h @@ -50,7 +50,8 @@ #define T_KEY_C_A 0x01 /* ctrl-a */ #define T_KEY_C_RB 0x1D /* ctrl-] */ #define T_KEY_C_LB 0x1B /* ctrl-[ */ -#define T_KEY_C_B 0x02 /* ctrl-b */ +#define T_KEY_C_V 0x16 /* ctrl-v */ +#define T_KEY_C_F 0x06 /* ctrl-f */ #define T_KEY_C_H 0x08 /* ctrl-h */ enum { From 9f4248b1e18821c4eb937a02420529ff4e46ca65 Mon Sep 17 00:00:00 2001 From: Jfreegman Date: Fri, 20 Jun 2014 23:08:13 -0400 Subject: [PATCH 60/63] redesign text input field to scroll horizontally, increase max string size --- src/chat.c | 70 ++++++++++++++++++++++++++++----------------- src/groupchat.c | 62 +++++++++++++++++++++++++-------------- src/misc_tools.c | 5 ++-- src/toxic.h | 2 +- src/toxic_strings.c | 4 ++- src/toxic_strings.h | 2 +- src/windows.h | 5 ++-- 7 files changed, 94 insertions(+), 56 deletions(-) diff --git a/src/chat.c b/src/chat.c index f64c8ae..f33dd55 100644 --- a/src/chat.c +++ b/src/chat.c @@ -547,17 +547,19 @@ static void chat_onKey(ToxWindow *self, Tox *m, wint_t key, bool ltr) int x, y, y2, x2; getyx(self->window, y, x); getmaxyx(self->window, y2, x2); - int cur_len = 0; + int cur_len = 0; /* widechar len of current char */ + int len = MAX(0, wcslen(ctx->line)); /* widechar len of line */ - if (ltr) { - /* prevents buffer overflows and strange behaviour when cursor goes past the window */ - if ( (ctx->len < MAX_STR_SIZE - 1) && (ctx->len < (x2 * (CHATBOX_HEIGHT - 1) - 1)) ) { + if (ltr) { /* char is printable */ + if (ctx->len < MAX_STR_SIZE - 1) { add_char_to_buf(ctx, key); - if (x == x2 - 1) - wmove(self->window, y + 1, 0); - else + if (x >= x2 - 1) { + wmove(self->window, y, x2 / 2); + ctx->start += x2 / 2; + } else { wmove(self->window, y, x + MAX(1, wcwidth(key))); + } } if (!ctx->self_is_typing && ctx->line[0] != '/') @@ -569,13 +571,16 @@ static void chat_onKey(ToxWindow *self, Tox *m, wint_t key, bool ltr) if (key == 0x107 || key == 0x8 || key == 0x7f) { /* BACKSPACE key */ if (ctx->pos > 0) { - cur_len = MAX(1, wcwidth(ctx->line[ctx->pos - 1])); + cur_len = MAX(1, wcwidth(ctx->line[ctx->pos])); del_char_buf_bck(ctx); - if (x == 0) - wmove(self->window, y - 1, x2 - cur_len); - else + if (x == 0) { + wmove(self->window, y, x2 - cur_len); + ctx->start = ctx->start >= x2 ? ctx->start - x2 : 0; + ctx->pos = ctx->start + x2 - 1; + } else { wmove(self->window, y, x - cur_len); + } } else { beep(); } @@ -607,6 +612,7 @@ static void chat_onKey(ToxWindow *self, Tox *m, wint_t key, bool ltr) else if (key == KEY_HOME || key == T_KEY_C_A) { /* HOME/C-a key: Move cursor to start of line */ if (ctx->pos > 0) { ctx->pos = 0; + ctx->start = 0; wmove(self->window, y2 - CURS_Y_OFFSET, 0); } } @@ -614,7 +620,8 @@ static void chat_onKey(ToxWindow *self, Tox *m, wint_t key, bool ltr) else if (key == KEY_END || key == T_KEY_C_E) { /* END/C-e key: move cursor to end of line */ if (ctx->pos != ctx->len) { ctx->pos = ctx->len; - mv_curs_end(self->window, MAX(0, wcswidth(ctx->line, (CHATBOX_HEIGHT - 1)*x2)), y2, x2); + ctx->start = x2 * (len / x2); + mv_curs_end(self->window, len, y2, x2); } } @@ -623,10 +630,13 @@ static void chat_onKey(ToxWindow *self, Tox *m, wint_t key, bool ltr) --ctx->pos; cur_len = MAX(1, wcwidth(ctx->line[ctx->pos])); - if (x == 0) - wmove(self->window, y - 1, x2 - cur_len); - else + if (x == 0) { + wmove(self->window, y, x2 - cur_len); + ctx->start = ctx->start >= x2 ? ctx->start - x2 : 0; + ctx->pos = ctx->start + x2 - 1; + } else { wmove(self->window, y, x - cur_len); + } } else { beep(); } @@ -634,13 +644,16 @@ static void chat_onKey(ToxWindow *self, Tox *m, wint_t key, bool ltr) else if (key == KEY_RIGHT) { if (ctx->pos < ctx->len) { - cur_len = MAX(1, wcwidth(ctx->line[ctx->pos])); ++ctx->pos; - if (x == x2 - 1) - wmove(self->window, y + 1, 0); - else + if (x == x2 - 1) { + wmove(self->window, y, 0); + ctx->start += x2; + ctx->pos = ctx->start; + } else { + cur_len = MAX(1, wcwidth(ctx->line[ctx->pos])); wmove(self->window, y, x + cur_len); + } } else { beep(); } @@ -648,12 +661,16 @@ static void chat_onKey(ToxWindow *self, Tox *m, wint_t key, bool ltr) else if (key == KEY_UP) { /* fetches previous item in history */ fetch_hist_item(ctx, MOVE_UP); - mv_curs_end(self->window, ctx->len, y2, x2); + len = wcslen(ctx->line); + ctx->start = x2 * (len / x2); + mv_curs_end(self->window, len, y2, x2); } else if (key == KEY_DOWN) { /* fetches next item in history */ fetch_hist_item(ctx, MOVE_DOWN); - mv_curs_end(self->window, ctx->len, y2, x2); + len = wcslen(ctx->line); + ctx->start = x2 * (len / x2); + mv_curs_end(self->window, len, y2, x2); } else if (key == '\t') { /* TAB key: completes command */ @@ -662,8 +679,9 @@ static void chat_onKey(ToxWindow *self, Tox *m, wint_t key, bool ltr) if (diff != -1) { if (x + diff > x2 - 1) { - int ofst = (x + diff - 1) - (x2 - 1); - wmove(self->window, y + 1, ofst); + //int ofst = x + diff - x2; + wmove(self->window, y, x + diff); + ctx->start += x2 / 2; } else { wmove(self->window, y, x + diff); } @@ -739,16 +757,15 @@ static void chat_onDraw(ToxWindow *self, Tox *m) wclear(ctx->linewin); curs_set(1); - scrollok(ctx->history, 0); - if (ctx->len> 0) { + if (ctx->len > 0) { uint8_t line[MAX_STR_SIZE]; if (wcs_to_mbs_buf(line, ctx->line, MAX_STR_SIZE) == -1) { reset_buf(ctx); wmove(self->window, y2 - CURS_Y_OFFSET, 0); } else { - mvwprintw(ctx->linewin, 1, 0, "%s", line); + mvwprintw(ctx->linewin, 1, 0, "%s", &line[ctx->start]); } } @@ -888,6 +905,7 @@ static void chat_onInit(ToxWindow *self, Tox *m) execute(ctx->history, self, m, "/help", CHAT_COMMAND_MODE); execute(ctx->history, self, m, "/log", GLOBAL_COMMAND_MODE); + scrollok(ctx->history, 0); wmove(self->window, y2 - CURS_Y_OFFSET, 0); } diff --git a/src/groupchat.c b/src/groupchat.c index 20fb848..f1f5335 100644 --- a/src/groupchat.c +++ b/src/groupchat.c @@ -389,16 +389,19 @@ static void groupchat_onKey(ToxWindow *self, Tox *m, wint_t key, bool ltr) int x, y, y2, x2; getyx(self->window, y, x); getmaxyx(self->window, y2, x2); - int cur_len = 0; + int cur_len = 0; /* widechar len of current char */ + int len = MAX(0, wcslen(ctx->line)); /* widechar len of line */ - if (ltr) { - if ( (ctx->len < MAX_STR_SIZE - 1) && (ctx->len < (x2 * (CHATBOX_HEIGHT - 1) - 1)) ) { + if (ltr) { /* char is printable */ + if (ctx->len < MAX_STR_SIZE - 1) { add_char_to_buf(ctx, key); - if (x == x2 - 1) - wmove(self->window, y + 1, 0); - else + if (x >= x2 - 1) { + wmove(self->window, y, x2 / 2); + ctx->start += x2 / 2; + } else { wmove(self->window, y, x + MAX(1, wcwidth(key))); + } } } else { /* if (!ltr) */ @@ -406,15 +409,18 @@ static void groupchat_onKey(ToxWindow *self, Tox *m, wint_t key, bool ltr) if (line_info_onKey(self, key)) return; - if (key == 0x107 || key == 0x8 || key == 0x7f) { /* BACKSPACE key: Remove character behind pos */ + if (key == 0x107 || key == 0x8 || key == 0x7f) { /* BACKSPACE key */ if (ctx->pos > 0) { - cur_len = MAX(1, wcwidth(ctx->line[ctx->pos - 1])); + cur_len = MAX(1, wcwidth(ctx->line[ctx->pos])); del_char_buf_bck(ctx); - if (x == 0) - wmove(self->window, y - 1, x2 - cur_len); - else + if (x == 0) { + wmove(self->window, y, x2 - cur_len); + ctx->start = ctx->start >= x2 ? ctx->start - x2 : 0; + ctx->pos = ctx->start + x2 - 1; + } else { wmove(self->window, y, x - cur_len); + } } else { beep(); } @@ -446,6 +452,7 @@ static void groupchat_onKey(ToxWindow *self, Tox *m, wint_t key, bool ltr) else if (key == KEY_HOME || key == T_KEY_C_A) { /* HOME/C-a key: Move cursor to start of line */ if (ctx->pos > 0) { ctx->pos = 0; + ctx->start = 0; wmove(self->window, y2 - CURS_Y_OFFSET, 0); } } @@ -453,7 +460,8 @@ static void groupchat_onKey(ToxWindow *self, Tox *m, wint_t key, bool ltr) else if (key == KEY_END || key == T_KEY_C_E) { /* END/C-e key: move cursor to end of line */ if (ctx->pos != ctx->len) { ctx->pos = ctx->len; - mv_curs_end(self->window, MAX(0, wcswidth(ctx->line, (CHATBOX_HEIGHT - 1)*x2)), y2, x2); + ctx->start = x2 * (len / x2); + mv_curs_end(self->window, len, y2, x2); } } @@ -462,10 +470,13 @@ static void groupchat_onKey(ToxWindow *self, Tox *m, wint_t key, bool ltr) --ctx->pos; cur_len = MAX(1, wcwidth(ctx->line[ctx->pos])); - if (x == 0) - wmove(self->window, y - 1, x2 - cur_len); - else + if (x == 0) { + wmove(self->window, y, x2 - cur_len); + ctx->start = ctx->start >= x2 ? ctx->start - x2 : 0; + ctx->pos = ctx->start + x2 - 1; + } else { wmove(self->window, y, x - cur_len); + } } else { beep(); } @@ -473,13 +484,16 @@ static void groupchat_onKey(ToxWindow *self, Tox *m, wint_t key, bool ltr) else if (key == KEY_RIGHT) { if (ctx->pos < ctx->len) { - cur_len = MAX(1, wcwidth(ctx->line[ctx->pos])); ++ctx->pos; - if (x == x2 - 1) - wmove(self->window, y + 1, 0); - else + if (x == x2 - 1) { + wmove(self->window, y, 0); + ctx->start += x2; + ctx->pos = ctx->start; + } else { + cur_len = MAX(1, wcwidth(ctx->line[ctx->pos])); wmove(self->window, y, x + cur_len); + } } else { beep(); } @@ -487,12 +501,16 @@ static void groupchat_onKey(ToxWindow *self, Tox *m, wint_t key, bool ltr) else if (key == KEY_UP) { /* fetches previous item in history */ fetch_hist_item(ctx, MOVE_UP); - mv_curs_end(self->window, ctx->len, y2, x2); + len = wcslen(ctx->line); + ctx->start = x2 * (len / x2); + mv_curs_end(self->window, len, y2, x2); } else if (key == KEY_DOWN) { /* fetches next item in history */ fetch_hist_item(ctx, MOVE_DOWN); - mv_curs_end(self->window, ctx->len, y2, x2); + len = wcslen(ctx->line); + ctx->start = x2 * (len / x2); + mv_curs_end(self->window, len, y2, x2); } else if (key == '\t') { /* TAB key: completes peer name */ @@ -597,7 +615,7 @@ static void groupchat_onDraw(ToxWindow *self, Tox *m) reset_buf(ctx); wmove(self->window, y2 - CURS_Y_OFFSET, 0); } else { - mvwprintw(ctx->linewin, 1, 0, "%s", line); + mvwprintw(ctx->linewin, 1, 0, "%s", &line[ctx->start]); } } diff --git a/src/misc_tools.c b/src/misc_tools.c index 5350ccf..15641b1 100644 --- a/src/misc_tools.c +++ b/src/misc_tools.c @@ -226,9 +226,8 @@ int valid_nick(uint8_t *nick) /* Moves cursor to the end of the line in given window */ void mv_curs_end(WINDOW *w, size_t len, int max_y, int max_x) { - int end_y = (len / max_x) + (max_y - CURS_Y_OFFSET); - int end_x = len % max_x; - wmove(w, end_y, end_x); + int new_x = len < max_x ? len : len % max_x; + wmove(w, max_y - CURS_Y_OFFSET, new_x); } /* gets base file name from path or original file name if no path is supplied */ diff --git a/src/toxic.h b/src/toxic.h index df0a0fa..1a78e64 100644 --- a/src/toxic.h +++ b/src/toxic.h @@ -35,7 +35,7 @@ #define UNKNOWN_NAME "Anonymous" #define MAX_FRIENDS_NUM 500 -#define MAX_STR_SIZE 256 +#define MAX_STR_SIZE 1024 #define MAX_CMDNAME_SIZE 64 #define TOXIC_MAX_NAME_LENGTH 32 /* Must be <= TOX_MAX_NAME_LENGTH */ #define KEY_IDENT_DIGITS 2 /* number of hex digits to display for the pub-key based identifier */ diff --git a/src/toxic_strings.c b/src/toxic_strings.c index 388f9b7..d78af0e 100644 --- a/src/toxic_strings.c +++ b/src/toxic_strings.c @@ -91,6 +91,7 @@ void discard_buf(ChatContext *ctx) ctx->line[c++] = ctx->line[i]; ctx->pos = 0; + ctx->start = 0; ctx->len = c - 1; } @@ -104,12 +105,13 @@ void kill_buf(ChatContext *ctx) ctx->len = ctx->pos; } -/* nulls line and sets pos and len to 0 */ +/* nulls line and sets pos, len and start to 0 */ void reset_buf(ChatContext *ctx) { ctx->line[0] = L'\0'; ctx->pos = 0; ctx->len = 0; + ctx->start = 0; } /* Removes trailing spaces from line. */ diff --git a/src/toxic_strings.h b/src/toxic_strings.h index b792532..8c7e12a 100644 --- a/src/toxic_strings.h +++ b/src/toxic_strings.h @@ -40,7 +40,7 @@ void discard_buf(ChatContext *ctx); /* Deletes the line from pos to len */ void kill_buf(ChatContext *ctx); -/* nulls line and sets pos and len to 0 */ +/* nulls line and sets pos, len and start to 0 */ void reset_buf(ChatContext *ctx); /* Removes trailing spaces from line. */ diff --git a/src/windows.h b/src/windows.h index 3c6f57d..551af40 100644 --- a/src/windows.h +++ b/src/windows.h @@ -36,8 +36,8 @@ #include "toxic.h" #define MAX_WINDOWS_NUM 32 -#define CURS_Y_OFFSET 3 /* y-axis cursor offset for chat contexts */ -#define CHATBOX_HEIGHT 4 +#define CURS_Y_OFFSET 1 /* y-axis cursor offset for chat contexts */ +#define CHATBOX_HEIGHT 2 /* Curses foreground colours (background is black) */ enum { @@ -150,6 +150,7 @@ struct ChatContext { wchar_t line[MAX_STR_SIZE]; size_t pos; size_t len; + size_t start; /* the position to start printing line at */ wchar_t ln_history[MAX_LINE_HIST][MAX_STR_SIZE]; /* history for input lines/commands */ int hst_pos; From bba81ac8847072f24e89ab62690d0cb81c178008 Mon Sep 17 00:00:00 2001 From: Jfreegman Date: Fri, 20 Jun 2014 23:56:59 -0400 Subject: [PATCH 61/63] fix offset issue --- src/chat.c | 3 ++- src/groupchat.c | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/src/chat.c b/src/chat.c index f33dd55..2035ed6 100644 --- a/src/chat.c +++ b/src/chat.c @@ -549,13 +549,14 @@ static void chat_onKey(ToxWindow *self, Tox *m, wint_t key, bool ltr) getmaxyx(self->window, y2, x2); int cur_len = 0; /* widechar len of current char */ int len = MAX(0, wcslen(ctx->line)); /* widechar len of line */ + int x2_is_odd = x2 % 2 != 0; if (ltr) { /* char is printable */ if (ctx->len < MAX_STR_SIZE - 1) { add_char_to_buf(ctx, key); if (x >= x2 - 1) { - wmove(self->window, y, x2 / 2); + wmove(self->window, y, x2 / 2 + x2_is_odd); ctx->start += x2 / 2; } else { wmove(self->window, y, x + MAX(1, wcwidth(key))); diff --git a/src/groupchat.c b/src/groupchat.c index f1f5335..7d12346 100644 --- a/src/groupchat.c +++ b/src/groupchat.c @@ -391,13 +391,14 @@ static void groupchat_onKey(ToxWindow *self, Tox *m, wint_t key, bool ltr) getmaxyx(self->window, y2, x2); int cur_len = 0; /* widechar len of current char */ int len = MAX(0, wcslen(ctx->line)); /* widechar len of line */ + int x2_is_odd = x2 % 2 != 0; if (ltr) { /* char is printable */ if (ctx->len < MAX_STR_SIZE - 1) { add_char_to_buf(ctx, key); if (x >= x2 - 1) { - wmove(self->window, y, x2 / 2); + wmove(self->window, y, x2 / 2 + x2_is_odd); ctx->start += x2 / 2; } else { wmove(self->window, y, x + MAX(1, wcwidth(key))); From 62239a1fda04c06240e7beb8dd6e14cb0b63bc6c Mon Sep 17 00:00:00 2001 From: Jfreegman Date: Sat, 21 Jun 2014 01:26:33 -0400 Subject: [PATCH 62/63] fix backspace bug --- src/chat.c | 25 +++++++++++++------------ src/groupchat.c | 23 ++++++++++++----------- 2 files changed, 25 insertions(+), 23 deletions(-) diff --git a/src/chat.c b/src/chat.c index 2035ed6..6106e96 100644 --- a/src/chat.c +++ b/src/chat.c @@ -547,8 +547,11 @@ static void chat_onKey(ToxWindow *self, Tox *m, wint_t key, bool ltr) int x, y, y2, x2; getyx(self->window, y, x); getmaxyx(self->window, y2, x2); - int cur_len = 0; /* widechar len of current char */ - int len = MAX(0, wcslen(ctx->line)); /* widechar len of line */ + + if (x2 <= 0) + return; + + int cur_len = 0; /* widechar size of current char */ int x2_is_odd = x2 % 2 != 0; if (ltr) { /* char is printable */ @@ -576,9 +579,9 @@ static void chat_onKey(ToxWindow *self, Tox *m, wint_t key, bool ltr) del_char_buf_bck(ctx); if (x == 0) { - wmove(self->window, y, x2 - cur_len); ctx->start = ctx->start >= x2 ? ctx->start - x2 : 0; - ctx->pos = ctx->start + x2 - 1; + int new_x = ctx->start == 0 ? ctx->pos : x2 - cur_len; + wmove(self->window, y, new_x); } else { wmove(self->window, y, x - cur_len); } @@ -621,8 +624,8 @@ static void chat_onKey(ToxWindow *self, Tox *m, wint_t key, bool ltr) else if (key == KEY_END || key == T_KEY_C_E) { /* END/C-e key: move cursor to end of line */ if (ctx->pos != ctx->len) { ctx->pos = ctx->len; - ctx->start = x2 * (len / x2); - mv_curs_end(self->window, len, y2, x2); + ctx->start = x2 * (ctx->len / x2); + mv_curs_end(self->window, ctx->len, y2, x2); } } @@ -662,16 +665,14 @@ static void chat_onKey(ToxWindow *self, Tox *m, wint_t key, bool ltr) else if (key == KEY_UP) { /* fetches previous item in history */ fetch_hist_item(ctx, MOVE_UP); - len = wcslen(ctx->line); - ctx->start = x2 * (len / x2); - mv_curs_end(self->window, len, y2, x2); + ctx->start = x2 * (ctx->len / x2); + mv_curs_end(self->window, ctx->len, y2, x2); } else if (key == KEY_DOWN) { /* fetches next item in history */ fetch_hist_item(ctx, MOVE_DOWN); - len = wcslen(ctx->line); - ctx->start = x2 * (len / x2); - mv_curs_end(self->window, len, y2, x2); + ctx->start = x2 * (ctx->len / x2); + mv_curs_end(self->window, ctx->len, y2, x2); } else if (key == '\t') { /* TAB key: completes command */ diff --git a/src/groupchat.c b/src/groupchat.c index 7d12346..f81fea8 100644 --- a/src/groupchat.c +++ b/src/groupchat.c @@ -389,8 +389,11 @@ static void groupchat_onKey(ToxWindow *self, Tox *m, wint_t key, bool ltr) int x, y, y2, x2; getyx(self->window, y, x); getmaxyx(self->window, y2, x2); + + if (x2 <= 0) + return; + int cur_len = 0; /* widechar len of current char */ - int len = MAX(0, wcslen(ctx->line)); /* widechar len of line */ int x2_is_odd = x2 % 2 != 0; if (ltr) { /* char is printable */ @@ -416,9 +419,9 @@ static void groupchat_onKey(ToxWindow *self, Tox *m, wint_t key, bool ltr) del_char_buf_bck(ctx); if (x == 0) { - wmove(self->window, y, x2 - cur_len); ctx->start = ctx->start >= x2 ? ctx->start - x2 : 0; - ctx->pos = ctx->start + x2 - 1; + int new_x = ctx->start == 0 ? ctx->pos : x2 - cur_len; + wmove(self->window, y, new_x); } else { wmove(self->window, y, x - cur_len); } @@ -461,8 +464,8 @@ static void groupchat_onKey(ToxWindow *self, Tox *m, wint_t key, bool ltr) else if (key == KEY_END || key == T_KEY_C_E) { /* END/C-e key: move cursor to end of line */ if (ctx->pos != ctx->len) { ctx->pos = ctx->len; - ctx->start = x2 * (len / x2); - mv_curs_end(self->window, len, y2, x2); + ctx->start = x2 * (ctx->len / x2); + mv_curs_end(self->window, ctx->len, y2, x2); } } @@ -502,16 +505,14 @@ static void groupchat_onKey(ToxWindow *self, Tox *m, wint_t key, bool ltr) else if (key == KEY_UP) { /* fetches previous item in history */ fetch_hist_item(ctx, MOVE_UP); - len = wcslen(ctx->line); - ctx->start = x2 * (len / x2); - mv_curs_end(self->window, len, y2, x2); + ctx->start = x2 * (ctx->len / x2); + mv_curs_end(self->window, ctx->len, y2, x2); } else if (key == KEY_DOWN) { /* fetches next item in history */ fetch_hist_item(ctx, MOVE_DOWN); - len = wcslen(ctx->line); - ctx->start = x2 * (len / x2); - mv_curs_end(self->window, len, y2, x2); + ctx->start = x2 * (ctx->len / x2); + mv_curs_end(self->window, ctx->len, y2, x2); } else if (key == '\t') { /* TAB key: completes peer name */ From 6b9ef7e6c938ad0c5c06818fdf8e531052560a4c Mon Sep 17 00:00:00 2001 From: Jfreegman Date: Sat, 21 Jun 2014 17:55:01 -0400 Subject: [PATCH 63/63] refactor string funcs --- src/toxic_strings.c | 37 ++++++++++--------------------------- 1 file changed, 10 insertions(+), 27 deletions(-) diff --git a/src/toxic_strings.c b/src/toxic_strings.c index d78af0e..c1a08b6 100644 --- a/src/toxic_strings.c +++ b/src/toxic_strings.c @@ -26,6 +26,7 @@ #include #include +#include #include "toxic.h" #include "windows.h" @@ -38,14 +39,9 @@ void add_char_to_buf(ChatContext *ctx, wint_t ch) if (ctx->pos < 0 || ctx->len >= MAX_STR_SIZE) return; - /* move all chars including null in front of pos one space forward and insert char in pos */ - int i; - - for (i = ctx->len; i >= ctx->pos && i >= 0; --i) - ctx->line[i + 1] = ctx->line[i]; - + wmemmove(&ctx->line[ctx->pos + 1], &ctx->line[ctx->pos], ctx->len - ctx->pos); ctx->line[ctx->pos++] = ch; - ++ctx->len; + ctx->line[++ctx->len] = L'\0'; } /* Deletes the character before pos */ @@ -54,14 +50,9 @@ void del_char_buf_bck(ChatContext *ctx) if (ctx->pos <= 0) return; - int i; - - /* similar to add_char_to_buf but deletes a char */ - for (i = ctx->pos - 1; i <= ctx->len; ++i) - ctx->line[i] = ctx->line[i + 1]; - + wmemmove(&ctx->line[ctx->pos - 1], &ctx->line[ctx->pos], ctx->len - ctx->pos); --ctx->pos; - --ctx->len; + ctx->line[--ctx->len] = L'\0'; } /* Deletes the character at pos */ @@ -70,12 +61,8 @@ void del_char_buf_frnt(ChatContext *ctx) if (ctx->pos < 0 || ctx->pos >= ctx->len) return; - int i; - - for (i = ctx->pos; i < ctx->len; ++i) - ctx->line[i] = ctx->line[i + 1]; - - --ctx->len; + wmemmove(&ctx->line[ctx->pos], &ctx->line[ctx->pos + 1], ctx->len - ctx->pos - 1); + ctx->line[--ctx->len] = L'\0'; } /* Deletes the line from beginning to pos */ @@ -84,15 +71,11 @@ void discard_buf(ChatContext *ctx) if (ctx->pos <= 0) return; - int i; - int c = 0; - - for (i = ctx->pos; i <= ctx->len; ++i) - ctx->line[c++] = ctx->line[i]; - + wmemmove(ctx->line, &ctx->line[ctx->pos], ctx->len - ctx->pos); + ctx->len -= ctx->pos; ctx->pos = 0; ctx->start = 0; - ctx->len = c - 1; + ctx->line[ctx->len] = L'\0'; } /* Deletes the line from pos to len */

  • aRI!O-}xntw6>e**a*f&5pM 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ℑ67vIk{c+21$~WBpj}xKmO17KYRZ7bdvwT|DOi` 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
    OYhO+uS`PRIm%pL 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ℜfj>nthr$XneTu!Ft1F+xR1NHt( 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