messenger-cli

Command-line user interface for GNUnet Messenger
Log | Files | Refs | README | LICENSE

commit b89c6a3ffb7d6a8505403c0291a71a9f2ea1e6aa
parent 2a72f770ecf2f6243fada17c6c31d4dd085eb911
Author: TheJackiMonster <thejackimonster@gmail.com>
Date:   Fri,  9 Sep 2022 16:29:23 +0200

Added prefix syntax to send files

Signed-off-by: TheJackiMonster <thejackimonster@gmail.com>

Diffstat:
Msrc/ui/messages.c | 35+++++++++++++++++++++++++++++++++--
Msrc/ui/messages.h | 3+++
2 files changed, 36 insertions(+), 2 deletions(-)

diff --git a/src/ui/messages.c b/src/ui/messages.c @@ -116,7 +116,32 @@ messages_event(UI_MESSAGES_Handle *messages, _messages_handle_message(messages); else if (messages->text_len > 0) { - GNUNET_CHAT_context_send_text(app->chat.context, messages->text); + if (0 != strncmp(messages->text, + UI_MESSAGES_FILE_PREFIX, + UI_MESSAGES_FILE_PREFIX_LEN)) + goto write_text; + + const char* filename = messages->text + 5; + + if (0 != access(filename, R_OK | F_OK)) + break; + + GNUNET_CHAT_context_send_file( + app->chat.context, + filename, + NULL, + NULL + ); + + goto drop_text; + + write_text: + GNUNET_CHAT_context_send_text( + app->chat.context, + messages->text + ); + + drop_text: messages->text_len = 0; } break; @@ -269,7 +294,13 @@ messages_print(UI_MESSAGES_Handle *messages) wmove(messages->window, line_height, 0); whline(messages->window, '-', width); - const int attrs_select = A_BOLD; + const bool is_file_text = (0 == strncmp( + messages->text, + UI_MESSAGES_FILE_PREFIX, + UI_MESSAGES_FILE_PREFIX_LEN + )); + + const int attrs_select = A_BOLD | (is_file_text? A_ITALIC : A_NORMAL); if (selected) wattron(messages->window, attrs_select); diff --git a/src/ui/messages.h b/src/ui/messages.h @@ -70,6 +70,9 @@ typedef struct UI_MESSAGES_Handle #define UI_MESSAGES_COLS_MIN 50 +#define UI_MESSAGES_FILE_PREFIX "file:" +#define UI_MESSAGES_FILE_PREFIX_LEN 5 + void messages_event(UI_MESSAGES_Handle *messages, struct MESSENGER_Application *app,