Additional error handling.
This commit is contained in:
parent
b376432f04
commit
919ffee4d0
@ -162,12 +162,14 @@ twc_match_friend(struct t_twc_profile *profile, const char *search_string)
|
||||
uint8_t tox_id[TOX_PUBLIC_KEY_SIZE];
|
||||
char hex_id[TOX_PUBLIC_KEY_SIZE * 2 + 1];
|
||||
|
||||
tox_friend_get_public_key(profile->tox, friend_numbers[i], tox_id, NULL); // do error handling
|
||||
if (tox_friend_get_public_key(profile->tox, friend_numbers[i], tox_id, NULL))
|
||||
{
|
||||
twc_bin2hex(tox_id, TOX_PUBLIC_KEY_SIZE, hex_id);
|
||||
|
||||
if (weechat_strcasecmp(hex_id, search_string) == 0)
|
||||
return friend_numbers[i];
|
||||
}
|
||||
}
|
||||
|
||||
char *name = twc_get_name_nt(profile->tox, friend_numbers[i]);
|
||||
if (weechat_strcasecmp(name, search_string) == 0)
|
||||
@ -407,20 +409,39 @@ twc_cmd_friend(void *data, struct t_gui_buffer *buffer,
|
||||
if (weechat_strcasecmp(argv[2], "all") == 0)
|
||||
{
|
||||
size_t index;
|
||||
size_t count = 0;
|
||||
struct t_twc_list_item *item;
|
||||
twc_list_foreach(profile->friend_requests, index, item)
|
||||
{
|
||||
if (accept)
|
||||
twc_friend_request_accept(item->friend_request);
|
||||
{
|
||||
if (twc_friend_request_accept(item->friend_request))
|
||||
{
|
||||
++count;
|
||||
}
|
||||
else
|
||||
{
|
||||
char hex_address[TOX_PUBLIC_KEY_SIZE * 2 + 1];
|
||||
twc_bin2hex(item->friend_request->tox_id,
|
||||
TOX_PUBLIC_KEY_SIZE,
|
||||
hex_address);
|
||||
weechat_printf(profile->buffer,
|
||||
"%sCould not accept friend request from %s",
|
||||
weechat_prefix("error"), hex_address);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
twc_friend_request_remove(item->friend_request);
|
||||
++count;
|
||||
}
|
||||
}
|
||||
|
||||
weechat_printf(profile->buffer,
|
||||
"%s%s %d friend requests.",
|
||||
weechat_prefix("network"),
|
||||
accept ? "Accepted" : "Declined",
|
||||
index);
|
||||
count);
|
||||
|
||||
return WEECHAT_RC_OK;
|
||||
}
|
||||
@ -442,18 +463,30 @@ twc_cmd_friend(void *data, struct t_gui_buffer *buffer,
|
||||
hex_address);
|
||||
|
||||
if (accept)
|
||||
twc_friend_request_accept(request);
|
||||
{
|
||||
if (twc_friend_request_accept(request))
|
||||
{
|
||||
weechat_printf(profile->buffer,
|
||||
"%sCould not accept friend request from %s",
|
||||
weechat_prefix("error"), hex_address);
|
||||
}
|
||||
else
|
||||
{
|
||||
weechat_printf(profile->buffer,
|
||||
"%sAccepted friend request from %s.",
|
||||
weechat_prefix("network"), hex_address);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
twc_friend_request_remove(request);
|
||||
weechat_printf(profile->buffer,
|
||||
"%sDeclined friend request from %s.",
|
||||
weechat_prefix("network"), hex_address);
|
||||
}
|
||||
|
||||
twc_friend_request_free(request);
|
||||
|
||||
weechat_printf(profile->buffer,
|
||||
"%s%s friend request from %s.",
|
||||
weechat_prefix("network"),
|
||||
accept ? "Accepted" : "Declined",
|
||||
hex_address);
|
||||
|
||||
return WEECHAT_RC_OK;
|
||||
}
|
||||
}
|
||||
@ -721,15 +754,29 @@ twc_cmd_name(void *data, struct t_gui_buffer *buffer,
|
||||
TWC_CHECK_PROFILE(profile);
|
||||
TWC_CHECK_PROFILE_LOADED(profile);
|
||||
|
||||
char *name = argv_eol[1];
|
||||
const char *name = argv_eol[1];
|
||||
|
||||
int result = tox_self_set_name(profile->tox, (uint8_t *)name, strlen(name), NULL);
|
||||
if (!result)
|
||||
TOX_ERR_SET_INFO err;
|
||||
tox_self_set_name(profile->tox, (uint8_t *)name, strlen(name), &err);
|
||||
if (err != TOX_ERR_SET_INFO_OK)
|
||||
{
|
||||
char *err_msg;
|
||||
switch (err)
|
||||
{
|
||||
case TOX_ERR_SET_INFO_NULL:
|
||||
err_msg = "no name given";
|
||||
break;
|
||||
case TOX_ERR_SET_INFO_TOO_LONG:
|
||||
err_msg = "name too long";
|
||||
break;
|
||||
default:
|
||||
err_msg = "unknown error";
|
||||
break;
|
||||
}
|
||||
weechat_printf(profile->buffer,
|
||||
"%s%s",
|
||||
"%s%s%s",
|
||||
weechat_prefix("error"),
|
||||
"Could not change name.");
|
||||
"Could not change name: ", err_msg);
|
||||
return WEECHAT_RC_OK;
|
||||
}
|
||||
|
||||
@ -907,15 +954,29 @@ twc_cmd_statusmsg(void *data, struct t_gui_buffer *buffer,
|
||||
|
||||
char *message = argc > 1 ? argv_eol[1] : " ";
|
||||
|
||||
bool result = tox_self_set_status_message(profile->tox,
|
||||
TOX_ERR_SET_INFO err;
|
||||
tox_self_set_status_message(profile->tox,
|
||||
(uint8_t *)message,
|
||||
strlen(message), NULL);
|
||||
if (!result)
|
||||
strlen(message), &err);
|
||||
if (err != TOX_ERR_SET_INFO_OK)
|
||||
{
|
||||
char *err_msg;
|
||||
switch (err)
|
||||
{
|
||||
case TOX_ERR_SET_INFO_NULL:
|
||||
err_msg = "no status given";
|
||||
break;
|
||||
case TOX_ERR_SET_INFO_TOO_LONG:
|
||||
err_msg = "status too long";
|
||||
break;
|
||||
default:
|
||||
err_msg = "unknown error";
|
||||
break;
|
||||
}
|
||||
weechat_printf(profile->buffer,
|
||||
"%s%s",
|
||||
"%s%s%s",
|
||||
weechat_prefix("error"),
|
||||
"Could not set status message.");
|
||||
"Could not set status message: ", err_msg);
|
||||
}
|
||||
|
||||
return WEECHAT_RC_OK;
|
||||
|
@ -68,12 +68,16 @@ twc_completion_friend(void *data,
|
||||
uint8_t tox_id[TOX_PUBLIC_KEY_SIZE];
|
||||
char hex_id[TOX_PUBLIC_KEY_SIZE * 2 + 1];
|
||||
|
||||
tox_friend_get_public_key(profile->tox, friend_numbers[i], tox_id, NULL); // do error handling
|
||||
TOX_ERR_FRIEND_GET_PUBLIC_KEY err;
|
||||
tox_friend_get_public_key(profile->tox, friend_numbers[i], tox_id, &err);
|
||||
if (err == TOX_ERR_FRIEND_GET_PUBLIC_KEY_OK)
|
||||
{
|
||||
twc_bin2hex(tox_id, TOX_PUBLIC_KEY_SIZE, hex_id);
|
||||
|
||||
weechat_hook_completion_list_add(completion, hex_id, 0,
|
||||
WEECHAT_LIST_POS_SORT);
|
||||
}
|
||||
}
|
||||
|
||||
if (flags & TWC_COMPLETE_FRIEND_NAME)
|
||||
{
|
||||
|
@ -64,11 +64,14 @@ twc_friend_request_add(struct t_twc_profile *profile,
|
||||
/**
|
||||
* Accept a friend request. Remove and free the request.
|
||||
*/
|
||||
void
|
||||
bool
|
||||
twc_friend_request_accept(struct t_twc_friend_request *request)
|
||||
{
|
||||
tox_friend_add_norequest(request->profile->tox, request->tox_id, NULL); //do error handling
|
||||
TOX_ERR_FRIEND_ADD err;
|
||||
tox_friend_add_norequest(request->profile->tox, request->tox_id, &err);
|
||||
twc_friend_request_remove(request);
|
||||
|
||||
return err == TOX_ERR_FRIEND_ADD_OK;
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -40,7 +40,7 @@ twc_friend_request_add(struct t_twc_profile *profile,
|
||||
const uint8_t *client_id,
|
||||
const char *message);
|
||||
|
||||
void
|
||||
bool
|
||||
twc_friend_request_accept(struct t_twc_friend_request *request);
|
||||
|
||||
void
|
||||
|
@ -268,7 +268,7 @@ twc_profile_load(struct t_twc_profile *profile)
|
||||
}
|
||||
|
||||
weechat_printf(profile->buffer,
|
||||
"%s profile %s connecting",
|
||||
"%sprofile %s connecting",
|
||||
weechat_prefix("network"), profile->name);
|
||||
|
||||
// create Tox options object
|
||||
|
Loading…
Reference in New Issue
Block a user