Additional error handling.
This commit is contained in:
parent
b376432f04
commit
919ffee4d0
@ -162,11 +162,13 @@ twc_match_friend(struct t_twc_profile *profile, const char *search_string)
|
|||||||
uint8_t tox_id[TOX_PUBLIC_KEY_SIZE];
|
uint8_t tox_id[TOX_PUBLIC_KEY_SIZE];
|
||||||
char hex_id[TOX_PUBLIC_KEY_SIZE * 2 + 1];
|
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);
|
{
|
||||||
|
twc_bin2hex(tox_id, TOX_PUBLIC_KEY_SIZE, hex_id);
|
||||||
|
|
||||||
if (weechat_strcasecmp(hex_id, search_string) == 0)
|
if (weechat_strcasecmp(hex_id, search_string) == 0)
|
||||||
return friend_numbers[i];
|
return friend_numbers[i];
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
char *name = twc_get_name_nt(profile->tox, friend_numbers[i]);
|
char *name = twc_get_name_nt(profile->tox, friend_numbers[i]);
|
||||||
@ -407,20 +409,39 @@ twc_cmd_friend(void *data, struct t_gui_buffer *buffer,
|
|||||||
if (weechat_strcasecmp(argv[2], "all") == 0)
|
if (weechat_strcasecmp(argv[2], "all") == 0)
|
||||||
{
|
{
|
||||||
size_t index;
|
size_t index;
|
||||||
|
size_t count = 0;
|
||||||
struct t_twc_list_item *item;
|
struct t_twc_list_item *item;
|
||||||
twc_list_foreach(profile->friend_requests, index, item)
|
twc_list_foreach(profile->friend_requests, index, item)
|
||||||
{
|
{
|
||||||
if (accept)
|
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
|
else
|
||||||
|
{
|
||||||
twc_friend_request_remove(item->friend_request);
|
twc_friend_request_remove(item->friend_request);
|
||||||
|
++count;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
weechat_printf(profile->buffer,
|
weechat_printf(profile->buffer,
|
||||||
"%s%s %d friend requests.",
|
"%s%s %d friend requests.",
|
||||||
weechat_prefix("network"),
|
weechat_prefix("network"),
|
||||||
accept ? "Accepted" : "Declined",
|
accept ? "Accepted" : "Declined",
|
||||||
index);
|
count);
|
||||||
|
|
||||||
return WEECHAT_RC_OK;
|
return WEECHAT_RC_OK;
|
||||||
}
|
}
|
||||||
@ -442,18 +463,30 @@ twc_cmd_friend(void *data, struct t_gui_buffer *buffer,
|
|||||||
hex_address);
|
hex_address);
|
||||||
|
|
||||||
if (accept)
|
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
|
else
|
||||||
|
{
|
||||||
twc_friend_request_remove(request);
|
twc_friend_request_remove(request);
|
||||||
|
weechat_printf(profile->buffer,
|
||||||
|
"%sDeclined friend request from %s.",
|
||||||
|
weechat_prefix("network"), hex_address);
|
||||||
|
}
|
||||||
|
|
||||||
twc_friend_request_free(request);
|
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;
|
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(profile);
|
||||||
TWC_CHECK_PROFILE_LOADED(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);
|
TOX_ERR_SET_INFO err;
|
||||||
if (!result)
|
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,
|
weechat_printf(profile->buffer,
|
||||||
"%s%s",
|
"%s%s%s",
|
||||||
weechat_prefix("error"),
|
weechat_prefix("error"),
|
||||||
"Could not change name.");
|
"Could not change name: ", err_msg);
|
||||||
return WEECHAT_RC_OK;
|
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] : " ";
|
char *message = argc > 1 ? argv_eol[1] : " ";
|
||||||
|
|
||||||
bool result = tox_self_set_status_message(profile->tox,
|
TOX_ERR_SET_INFO err;
|
||||||
(uint8_t *)message,
|
tox_self_set_status_message(profile->tox,
|
||||||
strlen(message), NULL);
|
(uint8_t *)message,
|
||||||
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,
|
weechat_printf(profile->buffer,
|
||||||
"%s%s",
|
"%s%s%s",
|
||||||
weechat_prefix("error"),
|
weechat_prefix("error"),
|
||||||
"Could not set status message.");
|
"Could not set status message: ", err_msg);
|
||||||
}
|
}
|
||||||
|
|
||||||
return WEECHAT_RC_OK;
|
return WEECHAT_RC_OK;
|
||||||
|
@ -68,11 +68,15 @@ twc_completion_friend(void *data,
|
|||||||
uint8_t tox_id[TOX_PUBLIC_KEY_SIZE];
|
uint8_t tox_id[TOX_PUBLIC_KEY_SIZE];
|
||||||
char hex_id[TOX_PUBLIC_KEY_SIZE * 2 + 1];
|
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;
|
||||||
twc_bin2hex(tox_id, TOX_PUBLIC_KEY_SIZE, hex_id);
|
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_hook_completion_list_add(completion, hex_id, 0,
|
||||||
WEECHAT_LIST_POS_SORT);
|
WEECHAT_LIST_POS_SORT);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (flags & TWC_COMPLETE_FRIEND_NAME)
|
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.
|
* Accept a friend request. Remove and free the request.
|
||||||
*/
|
*/
|
||||||
void
|
bool
|
||||||
twc_friend_request_accept(struct t_twc_friend_request *request)
|
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);
|
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 uint8_t *client_id,
|
||||||
const char *message);
|
const char *message);
|
||||||
|
|
||||||
void
|
bool
|
||||||
twc_friend_request_accept(struct t_twc_friend_request *request);
|
twc_friend_request_accept(struct t_twc_friend_request *request);
|
||||||
|
|
||||||
void
|
void
|
||||||
|
@ -268,7 +268,7 @@ twc_profile_load(struct t_twc_profile *profile)
|
|||||||
}
|
}
|
||||||
|
|
||||||
weechat_printf(profile->buffer,
|
weechat_printf(profile->buffer,
|
||||||
"%s profile %s connecting",
|
"%sprofile %s connecting",
|
||||||
weechat_prefix("network"), profile->name);
|
weechat_prefix("network"), profile->name);
|
||||||
|
|
||||||
// create Tox options object
|
// create Tox options object
|
||||||
|
Loading…
Reference in New Issue
Block a user